Merge branch 'rewriting-version2.0' into module-tools-v2

# Conflicts:
#	src/codex.js
#	src/components/modules/tools.js
This commit is contained in:
Murod Khaydarov 2017-11-25 14:32:55 +03:00
commit cd55c7360d
29 changed files with 10184 additions and 455 deletions

View file

@ -17,15 +17,16 @@
* ...
*/
'use strict';
/**
* All Editor components
* Require Editor modules places in components/modules dir
*/
const modules = [
require('./src/modules/dom'),
require('./src/modules/core'),
require('./src/modules/ui'),
require('./src/modules/tools')
];
let modules = editorModules.map( module => {
return require('./components/modules/' + module );
});
/**
* @class
@ -52,8 +53,6 @@ module.exports = class CodexEditor {
*/
constructor(config) {
'use strict';
/**
* Configuration object
*/
@ -139,9 +138,17 @@ module.exports = class CodexEditor {
modules.forEach( Module => {
this.moduleInstances[Module.name] = new Module({
config : this.configuration
});
try {
this.moduleInstances[Module.name] = new Module({
config : this.configuration
});
} catch ( e ) {
console.log('Module %o skipped because %o', Module, e);
}
});
@ -200,7 +207,6 @@ module.exports = class CodexEditor {
let prepareDecorator = module => module.prepare();
return Promise.resolve()
.then(prepareDecorator(this.moduleInstances['core']))
.then(prepareDecorator(this.moduleInstances['ui']))
.then(prepareDecorator(this.moduleInstances['tools']))
.catch(function (error) {

View file

@ -1,5 +1,5 @@
class Events {
module.exports = class Events {
constructor() {
@ -32,4 +32,4 @@ class Events {
}
}
};

View file

@ -24,7 +24,9 @@
module.exports = class Tools {
static get name() {
return 'tools';
}
/**
@ -33,7 +35,9 @@ module.exports = class Tools {
* @param Editor.config {@link CodexEditor#configuration}
*/
set state(Editor) {
this.Editor = Editor;
}
/**
@ -41,11 +45,13 @@ module.exports = class Tools {
* @return {ToolsConfig}
*/
get defaultConfig() {
return {
iconClassName : 'default-icon',
displayInToolbox : false,
enableLineBreaks : false
}
};
}
/**
@ -54,10 +60,12 @@ module.exports = class Tools {
* @param {ToolsConfig} config
*/
constructor(config) {
this.config = config;
this.availabPlugins = {};
this.toolInstances = [];
}
/**
@ -69,7 +77,9 @@ module.exports = class Tools {
let toolConfig = this.defaultConfig;
if (!this.config.hasOwnProperty('tools')) {
return false;
}
/**
@ -80,32 +90,41 @@ module.exports = class Tools {
*/
function waitNextToolPreparation(toolBindedPreparationFunction) {
return new Promise(function(resolve, reject) {
return new Promise(function (resolve, reject) {
toolBindedPreparationFunction()
.then(resolve)
.catch(function(error) {
.catch(function (error) {
console.log('Plugin is not available because of ', error);
// anyway, go ahead even plugin is not available
resolve();
});
});
}
return new Promise(function(resolvePreparation, rejectPreparation) {
return new Promise(function (resolvePreparation, rejectPreparation) {
let toolPreparationList = [];
for(let tool of this.config.tools) {
let toolName = tool.name;
if (toolName in this.config.toolsConfig) {
toolConfig = this.config.toolsConfig[toolName];
}
if (tool.prepare && typeof tool.prepare === 'function') {
toolPreparationList.push(tool.prepare.bind(toolConfig));
}
}
@ -117,14 +136,16 @@ module.exports = class Tools {
} else {
toolPreparationList.reduce(function(previousToolPrepared, currentToolReadyToPreparation, iteration) {
toolPreparationList.reduce(function (previousToolPrepared, currentToolReadyToPreparation, iteration) {
return previousToolPrepared
.then(() => waitNextToolPreparation(currentToolReadyToPreparation))
.then(() => {
if (iteration == toolPreparationList.length - 1) {
resolvePreparation();
}
});
@ -159,7 +180,9 @@ module.exports = class Tools {
* @return {Array}
*/
getTools() {
return this.toolInstances;
}
};

View file

@ -1,4 +1,4 @@
/**
/**
* Module UI
*
* @type {UI}
@ -36,6 +36,20 @@ let CSS_ = {
editorZone : 'ce-redactor'
};
/**
* @class
*
* @classdesc Makes CodeX Editor UI:
* <codex-editor>
* <ce-redactor />
* <ce-toolbar />
* <ce-inline-toolbar />
* </codex-editor>
*
* @property {EditorConfig} config - editor configuration {@link CodexEditor#configuration}
* @property {Object} Editor - available editor modules {@link CodexEditor#moduleInstances}
*/
module.exports = class UI {
/**
@ -46,26 +60,24 @@ module.exports = class UI {
return 'ui';
};
constructor(Editor) {
this.wrapper = null;
// this.Editor = Editor;
//
// this.modules = this.Editor.modules;
}
/**
* @constructor
*
* @param {EditorConfig} config
*/
constructor( config ) {
this.config = config;
this.Editor = null;
}
/**
* @param Editor
* @param Editor.modules {@link Tools#list}
* @param Editor.config {@link CodexEditor#configuration}
* @param Editor
* Editor modules setter
* @param {object} Editor - available editor modules
*/
set state(Editor) {
@ -80,12 +92,8 @@ module.exports = class UI {
*/
prepare() {
console.log('ui prepare fired');
this.wrapper = document.createElement('div');
return;
return new Promise(function (resolve, reject) {