mirror of
https://github.com/codex-team/editor.js
synced 2024-06-29 02:40:23 +02:00
Module abstract (#226)
* Abstract Module class Now all modules inherits from `Module` class. You don’t need more to write ```js constructor({ config }) { this.Editor = null; this.config = config; } ``` and ```js /** * @param Editor * @param Editor.modules {@link CodexEditor#moduleInstances} * @param Editor.config {@link CodexEditor#configuration} */ set state(Editor) { this.Editor = Editor; } ``` ## Default exports improved Now you don’t need more to write `.default` on module requiring ```js let module = require(‘module’).default; ``` * Update docs
This commit is contained in:
parent
8d2b92abfc
commit
2df18b00b0
|
@ -73,6 +73,7 @@
|
||||||
"XMLHttpRequest": true,
|
"XMLHttpRequest": true,
|
||||||
"ActiveXObject": true,
|
"ActiveXObject": true,
|
||||||
"RegExp": true,
|
"RegExp": true,
|
||||||
|
"Module": true,
|
||||||
"Node": true,
|
"Node": true,
|
||||||
"Proxy": true,
|
"Proxy": true,
|
||||||
"$": true,
|
"$": true,
|
||||||
|
|
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -11,6 +11,4 @@ node_modules/*
|
||||||
|
|
||||||
plugins/personality/
|
plugins/personality/
|
||||||
|
|
||||||
npm-debug.log
|
npm-debug.log
|
||||||
|
|
||||||
build/__tmp_babel_helpers.js
|
|
|
@ -15,7 +15,8 @@
|
||||||
"codex",
|
"codex",
|
||||||
"_",
|
"_",
|
||||||
"$",
|
"$",
|
||||||
"editorModules"
|
"editorModules",
|
||||||
|
"Module"
|
||||||
],
|
],
|
||||||
|
|
||||||
// Allow ES6.
|
// Allow ES6.
|
||||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because one or more lines are too long
|
@ -11,8 +11,8 @@
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"babel-core": "^6.26.0",
|
"babel-core": "^6.26.0",
|
||||||
"babel-loader": "^7.1.2",
|
"babel-loader": "^7.1.2",
|
||||||
|
"babel-plugin-add-module-exports": "^0.2.1",
|
||||||
"babel-plugin-class-display-name": "^2.1.0",
|
"babel-plugin-class-display-name": "^2.1.0",
|
||||||
"babel-plugin-transform-helper": "0.0.6",
|
|
||||||
"babel-polyfill": "^6.26.0",
|
"babel-polyfill": "^6.26.0",
|
||||||
"babel-preset-es2015": "^6.24.1",
|
"babel-preset-es2015": "^6.24.1",
|
||||||
"babel-runtime": "^6.26.0",
|
"babel-runtime": "^6.26.0",
|
||||||
|
|
43
src/components/__module.js
Normal file
43
src/components/__module.js
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
/**
|
||||||
|
* @abstract
|
||||||
|
* @class Module
|
||||||
|
* @classdesc All modules inherites from this class.
|
||||||
|
*
|
||||||
|
* @typedef {Module} Module
|
||||||
|
* @property {Object} config - Editor user settings
|
||||||
|
* @property {Object} Editor - List of Editor modules
|
||||||
|
*/
|
||||||
|
export default class Module {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @constructor
|
||||||
|
*
|
||||||
|
* @param {EditorConfig} config
|
||||||
|
*/
|
||||||
|
constructor(config) {
|
||||||
|
|
||||||
|
if (new.target === Module) {
|
||||||
|
|
||||||
|
throw new TypeError('Constructors for abstract class Module are not allowed.');
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
this.config = config;
|
||||||
|
this.Editor = null;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Editor modules setter
|
||||||
|
*
|
||||||
|
* @param Editor
|
||||||
|
* @param Editor.modules {@link CodexEditor#moduleInstances}
|
||||||
|
* @param Editor.config {@link CodexEditor#configuration}
|
||||||
|
*/
|
||||||
|
set state(Editor) {
|
||||||
|
|
||||||
|
this.Editor = Editor;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -4,7 +4,7 @@
|
||||||
* @author Codex Team
|
* @author Codex Team
|
||||||
* @version 2.0.0
|
* @version 2.0.0
|
||||||
*/
|
*/
|
||||||
module.exports = class Core {
|
export default class Core {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Module key name
|
* Module key name
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/**
|
/**
|
||||||
* DOM manupulations helper
|
* DOM manupulations helper
|
||||||
*/
|
*/
|
||||||
module.exports = class Dom {
|
export default class Dom {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Helper for making Elements with classname and attributes
|
* Helper for making Elements with classname and attributes
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
* @version 1.0.
|
* @version 1.0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
module.exports = (function (draw) {
|
export default (function (draw) {
|
||||||
|
|
||||||
draw.ceBlock = function () {
|
draw.ceBlock = function () {
|
||||||
|
|
||||||
|
|
|
@ -6,29 +6,20 @@
|
||||||
* - {Function} emit - fires all subscribers with data
|
* - {Function} emit - fires all subscribers with data
|
||||||
*
|
*
|
||||||
* @version 1.0.0
|
* @version 1.0.0
|
||||||
|
*
|
||||||
|
* @typedef {Events} Events
|
||||||
|
* @property {Object} subscribers - all subscribers grouped by event name
|
||||||
*/
|
*/
|
||||||
class Events {
|
export default class Events extends Module {
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Editor
|
|
||||||
* @param Editor.modules {@link CodexEditor#moduleInstances}
|
|
||||||
* @param Editor.config {@link CodexEditor#configuration}
|
|
||||||
*/
|
|
||||||
set state(Editor) {
|
|
||||||
|
|
||||||
this.Editor = Editor;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @constructor
|
* @constructor
|
||||||
*
|
|
||||||
* @property {Object} subscribers - all subscribers grouped by event name
|
|
||||||
*/
|
*/
|
||||||
constructor() {
|
constructor() {
|
||||||
|
|
||||||
|
super();
|
||||||
|
|
||||||
this.subscribers = {};
|
this.subscribers = {};
|
||||||
this.Editor = null;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,6 +66,4 @@ class Events {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = Events;
|
|
|
@ -36,6 +36,7 @@
|
||||||
* @class
|
* @class
|
||||||
* @classdesc Toolbar module
|
* @classdesc Toolbar module
|
||||||
*
|
*
|
||||||
|
* @typedef {Toolbar} Toolbar
|
||||||
* @property {Object} nodes
|
* @property {Object} nodes
|
||||||
* @property {Element} nodes.wrapper - Toolbar main element
|
* @property {Element} nodes.wrapper - Toolbar main element
|
||||||
* @property {Element} nodes.content - Zone with Plus button and toolbox.
|
* @property {Element} nodes.content - Zone with Plus button and toolbox.
|
||||||
|
@ -48,14 +49,14 @@
|
||||||
* @property {Element} nodes.pluginSettings - Plugin Settings section of Settings Panel
|
* @property {Element} nodes.pluginSettings - Plugin Settings section of Settings Panel
|
||||||
* @property {Element} nodes.defaultSettings - Default Settings section of Settings Panel
|
* @property {Element} nodes.defaultSettings - Default Settings section of Settings Panel
|
||||||
*/
|
*/
|
||||||
class Toolbar {
|
export default class Toolbar extends Module {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @constructor
|
* @constructor
|
||||||
*/
|
*/
|
||||||
constructor() {
|
constructor(config) {
|
||||||
|
|
||||||
this.Editor = null;
|
super(config);
|
||||||
|
|
||||||
this.nodes = {
|
this.nodes = {
|
||||||
wrapper : null,
|
wrapper : null,
|
||||||
|
@ -97,16 +98,6 @@ class Toolbar {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Editor modules setter
|
|
||||||
* @param {object} Editor - available editor modules
|
|
||||||
*/
|
|
||||||
set state(Editor) {
|
|
||||||
|
|
||||||
this.Editor = Editor;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Makes toolbar
|
* Makes toolbar
|
||||||
*/
|
*/
|
||||||
|
@ -191,6 +182,4 @@ class Toolbar {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = Toolbar;
|
|
|
@ -27,6 +27,7 @@
|
||||||
/**
|
/**
|
||||||
* Class properties:
|
* Class properties:
|
||||||
*
|
*
|
||||||
|
* @typedef {Tool} Tool
|
||||||
* @property {String} name - name of this module
|
* @property {String} name - name of this module
|
||||||
* @property {Object[]} toolInstances - list of tool instances
|
* @property {Object[]} toolInstances - list of tool instances
|
||||||
* @property {Tools[]} available - available Tools
|
* @property {Tools[]} available - available Tools
|
||||||
|
@ -35,7 +36,7 @@
|
||||||
* @property {EditorConfig} config - Editor config
|
* @property {EditorConfig} config - Editor config
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class Tools {
|
export default class Tools extends Module {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns available Tools
|
* Returns available Tools
|
||||||
|
@ -57,17 +58,6 @@ class Tools {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Editor
|
|
||||||
* @param Editor.modules {@link CodexEditor#moduleInstances}
|
|
||||||
* @param Editor.config {@link CodexEditor#configuration}
|
|
||||||
*/
|
|
||||||
set state(Editor) {
|
|
||||||
|
|
||||||
this.Editor = Editor;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If config wasn't passed by user
|
* If config wasn't passed by user
|
||||||
* @return {ToolsConfig}
|
* @return {ToolsConfig}
|
||||||
|
@ -89,7 +79,7 @@ class Tools {
|
||||||
*/
|
*/
|
||||||
constructor({ config }) {
|
constructor({ config }) {
|
||||||
|
|
||||||
this.config = config;
|
super(config);
|
||||||
|
|
||||||
this.toolClasses = {};
|
this.toolClasses = {};
|
||||||
this.toolsAvailable = {};
|
this.toolsAvailable = {};
|
||||||
|
@ -221,6 +211,4 @@ class Tools {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = Tools;
|
|
|
@ -46,6 +46,7 @@ let CSS = {
|
||||||
* <ce-inline-toolbar />
|
* <ce-inline-toolbar />
|
||||||
* </codex-editor>
|
* </codex-editor>
|
||||||
*
|
*
|
||||||
|
* @typedef {UI} UI
|
||||||
* @property {EditorConfig} config - editor configuration {@link CodexEditor#configuration}
|
* @property {EditorConfig} config - editor configuration {@link CodexEditor#configuration}
|
||||||
* @property {Object} Editor - available editor modules {@link CodexEditor#moduleInstances}
|
* @property {Object} Editor - available editor modules {@link CodexEditor#moduleInstances}
|
||||||
* @property {Object} nodes -
|
* @property {Object} nodes -
|
||||||
|
@ -53,7 +54,8 @@ let CSS = {
|
||||||
* @property {Element} nodes.wrapper - <codex-editor>
|
* @property {Element} nodes.wrapper - <codex-editor>
|
||||||
* @property {Element} nodes.redactor - <ce-redactor>
|
* @property {Element} nodes.redactor - <ce-redactor>
|
||||||
*/
|
*/
|
||||||
class UI {
|
|
||||||
|
export default class UI extends Module {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @constructor
|
* @constructor
|
||||||
|
@ -62,8 +64,7 @@ class UI {
|
||||||
*/
|
*/
|
||||||
constructor({ config }) {
|
constructor({ config }) {
|
||||||
|
|
||||||
this.config = config;
|
super(config);
|
||||||
this.Editor = null;
|
|
||||||
|
|
||||||
this.nodes = {
|
this.nodes = {
|
||||||
holder: null,
|
holder: null,
|
||||||
|
@ -73,17 +74,6 @@ class UI {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Editor modules setter
|
|
||||||
* @param {object} Editor - available editor modules
|
|
||||||
*/
|
|
||||||
set state(Editor) {
|
|
||||||
|
|
||||||
this.Editor = Editor;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @protected
|
* @protected
|
||||||
*
|
*
|
||||||
|
@ -177,9 +167,6 @@ class UI {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = UI;
|
|
||||||
|
|
||||||
|
|
||||||
// /**
|
// /**
|
||||||
// * Codex Editor UI module
|
// * Codex Editor UI module
|
||||||
// *
|
// *
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/**
|
/**
|
||||||
* Codex Editor Util
|
* Codex Editor Util
|
||||||
*/
|
*/
|
||||||
module.exports = class Util {
|
export default class Util {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef {Object} ChainData
|
* @typedef {Object} ChainData
|
||||||
|
|
|
@ -21,8 +21,10 @@ const VERSION = process.env.VERSION || pkg.version;
|
||||||
* @type {webpack}
|
* @type {webpack}
|
||||||
*/
|
*/
|
||||||
var webpack = require('webpack');
|
var webpack = require('webpack');
|
||||||
var ExtractTextPlugin = require('extract-text-webpack-plugin');
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* File system
|
||||||
|
*/
|
||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -85,15 +87,6 @@ module.exports = {
|
||||||
editorModules: JSON.stringify(editorModules)
|
editorModules: JSON.stringify(editorModules)
|
||||||
}),
|
}),
|
||||||
|
|
||||||
/**
|
|
||||||
* Automatically load global visible modules
|
|
||||||
* instead of having to import/require them everywhere.
|
|
||||||
*/
|
|
||||||
new webpack.ProvidePlugin({
|
|
||||||
'_': 'utils',
|
|
||||||
'$': 'dom'
|
|
||||||
}),
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Setting up a dynamic requires that we use to autoload Editor Modules from 'components/modules' dir
|
* Setting up a dynamic requires that we use to autoload Editor Modules from 'components/modules' dir
|
||||||
* {@link https://webpack.js.org/plugins/context-replacement-plugin/}
|
* {@link https://webpack.js.org/plugins/context-replacement-plugin/}
|
||||||
|
@ -108,6 +101,16 @@ module.exports = {
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Automatically load global visible modules
|
||||||
|
* instead of having to import/require them everywhere.
|
||||||
|
*/
|
||||||
|
new webpack.ProvidePlugin({
|
||||||
|
'_': 'utils',
|
||||||
|
'$': 'dom',
|
||||||
|
'Module': './../__module',
|
||||||
|
}),
|
||||||
|
|
||||||
|
|
||||||
/** Минифицируем CSS и JS */
|
/** Минифицируем CSS и JS */
|
||||||
// new webpack.optimize.UglifyJsPlugin({
|
// new webpack.optimize.UglifyJsPlugin({
|
||||||
|
@ -132,15 +135,21 @@ module.exports = {
|
||||||
options: {
|
options: {
|
||||||
presets: [ __dirname + '/node_modules/babel-preset-es2015' ],
|
presets: [ __dirname + '/node_modules/babel-preset-es2015' ],
|
||||||
plugins: [
|
plugins: [
|
||||||
|
/**
|
||||||
|
* Dont need to use «.default» after «export default Class Ui {}»
|
||||||
|
* @see {@link https://github.com/59naga/babel-plugin-add-module-exports}
|
||||||
|
*/
|
||||||
|
'add-module-exports',
|
||||||
/**
|
/**
|
||||||
* Babel transforms some awesome ES6 features to ES5 with extra code, such as Class, JSX.
|
* Babel transforms some awesome ES6 features to ES5 with extra code, such as Class, JSX.
|
||||||
* This plugin makes all generated extra codes to one module which significantly reduces the bundle code size.
|
* This plugin makes all generated extra codes to one module which significantly reduces the bundle code size.
|
||||||
*
|
*
|
||||||
* {@link https://github.com/brianZeng/babel-plugin-transform-helper}
|
* {@link https://github.com/brianZeng/babel-plugin-transform-helper}
|
||||||
|
* @since 11 dec 2017 - removed due to plugin does not supports class inheritance
|
||||||
*/
|
*/
|
||||||
['babel-plugin-transform-helper', {
|
// ['babel-plugin-transform-helper', {
|
||||||
helperFilename:'build/__tmp_babel_helpers.js'
|
// helperFilename:'build/__tmp_babel_helpers.js'
|
||||||
}],
|
// }],
|
||||||
'class-display-name',
|
'class-display-name',
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -164,16 +173,6 @@ module.exports = {
|
||||||
},
|
},
|
||||||
'postcss-loader'
|
'postcss-loader'
|
||||||
]
|
]
|
||||||
// use: ExtractTextPlugin.extract([
|
|
||||||
// {
|
|
||||||
// loader: 'css-loader',
|
|
||||||
// options: {
|
|
||||||
// // minimize: 1,
|
|
||||||
// importLoaders: 1
|
|
||||||
// }
|
|
||||||
// },
|
|
||||||
// 'postcss-loader'
|
|
||||||
// ])
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue