substance
Version:
Substance is a JavaScript library for web-based content editing. It provides building blocks for realizing custom text editors and web-based publishing systems.
85 lines (68 loc) • 4.61 kB
Markdown
# Substance [](https://travis-ci.org/substance/substance)
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](http://substance.io) and the [documentation](http://substance.io/docs).
## Features
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 | ✓
## Development
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
```