Skip to content

Commit

Permalink
Merge pull request #705 from substance/devel
Browse files Browse the repository at this point in the history
Beta 4
  • Loading branch information
oliver7654 committed Jun 15, 2016
2 parents 5a612e0 + eb139d9 commit d5ec5e1
Show file tree
Hide file tree
Showing 541 changed files with 16,520 additions and 29,927 deletions.
127 changes: 127 additions & 0 deletions .eslintrc.js
@@ -0,0 +1,127 @@
module.exports = {
"env": {
"browser": true,
"commonjs": true,
"node": true
},
"extends": "eslint:recommended",
"globals": {
"QUnit": true
},
"rules": {
// 0 - off, 1 - warning, 2 - error
"indent": ["error", 2, { "SwitchCase": 1 }],
"semi": [2, "always"],
"comma-dangle": [2, "only-multiline"],
"no-cond-assign": 2,
"no-console": [2, { allow: ["warn", "info", "error", "assert"] }],
"no-constant-condition": 2,
"no-control-regex": 2,
"no-debugger": 2,
"no-dupe-args": 2,
"no-dupe-keys": 2,
"no-duplicate-case": 2,
"no-empty": 1,
"no-empty-character-class": 2,
"no-ex-assign": 2,
"no-extra-boolean-cast": 2,
"no-extra-parens": 0,
"no-extra-semi": 2,
"no-func-assign": 2,
"no-inner-declarations": 2,
"no-invalid-regexp": 2,
"no-irregular-whitespace": 2,
"no-negated-in-lhs": 2,
"no-obj-calls": 2,
// turned of as we want to be able to use this.hasOwnProperty() for instance
"no-prototype-builtins": 0,
"no-regex-spaces": 2,
"no-sparse-arrays": 0,
"no-unexpected-multiline": 2,
"no-unreachable": 2,
"no-unsafe-finally": 2,
"use-isnan": 2,
"valid-jsdoc": 0,
"valid-typeof": 2,
"strict": [2, "safe"],

// Best practices
"accessor-pairs": 0,
"array-callback-return": 2,
"block-scoped-var": 2,
"complexity": [0, 10],
"consistent-return": 0,
"curly": [2, "multi-line"],
"default-case": 2,
"dot-location": [2, 'property'],
"dot-notation": 0,
"eqeqeq": 2,
"guard-for-in": 2,
"no-alert": 2,
"no-caller": 2,
"no-case-declarations": 2,
"no-div-regex": 2,
"no-else-return": 0,
"no-empty-function": 0,
// if you want to check for undefined or null use lodash/isNil
"no-eq-null": 2,
"no-eval": 2,
"no-extend-native": 2,
"no-extra-bind": 2,
"no-extra-label": 2,
"no-fallthrough": 2,
"no-floating-decimal": 2,
"no-implicit-coercion": 2,
"no-implicit-globals": 2,
"no-implied-eval": 2,
"no-invalid-this": 2,
"no-iterator": 2,
"no-labels": 2,
"no-lone-blocks": 0,
"no-loop-func": 2,
"no-magic-numbers": 0,
"no-multi-spaces": 2,
"no-multi-str": 0,
"no-native-reassign": 2,
"no-new": 0,
"no-new-func": 0,
"no-new-wrappers": 2,
"no-octal": 2,
"no-octal-escape": 2,
"no-param-reassign": 0,
"no-proto": 2,
"no-redeclare": 2,
"no-return-assign": 2,
"no-script-url": 2,
"no-self-assign": 2,
"no-self-compare": 2,
"no-sequences": 2,
"no-throw-literal": 2,
"no-unmodified-loop-condition": 2,
"no-unused-expressions": 2,
"no-unused-labels": 2,
"no-useless-call": 2,
"no-useless-concat": 2,
"no-useless-escape": 2,
"no-void": 2,
"no-warning-comments": 0,
"no-with": 2,
"radix": 2,
"vars-on-top": 0,
"wrap-iife": 2,
"yoda": 0,
// variables
"init-declarations": 0,
"no-catch-shadow": 2,
"no-delete-var": 2,
"no-label-var": 2,
"no-restricted-globals": 2,
"no-shadow": 0,
"no-shadow-restricted-names": 2,
"no-undef": 2,
"no-undef-init": 2,
"no-undefined": 0,
"no-unused-vars": 2,
"no-use-before-define": [2, { "functions": false }]
}
};
14 changes: 0 additions & 14 deletions .jshintrc

This file was deleted.

12 changes: 10 additions & 2 deletions .travis.yml
@@ -1,12 +1,20 @@
language: node_js
cache:
directories:
- node_modules
addons:
firefox: "45.0"
node_js:
- "4"
- "0.12"
- "0.11"
- "6"
before_script:
- 'export CHROME_BIN=chromium-browser'
- 'export DISPLAY=:99.0'
- 'sh -e /etc/init.d/xvfb start'
- 'npm install'
webhooks:
urls:
- https://webhooks.gitter.im/e/2186a68c76bf266e2876
on_success: change # options: [always|never|change] default: always
on_failure: always # options: [always|never|change] default: always
on_start: never # options: [always|never|change] default: always
22 changes: 22 additions & 0 deletions CHANGELOG.md
@@ -1,3 +1,25 @@
## Beta 4

- 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

## Beta 3

- Added a Router implementation that can serialize component states to hash fragments
Expand Down
41 changes: 15 additions & 26 deletions README.md
@@ -1,11 +1,9 @@
# Substance [![Build Status](https://travis-ci.org/substance/substance.svg?branch=master)](https://travis-ci.org/substance/substance)
# Substance [![Build Status](https://travis-ci.org/substance/substance.svg?branch=devel)](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.

Read the [introduction post](https://medium.com/@_mql/build-your-own-editor-with-substance-7790eb600109), check the [project website](http://substance.io), the [examples](https://github.com/substance/examples) and the [API documentation](http://substance.io/docs).

*Substance Beta 4 introduces support for realtime collaboration. While still under development, you can already check out and run our full-stack collaborative [Notepad](https://github.com/substance/notepad) application.*

## Features

Features | State
Expand All @@ -19,12 +17,13 @@ Incremental document updates (undoable operations) |
Transformations for document manipulation | ✓
Custom editing toolbars | ✓
Commands for controlling the editor | ✓
I18N support | ✓
Realtime collaboration | Beta 4
Persistence API for documents | Beta 4
Multi-language support | ✓
Realtime collaboration | ✓
Persistence API for documents | ✓
Text Macros | ✓
Key bindings | Beta 5
Full Unicode support | Beta 5
Plugins | Beta 5
Packages (aka Plugins) | ✓
|
**UI Components** |
TextPropertyEditor for editing annotated text | ✓
Expand All @@ -40,9 +39,8 @@ Heading |
Blockquote | ✓
Codeblock | ✓
Image | ✓
Embed (image, video, tweet etc.) | ✓
List | Beta 4
Table | Beta 4
List | ✓
Table | ✓
|
**Predefined annotation types** |
Strong | ✓
Expand All @@ -51,7 +49,6 @@ Link |
Subscript | ✓
Superscript | ✓
Code | ✓
Comment | Beta 4
|
**Platform support** |
Mozilla Firefox (>=42) | ✓
Expand Down Expand Up @@ -91,25 +88,17 @@ $ npm run doc

## Roadmap

### Beta 4

*ETA: May 2016*

- Realtime collaboration
- Persistence API for documents
- Table node
- Editing of lists
- Improved stability, documentation and tests
- Full-stack platform example

### Beta 5

*ETA: July 2016*

- Key bindings
- Plugins
- Improved Unicode support
- Mobile support
- Automatically generated performance report
- Modules for server-side integration
- Improved Unicode support
- Advanced list support
- Advanced table support

*ETA: Fall 2016*

### 1.0 Final

Expand Down
8 changes: 4 additions & 4 deletions collab/ChangeStore.js
@@ -1,7 +1,7 @@
'use strict';

var oo = require('../util/oo');
var Err = require('../util/Error');
var Err = require('../util/SubstanceError');

/*
Implements Substance ChangeStore API. This is just a dumb store.
Expand All @@ -16,8 +16,8 @@ ChangeStore.Prototype = function() {
/*
Gets changes for a given document
@param {String} args.documentId document id
@param {Number} args.sinceVersion since which change
@param {String} args.documentId document id
@param {Number} args.sinceVersion since which change
*/
this.getChanges = function(args, cb) {
var changes = this._getChanges(args.documentId);
Expand All @@ -44,7 +44,7 @@ ChangeStore.Prototype = function() {
message: 'Illegal version arguments "sinceVersion":' +args.sinceVersion+ ', toVersion":' +args.toVersion
}));
}

var version = this._getVersion(args.documentId);

var res;
Expand Down
4 changes: 2 additions & 2 deletions collab/ClientConnection.js
@@ -1,7 +1,7 @@
"use strict";

var EventEmitter = require('../util/EventEmitter');
var Err = require('../util/Error');
var Err = require('../util/SubstanceError');
var __id__ = 0;

/**
Expand Down Expand Up @@ -59,7 +59,7 @@ ClientConnection.Prototype = function() {
this._onConnectionClose = function() {
this._disconnect();
this.emit('close');
console.log('websocket connection closed. Attempting to reconnect in 5s.');
console.info('websocket connection closed. Attempting to reconnect in 5s.');
setTimeout(function() {
this._connect();
}.bind(this), 5000);
Expand Down
6 changes: 3 additions & 3 deletions collab/CollabClient.js
Expand Up @@ -14,7 +14,7 @@ function CollabClient(config) {
this.__id__ = __id__++;
this.config = config;
this.connection = config.connection;

// Hard-coded for now
this.scope = 'substance/collab';

Expand Down Expand Up @@ -46,7 +46,7 @@ CollabClient.Prototype = function() {
if (msg.scope === this.scope) {
this.emit('message', msg);
} else {
// console.info('Message ignored. Not sent in hub scope', msg);
console.info('Message ignored. Not sent in hub scope', msg);
}
};

Expand All @@ -55,7 +55,7 @@ CollabClient.Prototype = function() {
*/
this.send = function(msg) {
if (!this.connection.isOpen()) {
console.error('Message could not be sent. Connection not open.', msg);
console.warn('Message could not be sent. Connection not open.', msg);
return;
}

Expand Down

0 comments on commit d5ec5e1

Please sign in to comment.