Rooster
roosterjs is a framework-independent javascript rich text editor.
README
Rooster
Rooster is a framework-independent JavaScript rich-text editor neatly nested
inside one HTML `` element. Editing operations performed by end users are
handled in simple ways to generate the final HTML.
Rooster is working on top of a middle layer data structure called "Content Model".
All format API and editing operation are using this Content Model layer as content format,
and finally convert to HTML and show it in editor.
To view the demo site, please click the link below:
Upgrade from RoosterJs 8.\*
Please see here.
Features
Packages
Rooster contains 6 basic packages.
1. roosterjs:
A facade of all Rooster code for those who want a quick start. Use the
createEditor() function in roosterjs to create an editor with default
configurations.
Defines the core editor and plugin infrastructure. Use roosterjs-content-model-core
instead of roosterjs to build and customize your own editor.
Defines APIs for editor operations. Use these APIs to modify content and
formatting in the editor you built using roosterjs-content-model-core.
Defines APIs for Content Model and DOM operations. This package do conversion between DOM tree and roosterjs Content Model.
Defines basic plugins for common features.
Defines public interfaces and enumerations, including Content Model types, API parameters and other types.
There are also some extension packages to provide additional functionalities.
Provide color transformation utility to make editor work under dark mode.
To be compatible with old (8.\) versions, you can use EditorAdapter class from the following package which can act as a 8.\ Editor:
Provide a adapter class EditorAdapter to work with Editor (9.\*) and legacy plugins (via EditorAdapterOptions.legacyPlugins)
All old packages (8.\*) are moved to branch roosterjsv8, including
1. roosterjs-editor-core
2. roosterjs-editor-api
3. roosterjs-editor-dom
4. roosterjs-editor-plugins
5. roosterjs-editor-types
6. roosterjs-editor-types-compatible
7. roosterjs-react
We will not update these branches any more unless there are new security bugs.
APIs
Rooster provides Content Model level APIs (in roosterjs-content-model-dom), core APIs (in roosterjs-content-model-core), and formatting APIs
(in roosterjs-content-modelapi) to perform editing operations.
roosterjs-content-model-dom provides several levels of Content Model operations:
- Create Content Model elements
- Convert DOM tree to Content Model
- Convert Content Model to DOM tree
- Format handlers
- A few DOM level API
roosterjs-content-model-core provides APIs for editor core. Editor class will call such
APIs to perform basic editor operations. These APIs can be overridden by specifying
API overrides in Editor options when creating the editor.
roosterjs-content-model-api provides APIs for scenario-based operations triggered by
user interaction.