/substance

A JavaScript library for web-based content editing.

Primary LanguageJavaScriptMIT LicenseMIT

Substance Build Status

Substance is a JavaScript library for web-based content editing. It provides building blocks for realizing custom text editors and web-based publishing systems.

Read the introduction post, check the project website, the examples and the API documentation.

Features

Features State
Custom document schemas
Custom converters (XML, HTML, etc.)
Custom HTML Rendering
Annotations that can span over multiple nodes
Annotations can hold information (e.g. a comment)
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 Beta 5
Full Unicode support Beta 5
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 (>=42) | ✓ Apple Safari (>=9) | ✓ Google Chrome (>=47) | ✓ Microsoft Edge | ✓ Mobile Safari (iOS) | Beta 5 Mobile Chrome (Android) | Beta 5

Development

Install the dev dependencies.

npm install

Run the dev server.

npm start

Navigate to http://localhost:4201/docs for the docs and http://localhost:4201/test for the test suite.

To run the test-suite headless

$ npm test

To bundle the docs into a distribution:

$ npm run doc

Roadmap

Beta 5

ETA: July 2016

  • Key bindings
  • Mobile support
  • Improved Unicode support
  • Advanced list support
  • Advanced table support

ETA: Fall 2016

1.0 Final

  • Complete documentation
  • Full test coverage (Current Coverage Status: Current Coverage Status)
  • Final versions of API's