diff --git a/.postcssrc b/.postcssrc index 2f177c6f..3780c0bc 100644 --- a/.postcssrc +++ b/.postcssrc @@ -8,7 +8,7 @@ plugins: postcss-nested-ancestors: {} postcss-nesting: {} postcss-nested: {} - postcss-color-function: {} + postcss-color-mod-function: {} postcss-color-hex-alpha: {} postcss-font-variant: {} postcss-font-family-system-ui: {} diff --git a/build/codex-editor.js b/build/codex-editor.js index 52384be1..dfed686c 100644 --- a/build/codex-editor.js +++ b/build/codex-editor.js @@ -94,7 +94,7 @@ var CodexEditor = /*! no static exports found */ /***/ (function(module, exports) { -module.exports = "\n" +module.exports = "\n" /***/ }), @@ -951,7 +951,16 @@ var DeleteTune = function () { * @type {{wrapper: string}} */ this.CSS = { - wrapper: 'ass' + wrapper: 'ass', + button: 'ce-settings__button', + buttonDelete: 'ce-settings__button--delete', + buttonConfirm: 'ce-settings__button--confirm' + }; + /** + * Tune nodes + */ + this.nodes = { + button: null }; this.api = api; this.resetConfirmation = function () { @@ -969,11 +978,12 @@ var DeleteTune = function () { value: function render() { var _this2 = this; - var deleteButton = $.make('div', ['ce-settings-delete'], {}); - deleteButton.addEventListener('click', function (event) { + this.nodes.button = $.make('div', [this.CSS.button, this.CSS.buttonDelete], {}); + this.nodes.button.appendChild($.svg('cross', 12, 12)); + this.nodes.button.addEventListener('click', function (event) { return _this2.handleClick(event); }, false); - return deleteButton; + return this.nodes.button; } /** * Delete block conditions passed @@ -1011,6 +1021,7 @@ var DeleteTune = function () { key: 'setConfirmation', value: function setConfirmation(state) { this.needConfirmation = state; + this.nodes.button.classList.add(this.CSS.buttonConfirm); } }]); @@ -1058,7 +1069,8 @@ var MoveUpTune = function () { * @type {{wrapper: string}} */ this.CSS = { - wrapper: 'ass' + wrapper: 'ass', + button: 'ce-settings__button' }; this.api = api; } @@ -1073,7 +1085,8 @@ var MoveUpTune = function () { value: function render() { var _this = this; - var moveUpButton = $.make('div', ['ce-settings-move-up'], {}); + var moveUpButton = $.make('div', this.CSS.button, {}); + moveUpButton.appendChild($.svg('arrow-up', 14, 14)); moveUpButton.addEventListener('click', function (event) { return _this.handleClick(event); }, false); @@ -2946,6 +2959,8 @@ var BlockManager = function (_Module) { * @param {String} toolName — plugin name * @param {Object} data — plugin data * @param {Object} settings - default settings + * + * @return {Block} */ }, { @@ -2958,6 +2973,8 @@ var BlockManager = function (_Module) { this._blocks[++this.currentBlockIndex] = block; this.Editor.Caret.setToBlock(block); + + return block; } /** @@ -3023,7 +3040,13 @@ var BlockManager = function (_Module) { text: $.isEmpty(wrapper) ? '' : wrapper.innerHTML }; - this.insert(this.config.initialBlock, data); + /** + * Renew current Block + * @type {Block} + */ + var blockInserted = this.insert(this.config.initialBlock, data); + + this.currentNode = blockInserted.pluginsContent; } /** @@ -4026,6 +4049,19 @@ var Keyboard = function (_Module) { * Split the Current Block into two blocks */ this.Editor.BlockManager.split(); + + /** + * Renew local current node after split + */ + var newCurrent = this.Editor.BlockManager.currentBlock; + + this.Editor.Toolbar.move(); + this.Editor.Toolbar.open(); + + if (this.Editor.Tools.isInitial(newCurrent.tool) && newCurrent.isEmpty) { + this.Editor.Toolbar.plusButton.show(); + } + event.preventDefault(); } @@ -5832,6 +5868,7 @@ var Toolbar = function (_Module) { * - Toolbox */ this.nodes.plusButton = $.make('div', Toolbar.CSS.plusButton); + $.append(this.nodes.plusButton, $.svg('plus', 14, 14)); $.append(this.nodes.content, this.nodes.plusButton); this.nodes.plusButton.addEventListener('click', function (event) { return _this2.plusButtonClicked(event); @@ -5850,7 +5887,9 @@ var Toolbar = function (_Module) { */ this.nodes.blockActionsButtons = $.make('div', Toolbar.CSS.blockActionsButtons); this.nodes.settingsToggler = $.make('span', Toolbar.CSS.settingsToggler); + var settingsIcon = $.svg('dots', 18, 4); + $.append(this.nodes.settingsToggler, settingsIcon); $.append(this.nodes.blockActionsButtons, this.nodes.settingsToggler); $.append(this.nodes.actions, this.nodes.blockActionsButtons); @@ -6352,36 +6391,6 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" */ -// let className = { - -/** - * @const {string} BLOCK_CLASSNAME - redactor blocks name - */ -// BLOCK_CLASSNAME : 'ce-block', - -/** - * @const {String} wrapper for plugins content - */ -// BLOCK_CONTENT : 'ce-block__content', - -/** - * @const {String} BLOCK_STRETCHED - makes block stretched - */ -// BLOCK_STRETCHED : 'ce-block--stretched', - -/** - * @const {String} BLOCK_HIGHLIGHTED - adds background - */ -// BLOCK_HIGHLIGHTED : 'ce-block--focused', - -/** - * @const {String} - for all default settings - */ -// SETTINGS_ITEM : 'ce-settings__item' -// }; - -// import Block from '../block'; - /** * @class * @@ -7512,7 +7521,7 @@ exports = module.exports = __webpack_require__(/*! ../../node_modules/css-loader // module -exports.push([module.i, ":root {\n /**\n * Toolbar buttons\n */\n --bg-light: #eff2f5;\n\n /**\n * All gray texts: placeholders, settings\n */\n --grayText: #707684;\n\n /** Blue icons */\n --color-active-icon: #388AE5;\n\n /**\n * Block content width\n */\n --content-width: 650px;\n\n /**\n * Toolbar Plus Button and Toolbox buttons height and width\n */\n --toolbar-buttons-size: 34px\n}\n/**\n* Editor wrapper\n*/\n.codex-editor {\n position: relative;\n border: 1px solid #ccc;\n padding: 2px;\n box-sizing: border-box;\n\n\n}\n.codex-editor .hide {\n display: none;\n }\n.codex-editor__redactor {\n padding-bottom: 300px;\n }\n.codex-editor svg {\n fill: currentColor;\n vertical-align: middle;\n max-height: 100%;\n }\n::-moz-selection{\n background-color: rgba(61,166,239,0.63);\n}\n::selection{\n background-color: rgba(61,166,239,0.63);\n}\n.ce-tune-moveup{}\n.ce-settings-delete:hover {\n cursor: pointer;\n }\n.ce-settings-delete::before {\n content: 'delete'\n }\n.ce-toolbar {\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n /*opacity: 0;*/\n /*visibility: hidden;*/\n transition: opacity 100ms ease;\n will-change: opacity, transform;\n display: none;\n}\n.ce-toolbar--opened {\n display: block;\n /*opacity: 1;*/\n /*visibility: visible;*/\n }\n.ce-toolbar__content {\n max-width: 650px;\n max-width: var(--content-width);\n margin: 0 auto;\n position: relative;\n }\n.ce-toolbar__plus {\n position: absolute;\n left: calc(34px - 10px);\n left: calc(var(--toolbar-buttons-size) - 10px);\n display: inline-block;\n background-color: #eff2f5;\n background-color: var(--bg-light);\n width: 34px;\n width: var(--toolbar-buttons-size);\n height: 34px;\n height: var(--toolbar-buttons-size);\n line-height: 34px;\n text-align: center;\n border-radius: 50%\n }\n.ce-toolbar__plus::after {\n content: '+';\n font-size: 26px;\n display: block;\n margin-top: -2px;\n margin-right: -2px;\n }\n.ce-toolbar__plus--hidden {\n display: none;\n }\n/**\n * Block actions Zone\n * -------------------------\n */\n.ce-toolbar__actions {\n position: absolute;\n right: 0;\n top: 0;\n border: 1px dotted #ccc;\n padding: 2px;\n }\n.ce-toolbar__actions-buttons {\n border: 1px dotted #ccc;\n padding: 2px;\n text-align: right;\n margin-bottom: 2px;\n }\n.ce-toolbar__settings-btn {\n display: inline-block;\n width: 24px;\n height: 24px;\n border: 1px dotted #ccc\n }\n.ce-toolbar__settings-btn::before {\n content: 'STN';\n font-size: 10px;\n opacity: .4;\n }\n.ce-toolbox {\n position: absolute;\n visibility: hidden;\n transition: opacity 100ms ease;\n will-change: opacity;\n}\n.ce-toolbox--opened {\n opacity: 1;\n visibility: visible;\n }\n.ce-toolbox__button {\n display: inline-block;\n list-style: none;\n margin: 0;\n background: #eff2f5;\n background: var(--bg-light);\n width: 34px;\n width: var(--toolbar-buttons-size);\n height: 34px;\n height: var(--toolbar-buttons-size);\n border-radius: 30px;\n overflow: hidden;\n text-align: center;\n line-height: 34px;\n line-height: var(--toolbar-buttons-size)\n }\n.ce-toolbox__button::before {\n content: attr(title);\n font-size: 22px;\n font-weight: 500;\n letter-spacing: 1em;\n -webkit-font-feature-settings: \"smcp\", \"c2sc\";\n font-feature-settings: \"smcp\", \"c2sc\";\n font-variant-caps: all-small-caps;\n padding-left: 11.5px;\n margin-top: -1px;\n display: inline-block;\n }\n.ce-inline-toolbar {\n position: absolute;\n background: #FFFFFF;\n box-shadow: 0 8px 23px -6px rgba(21,40,54,0.31), 22px -14px 34px -18px rgba(33,48,73,0.26);\n border-radius: 4px;\n z-index: 2\n}\n.ce-inline-toolbar::before {\n content: '';\n width: 15px;\n height: 15px;\n position: absolute;\n top: -7px;\n left: 50%;\n margin-left: -7px;\n transform: rotate(-45deg);\n background: #fff;\n z-index: -1;\n }\n.ce-inline-toolbar {\n padding: 6px;\n transform: translateX(-50%);\n display: none;\n}\n.ce-inline-toolbar--showed {\n display: block;\n }\n.ce-inline-tool {\n display: inline-block;\n width: 34px;\n height: 34px;\n border-radius: 3px;\n cursor: pointer;\n border: 0;\n outline: none;\n background: transparent;\n vertical-align: bottom;\n color: #707684;\n color: var(--grayText)\n}\n.ce-inline-tool:hover {\n background: #eff2f5;\n background: var(--bg-light);\n }\n.ce-inline-tool--active {\n color: #388AE5;\n color: var(--color-active-icon);\n }\n.ce-inline-tool--link .icon {\n margin-top: -2px;\n }\n.ce-inline-tool--link .icon--unlink {\n display: none;\n }\n.ce-inline-tool--unlink .icon--link {\n display: none;\n }\n.ce-inline-tool--unlink .icon--unlink {\n display: inline-block;\n }\n.ce-inline-tool-input {\n background: #eff2f5;\n background: var(--bg-light);\n outline: none;\n border: 0;\n border-radius: 3px;\n margin: 6px 0 0;\n font-size: 13px;\n padding: 8px;\n width: 100%;\n box-sizing: border-box;\n display: none\n }\n.ce-inline-tool-input::-webkit-input-placeholder {\n color: #707684;\n color: var(--grayText);\n }\n.ce-inline-tool-input:-ms-input-placeholder {\n color: #707684;\n color: var(--grayText);\n }\n.ce-inline-tool-input::placeholder {\n color: #707684;\n color: var(--grayText);\n }\n.ce-inline-tool-input--showed {\n display: block;\n }\n.ce-settings {\n border: 1px dotted #ccc;\n padding: 2px;\n display: none;\n}\n.ce-settings--opened {\n display: block;\n }\n.ce-settings__plugin-zone {\n border: 1px dotted #ccc;\n padding: 2px;\n margin-bottom: 2px\n }\n.ce-settings__plugin-zone::before {\n content: 'PLUGIN SETTINGS';\n opacity: .4;\n font-size: 12px;\n }\n.ce-settings__default-zone {\n border: 1px dotted #ccc;\n padding: 2px\n }\n.ce-settings__default-zone::before {\n /*content: 'DEFAULT SETTINGS';*/\n opacity: .4;\n font-size: 12px;\n }\n.ce-settings__button {\n padding: 10px 15px;\n color: #707684;\n color: var(--grayText)\n }\n.ce-settings__button:hover {\n background: #eff2f5;\n background: var(--bg-light);\n }\n.ce-settings-move-up:hover {\n cursor: pointer;\n }\n.ce-settings-move-up::before {\n display: inline-block;\n content: 'up';\n }\n.ce-block {\n border: 1px dotted #ccc;\n margin: 2px 0\n}\n.ce-block:first-of-type {\n margin-top: 0;\n }\n.ce-block--selected {\n background-color: #eff2f5;\n background-color: var(--bg-light);\n }\n.ce-block__content {\n max-width: 650px;\n max-width: var(--content-width);\n margin: 0 auto;\n }\n", ""]); +exports.push([module.i, ":root {\n /**\n * Toolbar buttons\n */\n --bg-light: #eff2f5;\n\n /**\n * All gray texts: placeholders, settings\n */\n --grayText: #707684;\n\n /** Blue icons */\n --color-active-icon: #388AE5;\n\n /**\n * Block content width\n */\n --content-width: 650px;\n\n /**\n * Toolbar Plus Button and Toolbox buttons height and width\n */\n --toolbar-buttons-size: 34px;\n\n /**\n * Confirm deletion bg\n */\n --color-confirm: #E24A4A;\n}\n/**\n* Editor wrapper\n*/\n.codex-editor {\n position: relative;\n box-sizing: border-box;\n\n\n}\n.codex-editor .hide {\n display: none;\n }\n.codex-editor__redactor {\n padding-bottom: 300px;\n }\n.codex-editor svg {\n fill: currentColor;\n vertical-align: middle;\n max-height: 100%;\n }\n::-moz-selection{\n background-color: rgba(61,166,239,0.63);\n}\n::selection{\n background-color: rgba(61,166,239,0.63);\n}\n.ce-tune-moveup{}\n.ce-settings-delete:hover {\n cursor: pointer;\n }\n.ce-settings-delete::before {\n content: 'delete'\n }\n.ce-toolbar {\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n /*opacity: 0;*/\n /*visibility: hidden;*/\n transition: opacity 100ms ease;\n will-change: opacity, transform;\n display: none;\n}\n.ce-toolbar--opened {\n display: block;\n /*opacity: 1;*/\n /*visibility: visible;*/\n }\n.ce-toolbar__content {\n max-width: 650px;\n max-width: var(--content-width);\n margin: 0 auto;\n position: relative;\n }\n.ce-toolbar__plus {\n position: absolute;\n left: calc(calc(34px + 10px) * -1);\n left: calc(calc(var(--toolbar-buttons-size) + 10px) * -1);\n display: inline-block;\n background-color: #eff2f5;\n background-color: var(--bg-light);\n width: 34px;\n width: var(--toolbar-buttons-size);\n height: 34px;\n height: var(--toolbar-buttons-size);\n line-height: 34px;\n text-align: center;\n border-radius: 50%;\n cursor: pointer;\n }\n.ce-toolbar__plus--hidden {\n display: none;\n }\n/**\n * Block actions Zone\n * -------------------------\n */\n.ce-toolbar__actions {\n position: absolute;\n right: 0;\n top: 0;\n padding-right: 16px;\n }\n.ce-toolbar__actions-buttons {\n text-align: right;\n }\n.ce-toolbar__settings-btn {\n display: inline-block;\n width: 24px;\n height: 24px;\n color: #707684;\n color: var(--grayText);\n cursor: pointer;\n }\n.ce-toolbox {\n position: absolute;\n visibility: hidden;\n transition: opacity 100ms ease;\n will-change: opacity;\n}\n.ce-toolbox--opened {\n opacity: 1;\n visibility: visible;\n }\n.ce-toolbox__button {\n display: inline-block;\n list-style: none;\n margin: 0;\n background: #eff2f5;\n background: var(--bg-light);\n width: 34px;\n width: var(--toolbar-buttons-size);\n height: 34px;\n height: var(--toolbar-buttons-size);\n border-radius: 30px;\n overflow: hidden;\n text-align: center;\n line-height: 34px;\n line-height: var(--toolbar-buttons-size)\n }\n.ce-toolbox__button::before {\n content: attr(title);\n font-size: 22px;\n font-weight: 500;\n letter-spacing: 1em;\n -webkit-font-feature-settings: \"smcp\", \"c2sc\";\n font-feature-settings: \"smcp\", \"c2sc\";\n font-variant-caps: all-small-caps;\n padding-left: 11.5px;\n margin-top: -1px;\n display: inline-block;\n }\n.ce-inline-toolbar {\n position: absolute;\n background: #FFFFFF;\n box-shadow: 0 8px 23px -6px rgba(21,40,54,0.31), 22px -14px 34px -18px rgba(33,48,73,0.26);\n border-radius: 4px;\n z-index: 2\n}\n.ce-inline-toolbar::before {\n content: '';\n width: 15px;\n height: 15px;\n position: absolute;\n top: -7px;\n left: 50%;\n margin-left: -7px;\n transform: rotate(-45deg);\n background: #fff;\n z-index: -1;\n }\n.ce-inline-toolbar {\n padding: 6px;\n transform: translateX(-50%);\n display: none;\n box-shadow: 0 6px 12px -6px rgba(131, 147, 173, 0.46),\n 5px -12px 34px -13px rgba(97, 105, 134, 0.6),\n 0 26px 52px 3px rgba(147, 165, 186, 0.24);\n}\n.ce-inline-toolbar--showed {\n display: block;\n }\n.ce-inline-tool {\n display: inline-block;\n width: 34px;\n height: 34px;\n line-height: 34px;\n text-align: center;\n border-radius: 3px;\n cursor: pointer;\n border: 0;\n outline: none;\n background: transparent;\n vertical-align: bottom;\n color: #707684;\n color: var(--grayText)\n}\n.ce-inline-tool:not(:last-of-type){\n margin-right: 5px;\n }\n.ce-inline-tool:hover {\n background: #eff2f5;\n background: var(--bg-light);\n }\n.ce-inline-tool {\n line-height: normal;\n}\n.ce-inline-tool--active {\n color: #388AE5;\n color: var(--color-active-icon);\n }\n.ce-inline-tool--link .icon {\n margin-top: -2px;\n }\n.ce-inline-tool--link .icon--unlink {\n display: none;\n }\n.ce-inline-tool--unlink .icon--link {\n display: none;\n }\n.ce-inline-tool--unlink .icon--unlink {\n display: inline-block;\n }\n.ce-inline-tool-input {\n background: #eff2f5;\n background: var(--bg-light);\n outline: none;\n border: 0;\n border-radius: 3px;\n margin: 6px 0 0;\n font-size: 13px;\n padding: 8px;\n width: 100%;\n box-sizing: border-box;\n display: none\n }\n.ce-inline-tool-input::-webkit-input-placeholder {\n color: #707684;\n color: var(--grayText);\n }\n.ce-inline-tool-input:-ms-input-placeholder {\n color: #707684;\n color: var(--grayText);\n }\n.ce-inline-tool-input::placeholder {\n color: #707684;\n color: var(--grayText);\n }\n.ce-inline-tool-input--showed {\n display: block;\n }\n.ce-settings {\n position: absolute;\n background: #FFFFFF;\n box-shadow: 0 8px 23px -6px rgba(21,40,54,0.31), 22px -14px 34px -18px rgba(33,48,73,0.26);\n border-radius: 4px;\n z-index: 2\n}\n.ce-settings::before {\n content: '';\n width: 15px;\n height: 15px;\n position: absolute;\n top: -7px;\n left: 50%;\n margin-left: -7px;\n transform: rotate(-45deg);\n background: #fff;\n z-index: -1;\n }\n.ce-settings {\n right: 5px;\n top: 35px;\n min-width: 124px\n}\n.ce-settings::before{\n left: auto;\n right: 12px;\n }\n.ce-settings {\n\n display: none;\n}\n.ce-settings--opened {\n display: block;\n }\n.ce-settings__plugin-zone:not(:empty){\n padding: 6px;\n }\n.ce-settings__default-zone:not(:empty){\n padding: 6px;\n }\n.ce-settings__button {\n display: inline-block;\n width: 34px;\n height: 34px;\n line-height: 34px;\n text-align: center;\n border-radius: 3px;\n cursor: pointer;\n border: 0;\n outline: none;\n background: transparent;\n vertical-align: bottom;\n color: #707684;\n color: var(--grayText)\n }\n.ce-settings__button:not(:last-of-type){\n margin-right: 5px;\n }\n.ce-settings__button:hover {\n background: #eff2f5;\n background: var(--bg-light);\n }\n.ce-settings__button--active {\n color: #388AE5;\n color: var(--color-active-icon);\n }\n.ce-settings__button--delete {\n transition: background-color 300ms ease;\n will-change: background-color;\n }\n.ce-settings__button--delete .icon {\n transition: transform 200ms ease-out;\n will-change: transform;\n }\n.ce-settings__button--confirm {\n background-color: #E24A4A;\n background-color: var(--color-confirm);\n color: #fff\n }\n.ce-settings__button--confirm:hover {\n background-color: rgb(213, 74, 74) !important;\n background-color: rgb(213, 74, 74) !important;\n }\n.ce-settings__button--confirm .icon {\n transform: rotate(90deg);\n }\n.ce-settings-move-up:hover {\n cursor: pointer;\n }\n.ce-settings-move-up::before {\n display: inline-block;\n content: 'up';\n }\n.ce-block:first-of-type {\n margin-top: 0;\n }\n.ce-block--selected {\n background-image: linear-gradient(17deg, rgba(243, 248, 255, 0.03) 63.45%, rgba(207, 214, 229, 0.27) 98%);\n border-radius: 3px;\n }\n.ce-block__content {\n max-width: 650px;\n max-width: var(--content-width);\n margin: 0 auto;\n }\n", ""]); // exports diff --git a/build/codex-editor.js.map b/build/codex-editor.js.map index 90050d9a..d36393cc 100644 --- a/build/codex-editor.js.map +++ b/build/codex-editor.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://CodexEditor/webpack/bootstrap","webpack://CodexEditor/./build/sprite.svg","webpack://CodexEditor/./node_modules/css-loader/lib/css-base.js","webpack://CodexEditor/./node_modules/html-janitor/src/html-janitor.js","webpack://CodexEditor/./src/codex.js","webpack://CodexEditor/./src/components/__module.ts","webpack://CodexEditor/./src/components/block-tunes/block-tune-delete.ts","webpack://CodexEditor/./src/components/block-tunes/block-tune-move-up.ts","webpack://CodexEditor/./src/components/block.js","webpack://CodexEditor/./src/components/dom.js","webpack://CodexEditor/./src/components/inline-tools/inline-tool-bold.ts","webpack://CodexEditor/./src/components/inline-tools/inline-tool-link.ts","webpack://CodexEditor/./src/components/modules sync nonrecursive [^_](api-blocks.ts|api-events.ts|api-sanitizer.ts|api-toolbar.ts|api.ts|blockManager.js|caret.js|events.js|keyboard.js|listeners.js|renderer.js|sanitizer.js|saver.js|toolbar-blockSettings.js|toolbar-inline.ts|toolbar-toolbox.js|toolbar.js|tools.js|ui.js)$","webpack://CodexEditor/./src/components/modules/api-blocks.ts","webpack://CodexEditor/./src/components/modules/api-events.ts","webpack://CodexEditor/./src/components/modules/api-sanitizer.ts","webpack://CodexEditor/./src/components/modules/api-toolbar.ts","webpack://CodexEditor/./src/components/modules/api.ts","webpack://CodexEditor/./src/components/modules/blockManager.js","webpack://CodexEditor/./src/components/modules/caret.js","webpack://CodexEditor/./src/components/modules/events.js","webpack://CodexEditor/./src/components/modules/keyboard.js","webpack://CodexEditor/./src/components/modules/listeners.js","webpack://CodexEditor/./src/components/modules/renderer.js","webpack://CodexEditor/./src/components/modules/sanitizer.js","webpack://CodexEditor/./src/components/modules/saver.js","webpack://CodexEditor/./src/components/modules/toolbar-blockSettings.js","webpack://CodexEditor/./src/components/modules/toolbar-inline.ts","webpack://CodexEditor/./src/components/modules/toolbar-toolbox.js","webpack://CodexEditor/./src/components/modules/toolbar.js","webpack://CodexEditor/./src/components/modules/tools.js","webpack://CodexEditor/./src/components/modules/ui.js","webpack://CodexEditor/./src/components/polyfills.js","webpack://CodexEditor/./src/components/selection.js","webpack://CodexEditor/./src/components/utils.js","webpack://CodexEditor/./src/styles/main.css"],"names":["modules","editorModules","map","module","CodexEditor","config","moduleInstances","Promise","resolve","then","configuration","init","start","console","log","catch","error","constructModules","configureModules","forEach","Module","displayName","e","name","state","getModulesDiff","diff","moduleName","prepareDecorator","prepare","Tools","UI","BlockManager","Renderer","render","data","items","initialBlock","type","holderId","placeholder","sanitizer","p","b","a","hideToolbar","tools","toolsConfig","_","isEmpty","length","Editor","new","target","TypeError","DeleteTune","api","CSS","wrapper","resetConfirmation","setConfirmation","deleteButton","$","make","addEventListener","event","handleClick","needConfirmation","events","on","off","blocks","delete","MoveUpTune","moveUpButton","moveUp","Block","toolName","toolInstance","settings","apiMethods","tool","_html","compose","tunes","makeTunes","contentNode","content","pluginsContent","appendChild","methodName","params","Function","call","merge","extractedBlock","save","measuringStart","window","performance","now","measuringEnd","finishedExtraction","time","isValid","validate","tunesList","tune","tunesElement","document","createDocumentFragment","append","contentless","emptyText","emptyMedia","hasMedia","mediaTags","querySelector","join","classList","add","selected","remove","Dom","tag","tagName","includes","classNames","attributes","el","createElement","Array","isArray","attrName","createTextNode","width","height","icon","createElementNS","setAttribute","innerHTML","parent","elements","selector","querySelectorAll","node","atLast","child","sibling","nodeType","Node","ELEMENT_NODE","nodeChild","isSingleTag","parentNode","getDeepestNode","nativeInputs","nodeText","isElement","isNativeInput","value","textContent","replace","trim","childNodes","treeWalker","leafs","isNodeEmpty","push","firstChild","shift","isLeaf","nextSibling","every","leaf","BoldInlineTool","commandName","button","buttonActive","buttonModifier","nodes","svg","range","execCommand","selection","isActive","queryCommandState","toggle","LinkInlineTool","commandLink","commandUnlink","ENTER_KEY","buttonUnlink","input","inputShowed","inputOpened","inlineToolbar","toolbar","Selection","keyCode","enterPressed","parentAnchor","findParentTag","expandToTag","unlink","closeActions","checkState","close","toggleActions","anchorTag","openActions","hrefAttr","getAttribute","needFocus","focus","clearSavedSelection","clearSaved","restore","preventDefault","validateURL","prepareLink","insertLink","stopPropagation","stopImmediatePropagation","str","test","link","addProtocol","isInternal","isAnchor","substring","isProtocolRelative","BlocksAPI","blockIndex","removeBlock","Toolbar","navigatePrevious","moveDown","EventsAPI","eventName","callback","Events","emit","SanitizerAPI","taintString","Sanitizer","clean","ToolbarsAPI","open","API","methods","caret","_blocks","currentBlockIndex","Blocks","redactor","Proxy","set","get","construct","block","bindEvents","Listeners","Keyboard","blockKeydownsListener","InlineToolbar","handleShowingEvent","caretAtEnd","Caret","isAtEnd","nextBlock","setToBlock","force","previousBlock","caretAtStart","isAtStart","composeBlock","targetBlock","blockToMerge","blockToMergeIndex","indexOf","blockToMergeInfo","mergeWith","index","extractedFragment","extractFragmentFromCaretPosition","text","insert","element","firstLevelBlock","closest","childNode","parentFirstLevelBlock","currentNode","Error","isLastBlock","isFirstBlock","array","currentBlock","workingArea","html","deleteCount","splice","insertAdjacentElement","newBlock","children","instance","isNaN","Number","offset","atEnd","nodeToSet","delay","createRange","setStart","setEnd","removeAllRanges","addRange","lastBlock","rangeCount","selectRange","getRangeAt","blockElem","deleteContents","cloneRange","selectNodeContents","endContainer","endOffset","extractContents","from","direction","current","siblings","contentEditable","isCollapsed","anchorNode","firstNode","firstLetterPosition","search","leftSiblings","getHigherLevelSiblings","nothingAtLeft","anchorOffset","lastNode","nothingAtRight","subscribers","reduce","previousData","currentHandler","newData","i","keyCodes","BACKSPACE","backspacePressed","ENTER","DOWN","RIGHT","arrowRightAndDownPressed","UP","LEFT","arrowLeftAndUpPressed","apiSettings","IS_ENABLED_LINE_BREAKS","shiftKey","split","BM","canMergeBlocks","getBlockByIndex","mergeable","setCaretToTheEnd","mergeBlocks","setTimeout","navigateNext","allListeners","eventType","handler","useCapture","assignedEventData","alreadyExist","findOne","existingListeners","findAll","removeEventListener","listenersOnElement","listener","listenersWithType","listenersWithHandler","foundListeners","found","foundByElements","findByElement","filter","chainData","function","insertBlock","sequence","item","defaultConfig","_sanitizerInstance","sanitizerConfig","sanitizerInstance","require","customConfig","library","tags","href","rel","newInstance","Saver","output","blocksData","all","allExtractedData","makeOutput","outputData","totalTime","groupCollapsed","extraction","groupEnd","Date","version","VERSION","BlockSettings","toolSettings","defaultSettings","makeSettings","renderTunes","wrapperOpened","addToolSettings","addDefaultSettings","opened","closed","contains","buttons","actions","inlineToolbarShowed","buttonsWrapper","actionsWrapper","toolbarVerticalMargin","addTools","allowedToShow","move","checkToolsState","selectionRect","rect","wrapperOffset","getBoundingClientRect","newCoords","x","left","y","top","Math","floor","style","clear","tagsConflictsWithSelection","currentSelection","selectedText","getBlock","toolConfig","IS_ENABLED_INLINE_TOOLBAR","addTool","renderActions","toolClicked","surround","toolsInstances","Toolbox","toolbox","toolsAvailable","IS_DISPLAYED_IN_TOOLBOX","TOOLBAR_ICON_CLASS","toolboxButton","title","dataset","buttonClicked","toolButton","toolClasses","IS_IRREPLACEBLE_TOOL","toolboxOpened","plusButton","blockActionsButtons","settingsToggler","plusButtonClicked","defaultToolbarHeight","defaultOffset","newYCoordinate","offsetTop","transform","toolbarOpened","settingsTogglerClicked","hide","plusButtonHidden","show","toolsUnavailable","hasOwnProperty","reject","sequenceData","getListOfPrepareFunctions","success","fallback","toolPreparationList","toolClass","plugin","available","holder","appendSVGSprite","loadStyles","getElementById","editorWrapper","editorZone","styles","toString","head","redactorClicked","clickedNode","setCurrentBlockByChildNode","setToTheLastBlock","isInitialBlock","isInitial","isEmptyBlock","spriteHolder","sprite","Element","prototype","matches","msMatchesSelector","webkitMatchesSelector","s","documentElement","parentElement","savedSelectionRange","sel","getSelection","className","parentTag","searchDepth","boundingLeft","boundingTop","boundingWidth","boundingHeight","span","insertNode","spanParent","removeChild","normalize","Util","msg","args","chains","previousValue","currentValue","iteration","waitNextBlock","successCallback","fallbackCallback","collection","slice","object","Object","keys","constructor","method","timeout","context","arguments","apply","TAB","SHIFT","CTRL","ALT","ESC","SPACE","DELETE","META"],"mappings":";;AAAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kDAA0C,gCAAgC;AAC1E;AACA;;AAEA;AACA;AACA;AACA,gEAAwD,kBAAkB;AAC1E;AACA,yDAAiD,cAAc;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAyC,iCAAiC;AAC1E,wHAAgH,mBAAmB,EAAE;AACrI;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;;AAGA;AACA;;;;;;;;;;;;AClFA,y3E;;;;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC,gBAAgB;AACnD,IAAI;AACJ;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA,YAAY,oBAAoB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,oDAAoD,cAAc;;AAElE;AACA;;;;;;;;;;;;AC3EA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA,GAAG,QAIH;AACA,CAAC;;AAED;AACA,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB;AACA;;AAEA;AACA;;AAEA;AACA,wBAAwB,iCAAiC,EAAE;AAC3D,6BAA6B,uEAAuE,EAAE;;AAEtG;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA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AAGA,UAAI,CAAChC,OAAOgC,YAAZ,EAA0B;AACxB,aAAK,KAAKhC,MAAL,CAAYgC,YAAjB,IAAiC,KAAKhC,MAAL,CAAYyC,KAA7C;AAAoD;AAApD;AACD,OAFD,MAEO;AACL,aAAKzC,MAAL,CAAYgC,YAAZ,GAA2BhC,OAAOgC,YAAlC;AACD;AACF;;AAED;;;;;wBAIoB;AAClB,aAAO,KAAKhC,MAAZ;AACD;;;;;;;kBArGkBD,W;AAgMpB;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;ACrYA;;;;;;;;;IASqBgB,M;AACjB;;;;;AAKA,wBAAwB;AAAA,QAAVf,MAAU,QAAVA,MAAU;;AAAA;;AACpB;;;;AAIA,SAAK8C,MAAL,GAAc,IAAd;AACA;;;;AAIA,SAAK9C,MAAL,GAAc,EAAd;AACA,QAAI+C,IAAIC,MAAJ,KAAejC,MAAnB,EAA2B;AACvB,YAAM,IAAIkC,SAAJ,CAAc,yDAAd,CAAN;AACH;AACD,SAAKjD,MAAL,GAAcA,MAAd;AACH;AACD;;;;;;;;;;;sBAOU8C,M,EAAQ;AACd,WAAKA,MAAL,GAAcA,MAAd;AACH;;;;;;;kBA/BgB/B,M;;;;;;;;;;;;;;;;;;;;;;;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CAAS,KAAKqE,KAAL,CAAW1H,OAApB,EAA6B+c,YAA7B;AACD;;;wBAvNS;AACR,aAAO;AACLZ,uBAAgB,cADX;AAELC,oBAAgB;AAFX,OAAP;AAID;;;;EAtE6B1e,M;;AA2RhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;kBAhfqBW,E;;;;;;;;;;;;;;;;AC3DrB;;;;;AAKA,IAAI,CAAC4e,QAAQC,SAAR,CAAkBC,OAAvB,EACEF,QAAQC,SAAR,CAAkBC,OAAlB,GAA4BF,QAAQC,SAAR,CAAkBE,iBAAlB,IACtBH,QAAQC,SAAR,CAAkBG,qBADxB;;AAGF,IAAI,CAACJ,QAAQC,SAAR,CAAkB1O,OAAvB,EACEyO,QAAQC,SAAR,CAAkB1O,OAAlB,GAA4B,UAAU8O,CAAV,EAAa;AACvC,MAAI/Y,KAAK,IAAT;;AAEA,MAAI,CAACpB,SAASoa,eAAT,CAAyBjG,QAAzB,CAAkC/S,EAAlC,CAAL,EAA4C,OAAO,IAAP;AAC5C,KAAG;AACD,QAAIA,GAAG4Y,OAAH,CAAWG,CAAX,CAAJ,EAAmB,OAAO/Y,EAAP;AACnBA,SAAKA,GAAGiZ,aAAH,IAAoBjZ,GAAGyB,UAA5B;AACD,GAHD,QAGSzB,OAAO,IAHhB;AAIA,SAAO,IAAP;AACD,CATD,C;;;;;;;;;;;;;;;;;;;;;;ACVF;;;;IAIqBqE,S;AACnB;;;AAGA,uBAAc;AAAA;;AACZ,SAAK4G,QAAL,GAAgB,IAAhB;AACA,SAAK1H,SAAL,GAAiB,IAAjB;;AAEA;;;;AAIA,SAAK2V,mBAAL,GAA2B,IAA3B;AACD;;AAED;;;;;;;;;;;AA0HA;;;2BAGO;AACL,WAAKA,mBAAL,GAA2B7U,UAAUhB,KAArC;AACD;;AAED;;;;;;8BAGU;AACR,UAAI,CAAC,KAAK6V,mBAAV,EAA+B;AAC7B;AACD;;AAED,UAAMC,MAAMlb,OAAOmb,YAAP,EAAZ;;AAEAD,UAAIxN,eAAJ;AACAwN,UAAIvN,QAAJ,CAAa,KAAKsN,mBAAlB;AACD;;AAED;;;;;;iCAGa;AACX,WAAKA,mBAAL,GAA2B,IAA3B;AACD;;AAED;;;;;;;;;kCAMctZ,O,EAASyZ,S,EAAW;AAChC,UAAI9V,YAAYtF,OAAOmb,YAAP,EAAhB;AAAA,UACEE,kBADF;AAAA,UAEEC,cAAc,EAFhB,CADgC,CAGZ;;AAEpB,UAAI,CAAChW,SAAD,IAAc,CAACA,UAAUuJ,UAA7B,EAAyC;AACvC,eAAO,IAAP;AACD;;AAEDwM,kBAAY/V,UAAUuJ,UAAV,CAAqBrL,UAAjC;;AAEA,aAAO8X,cAAc,CAAd,IAAmBD,UAAU7X,UAApC,EAAgD;AAC9C,YAAI6X,UAAU1Z,OAAV,KAAsBA,OAA1B,EAAmC;AACjC;;;AAGA,cAAIyZ,aAAa,CAACC,UAAUha,SAAV,CAAoByT,QAApB,CAA6BsG,SAA7B,CAAlB,EAA2D;AACzD,mBAAO,IAAP;AACD;;AAED,iBAAOC,SAAP;AACD;;AAEDA,oBAAYA,UAAU7X,UAAtB;AACA8X;AACD;AACD,aAAO,IAAP;AACD;;AAED;;;;;;;gCAIYvY,I,EAAM;AAChB,UAAIuC,YAAYtF,OAAOmb,YAAP,EAAhB;;AAEA7V,gBAAUoI,eAAV;AACA,UAAItI,QAAQzE,SAAS4M,WAAT,EAAZ;;AAEAnI,YAAM+I,kBAAN,CAAyBpL,IAAzB;AACAuC,gBAAUqI,QAAV,CAAmBvI,KAAnB;AACD;;;0BAhMY;AACX,aAAOpF,OAAOmb,YAAP,EAAP;AACD;;AAED;;;;;;;;wBAKwB;AACtB,UAAM7V,YAAYtF,OAAOmb,YAAP,EAAlB;;AAEA,aAAO7V,YAAYA,UAAUuJ,UAAtB,GAAmC,IAA1C;AACD;;AAED;;;;;;;;wBAK0B;AACxB,UAAMvJ,YAAYtF,OAAOmb,YAAP,EAAlB;;AAEA,aAAO7V,YAAYA,UAAU8J,YAAtB,GAAqC,IAA5C;AACD;;AAED;;;;;;;wBAIyB;AACvB,UAAM9J,YAAYtF,OAAOmb,YAAP,EAAlB;;AAEA,aAAO7V,YAAYA,UAAUsJ,WAAtB,GAAoC,IAA3C;AACD;;AAED;;;;;;;wBAImB;AACjB,UAAMtJ,YAAYtF,OAAOmb,YAAP,EAAlB;;AAEA,aAAO7V,aAAaA,UAAUuI,UAAvB,GAAoCvI,UAAUyI,UAAV,CAAqB,CAArB,CAApC,GAA8D,IAArE;AACD;;AAED;;;;;;;wBAIkB;AAChB,UAAImN,MAAMva,SAAS2E,SAAnB;AAAA,UAA8BF,cAA9B;AACA,UAAIsQ,OAAO;AACTI,WAAG,CADM;AAETE,WAAG,CAFM;AAGT3T,eAAO,CAHE;AAITC,gBAAQ;AAJC,OAAX;;AAOA,UAAI4Y,OAAOA,IAAI9e,IAAJ,KAAa,SAAxB,EAAmC;AACjCgJ,gBAAQ8V,IAAI3N,WAAJ,EAAR;AACAmI,aAAKI,CAAL,GAAS1Q,MAAMmW,YAAf;AACA7F,aAAKM,CAAL,GAAS5Q,MAAMoW,WAAf;AACA9F,aAAKrT,KAAL,GAAa+C,MAAMqW,aAAnB;AACA/F,aAAKpT,MAAL,GAAc8C,MAAMsW,cAApB;;AAEA,eAAOhG,IAAP;AACD;;AAED,UAAI,CAAC1V,OAAOmb,YAAZ,EAA0B;AACxBre,UAAElC,GAAF,CAAM,6CAAN,EAAqD,MAArD;AACA,eAAO8a,IAAP;AACD;;AAEDwF,YAAMlb,OAAOmb,YAAP,EAAN;;AAEA,UAAI,CAACD,IAAIrN,UAAT,EAAqB;AACnB/Q,UAAElC,GAAF,CAAM,gDAAN,EAAwD,MAAxD;AACA,eAAO8a,IAAP;AACD;;AAEDtQ,cAAQ8V,IAAInN,UAAJ,CAAe,CAAf,EAAkBG,UAAlB,EAAR;;AAEA,UAAI9I,MAAMwQ,qBAAV,EAAiC;AAC/BF,eAAOtQ,MAAMwQ,qBAAN,EAAP;AACD;AACD;AACA,UAAIF,KAAKI,CAAL,KAAW,CAAX,IAAgBJ,KAAKM,CAAL,KAAW,CAA/B,EAAkC;AAChC,YAAI2F,OAAOhb,SAASqB,aAAT,CAAuB,MAAvB,CAAX;;AAEA,YAAI2Z,KAAK/F,qBAAT,EAAgC;AAC9B;AACA;AACA+F,eAAKpc,WAAL,CAAkBoB,SAASyB,cAAT,CAAwB,QAAxB,CAAlB;AACAgD,gBAAMwW,UAAN,CAAiBD,IAAjB;AACAjG,iBAAOiG,KAAK/F,qBAAL,EAAP;;AAEA,cAAIiG,aAAaF,KAAKnY,UAAtB;;AAEAqY,qBAAWC,WAAX,CAAuBH,IAAvB;;AAEA;AACAE,qBAAWE,SAAX;AACD;AACF;;AAED,aAAOrG,IAAP;AACD;;AAED;;;;;;;wBAIkB;AAChB,aAAO1V,OAAOmb,YAAP,GAAsBnb,OAAOmb,YAAP,GAAsBrB,QAAtB,EAAtB,GAAyD,EAAhE;AACD;;;;;;;kBAvIkB1T,S;;;;;;;;;;;;;;;;;;;;;;;;ACJrB;;;IAGqB4V,I;;;;;;;;AACnB;;;;;;;wBAOWC,G,EAAK7f,I,EAAM8f,I,EAAM;AAC1B9f,aAAOA,QAAQ,KAAf;;AAEA,UAAI,CAAC8f,IAAL,EAAW;AACTA,eAAQD,OAAO,WAAf;AACAA,cAAO,yBAAP;AACD,OAHD,MAGO;AACLA,cAAO,0BAA0BA,GAAjC;AACD;;AAED,UAAG;AACD,YAAK,aAAajc,MAAb,IAAuBA,OAAOrF,OAAP,CAAgByB,IAAhB,CAA5B,EAAqD;AACnD,cAAK8f,IAAL,EAAYlc,OAAOrF,OAAP,CAAgByB,IAAhB,EAAwB6f,GAAxB,EAA6BC,IAA7B,EAAZ,KACKlc,OAAOrF,OAAP,CAAgByB,IAAhB,EAAwB6f,GAAxB;AACN;AACF,OALD,CAKE,OAAM7gB,CAAN,EAAS;AACT;AACD;AACF;;AAED;;;;;;;;;AAuBA;;;;;;AAMA;;;;;;;;;6BASgB+gB,M,EAAiD;AAAA,UAAzClD,OAAyC,uEAA/B,YAAM,CAAE,CAAuB;AAAA,UAArBC,QAAqB,uEAAV,YAAM,CAAE,CAAE;;AAC/D,aAAO,IAAI7e,OAAJ,CAAY,UAAUC,OAAV,EAAmB;AACpC;;;;;;;AAOA6hB,eAAO3M,MAAP,CAAc,UAAU4M,aAAV,EAAyBC,YAAzB,EAAuCC,SAAvC,EAAkD;AAC9D,iBAAOF,cACJ7hB,IADI,CACC;AAAA,mBAAMgiB,cAAcF,YAAd,EAA4BpD,OAA5B,EAAqCC,QAArC,CAAN;AAAA,WADD,EAEJ3e,IAFI,CAEC,YAAM;AACV;AACA,gBAAI+hB,cAAcH,OAAOnf,MAAP,GAAgB,CAAlC,EAAqC;AACnC1C;AACD;AACF,WAPI,CAAP;AAQD,SATD,EASGD,QAAQC,OAAR,EATH;AAUD,OAlBM,CAAP;;AAoBA;;;;;;;;;;AAUA,eAASiiB,aAAT,CAAuBjK,SAAvB,EAAkCkK,eAAlC,EAAmDC,gBAAnD,EAAqE;AACnE,eAAO,IAAIpiB,OAAJ,CAAY,UAAUC,OAAV,EAAmB;AACpCgY,oBAAUC,QAAV,GACGhY,IADH,CACQ,YAAM;AACViiB,4BAAgBlK,UAAUrW,IAAV,IAAkB,EAAlC;AACD,WAHH,EAIG1B,IAJH,CAIQD,OAJR,EAKGO,KALH,CAKS,YAAY;AACjB4hB,6BAAiBnK,UAAUrW,IAAV,IAAkB,EAAnC;;AAEA;AACA3B;AACD,WAVH;AAWD,SAZM,CAAP;AAaD;AACF;;AAED;;;;;;;;;;0BAOaoiB,U,EAAY;AACvB,aAAOza,MAAMyY,SAAN,CAAgBiC,KAAhB,CAAsBhd,IAAtB,CAA2B+c,UAA3B,CAAP;AACD;;AAED;;;;;;;;;4BAMeE,M,EAAQ;AACrB,aAAOC,OAAOC,IAAP,CAAYF,MAAZ,EAAoB5f,MAApB,KAA+B,CAA/B,IAAoC4f,OAAOG,WAAP,KAAuBF,MAAlE;AACD;;AAED;;;;;;;;8BAKiBD,M,EAAQ;AACvB,aAAOviB,QAAQC,OAAR,CAAgBsiB,MAAhB,MAA4BA,MAAnC;AACD;;AAED;;;;;;;;sCAKyB9Q,O,EAAS;AAChC,aAAOA,QAAQ6C,eAAR,KAA4B,MAAnC;AACD;;AAED;;;;;;;;;0BAMaqO,M,EAAQC,O,EAAS;AAC5B,aAAO,YAAY;AACjB,YAAIC,UAAU,IAAd;AAAA,YACEhB,OAAUiB,SADZ;;AAGAnd,eAAOiR,UAAP,CAAkB;AAAA,iBAAM+L,OAAOI,KAAP,CAAaF,OAAb,EAAsBhB,IAAtB,CAAN;AAAA,SAAlB,EAAqDe,OAArD;AACD,OALD;AAMD;;;wBAtIqB;AACpB,aAAO;AACLnN,mBAAW,CADN;AAELuN,aAAK,CAFA;AAGLrN,eAAO,EAHF;AAILsN,eAAO,EAJF;AAKLC,cAAM,EALD;AAMLC,aAAK,EANA;AAOLC,aAAK,EAPA;AAQLC,eAAO,EARF;AASLrN,cAAM,EATD;AAULD,YAAI,EAVC;AAWLH,cAAM,EAXD;AAYLC,eAAO,EAZF;AAaLyN,gBAAQ,EAbH;AAcLC,cAAM;AAdD,OAAP;AAgBD;;;;;;;kBAjDkB5B,I;AAuKpB;;;;;;;;;;;;AC1KD;AACA;;;AAGA;AACA,gCAAiC,4DAA4D,qFAAqF,wDAAwD,qEAAqE,kHAAkH,4CAA4C,uBAAuB,2BAA2B,iBAAiB,2BAA2B,OAAO,uBAAuB,oBAAoB,KAAK,2BAA2B,4BAA4B,KAAK,qBAAqB,yBAAyB,6BAA6B,uBAAuB,KAAK,mBAAmB,4CAA4C,GAAG,cAAc,4CAA4C,GAAG,mBAAmB,6BAA6B,sBAAsB,KAAK,+BAA+B,4BAA4B,eAAe,uBAAuB,YAAY,aAAa,WAAW,iBAAiB,2BAA2B,qCAAqC,oCAAoC,kBAAkB,GAAG,uBAAuB,qBAAqB,mBAAmB,8BAA8B,OAAO,wBAAwB,uBAAuB,sCAAsC,qBAAqB,yBAAyB,KAAK,qBAAqB,yBAAyB,8BAA8B,qDAAqD,4BAA4B,gCAAgC,wCAAwC,kBAAkB,yCAAyC,mBAAmB,0CAA0C,wBAAwB,yBAAyB,6BAA6B,4BAA4B,qBAAqB,wBAAwB,uBAAuB,yBAAyB,2BAA2B,OAAO,6BAA6B,sBAAsB,OAAO,6FAA6F,yBAAyB,eAAe,aAAa,8BAA8B,mBAAmB,KAAK,gCAAgC,gCAAgC,qBAAqB,0BAA0B,2BAA2B,OAAO,6BAA6B,4BAA4B,kBAAkB,mBAAmB,kCAAkC,qCAAqC,uBAAuB,wBAAwB,oBAAoB,OAAO,eAAe,yBAAyB,yBAAyB,qCAAqC,2BAA2B,GAAG,uBAAuB,qBAAqB,8BAA8B,OAAO,uBAAuB,gCAAgC,2BAA2B,oBAAoB,8BAA8B,sCAAsC,sBAAsB,6CAA6C,uBAAuB,8CAA8C,8BAA8B,2BAA2B,6BAA6B,4BAA4B,yDAAyD,+BAA+B,mCAAmC,8BAA8B,+BAA+B,kCAAkC,gEAAgE,gEAAgE,gDAAgD,mCAAmC,+BAA+B,oCAAoC,WAAW,sBAAsB,uBAAuB,wBAAwB,+FAA+F,uBAAuB,iBAAiB,8BAA8B,gBAAgB,gBAAgB,iBAAiB,uBAAuB,cAAc,cAAc,sBAAsB,8BAA8B,qBAAqB,gBAAgB,SAAS,sBAAsB,iBAAiB,gCAAgC,kBAAkB,GAAG,8BAA8B,qBAAqB,KAAK,mBAAmB,0BAA0B,gBAAgB,iBAAiB,uBAAuB,oBAAoB,cAAc,kBAAkB,4BAA4B,2BAA2B,mBAAmB,6BAA6B,yBAAyB,0BAA0B,kCAAkC,KAAK,2BAA2B,qBAAqB,sCAAsC,KAAK,+BAA+B,yBAAyB,OAAO,uCAAuC,sBAAsB,OAAO,uCAAuC,sBAAsB,OAAO,yCAAyC,8BAA8B,OAAO,yBAAyB,0BAA0B,kCAAkC,oBAAoB,gBAAgB,yBAAyB,sBAAsB,sBAAsB,mBAAmB,kBAAkB,6BAA6B,wBAAwB,oDAAoD,uBAAuB,+BAA+B,OAAO,+CAA+C,uBAAuB,+BAA+B,OAAO,sCAAsC,uBAAuB,+BAA+B,OAAO,iCAAiC,uBAAuB,OAAO,gBAAgB,4BAA4B,iBAAiB,kBAAkB,GAAG,wBAAwB,qBAAqB,KAAK,6BAA6B,8BAA8B,mBAAmB,6BAA6B,qCAAqC,mCAAmC,oBAAoB,wBAAwB,OAAO,8BAA8B,8BAA8B,uBAAuB,sCAAsC,sCAAsC,sBAAsB,wBAAwB,OAAO,wBAAwB,yBAAyB,qBAAqB,iCAAiC,8BAA8B,4BAA4B,oCAAoC,OAAO,8BAA8B,sBAAsB,KAAK,gCAAgC,4BAA4B,oBAAoB,KAAK,aAAa,4BAA4B,oBAAoB,2BAA2B,oBAAoB,KAAK,uBAAuB,gCAAgC,wCAAwC,KAAK,sBAAsB,uBAAuB,sCAAsC,qBAAqB,KAAK;;AAEr4N","file":"codex-editor.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/codex.js\");\n","module.exports = \"\\n\"","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n","(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n define('html-janitor', factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.HTMLJanitor = factory();\n }\n}(this, function () {\n\n /**\n * @param {Object} config.tags Dictionary of allowed tags.\n * @param {boolean} config.keepNestedBlockElements Default false.\n */\n function HTMLJanitor(config) {\n\n var tagDefinitions = config['tags'];\n var tags = Object.keys(tagDefinitions);\n\n var validConfigValues = tags\n .map(function(k) { return typeof tagDefinitions[k]; })\n .every(function(type) { return type === 'object' || type === 'boolean' || type === 'function'; });\n\n if(!validConfigValues) {\n throw new Error(\"The configuration was invalid\");\n }\n\n this.config = config;\n }\n\n // TODO: not exhaustive?\n var blockElementNames = ['P', 'LI', 'TD', 'TH', 'DIV', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'PRE'];\n function isBlockElement(node) {\n return blockElementNames.indexOf(node.nodeName) !== -1;\n }\n\n var inlineElementNames = ['A', 'B', 'STRONG', 'I', 'EM', 'SUB', 'SUP', 'U', 'STRIKE'];\n function isInlineElement(node) {\n return inlineElementNames.indexOf(node.nodeName) !== -1;\n }\n\n HTMLJanitor.prototype.clean = function (html) {\n var sandbox = document.createElement('div');\n sandbox.innerHTML = html;\n\n this._sanitize(sandbox);\n\n return sandbox.innerHTML;\n };\n\n HTMLJanitor.prototype._sanitize = function (parentNode) {\n var treeWalker = createTreeWalker(parentNode);\n var node = treeWalker.firstChild();\n if (!node) { return; }\n\n do {\n // Ignore nodes that have already been sanitized\n if (node._sanitized) {\n continue;\n }\n\n if (node.nodeType === Node.TEXT_NODE) {\n // If this text node is just whitespace and the previous or next element\n // sibling is a block element, remove it\n // N.B.: This heuristic could change. Very specific to a bug with\n // `contenteditable` in Firefox: http://jsbin.com/EyuKase/1/edit?js,output\n // FIXME: make this an option?\n if (node.data.trim() === ''\n && ((node.previousElementSibling && isBlockElement(node.previousElementSibling))\n || (node.nextElementSibling && isBlockElement(node.nextElementSibling)))) {\n parentNode.removeChild(node);\n this._sanitize(parentNode);\n break;\n } else {\n continue;\n }\n }\n\n // Remove all comments\n if (node.nodeType === Node.COMMENT_NODE) {\n parentNode.removeChild(node);\n this._sanitize(parentNode);\n break;\n }\n\n var isInline = isInlineElement(node);\n var containsBlockElement;\n if (isInline) {\n containsBlockElement = Array.prototype.some.call(node.childNodes, isBlockElement);\n }\n\n // Block elements should not be nested (e.g.
...); if\n // they are, we want to unwrap the inner block element.\n var isNotTopContainer = !! parentNode.parentNode;\n var isNestedBlockElement =\n isBlockElement(parentNode) &&\n isBlockElement(node) &&\n isNotTopContainer;\n\n var nodeName = node.nodeName.toLowerCase();\n\n var allowedAttrs = getAllowedAttrs(this.config, nodeName, node);\n\n var isInvalid = isInline && containsBlockElement;\n\n // Drop tag entirely according to the whitelist *and* if the markup\n // is invalid.\n if (isInvalid || shouldRejectNode(node, allowedAttrs)\n || (!this.config.keepNestedBlockElements && isNestedBlockElement)) {\n // Do not keep the inner text of SCRIPT/STYLE elements.\n if (! (node.nodeName === 'SCRIPT' || node.nodeName === 'STYLE')) {\n while (node.childNodes.length > 0) {\n parentNode.insertBefore(node.childNodes[0], node);\n }\n }\n parentNode.removeChild(node);\n\n this._sanitize(parentNode);\n break;\n }\n\n // Sanitize attributes\n for (var a = 0; a < node.attributes.length; a += 1) {\n var attr = node.attributes[a];\n\n if (shouldRejectAttr(attr, allowedAttrs, node)) {\n node.removeAttribute(attr.name);\n // Shift the array to continue looping.\n a = a - 1;\n }\n }\n\n // Sanitize children\n this._sanitize(node);\n\n // Mark node as sanitized so it's ignored in future runs\n node._sanitized = true;\n } while ((node = treeWalker.nextSibling()));\n };\n\n function createTreeWalker(node) {\n return document.createTreeWalker(node,\n NodeFilter.SHOW_TEXT | NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT,\n null, false);\n }\n\n function getAllowedAttrs(config, nodeName, node){\n if (typeof config.tags[nodeName] === 'function') {\n return config.tags[nodeName](node);\n } else {\n return config.tags[nodeName];\n }\n }\n\n function shouldRejectNode(node, allowedAttrs){\n if (typeof allowedAttrs === 'undefined') {\n return true;\n } else if (typeof allowedAttrs === 'boolean') {\n return !allowedAttrs;\n }\n\n return false;\n }\n\n function shouldRejectAttr(attr, allowedAttrs, node){\n var attrName = attr.name.toLowerCase();\n\n if (allowedAttrs === true){\n return false;\n } else if (typeof allowedAttrs[attrName] === 'function'){\n return !allowedAttrs[attrName](attr.value, node);\n } else if (typeof allowedAttrs[attrName] === 'undefined'){\n return true;\n } else if (allowedAttrs[attrName] === false) {\n return true;\n } else if (typeof allowedAttrs[attrName] === 'string') {\n return (allowedAttrs[attrName] !== attr.value);\n }\n\n return false;\n }\n\n return HTMLJanitor;\n\n}));\n","/**\n * Codex Editor\n *\n * Short Description (눈_눈;)\n * @version 2.0.0\n *\n * How to start?\n * Example:\n * new CodexEditor({\n * holderId : 'codex-editor',\n * initialBlock : 'text',\n * placeholder : 'Write your story....',\n * tools: {\n * quote: Quote,\n * anotherTool : AnotherTool\n * },\n * toolsConfig: {\n * quote: {\n * iconClassname : 'quote-icon',\n * displayInToolbox : true,\n * enableLineBreaks : true\n * },\n * anotherTool: {\n * iconClassname : 'tool-icon'\n * }\n * }\n * });\n *\n * - tools is an object: {\n * pluginName: PluginClass,\n * .....\n * }\n * - toolsConfig is an additional configuration that uses Codex Editor API\n * iconClassname - CSS classname of toolbox icon\n * displayInToolbox - if you want to see your Tool in toolbox hided in \"plus\" button, than set \"True\". By default : \"False\"\n * enableLineBreaks - by default enter creates new block that set as initialblock, but if you set this property \"True\", enter will break the lines in current block\n *\n * @author CodeX-Team <-- first (and deepest) node is \n * |adaddad <-- anchor node\n * <-- first (and deepest) node is \n * ...); if\n // they are, we want to unwrap the inner block element.\n var isNotTopContainer = !! parentNode.parentNode;\n var isNestedBlockElement =\n isBlockElement(parentNode) &&\n isBlockElement(node) &&\n isNotTopContainer;\n\n var nodeName = node.nodeName.toLowerCase();\n\n var allowedAttrs = getAllowedAttrs(this.config, nodeName, node);\n\n var isInvalid = isInline && containsBlockElement;\n\n // Drop tag entirely according to the whitelist *and* if the markup\n // is invalid.\n if (isInvalid || shouldRejectNode(node, allowedAttrs)\n || (!this.config.keepNestedBlockElements && isNestedBlockElement)) {\n // Do not keep the inner text of SCRIPT/STYLE elements.\n if (! (node.nodeName === 'SCRIPT' || node.nodeName === 'STYLE')) {\n while (node.childNodes.length > 0) {\n parentNode.insertBefore(node.childNodes[0], node);\n }\n }\n parentNode.removeChild(node);\n\n this._sanitize(parentNode);\n break;\n }\n\n // Sanitize attributes\n for (var a = 0; a < node.attributes.length; a += 1) {\n var attr = node.attributes[a];\n\n if (shouldRejectAttr(attr, allowedAttrs, node)) {\n node.removeAttribute(attr.name);\n // Shift the array to continue looping.\n a = a - 1;\n }\n }\n\n // Sanitize children\n this._sanitize(node);\n\n // Mark node as sanitized so it's ignored in future runs\n node._sanitized = true;\n } while ((node = treeWalker.nextSibling()));\n };\n\n function createTreeWalker(node) {\n return document.createTreeWalker(node,\n NodeFilter.SHOW_TEXT | NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT,\n null, false);\n }\n\n function getAllowedAttrs(config, nodeName, node){\n if (typeof config.tags[nodeName] === 'function') {\n return config.tags[nodeName](node);\n } else {\n return config.tags[nodeName];\n }\n }\n\n function shouldRejectNode(node, allowedAttrs){\n if (typeof allowedAttrs === 'undefined') {\n return true;\n } else if (typeof allowedAttrs === 'boolean') {\n return !allowedAttrs;\n }\n\n return false;\n }\n\n function shouldRejectAttr(attr, allowedAttrs, node){\n var attrName = attr.name.toLowerCase();\n\n if (allowedAttrs === true){\n return false;\n } else if (typeof allowedAttrs[attrName] === 'function'){\n return !allowedAttrs[attrName](attr.value, node);\n } else if (typeof allowedAttrs[attrName] === 'undefined'){\n return true;\n } else if (allowedAttrs[attrName] === false) {\n return true;\n } else if (typeof allowedAttrs[attrName] === 'string') {\n return (allowedAttrs[attrName] !== attr.value);\n }\n\n return false;\n }\n\n return HTMLJanitor;\n\n}));\n","/**\n * Codex Editor\n *\n * Short Description (눈_눈;)\n * @version 2.0.0\n *\n * How to start?\n * Example:\n * new CodexEditor({\n * holderId : 'codex-editor',\n * initialBlock : 'text',\n * placeholder : 'Write your story....',\n * tools: {\n * quote: Quote,\n * anotherTool : AnotherTool\n * },\n * toolsConfig: {\n * quote: {\n * iconClassname : 'quote-icon',\n * displayInToolbox : true,\n * enableLineBreaks : true\n * },\n * anotherTool: {\n * iconClassname : 'tool-icon'\n * }\n * }\n * });\n *\n * - tools is an object: {\n * pluginName: PluginClass,\n * .....\n * }\n * - toolsConfig is an additional configuration that uses Codex Editor API\n * iconClassname - CSS classname of toolbox icon\n * displayInToolbox - if you want to see your Tool in toolbox hided in \"plus\" button, than set \"True\". By default : \"False\"\n * enableLineBreaks - by default enter creates new block that set as initialblock, but if you set this property \"True\", enter will break the lines in current block\n *\n * @author CodeX-Team <-- first (and deepest) node is \n * |adaddad <-- anchor node\n * <-- first (and deepest) node is \n * adaddad
<-- passed node for example \n * |\n * | right first-level siblings\n * |\n *
where line breaks should be handled by default behaviour.\n */\n if (toolsConfig && toolsConfig[this.Editor.Tools.apiSettings.IS_ENABLED_LINE_BREAKS]) {\n return;\n }\n\n /**\n * Allow to create linebreaks by Shift+Enter\n */\n if (event.shiftKey) {\n return;\n }\n\n\n /**\n * Split the Current Block into two blocks\n */\n this.Editor.BlockManager.split();\n event.preventDefault();\n }\n\n /**\n * Handle backspace keypress on block\n * @param {KeyboardEvent} event - keydown\n */\n backspacePressed(event) {\n const BM = this.Editor.BlockManager;\n\n let isFirstBlock = BM.currentBlockIndex === 0,\n canMergeBlocks = this.Editor.Caret.isAtStart && !isFirstBlock;\n\n if (!canMergeBlocks) {\n return;\n }\n\n // preventing browser default behaviour\n event.preventDefault();\n\n let targetBlock = BM.getBlockByIndex(BM.currentBlockIndex - 1),\n blockToMerge = BM.currentBlock;\n\n /**\n * Blocks that can be merged:\n * 1) with the same Name\n * 2) Tool has 'merge' method\n *\n * other case will handle as usual ARROW LEFT behaviour\n */\n if (blockToMerge.name !== targetBlock.name || !targetBlock.mergeable) {\n BM.navigatePrevious();\n }\n\n let setCaretToTheEnd = !targetBlock.isEmpty ? true : false;\n\n BM.mergeBlocks(targetBlock, blockToMerge)\n .then( () => {\n window.setTimeout( () => {\n // set caret to the block without offset at the end\n this.Editor.Caret.setToBlock(BM.currentBlock, 0, setCaretToTheEnd);\n this.Editor.Toolbar.close();\n }, 10);\n });\n }\n\n /**\n * Handle right and down keyboard keys\n */\n arrowRightAndDownPressed() {\n this.Editor.BlockManager.navigateNext();\n }\n\n /**\n * Handle left and up keyboard keys\n */\n arrowLeftAndUpPressed() {\n this.Editor.BlockManager.navigatePrevious();\n }\n}\n","/**\n * Codex Editor Listeners module\n *\n * @module Listeners\n *\n * Module-decorator for event listeners assignment\n *\n * @author Codex Team\n * @version 2.0.0\n */\n\n/**\n * @typedef {Listeners} Listeners\n * @property {Array} allListeners\n */\n\nexport default class Listeners extends Module {\n /**\n * @constructor\n * @param {EditorConfig} config\n */\n constructor({config}) {\n super({config});\n this.allListeners = [];\n }\n\n /**\n * Assigns event listener on element\n *\n * @param {Element} element - DOM element that needs to be listened\n * @param {String} eventType - event type\n * @param {Function} handler - method that will be fired on event\n * @param {Boolean} useCapture - use event bubbling\n */\n on(element, eventType, handler, useCapture = false) {\n let assignedEventData = {\n element,\n eventType,\n handler,\n useCapture\n };\n\n let alreadyExist = this.findOne(element, eventType, handler);\n\n if (alreadyExist) return;\n\n this.allListeners.push(assignedEventData);\n element.addEventListener(eventType, handler, useCapture);\n }\n\n /**\n * Removes event listener from element\n *\n * @param {Element} element - DOM element that we removing listener\n * @param {String} eventType - event type\n * @param {Function} handler - remove handler, if element listens several handlers on the same event type\n * @param {Boolean} useCapture - use event bubbling\n */\n off(element, eventType, handler, useCapture = false) {\n let existingListeners = this.findAll(element, eventType, handler);\n\n for (let i = 0; i < existingListeners.length; i++) {\n let index = this.allListeners.indexOf(existingListeners[i]);\n\n if (index > 0) {\n this.allListeners.splice(index, 1);\n }\n }\n\n element.removeEventListener(eventType, handler, useCapture);\n }\n\n /**\n * Search method: looks for listener by passed element\n * @param {Element} element - searching element\n * @returns {Array} listeners that found on element\n */\n findByElement(element) {\n let listenersOnElement = [];\n\n for (let i = 0; i < this.allListeners.length; i++) {\n let listener = this.allListeners[i];\n\n if (listener.element === element) {\n listenersOnElement.push(listener);\n }\n }\n\n return listenersOnElement;\n }\n\n /**\n * Search method: looks for listener by passed event type\n * @param {String} eventType\n * @return {Array} listeners that found on element\n */\n findByType(eventType) {\n let listenersWithType = [];\n\n for (let i = 0; i < this.allListeners.length; i++) {\n let listener = this.allListeners[i];\n\n if (listener.type === eventType) {\n listenersWithType.push(listener);\n }\n }\n\n return listenersWithType;\n }\n\n /**\n * Search method: looks for listener by passed handler\n * @param {Function} handler\n * @return {Array} listeners that found on element\n */\n findByHandler(handler) {\n let listenersWithHandler = [];\n\n for (let i = 0; i < this.allListeners.length; i++) {\n let listener = this.allListeners[i];\n\n if (listener.handler === handler) {\n listenersWithHandler.push(listener);\n }\n }\n\n return listenersWithHandler;\n }\n\n /**\n * @param {Element} element\n * @param {String} eventType\n * @param {Function} handler\n * @return {Element|null}\n */\n findOne(element, eventType, handler) {\n let foundListeners = this.findAll(element, eventType, handler);\n\n return foundListeners.length > 0 ? foundListeners[0] : null;\n }\n\n /**\n * @param {Element} element\n * @param {String} eventType\n * @param {Function} handler\n * @return {Array}\n */\n findAll(element, eventType, handler) {\n let found,\n foundByElements = element ? this.findByElement(element) : [];\n // foundByEventType = eventType ? this.findByType(eventType) : [],\n // foundByHandler = handler ? this.findByHandler(handler) : [];\n\n if (element && eventType && handler) {\n found = foundByElements.filter( event => event.eventType === eventType && event.handler === handler );\n } else if (element && eventType) {\n found = foundByElements.filter( event => event.eventType === eventType);\n } else {\n found = foundByElements;\n }\n\n return found;\n }\n\n /**\n * Removes all listeners\n */\n removeAll() {\n this.allListeners.map( (current) => {\n current.element.removeEventListener(current.eventType, current.handler);\n });\n\n this.allListeners = [];\n }\n}\n","/**\n * Codex Editor Renderer Module\n *\n * @module Renderer\n * @author CodeX Team\n *\n * @version 2.0.0\n */\nexport default class Renderer extends Module {\n /**\n * @constructor\n * @param {EditorConfig} config\n */\n constructor({config}) {\n super({config});\n }\n\n /**\n * @typedef {Object} RendererItems\n * @property {String} type - tool name\n * @property {Object} data - tool data\n */\n\n /**\n * @example\n *\n * items: [\n * {\n * type : 'paragraph',\n * data : {\n * text : 'Hello from Codex!'\n * }\n * },\n * {\n * type : 'paragraph',\n * data : {\n * text : 'Leave feedback if you like it!'\n * }\n * },\n * ]\n *\n */\n\n /**\n * Make plugin blocks from array of plugin`s data\n * @param {RendererItems[]} items\n */\n render(items) {\n let chainData = [];\n\n for (let i = 0; i < items.length; i++) {\n chainData.push({\n function: () => this.insertBlock(items[i])\n });\n }\n\n return _.sequence(chainData);\n }\n\n /**\n * Get plugin instance\n * Add plugin instance to BlockManager\n * Insert block to working zone\n *\n * @param {Object} item\n * @returns {Promise.adaddad
<-- passed node for example \n * |\n * | right first-level siblings\n * |\n *
where line breaks should be handled by default behaviour.\n */\n if (toolsConfig && toolsConfig[this.Editor.Tools.apiSettings.IS_ENABLED_LINE_BREAKS]) {\n return;\n }\n\n /**\n * Allow to create linebreaks by Shift+Enter\n */\n if (event.shiftKey) {\n return;\n }\n\n\n /**\n * Split the Current Block into two blocks\n */\n this.Editor.BlockManager.split();\n\n /**\n * Renew local current node after split\n */\n let newCurrent = this.Editor.BlockManager.currentBlock;\n\n this.Editor.Toolbar.move();\n this.Editor.Toolbar.open();\n\n if (this.Editor.Tools.isInitial(newCurrent.tool) && newCurrent.isEmpty) {\n this.Editor.Toolbar.plusButton.show();\n }\n\n event.preventDefault();\n }\n\n /**\n * Handle backspace keypress on block\n * @param {KeyboardEvent} event - keydown\n */\n backspacePressed(event) {\n const BM = this.Editor.BlockManager;\n\n let isFirstBlock = BM.currentBlockIndex === 0,\n canMergeBlocks = this.Editor.Caret.isAtStart && !isFirstBlock;\n\n if (!canMergeBlocks) {\n return;\n }\n\n // preventing browser default behaviour\n event.preventDefault();\n\n let targetBlock = BM.getBlockByIndex(BM.currentBlockIndex - 1),\n blockToMerge = BM.currentBlock;\n\n /**\n * Blocks that can be merged:\n * 1) with the same Name\n * 2) Tool has 'merge' method\n *\n * other case will handle as usual ARROW LEFT behaviour\n */\n if (blockToMerge.name !== targetBlock.name || !targetBlock.mergeable) {\n BM.navigatePrevious();\n }\n\n let setCaretToTheEnd = !targetBlock.isEmpty ? true : false;\n\n BM.mergeBlocks(targetBlock, blockToMerge)\n .then( () => {\n window.setTimeout( () => {\n // set caret to the block without offset at the end\n this.Editor.Caret.setToBlock(BM.currentBlock, 0, setCaretToTheEnd);\n this.Editor.Toolbar.close();\n }, 10);\n });\n }\n\n /**\n * Handle right and down keyboard keys\n */\n arrowRightAndDownPressed() {\n this.Editor.BlockManager.navigateNext();\n }\n\n /**\n * Handle left and up keyboard keys\n */\n arrowLeftAndUpPressed() {\n this.Editor.BlockManager.navigatePrevious();\n }\n}\n","/**\n * Codex Editor Listeners module\n *\n * @module Listeners\n *\n * Module-decorator for event listeners assignment\n *\n * @author Codex Team\n * @version 2.0.0\n */\n\n/**\n * @typedef {Listeners} Listeners\n * @property {Array} allListeners\n */\n\nexport default class Listeners extends Module {\n /**\n * @constructor\n * @param {EditorConfig} config\n */\n constructor({config}) {\n super({config});\n this.allListeners = [];\n }\n\n /**\n * Assigns event listener on element\n *\n * @param {Element} element - DOM element that needs to be listened\n * @param {String} eventType - event type\n * @param {Function} handler - method that will be fired on event\n * @param {Boolean} useCapture - use event bubbling\n */\n on(element, eventType, handler, useCapture = false) {\n let assignedEventData = {\n element,\n eventType,\n handler,\n useCapture\n };\n\n let alreadyExist = this.findOne(element, eventType, handler);\n\n if (alreadyExist) return;\n\n this.allListeners.push(assignedEventData);\n element.addEventListener(eventType, handler, useCapture);\n }\n\n /**\n * Removes event listener from element\n *\n * @param {Element} element - DOM element that we removing listener\n * @param {String} eventType - event type\n * @param {Function} handler - remove handler, if element listens several handlers on the same event type\n * @param {Boolean} useCapture - use event bubbling\n */\n off(element, eventType, handler, useCapture = false) {\n let existingListeners = this.findAll(element, eventType, handler);\n\n for (let i = 0; i < existingListeners.length; i++) {\n let index = this.allListeners.indexOf(existingListeners[i]);\n\n if (index > 0) {\n this.allListeners.splice(index, 1);\n }\n }\n\n element.removeEventListener(eventType, handler, useCapture);\n }\n\n /**\n * Search method: looks for listener by passed element\n * @param {Element} element - searching element\n * @returns {Array} listeners that found on element\n */\n findByElement(element) {\n let listenersOnElement = [];\n\n for (let i = 0; i < this.allListeners.length; i++) {\n let listener = this.allListeners[i];\n\n if (listener.element === element) {\n listenersOnElement.push(listener);\n }\n }\n\n return listenersOnElement;\n }\n\n /**\n * Search method: looks for listener by passed event type\n * @param {String} eventType\n * @return {Array} listeners that found on element\n */\n findByType(eventType) {\n let listenersWithType = [];\n\n for (let i = 0; i < this.allListeners.length; i++) {\n let listener = this.allListeners[i];\n\n if (listener.type === eventType) {\n listenersWithType.push(listener);\n }\n }\n\n return listenersWithType;\n }\n\n /**\n * Search method: looks for listener by passed handler\n * @param {Function} handler\n * @return {Array} listeners that found on element\n */\n findByHandler(handler) {\n let listenersWithHandler = [];\n\n for (let i = 0; i < this.allListeners.length; i++) {\n let listener = this.allListeners[i];\n\n if (listener.handler === handler) {\n listenersWithHandler.push(listener);\n }\n }\n\n return listenersWithHandler;\n }\n\n /**\n * @param {Element} element\n * @param {String} eventType\n * @param {Function} handler\n * @return {Element|null}\n */\n findOne(element, eventType, handler) {\n let foundListeners = this.findAll(element, eventType, handler);\n\n return foundListeners.length > 0 ? foundListeners[0] : null;\n }\n\n /**\n * @param {Element} element\n * @param {String} eventType\n * @param {Function} handler\n * @return {Array}\n */\n findAll(element, eventType, handler) {\n let found,\n foundByElements = element ? this.findByElement(element) : [];\n // foundByEventType = eventType ? this.findByType(eventType) : [],\n // foundByHandler = handler ? this.findByHandler(handler) : [];\n\n if (element && eventType && handler) {\n found = foundByElements.filter( event => event.eventType === eventType && event.handler === handler );\n } else if (element && eventType) {\n found = foundByElements.filter( event => event.eventType === eventType);\n } else {\n found = foundByElements;\n }\n\n return found;\n }\n\n /**\n * Removes all listeners\n */\n removeAll() {\n this.allListeners.map( (current) => {\n current.element.removeEventListener(current.eventType, current.handler);\n });\n\n this.allListeners = [];\n }\n}\n","/**\n * Codex Editor Renderer Module\n *\n * @module Renderer\n * @author CodeX Team\n *\n * @version 2.0.0\n */\nexport default class Renderer extends Module {\n /**\n * @constructor\n * @param {EditorConfig} config\n */\n constructor({config}) {\n super({config});\n }\n\n /**\n * @typedef {Object} RendererItems\n * @property {String} type - tool name\n * @property {Object} data - tool data\n */\n\n /**\n * @example\n *\n * items: [\n * {\n * type : 'paragraph',\n * data : {\n * text : 'Hello from Codex!'\n * }\n * },\n * {\n * type : 'paragraph',\n * data : {\n * text : 'Leave feedback if you like it!'\n * }\n * },\n * ]\n *\n */\n\n /**\n * Make plugin blocks from array of plugin`s data\n * @param {RendererItems[]} items\n */\n render(items) {\n let chainData = [];\n\n for (let i = 0; i < items.length; i++) {\n chainData.push({\n function: () => this.insertBlock(items[i])\n });\n }\n\n return _.sequence(chainData);\n }\n\n /**\n * Get plugin instance\n * Add plugin instance to BlockManager\n * Insert block to working zone\n *\n * @param {Object} item\n * @returns {Promise.