🌜
🌞
substance

substance

v2.0.0-preview.32.1

Substance is a JavaScript library for web-based content editing. It provides building blocks for realizing custom text editors and web-based publishing system. It is developed to power our online editing platform [Substance](http://substance.io).

npm install substance

README

Substance.js 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 system. It is developed to power our online editing platform Substance.

Development

Install the dev dependencies.

npm install

Run the dev server.

npm start

Navigate to http://localhost:4001/test for the running the browser test suite. The test suite is rebuilt as you make changes to the source files.

To run the test-suite headless.

$ npm test

Release Notes

1.0.0
By Oliver Buchtala • Published on July 16, 2019

Finally.

1.0.0-beta.6
By Michael Aufreiter • Published on February 12, 2017
  • Advanced drag & drop gestures for adding and moving content
  • Spell checking support
  • Tables
  • Lists
  • Introduced generalized concept for overlays
  • New imperative editing API
  • Overhauled IsolatedNode implementation
  • Improved ES6 module bundling
  • Stabilized Beta 5 features
1.0.0-beta.5
By Michael Aufreiter • Published on October 6, 2016
  • Substance is now written in ES6
  • More usage options: Use Substance via <script> tag or use a module bundler of your choice (Rollup, Browserify, Webpack, ...)
  • Pure CSS instead of SASS for easier integration
  • Extracted develoment environment into substance-bundler tool.
  • Extracted test environment into substance-test
  • Extracted API docs generator into substance-docgen
  • Improved Tool API: Simplified command and tool APIs.
  • Commands are now stateless and can be parametrized in the configurator
  • Added tool targets: Determines where a tool gets rendered (e.g. in the toolbar or in an overlay)
  • Gutter support for ScrollPane: Render tools in a gutter, vertically aligned with the current selection
  • Removed experimental list and table packages: They will come back to core as soon as they are completed
  • Stabilized Beta 4 features
  • CSS Bundling via PostCSS
  • Precompiled CSS files with CSS variables resolved for older browsers
1.0.0-beta.4
By Michael Aufreiter • Published on September 29, 2016
  • Added support for realtime collaboration
  • Added persistence interfaces to store versions and snaphots on the server
  • Added a package system to provide a simple plugin mechanism
  • Introduced the concept of an IsolatedNode enabling arbitrary complex editors and external components (such code editors)
  • Optimized rendering engine
  • Enabled server side rendering
  • Added support for text macros
  • Added IconProvider to generalize icon usage and make them configurable in packages
  • Added LabelProvider for configurable multi language support
  • Improved ProseEditor that can be extended through packages
  • Improved Component API, with first-class debugging support
  • Generalized commands and tools
  • Added first version of tables and lists
  • Improved XML/HTML import/export API
  • Ported test suite from QUnit over to tape
  • Fixed hundreds of issues and bugs
  • Improved cross-browser compatibility
  • Added many examples documenting core features
  • Removed jQuery dependency
1.0.0-beta.3
By Michael Aufreiter • Published on February 23, 2016
  • Added a Router implementation that can serialize component states to hash fragments
  • Added ui/ScrollPane Component used to wrap any content and make it scrollable within a container (1ae97f9)
  • Added ui/TOC as an interface for custom Table of Contents implementations (1ae97f9)
  • Added util/server for easier development (7e12ae7)
  • Added TabbedPane component (105e80d)
  • Added SplitPane component (105e80d)
  • Fixed a bug where Firefox ignored input events (e3d6173)
  • Fixed an issue in ui/Component where owner and parent were confused (085a695)
  • Fixed numerous issues related to mapping DOM selections to model selections
  • Fixed a bug where nodes that have no addressable text property could not be rendered
  • Fixed an edge case where triple clicking inside a paragraph with inline nodes did not led to an undesired selection
  • Fixed an issue where focusedSurface is set too late on the controller
  • Fixed an issue where an image wrapped in a selection was not deleted
  • Fixed an bug where selection was mapped incorrectly at the end of the paragraph (76eab1f)
  • Fixed several converter issues related to XML parsing and serializing (#391)
  • Improved API documentation
  • Fixed an issue where typing over an inline node did not remove it
  • Added ui/Highlights class for distributed management of highlights
  • Removed ui/ContentPanel in favor of an improved ScrollPane implementation
  • Improved Clipboard: Copy and pasting between browsers now works seamlessly
  • ScrollPane is now aware of TOC instances (when provided)
1.0.0-beta.2
By Michael Aufreiter • Published on December 2, 2015
  • Simplified Node API: Props are now stored on the node directly
  • New source directory and file layout optimized for deep-requiring individual classes
  • New DOMElement API for interacting with DOM elements
  • Improved Converter API: Now independent from the Article class
  • Overhauled API for Tools: Logic now lives in Command implementations that are independent from the UI
  • Editors are now Components implementing the Surface API
  • CSS overhaul: improved modularity, prefixing to avoid collisions
  • New predefined node types: Embed, Superscript, Subscript, Code.
  • Removed FormEditor interface in favour of more fine-grained control using new TextPropertyEditor component
  • API docs provided via new Substance DocumentationReader
1.0.0-beta
By Michael Aufreiter • Published on August 25, 2015

Substance 1.0 Beta release.

General

License
MIT
Typescript Types
None found
Tree-shakeable
No

Popularity

GitHub Stargazers
2,741
Community Interest
2,956
Number of Forks
138

Maintenance

Commits
11/2110/2201
Last Commit
Nov 2, 2020
Open Issues
40
Closed Issues
668
Open Pull Requests
0
Closed Pull Requests
73

Versions

Versions Released
11/2110/2201
Latest Version Released
Sep 23, 2020
Current Tags
latest2.0.0-preview.32.1
next0.157.0
preview2.0.0-preview.40
1.0-preview1.0.0-preview.2
experimental1.1.0-preview.1
beta-7-preview1.0.0-beta.7-preview.19
beta.7-preview1.0.0-beta.7-preview.16
container-annos1.0.0-container-annos.2

Contributors

oliver----
oliver----
Commits: 2,979
michael
michael
Commits: 1,155
Integral
Integral
Commits: 332
nokome
nokome
Commits: 14
schatten
schatten
Commits: 13
podviaznikov
podviaznikov
Commits: 7
joe-loco
joe-loco
Commits: 6
tobiassodergren
tobiassodergren
Commits: 3
jure
jure
Commits: 2
dotvoid
dotvoid
Commits: 2
asmecher
asmecher
Commits: 1
radarhere
radarhere
Commits: 1
rquast
rquast
Commits: 1
kilburn
kilburn
Commits: 1