#######################
Editor module structure
#######################
This document explains the structure of the editor module and overview of classes.
Introduction
============
This module implements the builtin editors of editable elements or documents, and this does **not**
implement the interface with DOM API and visual feedback of the editing UI. In other words, this
module implements DOM tree editors.
Directories
===========
composer
--------
Previously, this directory contained "Composer" UI related code. However, currently, this
directory contains ``nsEditingSession`` and ``ComposerCommandsUpdater``.
libeditor
---------
This is the main directory which contains "core" implementation of editors.
spellchecker
------------
Despite of the directory name, implementation of the spellchecker is **not** here. This directory
contains only a bridge between editor classes and the spellchecker and serialized text of editable
content for spellchecking.
txmgr
-----
This directory contains transaction items and transaction classes. They were designed for generic
use cases, e.g., managing undo/redo of bookmarks/history of browser, etc, but they are used only by
the editor.
Main classes
============
EditorBase
----------
``EditorBase`` class is an abstract class of editors. This inherits ``nsIEditor`` XPCOM interface,
implement common features which work with instance of classes, and exposed by
``mozilla/EditorBase.h``.
TextEditor
----------
``TextEditor`` class is the implementation of plaintext editor which works with ```` and
``