Substance is a JavaScript library for web-based content editing. It provides building blocks for realizing custom text editors and web-based publishing systems.
Check the project website and the documentation.
Features | State |
---|---|
Custom document schemas | ✓ |
Custom converters (XML, HTML, etc.) | ✓ |
Custom HTML Rendering | ✓ |
Drag & Drop Support | ✓ |
Annotations can hold information (e.g. a comment) | ✓ |
Annotations that can span over multiple nodes | Beta 7 |
Isolated Nodes (any content with any custom UI) | ✓ |
Incremental document updates (undoable operations) | ✓ |
Transformations for document manipulation | ✓ |
Custom editing toolbars | ✓ |
Commands for controlling the editor | ✓ |
Multi-language support | ✓ |
Realtime collaboration | ✓ |
Persistence API for documents | ✓ |
Text Macros | ✓ |
Key bindings | ✓ |
Packages (aka Plugins) | ✓ |
UI Components | |
TextPropertyEditor for editing annotated text | ✓ |
ContainerEditor for in-flow-editing | ✓ |
Scrollable ContentPanel with support for highlights | ✓ |
Customizable Toolbar | ✓ |
ScrollPane with interactive visual Scrollbar | ✓ |
Interactive TOCPanel | ✓ |
Predefined content types | |
Paragraph | ✓ |
Heading | ✓ |
Blockquote | ✓ |
Codeblock | ✓ |
Image | ✓ |
List | ✓ |
Table | ✓ |
Predefined annotation types | |
Strong | ✓ |
Emphasis | ✓ |
Link | ✓ |
Subscript | ✓ |
Superscript | ✓ |
Code | ✓ |
Platform support | |
Mozilla Firefox (>=49) | ✓ |
Apple Safari (>=10) | ✓ |
Google Chrome (>=53) | ✓ |
Microsoft Edge | ✓ |
Install the dev dependencies.
npm install
Run the dev server.
npm start
Navigate to http://localhost:5550/docs
for the docs and http://localhost:5550/test
for the test suite. Test suite and docs are rebuilt as you make changes to the source files.
If you only work on the documentation, this recompiles faster.
npm run docs
To run the test-suite headless.
$ npm test