# 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
`