{"version":3,"file":"editor.js","mappings":"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","sources":["webpack://Rock.UI.StructuredContentEditor/./src/custom.css","webpack://Rock.UI.StructuredContentEditor/./node_modules/css-loader/dist/runtime/api.js","webpack://Rock.UI.StructuredContentEditor/./node_modules/css-loader/dist/runtime/sourceMaps.js","webpack://Rock.UI.StructuredContentEditor/./node_modules/editorjs-drag-drop/dist/bundle.js","webpack://Rock.UI.StructuredContentEditor/./src/custom.css?4465","webpack://Rock.UI.StructuredContentEditor/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://Rock.UI.StructuredContentEditor/./node_modules/style-loader/dist/runtime/insertBySelector.js","webpack://Rock.UI.StructuredContentEditor/./node_modules/style-loader/dist/runtime/insertStyleElement.js","webpack://Rock.UI.StructuredContentEditor/./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js","webpack://Rock.UI.StructuredContentEditor/./node_modules/style-loader/dist/runtime/styleDomAPI.js","webpack://Rock.UI.StructuredContentEditor/./node_modules/style-loader/dist/runtime/styleTagTransform.js","webpack://Rock.UI.StructuredContentEditor/./src/dragdrop.ts","webpack://Rock.UI.StructuredContentEditor/./src/editor.ts","webpack://Rock.UI.StructuredContentEditor/./node_modules/@editorjs/editorjs/dist/editorjs.mjs","webpack://Rock.UI.StructuredContentEditor/webpack/bootstrap","webpack://Rock.UI.StructuredContentEditor/webpack/runtime/compat get default export","webpack://Rock.UI.StructuredContentEditor/webpack/runtime/define property getters","webpack://Rock.UI.StructuredContentEditor/webpack/runtime/hasOwnProperty shorthand","webpack://Rock.UI.StructuredContentEditor/webpack/runtime/make namespace object","webpack://Rock.UI.StructuredContentEditor/webpack/runtime/nonce","webpack://Rock.UI.StructuredContentEditor/webpack/startup"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*\r\n By default nested-list plugin displays nested ordered lists like \"3.2.2.1\".\r\n This changes it to display the same as just \"1\".\r\n*/\r\n.cdx-nested-list--ordered > .cdx-nested-list__item::before {\r\n content: counter(item) \". \";\r\n}\r\n\r\n/*\r\n Adjust the default color of the raw editor to be more Rock like.\r\n*/\r\n\r\ntextarea.ce-rawtool__textarea {\r\n background-color: #f8f8f8;\r\n color: inherit;\r\n line-height: inherit;\r\n letter-spacing: inherit;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/custom.css\"],\"names\":[],\"mappings\":\"AAAA;;;CAGC;AACD;IACI,2BAA2B;AAC/B;;AAEA;;CAEC;;AAED;IACI,yBAAyB;IACzB,cAAc;IACd,oBAAoB;IACpB,uBAAuB;AAC3B\",\"sourcesContent\":[\"/*\\r\\n By default nested-list plugin displays nested ordered lists like \\\"3.2.2.1\\\".\\r\\n This changes it to display the same as just \\\"1\\\".\\r\\n*/\\r\\n.cdx-nested-list--ordered > .cdx-nested-list__item::before {\\r\\n content: counter(item) \\\". \\\";\\r\\n}\\r\\n\\r\\n/*\\r\\n Adjust the default color of the raw editor to be more Rock like.\\r\\n*/\\r\\n\\r\\ntextarea.ce-rawtool__textarea {\\r\\n background-color: #f8f8f8;\\r\\n color: inherit;\\r\\n line-height: inherit;\\r\\n letter-spacing: inherit;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n if (!cssMapping) {\n return content;\n }\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n return [content].concat([sourceMapping]).join(\"\\n\");\n }\n return [content].join(\"\\n\");\n};","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.DragDrop=t():e.DragDrop=t()}(self,(function(){return(()=>{var e={424:(e,t,r)=>{\"use strict\";r.r(t),r.d(t,{default:()=>s});var n=r(81),o=r.n(n),i=r(645),a=r.n(i)()(o());a.push([e.id,'.ce-block--drop-target .ce-block__content:before {\\n content: \"\";\\n position: absolute;\\n top: 50%;\\n left: -20px;\\n margin-top: -1px;\\n height: 8px;\\n width: 8px;\\n border: solid #a0a0a0;\\n border-width: 1px 1px 0 0;\\n -webkit-transform-origin: right;\\n transform-origin: right;\\n -webkit-transform: rotate(45deg);\\n transform: rotate(45deg);\\n}\\n\\n.ce-block--drop-target .ce-block__content:after {\\n background: none;\\n}',\"\"]);const s=a},645:e=>{\"use strict\";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var r=\"\",n=void 0!==t[5];return t[4]&&(r+=\"@supports (\".concat(t[4],\") {\")),t[2]&&(r+=\"@media \".concat(t[2],\" {\")),n&&(r+=\"@layer\".concat(t[5].length>0?\" \".concat(t[5]):\"\",\" {\")),r+=e(t),n&&(r+=\"}\"),t[2]&&(r+=\"}\"),t[4]&&(r+=\"}\"),r})).join(\"\")},t.i=function(e,r,n,o,i){\"string\"==typeof e&&(e=[[null,e,void 0]]);var a={};if(n)for(var s=0;s0?\" \".concat(u[5]):\"\",\" {\").concat(u[1],\"}\")),u[5]=i),r&&(u[2]?(u[1]=\"@media \".concat(u[2],\" {\").concat(u[1],\"}\"),u[2]=r):u[2]=r),o&&(u[4]?(u[1]=\"@supports (\".concat(u[4],\") {\").concat(u[1],\"}\"),u[4]=o):u[4]=\"\".concat(o)),t.push(u))}},t}},81:e=>{\"use strict\";e.exports=function(e){return e[1]}},406:(e,t,r)=>{var n=r(424);\"string\"==typeof n&&(n=[[e.id,n,\"\"]]);r(723)(n,{hmr:!0,transform:void 0,insertInto:void 0}),n.locals&&(e.exports=n.locals)},723:(e,t,r)=>{var n,o,i={},a=(n=function(){return window&&document&&document.all&&!window.atob},function(){return void 0===o&&(o=n.apply(this,arguments)),o}),s=function(e){return document.querySelector(e)},c=function(e){var t={};return function(e){if(\"function\"==typeof e)return e();if(void 0===t[e]){var r=s.call(this,e);if(window.HTMLIFrameElement&&r instanceof window.HTMLIFrameElement)try{r=r.contentDocument.head}catch(e){r=null}t[e]=r}return t[e]}}(),l=null,u=0,f=[],d=r(947);function p(e,t){for(var r=0;r=0&&f.splice(t,1)}function y(e){var t=document.createElement(\"style\");return void 0===e.attrs.type&&(e.attrs.type=\"text/css\"),g(t,e.attrs),v(e,t),t}function g(e,t){Object.keys(t).forEach((function(r){e.setAttribute(r,t[r])}))}function m(e,t){var r,n,o,i;if(t.transform&&e.css){if(!(i=t.transform(e.css)))return function(){};e.css=i}if(t.singleton){var a=u++;r=l||(l=y(t)),n=x.bind(null,r,a,!1),o=x.bind(null,r,a,!0)}else e.sourceMap&&\"function\"==typeof URL&&\"function\"==typeof URL.createObjectURL&&\"function\"==typeof URL.revokeObjectURL&&\"function\"==typeof Blob&&\"function\"==typeof btoa?(r=function(e){var t=document.createElement(\"link\");return void 0===e.attrs.type&&(e.attrs.type=\"text/css\"),e.attrs.rel=\"stylesheet\",g(t,e.attrs),v(e,t),t}(t),n=O.bind(null,r,t),o=function(){b(r),r.href&&URL.revokeObjectURL(r.href)}):(r=y(t),n=B.bind(null,r),o=function(){b(r)});return n(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;n(e=t)}else o()}}e.exports=function(e,t){if(\"undefined\"!=typeof DEBUG&&DEBUG&&\"object\"!=typeof document)throw new Error(\"The style-loader cannot be used in a non-browser environment\");(t=t||{}).attrs=\"object\"==typeof t.attrs?t.attrs:{},t.singleton||\"boolean\"==typeof t.singleton||(t.singleton=a()),t.insertInto||(t.insertInto=\"head\"),t.insertAt||(t.insertAt=\"bottom\");var r=h(e,t);return p(r,t),function(e){for(var n=[],o=0;o{e.exports=function(e){var t=\"undefined\"!=typeof window&&window.location;if(!t)throw new Error(\"fixUrls requires window.location\");if(!e||\"string\"!=typeof e)return e;var r=t.protocol+\"//\"+t.host,n=r+t.pathname.replace(/\\/[^\\/]*$/,\"/\");return e.replace(/url\\s*\\(((?:[^)(]|\\((?:[^)(]+|\\([^)(]*\\))*\\))*)\\)/gi,(function(e,t){var o,i=t.trim().replace(/^\"(.*)\"$/,(function(e,t){return t})).replace(/^'(.*)'$/,(function(e,t){return t}));return/^(#|data:|http:\\/\\/|https:\\/\\/|file:\\/\\/\\/|\\s*$)/i.test(i)?e:(o=0===i.indexOf(\"//\")?i:0===i.indexOf(\"/\")?r+i:n+i.replace(/^\\.\\//,\"\"),\"url(\"+JSON.stringify(o)+\")\")}))}}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var i=t[n]={id:n,exports:{}};return e[n](i,i.exports,r),i.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var n={};return(()=>{\"use strict\";function e(e,t){for(var r=0;rt}),r(406);var t=function(){function t(e,r){var n=e.configuration,o=e.blocks,i=e.toolbar,a=e.save;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this.toolbar=i,this.borderStyle=r||\"1px dashed #aaa\",this.api=o,this.holder=\"string\"==typeof n.holder?document.getElementById(n.holder):n.holder,this.readOnly=n.readOnly,this.startBlock=null,this.endBlock=null,this.save=a,this.setDragListener(),this.setDropListener()}var r,n,o;return r=t,o=[{key:\"isReadOnlySupported\",get:function(){return!0}}],(n=[{key:\"setElementCursor\",value:function(e){if(e){var t=document.createRange(),r=window.getSelection();t.setStart(e.childNodes[0],0),t.collapse(!0),r.removeAllRanges(),r.addRange(t),e.focus()}}},{key:\"setDragListener\",value:function(){var e=this;if(!this.readOnly){var t=this.holder.querySelector(\".ce-toolbar__settings-btn\");t.setAttribute(\"draggable\",\"true\"),t.addEventListener(\"dragstart\",(function(){e.startBlock=e.api.getCurrentBlockIndex()})),t.addEventListener(\"drag\",(function(){if(e.toolbar.close(),!e.isTheOnlyBlock()){var t=e.holder.querySelectorAll(\".ce-block\"),r=e.holder.querySelector(\".ce-block--drop-target\");e.setElementCursor(r),e.setBorderBlocks(t,r)}}))}}},{key:\"setBorderBlocks\",value:function(e,t){var r=this;Object.values(e).forEach((function(n){var o=n.querySelector(\".ce-block__content\");n!==t?(o.style.removeProperty(\"border-top\"),o.style.removeProperty(\"border-bottom\")):Object.keys(e).find((function(r){return e[r]===t}))>r.startBlock?o.style.borderBottom=r.borderStyle||borderStyle:o.style.borderTop=r.borderStyle}))}},{key:\"setDropListener\",value:function(){var e=this;document.addEventListener(\"drop\",(function(t){var r=t.target;if(e.holder.contains(r)&&null!==e.startBlock){var n=e.getDropTarget(r);if(n){var o=n.querySelector(\".ce-block__content\");o.style.removeProperty(\"border-top\"),o.style.removeProperty(\"border-bottom\"),e.endBlock=e.getTargetPosition(n),e.moveBlocks()}}e.startBlock=null}))}},{key:\"getDropTarget\",value:function(e){return e.classList.contains(\"ce-block\")?e:e.closest(\".ce-block\")}},{key:\"getTargetPosition\",value:function(e){return Array.from(e.parentNode.children).indexOf(e)}},{key:\"isTheOnlyBlock\",value:function(){return 1===this.api.getBlocksCount()}},{key:\"moveBlocks\",value:function(){this.isTheOnlyBlock()||this.api.move(this.endBlock,this.startBlock)}}])&&e(r.prototype,n),o&&e(r,o),Object.defineProperty(r,\"prototype\",{writable:!1}),t}()})(),n.default})()}));","\n import API from \"!../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../node_modules/css-loader/dist/cjs.js!./custom.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../node_modules/css-loader/dist/cjs.js!./custom.css\";\n export default content && content.locals ? content.locals : undefined;\n","\"use strict\";\n\nvar stylesInDOM = [];\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n return result;\n}\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n identifiers.push(identifier);\n }\n return identifiers;\n}\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n return updater;\n}\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n var newLastIdentifiers = modulesToDom(newList, options);\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n var _index = getIndexByIdentifier(_identifier);\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n stylesInDOM.splice(_index, 1);\n }\n }\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n\n/* istanbul ignore next */\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target);\n\n // Special case to return head of iframe instead of iframe itself\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n memo[target] = styleTarget;\n }\n return memo[target];\n}\n\n/* istanbul ignore next */\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n target.appendChild(style);\n}\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n var needLayer = typeof obj.layer !== \"undefined\";\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n css += obj.css;\n if (needLayer) {\n css += \"}\";\n }\n if (obj.media) {\n css += \"}\";\n }\n if (obj.supports) {\n css += \"}\";\n }\n var sourceMap = obj.sourceMap;\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n }\n\n // For old IE\n /* istanbul ignore if */\n options.styleTagTransform(css, styleElement, options.options);\n}\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n styleElement.parentNode.removeChild(styleElement);\n}\n\n/* istanbul ignore next */\nfunction domAPI(options) {\n if (typeof document === \"undefined\") {\n return {\n update: function update() {},\n remove: function remove() {}\n };\n }\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css;\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild);\n }\n styleElement.appendChild(document.createTextNode(css));\n }\n}\nmodule.exports = styleTagTransform;","import EditorDragDrop from \"editorjs-drag-drop\";\r\nimport EditorJS from \"@editorjs/editorjs\";\r\n\r\n/**\r\n * Custom subclass that fixes a bug with drag/drop when only one block.\r\n */\r\nexport class DragDrop extends EditorDragDrop {\r\n constructor(editor: EditorJS) {\r\n super(editor);\r\n\r\n this.setDragEndListener();\r\n }\r\n\r\n /**\r\n * Sets the drag end events listener. This clears our drag operation\r\n * so we don't fire during an external drag even (like an image being\r\n * dragged into the editor).\r\n */\r\n protected setDragEndListener() {\r\n if (!this.readOnly) {\r\n const settingsButton = this.holder.querySelector('.ce-toolbar__settings-btn');\r\n\r\n settingsButton!.setAttribute('draggable', 'true');\r\n settingsButton!.addEventListener('dragend', () => {\r\n this.startBlock = null;\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Gets the real drop target element.\r\n * \r\n * @param target The target of the drop operation.\r\n * @returns The real drop target or null if invalid.\r\n */\r\n protected getDropTarget(target: HTMLElement) {\r\n const block = super.getDropTarget(target);\r\n\r\n /* Bug in editor.js when trying to move block when there is only one\r\n * block. */\r\n if (block !== null && super.getTargetPosition(block) === this.startBlock) {\r\n return null;\r\n }\r\n\r\n return block;\r\n }\r\n\r\n /**\r\n * Moves the dragged element to the drop position.\r\n *\r\n * @see {@link https://editorjs.io/blocks#move}\r\n */\r\n protected moveBlocks() {\r\n /* Ensure this drop operation is happening for our drag operation. */\r\n if (this.startBlock != null && this.endBlock != null) {\r\n super.moveBlocks();\r\n }\r\n }\r\n}\r\n","import EditorJS from \"@editorjs/editorjs\";\r\nimport { DragDrop as EditorDragDrop } from \"./dragdrop\";\r\nimport \"./custom.css\";\r\n\r\nexport { EditorJS, EditorDragDrop }\r\n","var Ot = typeof globalThis < \"u\" ? globalThis : typeof window < \"u\" ? window : typeof global < \"u\" ? global : typeof self < \"u\" ? self : {};\nfunction xe(s) {\n return s && s.__esModule && Object.prototype.hasOwnProperty.call(s, \"default\") ? s.default : s;\n}\nfunction Be() {\n}\nObject.assign(Be, {\n default: Be,\n register: Be,\n revert: function() {\n },\n __esModule: !0\n});\nElement.prototype.matches || (Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function(s) {\n const e = (this.document || this.ownerDocument).querySelectorAll(s);\n let t = e.length;\n for (; --t >= 0 && e.item(t) !== this; )\n ;\n return t > -1;\n});\nElement.prototype.closest || (Element.prototype.closest = function(s) {\n let e = this;\n if (!document.documentElement.contains(e))\n return null;\n do {\n if (e.matches(s))\n return e;\n e = e.parentElement || e.parentNode;\n } while (e !== null);\n return null;\n});\nElement.prototype.prepend || (Element.prototype.prepend = function(e) {\n const t = document.createDocumentFragment();\n Array.isArray(e) || (e = [e]), e.forEach((o) => {\n const i = o instanceof Node;\n t.appendChild(i ? o : document.createTextNode(o));\n }), this.insertBefore(t, this.firstChild);\n});\nElement.prototype.scrollIntoViewIfNeeded || (Element.prototype.scrollIntoViewIfNeeded = function(s) {\n s = arguments.length === 0 ? !0 : !!s;\n const e = this.parentNode, t = window.getComputedStyle(e, null), o = parseInt(t.getPropertyValue(\"border-top-width\")), i = parseInt(t.getPropertyValue(\"border-left-width\")), n = this.offsetTop - e.offsetTop < e.scrollTop, r = this.offsetTop - e.offsetTop + this.clientHeight - o > e.scrollTop + e.clientHeight, a = this.offsetLeft - e.offsetLeft < e.scrollLeft, l = this.offsetLeft - e.offsetLeft + this.clientWidth - i > e.scrollLeft + e.clientWidth, c = n && !r;\n (n || r) && s && (e.scrollTop = this.offsetTop - e.offsetTop - e.clientHeight / 2 - o + this.clientHeight / 2), (a || l) && s && (e.scrollLeft = this.offsetLeft - e.offsetLeft - e.clientWidth / 2 - i + this.clientWidth / 2), (n || r || a || l) && !s && this.scrollIntoView(c);\n});\nwindow.requestIdleCallback = window.requestIdleCallback || function(s) {\n const e = Date.now();\n return setTimeout(function() {\n s({\n didTimeout: !1,\n timeRemaining: function() {\n return Math.max(0, 50 - (Date.now() - e));\n }\n });\n }, 1);\n};\nwindow.cancelIdleCallback = window.cancelIdleCallback || function(s) {\n clearTimeout(s);\n};\nlet At = (s = 21) => crypto.getRandomValues(new Uint8Array(s)).reduce((e, t) => (t &= 63, t < 36 ? e += t.toString(36) : t < 62 ? e += (t - 26).toString(36).toUpperCase() : t > 62 ? e += \"-\" : e += \"_\", e), \"\");\nvar it = /* @__PURE__ */ ((s) => (s.VERBOSE = \"VERBOSE\", s.INFO = \"INFO\", s.WARN = \"WARN\", s.ERROR = \"ERROR\", s))(it || {});\nconst B = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n SHIFT: 16,\n CTRL: 17,\n ALT: 18,\n ESC: 27,\n SPACE: 32,\n LEFT: 37,\n UP: 38,\n DOWN: 40,\n RIGHT: 39,\n DELETE: 46,\n META: 91\n}, _t = {\n LEFT: 0,\n WHEEL: 1,\n RIGHT: 2,\n BACKWARD: 3,\n FORWARD: 4\n};\nfunction be(s, e, t = \"log\", o, i = \"color: inherit\") {\n if (!(\"console\" in window) || !window.console[t])\n return;\n const n = [\"info\", \"log\", \"warn\", \"error\"].includes(t), r = [];\n switch (be.logLevel) {\n case \"ERROR\":\n if (t !== \"error\")\n return;\n break;\n case \"WARN\":\n if (![\"error\", \"warn\"].includes(t))\n return;\n break;\n case \"INFO\":\n if (!n || s)\n return;\n break;\n }\n o && r.push(o);\n const a = \"Editor.js 2.28.0\", l = `line-height: 1em;\n color: #006FEA;\n display: inline-block;\n font-size: 11px;\n line-height: 1em;\n background-color: #fff;\n padding: 4px 9px;\n border-radius: 30px;\n border: 1px solid rgba(56, 138, 229, 0.16);\n margin: 4px 5px 4px 0;`;\n s && (n ? (r.unshift(l, i), e = `%c${a}%c ${e}`) : e = `( ${a} )${e}`);\n try {\n n ? o ? console[t](`${e} %o`, ...r) : console[t](e, ...r) : console[t](e);\n } catch {\n }\n}\nbe.logLevel = \"VERBOSE\";\nfunction Nt(s) {\n be.logLevel = s;\n}\nconst L = be.bind(window, !1), K = be.bind(window, !0);\nfunction oe(s) {\n return Object.prototype.toString.call(s).match(/\\s([a-zA-Z]+)/)[1].toLowerCase();\n}\nfunction D(s) {\n return oe(s) === \"function\" || oe(s) === \"asyncfunction\";\n}\nfunction z(s) {\n return oe(s) === \"object\";\n}\nfunction J(s) {\n return oe(s) === \"string\";\n}\nfunction Rt(s) {\n return oe(s) === \"boolean\";\n}\nfunction qe(s) {\n return oe(s) === \"number\";\n}\nfunction Ze(s) {\n return oe(s) === \"undefined\";\n}\nfunction V(s) {\n return s ? Object.keys(s).length === 0 && s.constructor === Object : !0;\n}\nfunction nt(s) {\n return s > 47 && s < 58 || // number keys\n s === 32 || s === 13 || // Space bar & return key(s)\n s === 229 || // processing key input for certain languages — Chinese, Japanese, etc.\n s > 64 && s < 91 || // letter keys\n s > 95 && s < 112 || // Numpad keys\n s > 185 && s < 193 || // ;=,-./` (in order)\n s > 218 && s < 223;\n}\nasync function Dt(s, e = () => {\n}, t = () => {\n}) {\n async function o(i, n, r) {\n try {\n await i.function(i.data), await n(Ze(i.data) ? {} : i.data);\n } catch {\n r(Ze(i.data) ? {} : i.data);\n }\n }\n return s.reduce(async (i, n) => (await i, o(n, e, t)), Promise.resolve());\n}\nfunction st(s) {\n return Array.prototype.slice.call(s);\n}\nfunction re(s, e) {\n return function() {\n const t = this, o = arguments;\n window.setTimeout(() => s.apply(t, o), e);\n };\n}\nfunction Pt(s) {\n return s.name.split(\".\").pop();\n}\nfunction Ft(s) {\n return /^[-\\w]+\\/([-+\\w]+|\\*)$/.test(s);\n}\nfunction Ht(s, e, t) {\n let o;\n return (...i) => {\n const n = this, r = () => {\n o = null, t || s.apply(n, i);\n }, a = t && !o;\n window.clearTimeout(o), o = window.setTimeout(r, e), a && s.apply(n, i);\n };\n}\nfunction Ce(s, e, t = void 0) {\n let o, i, n, r = null, a = 0;\n t || (t = {});\n const l = function() {\n a = t.leading === !1 ? 0 : Date.now(), r = null, n = s.apply(o, i), r || (o = i = null);\n };\n return function() {\n const c = Date.now();\n !a && t.leading === !1 && (a = c);\n const u = e - (c - a);\n return o = this, i = arguments, u <= 0 || u > e ? (r && (clearTimeout(r), r = null), a = c, n = s.apply(o, i), r || (o = i = null)) : !r && t.trailing !== !1 && (r = setTimeout(l, u)), n;\n };\n}\nfunction jt() {\n const s = {\n win: !1,\n mac: !1,\n x11: !1,\n linux: !1\n }, e = Object.keys(s).find((t) => window.navigator.appVersion.toLowerCase().indexOf(t) !== -1);\n return e && (s[e] = !0), s;\n}\nfunction ae(s) {\n return s[0].toUpperCase() + s.slice(1);\n}\nfunction Se(s, ...e) {\n if (!e.length)\n return s;\n const t = e.shift();\n if (z(s) && z(t))\n for (const o in t)\n z(t[o]) ? (s[o] || Object.assign(s, { [o]: {} }), Se(s[o], t[o])) : Object.assign(s, { [o]: t[o] });\n return Se(s, ...e);\n}\nfunction Re(s) {\n const e = jt();\n return s = s.replace(/shift/gi, \"⇧\").replace(/backspace/gi, \"⌫\").replace(/enter/gi, \"⏎\").replace(/up/gi, \"↑\").replace(/left/gi, \"→\").replace(/down/gi, \"↓\").replace(/right/gi, \"←\").replace(/escape/gi, \"⎋\").replace(/insert/gi, \"Ins\").replace(/delete/gi, \"␡\").replace(/\\+/gi, \" + \"), e.mac ? s = s.replace(/ctrl|cmd/gi, \"⌘\").replace(/alt/gi, \"⌥\") : s = s.replace(/cmd/gi, \"Ctrl\").replace(/windows/gi, \"WIN\"), s;\n}\nfunction zt(s) {\n try {\n return new URL(s).href;\n } catch {\n }\n return s.substring(0, 2) === \"//\" ? window.location.protocol + s : window.location.origin + s;\n}\nfunction Ut() {\n return At(10);\n}\nfunction $t(s) {\n window.open(s, \"_blank\");\n}\nfunction Wt(s = \"\") {\n return `${s}${Math.floor(Math.random() * 1e8).toString(16)}`;\n}\nfunction Ie(s, e, t) {\n const o = `«${e}» is deprecated and will be removed in the next major release. Please use the «${t}» instead.`;\n s && K(o, \"warn\");\n}\nfunction ce(s, e, t) {\n const o = t.value ? \"value\" : \"get\", i = t[o], n = `#${e}Cache`;\n if (t[o] = function(...r) {\n return this[n] === void 0 && (this[n] = i.apply(this, ...r)), this[n];\n }, o === \"get\" && t.set) {\n const r = t.set;\n t.set = function(a) {\n delete s[n], r.apply(this, a);\n };\n }\n return t;\n}\nconst rt = 650;\nfunction te() {\n return window.matchMedia(`(max-width: ${rt}px)`).matches;\n}\nconst Ge = typeof window < \"u\" && window.navigator && window.navigator.platform && (/iP(ad|hone|od)/.test(window.navigator.platform) || window.navigator.platform === \"MacIntel\" && window.navigator.maxTouchPoints > 1);\nfunction Yt(s, e) {\n const t = Array.isArray(s) || z(s), o = Array.isArray(e) || z(e);\n return t || o ? JSON.stringify(s) === JSON.stringify(e) : s === e;\n}\nclass d {\n /**\n * Check if passed tag has no closed tag\n *\n * @param {HTMLElement} tag - element to check\n * @returns {boolean}\n */\n static isSingleTag(e) {\n return e.tagName && [\n \"AREA\",\n \"BASE\",\n \"BR\",\n \"COL\",\n \"COMMAND\",\n \"EMBED\",\n \"HR\",\n \"IMG\",\n \"INPUT\",\n \"KEYGEN\",\n \"LINK\",\n \"META\",\n \"PARAM\",\n \"SOURCE\",\n \"TRACK\",\n \"WBR\"\n ].includes(e.tagName);\n }\n /**\n * Check if element is BR or WBR\n *\n * @param {HTMLElement} element - element to check\n * @returns {boolean}\n */\n static isLineBreakTag(e) {\n return e && e.tagName && [\n \"BR\",\n \"WBR\"\n ].includes(e.tagName);\n }\n /**\n * Helper for making Elements with class name and attributes\n *\n * @param {string} tagName - new Element tag name\n * @param {string[]|string} [classNames] - list or name of CSS class name(s)\n * @param {object} [attributes] - any attributes\n * @returns {HTMLElement}\n */\n static make(e, t = null, o = {}) {\n const i = document.createElement(e);\n Array.isArray(t) ? i.classList.add(...t) : t && i.classList.add(t);\n for (const n in o)\n Object.prototype.hasOwnProperty.call(o, n) && (i[n] = o[n]);\n return i;\n }\n /**\n * Creates Text Node with the passed content\n *\n * @param {string} content - text content\n * @returns {Text}\n */\n static text(e) {\n return document.createTextNode(e);\n }\n /**\n * Append one or several elements to the parent\n *\n * @param {Element|DocumentFragment} parent - where to append\n * @param {Element|Element[]|DocumentFragment|Text|Text[]} elements - element or elements list\n */\n static append(e, t) {\n Array.isArray(t) ? t.forEach((o) => e.appendChild(o)) : e.appendChild(t);\n }\n /**\n * Append element or a couple to the beginning of the parent elements\n *\n * @param {Element} parent - where to append\n * @param {Element|Element[]} elements - element or elements list\n */\n static prepend(e, t) {\n Array.isArray(t) ? (t = t.reverse(), t.forEach((o) => e.prepend(o))) : e.prepend(t);\n }\n /**\n * Swap two elements in parent\n *\n * @param {HTMLElement} el1 - from\n * @param {HTMLElement} el2 - to\n * @deprecated\n */\n static swap(e, t) {\n const o = document.createElement(\"div\"), i = e.parentNode;\n i.insertBefore(o, e), i.insertBefore(e, t), i.insertBefore(t, o), i.removeChild(o);\n }\n /**\n * Selector Decorator\n *\n * Returns first match\n *\n * @param {Element} el - element we searching inside. Default - DOM Document\n * @param {string} selector - searching string\n * @returns {Element}\n */\n static find(e = document, t) {\n return e.querySelector(t);\n }\n /**\n * Get Element by Id\n *\n * @param {string} id - id to find\n * @returns {HTMLElement | null}\n */\n static get(e) {\n return document.getElementById(e);\n }\n /**\n * Selector Decorator.\n *\n * Returns all matches\n *\n * @param {Element|Document} el - element we searching inside. Default - DOM Document\n * @param {string} selector - searching string\n * @returns {NodeList}\n */\n static findAll(e = document, t) {\n return e.querySelectorAll(t);\n }\n /**\n * Returns CSS selector for all text inputs\n */\n static get allInputsSelector() {\n return \"[contenteditable=true], textarea, input:not([type]), \" + [\"text\", \"password\", \"email\", \"number\", \"search\", \"tel\", \"url\"].map((t) => `input[type=\"${t}\"]`).join(\", \");\n }\n /**\n * Find all contenteditable, textarea and editable input elements passed holder contains\n *\n * @param holder - element where to find inputs\n */\n static findAllInputs(e) {\n return st(e.querySelectorAll(d.allInputsSelector)).reduce((t, o) => d.isNativeInput(o) || d.containsOnlyInlineElements(o) ? [...t, o] : [...t, ...d.getDeepestBlockElements(o)], []);\n }\n /**\n * Search for deepest node which is Leaf.\n * Leaf is the vertex that doesn't have any child nodes\n *\n * @description Method recursively goes throw the all Node until it finds the Leaf\n * @param {Node} node - root Node. From this vertex we start Deep-first search\n * {@link https://en.wikipedia.org/wiki/Depth-first_search}\n * @param {boolean} [atLast] - find last text node\n * @returns {Node} - it can be text Node or Element Node, so that caret will able to work with it\n */\n static getDeepestNode(e, t = !1) {\n const o = t ? \"lastChild\" : \"firstChild\", i = t ? \"previousSibling\" : \"nextSibling\";\n if (e && e.nodeType === Node.ELEMENT_NODE && e[o]) {\n let n = e[o];\n if (d.isSingleTag(n) && !d.isNativeInput(n) && !d.isLineBreakTag(n))\n if (n[i])\n n = n[i];\n else if (n.parentNode[i])\n n = n.parentNode[i];\n else\n return n.parentNode;\n return this.getDeepestNode(n, t);\n }\n return e;\n }\n /**\n * Check if object is DOM node\n *\n * @param {*} node - object to check\n * @returns {boolean}\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static isElement(e) {\n return qe(e) ? !1 : e && e.nodeType && e.nodeType === Node.ELEMENT_NODE;\n }\n /**\n * Check if object is DocumentFragment node\n *\n * @param {object} node - object to check\n * @returns {boolean}\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static isFragment(e) {\n return qe(e) ? !1 : e && e.nodeType && e.nodeType === Node.DOCUMENT_FRAGMENT_NODE;\n }\n /**\n * Check if passed element is contenteditable\n *\n * @param {HTMLElement} element - html element to check\n * @returns {boolean}\n */\n static isContentEditable(e) {\n return e.contentEditable === \"true\";\n }\n /**\n * Checks target if it is native input\n *\n * @param {*} target - HTML element or string\n * @returns {boolean}\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static isNativeInput(e) {\n const t = [\n \"INPUT\",\n \"TEXTAREA\"\n ];\n return e && e.tagName ? t.includes(e.tagName) : !1;\n }\n /**\n * Checks if we can set caret\n *\n * @param {HTMLElement} target - target to check\n * @returns {boolean}\n */\n static canSetCaret(e) {\n let t = !0;\n if (d.isNativeInput(e))\n switch (e.type) {\n case \"file\":\n case \"checkbox\":\n case \"radio\":\n case \"hidden\":\n case \"submit\":\n case \"button\":\n case \"image\":\n case \"reset\":\n t = !1;\n break;\n }\n else\n t = d.isContentEditable(e);\n return t;\n }\n /**\n * Checks node if it is empty\n *\n * @description Method checks simple Node without any childs for emptiness\n * If you have Node with 2 or more children id depth, you better use {@link Dom#isEmpty} method\n * @param {Node} node - node to check\n * @returns {boolean} true if it is empty\n */\n static isNodeEmpty(e) {\n let t;\n return this.isSingleTag(e) && !this.isLineBreakTag(e) ? !1 : (this.isElement(e) && this.isNativeInput(e) ? t = e.value : t = e.textContent.replace(\"​\", \"\"), t.trim().length === 0);\n }\n /**\n * checks node if it is doesn't have any child nodes\n *\n * @param {Node} node - node to check\n * @returns {boolean}\n */\n static isLeaf(e) {\n return e ? e.childNodes.length === 0 : !1;\n }\n /**\n * breadth-first search (BFS)\n * {@link https://en.wikipedia.org/wiki/Breadth-first_search}\n *\n * @description Pushes to stack all DOM leafs and checks for emptiness\n * @param {Node} node - node to check\n * @returns {boolean}\n */\n static isEmpty(e) {\n e.normalize();\n const t = [e];\n for (; t.length > 0; )\n if (e = t.shift(), !!e) {\n if (this.isLeaf(e) && !this.isNodeEmpty(e))\n return !1;\n e.childNodes && t.push(...Array.from(e.childNodes));\n }\n return !0;\n }\n /**\n * Check if string contains html elements\n *\n * @param {string} str - string to check\n * @returns {boolean}\n */\n static isHTMLString(e) {\n const t = d.make(\"div\");\n return t.innerHTML = e, t.childElementCount > 0;\n }\n /**\n * Return length of node`s text content\n *\n * @param {Node} node - node with content\n * @returns {number}\n */\n static getContentLength(e) {\n return d.isNativeInput(e) ? e.value.length : e.nodeType === Node.TEXT_NODE ? e.length : e.textContent.length;\n }\n /**\n * Return array of names of block html elements\n *\n * @returns {string[]}\n */\n static get blockElements() {\n return [\n \"address\",\n \"article\",\n \"aside\",\n \"blockquote\",\n \"canvas\",\n \"div\",\n \"dl\",\n \"dt\",\n \"fieldset\",\n \"figcaption\",\n \"figure\",\n \"footer\",\n \"form\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"header\",\n \"hgroup\",\n \"hr\",\n \"li\",\n \"main\",\n \"nav\",\n \"noscript\",\n \"ol\",\n \"output\",\n \"p\",\n \"pre\",\n \"ruby\",\n \"section\",\n \"table\",\n \"tbody\",\n \"thead\",\n \"tr\",\n \"tfoot\",\n \"ul\",\n \"video\"\n ];\n }\n /**\n * Check if passed content includes only inline elements\n *\n * @param {string|HTMLElement} data - element or html string\n * @returns {boolean}\n */\n static containsOnlyInlineElements(e) {\n let t;\n J(e) ? (t = document.createElement(\"div\"), t.innerHTML = e) : t = e;\n const o = (i) => !d.blockElements.includes(i.tagName.toLowerCase()) && Array.from(i.children).every(o);\n return Array.from(t.children).every(o);\n }\n /**\n * Find and return all block elements in the passed parent (including subtree)\n *\n * @param {HTMLElement} parent - root element\n * @returns {HTMLElement[]}\n */\n static getDeepestBlockElements(e) {\n return d.containsOnlyInlineElements(e) ? [e] : Array.from(e.children).reduce((t, o) => [...t, ...d.getDeepestBlockElements(o)], []);\n }\n /**\n * Helper for get holder from {string} or return HTMLElement\n *\n * @param {string | HTMLElement} element - holder's id or holder's HTML Element\n * @returns {HTMLElement}\n */\n static getHolder(e) {\n return J(e) ? document.getElementById(e) : e;\n }\n /**\n * Returns true if element is anchor (is A tag)\n *\n * @param {Element} element - element to check\n * @returns {boolean}\n */\n static isAnchor(e) {\n return e.tagName.toLowerCase() === \"a\";\n }\n /**\n * Return element's offset related to the document\n *\n * @todo handle case when editor initialized in scrollable popup\n * @param el - element to compute offset\n */\n static offset(e) {\n const t = e.getBoundingClientRect(), o = window.pageXOffset || document.documentElement.scrollLeft, i = window.pageYOffset || document.documentElement.scrollTop, n = t.top + i, r = t.left + o;\n return {\n top: n,\n left: r,\n bottom: n + t.height,\n right: r + t.width\n };\n }\n}\nconst Kt = {\n blockTunes: {\n toggler: {\n \"Click to tune\": \"\",\n \"or drag to move\": \"\"\n }\n },\n inlineToolbar: {\n converter: {\n \"Convert to\": \"\"\n }\n },\n toolbar: {\n toolbox: {\n Add: \"\"\n }\n },\n popover: {\n Filter: \"\",\n \"Nothing found\": \"\"\n }\n}, Xt = {\n Text: \"\",\n Link: \"\",\n Bold: \"\",\n Italic: \"\"\n}, Vt = {\n link: {\n \"Add a link\": \"\"\n },\n stub: {\n \"The block can not be displayed correctly.\": \"\"\n }\n}, qt = {\n delete: {\n Delete: \"\",\n \"Click to delete\": \"\"\n },\n moveUp: {\n \"Move up\": \"\"\n },\n moveDown: {\n \"Move down\": \"\"\n }\n}, at = {\n ui: Kt,\n toolNames: Xt,\n tools: Vt,\n blockTunes: qt\n}, ie = class {\n /**\n * Type-safe translation for internal UI texts:\n * Perform translation of the string by namespace and a key\n *\n * @example I18n.ui(I18nInternalNS.ui.blockTunes.toggler, 'Click to tune')\n * @param internalNamespace - path to translated string in dictionary\n * @param dictKey - dictionary key. Better to use default locale original text\n */\n static ui(s, e) {\n return ie._t(s, e);\n }\n /**\n * Translate for external strings that is not presented in default dictionary.\n * For example, for user-specified tool names\n *\n * @param namespace - path to translated string in dictionary\n * @param dictKey - dictionary key. Better to use default locale original text\n */\n static t(s, e) {\n return ie._t(s, e);\n }\n /**\n * Adjust module for using external dictionary\n *\n * @param dictionary - new messages list to override default\n */\n static setDictionary(s) {\n ie.currentDictionary = s;\n }\n /**\n * Perform translation both for internal and external namespaces\n * If there is no translation found, returns passed key as a translated message\n *\n * @param namespace - path to translated string in dictionary\n * @param dictKey - dictionary key. Better to use default locale original text\n */\n static _t(s, e) {\n const t = ie.getNamespace(s);\n return !t || !t[e] ? e : t[e];\n }\n /**\n * Find messages section by namespace path\n *\n * @param namespace - path to section\n */\n static getNamespace(s) {\n return s.split(\".\").reduce((t, o) => !t || !Object.keys(t).length ? {} : t[o], ie.currentDictionary);\n }\n};\nlet $ = ie;\n$.currentDictionary = at;\nclass lt extends Error {\n}\nclass we {\n constructor() {\n this.subscribers = {};\n }\n /**\n * Subscribe any event on callback\n *\n * @param eventName - event name\n * @param callback - subscriber\n */\n on(e, t) {\n e in this.subscribers || (this.subscribers[e] = []), this.subscribers[e].push(t);\n }\n /**\n * Subscribe any event on callback. Callback will be called once and be removed from subscribers array after call.\n *\n * @param eventName - event name\n * @param callback - subscriber\n */\n once(e, t) {\n e in this.subscribers || (this.subscribers[e] = []);\n const o = (i) => {\n const n = t(i), r = this.subscribers[e].indexOf(o);\n return r !== -1 && this.subscribers[e].splice(r, 1), n;\n };\n this.subscribers[e].push(o);\n }\n /**\n * Emit callbacks with passed data\n *\n * @param eventName - event name\n * @param data - subscribers get this data when they were fired\n */\n emit(e, t) {\n V(this.subscribers) || !this.subscribers[e] || this.subscribers[e].reduce((o, i) => {\n const n = i(o);\n return n !== void 0 ? n : o;\n }, t);\n }\n /**\n * Unsubscribe callback from event\n *\n * @param eventName - event name\n * @param callback - event handler\n */\n off(e, t) {\n if (this.subscribers[e] === void 0) {\n console.warn(`EventDispatcher .off(): there is no subscribers for event \"${e.toString()}\". Probably, .off() called before .on()`);\n return;\n }\n for (let o = 0; o < this.subscribers[e].length; o++)\n if (this.subscribers[e][o] === t) {\n delete this.subscribers[e][o];\n break;\n }\n }\n /**\n * Destroyer\n * clears subscribers list\n */\n destroy() {\n this.subscribers = {};\n }\n}\nfunction ee(s) {\n Object.setPrototypeOf(this, {\n /**\n * Block id\n *\n * @returns {string}\n */\n get id() {\n return s.id;\n },\n /**\n * Tool name\n *\n * @returns {string}\n */\n get name() {\n return s.name;\n },\n /**\n * Tool config passed on Editor's initialization\n *\n * @returns {ToolConfig}\n */\n get config() {\n return s.config;\n },\n /**\n * .ce-block element, that wraps plugin contents\n *\n * @returns {HTMLElement}\n */\n get holder() {\n return s.holder;\n },\n /**\n * True if Block content is empty\n *\n * @returns {boolean}\n */\n get isEmpty() {\n return s.isEmpty;\n },\n /**\n * True if Block is selected with Cross-Block selection\n *\n * @returns {boolean}\n */\n get selected() {\n return s.selected;\n },\n /**\n * Set Block's stretch state\n *\n * @param {boolean} state — state to set\n */\n set stretched(t) {\n s.stretched = t;\n },\n /**\n * True if Block is stretched\n *\n * @returns {boolean}\n */\n get stretched() {\n return s.stretched;\n },\n /**\n * Call Tool method with errors handler under-the-hood\n *\n * @param {string} methodName - method to call\n * @param {object} param - object with parameters\n * @returns {unknown}\n */\n call(t, o) {\n return s.call(t, o);\n },\n /**\n * Save Block content\n *\n * @returns {Promise}\n */\n save() {\n return s.save();\n },\n /**\n * Validate Block data\n *\n * @param {BlockToolData} data - data to validate\n * @returns {Promise}\n */\n validate(t) {\n return s.validate(t);\n },\n /**\n * Allows to say Editor that Block was changed. Used to manually trigger Editor's 'onChange' callback\n * Can be useful for block changes invisible for editor core.\n */\n dispatchChange() {\n s.dispatchChange();\n }\n });\n}\nclass De {\n constructor() {\n this.allListeners = [];\n }\n /**\n * Assigns event listener on element and returns unique identifier\n *\n * @param {EventTarget} 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|AddEventListenerOptions} options - useCapture or {capture, passive, once}\n */\n on(e, t, o, i = !1) {\n const n = Wt(\"l\"), r = {\n id: n,\n element: e,\n eventType: t,\n handler: o,\n options: i\n };\n if (!this.findOne(e, t, o))\n return this.allListeners.push(r), e.addEventListener(t, o, i), n;\n }\n /**\n * Removes event listener from element\n *\n * @param {EventTarget} 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|AddEventListenerOptions} options - useCapture or {capture, passive, once}\n */\n off(e, t, o, i) {\n const n = this.findAll(e, t, o);\n n.forEach((r, a) => {\n const l = this.allListeners.indexOf(n[a]);\n l > -1 && (this.allListeners.splice(l, 1), r.element.removeEventListener(r.eventType, r.handler, r.options));\n });\n }\n /**\n * Removes listener by id\n *\n * @param {string} id - listener identifier\n */\n offById(e) {\n const t = this.findById(e);\n t && t.element.removeEventListener(t.eventType, t.handler, t.options);\n }\n /**\n * Finds and returns first listener by passed params\n *\n * @param {EventTarget} element - event target\n * @param {string} [eventType] - event type\n * @param {Function} [handler] - event handler\n * @returns {ListenerData|null}\n */\n findOne(e, t, o) {\n const i = this.findAll(e, t, o);\n return i.length > 0 ? i[0] : null;\n }\n /**\n * Return all stored listeners by passed params\n *\n * @param {EventTarget} element - event target\n * @param {string} eventType - event type\n * @param {Function} handler - event handler\n * @returns {ListenerData[]}\n */\n findAll(e, t, o) {\n let i;\n const n = e ? this.findByEventTarget(e) : [];\n return e && t && o ? i = n.filter((r) => r.eventType === t && r.handler === o) : e && t ? i = n.filter((r) => r.eventType === t) : i = n, i;\n }\n /**\n * Removes all listeners\n */\n removeAll() {\n this.allListeners.map((e) => {\n e.element.removeEventListener(e.eventType, e.handler, e.options);\n }), this.allListeners = [];\n }\n /**\n * Module cleanup on destruction\n */\n destroy() {\n this.removeAll();\n }\n /**\n * Search method: looks for listener by passed element\n *\n * @param {EventTarget} element - searching element\n * @returns {Array} listeners that found on element\n */\n findByEventTarget(e) {\n return this.allListeners.filter((t) => {\n if (t.element === e)\n return t;\n });\n }\n /**\n * Search method: looks for listener by passed event type\n *\n * @param {string} eventType - event type\n * @returns {ListenerData[]} listeners that found on element\n */\n findByType(e) {\n return this.allListeners.filter((t) => {\n if (t.eventType === e)\n return t;\n });\n }\n /**\n * Search method: looks for listener by passed handler\n *\n * @param {Function} handler - event handler\n * @returns {ListenerData[]} listeners that found on element\n */\n findByHandler(e) {\n return this.allListeners.filter((t) => {\n if (t.handler === e)\n return t;\n });\n }\n /**\n * Returns listener data found by id\n *\n * @param {string} id - listener identifier\n * @returns {ListenerData}\n */\n findById(e) {\n return this.allListeners.find((t) => t.id === e);\n }\n}\nclass C {\n /**\n * @class\n * @param options - Module options\n * @param options.config - Module config\n * @param options.eventsDispatcher - Common event bus\n */\n constructor({ config: e, eventsDispatcher: t }) {\n if (this.nodes = {}, this.listeners = new De(), this.readOnlyMutableListeners = {\n /**\n * Assigns event listener on DOM element and pushes into special array that might be removed\n *\n * @param {EventTarget} element - DOM Element\n * @param {string} eventType - Event name\n * @param {Function} handler - Event handler\n * @param {boolean|AddEventListenerOptions} options - Listening options\n */\n on: (o, i, n, r = !1) => {\n this.mutableListenerIds.push(\n this.listeners.on(o, i, n, r)\n );\n },\n /**\n * Clears all mutable listeners\n */\n clearAll: () => {\n for (const o of this.mutableListenerIds)\n this.listeners.offById(o);\n this.mutableListenerIds = [];\n }\n }, this.mutableListenerIds = [], new.target === C)\n throw new TypeError(\"Constructors for abstract class Module are not allowed.\");\n this.config = e, this.eventsDispatcher = t;\n }\n /**\n * Editor modules setter\n *\n * @param {EditorModules} Editor - Editor's Modules\n */\n set state(e) {\n this.Editor = e;\n }\n /**\n * Remove memorized nodes\n */\n removeAllNodes() {\n for (const e in this.nodes) {\n const t = this.nodes[e];\n t instanceof HTMLElement && t.remove();\n }\n }\n /**\n * Returns true if current direction is RTL (Right-To-Left)\n */\n get isRtl() {\n return this.config.i18n.direction === \"rtl\";\n }\n}\nclass m {\n constructor() {\n this.instance = null, this.selection = null, this.savedSelectionRange = null, this.isFakeBackgroundEnabled = !1, this.commandBackground = \"backColor\", this.commandRemoveFormat = \"removeFormat\";\n }\n /**\n * Editor styles\n *\n * @returns {{editorWrapper: string, editorZone: string}}\n */\n static get CSS() {\n return {\n editorWrapper: \"codex-editor\",\n editorZone: \"codex-editor__redactor\"\n };\n }\n /**\n * Returns selected anchor\n * {@link https://developer.mozilla.org/ru/docs/Web/API/Selection/anchorNode}\n *\n * @returns {Node|null}\n */\n static get anchorNode() {\n const e = window.getSelection();\n return e ? e.anchorNode : null;\n }\n /**\n * Returns selected anchor element\n *\n * @returns {Element|null}\n */\n static get anchorElement() {\n const e = window.getSelection();\n if (!e)\n return null;\n const t = e.anchorNode;\n return t ? d.isElement(t) ? t : t.parentElement : null;\n }\n /**\n * Returns selection offset according to the anchor node\n * {@link https://developer.mozilla.org/ru/docs/Web/API/Selection/anchorOffset}\n *\n * @returns {number|null}\n */\n static get anchorOffset() {\n const e = window.getSelection();\n return e ? e.anchorOffset : null;\n }\n /**\n * Is current selection range collapsed\n *\n * @returns {boolean|null}\n */\n static get isCollapsed() {\n const e = window.getSelection();\n return e ? e.isCollapsed : null;\n }\n /**\n * Check current selection if it is at Editor's zone\n *\n * @returns {boolean}\n */\n static get isAtEditor() {\n return this.isSelectionAtEditor(m.get());\n }\n /**\n * Check if passed selection is at Editor's zone\n *\n * @param selection - Selection object to check\n */\n static isSelectionAtEditor(e) {\n if (!e)\n return !1;\n let t = e.anchorNode || e.focusNode;\n t && t.nodeType === Node.TEXT_NODE && (t = t.parentNode);\n let o = null;\n return t && t instanceof Element && (o = t.closest(`.${m.CSS.editorZone}`)), o ? o.nodeType === Node.ELEMENT_NODE : !1;\n }\n /**\n * Check if passed range at Editor zone\n *\n * @param range - range to check\n */\n static isRangeAtEditor(e) {\n if (!e)\n return;\n let t = e.startContainer;\n t && t.nodeType === Node.TEXT_NODE && (t = t.parentNode);\n let o = null;\n return t && t instanceof Element && (o = t.closest(`.${m.CSS.editorZone}`)), o ? o.nodeType === Node.ELEMENT_NODE : !1;\n }\n /**\n * Methods return boolean that true if selection exists on the page\n */\n static get isSelectionExists() {\n return !!m.get().anchorNode;\n }\n /**\n * Return first range\n *\n * @returns {Range|null}\n */\n static get range() {\n return this.getRangeFromSelection(this.get());\n }\n /**\n * Returns range from passed Selection object\n *\n * @param selection - Selection object to get Range from\n */\n static getRangeFromSelection(e) {\n return e && e.rangeCount ? e.getRangeAt(0) : null;\n }\n /**\n * Calculates position and size of selected text\n *\n * @returns {DOMRect | ClientRect}\n */\n static get rect() {\n let e = document.selection, t, o = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n if (e && e.type !== \"Control\")\n return e = e, t = e.createRange(), o.x = t.boundingLeft, o.y = t.boundingTop, o.width = t.boundingWidth, o.height = t.boundingHeight, o;\n if (!window.getSelection)\n return L(\"Method window.getSelection is not supported\", \"warn\"), o;\n if (e = window.getSelection(), e.rangeCount === null || isNaN(e.rangeCount))\n return L(\"Method SelectionUtils.rangeCount is not supported\", \"warn\"), o;\n if (e.rangeCount === 0)\n return o;\n if (t = e.getRangeAt(0).cloneRange(), t.getBoundingClientRect && (o = t.getBoundingClientRect()), o.x === 0 && o.y === 0) {\n const i = document.createElement(\"span\");\n if (i.getBoundingClientRect) {\n i.appendChild(document.createTextNode(\"​\")), t.insertNode(i), o = i.getBoundingClientRect();\n const n = i.parentNode;\n n.removeChild(i), n.normalize();\n }\n }\n return o;\n }\n /**\n * Returns selected text as String\n *\n * @returns {string}\n */\n static get text() {\n return window.getSelection ? window.getSelection().toString() : \"\";\n }\n /**\n * Returns window SelectionUtils\n * {@link https://developer.mozilla.org/ru/docs/Web/API/Window/getSelection}\n *\n * @returns {Selection}\n */\n static get() {\n return window.getSelection();\n }\n /**\n * Set focus to contenteditable or native input element\n *\n * @param element - element where to set focus\n * @param offset - offset of cursor\n */\n static setCursor(e, t = 0) {\n const o = document.createRange(), i = window.getSelection();\n return d.isNativeInput(e) ? d.canSetCaret(e) ? (e.focus(), e.selectionStart = e.selectionEnd = t, e.getBoundingClientRect()) : void 0 : (o.setStart(e, t), o.setEnd(e, t), i.removeAllRanges(), i.addRange(o), o.getBoundingClientRect());\n }\n /**\n * Check if current range exists and belongs to container\n *\n * @param container - where range should be\n */\n static isRangeInsideContainer(e) {\n const t = m.range;\n return t === null ? !1 : e.contains(t.startContainer);\n }\n /**\n * Adds fake cursor to the current range\n */\n static addFakeCursor() {\n const e = m.range;\n if (e === null)\n return;\n const t = d.make(\"span\", \"codex-editor__fake-cursor\");\n t.dataset.mutationFree = \"true\", e.collapse(), e.insertNode(t);\n }\n /**\n * Check if passed element contains a fake cursor\n *\n * @param el - where to check\n */\n static isFakeCursorInsideContainer(e) {\n return d.find(e, \".codex-editor__fake-cursor\") !== null;\n }\n /**\n * Removes fake cursor from a container\n *\n * @param container - container to look for\n */\n static removeFakeCursor(e = document.body) {\n const t = d.find(e, \".codex-editor__fake-cursor\");\n t && t.remove();\n }\n /**\n * Removes fake background\n */\n removeFakeBackground() {\n this.isFakeBackgroundEnabled && (this.isFakeBackgroundEnabled = !1, document.execCommand(this.commandRemoveFormat));\n }\n /**\n * Sets fake background\n */\n setFakeBackground() {\n document.execCommand(this.commandBackground, !1, \"#a8d6ff\"), this.isFakeBackgroundEnabled = !0;\n }\n /**\n * Save SelectionUtils's range\n */\n save() {\n this.savedSelectionRange = m.range;\n }\n /**\n * Restore saved SelectionUtils's range\n */\n restore() {\n if (!this.savedSelectionRange)\n return;\n const e = window.getSelection();\n e.removeAllRanges(), e.addRange(this.savedSelectionRange);\n }\n /**\n * Clears saved selection\n */\n clearSaved() {\n this.savedSelectionRange = null;\n }\n /**\n * Collapse current selection\n */\n collapseToEnd() {\n const e = window.getSelection(), t = document.createRange();\n t.selectNodeContents(e.focusNode), t.collapse(!1), e.removeAllRanges(), e.addRange(t);\n }\n /**\n * Looks ahead to find passed tag from current selection\n *\n * @param {string} tagName - tag to found\n * @param {string} [className] - tag's class name\n * @param {number} [searchDepth] - count of tags that can be included. For better performance.\n * @returns {HTMLElement|null}\n */\n findParentTag(e, t, o = 10) {\n const i = window.getSelection();\n let n = null;\n return !i || !i.anchorNode || !i.focusNode ? null : ([\n /** the Node in which the selection begins */\n i.anchorNode,\n /** the Node in which the selection ends */\n i.focusNode\n ].forEach((a) => {\n let l = o;\n for (; l > 0 && a.parentNode && !(a.tagName === e && (n = a, t && a.classList && !a.classList.contains(t) && (n = null), n)); )\n a = a.parentNode, l--;\n }), n);\n }\n /**\n * Expands selection range to the passed parent node\n *\n * @param {HTMLElement} element - element which contents should be selected\n */\n expandToTag(e) {\n const t = window.getSelection();\n t.removeAllRanges();\n const o = document.createRange();\n o.selectNodeContents(e), t.addRange(o);\n }\n}\nfunction Zt(s, e) {\n const { type: t, target: o, addedNodes: i, removedNodes: n } = s;\n if (o === e)\n return !0;\n if ([\"characterData\", \"attributes\"].includes(t)) {\n const l = o.nodeType === Node.TEXT_NODE ? o.parentNode : o;\n return e.contains(l);\n }\n const r = Array.from(i).some((l) => e.contains(l)), a = Array.from(n).some((l) => e.contains(l));\n return r || a;\n}\nconst Me = \"redactor dom changed\", ct = \"block changed\", dt = \"fake cursor is about to be toggled\", ht = \"fake cursor have been set\";\nfunction Je(s, e) {\n return s.mergeable && s.name === e.name;\n}\nfunction Gt(s, e) {\n const t = e == null ? void 0 : e.export;\n return D(t) ? t(s) : J(t) ? s[t] : (t !== void 0 && L(\"Conversion «export» property must be a string or function. String means key of saved data object to export. Function should export processed string to export.\"), \"\");\n}\nfunction Jt(s, e) {\n const t = e == null ? void 0 : e.import;\n return D(t) ? t(s) : J(t) ? {\n [t]: s\n } : (t !== void 0 && L(\"Conversion «import» property must be a string or function. String means key of tool data to import. Function accepts a imported string and return composed tool data.\"), {});\n}\nvar q = /* @__PURE__ */ ((s) => (s.APPEND_CALLBACK = \"appendCallback\", s.RENDERED = \"rendered\", s.MOVED = \"moved\", s.UPDATED = \"updated\", s.REMOVED = \"removed\", s.ON_PASTE = \"onPaste\", s))(q || {});\nclass F extends we {\n /**\n * @param options - block constructor options\n * @param [options.id] - block's id. Will be generated if omitted.\n * @param options.data - Tool's initial data\n * @param options.tool — block's tool\n * @param options.api - Editor API module for pass it to the Block Tunes\n * @param options.readOnly - Read-Only flag\n * @param [eventBus] - Editor common event bus. Allows to subscribe on some Editor events. Could be omitted when \"virtual\" Block is created. See BlocksAPI@composeBlockData.\n */\n constructor({\n id: e = Ut(),\n data: t,\n tool: o,\n api: i,\n readOnly: n,\n tunesData: r\n }, a) {\n super(), this.cachedInputs = [], this.toolRenderedElement = null, this.tunesInstances = /* @__PURE__ */ new Map(), this.defaultTunesInstances = /* @__PURE__ */ new Map(), this.unavailableTunesData = {}, this.inputIndex = 0, this.editorEventBus = null, this.handleFocus = () => {\n this.dropInputsCache(), this.updateCurrentInput();\n }, this.didMutated = (l = void 0) => {\n const c = l === void 0, u = l instanceof InputEvent;\n !c && !u && this.detectToolRootChange(l);\n let h;\n c || u ? h = !0 : h = !(l.length > 0 && l.every((k) => {\n const { addedNodes: p, removedNodes: v, target: A } = k;\n return [\n ...Array.from(p),\n ...Array.from(v),\n A\n ].some((_) => d.isElement(_) ? _.dataset.mutationFree === \"true\" : !1);\n })), h && (this.dropInputsCache(), this.updateCurrentInput(), this.call(\n \"updated\"\n /* UPDATED */\n ), this.emit(\"didMutated\", this));\n }, this.name = o.name, this.id = e, this.settings = o.settings, this.config = o.settings.config || {}, this.api = i, this.editorEventBus = a || null, this.blockAPI = new ee(this), this.tool = o, this.toolInstance = o.create(t, this.blockAPI, n), this.tunes = o.tunes, this.composeTunes(r), this.holder = this.compose(), window.requestIdleCallback(() => {\n this.watchBlockMutations(), this.addInputEvents();\n });\n }\n /**\n * CSS classes for the Block\n *\n * @returns {{wrapper: string, content: string}}\n */\n static get CSS() {\n return {\n wrapper: \"ce-block\",\n wrapperStretched: \"ce-block--stretched\",\n content: \"ce-block__content\",\n focused: \"ce-block--focused\",\n selected: \"ce-block--selected\",\n dropTarget: \"ce-block--drop-target\"\n };\n }\n /**\n * Find and return all editable elements (contenteditable and native inputs) in the Tool HTML\n *\n * @returns {HTMLElement[]}\n */\n get inputs() {\n if (this.cachedInputs.length !== 0)\n return this.cachedInputs;\n const e = d.findAllInputs(this.holder);\n return this.inputIndex > e.length - 1 && (this.inputIndex = e.length - 1), this.cachedInputs = e, e;\n }\n /**\n * Return current Tool`s input\n *\n * @returns {HTMLElement}\n */\n get currentInput() {\n return this.inputs[this.inputIndex];\n }\n /**\n * Set input index to the passed element\n *\n * @param {HTMLElement | Node} element - HTML Element to set as current input\n */\n set currentInput(e) {\n const t = this.inputs.findIndex((o) => o === e || o.contains(e));\n t !== -1 && (this.inputIndex = t);\n }\n /**\n * Return first Tool`s input\n *\n * @returns {HTMLElement}\n */\n get firstInput() {\n return this.inputs[0];\n }\n /**\n * Return first Tool`s input\n *\n * @returns {HTMLElement}\n */\n get lastInput() {\n const e = this.inputs;\n return e[e.length - 1];\n }\n /**\n * Return next Tool`s input or undefined if it doesn't exist\n *\n * @returns {HTMLElement}\n */\n get nextInput() {\n return this.inputs[this.inputIndex + 1];\n }\n /**\n * Return previous Tool`s input or undefined if it doesn't exist\n *\n * @returns {HTMLElement}\n */\n get previousInput() {\n return this.inputs[this.inputIndex - 1];\n }\n /**\n * Get Block's JSON data\n *\n * @returns {object}\n */\n get data() {\n return this.save().then((e) => e && !V(e.data) ? e.data : {});\n }\n /**\n * Returns tool's sanitizer config\n *\n * @returns {object}\n */\n get sanitize() {\n return this.tool.sanitizeConfig;\n }\n /**\n * is block mergeable\n * We plugin have merge function then we call it mergeable\n *\n * @returns {boolean}\n */\n get mergeable() {\n return D(this.toolInstance.merge);\n }\n /**\n * Check block for emptiness\n *\n * @returns {boolean}\n */\n get isEmpty() {\n const e = d.isEmpty(this.pluginsContent), t = !this.hasMedia;\n return e && t;\n }\n /**\n * Check if block has a media content such as images, iframe and other\n *\n * @returns {boolean}\n */\n get hasMedia() {\n const e = [\n \"img\",\n \"iframe\",\n \"video\",\n \"audio\",\n \"source\",\n \"input\",\n \"textarea\",\n \"twitterwidget\"\n ];\n return !!this.holder.querySelector(e.join(\",\"));\n }\n /**\n * Set focused state\n *\n * @param {boolean} state - 'true' to select, 'false' to remove selection\n */\n set focused(e) {\n this.holder.classList.toggle(F.CSS.focused, e);\n }\n /**\n * Get Block's focused state\n */\n get focused() {\n return this.holder.classList.contains(F.CSS.focused);\n }\n /**\n * Set selected state\n * We don't need to mark Block as Selected when it is empty\n *\n * @param {boolean} state - 'true' to select, 'false' to remove selection\n */\n set selected(e) {\n var i, n;\n this.holder.classList.toggle(F.CSS.selected, e);\n const t = e === !0 && m.isRangeInsideContainer(this.holder), o = e === !1 && m.isFakeCursorInsideContainer(this.holder);\n (t || o) && ((i = this.editorEventBus) == null || i.emit(dt, { state: e }), t ? m.addFakeCursor() : m.removeFakeCursor(this.holder), (n = this.editorEventBus) == null || n.emit(ht, { state: e }));\n }\n /**\n * Returns True if it is Selected\n *\n * @returns {boolean}\n */\n get selected() {\n return this.holder.classList.contains(F.CSS.selected);\n }\n /**\n * Set stretched state\n *\n * @param {boolean} state - 'true' to enable, 'false' to disable stretched state\n */\n set stretched(e) {\n this.holder.classList.toggle(F.CSS.wrapperStretched, e);\n }\n /**\n * Return Block's stretched state\n *\n * @returns {boolean}\n */\n get stretched() {\n return this.holder.classList.contains(F.CSS.wrapperStretched);\n }\n /**\n * Toggle drop target state\n *\n * @param {boolean} state - 'true' if block is drop target, false otherwise\n */\n set dropTarget(e) {\n this.holder.classList.toggle(F.CSS.dropTarget, e);\n }\n /**\n * Returns Plugins content\n *\n * @returns {HTMLElement}\n */\n get pluginsContent() {\n return this.toolRenderedElement;\n }\n /**\n * Calls Tool's method\n *\n * Method checks tool property {MethodName}. Fires method with passes params If it is instance of Function\n *\n * @param {string} methodName - method to call\n * @param {object} params - method argument\n */\n call(e, t) {\n if (D(this.toolInstance[e])) {\n e === \"appendCallback\" && L(\n \"`appendCallback` hook is deprecated and will be removed in the next major release. Use `rendered` hook instead\",\n \"warn\"\n );\n try {\n this.toolInstance[e].call(this.toolInstance, t);\n } catch (o) {\n L(`Error during '${e}' call: ${o.message}`, \"error\");\n }\n }\n }\n /**\n * Call plugins merge method\n *\n * @param {BlockToolData} data - data to merge\n */\n async mergeWith(e) {\n await this.toolInstance.merge(e);\n }\n /**\n * Extracts data from Block\n * Groups Tool's save processing time\n *\n * @returns {object}\n */\n async save() {\n const e = await this.toolInstance.save(this.pluginsContent), t = this.unavailableTunesData;\n [\n ...this.tunesInstances.entries(),\n ...this.defaultTunesInstances.entries()\n ].forEach(([n, r]) => {\n if (D(r.save))\n try {\n t[n] = r.save();\n } catch (a) {\n L(`Tune ${r.constructor.name} save method throws an Error %o`, \"warn\", a);\n }\n });\n const o = window.performance.now();\n let i;\n return Promise.resolve(e).then((n) => (i = window.performance.now(), {\n id: this.id,\n tool: this.name,\n data: n,\n tunes: t,\n time: i - o\n })).catch((n) => {\n L(`Saving process for ${this.name} tool failed due to the ${n}`, \"log\", \"red\");\n });\n }\n /**\n * Uses Tool's validation method to check the correctness of output data\n * Tool's validation method is optional\n *\n * @description Method returns true|false whether data passed the validation or not\n * @param {BlockToolData} data - data to validate\n * @returns {Promise} valid\n */\n async validate(e) {\n let t = !0;\n return this.toolInstance.validate instanceof Function && (t = await this.toolInstance.validate(e)), t;\n }\n /**\n * Returns data to render in tunes menu.\n * Splits block tunes settings into 2 groups: popover items and custom html.\n */\n getTunes() {\n const e = document.createElement(\"div\"), t = [], o = typeof this.toolInstance.renderSettings == \"function\" ? this.toolInstance.renderSettings() : [], i = [\n ...this.tunesInstances.values(),\n ...this.defaultTunesInstances.values()\n ].map((n) => n.render());\n return [o, i].flat().forEach((n) => {\n d.isElement(n) ? e.appendChild(n) : Array.isArray(n) ? t.push(...n) : t.push(n);\n }), [t, e];\n }\n /**\n * Update current input index with selection anchor node\n */\n updateCurrentInput() {\n this.currentInput = d.isNativeInput(document.activeElement) || !m.anchorNode ? document.activeElement : m.anchorNode;\n }\n /**\n * Allows to say Editor that Block was changed. Used to manually trigger Editor's 'onChange' callback\n * Can be useful for block changes invisible for editor core.\n */\n dispatchChange() {\n this.didMutated();\n }\n /**\n * Call Tool instance destroy method\n */\n destroy() {\n this.unwatchBlockMutations(), this.removeInputEvents(), super.destroy(), D(this.toolInstance.destroy) && this.toolInstance.destroy();\n }\n /**\n * Tool could specify several entries to be displayed at the Toolbox (for example, \"Heading 1\", \"Heading 2\", \"Heading 3\")\n * This method returns the entry that is related to the Block (depended on the Block data)\n */\n async getActiveToolboxEntry() {\n const e = this.tool.toolbox;\n if (e.length === 1)\n return Promise.resolve(this.tool.toolbox[0]);\n const t = await this.data;\n return e.find((i) => Object.entries(i.data).some(([n, r]) => t[n] && Yt(t[n], r)));\n }\n /**\n * Exports Block data as string using conversion config\n */\n async exportDataAsString() {\n const e = await this.data;\n return Gt(e, this.tool.conversionConfig);\n }\n /**\n * Make default Block wrappers and put Tool`s content there\n *\n * @returns {HTMLDivElement}\n */\n compose() {\n const e = d.make(\"div\", F.CSS.wrapper), t = d.make(\"div\", F.CSS.content), o = this.toolInstance.render();\n e.dataset.id = this.id, this.toolRenderedElement = o, t.appendChild(this.toolRenderedElement);\n let i = t;\n return [...this.tunesInstances.values(), ...this.defaultTunesInstances.values()].forEach((n) => {\n if (D(n.wrap))\n try {\n i = n.wrap(i);\n } catch (r) {\n L(`Tune ${n.constructor.name} wrap method throws an Error %o`, \"warn\", r);\n }\n }), e.appendChild(i), e;\n }\n /**\n * Instantiate Block Tunes\n *\n * @param tunesData - current Block tunes data\n * @private\n */\n composeTunes(e) {\n Array.from(this.tunes.values()).forEach((t) => {\n (t.isInternal ? this.defaultTunesInstances : this.tunesInstances).set(t.name, t.create(e[t.name], this.blockAPI));\n }), Object.entries(e).forEach(([t, o]) => {\n this.tunesInstances.has(t) || (this.unavailableTunesData[t] = o);\n });\n }\n /**\n * Adds focus event listeners to all inputs and contenteditable\n */\n addInputEvents() {\n this.inputs.forEach((e) => {\n e.addEventListener(\"focus\", this.handleFocus), d.isNativeInput(e) && e.addEventListener(\"input\", this.didMutated);\n });\n }\n /**\n * removes focus event listeners from all inputs and contenteditable\n */\n removeInputEvents() {\n this.inputs.forEach((e) => {\n e.removeEventListener(\"focus\", this.handleFocus), d.isNativeInput(e) && e.removeEventListener(\"input\", this.didMutated);\n });\n }\n /**\n * Listen common editor Dom Changed event and detect mutations related to the Block\n */\n watchBlockMutations() {\n var e;\n this.redactorDomChangedCallback = (t) => {\n const { mutations: o } = t;\n o.some((n) => Zt(n, this.toolRenderedElement)) && this.didMutated(o);\n }, (e = this.editorEventBus) == null || e.on(Me, this.redactorDomChangedCallback);\n }\n /**\n * Remove redactor dom change event listener\n */\n unwatchBlockMutations() {\n var e;\n (e = this.editorEventBus) == null || e.off(Me, this.redactorDomChangedCallback);\n }\n /**\n * Sometimes Tool can replace own main element, for example H2 -> H4 or UL -> OL\n * We need to detect such changes and update a link to tools main element with the new one\n *\n * @param mutations - records of block content mutations\n */\n detectToolRootChange(e) {\n e.forEach((t) => {\n if (Array.from(t.removedNodes).includes(this.toolRenderedElement)) {\n const i = t.addedNodes[t.addedNodes.length - 1];\n this.toolRenderedElement = i;\n }\n });\n }\n /**\n * Clears inputs cached value\n */\n dropInputsCache() {\n this.cachedInputs = [];\n }\n}\nclass Qt extends C {\n constructor() {\n super(...arguments), this.insert = (e = this.config.defaultBlock, t = {}, o = {}, i, n, r, a) => {\n const l = this.Editor.BlockManager.insert({\n id: a,\n tool: e,\n data: t,\n index: i,\n needToFocus: n,\n replace: r\n });\n return new ee(l);\n }, this.composeBlockData = async (e) => {\n const t = this.Editor.Tools.blockTools.get(e);\n return new F({\n tool: t,\n api: this.Editor.API,\n readOnly: !0,\n data: {},\n tunesData: {}\n }).data;\n }, this.update = async (e, t) => {\n const { BlockManager: o } = this.Editor, i = o.getBlockById(e);\n if (i === void 0)\n throw new Error(`Block with id \"${e}\" not found`);\n const n = await o.update(i, t);\n return new ee(n);\n }, this.convert = (e, t, o) => {\n var h, f;\n const { BlockManager: i, Tools: n } = this.Editor, r = i.getBlockById(e);\n if (!r)\n throw new Error(`Block with id \"${e}\" not found`);\n const a = n.blockTools.get(r.name), l = n.blockTools.get(t);\n if (!l)\n throw new Error(`Block Tool with type \"${t}\" not found`);\n const c = ((h = a == null ? void 0 : a.conversionConfig) == null ? void 0 : h.export) !== void 0, u = ((f = l.conversionConfig) == null ? void 0 : f.import) !== void 0;\n if (c && u)\n i.convert(r, t, o);\n else {\n const k = [\n c ? !1 : ae(r.name),\n u ? !1 : ae(t)\n ].filter(Boolean).join(\" and \");\n throw new Error(`Conversion from \"${r.name}\" to \"${t}\" is not possible. ${k} tool(s) should provide a \"conversionConfig\"`);\n }\n }, this.insertMany = (e, t = this.Editor.BlockManager.blocks.length - 1) => {\n this.validateIndex(t);\n const o = e.map(({ id: i, type: n, data: r }) => this.Editor.BlockManager.composeBlock({\n id: i,\n tool: n || this.config.defaultBlock,\n data: r\n }));\n return this.Editor.BlockManager.insertMany(o, t), o.map((i) => new ee(i));\n };\n }\n /**\n * Available methods\n *\n * @returns {Blocks}\n */\n get methods() {\n return {\n clear: () => this.clear(),\n render: (e) => this.render(e),\n renderFromHTML: (e) => this.renderFromHTML(e),\n delete: (e) => this.delete(e),\n swap: (e, t) => this.swap(e, t),\n move: (e, t) => this.move(e, t),\n getBlockByIndex: (e) => this.getBlockByIndex(e),\n getById: (e) => this.getById(e),\n getCurrentBlockIndex: () => this.getCurrentBlockIndex(),\n getBlockIndex: (e) => this.getBlockIndex(e),\n getBlocksCount: () => this.getBlocksCount(),\n stretchBlock: (e, t = !0) => this.stretchBlock(e, t),\n insertNewBlock: () => this.insertNewBlock(),\n insert: this.insert,\n insertMany: this.insertMany,\n update: this.update,\n composeBlockData: this.composeBlockData,\n convert: this.convert\n };\n }\n /**\n * Returns Blocks count\n *\n * @returns {number}\n */\n getBlocksCount() {\n return this.Editor.BlockManager.blocks.length;\n }\n /**\n * Returns current block index\n *\n * @returns {number}\n */\n getCurrentBlockIndex() {\n return this.Editor.BlockManager.currentBlockIndex;\n }\n /**\n * Returns the index of Block by id;\n *\n * @param id - block id\n */\n getBlockIndex(e) {\n const t = this.Editor.BlockManager.getBlockById(e);\n if (!t) {\n K(\"There is no block with id `\" + e + \"`\", \"warn\");\n return;\n }\n return this.Editor.BlockManager.getBlockIndex(t);\n }\n /**\n * Returns BlockAPI object by Block index\n *\n * @param {number} index - index to get\n */\n getBlockByIndex(e) {\n const t = this.Editor.BlockManager.getBlockByIndex(e);\n if (t === void 0) {\n K(\"There is no block at index `\" + e + \"`\", \"warn\");\n return;\n }\n return new ee(t);\n }\n /**\n * Returns BlockAPI object by Block id\n *\n * @param id - id of block to get\n */\n getById(e) {\n const t = this.Editor.BlockManager.getBlockById(e);\n return t === void 0 ? (K(\"There is no block with id `\" + e + \"`\", \"warn\"), null) : new ee(t);\n }\n /**\n * Call Block Manager method that swap Blocks\n *\n * @param {number} fromIndex - position of first Block\n * @param {number} toIndex - position of second Block\n * @deprecated — use 'move' instead\n */\n swap(e, t) {\n L(\n \"`blocks.swap()` method is deprecated and will be removed in the next major release. Use `block.move()` method instead\",\n \"info\"\n ), this.Editor.BlockManager.swap(e, t);\n }\n /**\n * Move block from one index to another\n *\n * @param {number} toIndex - index to move to\n * @param {number} fromIndex - index to move from\n */\n move(e, t) {\n this.Editor.BlockManager.move(e, t);\n }\n /**\n * Deletes Block\n *\n * @param {number} blockIndex - index of Block to delete\n */\n delete(e = this.Editor.BlockManager.currentBlockIndex) {\n try {\n const t = this.Editor.BlockManager.getBlockByIndex(e);\n this.Editor.BlockManager.removeBlock(t);\n } catch (t) {\n K(t, \"warn\");\n return;\n }\n this.Editor.BlockManager.blocks.length === 0 && this.Editor.BlockManager.insert(), this.Editor.BlockManager.currentBlock && this.Editor.Caret.setToBlock(this.Editor.BlockManager.currentBlock, this.Editor.Caret.positions.END), this.Editor.Toolbar.close();\n }\n /**\n * Clear Editor's area\n */\n async clear() {\n await this.Editor.BlockManager.clear(!0), this.Editor.InlineToolbar.close();\n }\n /**\n * Fills Editor with Blocks data\n *\n * @param {OutputData} data — Saved Editor data\n */\n async render(e) {\n if (e === void 0 || e.blocks === void 0)\n throw new Error(\"Incorrect data passed to the render() method\");\n this.Editor.ModificationsObserver.disable(), await this.Editor.BlockManager.clear(), await this.Editor.Renderer.render(e.blocks), this.Editor.ModificationsObserver.enable();\n }\n /**\n * Render passed HTML string\n *\n * @param {string} data - HTML string to render\n * @returns {Promise}\n */\n renderFromHTML(e) {\n return this.Editor.BlockManager.clear(), this.Editor.Paste.processText(e, !0);\n }\n /**\n * Stretch Block's content\n *\n * @param {number} index - index of Block to stretch\n * @param {boolean} status - true to enable, false to disable\n * @deprecated Use BlockAPI interface to stretch Blocks\n */\n stretchBlock(e, t = !0) {\n Ie(\n !0,\n \"blocks.stretchBlock()\",\n \"BlockAPI\"\n );\n const o = this.Editor.BlockManager.getBlockByIndex(e);\n o && (o.stretched = t);\n }\n /**\n * Insert new Block\n * After set caret to this Block\n *\n * @todo remove in 3.0.0\n * @deprecated with insert() method\n */\n insertNewBlock() {\n L(\"Method blocks.insertNewBlock() is deprecated and it will be removed in the next major release. Use blocks.insert() instead.\", \"warn\"), this.insert();\n }\n /**\n * Validated block index and throws an error if it's invalid\n *\n * @param index - index to validate\n */\n validateIndex(e) {\n if (typeof e != \"number\")\n throw new Error(\"Index should be a number\");\n if (e < 0)\n throw new Error(\"Index should be greater than or equal to 0\");\n if (e === null)\n throw new Error(\"Index should be greater than or equal to 0\");\n }\n}\nclass eo extends C {\n constructor() {\n super(...arguments), this.setToFirstBlock = (e = this.Editor.Caret.positions.DEFAULT, t = 0) => this.Editor.BlockManager.firstBlock ? (this.Editor.Caret.setToBlock(this.Editor.BlockManager.firstBlock, e, t), !0) : !1, this.setToLastBlock = (e = this.Editor.Caret.positions.DEFAULT, t = 0) => this.Editor.BlockManager.lastBlock ? (this.Editor.Caret.setToBlock(this.Editor.BlockManager.lastBlock, e, t), !0) : !1, this.setToPreviousBlock = (e = this.Editor.Caret.positions.DEFAULT, t = 0) => this.Editor.BlockManager.previousBlock ? (this.Editor.Caret.setToBlock(this.Editor.BlockManager.previousBlock, e, t), !0) : !1, this.setToNextBlock = (e = this.Editor.Caret.positions.DEFAULT, t = 0) => this.Editor.BlockManager.nextBlock ? (this.Editor.Caret.setToBlock(this.Editor.BlockManager.nextBlock, e, t), !0) : !1, this.setToBlock = (e, t = this.Editor.Caret.positions.DEFAULT, o = 0) => this.Editor.BlockManager.blocks[e] ? (this.Editor.Caret.setToBlock(this.Editor.BlockManager.blocks[e], t, o), !0) : !1, this.focus = (e = !1) => e ? this.setToLastBlock(this.Editor.Caret.positions.END) : this.setToFirstBlock(this.Editor.Caret.positions.START);\n }\n /**\n * Available methods\n *\n * @returns {Caret}\n */\n get methods() {\n return {\n setToFirstBlock: this.setToFirstBlock,\n setToLastBlock: this.setToLastBlock,\n setToPreviousBlock: this.setToPreviousBlock,\n setToNextBlock: this.setToNextBlock,\n setToBlock: this.setToBlock,\n focus: this.focus\n };\n }\n}\nclass to extends C {\n /**\n * Available methods\n *\n * @returns {Events}\n */\n get methods() {\n return {\n emit: (e, t) => this.emit(e, t),\n off: (e, t) => this.off(e, t),\n on: (e, t) => this.on(e, t)\n };\n }\n /**\n * Subscribe on Events\n *\n * @param {string} eventName - event name to subscribe\n * @param {Function} callback - event handler\n */\n on(e, t) {\n this.eventsDispatcher.on(e, t);\n }\n /**\n * Emit event with data\n *\n * @param {string} eventName - event to emit\n * @param {object} data - event's data\n */\n emit(e, t) {\n this.eventsDispatcher.emit(e, t);\n }\n /**\n * Unsubscribe from Event\n *\n * @param {string} eventName - event to unsubscribe\n * @param {Function} callback - event handler\n */\n off(e, t) {\n this.eventsDispatcher.off(e, t);\n }\n}\nclass Pe extends C {\n /**\n * Return namespace section for tool or block tune\n *\n * @param tool - tool object\n */\n static getNamespace(e) {\n return e.isTune() ? `blockTunes.${e.name}` : `tools.${e.name}`;\n }\n /**\n * Return I18n API methods with global dictionary access\n */\n get methods() {\n return {\n t: () => {\n K(\"I18n.t() method can be accessed only from Tools\", \"warn\");\n }\n };\n }\n /**\n * Return I18n API methods with tool namespaced dictionary\n *\n * @param tool - Tool object\n */\n getMethodsForTool(e) {\n return Object.assign(\n this.methods,\n {\n t: (t) => $.t(Pe.getNamespace(e), t)\n }\n );\n }\n}\nclass oo extends C {\n /**\n * Editor.js Core API modules\n */\n get methods() {\n return {\n blocks: this.Editor.BlocksAPI.methods,\n caret: this.Editor.CaretAPI.methods,\n events: this.Editor.EventsAPI.methods,\n listeners: this.Editor.ListenersAPI.methods,\n notifier: this.Editor.NotifierAPI.methods,\n sanitizer: this.Editor.SanitizerAPI.methods,\n saver: this.Editor.SaverAPI.methods,\n selection: this.Editor.SelectionAPI.methods,\n styles: this.Editor.StylesAPI.classes,\n toolbar: this.Editor.ToolbarAPI.methods,\n inlineToolbar: this.Editor.InlineToolbarAPI.methods,\n tooltip: this.Editor.TooltipAPI.methods,\n i18n: this.Editor.I18nAPI.methods,\n readOnly: this.Editor.ReadOnlyAPI.methods,\n ui: this.Editor.UiAPI.methods\n };\n }\n /**\n * Returns Editor.js Core API methods for passed tool\n *\n * @param tool - tool object\n */\n getMethodsForTool(e) {\n return Object.assign(\n this.methods,\n {\n i18n: this.Editor.I18nAPI.getMethodsForTool(e)\n }\n );\n }\n}\nclass io extends C {\n /**\n * Available methods\n *\n * @returns {InlineToolbar}\n */\n get methods() {\n return {\n close: () => this.close(),\n open: () => this.open()\n };\n }\n /**\n * Open Inline Toolbar\n */\n open() {\n this.Editor.InlineToolbar.tryToShow();\n }\n /**\n * Close Inline Toolbar\n */\n close() {\n this.Editor.InlineToolbar.close();\n }\n}\nclass no extends C {\n /**\n * Available methods\n *\n * @returns {Listeners}\n */\n get methods() {\n return {\n on: (e, t, o, i) => this.on(e, t, o, i),\n off: (e, t, o, i) => this.off(e, t, o, i),\n offById: (e) => this.offById(e)\n };\n }\n /**\n * Ads a DOM event listener. Return it's id.\n *\n * @param {HTMLElement} element - Element to set handler to\n * @param {string} eventType - event type\n * @param {() => void} handler - event handler\n * @param {boolean} useCapture - capture event or not\n */\n on(e, t, o, i) {\n return this.listeners.on(e, t, o, i);\n }\n /**\n * Removes DOM listener from element\n *\n * @param {Element} element - Element to remove handler from\n * @param eventType - event type\n * @param handler - event handler\n * @param {boolean} useCapture - capture event or not\n */\n off(e, t, o, i) {\n this.listeners.off(e, t, o, i);\n }\n /**\n * Removes DOM listener by the listener id\n *\n * @param id - id of the listener to remove\n */\n offById(e) {\n this.listeners.offById(e);\n }\n}\nvar Le = {}, so = {\n get exports() {\n return Le;\n },\n set exports(s) {\n Le = s;\n }\n};\n(function(s, e) {\n (function(t, o) {\n s.exports = o();\n })(window, function() {\n return function(t) {\n var o = {};\n function i(n) {\n if (o[n])\n return o[n].exports;\n var r = o[n] = { i: n, l: !1, exports: {} };\n return t[n].call(r.exports, r, r.exports, i), r.l = !0, r.exports;\n }\n return i.m = t, i.c = o, i.d = function(n, r, a) {\n i.o(n, r) || Object.defineProperty(n, r, { enumerable: !0, get: a });\n }, i.r = function(n) {\n typeof Symbol < \"u\" && Symbol.toStringTag && Object.defineProperty(n, Symbol.toStringTag, { value: \"Module\" }), Object.defineProperty(n, \"__esModule\", { value: !0 });\n }, i.t = function(n, r) {\n if (1 & r && (n = i(n)), 8 & r || 4 & r && typeof n == \"object\" && n && n.__esModule)\n return n;\n var a = /* @__PURE__ */ Object.create(null);\n if (i.r(a), Object.defineProperty(a, \"default\", { enumerable: !0, value: n }), 2 & r && typeof n != \"string\")\n for (var l in n)\n i.d(a, l, function(c) {\n return n[c];\n }.bind(null, l));\n return a;\n }, i.n = function(n) {\n var r = n && n.__esModule ? function() {\n return n.default;\n } : function() {\n return n;\n };\n return i.d(r, \"a\", r), r;\n }, i.o = function(n, r) {\n return Object.prototype.hasOwnProperty.call(n, r);\n }, i.p = \"/\", i(i.s = 0);\n }([function(t, o, i) {\n i(1), /*!\n * Codex JavaScript Notification module\n * https://github.com/codex-team/js-notifier\n */\n t.exports = function() {\n var n = i(6), r = \"cdx-notify--bounce-in\", a = null;\n return { show: function(l) {\n if (l.message) {\n (function() {\n if (a)\n return !0;\n a = n.getWrapper(), document.body.appendChild(a);\n })();\n var c = null, u = l.time || 8e3;\n switch (l.type) {\n case \"confirm\":\n c = n.confirm(l);\n break;\n case \"prompt\":\n c = n.prompt(l);\n break;\n default:\n c = n.alert(l), window.setTimeout(function() {\n c.remove();\n }, u);\n }\n a.appendChild(c), c.classList.add(r);\n }\n } };\n }();\n }, function(t, o, i) {\n var n = i(2);\n typeof n == \"string\" && (n = [[t.i, n, \"\"]]);\n var r = { hmr: !0, transform: void 0, insertInto: void 0 };\n i(4)(n, r), n.locals && (t.exports = n.locals);\n }, function(t, o, i) {\n (t.exports = i(3)(!1)).push([t.i, `.cdx-notify--error{background:#fffbfb!important}.cdx-notify--error::before{background:#fb5d5d!important}.cdx-notify__input{max-width:130px;padding:5px 10px;background:#f7f7f7;border:0;border-radius:3px;font-size:13px;color:#656b7c;outline:0}.cdx-notify__input:-ms-input-placeholder{color:#656b7c}.cdx-notify__input::placeholder{color:#656b7c}.cdx-notify__input:focus:-ms-input-placeholder{color:rgba(101,107,124,.3)}.cdx-notify__input:focus::placeholder{color:rgba(101,107,124,.3)}.cdx-notify__button{border:none;border-radius:3px;font-size:13px;padding:5px 10px;cursor:pointer}.cdx-notify__button:last-child{margin-left:10px}.cdx-notify__button--cancel{background:#f2f5f7;box-shadow:0 2px 1px 0 rgba(16,19,29,0);color:#656b7c}.cdx-notify__button--cancel:hover{background:#eee}.cdx-notify__button--confirm{background:#34c992;box-shadow:0 1px 1px 0 rgba(18,49,35,.05);color:#fff}.cdx-notify__button--confirm:hover{background:#33b082}.cdx-notify__btns-wrapper{display:-ms-flexbox;display:flex;-ms-flex-flow:row nowrap;flex-flow:row nowrap;margin-top:5px}.cdx-notify__cross{position:absolute;top:5px;right:5px;width:10px;height:10px;padding:5px;opacity:.54;cursor:pointer}.cdx-notify__cross::after,.cdx-notify__cross::before{content:'';position:absolute;left:9px;top:5px;height:12px;width:2px;background:#575d67}.cdx-notify__cross::before{transform:rotate(-45deg)}.cdx-notify__cross::after{transform:rotate(45deg)}.cdx-notify__cross:hover{opacity:1}.cdx-notifies{position:fixed;z-index:2;bottom:20px;left:20px;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen,Ubuntu,Cantarell,\"Fira Sans\",\"Droid Sans\",\"Helvetica Neue\",sans-serif}.cdx-notify{position:relative;width:220px;margin-top:15px;padding:13px 16px;background:#fff;box-shadow:0 11px 17px 0 rgba(23,32,61,.13);border-radius:5px;font-size:14px;line-height:1.4em;word-wrap:break-word}.cdx-notify::before{content:'';position:absolute;display:block;top:0;left:0;width:3px;height:calc(100% - 6px);margin:3px;border-radius:5px;background:0 0}@keyframes bounceIn{0%{opacity:0;transform:scale(.3)}50%{opacity:1;transform:scale(1.05)}70%{transform:scale(.9)}100%{transform:scale(1)}}.cdx-notify--bounce-in{animation-name:bounceIn;animation-duration:.6s;animation-iteration-count:1}.cdx-notify--success{background:#fafffe!important}.cdx-notify--success::before{background:#41ffb1!important}`, \"\"]);\n }, function(t, o) {\n t.exports = function(i) {\n var n = [];\n return n.toString = function() {\n return this.map(function(r) {\n var a = function(l, c) {\n var u = l[1] || \"\", h = l[3];\n if (!h)\n return u;\n if (c && typeof btoa == \"function\") {\n var f = (p = h, \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(p)))) + \" */\"), k = h.sources.map(function(v) {\n return \"/*# sourceURL=\" + h.sourceRoot + v + \" */\";\n });\n return [u].concat(k).concat([f]).join(`\n`);\n }\n var p;\n return [u].join(`\n`);\n }(r, i);\n return r[2] ? \"@media \" + r[2] + \"{\" + a + \"}\" : a;\n }).join(\"\");\n }, n.i = function(r, a) {\n typeof r == \"string\" && (r = [[null, r, \"\"]]);\n for (var l = {}, c = 0; c < this.length; c++) {\n var u = this[c][0];\n typeof u == \"number\" && (l[u] = !0);\n }\n for (c = 0; c < r.length; c++) {\n var h = r[c];\n typeof h[0] == \"number\" && l[h[0]] || (a && !h[2] ? h[2] = a : a && (h[2] = \"(\" + h[2] + \") and (\" + a + \")\"), n.push(h));\n }\n }, n;\n };\n }, function(t, o, i) {\n var n, r, a = {}, l = (n = function() {\n return window && document && document.all && !window.atob;\n }, function() {\n return r === void 0 && (r = n.apply(this, arguments)), r;\n }), c = function(b) {\n var g = {};\n return function(E) {\n if (typeof E == \"function\")\n return E();\n if (g[E] === void 0) {\n var T = function(O) {\n return document.querySelector(O);\n }.call(this, E);\n if (window.HTMLIFrameElement && T instanceof window.HTMLIFrameElement)\n try {\n T = T.contentDocument.head;\n } catch {\n T = null;\n }\n g[E] = T;\n }\n return g[E];\n };\n }(), u = null, h = 0, f = [], k = i(5);\n function p(b, g) {\n for (var E = 0; E < b.length; E++) {\n var T = b[E], O = a[T.id];\n if (O) {\n O.refs++;\n for (var S = 0; S < O.parts.length; S++)\n O.parts[S](T.parts[S]);\n for (; S < T.parts.length; S++)\n O.parts.push(x(T.parts[S], g));\n } else {\n var H = [];\n for (S = 0; S < T.parts.length; S++)\n H.push(x(T.parts[S], g));\n a[T.id] = { id: T.id, refs: 1, parts: H };\n }\n }\n }\n function v(b, g) {\n for (var E = [], T = {}, O = 0; O < b.length; O++) {\n var S = b[O], H = g.base ? S[0] + g.base : S[0], M = { css: S[1], media: S[2], sourceMap: S[3] };\n T[H] ? T[H].parts.push(M) : E.push(T[H] = { id: H, parts: [M] });\n }\n return E;\n }\n function A(b, g) {\n var E = c(b.insertInto);\n if (!E)\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.\");\n var T = f[f.length - 1];\n if (b.insertAt === \"top\")\n T ? T.nextSibling ? E.insertBefore(g, T.nextSibling) : E.appendChild(g) : E.insertBefore(g, E.firstChild), f.push(g);\n else if (b.insertAt === \"bottom\")\n E.appendChild(g);\n else {\n if (typeof b.insertAt != \"object\" || !b.insertAt.before)\n throw new Error(`[Style Loader]\n\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\n Must be 'top', 'bottom', or Object.\n (https://github.com/webpack-contrib/style-loader#insertat)\n`);\n var O = c(b.insertInto + \" \" + b.insertAt.before);\n E.insertBefore(g, O);\n }\n }\n function N(b) {\n if (b.parentNode === null)\n return !1;\n b.parentNode.removeChild(b);\n var g = f.indexOf(b);\n g >= 0 && f.splice(g, 1);\n }\n function _(b) {\n var g = document.createElement(\"style\");\n return b.attrs.type === void 0 && (b.attrs.type = \"text/css\"), y(g, b.attrs), A(b, g), g;\n }\n function y(b, g) {\n Object.keys(g).forEach(function(E) {\n b.setAttribute(E, g[E]);\n });\n }\n function x(b, g) {\n var E, T, O, S;\n if (g.transform && b.css) {\n if (!(S = g.transform(b.css)))\n return function() {\n };\n b.css = S;\n }\n if (g.singleton) {\n var H = h++;\n E = u || (u = _(g)), T = R.bind(null, E, H, !1), O = R.bind(null, E, H, !0);\n } else\n b.sourceMap && typeof URL == \"function\" && typeof URL.createObjectURL == \"function\" && typeof URL.revokeObjectURL == \"function\" && typeof Blob == \"function\" && typeof btoa == \"function\" ? (E = function(M) {\n var W = document.createElement(\"link\");\n return M.attrs.type === void 0 && (M.attrs.type = \"text/css\"), M.attrs.rel = \"stylesheet\", y(W, M.attrs), A(M, W), W;\n }(g), T = function(M, W, de) {\n var Q = de.css, Ee = de.sourceMap, Mt = W.convertToAbsoluteUrls === void 0 && Ee;\n (W.convertToAbsoluteUrls || Mt) && (Q = k(Q)), Ee && (Q += `\n/*# sourceMappingURL=data:application/json;base64,` + btoa(unescape(encodeURIComponent(JSON.stringify(Ee)))) + \" */\");\n var Lt = new Blob([Q], { type: \"text/css\" }), Ve = M.href;\n M.href = URL.createObjectURL(Lt), Ve && URL.revokeObjectURL(Ve);\n }.bind(null, E, g), O = function() {\n N(E), E.href && URL.revokeObjectURL(E.href);\n }) : (E = _(g), T = function(M, W) {\n var de = W.css, Q = W.media;\n if (Q && M.setAttribute(\"media\", Q), M.styleSheet)\n M.styleSheet.cssText = de;\n else {\n for (; M.firstChild; )\n M.removeChild(M.firstChild);\n M.appendChild(document.createTextNode(de));\n }\n }.bind(null, E), O = function() {\n N(E);\n });\n return T(b), function(M) {\n if (M) {\n if (M.css === b.css && M.media === b.media && M.sourceMap === b.sourceMap)\n return;\n T(b = M);\n } else\n O();\n };\n }\n t.exports = function(b, g) {\n if (typeof DEBUG < \"u\" && DEBUG && typeof document != \"object\")\n throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n (g = g || {}).attrs = typeof g.attrs == \"object\" ? g.attrs : {}, g.singleton || typeof g.singleton == \"boolean\" || (g.singleton = l()), g.insertInto || (g.insertInto = \"head\"), g.insertAt || (g.insertAt = \"bottom\");\n var E = v(b, g);\n return p(E, g), function(T) {\n for (var O = [], S = 0; S < E.length; S++) {\n var H = E[S];\n (M = a[H.id]).refs--, O.push(M);\n }\n for (T && p(v(T, g), g), S = 0; S < O.length; S++) {\n var M;\n if ((M = O[S]).refs === 0) {\n for (var W = 0; W < M.parts.length; W++)\n M.parts[W]();\n delete a[M.id];\n }\n }\n };\n };\n var w, I = (w = [], function(b, g) {\n return w[b] = g, w.filter(Boolean).join(`\n`);\n });\n function R(b, g, E, T) {\n var O = E ? \"\" : T.css;\n if (b.styleSheet)\n b.styleSheet.cssText = I(g, O);\n else {\n var S = document.createTextNode(O), H = b.childNodes;\n H[g] && b.removeChild(H[g]), H.length ? b.insertBefore(S, H[g]) : b.appendChild(S);\n }\n }\n }, function(t, o) {\n t.exports = function(i) {\n var n = typeof window < \"u\" && window.location;\n if (!n)\n throw new Error(\"fixUrls requires window.location\");\n if (!i || typeof i != \"string\")\n return i;\n var r = n.protocol + \"//\" + n.host, a = r + n.pathname.replace(/\\/[^\\/]*$/, \"/\");\n return i.replace(/url\\s*\\(((?:[^)(]|\\((?:[^)(]+|\\([^)(]*\\))*\\))*)\\)/gi, function(l, c) {\n var u, h = c.trim().replace(/^\"(.*)\"$/, function(f, k) {\n return k;\n }).replace(/^'(.*)'$/, function(f, k) {\n return k;\n });\n return /^(#|data:|http:\\/\\/|https:\\/\\/|file:\\/\\/\\/|\\s*$)/i.test(h) ? l : (u = h.indexOf(\"//\") === 0 ? h : h.indexOf(\"/\") === 0 ? r + h : a + h.replace(/^\\.\\//, \"\"), \"url(\" + JSON.stringify(u) + \")\");\n });\n };\n }, function(t, o, i) {\n var n, r, a, l, c, u, h, f, k;\n t.exports = (n = \"cdx-notifies\", r = \"cdx-notify\", a = \"cdx-notify__cross\", l = \"cdx-notify__button--confirm\", c = \"cdx-notify__button--cancel\", u = \"cdx-notify__input\", h = \"cdx-notify__button\", f = \"cdx-notify__btns-wrapper\", { alert: k = function(p) {\n var v = document.createElement(\"DIV\"), A = document.createElement(\"DIV\"), N = p.message, _ = p.style;\n return v.classList.add(r), _ && v.classList.add(r + \"--\" + _), v.innerHTML = N, A.classList.add(a), A.addEventListener(\"click\", v.remove.bind(v)), v.appendChild(A), v;\n }, confirm: function(p) {\n var v = k(p), A = document.createElement(\"div\"), N = document.createElement(\"button\"), _ = document.createElement(\"button\"), y = v.querySelector(\".\" + a), x = p.cancelHandler, w = p.okHandler;\n return A.classList.add(f), N.innerHTML = p.okText || \"Confirm\", _.innerHTML = p.cancelText || \"Cancel\", N.classList.add(h), _.classList.add(h), N.classList.add(l), _.classList.add(c), x && typeof x == \"function\" && (_.addEventListener(\"click\", x), y.addEventListener(\"click\", x)), w && typeof w == \"function\" && N.addEventListener(\"click\", w), N.addEventListener(\"click\", v.remove.bind(v)), _.addEventListener(\"click\", v.remove.bind(v)), A.appendChild(N), A.appendChild(_), v.appendChild(A), v;\n }, prompt: function(p) {\n var v = k(p), A = document.createElement(\"div\"), N = document.createElement(\"button\"), _ = document.createElement(\"input\"), y = v.querySelector(\".\" + a), x = p.cancelHandler, w = p.okHandler;\n return A.classList.add(f), N.innerHTML = p.okText || \"Ok\", N.classList.add(h), N.classList.add(l), _.classList.add(u), p.placeholder && _.setAttribute(\"placeholder\", p.placeholder), p.default && (_.value = p.default), p.inputType && (_.type = p.inputType), x && typeof x == \"function\" && y.addEventListener(\"click\", x), w && typeof w == \"function\" && N.addEventListener(\"click\", function() {\n w(_.value);\n }), N.addEventListener(\"click\", v.remove.bind(v)), A.appendChild(_), A.appendChild(N), v.appendChild(A), v;\n }, getWrapper: function() {\n var p = document.createElement(\"DIV\");\n return p.classList.add(n), p;\n } });\n }]);\n });\n})(so);\nconst ro = /* @__PURE__ */ xe(Le);\nclass ao {\n /**\n * Show web notification\n *\n * @param {NotifierOptions | ConfirmNotifierOptions | PromptNotifierOptions} options - notification options\n */\n show(e) {\n ro.show(e);\n }\n}\nclass lo extends C {\n /**\n * @param moduleConfiguration - Module Configuration\n * @param moduleConfiguration.config - Editor's config\n * @param moduleConfiguration.eventsDispatcher - Editor's event dispatcher\n */\n constructor({ config: e, eventsDispatcher: t }) {\n super({\n config: e,\n eventsDispatcher: t\n }), this.notifier = new ao();\n }\n /**\n * Available methods\n */\n get methods() {\n return {\n show: (e) => this.show(e)\n };\n }\n /**\n * Show notification\n *\n * @param {NotifierOptions} options - message option\n */\n show(e) {\n return this.notifier.show(e);\n }\n}\nclass co extends C {\n /**\n * Available methods\n */\n get methods() {\n const e = () => this.isEnabled;\n return {\n toggle: (t) => this.toggle(t),\n get isEnabled() {\n return e();\n }\n };\n }\n /**\n * Set or toggle read-only state\n *\n * @param {boolean|undefined} state - set or toggle state\n * @returns {boolean} current value\n */\n toggle(e) {\n return this.Editor.ReadOnly.toggle(e);\n }\n /**\n * Returns current read-only state\n */\n get isEnabled() {\n return this.Editor.ReadOnly.isEnabled;\n }\n}\nvar Oe = {}, ho = {\n get exports() {\n return Oe;\n },\n set exports(s) {\n Oe = s;\n }\n};\n(function(s, e) {\n (function(t, o) {\n s.exports = o();\n })(Ot, function() {\n function t(h) {\n var f = h.tags, k = Object.keys(f), p = k.map(function(v) {\n return typeof f[v];\n }).every(function(v) {\n return v === \"object\" || v === \"boolean\" || v === \"function\";\n });\n if (!p)\n throw new Error(\"The configuration was invalid\");\n this.config = h;\n }\n var o = [\"P\", \"LI\", \"TD\", \"TH\", \"DIV\", \"H1\", \"H2\", \"H3\", \"H4\", \"H5\", \"H6\", \"PRE\"];\n function i(h) {\n return o.indexOf(h.nodeName) !== -1;\n }\n var n = [\"A\", \"B\", \"STRONG\", \"I\", \"EM\", \"SUB\", \"SUP\", \"U\", \"STRIKE\"];\n function r(h) {\n return n.indexOf(h.nodeName) !== -1;\n }\n t.prototype.clean = function(h) {\n const f = document.implementation.createHTMLDocument(), k = f.createElement(\"div\");\n return k.innerHTML = h, this._sanitize(f, k), k.innerHTML;\n }, t.prototype._sanitize = function(h, f) {\n var k = a(h, f), p = k.firstChild();\n if (p)\n do {\n if (p.nodeType === Node.TEXT_NODE)\n if (p.data.trim() === \"\" && (p.previousElementSibling && i(p.previousElementSibling) || p.nextElementSibling && i(p.nextElementSibling))) {\n f.removeChild(p), this._sanitize(h, f);\n break;\n } else\n continue;\n if (p.nodeType === Node.COMMENT_NODE) {\n f.removeChild(p), this._sanitize(h, f);\n break;\n }\n var v = r(p), A;\n v && (A = Array.prototype.some.call(p.childNodes, i));\n var N = !!f.parentNode, _ = i(f) && i(p) && N, y = p.nodeName.toLowerCase(), x = l(this.config, y, p), w = v && A;\n if (w || c(p, x) || !this.config.keepNestedBlockElements && _) {\n if (!(p.nodeName === \"SCRIPT\" || p.nodeName === \"STYLE\"))\n for (; p.childNodes.length > 0; )\n f.insertBefore(p.childNodes[0], p);\n f.removeChild(p), this._sanitize(h, f);\n break;\n }\n for (var I = 0; I < p.attributes.length; I += 1) {\n var R = p.attributes[I];\n u(R, x, p) && (p.removeAttribute(R.name), I = I - 1);\n }\n this._sanitize(h, p);\n } while (p = k.nextSibling());\n };\n function a(h, f) {\n return h.createTreeWalker(\n f,\n NodeFilter.SHOW_TEXT | NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT,\n null,\n !1\n );\n }\n function l(h, f, k) {\n return typeof h.tags[f] == \"function\" ? h.tags[f](k) : h.tags[f];\n }\n function c(h, f) {\n return typeof f > \"u\" ? !0 : typeof f == \"boolean\" ? !f : !1;\n }\n function u(h, f, k) {\n var p = h.name.toLowerCase();\n return f === !0 ? !1 : typeof f[p] == \"function\" ? !f[p](h.value, k) : typeof f[p] > \"u\" || f[p] === !1 ? !0 : typeof f[p] == \"string\" ? f[p] !== h.value : !1;\n }\n return t;\n });\n})(ho);\nconst uo = Oe;\nfunction ut(s, e) {\n return s.map((t) => {\n const o = D(e) ? e(t.tool) : e;\n return V(o) || (t.data = Fe(t.data, o)), t;\n });\n}\nfunction Z(s, e = {}) {\n const t = {\n tags: e\n };\n return new uo(t).clean(s);\n}\nfunction Fe(s, e) {\n return Array.isArray(s) ? po(s, e) : z(s) ? fo(s, e) : J(s) ? go(s, e) : s;\n}\nfunction po(s, e) {\n return s.map((t) => Fe(t, e));\n}\nfunction fo(s, e) {\n const t = {};\n for (const o in s) {\n if (!Object.prototype.hasOwnProperty.call(s, o))\n continue;\n const i = s[o], n = bo(e[o]) ? e[o] : e;\n t[o] = Fe(i, n);\n }\n return t;\n}\nfunction go(s, e) {\n return z(e) ? Z(s, e) : e === !1 ? Z(s, {}) : s;\n}\nfunction bo(s) {\n return z(s) || Rt(s) || D(s);\n}\nclass mo extends C {\n /**\n * Available methods\n *\n * @returns {SanitizerConfig}\n */\n get methods() {\n return {\n clean: (e, t) => this.clean(e, t)\n };\n }\n /**\n * Perform sanitizing of a string\n *\n * @param {string} taintString - what to sanitize\n * @param {SanitizerConfig} config - sanitizer config\n * @returns {string}\n */\n clean(e, t) {\n return Z(e, t);\n }\n}\nclass ko extends C {\n /**\n * Available methods\n *\n * @returns {Saver}\n */\n get methods() {\n return {\n save: () => this.save()\n };\n }\n /**\n * Return Editor's data\n *\n * @returns {OutputData}\n */\n save() {\n const e = \"Editor's content can not be saved in read-only mode\";\n return this.Editor.ReadOnly.isEnabled ? (K(e, \"warn\"), Promise.reject(new Error(e))) : this.Editor.Saver.save();\n }\n}\nclass vo extends C {\n /**\n * Available methods\n *\n * @returns {SelectionAPIInterface}\n */\n get methods() {\n return {\n findParentTag: (e, t) => this.findParentTag(e, t),\n expandToTag: (e) => this.expandToTag(e)\n };\n }\n /**\n * Looks ahead from selection and find passed tag with class name\n *\n * @param {string} tagName - tag to find\n * @param {string} className - tag's class name\n * @returns {HTMLElement|null}\n */\n findParentTag(e, t) {\n return new m().findParentTag(e, t);\n }\n /**\n * Expand selection to passed tag\n *\n * @param {HTMLElement} node - tag that should contain selection\n */\n expandToTag(e) {\n new m().expandToTag(e);\n }\n}\nclass xo extends C {\n /**\n * Exported classes\n */\n get classes() {\n return {\n /**\n * Base Block styles\n */\n block: \"cdx-block\",\n /**\n * Inline Tools styles\n */\n inlineToolButton: \"ce-inline-tool\",\n inlineToolButtonActive: \"ce-inline-tool--active\",\n /**\n * UI elements\n */\n input: \"cdx-input\",\n loader: \"cdx-loader\",\n button: \"cdx-button\",\n /**\n * Settings styles\n */\n settingsButton: \"cdx-settings-button\",\n settingsButtonActive: \"cdx-settings-button--active\"\n };\n }\n}\nclass wo extends C {\n /**\n * Available methods\n *\n * @returns {Toolbar}\n */\n get methods() {\n return {\n close: () => this.close(),\n open: () => this.open(),\n toggleBlockSettings: (e) => this.toggleBlockSettings(e),\n toggleToolbox: (e) => this.toggleToolbox(e)\n };\n }\n /**\n * Open toolbar\n */\n open() {\n this.Editor.Toolbar.moveAndOpen();\n }\n /**\n * Close toolbar and all included elements\n */\n close() {\n this.Editor.Toolbar.close();\n }\n /**\n * Toggles Block Setting of the current block\n *\n * @param {boolean} openingState — opening state of Block Setting\n */\n toggleBlockSettings(e) {\n if (this.Editor.BlockManager.currentBlockIndex === -1) {\n K(\"Could't toggle the Toolbar because there is no block selected \", \"warn\");\n return;\n }\n e ?? !this.Editor.BlockSettings.opened ? (this.Editor.Toolbar.moveAndOpen(), this.Editor.BlockSettings.open()) : this.Editor.BlockSettings.close();\n }\n /**\n * Open toolbox\n *\n * @param {boolean} openingState - Opening state of toolbox\n */\n toggleToolbox(e) {\n if (this.Editor.BlockManager.currentBlockIndex === -1) {\n K(\"Could't toggle the Toolbox because there is no block selected \", \"warn\");\n return;\n }\n e ?? !this.Editor.Toolbar.toolbox.opened ? (this.Editor.Toolbar.moveAndOpen(), this.Editor.Toolbar.toolbox.open()) : this.Editor.Toolbar.toolbox.close();\n }\n}\nvar Ae = {}, yo = {\n get exports() {\n return Ae;\n },\n set exports(s) {\n Ae = s;\n }\n};\n/*!\n * CodeX.Tooltips\n * \n * @version 1.0.5\n * \n * @licence MIT\n * @author CodeX \n * \n * \n */\n(function(s, e) {\n (function(t, o) {\n s.exports = o();\n })(window, function() {\n return function(t) {\n var o = {};\n function i(n) {\n if (o[n])\n return o[n].exports;\n var r = o[n] = { i: n, l: !1, exports: {} };\n return t[n].call(r.exports, r, r.exports, i), r.l = !0, r.exports;\n }\n return i.m = t, i.c = o, i.d = function(n, r, a) {\n i.o(n, r) || Object.defineProperty(n, r, { enumerable: !0, get: a });\n }, i.r = function(n) {\n typeof Symbol < \"u\" && Symbol.toStringTag && Object.defineProperty(n, Symbol.toStringTag, { value: \"Module\" }), Object.defineProperty(n, \"__esModule\", { value: !0 });\n }, i.t = function(n, r) {\n if (1 & r && (n = i(n)), 8 & r || 4 & r && typeof n == \"object\" && n && n.__esModule)\n return n;\n var a = /* @__PURE__ */ Object.create(null);\n if (i.r(a), Object.defineProperty(a, \"default\", { enumerable: !0, value: n }), 2 & r && typeof n != \"string\")\n for (var l in n)\n i.d(a, l, function(c) {\n return n[c];\n }.bind(null, l));\n return a;\n }, i.n = function(n) {\n var r = n && n.__esModule ? function() {\n return n.default;\n } : function() {\n return n;\n };\n return i.d(r, \"a\", r), r;\n }, i.o = function(n, r) {\n return Object.prototype.hasOwnProperty.call(n, r);\n }, i.p = \"\", i(i.s = 0);\n }([function(t, o, i) {\n t.exports = i(1);\n }, function(t, o, i) {\n i.r(o), i.d(o, \"default\", function() {\n return n;\n });\n class n {\n constructor() {\n this.nodes = { wrapper: null, content: null }, this.showed = !1, this.offsetTop = 10, this.offsetLeft = 10, this.offsetRight = 10, this.hidingDelay = 0, this.handleWindowScroll = () => {\n this.showed && this.hide(!0);\n }, this.loadStyles(), this.prepare(), window.addEventListener(\"scroll\", this.handleWindowScroll, { passive: !0 });\n }\n get CSS() {\n return { tooltip: \"ct\", tooltipContent: \"ct__content\", tooltipShown: \"ct--shown\", placement: { left: \"ct--left\", bottom: \"ct--bottom\", right: \"ct--right\", top: \"ct--top\" } };\n }\n show(a, l, c) {\n this.nodes.wrapper || this.prepare(), this.hidingTimeout && clearTimeout(this.hidingTimeout);\n const u = Object.assign({ placement: \"bottom\", marginTop: 0, marginLeft: 0, marginRight: 0, marginBottom: 0, delay: 70, hidingDelay: 0 }, c);\n if (u.hidingDelay && (this.hidingDelay = u.hidingDelay), this.nodes.content.innerHTML = \"\", typeof l == \"string\")\n this.nodes.content.appendChild(document.createTextNode(l));\n else {\n if (!(l instanceof Node))\n throw Error(\"[CodeX Tooltip] Wrong type of «content» passed. It should be an instance of Node or String. But \" + typeof l + \" given.\");\n this.nodes.content.appendChild(l);\n }\n switch (this.nodes.wrapper.classList.remove(...Object.values(this.CSS.placement)), u.placement) {\n case \"top\":\n this.placeTop(a, u);\n break;\n case \"left\":\n this.placeLeft(a, u);\n break;\n case \"right\":\n this.placeRight(a, u);\n break;\n case \"bottom\":\n default:\n this.placeBottom(a, u);\n }\n u && u.delay ? this.showingTimeout = setTimeout(() => {\n this.nodes.wrapper.classList.add(this.CSS.tooltipShown), this.showed = !0;\n }, u.delay) : (this.nodes.wrapper.classList.add(this.CSS.tooltipShown), this.showed = !0);\n }\n hide(a = !1) {\n if (this.hidingDelay && !a)\n return this.hidingTimeout && clearTimeout(this.hidingTimeout), void (this.hidingTimeout = setTimeout(() => {\n this.hide(!0);\n }, this.hidingDelay));\n this.nodes.wrapper.classList.remove(this.CSS.tooltipShown), this.showed = !1, this.showingTimeout && clearTimeout(this.showingTimeout);\n }\n onHover(a, l, c) {\n a.addEventListener(\"mouseenter\", () => {\n this.show(a, l, c);\n }), a.addEventListener(\"mouseleave\", () => {\n this.hide();\n });\n }\n destroy() {\n this.nodes.wrapper.remove(), window.removeEventListener(\"scroll\", this.handleWindowScroll);\n }\n prepare() {\n this.nodes.wrapper = this.make(\"div\", this.CSS.tooltip), this.nodes.content = this.make(\"div\", this.CSS.tooltipContent), this.append(this.nodes.wrapper, this.nodes.content), this.append(document.body, this.nodes.wrapper);\n }\n loadStyles() {\n const a = \"codex-tooltips-style\";\n if (document.getElementById(a))\n return;\n const l = i(2), c = this.make(\"style\", null, { textContent: l.toString(), id: a });\n this.prepend(document.head, c);\n }\n placeBottom(a, l) {\n const c = a.getBoundingClientRect(), u = c.left + a.clientWidth / 2 - this.nodes.wrapper.offsetWidth / 2, h = c.bottom + window.pageYOffset + this.offsetTop + l.marginTop;\n this.applyPlacement(\"bottom\", u, h);\n }\n placeTop(a, l) {\n const c = a.getBoundingClientRect(), u = c.left + a.clientWidth / 2 - this.nodes.wrapper.offsetWidth / 2, h = c.top + window.pageYOffset - this.nodes.wrapper.clientHeight - this.offsetTop;\n this.applyPlacement(\"top\", u, h);\n }\n placeLeft(a, l) {\n const c = a.getBoundingClientRect(), u = c.left - this.nodes.wrapper.offsetWidth - this.offsetLeft - l.marginLeft, h = c.top + window.pageYOffset + a.clientHeight / 2 - this.nodes.wrapper.offsetHeight / 2;\n this.applyPlacement(\"left\", u, h);\n }\n placeRight(a, l) {\n const c = a.getBoundingClientRect(), u = c.right + this.offsetRight + l.marginRight, h = c.top + window.pageYOffset + a.clientHeight / 2 - this.nodes.wrapper.offsetHeight / 2;\n this.applyPlacement(\"right\", u, h);\n }\n applyPlacement(a, l, c) {\n this.nodes.wrapper.classList.add(this.CSS.placement[a]), this.nodes.wrapper.style.left = l + \"px\", this.nodes.wrapper.style.top = c + \"px\";\n }\n make(a, l = null, c = {}) {\n const u = document.createElement(a);\n Array.isArray(l) ? u.classList.add(...l) : l && u.classList.add(l);\n for (const h in c)\n c.hasOwnProperty(h) && (u[h] = c[h]);\n return u;\n }\n append(a, l) {\n Array.isArray(l) ? l.forEach((c) => a.appendChild(c)) : a.appendChild(l);\n }\n prepend(a, l) {\n Array.isArray(l) ? (l = l.reverse()).forEach((c) => a.prepend(c)) : a.prepend(l);\n }\n }\n }, function(t, o) {\n t.exports = `.ct{z-index:999;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;-webkit-transition:opacity 50ms ease-in,-webkit-transform 70ms cubic-bezier(.215,.61,.355,1);transition:opacity 50ms ease-in,-webkit-transform 70ms cubic-bezier(.215,.61,.355,1);transition:opacity 50ms ease-in,transform 70ms cubic-bezier(.215,.61,.355,1);transition:opacity 50ms ease-in,transform 70ms cubic-bezier(.215,.61,.355,1),-webkit-transform 70ms cubic-bezier(.215,.61,.355,1);will-change:opacity,top,left;-webkit-box-shadow:0 8px 12px 0 rgba(29,32,43,.17),0 4px 5px -3px rgba(5,6,12,.49);box-shadow:0 8px 12px 0 rgba(29,32,43,.17),0 4px 5px -3px rgba(5,6,12,.49);border-radius:9px}.ct,.ct:before{position:absolute;top:0;left:0}.ct:before{content:\"\";bottom:0;right:0;background-color:#1d202b;z-index:-1;border-radius:4px}@supports(-webkit-mask-box-image:url(\"\")){.ct:before{border-radius:0;-webkit-mask-box-image:url('data:image/svg+xml;charset=utf-8,') 48% 41% 37.9% 53.3%}}@media (--mobile){.ct{display:none}}.ct__content{padding:6px 10px;color:#cdd1e0;font-size:12px;text-align:center;letter-spacing:.02em;line-height:1em}.ct:after{content:\"\";width:8px;height:8px;position:absolute;background-color:#1d202b;z-index:-1}.ct--bottom{-webkit-transform:translateY(5px);transform:translateY(5px)}.ct--bottom:after{top:-3px;left:50%;-webkit-transform:translateX(-50%) rotate(-45deg);transform:translateX(-50%) rotate(-45deg)}.ct--top{-webkit-transform:translateY(-5px);transform:translateY(-5px)}.ct--top:after{top:auto;bottom:-3px;left:50%;-webkit-transform:translateX(-50%) rotate(-45deg);transform:translateX(-50%) rotate(-45deg)}.ct--left{-webkit-transform:translateX(-5px);transform:translateX(-5px)}.ct--left:after{top:50%;left:auto;right:0;-webkit-transform:translate(41.6%,-50%) rotate(-45deg);transform:translate(41.6%,-50%) rotate(-45deg)}.ct--right{-webkit-transform:translateX(5px);transform:translateX(5px)}.ct--right:after{top:50%;left:0;-webkit-transform:translate(-41.6%,-50%) rotate(-45deg);transform:translate(-41.6%,-50%) rotate(-45deg)}.ct--shown{opacity:1;-webkit-transform:none;transform:none}`;\n }]).default;\n });\n})(yo);\nconst Eo = /* @__PURE__ */ xe(Ae);\nclass He {\n constructor() {\n this.lib = new Eo();\n }\n /**\n * Release the library\n */\n destroy() {\n this.lib.destroy();\n }\n /**\n * Shows tooltip on element with passed HTML content\n *\n * @param {HTMLElement} element - any HTML element in DOM\n * @param content - tooltip's content\n * @param options - showing settings\n */\n show(e, t, o) {\n this.lib.show(e, t, o);\n }\n /**\n * Hides tooltip\n *\n * @param skipHidingDelay — pass true to immediately hide the tooltip\n */\n hide(e = !1) {\n this.lib.hide(e);\n }\n /**\n * Binds 'mouseenter' and 'mouseleave' events that shows/hides the Tooltip\n *\n * @param {HTMLElement} element - any HTML element in DOM\n * @param content - tooltip's content\n * @param options - showing settings\n */\n onHover(e, t, o) {\n this.lib.onHover(e, t, o);\n }\n}\nclass Bo extends C {\n /**\n * @class\n * @param moduleConfiguration - Module Configuration\n * @param moduleConfiguration.config - Editor's config\n * @param moduleConfiguration.eventsDispatcher - Editor's event dispatcher\n */\n constructor({ config: e, eventsDispatcher: t }) {\n super({\n config: e,\n eventsDispatcher: t\n }), this.tooltip = new He();\n }\n /**\n * Destroy Module\n */\n destroy() {\n this.tooltip.destroy();\n }\n /**\n * Available methods\n */\n get methods() {\n return {\n show: (e, t, o) => this.show(e, t, o),\n hide: () => this.hide(),\n onHover: (e, t, o) => this.onHover(e, t, o)\n };\n }\n /**\n * Method show tooltip on element with passed HTML content\n *\n * @param {HTMLElement} element - element on which tooltip should be shown\n * @param {TooltipContent} content - tooltip content\n * @param {TooltipOptions} options - tooltip options\n */\n show(e, t, o) {\n this.tooltip.show(e, t, o);\n }\n /**\n * Method hides tooltip on HTML page\n */\n hide() {\n this.tooltip.hide();\n }\n /**\n * Decorator for showing Tooltip by mouseenter/mouseleave\n *\n * @param {HTMLElement} element - element on which tooltip should be shown\n * @param {TooltipContent} content - tooltip content\n * @param {TooltipOptions} options - tooltip options\n */\n onHover(e, t, o) {\n this.tooltip.onHover(e, t, o);\n }\n}\nclass To extends C {\n /**\n * Available methods / getters\n */\n get methods() {\n return {\n nodes: this.editorNodes\n /**\n * There can be added some UI methods, like toggleThinMode() etc\n */\n };\n }\n /**\n * Exported classes\n */\n get editorNodes() {\n return {\n /**\n * Top-level editor instance wrapper\n */\n wrapper: this.Editor.UI.nodes.wrapper,\n /**\n * Element that holds all the Blocks\n */\n redactor: this.Editor.UI.nodes.redactor\n };\n }\n}\nfunction pt(s, e) {\n const t = {};\n return Object.entries(s).forEach(([o, i]) => {\n if (z(i)) {\n const n = e ? `${e}.${o}` : o;\n Object.values(i).every((a) => J(a)) ? t[o] = n : t[o] = pt(i, n);\n return;\n }\n t[o] = i;\n }), t;\n}\nconst X = pt(at);\nfunction Co(s, e) {\n const t = {};\n return Object.keys(s).forEach((o) => {\n const i = e[o];\n i !== void 0 ? t[i] = s[o] : t[o] = s[o];\n }), t;\n}\nconst So = '', ft = '', Io = '', Mo = '', Lo = '', Oo = '', Qe = '', Ao = '', _o = '', No = '', Ro = '', Do = '';\nclass P {\n /**\n * Constructs popover item instance\n *\n * @param params - popover item construction params\n */\n constructor(e) {\n this.nodes = {\n root: null,\n icon: null\n }, this.confirmationState = null, this.removeSpecialFocusBehavior = () => {\n this.nodes.root.classList.remove(P.CSS.noFocus);\n }, this.removeSpecialHoverBehavior = () => {\n this.nodes.root.classList.remove(P.CSS.noHover);\n }, this.onErrorAnimationEnd = () => {\n this.nodes.icon.classList.remove(P.CSS.wobbleAnimation), this.nodes.icon.removeEventListener(\"animationend\", this.onErrorAnimationEnd);\n }, this.params = e, this.nodes.root = this.make(e);\n }\n /**\n * True if item is disabled and hence not clickable\n */\n get isDisabled() {\n return this.params.isDisabled;\n }\n /**\n * Exposes popover item toggle parameter\n */\n get toggle() {\n return this.params.toggle;\n }\n /**\n * Item title\n */\n get title() {\n return this.params.title;\n }\n /**\n * True if popover should close once item is activated\n */\n get closeOnActivate() {\n return this.params.closeOnActivate;\n }\n /**\n * True if confirmation state is enabled for popover item\n */\n get isConfirmationStateEnabled() {\n return this.confirmationState !== null;\n }\n /**\n * True if item is focused in keyboard navigation process\n */\n get isFocused() {\n return this.nodes.root.classList.contains(P.CSS.focused);\n }\n /**\n * Popover item CSS classes\n */\n static get CSS() {\n return {\n container: \"ce-popover-item\",\n title: \"ce-popover-item__title\",\n secondaryTitle: \"ce-popover-item__secondary-title\",\n icon: \"ce-popover-item__icon\",\n active: \"ce-popover-item--active\",\n disabled: \"ce-popover-item--disabled\",\n focused: \"ce-popover-item--focused\",\n hidden: \"ce-popover-item--hidden\",\n confirmationState: \"ce-popover-item--confirmation\",\n noHover: \"ce-popover-item--no-hover\",\n noFocus: \"ce-popover-item--no-focus\",\n wobbleAnimation: \"wobble\"\n };\n }\n /**\n * Returns popover item root element\n */\n getElement() {\n return this.nodes.root;\n }\n /**\n * Called on popover item click\n */\n handleClick() {\n if (this.isConfirmationStateEnabled) {\n this.activateOrEnableConfirmationMode(this.confirmationState);\n return;\n }\n this.activateOrEnableConfirmationMode(this.params);\n }\n /**\n * Toggles item active state\n *\n * @param isActive - true if item should strictly should become active\n */\n toggleActive(e) {\n this.nodes.root.classList.toggle(P.CSS.active, e);\n }\n /**\n * Toggles item hidden state\n *\n * @param isHidden - true if item should be hidden\n */\n toggleHidden(e) {\n this.nodes.root.classList.toggle(P.CSS.hidden, e);\n }\n /**\n * Resets popover item to its original state\n */\n reset() {\n this.isConfirmationStateEnabled && this.disableConfirmationMode();\n }\n /**\n * Method called once item becomes focused during keyboard navigation\n */\n onFocus() {\n this.disableSpecialHoverAndFocusBehavior();\n }\n /**\n * Constructs HTML element corresponding to popover item params\n *\n * @param params - item construction params\n */\n make(e) {\n const t = d.make(\"div\", P.CSS.container);\n return e.name && (t.dataset.itemName = e.name), this.nodes.icon = d.make(\"div\", P.CSS.icon, {\n innerHTML: e.icon || Lo\n }), t.appendChild(this.nodes.icon), t.appendChild(d.make(\"div\", P.CSS.title, {\n innerHTML: e.title || \"\"\n })), e.secondaryLabel && t.appendChild(d.make(\"div\", P.CSS.secondaryTitle, {\n textContent: e.secondaryLabel\n })), e.isActive && t.classList.add(P.CSS.active), e.isDisabled && t.classList.add(P.CSS.disabled), t;\n }\n /**\n * Activates confirmation mode for the item.\n *\n * @param newState - new popover item params that should be applied\n */\n enableConfirmationMode(e) {\n const t = {\n ...this.params,\n ...e,\n confirmation: e.confirmation\n }, o = this.make(t);\n this.nodes.root.innerHTML = o.innerHTML, this.nodes.root.classList.add(P.CSS.confirmationState), this.confirmationState = e, this.enableSpecialHoverAndFocusBehavior();\n }\n /**\n * Returns item to its original state\n */\n disableConfirmationMode() {\n const e = this.make(this.params);\n this.nodes.root.innerHTML = e.innerHTML, this.nodes.root.classList.remove(P.CSS.confirmationState), this.confirmationState = null, this.disableSpecialHoverAndFocusBehavior();\n }\n /**\n * Enables special focus and hover behavior for item in confirmation state.\n * This is needed to prevent item from being highlighted as hovered/focused just after click.\n */\n enableSpecialHoverAndFocusBehavior() {\n this.nodes.root.classList.add(P.CSS.noHover), this.nodes.root.classList.add(P.CSS.noFocus), this.nodes.root.addEventListener(\"mouseleave\", this.removeSpecialHoverBehavior, { once: !0 });\n }\n /**\n * Disables special focus and hover behavior\n */\n disableSpecialHoverAndFocusBehavior() {\n this.removeSpecialFocusBehavior(), this.removeSpecialHoverBehavior(), this.nodes.root.removeEventListener(\"mouseleave\", this.removeSpecialHoverBehavior);\n }\n /**\n * Executes item's onActivate callback if the item has no confirmation configured\n *\n * @param item - item to activate or bring to confirmation mode\n */\n activateOrEnableConfirmationMode(e) {\n if (e.confirmation === void 0)\n try {\n e.onActivate(e), this.disableConfirmationMode();\n } catch {\n this.animateError();\n }\n else\n this.enableConfirmationMode(e.confirmation);\n }\n /**\n * Animates item which symbolizes that error occured while executing 'onActivate()' callback\n */\n animateError() {\n this.nodes.icon.classList.contains(P.CSS.wobbleAnimation) || (this.nodes.icon.classList.add(P.CSS.wobbleAnimation), this.nodes.icon.addEventListener(\"animationend\", this.onErrorAnimationEnd));\n }\n}\nconst he = class {\n /**\n * @param {HTMLElement[]} nodeList — the list of iterable HTML-items\n * @param {string} focusedCssClass - user-provided CSS-class that will be set in flipping process\n */\n constructor(s, e) {\n this.cursor = -1, this.items = [], this.items = s || [], this.focusedCssClass = e;\n }\n /**\n * Returns Focused button Node\n *\n * @returns {HTMLElement}\n */\n get currentItem() {\n return this.cursor === -1 ? null : this.items[this.cursor];\n }\n /**\n * Sets cursor to specified position\n *\n * @param cursorPosition - new cursor position\n */\n setCursor(s) {\n s < this.items.length && s >= -1 && (this.dropCursor(), this.cursor = s, this.items[this.cursor].classList.add(this.focusedCssClass));\n }\n /**\n * Sets items. Can be used when iterable items changed dynamically\n *\n * @param {HTMLElement[]} nodeList - nodes to iterate\n */\n setItems(s) {\n this.items = s;\n }\n /**\n * Sets cursor next to the current\n */\n next() {\n this.cursor = this.leafNodesAndReturnIndex(he.directions.RIGHT);\n }\n /**\n * Sets cursor before current\n */\n previous() {\n this.cursor = this.leafNodesAndReturnIndex(he.directions.LEFT);\n }\n /**\n * Sets cursor to the default position and removes CSS-class from previously focused item\n */\n dropCursor() {\n this.cursor !== -1 && (this.items[this.cursor].classList.remove(this.focusedCssClass), this.cursor = -1);\n }\n /**\n * Leafs nodes inside the target list from active element\n *\n * @param {string} direction - leaf direction. Can be 'left' or 'right'\n * @returns {number} index of focused node\n */\n leafNodesAndReturnIndex(s) {\n if (this.items.length === 0)\n return this.cursor;\n let e = this.cursor;\n return e === -1 ? e = s === he.directions.RIGHT ? -1 : 0 : this.items[e].classList.remove(this.focusedCssClass), s === he.directions.RIGHT ? e = (e + 1) % this.items.length : e = (this.items.length + e - 1) % this.items.length, d.canSetCaret(this.items[e]) && re(() => m.setCursor(this.items[e]), 50)(), this.items[e].classList.add(this.focusedCssClass), e;\n }\n};\nlet ne = he;\nne.directions = {\n RIGHT: \"right\",\n LEFT: \"left\"\n};\nclass G {\n /**\n * @param {FlipperOptions} options - different constructing settings\n */\n constructor(e) {\n this.iterator = null, this.activated = !1, this.flipCallbacks = [], this.onKeyDown = (t) => {\n if (this.isEventReadyForHandling(t))\n switch (G.usedKeys.includes(t.keyCode) && t.preventDefault(), t.keyCode) {\n case B.TAB:\n this.handleTabPress(t);\n break;\n case B.LEFT:\n case B.UP:\n this.flipLeft();\n break;\n case B.RIGHT:\n case B.DOWN:\n this.flipRight();\n break;\n case B.ENTER:\n this.handleEnterPress(t);\n break;\n }\n }, this.iterator = new ne(e.items, e.focusedItemClass), this.activateCallback = e.activateCallback, this.allowedKeys = e.allowedKeys || G.usedKeys;\n }\n /**\n * True if flipper is currently activated\n */\n get isActivated() {\n return this.activated;\n }\n /**\n * Array of keys (codes) that is handled by Flipper\n * Used to:\n * - preventDefault only for this keys, not all keydowns (@see constructor)\n * - to skip external behaviours only for these keys, when filler is activated (@see BlockEvents@arrowRightAndDown)\n */\n static get usedKeys() {\n return [\n B.TAB,\n B.LEFT,\n B.RIGHT,\n B.ENTER,\n B.UP,\n B.DOWN\n ];\n }\n /**\n * Active tab/arrows handling by flipper\n *\n * @param items - Some modules (like, InlineToolbar, BlockSettings) might refresh buttons dynamically\n * @param cursorPosition - index of the item that should be focused once flipper is activated\n */\n activate(e, t) {\n this.activated = !0, e && this.iterator.setItems(e), t !== void 0 && this.iterator.setCursor(t), document.addEventListener(\"keydown\", this.onKeyDown, !0);\n }\n /**\n * Disable tab/arrows handling by flipper\n */\n deactivate() {\n this.activated = !1, this.dropCursor(), document.removeEventListener(\"keydown\", this.onKeyDown);\n }\n /**\n * Focus first item\n */\n focusFirst() {\n this.dropCursor(), this.flipRight();\n }\n /**\n * Focuses previous flipper iterator item\n */\n flipLeft() {\n this.iterator.previous(), this.flipCallback();\n }\n /**\n * Focuses next flipper iterator item\n */\n flipRight() {\n this.iterator.next(), this.flipCallback();\n }\n /**\n * Return true if some button is focused\n */\n hasFocus() {\n return !!this.iterator.currentItem;\n }\n /**\n * Registeres function that should be executed on each navigation action\n *\n * @param cb - function to execute\n */\n onFlip(e) {\n this.flipCallbacks.push(e);\n }\n /**\n * Unregisteres function that is executed on each navigation action\n *\n * @param cb - function to stop executing\n */\n removeOnFlip(e) {\n this.flipCallbacks = this.flipCallbacks.filter((t) => t !== e);\n }\n /**\n * Drops flipper's iterator cursor\n *\n * @see DomIterator#dropCursor\n */\n dropCursor() {\n this.iterator.dropCursor();\n }\n /**\n * This function is fired before handling flipper keycodes\n * The result of this function defines if it is need to be handled or not\n *\n * @param {KeyboardEvent} event - keydown keyboard event\n * @returns {boolean}\n */\n isEventReadyForHandling(e) {\n return this.activated && this.allowedKeys.includes(e.keyCode);\n }\n /**\n * When flipper is activated tab press will leaf the items\n *\n * @param {KeyboardEvent} event - tab keydown event\n */\n handleTabPress(e) {\n switch (e.shiftKey ? ne.directions.LEFT : ne.directions.RIGHT) {\n case ne.directions.RIGHT:\n this.flipRight();\n break;\n case ne.directions.LEFT:\n this.flipLeft();\n break;\n }\n }\n /**\n * Enter press will click current item if flipper is activated\n *\n * @param {KeyboardEvent} event - enter keydown event\n */\n handleEnterPress(e) {\n this.activated && (this.iterator.currentItem && (e.stopPropagation(), e.preventDefault(), this.iterator.currentItem.click()), D(this.activateCallback) && this.activateCallback(this.iterator.currentItem));\n }\n /**\n * Fired after flipping in any direction\n */\n flipCallback() {\n this.iterator.currentItem && this.iterator.currentItem.scrollIntoViewIfNeeded(), this.flipCallbacks.forEach((e) => e());\n }\n}\nclass pe {\n /**\n * Styles\n */\n static get CSS() {\n return {\n wrapper: \"cdx-search-field\",\n icon: \"cdx-search-field__icon\",\n input: \"cdx-search-field__input\"\n };\n }\n /**\n * @param options - available config\n * @param options.items - searchable items list\n * @param options.onSearch - search callback\n * @param options.placeholder - input placeholder\n */\n constructor({ items: e, onSearch: t, placeholder: o }) {\n this.listeners = new De(), this.items = e, this.onSearch = t, this.render(o);\n }\n /**\n * Returns search field element\n */\n getElement() {\n return this.wrapper;\n }\n /**\n * Sets focus to the input\n */\n focus() {\n this.input.focus();\n }\n /**\n * Clears search query and results\n */\n clear() {\n this.input.value = \"\", this.searchQuery = \"\", this.onSearch(\"\", this.foundItems);\n }\n /**\n * Clears memory\n */\n destroy() {\n this.listeners.removeAll();\n }\n /**\n * Creates the search field\n *\n * @param placeholder - input placeholder\n */\n render(e) {\n this.wrapper = d.make(\"div\", pe.CSS.wrapper);\n const t = d.make(\"div\", pe.CSS.icon, {\n innerHTML: No\n });\n this.input = d.make(\"input\", pe.CSS.input, {\n placeholder: e\n }), this.wrapper.appendChild(t), this.wrapper.appendChild(this.input), this.listeners.on(this.input, \"input\", () => {\n this.searchQuery = this.input.value, this.onSearch(this.searchQuery, this.foundItems);\n });\n }\n /**\n * Returns list of found items for the current search query\n */\n get foundItems() {\n return this.items.filter((e) => this.checkItem(e));\n }\n /**\n * Contains logic for checking whether passed item conforms the search query\n *\n * @param item - item to be checked\n */\n checkItem(e) {\n var i;\n const t = ((i = e.title) == null ? void 0 : i.toLowerCase()) || \"\", o = this.searchQuery.toLowerCase();\n return t.includes(o);\n }\n}\nconst ue = class {\n /**\n * Locks body element scroll\n */\n lock() {\n Ge ? this.lockHard() : document.body.classList.add(ue.CSS.scrollLocked);\n }\n /**\n * Unlocks body element scroll\n */\n unlock() {\n Ge ? this.unlockHard() : document.body.classList.remove(ue.CSS.scrollLocked);\n }\n /**\n * Locks scroll in a hard way (via setting fixed position to body element)\n */\n lockHard() {\n this.scrollPosition = window.pageYOffset, document.documentElement.style.setProperty(\n \"--window-scroll-offset\",\n `${this.scrollPosition}px`\n ), document.body.classList.add(ue.CSS.scrollLockedHard);\n }\n /**\n * Unlocks hard scroll lock\n */\n unlockHard() {\n document.body.classList.remove(ue.CSS.scrollLockedHard), this.scrollPosition !== null && window.scrollTo(0, this.scrollPosition), this.scrollPosition = null;\n }\n};\nlet gt = ue;\ngt.CSS = {\n scrollLocked: \"ce-scroll-locked\",\n scrollLockedHard: \"ce-scroll-locked--hard\"\n};\nvar Po = Object.defineProperty, Fo = Object.getOwnPropertyDescriptor, Ho = (s, e, t, o) => {\n for (var i = o > 1 ? void 0 : o ? Fo(e, t) : e, n = s.length - 1, r; n >= 0; n--)\n (r = s[n]) && (i = (o ? r(e, t, i) : r(i)) || i);\n return o && i && Po(e, t, i), i;\n}, ge = /* @__PURE__ */ ((s) => (s.Close = \"close\", s))(ge || {});\nconst j = class extends we {\n /**\n * Constructs the instance\n *\n * @param params - popover construction params\n */\n constructor(s) {\n super(), this.scopeElement = document.body, this.listeners = new De(), this.scrollLocker = new gt(), this.nodes = {\n wrapper: null,\n popover: null,\n nothingFoundMessage: null,\n customContent: null,\n items: null,\n overlay: null\n }, this.messages = {\n nothingFound: \"Nothing found\",\n search: \"Search\"\n }, this.onFlip = () => {\n this.items.find((t) => t.isFocused).onFocus();\n }, this.items = s.items.map((e) => new P(e)), s.scopeElement !== void 0 && (this.scopeElement = s.scopeElement), s.messages && (this.messages = {\n ...this.messages,\n ...s.messages\n }), s.customContentFlippableItems && (this.customContentFlippableItems = s.customContentFlippableItems), this.make(), s.customContent && this.addCustomContent(s.customContent), s.searchable && this.addSearch(), this.initializeFlipper();\n }\n /**\n * Popover CSS classes\n */\n static get CSS() {\n return {\n popover: \"ce-popover\",\n popoverOpenTop: \"ce-popover--open-top\",\n popoverOpened: \"ce-popover--opened\",\n search: \"ce-popover__search\",\n nothingFoundMessage: \"ce-popover__nothing-found-message\",\n nothingFoundMessageDisplayed: \"ce-popover__nothing-found-message--displayed\",\n customContent: \"ce-popover__custom-content\",\n customContentHidden: \"ce-popover__custom-content--hidden\",\n items: \"ce-popover__items\",\n overlay: \"ce-popover__overlay\",\n overlayHidden: \"ce-popover__overlay--hidden\"\n };\n }\n /**\n * Returns HTML element corresponding to the popover\n */\n getElement() {\n return this.nodes.wrapper;\n }\n /**\n * Returns true if some item inside popover is focused\n */\n hasFocus() {\n return this.flipper.hasFocus();\n }\n /**\n * Open popover\n */\n show() {\n this.shouldOpenBottom || (this.nodes.popover.style.setProperty(\"--popover-height\", this.height + \"px\"), this.nodes.popover.classList.add(j.CSS.popoverOpenTop)), this.nodes.overlay.classList.remove(j.CSS.overlayHidden), this.nodes.popover.classList.add(j.CSS.popoverOpened), this.flipper.activate(this.flippableElements), this.search !== void 0 && setTimeout(() => {\n this.search.focus();\n }, 100), te() && this.scrollLocker.lock();\n }\n /**\n * Closes popover\n */\n hide() {\n this.nodes.popover.classList.remove(j.CSS.popoverOpened), this.nodes.popover.classList.remove(j.CSS.popoverOpenTop), this.nodes.overlay.classList.add(j.CSS.overlayHidden), this.flipper.deactivate(), this.items.forEach((s) => s.reset()), this.search !== void 0 && this.search.clear(), te() && this.scrollLocker.unlock(), this.emit(\n \"close\"\n /* Close */\n );\n }\n /**\n * Clears memory\n */\n destroy() {\n this.flipper.deactivate(), this.listeners.removeAll(), te() && this.scrollLocker.unlock();\n }\n /**\n * Constructs HTML element corresponding to popover\n */\n make() {\n this.nodes.popover = d.make(\"div\", [j.CSS.popover]), this.nodes.nothingFoundMessage = d.make(\"div\", [j.CSS.nothingFoundMessage], {\n textContent: this.messages.nothingFound\n }), this.nodes.popover.appendChild(this.nodes.nothingFoundMessage), this.nodes.items = d.make(\"div\", [j.CSS.items]), this.items.forEach((s) => {\n this.nodes.items.appendChild(s.getElement());\n }), this.nodes.popover.appendChild(this.nodes.items), this.listeners.on(this.nodes.popover, \"click\", (s) => {\n const e = this.getTargetItem(s);\n e !== void 0 && this.handleItemClick(e);\n }), this.nodes.wrapper = d.make(\"div\"), this.nodes.overlay = d.make(\"div\", [j.CSS.overlay, j.CSS.overlayHidden]), this.listeners.on(this.nodes.overlay, \"click\", () => {\n this.hide();\n }), this.nodes.wrapper.appendChild(this.nodes.overlay), this.nodes.wrapper.appendChild(this.nodes.popover);\n }\n /**\n * Adds search to the popover\n */\n addSearch() {\n this.search = new pe({\n items: this.items,\n placeholder: this.messages.search,\n onSearch: (e, t) => {\n this.items.forEach((i) => {\n const n = !t.includes(i);\n i.toggleHidden(n);\n }), this.toggleNothingFoundMessage(t.length === 0), this.toggleCustomContent(e !== \"\");\n const o = e === \"\" ? this.flippableElements : t.map((i) => i.getElement());\n this.flipper.isActivated && (this.flipper.deactivate(), this.flipper.activate(o));\n }\n });\n const s = this.search.getElement();\n s.classList.add(j.CSS.search), this.nodes.popover.insertBefore(s, this.nodes.popover.firstChild);\n }\n /**\n * Adds custom html content to the popover\n *\n * @param content - html content to append\n */\n addCustomContent(s) {\n this.nodes.customContent = s, this.nodes.customContent.classList.add(j.CSS.customContent), this.nodes.popover.insertBefore(s, this.nodes.popover.firstChild);\n }\n /**\n * Retrieves popover item that is the target of the specified event\n *\n * @param event - event to retrieve popover item from\n */\n getTargetItem(s) {\n return this.items.find((e) => s.composedPath().includes(e.getElement()));\n }\n /**\n * Handles item clicks\n *\n * @param item - item to handle click of\n */\n handleItemClick(s) {\n s.isDisabled || (this.items.filter((e) => e !== s).forEach((e) => e.reset()), s.handleClick(), this.toggleItemActivenessIfNeeded(s), s.closeOnActivate && this.hide());\n }\n /**\n * Creates Flipper instance which allows to navigate between popover items via keyboard\n */\n initializeFlipper() {\n this.flipper = new G({\n items: this.flippableElements,\n focusedItemClass: P.CSS.focused,\n allowedKeys: [\n B.TAB,\n B.UP,\n B.DOWN,\n B.ENTER\n ]\n }), this.flipper.onFlip(this.onFlip);\n }\n /**\n * Returns list of elements available for keyboard navigation.\n * Contains both usual popover items elements and custom html content.\n */\n get flippableElements() {\n const s = this.items.map((t) => t.getElement());\n return (this.customContentFlippableItems || []).concat(s);\n }\n get height() {\n let s = 0;\n if (this.nodes.popover === null)\n return s;\n const e = this.nodes.popover.cloneNode(!0);\n return e.style.visibility = \"hidden\", e.style.position = \"absolute\", e.style.top = \"-1000px\", e.classList.add(j.CSS.popoverOpened), document.body.appendChild(e), s = e.offsetHeight, e.remove(), s;\n }\n /**\n * Checks if popover should be opened bottom.\n * It should happen when there is enough space below or not enough space above\n */\n get shouldOpenBottom() {\n const s = this.nodes.popover.getBoundingClientRect(), e = this.scopeElement.getBoundingClientRect(), t = this.height, o = s.top + t, i = s.top - t, n = Math.min(window.innerHeight, e.bottom);\n return i < e.top || o <= n;\n }\n /**\n * Toggles nothing found message visibility\n *\n * @param isDisplayed - true if the message should be displayed\n */\n toggleNothingFoundMessage(s) {\n this.nodes.nothingFoundMessage.classList.toggle(j.CSS.nothingFoundMessageDisplayed, s);\n }\n /**\n * Toggles custom content visibility\n *\n * @param isDisplayed - true if custom content should be displayed\n */\n toggleCustomContent(s) {\n var e;\n (e = this.nodes.customContent) == null || e.classList.toggle(j.CSS.customContentHidden, s);\n }\n /**\n * - Toggles item active state, if clicked popover item has property 'toggle' set to true.\n *\n * - Performs radiobutton-like behavior if the item has property 'toggle' set to string key.\n * (All the other items with the same key get inactive, and the item gets active)\n *\n * @param clickedItem - popover item that was clicked\n */\n toggleItemActivenessIfNeeded(s) {\n if (s.toggle === !0 && s.toggleActive(), typeof s.toggle == \"string\") {\n const e = this.items.filter((t) => t.toggle === s.toggle);\n if (e.length === 1) {\n s.toggleActive();\n return;\n }\n e.forEach((t) => {\n t.toggleActive(t === s);\n });\n }\n }\n};\nlet je = j;\nHo([\n ce\n], je.prototype, \"height\", 1);\nclass jo extends C {\n constructor() {\n super(...arguments), this.opened = !1, this.selection = new m(), this.onPopoverClose = () => {\n this.close();\n };\n }\n /**\n * Module Events\n *\n * @returns {{opened: string, closed: string}}\n */\n get events() {\n return {\n opened: \"block-settings-opened\",\n closed: \"block-settings-closed\"\n };\n }\n /**\n * Block Settings CSS\n */\n get CSS() {\n return {\n settings: \"ce-settings\"\n };\n }\n /**\n * Getter for inner popover's flipper instance\n *\n * @todo remove once BlockSettings becomes standalone non-module class\n */\n get flipper() {\n var e;\n return (e = this.popover) == null ? void 0 : e.flipper;\n }\n /**\n * Panel with block settings with 2 sections:\n * - Tool's Settings\n * - Default Settings [Move, Remove, etc]\n */\n make() {\n this.nodes.wrapper = d.make(\"div\", [this.CSS.settings]);\n }\n /**\n * Destroys module\n */\n destroy() {\n this.removeAllNodes();\n }\n /**\n * Open Block Settings pane\n *\n * @param targetBlock - near which Block we should open BlockSettings\n */\n open(e = this.Editor.BlockManager.currentBlock) {\n this.opened = !0, this.selection.save(), e.selected = !0, this.Editor.BlockSelection.clearCache();\n const [t, o] = e.getTunes();\n this.eventsDispatcher.emit(this.events.opened), this.popover = new je({\n searchable: !0,\n items: t.map((i) => this.resolveTuneAliases(i)),\n customContent: o,\n customContentFlippableItems: this.getControls(o),\n scopeElement: this.Editor.API.methods.ui.nodes.redactor,\n messages: {\n nothingFound: $.ui(X.ui.popover, \"Nothing found\"),\n search: $.ui(X.ui.popover, \"Filter\")\n }\n }), this.popover.on(ge.Close, this.onPopoverClose), this.nodes.wrapper.append(this.popover.getElement()), this.popover.show();\n }\n /**\n * Returns root block settings element\n */\n getElement() {\n return this.nodes.wrapper;\n }\n /**\n * Close Block Settings pane\n */\n close() {\n this.opened = !1, m.isAtEditor || this.selection.restore(), this.selection.clearSaved(), !this.Editor.CrossBlockSelection.isCrossBlockSelectionStarted && this.Editor.BlockManager.currentBlock && (this.Editor.BlockManager.currentBlock.selected = !1), this.eventsDispatcher.emit(this.events.closed), this.popover && (this.popover.off(ge.Close, this.onPopoverClose), this.popover.destroy(), this.popover.getElement().remove(), this.popover = null);\n }\n /**\n * Returns list of buttons and inputs inside specified container\n *\n * @param container - container to query controls inside of\n */\n getControls(e) {\n const { StylesAPI: t } = this.Editor, o = e.querySelectorAll(\n `.${t.classes.settingsButton}, ${d.allInputsSelector}`\n );\n return Array.from(o);\n }\n /**\n * Resolves aliases in tunes menu items\n *\n * @param item - item with resolved aliases\n */\n resolveTuneAliases(e) {\n const t = Co(e, { label: \"title\" });\n return e.confirmation && (t.confirmation = this.resolveTuneAliases(e.confirmation)), t;\n }\n}\nclass Y extends C {\n constructor() {\n super(...arguments), this.opened = !1, this.tools = [], this.flipper = null, this.togglingCallback = null;\n }\n /**\n * CSS getter\n */\n static get CSS() {\n return {\n conversionToolbarWrapper: \"ce-conversion-toolbar\",\n conversionToolbarShowed: \"ce-conversion-toolbar--showed\",\n conversionToolbarTools: \"ce-conversion-toolbar__tools\",\n conversionToolbarLabel: \"ce-conversion-toolbar__label\",\n conversionTool: \"ce-conversion-tool\",\n conversionToolHidden: \"ce-conversion-tool--hidden\",\n conversionToolIcon: \"ce-conversion-tool__icon\",\n conversionToolSecondaryLabel: \"ce-conversion-tool__secondary-label\",\n conversionToolFocused: \"ce-conversion-tool--focused\",\n conversionToolActive: \"ce-conversion-tool--active\"\n };\n }\n /**\n * Create UI of Conversion Toolbar\n */\n make() {\n this.nodes.wrapper = d.make(\"div\", [\n Y.CSS.conversionToolbarWrapper,\n ...this.isRtl ? [this.Editor.UI.CSS.editorRtlFix] : []\n ]), this.nodes.tools = d.make(\"div\", Y.CSS.conversionToolbarTools);\n const e = d.make(\"div\", Y.CSS.conversionToolbarLabel, {\n textContent: $.ui(X.ui.inlineToolbar.converter, \"Convert to\")\n });\n return this.addTools(), this.enableFlipper(), d.append(this.nodes.wrapper, e), d.append(this.nodes.wrapper, this.nodes.tools), this.nodes.wrapper;\n }\n /**\n * Deactivates flipper and removes all nodes\n */\n destroy() {\n this.flipper && (this.flipper.deactivate(), this.flipper = null), this.removeAllNodes();\n }\n /**\n * Toggle conversion dropdown visibility\n *\n * @param {Function} [togglingCallback] — callback that will accept opening state\n */\n toggle(e) {\n this.opened ? this.close() : this.open(), D(e) && (this.togglingCallback = e);\n }\n /**\n * Shows Conversion Toolbar\n */\n open() {\n this.filterTools(), this.opened = !0, this.nodes.wrapper.classList.add(Y.CSS.conversionToolbarShowed), window.requestAnimationFrame(() => {\n this.flipper.activate(this.tools.map((e) => e.button).filter((e) => !e.classList.contains(Y.CSS.conversionToolHidden))), this.flipper.focusFirst(), D(this.togglingCallback) && this.togglingCallback(!0);\n });\n }\n /**\n * Closes Conversion Toolbar\n */\n close() {\n this.opened = !1, this.flipper.deactivate(), this.nodes.wrapper.classList.remove(Y.CSS.conversionToolbarShowed), D(this.togglingCallback) && this.togglingCallback(!1);\n }\n /**\n * Returns true if it has more than one tool available for convert in\n */\n hasTools() {\n return this.tools.length === 1 ? this.tools[0].name !== this.config.defaultBlock : !0;\n }\n /**\n * Replaces one Block with another\n * For that Tools must provide import/export methods\n *\n * @param {string} replacingToolName - name of Tool which replaces current\n * @param blockDataOverrides - If this conversion fired by the one of multiple Toolbox items, extend converted data with this item's \"data\" overrides\n */\n async replaceWithBlock(e, t) {\n const { BlockManager: o, BlockSelection: i, InlineToolbar: n, Caret: r } = this.Editor;\n o.convert(this.Editor.BlockManager.currentBlock, e, t), i.clearSelection(), this.close(), n.close(), window.requestAnimationFrame(() => {\n r.setToBlock(this.Editor.BlockManager.currentBlock, r.positions.END);\n });\n }\n /**\n * Iterates existing Tools and inserts to the ConversionToolbar\n * if tools have ability to import\n */\n addTools() {\n const e = this.Editor.Tools.blockTools;\n Array.from(e.entries()).forEach(([t, o]) => {\n var n;\n const i = o.conversionConfig;\n !i || !i.import || (n = o.toolbox) == null || n.forEach(\n (r) => this.addToolIfValid(t, r)\n );\n });\n }\n /**\n * Inserts a tool to the ConversionToolbar if the tool's toolbox config is valid\n *\n * @param name - tool's name\n * @param toolboxSettings - tool's single toolbox setting\n */\n addToolIfValid(e, t) {\n V(t) || !t.icon || this.addTool(e, t);\n }\n /**\n * Add tool to the Conversion Toolbar\n *\n * @param toolName - name of Tool to add\n * @param toolboxItem - tool's toolbox item data\n */\n addTool(e, t) {\n var r;\n const o = d.make(\"div\", [Y.CSS.conversionTool]), i = d.make(\"div\", [Y.CSS.conversionToolIcon]);\n o.dataset.tool = e, i.innerHTML = t.icon, d.append(o, i), d.append(o, d.text($.t(X.toolNames, t.title || ae(e))));\n const n = (r = this.Editor.Tools.blockTools.get(e)) == null ? void 0 : r.shortcut;\n if (n) {\n const a = d.make(\"span\", Y.CSS.conversionToolSecondaryLabel, {\n innerText: Re(n)\n });\n d.append(o, a);\n }\n d.append(this.nodes.tools, o), this.tools.push({\n name: e,\n button: o,\n toolboxItem: t\n }), this.listeners.on(o, \"click\", async () => {\n await this.replaceWithBlock(e, t.data);\n });\n }\n /**\n * Hide current Tool and show others\n */\n async filterTools() {\n const { currentBlock: e } = this.Editor.BlockManager, t = await e.getActiveToolboxEntry();\n function o(i, n) {\n return i.icon === n.icon && i.title === n.title;\n }\n this.tools.forEach((i) => {\n let n = !1;\n if (t) {\n const r = o(t, i.toolboxItem);\n n = i.button.dataset.tool === e.name && r;\n }\n i.button.hidden = n, i.button.classList.toggle(Y.CSS.conversionToolHidden, n);\n });\n }\n /**\n * Prepare Flipper to be able to leaf tools by arrows/tab\n */\n enableFlipper() {\n this.flipper = new G({\n focusedItemClass: Y.CSS.conversionToolFocused\n });\n }\n}\nvar _e = {}, zo = {\n get exports() {\n return _e;\n },\n set exports(s) {\n _e = s;\n }\n};\n/*!\n * Library for handling keyboard shortcuts\n * @copyright CodeX (https://codex.so)\n * @license MIT\n * @author CodeX (https://codex.so)\n * @version 1.2.0\n */\n(function(s, e) {\n (function(t, o) {\n s.exports = o();\n })(window, function() {\n return function(t) {\n var o = {};\n function i(n) {\n if (o[n])\n return o[n].exports;\n var r = o[n] = { i: n, l: !1, exports: {} };\n return t[n].call(r.exports, r, r.exports, i), r.l = !0, r.exports;\n }\n return i.m = t, i.c = o, i.d = function(n, r, a) {\n i.o(n, r) || Object.defineProperty(n, r, { enumerable: !0, get: a });\n }, i.r = function(n) {\n typeof Symbol < \"u\" && Symbol.toStringTag && Object.defineProperty(n, Symbol.toStringTag, { value: \"Module\" }), Object.defineProperty(n, \"__esModule\", { value: !0 });\n }, i.t = function(n, r) {\n if (1 & r && (n = i(n)), 8 & r || 4 & r && typeof n == \"object\" && n && n.__esModule)\n return n;\n var a = /* @__PURE__ */ Object.create(null);\n if (i.r(a), Object.defineProperty(a, \"default\", { enumerable: !0, value: n }), 2 & r && typeof n != \"string\")\n for (var l in n)\n i.d(a, l, function(c) {\n return n[c];\n }.bind(null, l));\n return a;\n }, i.n = function(n) {\n var r = n && n.__esModule ? function() {\n return n.default;\n } : function() {\n return n;\n };\n return i.d(r, \"a\", r), r;\n }, i.o = function(n, r) {\n return Object.prototype.hasOwnProperty.call(n, r);\n }, i.p = \"\", i(i.s = 0);\n }([function(t, o, i) {\n function n(l, c) {\n for (var u = 0; u < c.length; u++) {\n var h = c[u];\n h.enumerable = h.enumerable || !1, h.configurable = !0, \"value\" in h && (h.writable = !0), Object.defineProperty(l, h.key, h);\n }\n }\n function r(l, c, u) {\n return c && n(l.prototype, c), u && n(l, u), l;\n }\n i.r(o);\n var a = function() {\n function l(c) {\n var u = this;\n (function(h, f) {\n if (!(h instanceof f))\n throw new TypeError(\"Cannot call a class as a function\");\n })(this, l), this.commands = {}, this.keys = {}, this.name = c.name, this.parseShortcutName(c.name), this.element = c.on, this.callback = c.callback, this.executeShortcut = function(h) {\n u.execute(h);\n }, this.element.addEventListener(\"keydown\", this.executeShortcut, !1);\n }\n return r(l, null, [{ key: \"supportedCommands\", get: function() {\n return { SHIFT: [\"SHIFT\"], CMD: [\"CMD\", \"CONTROL\", \"COMMAND\", \"WINDOWS\", \"CTRL\"], ALT: [\"ALT\", \"OPTION\"] };\n } }, { key: \"keyCodes\", get: function() {\n return { 0: 48, 1: 49, 2: 50, 3: 51, 4: 52, 5: 53, 6: 54, 7: 55, 8: 56, 9: 57, A: 65, B: 66, C: 67, D: 68, E: 69, F: 70, G: 71, H: 72, I: 73, J: 74, K: 75, L: 76, M: 77, N: 78, O: 79, P: 80, Q: 81, R: 82, S: 83, T: 84, U: 85, V: 86, W: 87, X: 88, Y: 89, Z: 90, BACKSPACE: 8, ENTER: 13, ESCAPE: 27, LEFT: 37, UP: 38, RIGHT: 39, DOWN: 40, INSERT: 45, DELETE: 46, \".\": 190 };\n } }]), r(l, [{ key: \"parseShortcutName\", value: function(c) {\n c = c.split(\"+\");\n for (var u = 0; u < c.length; u++) {\n c[u] = c[u].toUpperCase();\n var h = !1;\n for (var f in l.supportedCommands)\n if (l.supportedCommands[f].includes(c[u])) {\n h = this.commands[f] = !0;\n break;\n }\n h || (this.keys[c[u]] = !0);\n }\n for (var k in l.supportedCommands)\n this.commands[k] || (this.commands[k] = !1);\n } }, { key: \"execute\", value: function(c) {\n var u, h = { CMD: c.ctrlKey || c.metaKey, SHIFT: c.shiftKey, ALT: c.altKey }, f = !0;\n for (u in this.commands)\n this.commands[u] !== h[u] && (f = !1);\n var k, p = !0;\n for (k in this.keys)\n p = p && c.keyCode === l.keyCodes[k];\n f && p && this.callback(c);\n } }, { key: \"remove\", value: function() {\n this.element.removeEventListener(\"keydown\", this.executeShortcut);\n } }]), l;\n }();\n o.default = a;\n }]).default;\n });\n})(zo);\nconst Uo = /* @__PURE__ */ xe(_e);\nclass $o {\n constructor() {\n this.registeredShortcuts = /* @__PURE__ */ new Map();\n }\n /**\n * Register shortcut\n *\n * @param shortcut - shortcut options\n */\n add(e) {\n if (this.findShortcut(e.on, e.name))\n throw Error(\n `Shortcut ${e.name} is already registered for ${e.on}. Please remove it before add a new handler.`\n );\n const o = new Uo({\n name: e.name,\n on: e.on,\n callback: e.handler\n }), i = this.registeredShortcuts.get(e.on) || [];\n this.registeredShortcuts.set(e.on, [...i, o]);\n }\n /**\n * Remove shortcut\n *\n * @param element - Element shortcut is set for\n * @param name - shortcut name\n */\n remove(e, t) {\n const o = this.findShortcut(e, t);\n if (!o)\n return;\n o.remove();\n const i = this.registeredShortcuts.get(e);\n this.registeredShortcuts.set(e, i.filter((n) => n !== o));\n }\n /**\n * Get Shortcut instance if exist\n *\n * @param element - Element shorcut is set for\n * @param shortcut - shortcut name\n * @returns {number} index - shortcut index if exist\n */\n findShortcut(e, t) {\n return (this.registeredShortcuts.get(e) || []).find(({ name: i }) => i === t);\n }\n}\nconst le = new $o();\nvar Wo = Object.defineProperty, Yo = Object.getOwnPropertyDescriptor, bt = (s, e, t, o) => {\n for (var i = o > 1 ? void 0 : o ? Yo(e, t) : e, n = s.length - 1, r; n >= 0; n--)\n (r = s[n]) && (i = (o ? r(e, t, i) : r(i)) || i);\n return o && i && Wo(e, t, i), i;\n}, me = /* @__PURE__ */ ((s) => (s.Opened = \"toolbox-opened\", s.Closed = \"toolbox-closed\", s.BlockAdded = \"toolbox-block-added\", s))(me || {});\nconst mt = class extends we {\n /**\n * Toolbox constructor\n *\n * @param options - available parameters\n * @param options.api - Editor API methods\n * @param options.tools - Tools available to check whether some of them should be displayed at the Toolbox or not\n */\n constructor({ api: s, tools: e, i18nLabels: t }) {\n super(), this.opened = !1, this.nodes = {\n toolbox: null\n }, this.onPopoverClose = () => {\n this.opened = !1, this.emit(\n \"toolbox-closed\"\n /* Closed */\n );\n }, this.api = s, this.tools = e, this.i18nLabels = t;\n }\n /**\n * Returns True if Toolbox is Empty and nothing to show\n *\n * @returns {boolean}\n */\n get isEmpty() {\n return this.toolsToBeDisplayed.length === 0;\n }\n /**\n * CSS styles\n *\n * @returns {Object}\n */\n static get CSS() {\n return {\n toolbox: \"ce-toolbox\"\n };\n }\n /**\n * Makes the Toolbox\n */\n make() {\n return this.popover = new je({\n scopeElement: this.api.ui.nodes.redactor,\n searchable: !0,\n messages: {\n nothingFound: this.i18nLabels.nothingFound,\n search: this.i18nLabels.filter\n },\n items: this.toolboxItemsToBeDisplayed\n }), this.popover.on(ge.Close, this.onPopoverClose), this.enableShortcuts(), this.nodes.toolbox = this.popover.getElement(), this.nodes.toolbox.classList.add(mt.CSS.toolbox), this.nodes.toolbox;\n }\n /**\n * Returns true if the Toolbox has the Flipper activated and the Flipper has selected button\n */\n hasFocus() {\n var s;\n return (s = this.popover) == null ? void 0 : s.hasFocus();\n }\n /**\n * Destroy Module\n */\n destroy() {\n var s;\n super.destroy(), this.nodes && this.nodes.toolbox && (this.nodes.toolbox.remove(), this.nodes.toolbox = null), this.removeAllShortcuts(), (s = this.popover) == null || s.off(ge.Close, this.onPopoverClose);\n }\n /**\n * Toolbox Tool's button click handler\n *\n * @param toolName - tool type to be activated\n * @param blockDataOverrides - Block data predefined by the activated Toolbox item\n */\n toolButtonActivated(s, e) {\n this.insertNewBlock(s, e);\n }\n /**\n * Open Toolbox with Tools\n */\n open() {\n var s;\n this.isEmpty || ((s = this.popover) == null || s.show(), this.opened = !0, this.emit(\n \"toolbox-opened\"\n /* Opened */\n ));\n }\n /**\n * Close Toolbox\n */\n close() {\n var s;\n (s = this.popover) == null || s.hide(), this.opened = !1, this.emit(\n \"toolbox-closed\"\n /* Closed */\n );\n }\n /**\n * Close Toolbox\n */\n toggle() {\n this.opened ? this.close() : this.open();\n }\n get toolsToBeDisplayed() {\n const s = [];\n return this.tools.forEach((e) => {\n e.toolbox && s.push(e);\n }), s;\n }\n get toolboxItemsToBeDisplayed() {\n const s = (e, t) => ({\n icon: e.icon,\n title: $.t(X.toolNames, e.title || ae(t.name)),\n name: t.name,\n onActivate: () => {\n this.toolButtonActivated(t.name, e.data);\n },\n secondaryLabel: t.shortcut ? Re(t.shortcut) : \"\"\n });\n return this.toolsToBeDisplayed.reduce((e, t) => (Array.isArray(t.toolbox) ? t.toolbox.forEach((o) => {\n e.push(s(o, t));\n }) : t.toolbox !== void 0 && e.push(s(t.toolbox, t)), e), []);\n }\n /**\n * Iterate all tools and enable theirs shortcuts if specified\n */\n enableShortcuts() {\n this.toolsToBeDisplayed.forEach((s) => {\n const e = s.shortcut;\n e && this.enableShortcutForTool(s.name, e);\n });\n }\n /**\n * Enable shortcut Block Tool implemented shortcut\n *\n * @param {string} toolName - Tool name\n * @param {string} shortcut - shortcut according to the ShortcutData Module format\n */\n enableShortcutForTool(s, e) {\n le.add({\n name: e,\n on: this.api.ui.nodes.redactor,\n handler: (t) => {\n t.preventDefault();\n const o = this.api.blocks.getCurrentBlockIndex(), i = this.api.blocks.getBlockByIndex(o);\n if (i)\n try {\n this.api.blocks.convert(i.id, s), window.requestAnimationFrame(() => {\n this.api.caret.setToBlock(o, \"end\");\n });\n return;\n } catch {\n }\n this.insertNewBlock(s);\n }\n });\n }\n /**\n * Removes all added shortcuts\n * Fired when the Read-Only mode is activated\n */\n removeAllShortcuts() {\n this.toolsToBeDisplayed.forEach((s) => {\n const e = s.shortcut;\n e && le.remove(this.api.ui.nodes.redactor, e);\n });\n }\n /**\n * Inserts new block\n * Can be called when button clicked on Toolbox or by ShortcutData\n *\n * @param {string} toolName - Tool name\n * @param blockDataOverrides - predefined Block data\n */\n async insertNewBlock(s, e) {\n const t = this.api.blocks.getCurrentBlockIndex(), o = this.api.blocks.getBlockByIndex(t);\n if (!o)\n return;\n const i = o.isEmpty ? t : t + 1;\n let n;\n if (e) {\n const a = await this.api.blocks.composeBlockData(s);\n n = Object.assign(a, e);\n }\n const r = this.api.blocks.insert(\n s,\n n,\n void 0,\n i,\n void 0,\n o.isEmpty\n );\n r.call(q.APPEND_CALLBACK), this.api.caret.setToBlock(i), this.emit(\"toolbox-block-added\", {\n block: r\n }), this.api.toolbar.close();\n }\n};\nlet ze = mt;\nbt([\n ce\n], ze.prototype, \"toolsToBeDisplayed\", 1);\nbt([\n ce\n], ze.prototype, \"toolboxItemsToBeDisplayed\", 1);\nconst kt = \"block hovered\";\nclass Ko extends C {\n /**\n * @class\n * @param moduleConfiguration - Module Configuration\n * @param moduleConfiguration.config - Editor's config\n * @param moduleConfiguration.eventsDispatcher - Editor's event dispatcher\n */\n constructor({ config: e, eventsDispatcher: t }) {\n super({\n config: e,\n eventsDispatcher: t\n }), this.toolboxInstance = null, this.tooltip = new He();\n }\n /**\n * CSS styles\n *\n * @returns {object}\n */\n get CSS() {\n return {\n toolbar: \"ce-toolbar\",\n content: \"ce-toolbar__content\",\n actions: \"ce-toolbar__actions\",\n actionsOpened: \"ce-toolbar__actions--opened\",\n toolbarOpened: \"ce-toolbar--opened\",\n openedToolboxHolderModifier: \"codex-editor--toolbox-opened\",\n plusButton: \"ce-toolbar__plus\",\n plusButtonShortcut: \"ce-toolbar__plus-shortcut\",\n settingsToggler: \"ce-toolbar__settings-btn\",\n settingsTogglerHidden: \"ce-toolbar__settings-btn--hidden\"\n };\n }\n /**\n * Returns the Toolbar opening state\n *\n * @returns {boolean}\n */\n get opened() {\n return this.nodes.wrapper.classList.contains(this.CSS.toolbarOpened);\n }\n /**\n * Public interface for accessing the Toolbox\n */\n get toolbox() {\n var e;\n return {\n opened: (e = this.toolboxInstance) == null ? void 0 : e.opened,\n close: () => {\n var t;\n (t = this.toolboxInstance) == null || t.close();\n },\n open: () => {\n if (this.toolboxInstance === null) {\n L(\"toolbox.open() called before initialization is finished\", \"warn\");\n return;\n }\n this.Editor.BlockManager.currentBlock = this.hoveredBlock, this.toolboxInstance.open();\n },\n toggle: () => {\n if (this.toolboxInstance === null) {\n L(\"toolbox.toggle() called before initialization is finished\", \"warn\");\n return;\n }\n this.toolboxInstance.toggle();\n },\n hasFocus: () => {\n var t;\n return (t = this.toolboxInstance) == null ? void 0 : t.hasFocus();\n }\n };\n }\n /**\n * Block actions appearance manipulations\n */\n get blockActions() {\n return {\n hide: () => {\n this.nodes.actions.classList.remove(this.CSS.actionsOpened);\n },\n show: () => {\n this.nodes.actions.classList.add(this.CSS.actionsOpened);\n }\n };\n }\n /**\n * Methods for working with Block Tunes toggler\n */\n get blockTunesToggler() {\n return {\n hide: () => this.nodes.settingsToggler.classList.add(this.CSS.settingsTogglerHidden),\n show: () => this.nodes.settingsToggler.classList.remove(this.CSS.settingsTogglerHidden)\n };\n }\n /**\n * Toggles read-only mode\n *\n * @param {boolean} readOnlyEnabled - read-only mode\n */\n toggleReadOnly(e) {\n e ? (this.destroy(), this.Editor.BlockSettings.destroy(), this.disableModuleBindings()) : window.requestIdleCallback(() => {\n this.drawUI(), this.enableModuleBindings();\n }, { timeout: 2e3 });\n }\n /**\n * Move Toolbar to the passed (or current) Block\n *\n * @param block - block to move Toolbar near it\n */\n moveAndOpen(e = this.Editor.BlockManager.currentBlock) {\n if (this.toolboxInstance === null) {\n L(\"Can't open Toolbar since Editor initialization is not finished yet\", \"warn\");\n return;\n }\n if (this.toolboxInstance.opened && this.toolboxInstance.close(), this.Editor.BlockSettings.opened && this.Editor.BlockSettings.close(), !e)\n return;\n this.hoveredBlock = e;\n const t = e.holder, { isMobile: o } = this.Editor.UI, i = e.pluginsContent, n = window.getComputedStyle(i), r = parseInt(n.paddingTop, 10), a = t.offsetHeight;\n let l;\n o ? l = t.offsetTop + a : l = t.offsetTop + r, this.nodes.wrapper.style.top = `${Math.floor(l)}px`, this.Editor.BlockManager.blocks.length === 1 && e.isEmpty ? this.blockTunesToggler.hide() : this.blockTunesToggler.show(), this.open();\n }\n /**\n * Close the Toolbar\n */\n close() {\n var e;\n this.Editor.ReadOnly.isEnabled || (this.nodes.wrapper.classList.remove(this.CSS.toolbarOpened), this.blockActions.hide(), (e = this.toolboxInstance) == null || e.close(), this.Editor.BlockSettings.close());\n }\n /**\n * Open Toolbar with Plus Button and Actions\n *\n * @param {boolean} withBlockActions - by default, Toolbar opens with Block Actions.\n * This flag allows to open Toolbar without Actions.\n */\n open(e = !0) {\n re(() => {\n this.nodes.wrapper.classList.add(this.CSS.toolbarOpened), e ? this.blockActions.show() : this.blockActions.hide();\n }, 50)();\n }\n /**\n * Draws Toolbar elements\n */\n make() {\n this.nodes.wrapper = d.make(\"div\", this.CSS.toolbar), [\"content\", \"actions\"].forEach((t) => {\n this.nodes[t] = d.make(\"div\", this.CSS[t]);\n }), d.append(this.nodes.wrapper, this.nodes.content), d.append(this.nodes.content, this.nodes.actions), this.nodes.plusButton = d.make(\"div\", this.CSS.plusButton, {\n innerHTML: _o\n }), d.append(this.nodes.actions, this.nodes.plusButton), this.readOnlyMutableListeners.on(this.nodes.plusButton, \"click\", () => {\n this.tooltip.hide(!0), this.plusButtonClicked();\n }, !1);\n const e = d.make(\"div\");\n e.appendChild(document.createTextNode($.ui(X.ui.toolbar.toolbox, \"Add\"))), e.appendChild(d.make(\"div\", this.CSS.plusButtonShortcut, {\n textContent: \"⇥ Tab\"\n })), this.tooltip.onHover(this.nodes.plusButton, e, {\n hidingDelay: 400\n }), this.nodes.settingsToggler = d.make(\"span\", this.CSS.settingsToggler, {\n innerHTML: Ao\n }), d.append(this.nodes.actions, this.nodes.settingsToggler), this.tooltip.onHover(\n this.nodes.settingsToggler,\n $.ui(X.ui.blockTunes.toggler, \"Click to tune\"),\n {\n hidingDelay: 400\n }\n ), d.append(this.nodes.actions, this.makeToolbox()), d.append(this.nodes.actions, this.Editor.BlockSettings.getElement()), d.append(this.Editor.UI.nodes.wrapper, this.nodes.wrapper);\n }\n /**\n * Creates the Toolbox instance and return it's rendered element\n */\n makeToolbox() {\n return this.toolboxInstance = new ze({\n api: this.Editor.API.methods,\n tools: this.Editor.Tools.blockTools,\n i18nLabels: {\n filter: $.ui(X.ui.popover, \"Filter\"),\n nothingFound: $.ui(X.ui.popover, \"Nothing found\")\n }\n }), this.toolboxInstance.on(me.Opened, () => {\n this.Editor.UI.nodes.wrapper.classList.add(this.CSS.openedToolboxHolderModifier);\n }), this.toolboxInstance.on(me.Closed, () => {\n this.Editor.UI.nodes.wrapper.classList.remove(this.CSS.openedToolboxHolderModifier);\n }), this.toolboxInstance.on(me.BlockAdded, ({ block: e }) => {\n const { BlockManager: t, Caret: o } = this.Editor, i = t.getBlockById(e.id);\n i.inputs.length === 0 && (i === t.lastBlock ? (t.insertAtEnd(), o.setToBlock(t.lastBlock)) : o.setToBlock(t.nextBlock));\n }), this.toolboxInstance.make();\n }\n /**\n * Handler for Plus Button\n */\n plusButtonClicked() {\n var e;\n this.Editor.BlockManager.currentBlock = this.hoveredBlock, (e = this.toolboxInstance) == null || e.toggle();\n }\n /**\n * Enable bindings\n */\n enableModuleBindings() {\n this.readOnlyMutableListeners.on(this.nodes.settingsToggler, \"mousedown\", (e) => {\n var t;\n e.stopPropagation(), this.settingsTogglerClicked(), (t = this.toolboxInstance) != null && t.opened && this.toolboxInstance.close(), this.tooltip.hide(!0);\n }, !0), te() || this.eventsDispatcher.on(kt, (e) => {\n var t;\n this.Editor.BlockSettings.opened || (t = this.toolboxInstance) != null && t.opened || this.moveAndOpen(e.block);\n });\n }\n /**\n * Disable bindings\n */\n disableModuleBindings() {\n this.readOnlyMutableListeners.clearAll();\n }\n /**\n * Clicks on the Block Settings toggler\n */\n settingsTogglerClicked() {\n this.Editor.BlockManager.currentBlock = this.hoveredBlock, this.Editor.BlockSettings.opened ? this.Editor.BlockSettings.close() : this.Editor.BlockSettings.open(this.hoveredBlock);\n }\n /**\n * Draws Toolbar UI\n *\n * Toolbar contains BlockSettings and Toolbox.\n * That's why at first we draw its components and then Toolbar itself\n *\n * Steps:\n * - Make Toolbar dependent components like BlockSettings, Toolbox and so on\n * - Make itself and append dependent nodes to itself\n *\n */\n drawUI() {\n this.Editor.BlockSettings.make(), this.make();\n }\n /**\n * Removes all created and saved HTMLElements\n * It is used in Read-Only mode\n */\n destroy() {\n this.removeAllNodes(), this.toolboxInstance && this.toolboxInstance.destroy(), this.tooltip.destroy();\n }\n}\nvar ye = /* @__PURE__ */ ((s) => (s[s.Block = 0] = \"Block\", s[s.Inline = 1] = \"Inline\", s[s.Tune = 2] = \"Tune\", s))(ye || {}), ke = /* @__PURE__ */ ((s) => (s.Shortcut = \"shortcut\", s.Toolbox = \"toolbox\", s.EnabledInlineTools = \"inlineToolbar\", s.EnabledBlockTunes = \"tunes\", s.Config = \"config\", s))(ke || {}), vt = /* @__PURE__ */ ((s) => (s.Shortcut = \"shortcut\", s.SanitizeConfig = \"sanitize\", s))(vt || {}), se = /* @__PURE__ */ ((s) => (s.IsEnabledLineBreaks = \"enableLineBreaks\", s.Toolbox = \"toolbox\", s.ConversionConfig = \"conversionConfig\", s.IsReadOnlySupported = \"isReadOnlySupported\", s.PasteConfig = \"pasteConfig\", s))(se || {}), Ue = /* @__PURE__ */ ((s) => (s.IsInline = \"isInline\", s.Title = \"title\", s))(Ue || {}), xt = /* @__PURE__ */ ((s) => (s.IsTune = \"isTune\", s))(xt || {});\nclass $e {\n /**\n * @class\n * @param {ConstructorOptions} options - Constructor options\n */\n constructor({\n name: e,\n constructable: t,\n config: o,\n api: i,\n isDefault: n,\n isInternal: r = !1,\n defaultPlaceholder: a\n }) {\n this.api = i, this.name = e, this.constructable = t, this.config = o, this.isDefault = n, this.isInternal = r, this.defaultPlaceholder = a;\n }\n /**\n * Returns Tool user configuration\n */\n get settings() {\n const e = this.config.config || {};\n return this.isDefault && !(\"placeholder\" in e) && this.defaultPlaceholder && (e.placeholder = this.defaultPlaceholder), e;\n }\n /**\n * Calls Tool's reset method\n */\n reset() {\n if (D(this.constructable.reset))\n return this.constructable.reset();\n }\n /**\n * Calls Tool's prepare method\n */\n prepare() {\n if (D(this.constructable.prepare))\n return this.constructable.prepare({\n toolName: this.name,\n config: this.settings\n });\n }\n /**\n * Returns shortcut for Tool (internal or specified by user)\n */\n get shortcut() {\n const e = this.constructable.shortcut;\n return this.config.shortcut || e;\n }\n /**\n * Returns Tool's sanitizer configuration\n */\n get sanitizeConfig() {\n return this.constructable.sanitize || {};\n }\n /**\n * Returns true if Tools is inline\n */\n isInline() {\n return this.type === 1;\n }\n /**\n * Returns true if Tools is block\n */\n isBlock() {\n return this.type === 0;\n }\n /**\n * Returns true if Tools is tune\n */\n isTune() {\n return this.type === 2;\n }\n}\nclass Xo extends C {\n /**\n * @class\n * @param moduleConfiguration - Module Configuration\n * @param moduleConfiguration.config - Editor's config\n * @param moduleConfiguration.eventsDispatcher - Editor's event dispatcher\n */\n constructor({ config: e, eventsDispatcher: t }) {\n super({\n config: e,\n eventsDispatcher: t\n }), this.CSS = {\n inlineToolbar: \"ce-inline-toolbar\",\n inlineToolbarShowed: \"ce-inline-toolbar--showed\",\n inlineToolbarLeftOriented: \"ce-inline-toolbar--left-oriented\",\n inlineToolbarRightOriented: \"ce-inline-toolbar--right-oriented\",\n inlineToolbarShortcut: \"ce-inline-toolbar__shortcut\",\n buttonsWrapper: \"ce-inline-toolbar__buttons\",\n actionsWrapper: \"ce-inline-toolbar__actions\",\n inlineToolButton: \"ce-inline-tool\",\n inputField: \"cdx-input\",\n focusedButton: \"ce-inline-tool--focused\",\n conversionToggler: \"ce-inline-toolbar__dropdown\",\n conversionTogglerArrow: \"ce-inline-toolbar__dropdown-arrow\",\n conversionTogglerHidden: \"ce-inline-toolbar__dropdown--hidden\",\n conversionTogglerContent: \"ce-inline-toolbar__dropdown-content\",\n togglerAndButtonsWrapper: \"ce-inline-toolbar__toggler-and-button-wrapper\"\n }, this.opened = !1, this.toolbarVerticalMargin = te() ? 20 : 6, this.buttonsList = null, this.width = 0, this.flipper = null, this.tooltip = new He();\n }\n /**\n * Toggles read-only mode\n *\n * @param {boolean} readOnlyEnabled - read-only mode\n */\n toggleReadOnly(e) {\n e ? (this.destroy(), this.Editor.ConversionToolbar.destroy()) : window.requestIdleCallback(() => {\n this.make();\n }, { timeout: 2e3 });\n }\n /**\n * Moving / appearance\n * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n */\n /**\n * Shows Inline Toolbar if something is selected\n *\n * @param [needToClose] - pass true to close toolbar if it is not allowed.\n * Avoid to use it just for closing IT, better call .close() clearly.\n * @param [needToShowConversionToolbar] - pass false to not to show Conversion Toolbar\n */\n tryToShow(e = !1, t = !0) {\n if (!this.allowedToShow()) {\n e && this.close();\n return;\n }\n this.move(), this.open(t), this.Editor.Toolbar.close();\n }\n /**\n * Move Toolbar to the selected text\n */\n move() {\n const e = m.rect, t = this.Editor.UI.nodes.wrapper.getBoundingClientRect(), o = {\n x: e.x - t.left,\n y: e.y + e.height - // + window.scrollY\n t.top + this.toolbarVerticalMargin\n };\n e.width && (o.x += Math.floor(e.width / 2));\n const i = o.x - this.width / 2, n = o.x + this.width / 2;\n this.nodes.wrapper.classList.toggle(\n this.CSS.inlineToolbarLeftOriented,\n i < this.Editor.UI.contentRect.left\n ), this.nodes.wrapper.classList.toggle(\n this.CSS.inlineToolbarRightOriented,\n n > this.Editor.UI.contentRect.right\n ), this.nodes.wrapper.style.left = Math.floor(o.x) + \"px\", this.nodes.wrapper.style.top = Math.floor(o.y) + \"px\";\n }\n /**\n * Hides Inline Toolbar\n */\n close() {\n this.opened && (this.Editor.ReadOnly.isEnabled || (this.nodes.wrapper.classList.remove(this.CSS.inlineToolbarShowed), Array.from(this.toolsInstances.entries()).forEach(([e, t]) => {\n const o = this.getToolShortcut(e);\n o && le.remove(this.Editor.UI.nodes.redactor, o), D(t.clear) && t.clear();\n }), this.opened = !1, this.flipper.deactivate(), this.Editor.ConversionToolbar.close()));\n }\n /**\n * Shows Inline Toolbar\n *\n * @param [needToShowConversionToolbar] - pass false to not to show Conversion Toolbar\n */\n open(e = !0) {\n if (this.opened)\n return;\n this.addToolsFiltered(), this.nodes.wrapper.classList.add(this.CSS.inlineToolbarShowed), this.buttonsList = this.nodes.buttons.querySelectorAll(`.${this.CSS.inlineToolButton}`), this.opened = !0, e && this.Editor.ConversionToolbar.hasTools() ? this.setConversionTogglerContent() : this.nodes.conversionToggler.hidden = !0;\n let t = Array.from(this.buttonsList);\n t.unshift(this.nodes.conversionToggler), t = t.filter((o) => !o.hidden), this.flipper.activate(t);\n }\n /**\n * Check if node is contained by Inline Toolbar\n *\n * @param {Node} node — node to check\n */\n containsNode(e) {\n return this.nodes.wrapper.contains(e);\n }\n /**\n * Removes UI and its components\n */\n destroy() {\n this.flipper && (this.flipper.deactivate(), this.flipper = null), this.removeAllNodes(), this.tooltip.destroy();\n }\n /**\n * Making DOM\n */\n make() {\n this.nodes.wrapper = d.make(\"div\", [\n this.CSS.inlineToolbar,\n ...this.isRtl ? [this.Editor.UI.CSS.editorRtlFix] : []\n ]), this.nodes.togglerAndButtonsWrapper = d.make(\"div\", this.CSS.togglerAndButtonsWrapper), this.nodes.buttons = d.make(\"div\", this.CSS.buttonsWrapper), this.nodes.actions = d.make(\"div\", this.CSS.actionsWrapper), this.listeners.on(this.nodes.wrapper, \"mousedown\", (e) => {\n e.target.closest(`.${this.CSS.actionsWrapper}`) || e.preventDefault();\n }), d.append(this.nodes.wrapper, [this.nodes.togglerAndButtonsWrapper, this.nodes.actions]), d.append(this.Editor.UI.nodes.wrapper, this.nodes.wrapper), this.addConversionToggler(), d.append(this.nodes.togglerAndButtonsWrapper, this.nodes.buttons), this.prepareConversionToolbar(), window.requestAnimationFrame(() => {\n this.recalculateWidth();\n }), this.enableFlipper();\n }\n /**\n * Need to show Inline Toolbar or not\n */\n allowedToShow() {\n const e = [\"IMG\", \"INPUT\"], t = m.get(), o = m.text;\n if (!t || !t.anchorNode || t.isCollapsed || o.length < 1)\n return !1;\n const i = d.isElement(t.anchorNode) ? t.anchorNode : t.anchorNode.parentElement;\n if (t && e.includes(i.tagName) || i.closest('[contenteditable=\"true\"]') === null)\n return !1;\n const r = this.Editor.BlockManager.getBlock(t.anchorNode);\n return r ? r.tool.inlineTools.size !== 0 : !1;\n }\n /**\n * Recalculate inline toolbar width\n */\n recalculateWidth() {\n this.width = this.nodes.wrapper.offsetWidth;\n }\n /**\n * Create a toggler for Conversion Dropdown\n * and prepend it to the buttons list\n */\n addConversionToggler() {\n this.nodes.conversionToggler = d.make(\"div\", this.CSS.conversionToggler), this.nodes.conversionTogglerContent = d.make(\"div\", this.CSS.conversionTogglerContent);\n const e = d.make(\"div\", this.CSS.conversionTogglerArrow, {\n innerHTML: ft\n });\n this.nodes.conversionToggler.appendChild(this.nodes.conversionTogglerContent), this.nodes.conversionToggler.appendChild(e), this.nodes.togglerAndButtonsWrapper.appendChild(this.nodes.conversionToggler), this.listeners.on(this.nodes.conversionToggler, \"click\", () => {\n this.Editor.ConversionToolbar.toggle((t) => {\n !t && this.opened ? this.flipper.activate() : this.opened && this.flipper.deactivate();\n });\n }), te() === !1 && this.tooltip.onHover(this.nodes.conversionToggler, $.ui(X.ui.inlineToolbar.converter, \"Convert to\"), {\n placement: \"top\",\n hidingDelay: 100\n });\n }\n /**\n * Changes Conversion Dropdown content for current block's Tool\n */\n async setConversionTogglerContent() {\n const { BlockManager: e } = this.Editor, { currentBlock: t } = e, o = t.name, i = t.tool.conversionConfig, n = i && i.export;\n this.nodes.conversionToggler.hidden = !n, this.nodes.conversionToggler.classList.toggle(this.CSS.conversionTogglerHidden, !n);\n const r = await t.getActiveToolboxEntry() || {};\n this.nodes.conversionTogglerContent.innerHTML = r.icon || r.title || ae(o);\n }\n /**\n * Makes the Conversion Dropdown\n */\n prepareConversionToolbar() {\n const e = this.Editor.ConversionToolbar.make();\n d.append(this.nodes.wrapper, e);\n }\n /**\n * Working with Tools\n * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n */\n /**\n * Append only allowed Tools\n */\n addToolsFiltered() {\n const e = m.get(), t = this.Editor.BlockManager.getBlock(e.anchorNode);\n this.nodes.buttons.innerHTML = \"\", this.nodes.actions.innerHTML = \"\", this.toolsInstances = /* @__PURE__ */ new Map(), Array.from(t.tool.inlineTools.values()).forEach((o) => {\n this.addTool(o);\n }), this.recalculateWidth();\n }\n /**\n * Add tool button and activate clicks\n *\n * @param {InlineTool} tool - InlineTool object\n */\n addTool(e) {\n const t = e.create(), o = t.render();\n if (!o) {\n L(\"Render method must return an instance of Node\", \"warn\", e.name);\n return;\n }\n if (o.dataset.tool = e.name, this.nodes.buttons.appendChild(o), this.toolsInstances.set(e.name, t), D(t.renderActions)) {\n const a = t.renderActions();\n this.nodes.actions.appendChild(a);\n }\n this.listeners.on(o, \"click\", (a) => {\n this.toolClicked(t), a.preventDefault();\n });\n const i = this.getToolShortcut(e.name);\n if (i)\n try {\n this.enableShortcuts(t, i);\n } catch {\n }\n const n = d.make(\"div\"), r = $.t(\n X.toolNames,\n e.title || ae(e.name)\n );\n n.appendChild(d.text(r)), i && n.appendChild(d.make(\"div\", this.CSS.inlineToolbarShortcut, {\n textContent: Re(i)\n })), te() === !1 && this.tooltip.onHover(o, n, {\n placement: \"top\",\n hidingDelay: 100\n }), t.checkState(m.get());\n }\n /**\n * Get shortcut name for tool\n *\n * @param toolName — Tool name\n */\n getToolShortcut(e) {\n const { Tools: t } = this.Editor, o = t.inlineTools.get(e), i = t.internal.inlineTools;\n return Array.from(i.keys()).includes(e) ? this.inlineTools[e][vt.Shortcut] : o.shortcut;\n }\n /**\n * Enable Tool shortcut with Editor Shortcuts Module\n *\n * @param {InlineTool} tool - Tool instance\n * @param {string} shortcut - shortcut according to the ShortcutData Module format\n */\n enableShortcuts(e, t) {\n le.add({\n name: t,\n handler: (o) => {\n const { currentBlock: i } = this.Editor.BlockManager;\n i && i.tool.enabledInlineTools && (o.preventDefault(), this.toolClicked(e));\n },\n on: this.Editor.UI.nodes.redactor\n });\n }\n /**\n * Inline Tool button clicks\n *\n * @param {InlineTool} tool - Tool's instance\n */\n toolClicked(e) {\n const t = m.range;\n e.surround(t), this.checkToolsState(), e.renderActions !== void 0 && this.flipper.deactivate();\n }\n /**\n * Check Tools` state by selection\n */\n checkToolsState() {\n this.toolsInstances.forEach((e) => {\n e.checkState(m.get());\n });\n }\n /**\n * Get inline tools tools\n * Tools that has isInline is true\n */\n get inlineTools() {\n const e = {};\n return Array.from(this.Editor.Tools.inlineTools.entries()).forEach(([t, o]) => {\n e[t] = o.create();\n }), e;\n }\n /**\n * Allow to leaf buttons by arrows / tab\n * Buttons will be filled on opening\n */\n enableFlipper() {\n this.flipper = new G({\n focusedItemClass: this.CSS.focusedButton,\n allowedKeys: [\n B.ENTER,\n B.TAB\n ]\n });\n }\n}\nclass Vo extends C {\n /**\n * All keydowns on Block\n *\n * @param {KeyboardEvent} event - keydown\n */\n keydown(e) {\n switch (this.beforeKeydownProcessing(e), e.keyCode) {\n case B.BACKSPACE:\n this.backspace(e);\n break;\n case B.DELETE:\n this.delete(e);\n break;\n case B.ENTER:\n this.enter(e);\n break;\n case B.DOWN:\n case B.RIGHT:\n this.arrowRightAndDown(e);\n break;\n case B.UP:\n case B.LEFT:\n this.arrowLeftAndUp(e);\n break;\n case B.TAB:\n this.tabPressed(e);\n break;\n }\n }\n /**\n * Fires on keydown before event processing\n *\n * @param {KeyboardEvent} event - keydown\n */\n beforeKeydownProcessing(e) {\n this.needToolbarClosing(e) && nt(e.keyCode) && (this.Editor.Toolbar.close(), this.Editor.ConversionToolbar.close(), e.ctrlKey || e.metaKey || e.altKey || e.shiftKey || (this.Editor.BlockManager.clearFocused(), this.Editor.BlockSelection.clearSelection(e)));\n }\n /**\n * Key up on Block:\n * - shows Inline Toolbar if something selected\n * - shows conversion toolbar with 85% of block selection\n *\n * @param {KeyboardEvent} event - keyup event\n */\n keyup(e) {\n e.shiftKey || this.Editor.UI.checkEmptiness();\n }\n /**\n * Open Toolbox to leaf Tools\n *\n * @param {KeyboardEvent} event - tab keydown event\n */\n tabPressed(e) {\n this.Editor.BlockSelection.clearSelection(e);\n const { BlockManager: t, InlineToolbar: o, ConversionToolbar: i } = this.Editor, n = t.currentBlock;\n if (!n)\n return;\n const r = n.isEmpty, a = n.tool.isDefault && r, l = !r && i.opened, c = !r && !m.isCollapsed && o.opened;\n a ? this.activateToolbox() : !l && !c && this.activateBlockSettings();\n }\n /**\n * Add drop target styles\n *\n * @param {DragEvent} event - drag over event\n */\n dragOver(e) {\n const t = this.Editor.BlockManager.getBlockByChildNode(e.target);\n t.dropTarget = !0;\n }\n /**\n * Remove drop target style\n *\n * @param {DragEvent} event - drag leave event\n */\n dragLeave(e) {\n const t = this.Editor.BlockManager.getBlockByChildNode(e.target);\n t.dropTarget = !1;\n }\n /**\n * Copying selected blocks\n * Before putting to the clipboard we sanitize all blocks and then copy to the clipboard\n *\n * @param {ClipboardEvent} event - clipboard event\n */\n handleCommandC(e) {\n const { BlockSelection: t } = this.Editor;\n t.anyBlockSelected && t.copySelectedBlocks(e);\n }\n /**\n * Copy and Delete selected Blocks\n *\n * @param {ClipboardEvent} event - clipboard event\n */\n handleCommandX(e) {\n const { BlockSelection: t, BlockManager: o, Caret: i } = this.Editor;\n t.anyBlockSelected && t.copySelectedBlocks(e).then(() => {\n const n = o.removeSelectedBlocks(), r = o.insertDefaultBlockAtIndex(n, !0);\n i.setToBlock(r, i.positions.START), t.clearSelection(e);\n });\n }\n /**\n * ENTER pressed on block\n *\n * @param {KeyboardEvent} event - keydown\n */\n enter(e) {\n const { BlockManager: t, UI: o } = this.Editor;\n if (t.currentBlock.tool.isLineBreaksEnabled || o.someToolbarOpened && o.someFlipperButtonFocused || e.shiftKey)\n return;\n let n = this.Editor.BlockManager.currentBlock;\n this.Editor.Caret.isAtStart && !this.Editor.BlockManager.currentBlock.hasMedia ? this.Editor.BlockManager.insertDefaultBlockAtIndex(this.Editor.BlockManager.currentBlockIndex) : this.Editor.Caret.isAtEnd ? n = this.Editor.BlockManager.insertDefaultBlockAtIndex(this.Editor.BlockManager.currentBlockIndex + 1) : n = this.Editor.BlockManager.split(), this.Editor.Caret.setToBlock(n), this.Editor.Toolbar.moveAndOpen(n), e.preventDefault();\n }\n /**\n * Handle backspace keydown on Block\n *\n * @param {KeyboardEvent} event - keydown\n */\n backspace(e) {\n const { BlockManager: t, Caret: o } = this.Editor, { currentBlock: i, previousBlock: n } = t;\n if (!m.isCollapsed || !o.isAtStart)\n return;\n if (e.preventDefault(), this.Editor.Toolbar.close(), !(i.currentInput === i.firstInput)) {\n o.navigatePrevious();\n return;\n }\n if (n === null)\n return;\n if (n.isEmpty) {\n t.removeBlock(n);\n return;\n }\n if (i.isEmpty) {\n t.removeBlock(i);\n const l = t.currentBlock;\n o.setToBlock(l, o.positions.END);\n return;\n }\n Je(i, n) ? this.mergeBlocks(n, i) : o.setToBlock(n, o.positions.END);\n }\n /**\n * Handles delete keydown on Block\n * Removes char after the caret.\n * If caret is at the end of the block, merge next block with current\n *\n * @param {KeyboardEvent} event - keydown\n */\n delete(e) {\n const { BlockManager: t, Caret: o } = this.Editor, { currentBlock: i, nextBlock: n } = t;\n if (!m.isCollapsed || !o.isAtEnd)\n return;\n if (e.preventDefault(), this.Editor.Toolbar.close(), !(i.currentInput === i.lastInput)) {\n o.navigateNext();\n return;\n }\n if (n === null)\n return;\n if (n.isEmpty) {\n t.removeBlock(n);\n return;\n }\n if (i.isEmpty) {\n t.removeBlock(i), o.setToBlock(n, o.positions.START);\n return;\n }\n Je(i, n) ? this.mergeBlocks(i, n) : o.setToBlock(n, o.positions.START);\n }\n /**\n * Merge passed Blocks\n *\n * @param targetBlock - to which Block we want to merge\n * @param blockToMerge - what Block we want to merge\n */\n mergeBlocks(e, t) {\n const { BlockManager: o, Caret: i, Toolbar: n } = this.Editor;\n i.createShadow(e.pluginsContent), o.mergeBlocks(e, t).then(() => {\n window.requestAnimationFrame(() => {\n i.restoreCaret(e.pluginsContent), e.pluginsContent.normalize(), n.close();\n });\n });\n }\n /**\n * Handle right and down keyboard keys\n *\n * @param {KeyboardEvent} event - keyboard event\n */\n arrowRightAndDown(e) {\n const t = G.usedKeys.includes(e.keyCode) && (!e.shiftKey || e.keyCode === B.TAB);\n if (this.Editor.UI.someToolbarOpened && t)\n return;\n this.Editor.BlockManager.clearFocused(), this.Editor.Toolbar.close();\n const o = this.Editor.Caret.isAtEnd || this.Editor.BlockSelection.anyBlockSelected;\n if (e.shiftKey && e.keyCode === B.DOWN && o) {\n this.Editor.CrossBlockSelection.toggleBlockSelectedState();\n return;\n }\n (e.keyCode === B.DOWN || e.keyCode === B.RIGHT && !this.isRtl ? this.Editor.Caret.navigateNext() : this.Editor.Caret.navigatePrevious()) ? e.preventDefault() : re(() => {\n this.Editor.BlockManager.currentBlock && this.Editor.BlockManager.currentBlock.updateCurrentInput();\n }, 20)(), this.Editor.BlockSelection.clearSelection(e);\n }\n /**\n * Handle left and up keyboard keys\n *\n * @param {KeyboardEvent} event - keyboard event\n */\n arrowLeftAndUp(e) {\n if (this.Editor.UI.someToolbarOpened) {\n if (G.usedKeys.includes(e.keyCode) && (!e.shiftKey || e.keyCode === B.TAB))\n return;\n this.Editor.UI.closeAllToolbars();\n }\n this.Editor.BlockManager.clearFocused(), this.Editor.Toolbar.close();\n const t = this.Editor.Caret.isAtStart || this.Editor.BlockSelection.anyBlockSelected;\n if (e.shiftKey && e.keyCode === B.UP && t) {\n this.Editor.CrossBlockSelection.toggleBlockSelectedState(!1);\n return;\n }\n (e.keyCode === B.UP || e.keyCode === B.LEFT && !this.isRtl ? this.Editor.Caret.navigatePrevious() : this.Editor.Caret.navigateNext()) ? e.preventDefault() : re(() => {\n this.Editor.BlockManager.currentBlock && this.Editor.BlockManager.currentBlock.updateCurrentInput();\n }, 20)(), this.Editor.BlockSelection.clearSelection(e);\n }\n /**\n * Cases when we need to close Toolbar\n *\n * @param {KeyboardEvent} event - keyboard event\n */\n needToolbarClosing(e) {\n const t = e.keyCode === B.ENTER && this.Editor.Toolbar.toolbox.opened, o = e.keyCode === B.ENTER && this.Editor.BlockSettings.opened, i = e.keyCode === B.ENTER && this.Editor.InlineToolbar.opened, n = e.keyCode === B.ENTER && this.Editor.ConversionToolbar.opened, r = e.keyCode === B.TAB;\n return !(e.shiftKey || r || t || o || i || n);\n }\n /**\n * If Toolbox is not open, then just open it and show plus button\n */\n activateToolbox() {\n this.Editor.Toolbar.opened || this.Editor.Toolbar.moveAndOpen(), this.Editor.Toolbar.toolbox.open();\n }\n /**\n * Open Toolbar and show BlockSettings before flipping Tools\n */\n activateBlockSettings() {\n this.Editor.Toolbar.opened || (this.Editor.BlockManager.currentBlock.focused = !0, this.Editor.Toolbar.moveAndOpen()), this.Editor.BlockSettings.opened || this.Editor.BlockSettings.open();\n }\n}\nclass Te {\n /**\n * @class\n * @param {HTMLElement} workingArea — editor`s working node\n */\n constructor(e) {\n this.blocks = [], this.workingArea = e;\n }\n /**\n * Get length of Block instances array\n *\n * @returns {number}\n */\n get length() {\n return this.blocks.length;\n }\n /**\n * Get Block instances array\n *\n * @returns {Block[]}\n */\n get array() {\n return this.blocks;\n }\n /**\n * Get blocks html elements array\n *\n * @returns {HTMLElement[]}\n */\n get nodes() {\n return st(this.workingArea.children);\n }\n /**\n * Proxy trap to implement array-like setter\n *\n * @example\n * blocks[0] = new Block(...)\n * @param {Blocks} instance — Blocks instance\n * @param {PropertyKey} property — block index or any Blocks class property key to set\n * @param {Block} value — value to set\n * @returns {boolean}\n */\n static set(e, t, o) {\n return isNaN(Number(t)) ? (Reflect.set(e, t, o), !0) : (e.insert(+t, o), !0);\n }\n /**\n * Proxy trap to implement array-like getter\n *\n * @param {Blocks} instance — Blocks instance\n * @param {PropertyKey} property — Blocks class property key\n * @returns {Block|*}\n */\n static get(e, t) {\n return isNaN(Number(t)) ? Reflect.get(e, t) : e.get(+t);\n }\n /**\n * Push new Block to the blocks array and append it to working area\n *\n * @param {Block} block - Block to add\n */\n push(e) {\n this.blocks.push(e), this.insertToDOM(e);\n }\n /**\n * Swaps blocks with indexes first and second\n *\n * @param {number} first - first block index\n * @param {number} second - second block index\n * @deprecated — use 'move' instead\n */\n swap(e, t) {\n const o = this.blocks[t];\n d.swap(this.blocks[e].holder, o.holder), this.blocks[t] = this.blocks[e], this.blocks[e] = o;\n }\n /**\n * Move a block from one to another index\n *\n * @param {number} toIndex - new index of the block\n * @param {number} fromIndex - block to move\n */\n move(e, t) {\n const o = this.blocks.splice(t, 1)[0], i = e - 1, n = Math.max(0, i), r = this.blocks[n];\n e > 0 ? this.insertToDOM(o, \"afterend\", r) : this.insertToDOM(o, \"beforebegin\", r), this.blocks.splice(e, 0, o);\n const a = this.composeBlockEvent(\"move\", {\n fromIndex: t,\n toIndex: e\n });\n o.call(q.MOVED, a);\n }\n /**\n * Insert new Block at passed index\n *\n * @param {number} index — index to insert Block\n * @param {Block} block — Block to insert\n * @param {boolean} replace — it true, replace block on given index\n */\n insert(e, t, o = !1) {\n if (!this.length) {\n this.push(t);\n return;\n }\n e > this.length && (e = this.length), o && (this.blocks[e].holder.remove(), this.blocks[e].call(q.REMOVED));\n const i = o ? 1 : 0;\n if (this.blocks.splice(e, i, t), e > 0) {\n const n = this.blocks[e - 1];\n this.insertToDOM(t, \"afterend\", n);\n } else {\n const n = this.blocks[e + 1];\n n ? this.insertToDOM(t, \"beforebegin\", n) : this.insertToDOM(t);\n }\n }\n /**\n * Replaces block under passed index with passed block\n *\n * @param index - index of existed block\n * @param block - new block\n */\n replace(e, t) {\n if (this.blocks[e] === void 0)\n throw Error(\"Incorrect index\");\n this.blocks[e].holder.replaceWith(t.holder), this.blocks[e] = t;\n }\n /**\n * Inserts several blocks at once\n *\n * @param blocks - blocks to insert\n * @param index - index to insert blocks at\n */\n insertMany(e, t) {\n const o = new DocumentFragment();\n for (const i of e)\n o.appendChild(i.holder);\n if (this.length > 0) {\n if (t > 0) {\n const i = Math.min(t - 1, this.length - 1);\n this.blocks[i].holder.after(o);\n } else\n t === 0 && this.workingArea.prepend(o);\n this.blocks.splice(t, 0, ...e);\n } else\n this.blocks.push(...e), this.workingArea.appendChild(o);\n e.forEach((i) => i.call(q.RENDERED));\n }\n /**\n * Remove block\n *\n * @param {number} index - index of Block to remove\n */\n remove(e) {\n isNaN(e) && (e = this.length - 1), this.blocks[e].holder.remove(), this.blocks[e].call(q.REMOVED), this.blocks.splice(e, 1);\n }\n /**\n * Remove all blocks\n */\n removeAll() {\n this.workingArea.innerHTML = \"\", this.blocks.forEach((e) => e.call(q.REMOVED)), this.blocks.length = 0;\n }\n /**\n * Insert Block after passed target\n *\n * @todo decide if this method is necessary\n * @param {Block} targetBlock — target after which Block should be inserted\n * @param {Block} newBlock — Block to insert\n */\n insertAfter(e, t) {\n const o = this.blocks.indexOf(e);\n this.insert(o + 1, t);\n }\n /**\n * Get Block by index\n *\n * @param {number} index — Block index\n * @returns {Block}\n */\n get(e) {\n return this.blocks[e];\n }\n /**\n * Return index of passed Block\n *\n * @param {Block} block - Block to find\n * @returns {number}\n */\n indexOf(e) {\n return this.blocks.indexOf(e);\n }\n /**\n * Insert new Block into DOM\n *\n * @param {Block} block - Block to insert\n * @param {InsertPosition} position — insert position (if set, will use insertAdjacentElement)\n * @param {Block} target — Block related to position\n */\n insertToDOM(e, t, o) {\n t ? o.holder.insertAdjacentElement(t, e.holder) : this.workingArea.appendChild(e.holder), e.call(q.RENDERED);\n }\n /**\n * Composes Block event with passed type and details\n *\n * @param {string} type - event type\n * @param {object} detail - event detail\n */\n composeBlockEvent(e, t) {\n return new CustomEvent(e, {\n detail: t\n });\n }\n}\nconst et = \"block-removed\", tt = \"block-added\", qo = \"block-moved\", ot = \"block-changed\";\nclass Zo {\n constructor() {\n this.completed = Promise.resolve();\n }\n /**\n * Add new promise to queue\n *\n * @param operation - promise should be added to queue\n */\n add(e) {\n return new Promise((t, o) => {\n this.completed = this.completed.then(e).then(t).catch(o);\n });\n }\n}\nclass Go extends C {\n constructor() {\n super(...arguments), this._currentBlockIndex = -1, this._blocks = null;\n }\n /**\n * Returns current Block index\n *\n * @returns {number}\n */\n get currentBlockIndex() {\n return this._currentBlockIndex;\n }\n /**\n * Set current Block index and fire Block lifecycle callbacks\n *\n * @param {number} newIndex - index of Block to set as current\n */\n set currentBlockIndex(e) {\n this._currentBlockIndex = e;\n }\n /**\n * returns first Block\n *\n * @returns {Block}\n */\n get firstBlock() {\n return this._blocks[0];\n }\n /**\n * returns last Block\n *\n * @returns {Block}\n */\n get lastBlock() {\n return this._blocks[this._blocks.length - 1];\n }\n /**\n * Get current Block instance\n *\n * @returns {Block}\n */\n get currentBlock() {\n return this._blocks[this.currentBlockIndex];\n }\n /**\n * Set passed Block as a current\n *\n * @param block - block to set as a current\n */\n set currentBlock(e) {\n this.currentBlockIndex = this.getBlockIndex(e);\n }\n /**\n * Returns next Block instance\n *\n * @returns {Block|null}\n */\n get nextBlock() {\n return this.currentBlockIndex === this._blocks.length - 1 ? null : this._blocks[this.currentBlockIndex + 1];\n }\n /**\n * Return first Block with inputs after current Block\n *\n * @returns {Block | undefined}\n */\n get nextContentfulBlock() {\n return this.blocks.slice(this.currentBlockIndex + 1).find((t) => !!t.inputs.length);\n }\n /**\n * Return first Block with inputs before current Block\n *\n * @returns {Block | undefined}\n */\n get previousContentfulBlock() {\n return this.blocks.slice(0, this.currentBlockIndex).reverse().find((t) => !!t.inputs.length);\n }\n /**\n * Returns previous Block instance\n *\n * @returns {Block|null}\n */\n get previousBlock() {\n return this.currentBlockIndex === 0 ? null : this._blocks[this.currentBlockIndex - 1];\n }\n /**\n * Get array of Block instances\n *\n * @returns {Block[]} {@link Blocks#array}\n */\n get blocks() {\n return this._blocks.array;\n }\n /**\n * Check if each Block is empty\n *\n * @returns {boolean}\n */\n get isEditorEmpty() {\n return this.blocks.every((e) => e.isEmpty);\n }\n /**\n * Should be called after Editor.UI preparation\n * Define this._blocks property\n */\n prepare() {\n const e = new Te(this.Editor.UI.nodes.redactor);\n this._blocks = new Proxy(e, {\n set: Te.set,\n get: Te.get\n }), this.listeners.on(\n document,\n \"copy\",\n (t) => this.Editor.BlockEvents.handleCommandC(t)\n );\n }\n /**\n * Toggle read-only state\n *\n * If readOnly is true:\n * - Unbind event handlers from created Blocks\n *\n * if readOnly is false:\n * - Bind event handlers to all existing Blocks\n *\n * @param {boolean} readOnlyEnabled - \"read only\" state\n */\n toggleReadOnly(e) {\n e ? this.disableModuleBindings() : this.enableModuleBindings();\n }\n /**\n * Creates Block instance by tool name\n *\n * @param {object} options - block creation options\n * @param {string} options.tool - tools passed in editor config {@link EditorConfig#tools}\n * @param {string} [options.id] - unique id for this block\n * @param {BlockToolData} [options.data] - constructor params\n * @returns {Block}\n */\n composeBlock({\n tool: e,\n data: t = {},\n id: o = void 0,\n tunes: i = {}\n }) {\n const n = this.Editor.ReadOnly.isEnabled, r = this.Editor.Tools.blockTools.get(e), a = new F({\n id: o,\n data: t,\n tool: r,\n api: this.Editor.API,\n readOnly: n,\n tunesData: i\n }, this.eventsDispatcher);\n return n || window.requestIdleCallback(() => {\n this.bindBlockEvents(a);\n }, { timeout: 2e3 }), a;\n }\n /**\n * Insert new block into _blocks\n *\n * @param {object} options - insert options\n * @param {string} [options.id] - block's unique id\n * @param {string} [options.tool] - plugin name, by default method inserts the default block type\n * @param {object} [options.data] - plugin data\n * @param {number} [options.index] - index where to insert new Block\n * @param {boolean} [options.needToFocus] - flag shows if needed to update current Block index\n * @param {boolean} [options.replace] - flag shows if block by passed index should be replaced with inserted one\n * @returns {Block}\n */\n insert({\n id: e = void 0,\n tool: t = this.config.defaultBlock,\n data: o = {},\n index: i,\n needToFocus: n = !0,\n replace: r = !1,\n tunes: a = {}\n } = {}) {\n let l = i;\n l === void 0 && (l = this.currentBlockIndex + (r ? 0 : 1));\n const c = this.composeBlock({\n id: e,\n tool: t,\n data: o,\n tunes: a\n });\n return r && this.blockDidMutated(et, this.getBlockByIndex(l), {\n index: l\n }), this._blocks.insert(l, c, r), this.blockDidMutated(tt, c, {\n index: l\n }), n ? this.currentBlockIndex = l : l <= this.currentBlockIndex && this.currentBlockIndex++, c;\n }\n /**\n * Inserts several blocks at once\n *\n * @param blocks - blocks to insert\n * @param index - index where to insert\n */\n insertMany(e, t = 0) {\n this._blocks.insertMany(e, t);\n }\n /**\n * Update Block data.\n *\n * Currently we don't have an 'update' method in the Tools API, so we just create a new block with the same id and type\n * Should not trigger 'block-removed' or 'block-added' events\n *\n * @param block - block to update\n * @param data - new data\n */\n async update(e, t) {\n const o = await e.data, i = this.composeBlock({\n id: e.id,\n tool: e.name,\n data: Object.assign({}, o, t),\n tunes: e.tunes\n }), n = this.getBlockIndex(e);\n return this._blocks.replace(n, i), this.blockDidMutated(ot, i, {\n index: n\n }), i;\n }\n /**\n * Replace passed Block with the new one with specified Tool and data\n *\n * @param block - block to replace\n * @param newTool - new Tool name\n * @param data - new Tool data\n */\n replace(e, t, o) {\n const i = this.getBlockIndex(e);\n this.insert({\n tool: t,\n data: o,\n index: i,\n replace: !0\n });\n }\n /**\n * Insert pasted content. Call onPaste callback after insert.\n *\n * @param {string} toolName - name of Tool to insert\n * @param {PasteEvent} pasteEvent - pasted data\n * @param {boolean} replace - should replace current block\n */\n paste(e, t, o = !1) {\n const i = this.insert({\n tool: e,\n replace: o\n });\n try {\n i.call(q.ON_PASTE, t);\n } catch (n) {\n L(`${e}: onPaste callback call is failed`, \"error\", n);\n }\n return i;\n }\n /**\n * Insert new default block at passed index\n *\n * @param {number} index - index where Block should be inserted\n * @param {boolean} needToFocus - if true, updates current Block index\n *\n * TODO: Remove method and use insert() with index instead (?)\n * @returns {Block} inserted Block\n */\n insertDefaultBlockAtIndex(e, t = !1) {\n const o = this.composeBlock({ tool: this.config.defaultBlock });\n return this._blocks[e] = o, this.blockDidMutated(tt, o, {\n index: e\n }), t ? this.currentBlockIndex = e : e <= this.currentBlockIndex && this.currentBlockIndex++, o;\n }\n /**\n * Always inserts at the end\n *\n * @returns {Block}\n */\n insertAtEnd() {\n return this.currentBlockIndex = this.blocks.length - 1, this.insert();\n }\n /**\n * Merge two blocks\n *\n * @param {Block} targetBlock - previous block will be append to this block\n * @param {Block} blockToMerge - block that will be merged with target block\n * @returns {Promise} - the sequence that can be continued\n */\n async mergeBlocks(e, t) {\n const o = await t.data;\n V(o) || await e.mergeWith(o), this.removeBlock(t), this.currentBlockIndex = this._blocks.indexOf(e);\n }\n /**\n * Remove passed Block\n *\n * @param block - Block to remove\n * @param addLastBlock - if true, adds new default block at the end. @todo remove this logic and use event-bus instead\n */\n removeBlock(e, t = !0) {\n return new Promise((o) => {\n const i = this._blocks.indexOf(e);\n if (!this.validateIndex(i))\n throw new Error(\"Can't find a Block to remove\");\n e.destroy(), this._blocks.remove(i), this.blockDidMutated(et, e, {\n index: i\n }), this.currentBlockIndex >= i && this.currentBlockIndex--, this.blocks.length ? i === 0 && (this.currentBlockIndex = 0) : (this.currentBlockIndex = -1, t && this.insert()), o();\n });\n }\n /**\n * Remove only selected Blocks\n * and returns first Block index where started removing...\n *\n * @returns {number|undefined}\n */\n removeSelectedBlocks() {\n let e;\n for (let t = this.blocks.length - 1; t >= 0; t--)\n this.blocks[t].selected && (this.removeBlock(this.blocks[t]), e = t);\n return e;\n }\n /**\n * Attention!\n * After removing insert the new default typed Block and focus on it\n * Removes all blocks\n */\n removeAllBlocks() {\n for (let e = this.blocks.length - 1; e >= 0; e--)\n this._blocks.remove(e);\n this.currentBlockIndex = -1, this.insert(), this.currentBlock.firstInput.focus();\n }\n /**\n * Split current Block\n * 1. Extract content from Caret position to the Block`s end\n * 2. Insert a new Block below current one with extracted content\n *\n * @returns {Block}\n */\n split() {\n const e = this.Editor.Caret.extractFragmentFromCaretPosition(), t = d.make(\"div\");\n t.appendChild(e);\n const o = {\n text: d.isEmpty(t) ? \"\" : t.innerHTML\n };\n return this.insert({ data: o });\n }\n /**\n * Returns Block by passed index\n *\n * @param {number} index - index to get. -1 to get last\n * @returns {Block}\n */\n getBlockByIndex(e) {\n return e === -1 && (e = this._blocks.length - 1), this._blocks[e];\n }\n /**\n * Returns an index for passed Block\n *\n * @param block - block to find index\n */\n getBlockIndex(e) {\n return this._blocks.indexOf(e);\n }\n /**\n * Returns the Block by passed id\n *\n * @param id - id of block to get\n * @returns {Block}\n */\n getBlockById(e) {\n return this._blocks.array.find((t) => t.id === e);\n }\n /**\n * Get Block instance by html element\n *\n * @param {Node} element - html element to get Block by\n */\n getBlock(e) {\n d.isElement(e) || (e = e.parentNode);\n const t = this._blocks.nodes, o = e.closest(`.${F.CSS.wrapper}`), i = t.indexOf(o);\n if (i >= 0)\n return this._blocks[i];\n }\n /**\n * Remove selection from all Blocks then highlight only Current Block\n */\n highlightCurrentNode() {\n this.clearFocused(), this.currentBlock.focused = !0;\n }\n /**\n * Remove selection from all Blocks\n */\n clearFocused() {\n this.blocks.forEach((e) => {\n e.focused = !1;\n });\n }\n /**\n * 1) Find first-level Block from passed child Node\n * 2) Mark it as current\n *\n * @param {Node} childNode - look ahead from this node.\n * @returns {Block | undefined} can return undefined in case when the passed child note is not a part of the current editor instance\n */\n setCurrentBlockByChildNode(e) {\n d.isElement(e) || (e = e.parentNode);\n const t = e.closest(`.${F.CSS.wrapper}`);\n if (!t)\n return;\n const o = t.closest(`.${this.Editor.UI.CSS.editorWrapper}`);\n if (o != null && o.isEqualNode(this.Editor.UI.nodes.wrapper))\n return this.currentBlockIndex = this._blocks.nodes.indexOf(t), this.currentBlock.updateCurrentInput(), this.currentBlock;\n }\n /**\n * Return block which contents passed node\n *\n * @param {Node} childNode - node to get Block by\n * @returns {Block}\n */\n getBlockByChildNode(e) {\n d.isElement(e) || (e = e.parentNode);\n const t = e.closest(`.${F.CSS.wrapper}`);\n return this.blocks.find((o) => o.holder === t);\n }\n /**\n * Swap Blocks Position\n *\n * @param {number} fromIndex - index of first block\n * @param {number} toIndex - index of second block\n * @deprecated — use 'move' instead\n */\n swap(e, t) {\n this._blocks.swap(e, t), this.currentBlockIndex = t;\n }\n /**\n * Move a block to a new index\n *\n * @param {number} toIndex - index where to move Block\n * @param {number} fromIndex - index of Block to move\n */\n move(e, t = this.currentBlockIndex) {\n if (isNaN(e) || isNaN(t)) {\n L(\"Warning during 'move' call: incorrect indices provided.\", \"warn\");\n return;\n }\n if (!this.validateIndex(e) || !this.validateIndex(t)) {\n L(\"Warning during 'move' call: indices cannot be lower than 0 or greater than the amount of blocks.\", \"warn\");\n return;\n }\n this._blocks.move(e, t), this.currentBlockIndex = e, this.blockDidMutated(qo, this.currentBlock, {\n fromIndex: t,\n toIndex: e\n });\n }\n /**\n * Converts passed Block to the new Tool\n * Uses Conversion Config\n *\n * @param blockToConvert - Block that should be converted\n * @param targetToolName - name of the Tool to convert to\n * @param blockDataOverrides - optional new Block data overrides\n */\n async convert(e, t, o) {\n if (!await e.save())\n throw new Error(\"Could not convert Block. Failed to extract original Block data.\");\n const n = this.Editor.Tools.blockTools.get(t);\n if (!n)\n throw new Error(`Could not convert Block. Tool «${t}» not found.`);\n const r = await e.exportDataAsString(), a = Z(\n r,\n n.sanitizeConfig\n );\n let l = Jt(a, n.conversionConfig);\n o && (l = Object.assign(l, o)), this.replace(e, n.name, l);\n }\n /**\n * Sets current Block Index -1 which means unknown\n * and clear highlights\n */\n dropPointer() {\n this.currentBlockIndex = -1, this.clearFocused();\n }\n /**\n * Clears Editor\n *\n * @param {boolean} needToAddDefaultBlock - 1) in internal calls (for example, in api.blocks.render)\n * we don't need to add an empty default block\n * 2) in api.blocks.clear we should add empty block\n */\n async clear(e = !1) {\n const t = new Zo();\n this.blocks.forEach((o) => {\n t.add(async () => {\n await this.removeBlock(o, !1);\n });\n }), await t.completed, this.dropPointer(), e && this.insert(), this.Editor.UI.checkEmptiness();\n }\n /**\n * Cleans up all the block tools' resources\n * This is called when editor is destroyed\n */\n async destroy() {\n await Promise.all(this.blocks.map((e) => e.destroy()));\n }\n /**\n * Bind Block events\n *\n * @param {Block} block - Block to which event should be bound\n */\n bindBlockEvents(e) {\n const { BlockEvents: t } = this.Editor;\n this.readOnlyMutableListeners.on(e.holder, \"keydown\", (o) => {\n t.keydown(o);\n }), this.readOnlyMutableListeners.on(e.holder, \"keyup\", (o) => {\n t.keyup(o);\n }), this.readOnlyMutableListeners.on(e.holder, \"dragover\", (o) => {\n t.dragOver(o);\n }), this.readOnlyMutableListeners.on(e.holder, \"dragleave\", (o) => {\n t.dragLeave(o);\n }), e.on(\"didMutated\", (o) => this.blockDidMutated(ot, o, {\n index: this.getBlockIndex(o)\n }));\n }\n /**\n * Disable mutable handlers and bindings\n */\n disableModuleBindings() {\n this.readOnlyMutableListeners.clearAll();\n }\n /**\n * Enables all module handlers and bindings for all Blocks\n */\n enableModuleBindings() {\n this.readOnlyMutableListeners.on(\n document,\n \"cut\",\n (e) => this.Editor.BlockEvents.handleCommandX(e)\n ), this.blocks.forEach((e) => {\n this.bindBlockEvents(e);\n });\n }\n /**\n * Validates that the given index is not lower than 0 or higher than the amount of blocks\n *\n * @param {number} index - index of blocks array to validate\n * @returns {boolean}\n */\n validateIndex(e) {\n return !(e < 0 || e >= this._blocks.length);\n }\n /**\n * Block mutation callback\n *\n * @param mutationType - what happened with block\n * @param block - mutated block\n * @param detailData - additional data to pass with change event\n */\n blockDidMutated(e, t, o) {\n const i = new CustomEvent(e, {\n detail: {\n target: new ee(t),\n ...o\n }\n });\n return this.eventsDispatcher.emit(ct, {\n event: i\n }), t;\n }\n}\nclass Jo extends C {\n constructor() {\n super(...arguments), this.anyBlockSelectedCache = null, this.needToSelectAll = !1, this.nativeInputSelected = !1, this.readyToBlockSelection = !1;\n }\n /**\n * Sanitizer Config\n *\n * @returns {SanitizerConfig}\n */\n get sanitizerConfig() {\n return {\n p: {},\n h1: {},\n h2: {},\n h3: {},\n h4: {},\n h5: {},\n h6: {},\n ol: {},\n ul: {},\n li: {},\n br: !0,\n img: {\n src: !0,\n width: !0,\n height: !0\n },\n a: {\n href: !0\n },\n b: {},\n i: {},\n u: {}\n };\n }\n /**\n * Flag that identifies all Blocks selection\n *\n * @returns {boolean}\n */\n get allBlocksSelected() {\n const { BlockManager: e } = this.Editor;\n return e.blocks.every((t) => t.selected === !0);\n }\n /**\n * Set selected all blocks\n *\n * @param {boolean} state - state to set\n */\n set allBlocksSelected(e) {\n const { BlockManager: t } = this.Editor;\n t.blocks.forEach((o) => {\n o.selected = e;\n }), this.clearCache();\n }\n /**\n * Flag that identifies any Block selection\n *\n * @returns {boolean}\n */\n get anyBlockSelected() {\n const { BlockManager: e } = this.Editor;\n return this.anyBlockSelectedCache === null && (this.anyBlockSelectedCache = e.blocks.some((t) => t.selected === !0)), this.anyBlockSelectedCache;\n }\n /**\n * Return selected Blocks array\n *\n * @returns {Block[]}\n */\n get selectedBlocks() {\n return this.Editor.BlockManager.blocks.filter((e) => e.selected);\n }\n /**\n * Module Preparation\n * Registers Shortcuts CMD+A and CMD+C\n * to select all and copy them\n */\n prepare() {\n this.selection = new m(), le.add({\n name: \"CMD+A\",\n handler: (e) => {\n const { BlockManager: t, ReadOnly: o } = this.Editor;\n if (o.isEnabled) {\n e.preventDefault(), this.selectAllBlocks();\n return;\n }\n t.currentBlock && this.handleCommandA(e);\n },\n on: this.Editor.UI.nodes.redactor\n });\n }\n /**\n * Toggle read-only state\n *\n * - Remove all ranges\n * - Unselect all Blocks\n */\n toggleReadOnly() {\n m.get().removeAllRanges(), this.allBlocksSelected = !1;\n }\n /**\n * Remove selection of Block\n *\n * @param {number?} index - Block index according to the BlockManager's indexes\n */\n unSelectBlockByIndex(e) {\n const { BlockManager: t } = this.Editor;\n let o;\n isNaN(e) ? o = t.currentBlock : o = t.getBlockByIndex(e), o.selected = !1, this.clearCache();\n }\n /**\n * Clear selection from Blocks\n *\n * @param {Event} reason - event caused clear of selection\n * @param {boolean} restoreSelection - if true, restore saved selection\n */\n clearSelection(e, t = !1) {\n const { BlockManager: o, Caret: i, RectangleSelection: n } = this.Editor;\n this.needToSelectAll = !1, this.nativeInputSelected = !1, this.readyToBlockSelection = !1;\n const r = e && e instanceof KeyboardEvent, a = r && nt(e.keyCode);\n if (this.anyBlockSelected && r && a && !m.isSelectionExists) {\n const l = o.removeSelectedBlocks();\n o.insertDefaultBlockAtIndex(l, !0), i.setToBlock(o.currentBlock), re(() => {\n const c = e.key;\n i.insertContentAtCaretPosition(c.length > 1 ? \"\" : c);\n }, 20)();\n }\n if (this.Editor.CrossBlockSelection.clear(e), !this.anyBlockSelected || n.isRectActivated()) {\n this.Editor.RectangleSelection.clearSelection();\n return;\n }\n t && this.selection.restore(), this.allBlocksSelected = !1;\n }\n /**\n * Reduce each Block and copy its content\n *\n * @param {ClipboardEvent} e - copy/cut event\n * @returns {Promise}\n */\n copySelectedBlocks(e) {\n e.preventDefault();\n const t = d.make(\"div\");\n this.selectedBlocks.forEach((n) => {\n const r = Z(n.holder.innerHTML, this.sanitizerConfig), a = d.make(\"p\");\n a.innerHTML = r, t.appendChild(a);\n });\n const o = Array.from(t.childNodes).map((n) => n.textContent).join(`\n\n`), i = t.innerHTML;\n return e.clipboardData.setData(\"text/plain\", o), e.clipboardData.setData(\"text/html\", i), Promise.all(this.selectedBlocks.map((n) => n.save())).then((n) => {\n try {\n e.clipboardData.setData(this.Editor.Paste.MIME_TYPE, JSON.stringify(n));\n } catch {\n }\n });\n }\n /**\n * select Block\n *\n * @param {number?} index - Block index according to the BlockManager's indexes\n */\n selectBlockByIndex(e) {\n const { BlockManager: t } = this.Editor;\n t.clearFocused();\n let o;\n isNaN(e) ? o = t.currentBlock : o = t.getBlockByIndex(e), this.selection.save(), m.get().removeAllRanges(), o.selected = !0, this.clearCache(), this.Editor.InlineToolbar.close();\n }\n /**\n * Clear anyBlockSelected cache\n */\n clearCache() {\n this.anyBlockSelectedCache = null;\n }\n /**\n * Module destruction\n * De-registers Shortcut CMD+A\n */\n destroy() {\n le.remove(this.Editor.UI.nodes.redactor, \"CMD+A\");\n }\n /**\n * First CMD+A selects all input content by native behaviour,\n * next CMD+A keypress selects all blocks\n *\n * @param {KeyboardEvent} event - keyboard event\n */\n handleCommandA(e) {\n if (this.Editor.RectangleSelection.clearSelection(), d.isNativeInput(e.target) && !this.readyToBlockSelection) {\n this.readyToBlockSelection = !0;\n return;\n }\n const o = this.Editor.BlockManager.getBlock(e.target).inputs;\n if (o.length > 1 && !this.readyToBlockSelection) {\n this.readyToBlockSelection = !0;\n return;\n }\n if (o.length === 1 && !this.needToSelectAll) {\n this.needToSelectAll = !0;\n return;\n }\n this.needToSelectAll ? (e.preventDefault(), this.selectAllBlocks(), this.needToSelectAll = !1, this.readyToBlockSelection = !1, this.Editor.ConversionToolbar.close()) : this.readyToBlockSelection && (e.preventDefault(), this.selectBlockByIndex(), this.needToSelectAll = !0);\n }\n /**\n * Select All Blocks\n * Each Block has selected setter that makes Block copyable\n */\n selectAllBlocks() {\n this.selection.save(), m.get().removeAllRanges(), this.allBlocksSelected = !0, this.Editor.InlineToolbar.close();\n }\n}\nclass ve extends C {\n /**\n * Allowed caret positions in input\n *\n * @static\n * @returns {{START: string, END: string, DEFAULT: string}}\n */\n get positions() {\n return {\n START: \"start\",\n END: \"end\",\n DEFAULT: \"default\"\n };\n }\n /**\n * Elements styles that can be useful for Caret Module\n */\n static get CSS() {\n return {\n shadowCaret: \"cdx-shadow-caret\"\n };\n }\n /**\n * Get's deepest first node and checks if offset is zero\n *\n * @returns {boolean}\n */\n get isAtStart() {\n const e = m.get(), t = d.getDeepestNode(this.Editor.BlockManager.currentBlock.currentInput);\n let o = e.focusNode;\n if (d.isNativeInput(t))\n return t.selectionEnd === 0;\n if (!e.anchorNode)\n return !1;\n let i = o.textContent.search(/\\S/);\n i === -1 && (i = 0);\n let n = e.focusOffset;\n return o.nodeType !== Node.TEXT_NODE && o.childNodes.length && (o.childNodes[n] ? (o = o.childNodes[n], n = 0) : (o = o.childNodes[n - 1], n = o.textContent.length)), (d.isLineBreakTag(t) || d.isEmpty(t)) && this.getHigherLevelSiblings(o, \"left\").every((l) => {\n const c = d.isLineBreakTag(l), u = l.children.length === 1 && d.isLineBreakTag(l.children[0]), h = c || u;\n return d.isEmpty(l) && !h;\n }) && n === i ? !0 : t === null || o === t && n <= i;\n }\n /**\n * Get's deepest last node and checks if offset is last node text length\n *\n * @returns {boolean}\n */\n get isAtEnd() {\n const e = m.get();\n let t = e.focusNode;\n const o = d.getDeepestNode(this.Editor.BlockManager.currentBlock.currentInput, !0);\n if (d.isNativeInput(o))\n return o.selectionEnd === o.value.length;\n if (!e.focusNode)\n return !1;\n let i = e.focusOffset;\n if (t.nodeType !== Node.TEXT_NODE && t.childNodes.length && (t.childNodes[i - 1] ? (t = t.childNodes[i - 1], i = t.textContent.length) : (t = t.childNodes[0], i = 0)), d.isLineBreakTag(o) || d.isEmpty(o)) {\n const r = this.getHigherLevelSiblings(t, \"right\");\n if (r.every((l, c) => c === r.length - 1 && d.isLineBreakTag(l) || d.isEmpty(l) && !d.isLineBreakTag(l)) && i === t.textContent.length)\n return !0;\n }\n const n = o.textContent.replace(/\\s+$/, \"\");\n return t === o && i >= n.length;\n }\n /**\n * Method gets Block instance and puts caret to the text node with offset\n * There two ways that method applies caret position:\n * - first found text node: sets at the beginning, but you can pass an offset\n * - last found text node: sets at the end of the node. Also, you can customize the behaviour\n *\n * @param {Block} block - Block class\n * @param {string} position - position where to set caret.\n * If default - leave default behaviour and apply offset if it's passed\n * @param {number} offset - caret offset regarding to the text node\n */\n setToBlock(e, t = this.positions.DEFAULT, o = 0) {\n const { BlockManager: i } = this.Editor;\n let n;\n switch (t) {\n case this.positions.START:\n n = e.firstInput;\n break;\n case this.positions.END:\n n = e.lastInput;\n break;\n default:\n n = e.currentInput;\n }\n if (!n)\n return;\n const r = d.getDeepestNode(n, t === this.positions.END), a = d.getContentLength(r);\n switch (!0) {\n case t === this.positions.START:\n o = 0;\n break;\n case t === this.positions.END:\n case o > a:\n o = a;\n break;\n }\n re(() => {\n this.set(r, o);\n }, 20)(), i.setCurrentBlockByChildNode(e.holder), i.currentBlock.currentInput = n;\n }\n /**\n * Set caret to the current input of current Block.\n *\n * @param {HTMLElement} input - input where caret should be set\n * @param {string} position - position of the caret.\n * If default - leave default behaviour and apply offset if it's passed\n * @param {number} offset - caret offset regarding to the text node\n */\n setToInput(e, t = this.positions.DEFAULT, o = 0) {\n const { currentBlock: i } = this.Editor.BlockManager, n = d.getDeepestNode(e);\n switch (t) {\n case this.positions.START:\n this.set(n, 0);\n break;\n case this.positions.END:\n this.set(n, d.getContentLength(n));\n break;\n default:\n o && this.set(n, o);\n }\n i.currentInput = e;\n }\n /**\n * Creates Document Range and sets caret to the element with offset\n *\n * @param {HTMLElement} element - target node.\n * @param {number} offset - offset\n */\n set(e, t = 0) {\n const { top: o, bottom: i } = m.setCursor(e, t), { innerHeight: n } = window;\n o < 0 && window.scrollBy(0, o), i > n && window.scrollBy(0, i - n);\n }\n /**\n * Set Caret to the last Block\n * If last block is not empty, append another empty block\n */\n setToTheLastBlock() {\n const e = this.Editor.BlockManager.lastBlock;\n if (e)\n if (e.tool.isDefault && e.isEmpty)\n this.setToBlock(e);\n else {\n const t = this.Editor.BlockManager.insertAtEnd();\n this.setToBlock(t);\n }\n }\n /**\n * Extract content fragment of current Block from Caret position to the end of the Block\n */\n extractFragmentFromCaretPosition() {\n const e = m.get();\n if (e.rangeCount) {\n const t = e.getRangeAt(0), o = this.Editor.BlockManager.currentBlock.currentInput;\n if (t.deleteContents(), o)\n if (d.isNativeInput(o)) {\n const i = o, n = document.createDocumentFragment(), r = i.value.substring(0, i.selectionStart), a = i.value.substring(i.selectionStart);\n return n.textContent = a, i.value = r, n;\n } else {\n const i = t.cloneRange();\n return i.selectNodeContents(o), i.setStart(t.endContainer, t.endOffset), i.extractContents();\n }\n }\n }\n /**\n * Set's caret to the next Block or Tool`s input\n * Before moving caret, we should check if caret position is at the end of Plugins node\n * Using {@link Dom#getDeepestNode} to get a last node and match with current selection\n *\n * @returns {boolean}\n */\n navigateNext() {\n const { BlockManager: e } = this.Editor, { currentBlock: t, nextContentfulBlock: o } = e, { nextInput: i } = t, n = this.isAtEnd;\n let r = o;\n if (!r && !i) {\n if (t.tool.isDefault || !n)\n return !1;\n r = e.insertAtEnd();\n }\n return n ? (i ? this.setToInput(i, this.positions.START) : this.setToBlock(r, this.positions.START), !0) : !1;\n }\n /**\n * Set's caret to the previous Tool`s input or Block\n * Before moving caret, we should check if caret position is start of the Plugins node\n * Using {@link Dom#getDeepestNode} to get a last node and match with current selection\n *\n * @returns {boolean}\n */\n navigatePrevious() {\n const { currentBlock: e, previousContentfulBlock: t } = this.Editor.BlockManager;\n if (!e)\n return !1;\n const { previousInput: o } = e;\n return !t && !o ? !1 : this.isAtStart ? (o ? this.setToInput(o, this.positions.END) : this.setToBlock(t, this.positions.END), !0) : !1;\n }\n /**\n * Inserts shadow element after passed element where caret can be placed\n *\n * @param {Element} element - element after which shadow caret should be inserted\n */\n createShadow(e) {\n const t = document.createElement(\"span\");\n t.classList.add(ve.CSS.shadowCaret), e.insertAdjacentElement(\"beforeend\", t);\n }\n /**\n * Restores caret position\n *\n * @param {HTMLElement} element - element where caret should be restored\n */\n restoreCaret(e) {\n const t = e.querySelector(`.${ve.CSS.shadowCaret}`);\n if (!t)\n return;\n new m().expandToTag(t);\n const i = document.createRange();\n i.selectNode(t), i.extractContents();\n }\n /**\n * Inserts passed content at caret position\n *\n * @param {string} content - content to insert\n */\n insertContentAtCaretPosition(e) {\n const t = document.createDocumentFragment(), o = document.createElement(\"div\"), i = m.get(), n = m.range;\n o.innerHTML = e, Array.from(o.childNodes).forEach((c) => t.appendChild(c)), t.childNodes.length === 0 && t.appendChild(new Text());\n const r = t.lastChild;\n n.deleteContents(), n.insertNode(t);\n const a = document.createRange(), l = r.nodeType === Node.TEXT_NODE ? r : r.firstChild;\n l !== null && l.textContent !== null && a.setStart(l, l.textContent.length), i.removeAllRanges(), i.addRange(a);\n }\n /**\n * Get all first-level (first child of [contenteditable]) siblings from passed node\n * Then you can check it for emptiness\n *\n * @example\n * \n * @param {HTMLElement} from - element from which siblings should be searched\n * @param {'left' | 'right'} direction - direction of search\n * @returns {HTMLElement[]}\n */\n getHigherLevelSiblings(e, t) {\n let o = e;\n const i = [];\n for (; o.parentNode && o.parentNode.contentEditable !== \"true\"; )\n o = o.parentNode;\n const n = t === \"left\" ? \"previousSibling\" : \"nextSibling\";\n for (; o[n]; )\n o = o[n], i.push(o);\n return i;\n }\n}\nclass Qo extends C {\n constructor() {\n super(...arguments), this.onMouseUp = () => {\n this.listeners.off(document, \"mouseover\", this.onMouseOver), this.listeners.off(document, \"mouseup\", this.onMouseUp);\n }, this.onMouseOver = (e) => {\n const { BlockManager: t, BlockSelection: o } = this.Editor, i = t.getBlockByChildNode(e.relatedTarget) || this.lastSelectedBlock, n = t.getBlockByChildNode(e.target);\n if (!(!i || !n) && n !== i) {\n if (i === this.firstSelectedBlock) {\n m.get().removeAllRanges(), i.selected = !0, n.selected = !0, o.clearCache();\n return;\n }\n if (n === this.firstSelectedBlock) {\n i.selected = !1, n.selected = !1, o.clearCache();\n return;\n }\n this.Editor.InlineToolbar.close(), this.toggleBlocksSelectedState(i, n), this.lastSelectedBlock = n;\n }\n };\n }\n /**\n * Module preparation\n *\n * @returns {Promise}\n */\n async prepare() {\n this.listeners.on(document, \"mousedown\", (e) => {\n this.enableCrossBlockSelection(e);\n });\n }\n /**\n * Sets up listeners\n *\n * @param {MouseEvent} event - mouse down event\n */\n watchSelection(e) {\n if (e.button !== _t.LEFT)\n return;\n const { BlockManager: t } = this.Editor;\n this.firstSelectedBlock = t.getBlock(e.target), this.lastSelectedBlock = this.firstSelectedBlock, this.listeners.on(document, \"mouseover\", this.onMouseOver), this.listeners.on(document, \"mouseup\", this.onMouseUp);\n }\n /**\n * return boolean is cross block selection started\n */\n get isCrossBlockSelectionStarted() {\n return !!this.firstSelectedBlock && !!this.lastSelectedBlock;\n }\n /**\n * Change selection state of the next Block\n * Used for CBS via Shift + arrow keys\n *\n * @param {boolean} next - if true, toggle next block. Previous otherwise\n */\n toggleBlockSelectedState(e = !0) {\n const { BlockManager: t, BlockSelection: o } = this.Editor;\n this.lastSelectedBlock || (this.lastSelectedBlock = this.firstSelectedBlock = t.currentBlock), this.firstSelectedBlock === this.lastSelectedBlock && (this.firstSelectedBlock.selected = !0, o.clearCache(), m.get().removeAllRanges());\n const i = t.blocks.indexOf(this.lastSelectedBlock) + (e ? 1 : -1), n = t.blocks[i];\n n && (this.lastSelectedBlock.selected !== n.selected ? (n.selected = !0, o.clearCache()) : (this.lastSelectedBlock.selected = !1, o.clearCache()), this.lastSelectedBlock = n, this.Editor.InlineToolbar.close(), n.holder.scrollIntoView({\n block: \"nearest\"\n }));\n }\n /**\n * Clear saved state\n *\n * @param {Event} reason - event caused clear of selection\n */\n clear(e) {\n const { BlockManager: t, BlockSelection: o, Caret: i } = this.Editor, n = t.blocks.indexOf(this.firstSelectedBlock), r = t.blocks.indexOf(this.lastSelectedBlock);\n if (o.anyBlockSelected && n > -1 && r > -1)\n if (e && e instanceof KeyboardEvent)\n switch (e.keyCode) {\n case B.DOWN:\n case B.RIGHT:\n i.setToBlock(t.blocks[Math.max(n, r)], i.positions.END);\n break;\n case B.UP:\n case B.LEFT:\n i.setToBlock(t.blocks[Math.min(n, r)], i.positions.START);\n break;\n default:\n i.setToBlock(t.blocks[Math.max(n, r)], i.positions.END);\n }\n else\n i.setToBlock(t.blocks[Math.max(n, r)], i.positions.END);\n this.firstSelectedBlock = this.lastSelectedBlock = null;\n }\n /**\n * Enables Cross Block Selection\n *\n * @param {MouseEvent} event - mouse down event\n */\n enableCrossBlockSelection(e) {\n const { UI: t } = this.Editor;\n m.isCollapsed || this.Editor.BlockSelection.clearSelection(e), t.nodes.redactor.contains(e.target) ? this.watchSelection(e) : this.Editor.BlockSelection.clearSelection(e);\n }\n /**\n * Change blocks selection state between passed two blocks.\n *\n * @param {Block} firstBlock - first block in range\n * @param {Block} lastBlock - last block in range\n */\n toggleBlocksSelectedState(e, t) {\n const { BlockManager: o, BlockSelection: i } = this.Editor, n = o.blocks.indexOf(e), r = o.blocks.indexOf(t), a = e.selected !== t.selected;\n for (let l = Math.min(n, r); l <= Math.max(n, r); l++) {\n const c = o.blocks[l];\n c !== this.firstSelectedBlock && c !== (a ? e : t) && (o.blocks[l].selected = !o.blocks[l].selected, i.clearCache());\n }\n }\n}\nclass ei extends C {\n constructor() {\n super(...arguments), this.isStartedAtEditor = !1;\n }\n /**\n * Toggle read-only state\n *\n * if state is true:\n * - disable all drag-n-drop event handlers\n *\n * if state is false:\n * - restore drag-n-drop event handlers\n *\n * @param {boolean} readOnlyEnabled - \"read only\" state\n */\n toggleReadOnly(e) {\n e ? this.disableModuleBindings() : this.enableModuleBindings();\n }\n /**\n * Add drag events listeners to editor zone\n */\n enableModuleBindings() {\n const { UI: e } = this.Editor;\n this.readOnlyMutableListeners.on(e.nodes.holder, \"drop\", async (t) => {\n await this.processDrop(t);\n }, !0), this.readOnlyMutableListeners.on(e.nodes.holder, \"dragstart\", () => {\n this.processDragStart();\n }), this.readOnlyMutableListeners.on(e.nodes.holder, \"dragover\", (t) => {\n this.processDragOver(t);\n }, !0);\n }\n /**\n * Unbind drag-n-drop event handlers\n */\n disableModuleBindings() {\n this.readOnlyMutableListeners.clearAll();\n }\n /**\n * Handle drop event\n *\n * @param {DragEvent} dropEvent - drop event\n */\n async processDrop(e) {\n const {\n BlockManager: t,\n Caret: o,\n Paste: i\n } = this.Editor;\n e.preventDefault(), t.blocks.forEach((r) => {\n r.dropTarget = !1;\n }), m.isAtEditor && !m.isCollapsed && this.isStartedAtEditor && document.execCommand(\"delete\"), this.isStartedAtEditor = !1;\n const n = t.setCurrentBlockByChildNode(e.target);\n if (n)\n this.Editor.Caret.setToBlock(n, o.positions.END);\n else {\n const r = t.setCurrentBlockByChildNode(t.lastBlock.holder);\n this.Editor.Caret.setToBlock(r, o.positions.END);\n }\n await i.processDataTransfer(e.dataTransfer, !0);\n }\n /**\n * Handle drag start event\n */\n processDragStart() {\n m.isAtEditor && !m.isCollapsed && (this.isStartedAtEditor = !0), this.Editor.InlineToolbar.close();\n }\n /**\n * @param {DragEvent} dragEvent - drag event\n */\n processDragOver(e) {\n e.preventDefault();\n }\n}\nclass ti extends C {\n /**\n * Prepare the module\n *\n * @param options - options used by the modification observer module\n * @param options.config - Editor configuration object\n * @param options.eventsDispatcher - common Editor event bus\n */\n constructor({ config: e, eventsDispatcher: t }) {\n super({\n config: e,\n eventsDispatcher: t\n }), this.disabled = !1, this.batchingTimeout = null, this.batchingOnChangeQueue = /* @__PURE__ */ new Map(), this.batchTime = 400, this.mutationObserver = new MutationObserver((o) => {\n this.redactorChanged(o);\n }), this.eventsDispatcher.on(ct, (o) => {\n this.particularBlockChanged(o.event);\n }), this.eventsDispatcher.on(dt, () => {\n this.disable();\n }), this.eventsDispatcher.on(ht, () => {\n this.enable();\n });\n }\n /**\n * Enables onChange event\n */\n enable() {\n this.mutationObserver.observe(\n this.Editor.UI.nodes.redactor,\n {\n childList: !0,\n subtree: !0,\n characterData: !0,\n attributes: !0\n }\n ), this.disabled = !1;\n }\n /**\n * Disables onChange event\n */\n disable() {\n this.mutationObserver.disconnect(), this.disabled = !0;\n }\n /**\n * Call onChange event passed to Editor.js configuration\n *\n * @param event - some of our custom change events\n */\n particularBlockChanged(e) {\n this.disabled || !D(this.config.onChange) || (this.batchingOnChangeQueue.set(`block:${e.detail.target.id}:event:${e.type}`, e), this.batchingTimeout && clearTimeout(this.batchingTimeout), this.batchingTimeout = setTimeout(() => {\n let t;\n this.batchingOnChangeQueue.size === 1 ? t = this.batchingOnChangeQueue.values().next().value : t = Array.from(this.batchingOnChangeQueue.values()), this.config.onChange && this.config.onChange(this.Editor.API.methods, t), this.batchingOnChangeQueue.clear();\n }, this.batchTime));\n }\n /**\n * Fired on every blocks wrapper dom change\n *\n * @param mutations - mutations happened\n */\n redactorChanged(e) {\n this.eventsDispatcher.emit(Me, {\n mutations: e\n });\n }\n}\nconst wt = class extends C {\n constructor() {\n super(...arguments), this.MIME_TYPE = \"application/x-editor-js\", this.toolsTags = {}, this.tagsByTool = {}, this.toolsPatterns = [], this.toolsFiles = {}, this.exceptionList = [], this.processTool = (s) => {\n try {\n const e = s.create({}, {}, !1);\n if (s.pasteConfig === !1) {\n this.exceptionList.push(s.name);\n return;\n }\n if (!D(e.onPaste))\n return;\n this.getTagsConfig(s), this.getFilesConfig(s), this.getPatternsConfig(s);\n } catch (e) {\n L(\n `Paste handling for «${s.name}» Tool hasn't been set up because of the error`,\n \"warn\",\n e\n );\n }\n }, this.handlePasteEvent = async (s) => {\n const { BlockManager: e, Toolbar: t } = this.Editor, o = e.setCurrentBlockByChildNode(s.target);\n !o || this.isNativeBehaviour(s.target) && !s.clipboardData.types.includes(\"Files\") || o && this.exceptionList.includes(o.name) || (s.preventDefault(), this.processDataTransfer(s.clipboardData), e.clearFocused(), t.close());\n };\n }\n /**\n * Set onPaste callback and collect tools` paste configurations\n */\n async prepare() {\n this.processTools();\n }\n /**\n * Set read-only state\n *\n * @param {boolean} readOnlyEnabled - read only flag value\n */\n toggleReadOnly(s) {\n s ? this.unsetCallback() : this.setCallback();\n }\n /**\n * Handle pasted or dropped data transfer object\n *\n * @param {DataTransfer} dataTransfer - pasted or dropped data transfer object\n * @param {boolean} isDragNDrop - true if data transfer comes from drag'n'drop events\n */\n async processDataTransfer(s, e = !1) {\n const { Tools: t } = this.Editor, o = s.types;\n if ((o.includes ? o.includes(\"Files\") : o.contains(\"Files\")) && !V(this.toolsFiles)) {\n await this.processFiles(s.files);\n return;\n }\n const n = s.getData(this.MIME_TYPE), r = s.getData(\"text/plain\");\n let a = s.getData(\"text/html\");\n if (n)\n try {\n this.insertEditorJSData(JSON.parse(n));\n return;\n } catch {\n }\n e && r.trim() && a.trim() && (a = \"

\" + (a.trim() ? a : r) + \"

\");\n const l = Object.keys(this.toolsTags).reduce((h, f) => (h[f.toLowerCase()] = this.toolsTags[f].sanitizationConfig ?? {}, h), {}), c = Object.assign({}, l, t.getAllInlineToolsSanitizeConfig(), { br: {} }), u = Z(a, c);\n !u.trim() || u.trim() === r || !d.isHTMLString(u) ? await this.processText(r) : await this.processText(u, !0);\n }\n /**\n * Process pasted text and divide them into Blocks\n *\n * @param {string} data - text to process. Can be HTML or plain.\n * @param {boolean} isHTML - if passed string is HTML, this parameter should be true\n */\n async processText(s, e = !1) {\n const { Caret: t, BlockManager: o } = this.Editor, i = e ? this.processHTML(s) : this.processPlain(s);\n if (!i.length)\n return;\n if (i.length === 1) {\n i[0].isBlock ? this.processSingleBlock(i.pop()) : this.processInlinePaste(i.pop());\n return;\n }\n const r = o.currentBlock && o.currentBlock.tool.isDefault && o.currentBlock.isEmpty;\n i.map(\n async (a, l) => this.insertBlock(a, l === 0 && r)\n ), o.currentBlock && t.setToBlock(o.currentBlock, t.positions.END);\n }\n /**\n * Set onPaste callback handler\n */\n setCallback() {\n this.listeners.on(this.Editor.UI.nodes.holder, \"paste\", this.handlePasteEvent);\n }\n /**\n * Unset onPaste callback handler\n */\n unsetCallback() {\n this.listeners.off(this.Editor.UI.nodes.holder, \"paste\", this.handlePasteEvent);\n }\n /**\n * Get and process tool`s paste configs\n */\n processTools() {\n const s = this.Editor.Tools.blockTools;\n Array.from(s.values()).forEach(this.processTool);\n }\n /**\n * Get tags name list from either tag name or sanitization config.\n *\n * @param {string | object} tagOrSanitizeConfig - tag name or sanitize config object.\n * @returns {string[]} array of tags.\n */\n collectTagNames(s) {\n return J(s) ? [s] : z(s) ? Object.keys(s) : [];\n }\n /**\n * Get tags to substitute by Tool\n *\n * @param tool - BlockTool object\n */\n getTagsConfig(s) {\n if (s.pasteConfig === !1)\n return;\n const e = s.pasteConfig.tags || [], t = [];\n e.forEach((o) => {\n const i = this.collectTagNames(o);\n t.push(...i), i.forEach((n) => {\n if (Object.prototype.hasOwnProperty.call(this.toolsTags, n)) {\n L(\n `Paste handler for «${s.name}» Tool on «${n}» tag is skipped because it is already used by «${this.toolsTags[n].tool.name}» Tool.`,\n \"warn\"\n );\n return;\n }\n const r = z(o) ? o[n] : null;\n this.toolsTags[n.toUpperCase()] = {\n tool: s,\n sanitizationConfig: r\n };\n });\n }), this.tagsByTool[s.name] = t.map((o) => o.toUpperCase());\n }\n /**\n * Get files` types and extensions to substitute by Tool\n *\n * @param tool - BlockTool object\n */\n getFilesConfig(s) {\n if (s.pasteConfig === !1)\n return;\n const { files: e = {} } = s.pasteConfig;\n let { extensions: t, mimeTypes: o } = e;\n !t && !o || (t && !Array.isArray(t) && (L(`«extensions» property of the onDrop config for «${s.name}» Tool should be an array`), t = []), o && !Array.isArray(o) && (L(`«mimeTypes» property of the onDrop config for «${s.name}» Tool should be an array`), o = []), o && (o = o.filter((i) => Ft(i) ? !0 : (L(`MIME type value «${i}» for the «${s.name}» Tool is not a valid MIME type`, \"warn\"), !1))), this.toolsFiles[s.name] = {\n extensions: t || [],\n mimeTypes: o || []\n });\n }\n /**\n * Get RegExp patterns to substitute by Tool\n *\n * @param tool - BlockTool object\n */\n getPatternsConfig(s) {\n s.pasteConfig === !1 || !s.pasteConfig.patterns || V(s.pasteConfig.patterns) || Object.entries(s.pasteConfig.patterns).forEach(([e, t]) => {\n t instanceof RegExp || L(\n `Pattern ${t} for «${s.name}» Tool is skipped because it should be a Regexp instance.`,\n \"warn\"\n ), this.toolsPatterns.push({\n key: e,\n pattern: t,\n tool: s\n });\n });\n }\n /**\n * Check if browser behavior suits better\n *\n * @param {EventTarget} element - element where content has been pasted\n * @returns {boolean}\n */\n isNativeBehaviour(s) {\n return d.isNativeInput(s);\n }\n /**\n * Get files from data transfer object and insert related Tools\n *\n * @param {FileList} items - pasted or dropped items\n */\n async processFiles(s) {\n const { BlockManager: e } = this.Editor;\n let t;\n t = await Promise.all(\n Array.from(s).map((n) => this.processFile(n))\n ), t = t.filter((n) => !!n);\n const i = e.currentBlock.tool.isDefault && e.currentBlock.isEmpty;\n t.forEach(\n (n, r) => {\n e.paste(n.type, n.event, r === 0 && i);\n }\n );\n }\n /**\n * Get information about file and find Tool to handle it\n *\n * @param {File} file - file to process\n */\n async processFile(s) {\n const e = Pt(s), t = Object.entries(this.toolsFiles).find(([n, { mimeTypes: r, extensions: a }]) => {\n const [l, c] = s.type.split(\"/\"), u = a.find((f) => f.toLowerCase() === e.toLowerCase()), h = r.find((f) => {\n const [k, p] = f.split(\"/\");\n return k === l && (p === c || p === \"*\");\n });\n return !!u || !!h;\n });\n if (!t)\n return;\n const [o] = t;\n return {\n event: this.composePasteEvent(\"file\", {\n file: s\n }),\n type: o\n };\n }\n /**\n * Split HTML string to blocks and return it as array of Block data\n *\n * @param {string} innerHTML - html string to process\n * @returns {PasteData[]}\n */\n processHTML(s) {\n const { Tools: e } = this.Editor, t = d.make(\"DIV\");\n return t.innerHTML = s, this.getNodes(t).map((i) => {\n let n, r = e.defaultTool, a = !1;\n switch (i.nodeType) {\n case Node.DOCUMENT_FRAGMENT_NODE:\n n = d.make(\"div\"), n.appendChild(i);\n break;\n case Node.ELEMENT_NODE:\n n = i, a = !0, this.toolsTags[n.tagName] && (r = this.toolsTags[n.tagName].tool);\n break;\n }\n const { tags: l } = r.pasteConfig || { tags: [] }, c = l.reduce((f, k) => (this.collectTagNames(k).forEach((v) => {\n const A = z(k) ? k[v] : null;\n f[v.toLowerCase()] = A || {};\n }), f), {}), u = Object.assign({}, c, r.baseSanitizeConfig);\n if (n.tagName.toLowerCase() === \"table\") {\n const f = Z(n.outerHTML, u);\n n = d.make(\"div\", void 0, {\n innerHTML: f\n }).firstChild;\n } else\n n.innerHTML = Z(n.innerHTML, u);\n const h = this.composePasteEvent(\"tag\", {\n data: n\n });\n return {\n content: n,\n isBlock: a,\n tool: r.name,\n event: h\n };\n }).filter((i) => {\n const n = d.isEmpty(i.content), r = d.isSingleTag(i.content);\n return !n || r;\n });\n }\n /**\n * Split plain text by new line symbols and return it as array of Block data\n *\n * @param {string} plain - string to process\n * @returns {PasteData[]}\n */\n processPlain(s) {\n const { defaultBlock: e } = this.config;\n if (!s)\n return [];\n const t = e;\n return s.split(/\\r?\\n/).filter((o) => o.trim()).map((o) => {\n const i = d.make(\"div\");\n i.textContent = o;\n const n = this.composePasteEvent(\"tag\", {\n data: i\n });\n return {\n content: i,\n tool: t,\n isBlock: !1,\n event: n\n };\n });\n }\n /**\n * Process paste of single Block tool content\n *\n * @param {PasteData} dataToInsert - data of Block to insert\n */\n async processSingleBlock(s) {\n const { Caret: e, BlockManager: t } = this.Editor, { currentBlock: o } = t;\n if (!o || s.tool !== o.name || !d.containsOnlyInlineElements(s.content.innerHTML)) {\n this.insertBlock(s, (o == null ? void 0 : o.tool.isDefault) && o.isEmpty);\n return;\n }\n e.insertContentAtCaretPosition(s.content.innerHTML);\n }\n /**\n * Process paste to single Block:\n * 1. Find patterns` matches\n * 2. Insert new block if it is not the same type as current one\n * 3. Just insert text if there is no substitutions\n *\n * @param {PasteData} dataToInsert - data of Block to insert\n */\n async processInlinePaste(s) {\n const { BlockManager: e, Caret: t } = this.Editor, { content: o } = s;\n if (e.currentBlock && e.currentBlock.tool.isDefault && o.textContent.length < wt.PATTERN_PROCESSING_MAX_LENGTH) {\n const n = await this.processPattern(o.textContent);\n if (n) {\n const r = e.currentBlock && e.currentBlock.tool.isDefault && e.currentBlock.isEmpty, a = e.paste(n.tool, n.event, r);\n t.setToBlock(a, t.positions.END);\n return;\n }\n }\n if (e.currentBlock && e.currentBlock.currentInput) {\n const n = e.currentBlock.tool.baseSanitizeConfig;\n document.execCommand(\n \"insertHTML\",\n !1,\n Z(o.innerHTML, n)\n );\n } else\n this.insertBlock(s);\n }\n /**\n * Get patterns` matches\n *\n * @param {string} text - text to process\n * @returns {Promise<{event: PasteEvent, tool: string}>}\n */\n async processPattern(s) {\n const e = this.toolsPatterns.find((o) => {\n const i = o.pattern.exec(s);\n return i ? s === i.shift() : !1;\n });\n return e ? {\n event: this.composePasteEvent(\"pattern\", {\n key: e.key,\n data: s\n }),\n tool: e.tool.name\n } : void 0;\n }\n /**\n * Insert pasted Block content to Editor\n *\n * @param {PasteData} data - data to insert\n * @param {boolean} canReplaceCurrentBlock - if true and is current Block is empty, will replace current Block\n * @returns {void}\n */\n insertBlock(s, e = !1) {\n const { BlockManager: t, Caret: o } = this.Editor, { currentBlock: i } = t;\n let n;\n if (e && i && i.isEmpty) {\n n = t.paste(s.tool, s.event, !0), o.setToBlock(n, o.positions.END);\n return;\n }\n n = t.paste(s.tool, s.event), o.setToBlock(n, o.positions.END);\n }\n /**\n * Insert data passed as application/x-editor-js JSON\n *\n * @param {Array} blocks — Blocks' data to insert\n * @returns {void}\n */\n insertEditorJSData(s) {\n const { BlockManager: e, Caret: t, Tools: o } = this.Editor;\n ut(\n s,\n (n) => o.blockTools.get(n).sanitizeConfig\n ).forEach(({ tool: n, data: r }, a) => {\n let l = !1;\n a === 0 && (l = e.currentBlock && e.currentBlock.tool.isDefault && e.currentBlock.isEmpty);\n const c = e.insert({\n tool: n,\n data: r,\n replace: l\n });\n t.setToBlock(c, t.positions.END);\n });\n }\n /**\n * Fetch nodes from Element node\n *\n * @param {Node} node - current node\n * @param {Node[]} nodes - processed nodes\n * @param {Node} destNode - destination node\n */\n processElementNode(s, e, t) {\n const o = Object.keys(this.toolsTags), i = s, { tool: n } = this.toolsTags[i.tagName] || {}, r = this.tagsByTool[n == null ? void 0 : n.name] || [], a = o.includes(i.tagName), l = d.blockElements.includes(i.tagName.toLowerCase()), c = Array.from(i.children).some(\n ({ tagName: h }) => o.includes(h) && !r.includes(h)\n ), u = Array.from(i.children).some(\n ({ tagName: h }) => d.blockElements.includes(h.toLowerCase())\n );\n if (!l && !a && !c)\n return t.appendChild(i), [...e, t];\n if (a && !c || l && !u && !c)\n return [...e, t, i];\n }\n /**\n * Recursively divide HTML string to two types of nodes:\n * 1. Block element\n * 2. Document Fragments contained text and markup tags like a, b, i etc.\n *\n * @param {Node} wrapper - wrapper of paster HTML content\n * @returns {Node[]}\n */\n getNodes(s) {\n const e = Array.from(s.childNodes);\n let t;\n const o = (i, n) => {\n if (d.isEmpty(n) && !d.isSingleTag(n))\n return i;\n const r = i[i.length - 1];\n let a = new DocumentFragment();\n switch (r && d.isFragment(r) && (a = i.pop()), n.nodeType) {\n case Node.ELEMENT_NODE:\n if (t = this.processElementNode(n, i, a), t)\n return t;\n break;\n case Node.TEXT_NODE:\n return a.appendChild(n), [...i, a];\n default:\n return [...i, a];\n }\n return [...i, ...Array.from(n.childNodes).reduce(o, [])];\n };\n return e.reduce(o, []);\n }\n /**\n * Compose paste event with passed type and detail\n *\n * @param {string} type - event type\n * @param {PasteEventDetail} detail - event detail\n */\n composePasteEvent(s, e) {\n return new CustomEvent(s, {\n detail: e\n });\n }\n};\nlet yt = wt;\nyt.PATTERN_PROCESSING_MAX_LENGTH = 450;\nclass oi extends C {\n constructor() {\n super(...arguments), this.toolsDontSupportReadOnly = [], this.readOnlyEnabled = !1;\n }\n /**\n * Returns state of read only mode\n */\n get isEnabled() {\n return this.readOnlyEnabled;\n }\n /**\n * Set initial state\n */\n async prepare() {\n const { Tools: e } = this.Editor, { blockTools: t } = e, o = [];\n Array.from(t.entries()).forEach(([i, n]) => {\n n.isReadOnlySupported || o.push(i);\n }), this.toolsDontSupportReadOnly = o, this.config.readOnly && o.length > 0 && this.throwCriticalError(), this.toggle(this.config.readOnly);\n }\n /**\n * Set read-only mode or toggle current state\n * Call all Modules `toggleReadOnly` method and re-render Editor\n *\n * @param {boolean} state - (optional) read-only state or toggle\n */\n async toggle(e = !this.readOnlyEnabled) {\n e && this.toolsDontSupportReadOnly.length > 0 && this.throwCriticalError();\n const t = this.readOnlyEnabled;\n this.readOnlyEnabled = e;\n for (const i in this.Editor)\n this.Editor[i].toggleReadOnly && this.Editor[i].toggleReadOnly(e);\n if (t === e)\n return this.readOnlyEnabled;\n const o = await this.Editor.Saver.save();\n return await this.Editor.BlockManager.clear(), await this.Editor.Renderer.render(o.blocks), this.readOnlyEnabled;\n }\n /**\n * Throws an error about tools which don't support read-only mode\n */\n throwCriticalError() {\n throw new lt(\n `To enable read-only mode all connected tools should support it. Tools ${this.toolsDontSupportReadOnly.join(\", \")} don't support read-only mode.`\n );\n }\n}\nclass fe extends C {\n constructor() {\n super(...arguments), this.isRectSelectionActivated = !1, this.SCROLL_SPEED = 3, this.HEIGHT_OF_SCROLL_ZONE = 40, this.BOTTOM_SCROLL_ZONE = 1, this.TOP_SCROLL_ZONE = 2, this.MAIN_MOUSE_BUTTON = 0, this.mousedown = !1, this.isScrolling = !1, this.inScrollZone = null, this.startX = 0, this.startY = 0, this.mouseX = 0, this.mouseY = 0, this.stackOfSelected = [], this.listenerIds = [];\n }\n /**\n * CSS classes for the Block\n *\n * @returns {{wrapper: string, content: string}}\n */\n static get CSS() {\n return {\n overlay: \"codex-editor-overlay\",\n overlayContainer: \"codex-editor-overlay__container\",\n rect: \"codex-editor-overlay__rectangle\",\n topScrollZone: \"codex-editor-overlay__scroll-zone--top\",\n bottomScrollZone: \"codex-editor-overlay__scroll-zone--bottom\"\n };\n }\n /**\n * Module Preparation\n * Creating rect and hang handlers\n */\n prepare() {\n this.enableModuleBindings();\n }\n /**\n * Init rect params\n *\n * @param {number} pageX - X coord of mouse\n * @param {number} pageY - Y coord of mouse\n */\n startSelection(e, t) {\n const o = document.elementFromPoint(e - window.pageXOffset, t - window.pageYOffset);\n o.closest(`.${this.Editor.Toolbar.CSS.toolbar}`) || (this.Editor.BlockSelection.allBlocksSelected = !1, this.clearSelection(), this.stackOfSelected = []);\n const n = [\n `.${F.CSS.content}`,\n `.${this.Editor.Toolbar.CSS.toolbar}`,\n `.${this.Editor.InlineToolbar.CSS.inlineToolbar}`\n ], r = o.closest(\".\" + this.Editor.UI.CSS.editorWrapper), a = n.some((l) => !!o.closest(l));\n !r || a || (this.mousedown = !0, this.startX = e, this.startY = t);\n }\n /**\n * Clear all params to end selection\n */\n endSelection() {\n this.mousedown = !1, this.startX = 0, this.startY = 0, this.overlayRectangle.style.display = \"none\";\n }\n /**\n * is RectSelection Activated\n */\n isRectActivated() {\n return this.isRectSelectionActivated;\n }\n /**\n * Mark that selection is end\n */\n clearSelection() {\n this.isRectSelectionActivated = !1;\n }\n /**\n * Sets Module necessary event handlers\n */\n enableModuleBindings() {\n const { container: e } = this.genHTML();\n this.listeners.on(e, \"mousedown\", (t) => {\n this.processMouseDown(t);\n }, !1), this.listeners.on(document.body, \"mousemove\", Ce((t) => {\n this.processMouseMove(t);\n }, 10), {\n passive: !0\n }), this.listeners.on(document.body, \"mouseleave\", () => {\n this.processMouseLeave();\n }), this.listeners.on(window, \"scroll\", Ce((t) => {\n this.processScroll(t);\n }, 10), {\n passive: !0\n }), this.listeners.on(document.body, \"mouseup\", () => {\n this.processMouseUp();\n }, !1);\n }\n /**\n * Handle mouse down events\n *\n * @param {MouseEvent} mouseEvent - mouse event payload\n */\n processMouseDown(e) {\n if (e.button !== this.MAIN_MOUSE_BUTTON)\n return;\n e.target.closest(d.allInputsSelector) !== null || this.startSelection(e.pageX, e.pageY);\n }\n /**\n * Handle mouse move events\n *\n * @param {MouseEvent} mouseEvent - mouse event payload\n */\n processMouseMove(e) {\n this.changingRectangle(e), this.scrollByZones(e.clientY);\n }\n /**\n * Handle mouse leave\n */\n processMouseLeave() {\n this.clearSelection(), this.endSelection();\n }\n /**\n * @param {MouseEvent} mouseEvent - mouse event payload\n */\n processScroll(e) {\n this.changingRectangle(e);\n }\n /**\n * Handle mouse up\n */\n processMouseUp() {\n this.clearSelection(), this.endSelection();\n }\n /**\n * Scroll If mouse in scroll zone\n *\n * @param {number} clientY - Y coord of mouse\n */\n scrollByZones(e) {\n if (this.inScrollZone = null, e <= this.HEIGHT_OF_SCROLL_ZONE && (this.inScrollZone = this.TOP_SCROLL_ZONE), document.documentElement.clientHeight - e <= this.HEIGHT_OF_SCROLL_ZONE && (this.inScrollZone = this.BOTTOM_SCROLL_ZONE), !this.inScrollZone) {\n this.isScrolling = !1;\n return;\n }\n this.isScrolling || (this.scrollVertical(this.inScrollZone === this.TOP_SCROLL_ZONE ? -this.SCROLL_SPEED : this.SCROLL_SPEED), this.isScrolling = !0);\n }\n /**\n * Generates required HTML elements\n *\n * @returns {Object}\n */\n genHTML() {\n const { UI: e } = this.Editor, t = e.nodes.holder.querySelector(\".\" + e.CSS.editorWrapper), o = d.make(\"div\", fe.CSS.overlay, {}), i = d.make(\"div\", fe.CSS.overlayContainer, {}), n = d.make(\"div\", fe.CSS.rect, {});\n return i.appendChild(n), o.appendChild(i), t.appendChild(o), this.overlayRectangle = n, {\n container: t,\n overlay: o\n };\n }\n /**\n * Activates scrolling if blockSelection is active and mouse is in scroll zone\n *\n * @param {number} speed - speed of scrolling\n */\n scrollVertical(e) {\n if (!(this.inScrollZone && this.mousedown))\n return;\n const t = window.pageYOffset;\n window.scrollBy(0, e), this.mouseY += window.pageYOffset - t, setTimeout(() => {\n this.scrollVertical(e);\n }, 0);\n }\n /**\n * Handles the change in the rectangle and its effect\n *\n * @param {MouseEvent} event - mouse event\n */\n changingRectangle(e) {\n if (!this.mousedown)\n return;\n e.pageY !== void 0 && (this.mouseX = e.pageX, this.mouseY = e.pageY);\n const { rightPos: t, leftPos: o, index: i } = this.genInfoForMouseSelection(), n = this.startX > t && this.mouseX > t, r = this.startX < o && this.mouseX < o;\n this.rectCrossesBlocks = !(n || r), this.isRectSelectionActivated || (this.rectCrossesBlocks = !1, this.isRectSelectionActivated = !0, this.shrinkRectangleToPoint(), this.overlayRectangle.style.display = \"block\"), this.updateRectangleSize(), this.Editor.Toolbar.close(), i !== void 0 && (this.trySelectNextBlock(i), this.inverseSelection(), m.get().removeAllRanges());\n }\n /**\n * Shrink rect to singular point\n */\n shrinkRectangleToPoint() {\n this.overlayRectangle.style.left = `${this.startX - window.pageXOffset}px`, this.overlayRectangle.style.top = `${this.startY - window.pageYOffset}px`, this.overlayRectangle.style.bottom = `calc(100% - ${this.startY - window.pageYOffset}px`, this.overlayRectangle.style.right = `calc(100% - ${this.startX - window.pageXOffset}px`;\n }\n /**\n * Select or unselect all of blocks in array if rect is out or in selectable area\n */\n inverseSelection() {\n const t = this.Editor.BlockManager.getBlockByIndex(this.stackOfSelected[0]).selected;\n if (this.rectCrossesBlocks && !t)\n for (const o of this.stackOfSelected)\n this.Editor.BlockSelection.selectBlockByIndex(o);\n if (!this.rectCrossesBlocks && t)\n for (const o of this.stackOfSelected)\n this.Editor.BlockSelection.unSelectBlockByIndex(o);\n }\n /**\n * Updates size of rectangle\n */\n updateRectangleSize() {\n this.mouseY >= this.startY ? (this.overlayRectangle.style.top = `${this.startY - window.pageYOffset}px`, this.overlayRectangle.style.bottom = `calc(100% - ${this.mouseY - window.pageYOffset}px`) : (this.overlayRectangle.style.bottom = `calc(100% - ${this.startY - window.pageYOffset}px`, this.overlayRectangle.style.top = `${this.mouseY - window.pageYOffset}px`), this.mouseX >= this.startX ? (this.overlayRectangle.style.left = `${this.startX - window.pageXOffset}px`, this.overlayRectangle.style.right = `calc(100% - ${this.mouseX - window.pageXOffset}px`) : (this.overlayRectangle.style.right = `calc(100% - ${this.startX - window.pageXOffset}px`, this.overlayRectangle.style.left = `${this.mouseX - window.pageXOffset}px`);\n }\n /**\n * Collects information needed to determine the behavior of the rectangle\n *\n * @returns {object} index - index next Block, leftPos - start of left border of Block, rightPos - right border\n */\n genInfoForMouseSelection() {\n const t = document.body.offsetWidth / 2, o = this.mouseY - window.pageYOffset, i = document.elementFromPoint(t, o), n = this.Editor.BlockManager.getBlockByChildNode(i);\n let r;\n n !== void 0 && (r = this.Editor.BlockManager.blocks.findIndex((h) => h.holder === n.holder));\n const a = this.Editor.BlockManager.lastBlock.holder.querySelector(\".\" + F.CSS.content), l = Number.parseInt(window.getComputedStyle(a).width, 10) / 2, c = t - l, u = t + l;\n return {\n index: r,\n leftPos: c,\n rightPos: u\n };\n }\n /**\n * Select block with index index\n *\n * @param index - index of block in redactor\n */\n addBlockInSelection(e) {\n this.rectCrossesBlocks && this.Editor.BlockSelection.selectBlockByIndex(e), this.stackOfSelected.push(e);\n }\n /**\n * Adds a block to the selection and determines which blocks should be selected\n *\n * @param {object} index - index of new block in the reactor\n */\n trySelectNextBlock(e) {\n const t = this.stackOfSelected[this.stackOfSelected.length - 1] === e, o = this.stackOfSelected.length, i = 1, n = -1, r = 0;\n if (t)\n return;\n const a = this.stackOfSelected[o - 1] - this.stackOfSelected[o - 2] > 0;\n let l = r;\n o > 1 && (l = a ? i : n);\n const c = e > this.stackOfSelected[o - 1] && l === i, u = e < this.stackOfSelected[o - 1] && l === n, f = !(c || u || l === r);\n if (!f && (e > this.stackOfSelected[o - 1] || this.stackOfSelected[o - 1] === void 0)) {\n let v = this.stackOfSelected[o - 1] + 1 || e;\n for (v; v <= e; v++)\n this.addBlockInSelection(v);\n return;\n }\n if (!f && e < this.stackOfSelected[o - 1]) {\n for (let v = this.stackOfSelected[o - 1] - 1; v >= e; v--)\n this.addBlockInSelection(v);\n return;\n }\n if (!f)\n return;\n let k = o - 1, p;\n for (e > this.stackOfSelected[o - 1] ? p = () => e > this.stackOfSelected[k] : p = () => e < this.stackOfSelected[k]; p(); )\n this.rectCrossesBlocks && this.Editor.BlockSelection.unSelectBlockByIndex(this.stackOfSelected[k]), this.stackOfSelected.pop(), k--;\n }\n}\nclass ii extends C {\n /**\n * Renders passed blocks as one batch\n *\n * @param blocksData - blocks to render\n */\n async render(e) {\n return new Promise((t) => {\n const { Tools: o, BlockManager: i } = this.Editor, n = e.map(({ type: r, data: a, tunes: l, id: c }) => {\n o.available.has(r) === !1 && (K(`Tool «${r}» is not found. Check 'tools' property at the Editor.js config.`, \"warn\"), a = this.composeStubDataForTool(r, a, c), r = o.stubTool);\n let u;\n try {\n u = i.composeBlock({\n id: c,\n tool: r,\n data: a,\n tunes: l\n });\n } catch (h) {\n L(`Block «${r}» skipped because of plugins error`, \"error\", {\n data: a,\n error: h\n }), a = this.composeStubDataForTool(r, a, c), r = o.stubTool, u = i.composeBlock({\n id: c,\n tool: r,\n data: a,\n tunes: l\n });\n }\n return u;\n });\n i.insertMany(n), window.requestIdleCallback(() => {\n t();\n }, { timeout: 2e3 });\n });\n }\n /**\n * Create data for the Stub Tool that will be used instead of unavailable tool\n *\n * @param tool - unavailable tool name to stub\n * @param data - data of unavailable block\n * @param [id] - id of unavailable block\n */\n composeStubDataForTool(e, t, o) {\n const { Tools: i } = this.Editor;\n let n = e;\n if (i.unavailable.has(e)) {\n const r = i.unavailable.get(e).toolbox;\n r !== void 0 && r[0].title !== void 0 && (n = r[0].title);\n }\n return {\n savedData: {\n id: o,\n type: e,\n data: t\n },\n title: n\n };\n }\n}\nclass ni extends C {\n /**\n * Composes new chain of Promises to fire them alternatelly\n *\n * @returns {OutputData}\n */\n async save() {\n const { BlockManager: e, Tools: t } = this.Editor, o = e.blocks, i = [];\n try {\n o.forEach((a) => {\n i.push(this.getSavedData(a));\n });\n const n = await Promise.all(i), r = await ut(n, (a) => t.blockTools.get(a).sanitizeConfig);\n return this.makeOutput(r);\n } catch (n) {\n K(\"Saving failed due to the Error %o\", \"error\", n);\n }\n }\n /**\n * Saves and validates\n *\n * @param {Block} block - Editor's Tool\n * @returns {ValidatedData} - Tool's validated data\n */\n async getSavedData(e) {\n const t = await e.save(), o = t && await e.validate(t.data);\n return {\n ...t,\n isValid: o\n };\n }\n /**\n * Creates output object with saved data, time and version of editor\n *\n * @param {ValidatedData} allExtractedData - data extracted from Blocks\n * @returns {OutputData}\n */\n makeOutput(e) {\n const t = [];\n return e.forEach(({ id: o, tool: i, data: n, tunes: r, isValid: a }) => {\n if (!a) {\n L(`Block «${i}» skipped because saved data is invalid`);\n return;\n }\n if (i === this.Editor.Tools.stubTool) {\n t.push(n);\n return;\n }\n const l = {\n id: o,\n type: i,\n data: n,\n ...!V(r) && {\n tunes: r\n }\n };\n t.push(l);\n }), {\n time: +/* @__PURE__ */ new Date(),\n blocks: t,\n version: \"2.28.0\"\n };\n }\n}\nvar Ne = {}, si = {\n get exports() {\n return Ne;\n },\n set exports(s) {\n Ne = s;\n }\n};\n(function(s, e) {\n (function(t, o) {\n s.exports = o();\n })(window, function() {\n return function(t) {\n var o = {};\n function i(n) {\n if (o[n])\n return o[n].exports;\n var r = o[n] = { i: n, l: !1, exports: {} };\n return t[n].call(r.exports, r, r.exports, i), r.l = !0, r.exports;\n }\n return i.m = t, i.c = o, i.d = function(n, r, a) {\n i.o(n, r) || Object.defineProperty(n, r, { enumerable: !0, get: a });\n }, i.r = function(n) {\n typeof Symbol < \"u\" && Symbol.toStringTag && Object.defineProperty(n, Symbol.toStringTag, { value: \"Module\" }), Object.defineProperty(n, \"__esModule\", { value: !0 });\n }, i.t = function(n, r) {\n if (1 & r && (n = i(n)), 8 & r || 4 & r && typeof n == \"object\" && n && n.__esModule)\n return n;\n var a = /* @__PURE__ */ Object.create(null);\n if (i.r(a), Object.defineProperty(a, \"default\", { enumerable: !0, value: n }), 2 & r && typeof n != \"string\")\n for (var l in n)\n i.d(a, l, function(c) {\n return n[c];\n }.bind(null, l));\n return a;\n }, i.n = function(n) {\n var r = n && n.__esModule ? function() {\n return n.default;\n } : function() {\n return n;\n };\n return i.d(r, \"a\", r), r;\n }, i.o = function(n, r) {\n return Object.prototype.hasOwnProperty.call(n, r);\n }, i.p = \"/\", i(i.s = 4);\n }([function(t, o, i) {\n var n = i(1), r = i(2);\n typeof (r = r.__esModule ? r.default : r) == \"string\" && (r = [[t.i, r, \"\"]]);\n var a = { insert: \"head\", singleton: !1 };\n n(r, a), t.exports = r.locals || {};\n }, function(t, o, i) {\n var n, r = function() {\n return n === void 0 && (n = !!(window && document && document.all && !window.atob)), n;\n }, a = function() {\n var y = {};\n return function(x) {\n if (y[x] === void 0) {\n var w = document.querySelector(x);\n if (window.HTMLIFrameElement && w instanceof window.HTMLIFrameElement)\n try {\n w = w.contentDocument.head;\n } catch {\n w = null;\n }\n y[x] = w;\n }\n return y[x];\n };\n }(), l = [];\n function c(y) {\n for (var x = -1, w = 0; w < l.length; w++)\n if (l[w].identifier === y) {\n x = w;\n break;\n }\n return x;\n }\n function u(y, x) {\n for (var w = {}, I = [], R = 0; R < y.length; R++) {\n var b = y[R], g = x.base ? b[0] + x.base : b[0], E = w[g] || 0, T = \"\".concat(g, \" \").concat(E);\n w[g] = E + 1;\n var O = c(T), S = { css: b[1], media: b[2], sourceMap: b[3] };\n O !== -1 ? (l[O].references++, l[O].updater(S)) : l.push({ identifier: T, updater: _(S, x), references: 1 }), I.push(T);\n }\n return I;\n }\n function h(y) {\n var x = document.createElement(\"style\"), w = y.attributes || {};\n if (w.nonce === void 0) {\n var I = i.nc;\n I && (w.nonce = I);\n }\n if (Object.keys(w).forEach(function(b) {\n x.setAttribute(b, w[b]);\n }), typeof y.insert == \"function\")\n y.insert(x);\n else {\n var R = a(y.insert || \"head\");\n if (!R)\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n R.appendChild(x);\n }\n return x;\n }\n var f, k = (f = [], function(y, x) {\n return f[y] = x, f.filter(Boolean).join(`\n`);\n });\n function p(y, x, w, I) {\n var R = w ? \"\" : I.media ? \"@media \".concat(I.media, \" {\").concat(I.css, \"}\") : I.css;\n if (y.styleSheet)\n y.styleSheet.cssText = k(x, R);\n else {\n var b = document.createTextNode(R), g = y.childNodes;\n g[x] && y.removeChild(g[x]), g.length ? y.insertBefore(b, g[x]) : y.appendChild(b);\n }\n }\n function v(y, x, w) {\n var I = w.css, R = w.media, b = w.sourceMap;\n if (R ? y.setAttribute(\"media\", R) : y.removeAttribute(\"media\"), b && btoa && (I += `\n/*# sourceMappingURL=data:application/json;base64,`.concat(btoa(unescape(encodeURIComponent(JSON.stringify(b)))), \" */\")), y.styleSheet)\n y.styleSheet.cssText = I;\n else {\n for (; y.firstChild; )\n y.removeChild(y.firstChild);\n y.appendChild(document.createTextNode(I));\n }\n }\n var A = null, N = 0;\n function _(y, x) {\n var w, I, R;\n if (x.singleton) {\n var b = N++;\n w = A || (A = h(x)), I = p.bind(null, w, b, !1), R = p.bind(null, w, b, !0);\n } else\n w = h(x), I = v.bind(null, w, x), R = function() {\n (function(g) {\n if (g.parentNode === null)\n return !1;\n g.parentNode.removeChild(g);\n })(w);\n };\n return I(y), function(g) {\n if (g) {\n if (g.css === y.css && g.media === y.media && g.sourceMap === y.sourceMap)\n return;\n I(y = g);\n } else\n R();\n };\n }\n t.exports = function(y, x) {\n (x = x || {}).singleton || typeof x.singleton == \"boolean\" || (x.singleton = r());\n var w = u(y = y || [], x);\n return function(I) {\n if (I = I || [], Object.prototype.toString.call(I) === \"[object Array]\") {\n for (var R = 0; R < w.length; R++) {\n var b = c(w[R]);\n l[b].references--;\n }\n for (var g = u(I, x), E = 0; E < w.length; E++) {\n var T = c(w[E]);\n l[T].references === 0 && (l[T].updater(), l.splice(T, 1));\n }\n w = g;\n }\n };\n };\n }, function(t, o, i) {\n (o = i(3)(!1)).push([t.i, `.ce-paragraph {\n line-height: 1.6em;\n outline: none;\n}\n\n.ce-paragraph[data-placeholder]:empty::before{\n content: attr(data-placeholder);\n color: #707684;\n font-weight: normal;\n opacity: 0;\n}\n\n/** Show placeholder at the first paragraph if Editor is empty */\n.codex-editor--empty .ce-block:first-child .ce-paragraph[data-placeholder]:empty::before {\n opacity: 1;\n}\n\n.codex-editor--toolbox-opened .ce-block:first-child .ce-paragraph[data-placeholder]:empty::before,\n.codex-editor--empty .ce-block:first-child .ce-paragraph[data-placeholder]:empty:focus::before {\n opacity: 0;\n}\n\n.ce-paragraph p:first-of-type{\n margin-top: 0;\n}\n\n.ce-paragraph p:last-of-type{\n margin-bottom: 0;\n}\n`, \"\"]), t.exports = o;\n }, function(t, o, i) {\n t.exports = function(n) {\n var r = [];\n return r.toString = function() {\n return this.map(function(a) {\n var l = function(c, u) {\n var h = c[1] || \"\", f = c[3];\n if (!f)\n return h;\n if (u && typeof btoa == \"function\") {\n var k = (v = f, A = btoa(unescape(encodeURIComponent(JSON.stringify(v)))), N = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(A), \"/*# \".concat(N, \" */\")), p = f.sources.map(function(_) {\n return \"/*# sourceURL=\".concat(f.sourceRoot || \"\").concat(_, \" */\");\n });\n return [h].concat(p).concat([k]).join(`\n`);\n }\n var v, A, N;\n return [h].join(`\n`);\n }(a, n);\n return a[2] ? \"@media \".concat(a[2], \" {\").concat(l, \"}\") : l;\n }).join(\"\");\n }, r.i = function(a, l, c) {\n typeof a == \"string\" && (a = [[null, a, \"\"]]);\n var u = {};\n if (c)\n for (var h = 0; h < this.length; h++) {\n var f = this[h][0];\n f != null && (u[f] = !0);\n }\n for (var k = 0; k < a.length; k++) {\n var p = [].concat(a[k]);\n c && u[p[0]] || (l && (p[2] ? p[2] = \"\".concat(l, \" and \").concat(p[2]) : p[2] = l), r.push(p));\n }\n }, r;\n };\n }, function(t, o, i) {\n i.r(o), i.d(o, \"default\", function() {\n return a;\n }), i(0);\n function n(l, c) {\n for (var u = 0; u < c.length; u++) {\n var h = c[u];\n h.enumerable = h.enumerable || !1, h.configurable = !0, \"value\" in h && (h.writable = !0), Object.defineProperty(l, h.key, h);\n }\n }\n function r(l, c, u) {\n return c && n(l.prototype, c), u && n(l, u), l;\n }\n /**\n * Base Paragraph Block for the Editor.js.\n * Represents a regular text block\n *\n * @author CodeX (team@codex.so)\n * @copyright CodeX 2018\n * @license The MIT License (MIT)\n */\n var a = function() {\n function l(c) {\n var u = c.data, h = c.config, f = c.api, k = c.readOnly;\n (function(p, v) {\n if (!(p instanceof v))\n throw new TypeError(\"Cannot call a class as a function\");\n })(this, l), this.api = f, this.readOnly = k, this._CSS = { block: this.api.styles.block, wrapper: \"ce-paragraph\" }, this.readOnly || (this.onKeyUp = this.onKeyUp.bind(this)), this._placeholder = h.placeholder ? h.placeholder : l.DEFAULT_PLACEHOLDER, this._data = {}, this._element = null, this._preserveBlank = h.preserveBlank !== void 0 && h.preserveBlank, this.data = u;\n }\n return r(l, null, [{ key: \"DEFAULT_PLACEHOLDER\", get: function() {\n return \"\";\n } }]), r(l, [{ key: \"onKeyUp\", value: function(c) {\n c.code !== \"Backspace\" && c.code !== \"Delete\" || this._element.textContent === \"\" && (this._element.innerHTML = \"\");\n } }, { key: \"drawView\", value: function() {\n var c = document.createElement(\"DIV\");\n return c.classList.add(this._CSS.wrapper, this._CSS.block), c.contentEditable = !1, c.dataset.placeholder = this.api.i18n.t(this._placeholder), this.readOnly || (c.contentEditable = !0, c.addEventListener(\"keyup\", this.onKeyUp)), c;\n } }, { key: \"render\", value: function() {\n return this._element === null && (this._element = this.drawView()), this.hydrate(), this._element;\n } }, { key: \"merge\", value: function(c) {\n var u = { text: this.data.text + c.text };\n this.data = u;\n } }, { key: \"validate\", value: function(c) {\n return !(c.text.trim() === \"\" && !this._preserveBlank);\n } }, { key: \"save\", value: function(c) {\n return { text: c.innerHTML };\n } }, { key: \"onPaste\", value: function(c) {\n var u = { text: c.detail.data.innerHTML };\n this.data = u;\n } }, { key: \"hydrate\", value: function() {\n var c = this;\n window.requestAnimationFrame(function() {\n c._element.innerHTML = c._data.text || \"\";\n });\n } }, { key: \"data\", get: function() {\n if (this._element !== null) {\n var c = this._element.innerHTML;\n this._data.text = c;\n }\n return this._data;\n }, set: function(c) {\n this._data = c || {}, this._element !== null && this.hydrate();\n } }], [{ key: \"conversionConfig\", get: function() {\n return { export: \"text\", import: \"text\" };\n } }, { key: \"sanitize\", get: function() {\n return { text: { br: !0 } };\n } }, { key: \"isReadOnlySupported\", get: function() {\n return !0;\n } }, { key: \"pasteConfig\", get: function() {\n return { tags: [\"P\"] };\n } }, { key: \"toolbox\", get: function() {\n return { icon: '', title: \"Text\" };\n } }]), l;\n }();\n }]).default;\n });\n})(si);\nconst ri = /* @__PURE__ */ xe(Ne);\nclass We {\n constructor() {\n this.commandName = \"bold\", this.CSS = {\n button: \"ce-inline-tool\",\n buttonActive: \"ce-inline-tool--active\",\n buttonModifier: \"ce-inline-tool--bold\"\n }, this.nodes = {\n button: void 0\n };\n }\n /**\n * Sanitizer Rule\n * Leave tags\n *\n * @returns {object}\n */\n static get sanitize() {\n return {\n b: {}\n };\n }\n /**\n * Create button for Inline Toolbar\n */\n render() {\n return this.nodes.button = document.createElement(\"button\"), this.nodes.button.type = \"button\", this.nodes.button.classList.add(this.CSS.button, this.CSS.buttonModifier), this.nodes.button.innerHTML = So, this.nodes.button;\n }\n /**\n * Wrap range with tag\n */\n surround() {\n document.execCommand(this.commandName);\n }\n /**\n * Check selection and set activated state to button if there are tag\n *\n * @returns {boolean}\n */\n checkState() {\n const e = document.queryCommandState(this.commandName);\n return this.nodes.button.classList.toggle(this.CSS.buttonActive, e), e;\n }\n /**\n * Set a shortcut\n *\n * @returns {boolean}\n */\n get shortcut() {\n return \"CMD+B\";\n }\n}\nWe.isInline = !0;\nWe.title = \"Bold\";\nclass Ye {\n constructor() {\n this.commandName = \"italic\", this.CSS = {\n button: \"ce-inline-tool\",\n buttonActive: \"ce-inline-tool--active\",\n buttonModifier: \"ce-inline-tool--italic\"\n }, this.nodes = {\n button: null\n };\n }\n /**\n * Sanitizer Rule\n * Leave tags\n *\n * @returns {object}\n */\n static get sanitize() {\n return {\n i: {}\n };\n }\n /**\n * Create button for Inline Toolbar\n */\n render() {\n return this.nodes.button = document.createElement(\"button\"), this.nodes.button.type = \"button\", this.nodes.button.classList.add(this.CSS.button, this.CSS.buttonModifier), this.nodes.button.innerHTML = Oo, this.nodes.button;\n }\n /**\n * Wrap range with tag\n */\n surround() {\n document.execCommand(this.commandName);\n }\n /**\n * Check selection and set activated state to button if there are tag\n */\n checkState() {\n const e = document.queryCommandState(this.commandName);\n return this.nodes.button.classList.toggle(this.CSS.buttonActive, e), e;\n }\n /**\n * Set a shortcut\n */\n get shortcut() {\n return \"CMD+I\";\n }\n}\nYe.isInline = !0;\nYe.title = \"Italic\";\nclass Ke {\n /**\n * @param api - Editor.js API\n */\n constructor({ api: e }) {\n this.commandLink = \"createLink\", this.commandUnlink = \"unlink\", this.ENTER_KEY = 13, this.CSS = {\n button: \"ce-inline-tool\",\n buttonActive: \"ce-inline-tool--active\",\n buttonModifier: \"ce-inline-tool--link\",\n buttonUnlink: \"ce-inline-tool--unlink\",\n input: \"ce-inline-tool-input\",\n inputShowed: \"ce-inline-tool-input--showed\"\n }, this.nodes = {\n button: null,\n input: null\n }, this.inputOpened = !1, this.toolbar = e.toolbar, this.inlineToolbar = e.inlineToolbar, this.notifier = e.notifier, this.i18n = e.i18n, this.selection = new m();\n }\n /**\n * Sanitizer Rule\n * Leave
tags\n *\n * @returns {object}\n */\n static get sanitize() {\n return {\n a: {\n href: !0,\n target: \"_blank\",\n rel: \"nofollow\"\n }\n };\n }\n /**\n * Create button for Inline Toolbar\n */\n render() {\n return this.nodes.button = document.createElement(\"button\"), this.nodes.button.type = \"button\", this.nodes.button.classList.add(this.CSS.button, this.CSS.buttonModifier), this.nodes.button.innerHTML = Qe, this.nodes.button;\n }\n /**\n * Input for the link\n */\n renderActions() {\n return this.nodes.input = document.createElement(\"input\"), this.nodes.input.placeholder = this.i18n.t(\"Add a link\"), this.nodes.input.classList.add(this.CSS.input), this.nodes.input.addEventListener(\"keydown\", (e) => {\n e.keyCode === this.ENTER_KEY && this.enterPressed(e);\n }), this.nodes.input;\n }\n /**\n * Handle clicks on the Inline Toolbar icon\n *\n * @param {Range} range - range to wrap with link\n */\n surround(e) {\n if (e) {\n this.inputOpened ? (this.selection.restore(), this.selection.removeFakeBackground()) : (this.selection.setFakeBackground(), this.selection.save());\n const t = this.selection.findParentTag(\"A\");\n if (t) {\n this.selection.expandToTag(t), this.unlink(), this.closeActions(), this.checkState(), this.toolbar.close();\n return;\n }\n }\n this.toggleActions();\n }\n /**\n * Check selection and set activated state to button if there are tag\n */\n checkState() {\n const e = this.selection.findParentTag(\"A\");\n if (e) {\n this.nodes.button.innerHTML = Ro, this.nodes.button.classList.add(this.CSS.buttonUnlink), this.nodes.button.classList.add(this.CSS.buttonActive), this.openActions();\n const t = e.getAttribute(\"href\");\n this.nodes.input.value = t !== \"null\" ? t : \"\", this.selection.save();\n } else\n this.nodes.button.innerHTML = Qe, this.nodes.button.classList.remove(this.CSS.buttonUnlink), this.nodes.button.classList.remove(this.CSS.buttonActive);\n return !!e;\n }\n /**\n * Function called with Inline Toolbar closing\n */\n clear() {\n this.closeActions();\n }\n /**\n * Set a shortcut\n */\n get shortcut() {\n return \"CMD+K\";\n }\n /**\n * Show/close link input\n */\n toggleActions() {\n this.inputOpened ? this.closeActions(!1) : this.openActions(!0);\n }\n /**\n * @param {boolean} needFocus - on link creation we need to focus input. On editing - nope.\n */\n openActions(e = !1) {\n this.nodes.input.classList.add(this.CSS.inputShowed), e && this.nodes.input.focus(), this.inputOpened = !0;\n }\n /**\n * Close input\n *\n * @param {boolean} clearSavedSelection — we don't need to clear saved selection\n * on toggle-clicks on the icon of opened Toolbar\n */\n closeActions(e = !0) {\n if (this.selection.isFakeBackgroundEnabled) {\n const t = new m();\n t.save(), this.selection.restore(), this.selection.removeFakeBackground(), t.restore();\n }\n this.nodes.input.classList.remove(this.CSS.inputShowed), this.nodes.input.value = \"\", e && this.selection.clearSaved(), this.inputOpened = !1;\n }\n /**\n * Enter pressed on input\n *\n * @param {KeyboardEvent} event - enter keydown event\n */\n enterPressed(e) {\n let t = this.nodes.input.value || \"\";\n if (!t.trim()) {\n this.selection.restore(), this.unlink(), e.preventDefault(), this.closeActions();\n return;\n }\n if (!this.validateURL(t)) {\n this.notifier.show({\n message: \"Pasted link is not valid.\",\n style: \"error\"\n }), L(\"Incorrect Link pasted\", \"warn\", t);\n return;\n }\n t = this.prepareLink(t), this.selection.restore(), this.selection.removeFakeBackground(), this.insertLink(t), e.preventDefault(), e.stopPropagation(), e.stopImmediatePropagation(), this.selection.collapseToEnd(), this.inlineToolbar.close();\n }\n /**\n * Detects if passed string is URL\n *\n * @param {string} str - string to validate\n * @returns {boolean}\n */\n validateURL(e) {\n return !/\\s/.test(e);\n }\n /**\n * Process link before injection\n * - sanitize\n * - add protocol for links like 'google.com'\n *\n * @param {string} link - raw user input\n */\n prepareLink(e) {\n return e = e.trim(), e = this.addProtocol(e), e;\n }\n /**\n * Add 'http' protocol to the links like 'vc.ru', 'google.com'\n *\n * @param {string} link - string to process\n */\n addProtocol(e) {\n if (/^(\\w+):(\\/\\/)?/.test(e))\n return e;\n const t = /^\\/[^/\\s]/.test(e), o = e.substring(0, 1) === \"#\", i = /^\\/\\/[^/\\s]/.test(e);\n return !t && !o && !i && (e = \"http://\" + e), e;\n }\n /**\n * Inserts tag with \"href\"\n *\n * @param {string} link - \"href\" value\n */\n insertLink(e) {\n const t = this.selection.findParentTag(\"A\");\n t && this.selection.expandToTag(t), document.execCommand(this.commandLink, !1, e);\n }\n /**\n * Removes tag\n */\n unlink() {\n document.execCommand(this.commandUnlink);\n }\n}\nKe.isInline = !0;\nKe.title = \"Link\";\nclass Et {\n /**\n * @param options - constructor options\n * @param options.data - stub tool data\n * @param options.api - Editor.js API\n */\n constructor({ data: e, api: t }) {\n this.CSS = {\n wrapper: \"ce-stub\",\n info: \"ce-stub__info\",\n title: \"ce-stub__title\",\n subtitle: \"ce-stub__subtitle\"\n }, this.api = t, this.title = e.title || this.api.i18n.t(\"Error\"), this.subtitle = this.api.i18n.t(\"The block can not be displayed correctly.\"), this.savedData = e.savedData, this.wrapper = this.make();\n }\n /**\n * Returns stub holder\n *\n * @returns {HTMLElement}\n */\n render() {\n return this.wrapper;\n }\n /**\n * Return original Tool data\n *\n * @returns {BlockToolData}\n */\n save() {\n return this.savedData;\n }\n /**\n * Create Tool html markup\n *\n * @returns {HTMLElement}\n */\n make() {\n const e = d.make(\"div\", this.CSS.wrapper), t = Do, o = d.make(\"div\", this.CSS.info), i = d.make(\"div\", this.CSS.title, {\n textContent: this.title\n }), n = d.make(\"div\", this.CSS.subtitle, {\n textContent: this.subtitle\n });\n return e.innerHTML = t, o.appendChild(i), o.appendChild(n), e.appendChild(o), e;\n }\n}\nEt.isReadOnlySupported = !0;\nclass ai extends $e {\n constructor() {\n super(...arguments), this.type = ye.Inline;\n }\n /**\n * Returns title for Inline Tool if specified by user\n */\n get title() {\n return this.constructable[Ue.Title];\n }\n /**\n * Constructs new InlineTool instance from constructable\n */\n create() {\n return new this.constructable({\n api: this.api.getMethodsForTool(this),\n config: this.settings\n });\n }\n}\nclass li extends $e {\n constructor() {\n super(...arguments), this.type = ye.Tune;\n }\n /**\n * Constructs new BlockTune instance from constructable\n *\n * @param data - Tune data\n * @param block - Block API object\n */\n create(e, t) {\n return new this.constructable({\n api: this.api.getMethodsForTool(this),\n config: this.settings,\n block: t,\n data: e\n });\n }\n}\nclass U extends Map {\n /**\n * Returns Block Tools collection\n */\n get blockTools() {\n const e = Array.from(this.entries()).filter(([, t]) => t.isBlock());\n return new U(e);\n }\n /**\n * Returns Inline Tools collection\n */\n get inlineTools() {\n const e = Array.from(this.entries()).filter(([, t]) => t.isInline());\n return new U(e);\n }\n /**\n * Returns Block Tunes collection\n */\n get blockTunes() {\n const e = Array.from(this.entries()).filter(([, t]) => t.isTune());\n return new U(e);\n }\n /**\n * Returns internal Tools collection\n */\n get internalTools() {\n const e = Array.from(this.entries()).filter(([, t]) => t.isInternal);\n return new U(e);\n }\n /**\n * Returns Tools collection provided by user\n */\n get externalTools() {\n const e = Array.from(this.entries()).filter(([, t]) => !t.isInternal);\n return new U(e);\n }\n}\nvar ci = Object.defineProperty, di = Object.getOwnPropertyDescriptor, Bt = (s, e, t, o) => {\n for (var i = o > 1 ? void 0 : o ? di(e, t) : e, n = s.length - 1, r; n >= 0; n--)\n (r = s[n]) && (i = (o ? r(e, t, i) : r(i)) || i);\n return o && i && ci(e, t, i), i;\n};\nclass Xe extends $e {\n constructor() {\n super(...arguments), this.type = ye.Block, this.inlineTools = new U(), this.tunes = new U();\n }\n /**\n * Creates new Tool instance\n *\n * @param data - Tool data\n * @param block - BlockAPI for current Block\n * @param readOnly - True if Editor is in read-only mode\n */\n create(e, t, o) {\n return new this.constructable({\n data: e,\n block: t,\n readOnly: o,\n api: this.api.getMethodsForTool(this),\n config: this.settings\n });\n }\n /**\n * Returns true if read-only mode is supported by Tool\n */\n get isReadOnlySupported() {\n return this.constructable[se.IsReadOnlySupported] === !0;\n }\n /**\n * Returns true if Tool supports linebreaks\n */\n get isLineBreaksEnabled() {\n return this.constructable[se.IsEnabledLineBreaks];\n }\n /**\n * Returns Tool toolbox configuration (internal or user-specified).\n *\n * Merges internal and user-defined toolbox configs based on the following rules:\n *\n * - If both internal and user-defined toolbox configs are arrays their items are merged.\n * Length of the second one is kept.\n *\n * - If both are objects their properties are merged.\n *\n * - If one is an object and another is an array than internal config is replaced with user-defined\n * config. This is made to allow user to override default tool's toolbox representation (single/multiple entries)\n */\n get toolbox() {\n const e = this.constructable[se.Toolbox], t = this.config[ke.Toolbox];\n if (!V(e) && t !== !1)\n return t ? Array.isArray(e) ? Array.isArray(t) ? t.map((o, i) => {\n const n = e[i];\n return n ? {\n ...n,\n ...o\n } : o;\n }) : [t] : Array.isArray(t) ? t : [\n {\n ...e,\n ...t\n }\n ] : Array.isArray(e) ? e : [e];\n }\n /**\n * Returns Tool conversion configuration\n */\n get conversionConfig() {\n return this.constructable[se.ConversionConfig];\n }\n /**\n * Returns enabled inline tools for Tool\n */\n get enabledInlineTools() {\n return this.config[ke.EnabledInlineTools] || !1;\n }\n /**\n * Returns enabled tunes for Tool\n */\n get enabledBlockTunes() {\n return this.config[ke.EnabledBlockTunes];\n }\n /**\n * Returns Tool paste configuration\n */\n get pasteConfig() {\n return this.constructable[se.PasteConfig] ?? {};\n }\n get sanitizeConfig() {\n const e = super.sanitizeConfig, t = this.baseSanitizeConfig;\n if (V(e))\n return t;\n const o = {};\n for (const i in e)\n if (Object.prototype.hasOwnProperty.call(e, i)) {\n const n = e[i];\n z(n) ? o[i] = Object.assign({}, t, n) : o[i] = n;\n }\n return o;\n }\n get baseSanitizeConfig() {\n const e = {};\n return Array.from(this.inlineTools.values()).forEach((t) => Object.assign(e, t.sanitizeConfig)), Array.from(this.tunes.values()).forEach((t) => Object.assign(e, t.sanitizeConfig)), e;\n }\n}\nBt([\n ce\n], Xe.prototype, \"sanitizeConfig\", 1);\nBt([\n ce\n], Xe.prototype, \"baseSanitizeConfig\", 1);\nclass hi {\n /**\n * @class\n * @param config - tools config\n * @param editorConfig - EditorJS config\n * @param api - EditorJS API module\n */\n constructor(e, t, o) {\n this.api = o, this.config = e, this.editorConfig = t;\n }\n /**\n * Returns Tool object based on it's type\n *\n * @param name - tool name\n */\n get(e) {\n const { class: t, isInternal: o = !1, ...i } = this.config[e], n = this.getConstructor(t);\n return new n({\n name: e,\n constructable: t,\n config: i,\n api: this.api,\n isDefault: e === this.editorConfig.defaultBlock,\n defaultPlaceholder: this.editorConfig.placeholder,\n isInternal: o\n });\n }\n /**\n * Find appropriate Tool object constructor for Tool constructable\n *\n * @param constructable - Tools constructable\n */\n getConstructor(e) {\n switch (!0) {\n case e[Ue.IsInline]:\n return ai;\n case e[xt.IsTune]:\n return li;\n default:\n return Xe;\n }\n }\n}\nclass Tt {\n /**\n * MoveDownTune constructor\n *\n * @param {API} api — Editor's API\n */\n constructor({ api: e }) {\n this.CSS = {\n animation: \"wobble\"\n }, this.api = e;\n }\n /**\n * Tune's appearance in block settings menu\n */\n render() {\n return {\n icon: ft,\n title: this.api.i18n.t(\"Move down\"),\n onActivate: () => this.handleClick(),\n name: \"move-down\"\n };\n }\n /**\n * Handle clicks on 'move down' button\n */\n handleClick() {\n const e = this.api.blocks.getCurrentBlockIndex(), t = this.api.blocks.getBlockByIndex(e + 1);\n if (!t)\n throw new Error(\"Unable to move Block down since it is already the last\");\n const o = t.holder, i = o.getBoundingClientRect();\n let n = Math.abs(window.innerHeight - o.offsetHeight);\n i.top < window.innerHeight && (n = window.scrollY + o.offsetHeight), window.scrollTo(0, n), this.api.blocks.move(e + 1), this.api.toolbar.toggleBlockSettings(!0);\n }\n}\nTt.isTune = !0;\nclass Ct {\n /**\n * DeleteTune constructor\n *\n * @param {API} api - Editor's API\n */\n constructor({ api: e }) {\n this.api = e;\n }\n /**\n * Tune's appearance in block settings menu\n */\n render() {\n return {\n icon: Mo,\n title: this.api.i18n.t(\"Delete\"),\n name: \"delete\",\n confirmation: {\n title: this.api.i18n.t(\"Click to delete\"),\n onActivate: () => this.handleClick()\n }\n };\n }\n /**\n * Delete block conditions passed\n */\n handleClick() {\n this.api.blocks.delete();\n }\n}\nCt.isTune = !0;\nclass St {\n /**\n * MoveUpTune constructor\n *\n * @param {API} api - Editor's API\n */\n constructor({ api: e }) {\n this.CSS = {\n animation: \"wobble\"\n }, this.api = e;\n }\n /**\n * Tune's appearance in block settings menu\n */\n render() {\n return {\n icon: Io,\n title: this.api.i18n.t(\"Move up\"),\n onActivate: () => this.handleClick(),\n name: \"move-up\"\n };\n }\n /**\n * Move current block up\n */\n handleClick() {\n const e = this.api.blocks.getCurrentBlockIndex(), t = this.api.blocks.getBlockByIndex(e), o = this.api.blocks.getBlockByIndex(e - 1);\n if (e === 0 || !t || !o)\n throw new Error(\"Unable to move Block up since it is already the first\");\n const i = t.holder, n = o.holder, r = i.getBoundingClientRect(), a = n.getBoundingClientRect();\n let l;\n a.top > 0 ? l = Math.abs(r.top) - Math.abs(a.top) : l = Math.abs(r.top) + a.height, window.scrollBy(0, -1 * l), this.api.blocks.move(e - 1), this.api.toolbar.toggleBlockSettings(!0);\n }\n}\nSt.isTune = !0;\nvar ui = Object.defineProperty, pi = Object.getOwnPropertyDescriptor, fi = (s, e, t, o) => {\n for (var i = o > 1 ? void 0 : o ? pi(e, t) : e, n = s.length - 1, r; n >= 0; n--)\n (r = s[n]) && (i = (o ? r(e, t, i) : r(i)) || i);\n return o && i && ui(e, t, i), i;\n};\nclass It extends C {\n constructor() {\n super(...arguments), this.stubTool = \"stub\", this.toolsAvailable = new U(), this.toolsUnavailable = new U();\n }\n /**\n * Returns available Tools\n */\n get available() {\n return this.toolsAvailable;\n }\n /**\n * Returns unavailable Tools\n */\n get unavailable() {\n return this.toolsUnavailable;\n }\n /**\n * Return Tools for the Inline Toolbar\n */\n get inlineTools() {\n return this.available.inlineTools;\n }\n /**\n * Return editor block tools\n */\n get blockTools() {\n return this.available.blockTools;\n }\n /**\n * Return available Block Tunes\n *\n * @returns {object} - object of Inline Tool's classes\n */\n get blockTunes() {\n return this.available.blockTunes;\n }\n /**\n * Returns default Tool object\n */\n get defaultTool() {\n return this.blockTools.get(this.config.defaultBlock);\n }\n /**\n * Returns internal tools\n */\n get internal() {\n return this.available.internalTools;\n }\n /**\n * Creates instances via passed or default configuration\n *\n * @returns {Promise}\n */\n async prepare() {\n if (this.validateTools(), this.config.tools = Se({}, this.internalTools, this.config.tools), !Object.prototype.hasOwnProperty.call(this.config, \"tools\") || Object.keys(this.config.tools).length === 0)\n throw Error(\"Can't start without tools\");\n const e = this.prepareConfig();\n this.factory = new hi(e, this.config, this.Editor.API);\n const t = this.getListOfPrepareFunctions(e);\n if (t.length === 0)\n return Promise.resolve();\n await Dt(t, (o) => {\n this.toolPrepareMethodSuccess(o);\n }, (o) => {\n this.toolPrepareMethodFallback(o);\n }), this.prepareBlockTools();\n }\n getAllInlineToolsSanitizeConfig() {\n const e = {};\n return Array.from(this.inlineTools.values()).forEach((t) => {\n Object.assign(e, t.sanitizeConfig);\n }), e;\n }\n /**\n * Calls each Tool reset method to clean up anything set by Tool\n */\n destroy() {\n Object.values(this.available).forEach(async (e) => {\n D(e.reset) && await e.reset();\n });\n }\n /**\n * Returns internal tools\n * Includes Bold, Italic, Link and Paragraph\n */\n get internalTools() {\n return {\n bold: {\n class: We,\n isInternal: !0\n },\n italic: {\n class: Ye,\n isInternal: !0\n },\n link: {\n class: Ke,\n isInternal: !0\n },\n paragraph: {\n class: ri,\n inlineToolbar: !0,\n isInternal: !0\n },\n stub: {\n class: Et,\n isInternal: !0\n },\n moveUp: {\n class: St,\n isInternal: !0\n },\n delete: {\n class: Ct,\n isInternal: !0\n },\n moveDown: {\n class: Tt,\n isInternal: !0\n }\n };\n }\n /**\n * Tool prepare method success callback\n *\n * @param {object} data - append tool to available list\n */\n toolPrepareMethodSuccess(e) {\n const t = this.factory.get(e.toolName);\n if (t.isInline()) {\n const i = [\"render\", \"surround\", \"checkState\"].filter((n) => !t.create()[n]);\n if (i.length) {\n L(\n `Incorrect Inline Tool: ${t.name}. Some of required methods is not implemented %o`,\n \"warn\",\n i\n ), this.toolsUnavailable.set(t.name, t);\n return;\n }\n }\n this.toolsAvailable.set(t.name, t);\n }\n /**\n * Tool prepare method fail callback\n *\n * @param {object} data - append tool to unavailable list\n */\n toolPrepareMethodFallback(e) {\n this.toolsUnavailable.set(e.toolName, this.factory.get(e.toolName));\n }\n /**\n * Binds prepare function of plugins with user or default config\n *\n * @returns {Array} list of functions that needs to be fired sequentially\n * @param config - tools config\n */\n getListOfPrepareFunctions(e) {\n const t = [];\n return Object.entries(e).forEach(([o, i]) => {\n t.push({\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n function: D(i.class.prepare) ? i.class.prepare : () => {\n },\n data: {\n toolName: o,\n config: i.config\n }\n });\n }), t;\n }\n /**\n * Assign enabled Inline Tools and Block Tunes for Block Tool\n */\n prepareBlockTools() {\n Array.from(this.blockTools.values()).forEach((e) => {\n this.assignInlineToolsToBlockTool(e), this.assignBlockTunesToBlockTool(e);\n });\n }\n /**\n * Assign enabled Inline Tools for Block Tool\n *\n * @param tool - Block Tool\n */\n assignInlineToolsToBlockTool(e) {\n if (this.config.inlineToolbar !== !1) {\n if (e.enabledInlineTools === !0) {\n e.inlineTools = new U(\n Array.isArray(this.config.inlineToolbar) ? this.config.inlineToolbar.map((t) => [t, this.inlineTools.get(t)]) : Array.from(this.inlineTools.entries())\n );\n return;\n }\n Array.isArray(e.enabledInlineTools) && (e.inlineTools = new U(\n e.enabledInlineTools.map((t) => [t, this.inlineTools.get(t)])\n ));\n }\n }\n /**\n * Assign enabled Block Tunes for Block Tool\n *\n * @param tool — Block Tool\n */\n assignBlockTunesToBlockTool(e) {\n if (e.enabledBlockTunes !== !1) {\n if (Array.isArray(e.enabledBlockTunes)) {\n const t = new U(\n e.enabledBlockTunes.map((o) => [o, this.blockTunes.get(o)])\n );\n e.tunes = new U([...t, ...this.blockTunes.internalTools]);\n return;\n }\n if (Array.isArray(this.config.tunes)) {\n const t = new U(\n this.config.tunes.map((o) => [o, this.blockTunes.get(o)])\n );\n e.tunes = new U([...t, ...this.blockTunes.internalTools]);\n return;\n }\n e.tunes = this.blockTunes.internalTools;\n }\n }\n /**\n * Validate Tools configuration objects and throw Error for user if it is invalid\n */\n validateTools() {\n for (const e in this.config.tools)\n if (Object.prototype.hasOwnProperty.call(this.config.tools, e)) {\n if (e in this.internalTools)\n return;\n const t = this.config.tools[e];\n if (!D(t) && !D(t.class))\n throw Error(\n `Tool «${e}» must be a constructor function or an object with function in the «class» property`\n );\n }\n }\n /**\n * Unify tools config\n */\n prepareConfig() {\n const e = {};\n for (const t in this.config.tools)\n z(this.config.tools[t]) ? e[t] = this.config.tools[t] : e[t] = { class: this.config.tools[t] };\n return e;\n }\n}\nfi([\n ce\n], It.prototype, \"getAllInlineToolsSanitizeConfig\", 1);\nconst gi = `:root{--selectionColor: #e1f2ff;--inlineSelectionColor: #d4ecff;--bg-light: #eff2f5;--grayText: #707684;--color-dark: #1D202B;--color-active-icon: #388AE5;--color-gray-border: rgba(201, 201, 204, .48);--content-width: 650px;--narrow-mode-right-padding: 50px;--toolbox-buttons-size: 26px;--toolbox-buttons-size--mobile: 36px;--icon-size: 20px;--icon-size--mobile: 28px;--block-padding-vertical: .4em;--color-line-gray: #EFF0F1 }.codex-editor{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;z-index:1}.codex-editor .hide{display:none}.codex-editor__redactor [contenteditable]:empty:after{content:\"\\\\feff\"}@media (min-width: 651px){.codex-editor--narrow .codex-editor__redactor{margin-right:50px}}@media (min-width: 651px){.codex-editor--narrow.codex-editor--rtl .codex-editor__redactor{margin-left:50px;margin-right:0}}@media (min-width: 651px){.codex-editor--narrow .ce-toolbar__actions{right:-5px}}.codex-editor-copyable{position:absolute;height:1px;width:1px;top:-400%;opacity:.001}.codex-editor-overlay{position:fixed;top:0px;left:0px;right:0px;bottom:0px;z-index:999;pointer-events:none;overflow:hidden}.codex-editor-overlay__container{position:relative;pointer-events:auto;z-index:0}.codex-editor-overlay__rectangle{position:absolute;pointer-events:none;background-color:#2eaadc33;border:1px solid transparent}.codex-editor svg{max-height:100%}.codex-editor path{stroke:currentColor}.codex-editor ::-moz-selection{background-color:#d4ecff}.codex-editor ::selection{background-color:#d4ecff}.codex-editor--toolbox-opened [contentEditable=true][data-placeholder]:focus:before{opacity:0!important}.ce-scroll-locked{overflow:hidden}.ce-scroll-locked--hard{overflow:hidden;top:calc(-1 * var(--window-scroll-offset));position:fixed;width:100%}.ce-toolbar{position:absolute;left:0;right:0;top:0;-webkit-transition:opacity .1s ease;transition:opacity .1s ease;will-change:opacity,top;display:none}.ce-toolbar--opened{display:block}.ce-toolbar__content{max-width:650px;margin:0 auto;position:relative}.ce-toolbar__plus{color:#1d202b;cursor:pointer;width:26px;height:26px;border-radius:7px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-flex-negative:0;flex-shrink:0}@media (max-width: 650px){.ce-toolbar__plus{width:36px;height:36px}}@media (hover: hover){.ce-toolbar__plus:hover{background-color:#eff2f5}}.ce-toolbar__plus--active{background-color:#eff2f5;-webkit-animation:bounceIn .75s 1;animation:bounceIn .75s 1;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}.ce-toolbar__plus-shortcut{opacity:.6;word-spacing:-2px;margin-top:5px}@media (max-width: 650px){.ce-toolbar__plus{position:absolute;background-color:#fff;border:1px solid #E8E8EB;-webkit-box-shadow:0 3px 15px -3px rgba(13,20,33,.13);box-shadow:0 3px 15px -3px #0d142121;border-radius:6px;z-index:2;position:static}.ce-toolbar__plus--left-oriented:before{left:15px;margin-left:0}.ce-toolbar__plus--right-oriented:before{left:auto;right:15px;margin-left:0}}.ce-toolbar__actions{position:absolute;right:100%;opacity:0;display:-webkit-box;display:-ms-flexbox;display:flex;padding-right:5px}.ce-toolbar__actions--opened{opacity:1}@media (max-width: 650px){.ce-toolbar__actions{right:auto}}.ce-toolbar__settings-btn{color:#1d202b;width:26px;height:26px;border-radius:7px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;margin-left:3px;cursor:pointer;user-select:none}@media (max-width: 650px){.ce-toolbar__settings-btn{width:36px;height:36px}}@media (hover: hover){.ce-toolbar__settings-btn:hover{background-color:#eff2f5}}.ce-toolbar__settings-btn--active{background-color:#eff2f5;-webkit-animation:bounceIn .75s 1;animation:bounceIn .75s 1;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}@media (min-width: 651px){.ce-toolbar__settings-btn{width:24px}}.ce-toolbar__settings-btn--hidden{display:none}@media (max-width: 650px){.ce-toolbar__settings-btn{position:absolute;background-color:#fff;border:1px solid #E8E8EB;-webkit-box-shadow:0 3px 15px -3px rgba(13,20,33,.13);box-shadow:0 3px 15px -3px #0d142121;border-radius:6px;z-index:2;position:static}.ce-toolbar__settings-btn--left-oriented:before{left:15px;margin-left:0}.ce-toolbar__settings-btn--right-oriented:before{left:auto;right:15px;margin-left:0}}.ce-toolbar__plus svg,.ce-toolbar__settings-btn svg{width:24px;height:24px}@media (min-width: 651px){.codex-editor--narrow .ce-toolbar__plus{left:5px}}@media (min-width: 651px){.codex-editor--narrow .ce-toolbox .ce-popover{right:0;left:auto;left:initial}}.ce-inline-toolbar{--y-offset: 8px;position:absolute;background-color:#fff;border:1px solid #E8E8EB;-webkit-box-shadow:0 3px 15px -3px rgba(13,20,33,.13);box-shadow:0 3px 15px -3px #0d142121;border-radius:6px;z-index:2;-webkit-transform:translateX(-50%) translateY(8px) scale(.94);transform:translate(-50%) translateY(8px) scale(.94);opacity:0;visibility:hidden;-webkit-transition:opacity .25s ease,-webkit-transform .15s ease;transition:opacity .25s ease,-webkit-transform .15s ease;transition:transform .15s ease,opacity .25s ease;transition:transform .15s ease,opacity .25s ease,-webkit-transform .15s ease;will-change:transform,opacity;top:0;left:0;z-index:3}.ce-inline-toolbar--left-oriented:before{left:15px;margin-left:0}.ce-inline-toolbar--right-oriented:before{left:auto;right:15px;margin-left:0}.ce-inline-toolbar--showed{opacity:1;visibility:visible;-webkit-transform:translateX(-50%);transform:translate(-50%)}.ce-inline-toolbar--left-oriented{-webkit-transform:translateX(-23px) translateY(8px) scale(.94);transform:translate(-23px) translateY(8px) scale(.94)}.ce-inline-toolbar--left-oriented.ce-inline-toolbar--showed{-webkit-transform:translateX(-23px);transform:translate(-23px)}.ce-inline-toolbar--right-oriented{-webkit-transform:translateX(-100%) translateY(8px) scale(.94);transform:translate(-100%) translateY(8px) scale(.94);margin-left:23px}.ce-inline-toolbar--right-oriented.ce-inline-toolbar--showed{-webkit-transform:translateX(-100%);transform:translate(-100%)}.ce-inline-toolbar [hidden]{display:none!important}.ce-inline-toolbar__toggler-and-button-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;padding:0 6px}.ce-inline-toolbar__buttons{display:-webkit-box;display:-ms-flexbox;display:flex}.ce-inline-toolbar__dropdown{display:-webkit-box;display:-ms-flexbox;display:flex;padding:6px;margin:0 6px 0 -6px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;border-right:1px solid rgba(201,201,204,.48);-webkit-box-sizing:border-box;box-sizing:border-box}@media (hover: hover){.ce-inline-toolbar__dropdown:hover{background:#eff2f5}}.ce-inline-toolbar__dropdown--hidden{display:none}.ce-inline-toolbar__dropdown-content,.ce-inline-toolbar__dropdown-arrow{display:-webkit-box;display:-ms-flexbox;display:flex}.ce-inline-toolbar__dropdown-content svg,.ce-inline-toolbar__dropdown-arrow svg{width:20px;height:20px}.ce-inline-toolbar__shortcut{opacity:.6;word-spacing:-3px;margin-top:3px}.ce-inline-tool{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:6px 1px;cursor:pointer;border:0;outline:none;background-color:transparent;vertical-align:bottom;color:inherit;margin:0;border-radius:0;line-height:normal}.ce-inline-tool svg{width:20px;height:20px}@media (max-width: 650px){.ce-inline-tool svg{width:28px;height:28px}}@media (hover: hover){.ce-inline-tool:hover{background-color:#eff2f5}}.ce-inline-tool--active{color:#388ae5}.ce-inline-tool--focused{background:rgba(34,186,255,.08)!important}.ce-inline-tool--focused{-webkit-box-shadow:inset 0 0 0px 1px rgba(7,161,227,.08);box-shadow:inset 0 0 0 1px #07a1e314}.ce-inline-tool--focused-animated{-webkit-animation-name:buttonClicked;animation-name:buttonClicked;-webkit-animation-duration:.25s;animation-duration:.25s}.ce-inline-tool--link .icon--unlink,.ce-inline-tool--unlink .icon--link{display:none}.ce-inline-tool--unlink .icon--unlink{display:inline-block;margin-bottom:-1px}.ce-inline-tool-input{outline:none;border:0;border-radius:0 0 4px 4px;margin:0;font-size:13px;padding:10px;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;display:none;font-weight:500;border-top:1px solid rgba(201,201,204,.48);-webkit-appearance:none;font-family:inherit}@media (max-width: 650px){.ce-inline-tool-input{font-size:15px;font-weight:500}}.ce-inline-tool-input::-webkit-input-placeholder{color:#707684}.ce-inline-tool-input::-moz-placeholder{color:#707684}.ce-inline-tool-input:-ms-input-placeholder{color:#707684}.ce-inline-tool-input::-ms-input-placeholder{color:#707684}.ce-inline-tool-input::placeholder{color:#707684}.ce-inline-tool-input--showed{display:block}.ce-conversion-toolbar{position:absolute;background-color:#fff;border:1px solid #E8E8EB;-webkit-box-shadow:0 3px 15px -3px rgba(13,20,33,.13);box-shadow:0 3px 15px -3px #0d142121;border-radius:6px;z-index:2;opacity:0;visibility:hidden;will-change:transform,opacity;-webkit-transition:opacity .1s ease,-webkit-transform .1s ease;transition:opacity .1s ease,-webkit-transform .1s ease;transition:transform .1s ease,opacity .1s ease;transition:transform .1s ease,opacity .1s ease,-webkit-transform .1s ease;-webkit-transform:translateY(-8px);transform:translateY(-8px);left:-1px;width:190px;margin-top:5px;-webkit-box-sizing:content-box;box-sizing:content-box}.ce-conversion-toolbar--left-oriented:before{left:15px;margin-left:0}.ce-conversion-toolbar--right-oriented:before{left:auto;right:15px;margin-left:0}.ce-conversion-toolbar--showed{opacity:1;visibility:visible;-webkit-transform:none;transform:none}.ce-conversion-toolbar [hidden]{display:none!important}.ce-conversion-toolbar__buttons{display:-webkit-box;display:-ms-flexbox;display:flex}.ce-conversion-toolbar__label{color:#707684;font-size:11px;font-weight:500;letter-spacing:.33px;padding:10px 10px 5px;text-transform:uppercase}.ce-conversion-tool{display:-webkit-box;display:-ms-flexbox;display:flex;padding:5px 10px;font-size:14px;line-height:20px;font-weight:500;cursor:pointer;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ce-conversion-tool--hidden{display:none}.ce-conversion-tool--focused{background:rgba(34,186,255,.08)!important}.ce-conversion-tool--focused{-webkit-box-shadow:inset 0 0 0px 1px rgba(7,161,227,.08);box-shadow:inset 0 0 0 1px #07a1e314}.ce-conversion-tool--focused-animated{-webkit-animation-name:buttonClicked;animation-name:buttonClicked;-webkit-animation-duration:.25s;animation-duration:.25s}.ce-conversion-tool:hover{background:#eff2f5}.ce-conversion-tool__icon{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;width:26px;height:26px;-webkit-box-shadow:0 0 0 1px rgba(201,201,204,.48);box-shadow:0 0 0 1px #c9c9cc7a;border-radius:5px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;background:#fff;-webkit-box-sizing:content-box;box-sizing:content-box;-ms-flex-negative:0;flex-shrink:0;margin-right:10px}.ce-conversion-tool__icon svg{width:20px;height:20px}@media (max-width: 650px){.ce-conversion-tool__icon{width:36px;height:36px;border-radius:8px}.ce-conversion-tool__icon svg{width:28px;height:28px}}.ce-conversion-tool--last{margin-right:0!important}.ce-conversion-tool--active{color:#388ae5!important}.ce-conversion-tool--active{-webkit-animation:bounceIn .75s 1;animation:bounceIn .75s 1;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}.ce-conversion-tool__secondary-label{color:#707684;font-size:12px;margin-left:auto;white-space:nowrap;letter-spacing:-.1em;padding-right:5px;margin-bottom:-2px;opacity:.6}@media (max-width: 650px){.ce-conversion-tool__secondary-label{display:none}}.ce-settings__button{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:6px 1px;border-radius:3px;cursor:pointer;border:0;outline:none;background-color:transparent;vertical-align:bottom;color:inherit;margin:0;line-height:32px}.ce-settings__button svg{width:20px;height:20px}@media (max-width: 650px){.ce-settings__button svg{width:28px;height:28px}}@media (hover: hover){.ce-settings__button:hover{background-color:#eff2f5}}.ce-settings__button--active{color:#388ae5}.ce-settings__button--focused{background:rgba(34,186,255,.08)!important}.ce-settings__button--focused{-webkit-box-shadow:inset 0 0 0px 1px rgba(7,161,227,.08);box-shadow:inset 0 0 0 1px #07a1e314}.ce-settings__button--focused-animated{-webkit-animation-name:buttonClicked;animation-name:buttonClicked;-webkit-animation-duration:.25s;animation-duration:.25s}.ce-settings__button:not(:nth-child(3n+3)){margin-right:3px}.ce-settings__button:nth-child(n+4){margin-top:3px}.ce-settings__button--disabled{cursor:not-allowed!important}.ce-settings__button--disabled{opacity:.3}.ce-settings__button--selected{color:#388ae5}@media (min-width: 651px){.codex-editor--narrow .ce-settings .ce-popover{right:0;left:auto;left:initial}}@-webkit-keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.ce-block{-webkit-animation:fade-in .3s ease;animation:fade-in .3s ease;-webkit-animation-fill-mode:none;animation-fill-mode:none;-webkit-animation-fill-mode:initial;animation-fill-mode:initial}.ce-block:first-of-type{margin-top:0}.ce-block--selected .ce-block__content{background:#e1f2ff}.ce-block--selected .ce-block__content [contenteditable]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ce-block--selected .ce-block__content img,.ce-block--selected .ce-block__content .ce-stub{opacity:.55}.ce-block--stretched .ce-block__content{max-width:none}.ce-block__content{position:relative;max-width:650px;margin:0 auto;-webkit-transition:background-color .15s ease;transition:background-color .15s ease}.ce-block--drop-target .ce-block__content:before{content:\"\";position:absolute;top:100%;left:-20px;margin-top:-1px;height:8px;width:8px;border:solid #388AE5;border-width:1px 1px 0 0;-webkit-transform-origin:right;transform-origin:right;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.ce-block--drop-target .ce-block__content:after{content:\"\";position:absolute;top:100%;height:1px;width:100%;color:#388ae5;background:repeating-linear-gradient(90deg,#388AE5,#388AE5 1px,#fff 1px,#fff 6px)}.ce-block a{cursor:pointer;-webkit-text-decoration:underline;text-decoration:underline}.ce-block b{font-weight:700}.ce-block i{font-style:italic}@media (min-width: 651px){.codex-editor--narrow .ce-block--focused{margin-right:-50px;padding-right:50px}}@-webkit-keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}20%{-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}60%{-webkit-transform:scale3d(1,1,1);transform:scaleZ(1)}}@keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}20%{-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}60%{-webkit-transform:scale3d(1,1,1);transform:scaleZ(1)}}@-webkit-keyframes selectionBounce{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}50%{-webkit-transform:scale3d(1.01,1.01,1.01);transform:scale3d(1.01,1.01,1.01)}70%{-webkit-transform:scale3d(1,1,1);transform:scaleZ(1)}}@keyframes selectionBounce{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}50%{-webkit-transform:scale3d(1.01,1.01,1.01);transform:scale3d(1.01,1.01,1.01)}70%{-webkit-transform:scale3d(1,1,1);transform:scaleZ(1)}}@-webkit-keyframes buttonClicked{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{-webkit-transform:scale3d(.95,.95,.95);transform:scale3d(.95,.95,.95)}60%{-webkit-transform:scale3d(1.02,1.02,1.02);transform:scale3d(1.02,1.02,1.02)}80%{-webkit-transform:scale3d(1,1,1);transform:scaleZ(1)}}@keyframes buttonClicked{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{-webkit-transform:scale3d(.95,.95,.95);transform:scale3d(.95,.95,.95)}60%{-webkit-transform:scale3d(1.02,1.02,1.02);transform:scale3d(1.02,1.02,1.02)}80%{-webkit-transform:scale3d(1,1,1);transform:scaleZ(1)}}.cdx-block{padding:.4em 0}.cdx-block::-webkit-input-placeholder{line-height:normal!important}.cdx-input{border:1px solid rgba(201,201,204,.48);-webkit-box-shadow:inset 0 1px 2px 0 rgba(35,44,72,.06);box-shadow:inset 0 1px 2px #232c480f;border-radius:3px;padding:10px 12px;outline:none;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.cdx-input[data-placeholder]:before{position:static!important}.cdx-input[data-placeholder]:before{display:inline-block;width:0;white-space:nowrap;pointer-events:none}.cdx-settings-button{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:6px 1px;border-radius:3px;cursor:pointer;border:0;outline:none;background-color:transparent;vertical-align:bottom;color:inherit;margin:0;min-width:26px;min-height:26px}.cdx-settings-button svg{width:20px;height:20px}@media (max-width: 650px){.cdx-settings-button svg{width:28px;height:28px}}@media (hover: hover){.cdx-settings-button:hover{background-color:#eff2f5}}.cdx-settings-button--focused{background:rgba(34,186,255,.08)!important}.cdx-settings-button--focused{-webkit-box-shadow:inset 0 0 0px 1px rgba(7,161,227,.08);box-shadow:inset 0 0 0 1px #07a1e314}.cdx-settings-button--focused-animated{-webkit-animation-name:buttonClicked;animation-name:buttonClicked;-webkit-animation-duration:.25s;animation-duration:.25s}.cdx-settings-button--active{color:#388ae5}.cdx-settings-button svg{width:auto;height:auto}@media (max-width: 650px){.cdx-settings-button{width:36px;height:36px;border-radius:8px}}.cdx-loader{position:relative;border:1px solid rgba(201,201,204,.48)}.cdx-loader:before{content:\"\";position:absolute;left:50%;top:50%;width:18px;height:18px;margin:-11px 0 0 -11px;border:2px solid rgba(201,201,204,.48);border-left-color:#388ae5;border-radius:50%;-webkit-animation:cdxRotation 1.2s infinite linear;animation:cdxRotation 1.2s infinite linear}@-webkit-keyframes cdxRotation{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes cdxRotation{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cdx-button{padding:13px;border-radius:3px;border:1px solid rgba(201,201,204,.48);font-size:14.9px;background:#fff;-webkit-box-shadow:0 2px 2px 0 rgba(18,30,57,.04);box-shadow:0 2px 2px #121e390a;color:#707684;text-align:center;cursor:pointer}@media (hover: hover){.cdx-button:hover{background:#FBFCFE;-webkit-box-shadow:0 1px 3px 0 rgba(18,30,57,.08);box-shadow:0 1px 3px #121e3914}}.cdx-button svg{height:20px;margin-right:.2em;margin-top:-2px}.ce-stub{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:12px 18px;margin:10px 0;border-radius:10px;background:#eff2f5;border:1px solid #EFF0F1;color:#707684;font-size:14px}.ce-stub svg{width:20px;height:20px}.ce-stub__info{margin-left:14px}.ce-stub__title{font-weight:500;text-transform:capitalize}.codex-editor.codex-editor--rtl{direction:rtl}.codex-editor.codex-editor--rtl .cdx-list{padding-left:0;padding-right:40px}.codex-editor.codex-editor--rtl .ce-toolbar__plus{right:-26px;left:auto}.codex-editor.codex-editor--rtl .ce-toolbar__actions{right:auto;left:-26px}@media (max-width: 650px){.codex-editor.codex-editor--rtl .ce-toolbar__actions{margin-left:0;margin-right:auto;padding-right:0;padding-left:10px}}.codex-editor.codex-editor--rtl .ce-settings{left:5px;right:auto}.codex-editor.codex-editor--rtl .ce-settings:before{right:auto;left:25px}.codex-editor.codex-editor--rtl .ce-settings__button:not(:nth-child(3n+3)){margin-left:3px;margin-right:0}.codex-editor.codex-editor--rtl .ce-conversion-tool__icon{margin-right:0;margin-left:10px}.codex-editor.codex-editor--rtl .ce-inline-toolbar__dropdown{border-right:0px solid transparent;border-left:1px solid rgba(201,201,204,.48);margin:0 -6px 0 6px}.codex-editor.codex-editor--rtl .ce-inline-toolbar__dropdown .icon--toggler-down{margin-left:0;margin-right:4px}@media (min-width: 651px){.codex-editor--narrow.codex-editor--rtl .ce-toolbar__plus{left:0px;right:5px}}@media (min-width: 651px){.codex-editor--narrow.codex-editor--rtl .ce-toolbar__actions{left:-5px}}.cdx-search-field{--icon-margin-right: 10px;background:rgba(232,232,235,.49);border:1px solid rgba(226,226,229,.2);border-radius:6px;padding:2px;display:grid;grid-template-columns:auto auto 1fr;grid-template-rows:auto}.cdx-search-field__icon{width:26px;height:26px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-right:var(--icon-margin-right)}.cdx-search-field__icon svg{width:20px;height:20px;color:#707684}.cdx-search-field__input{font-size:14px;outline:none;font-weight:500;font-family:inherit;border:0;background:transparent;margin:0;padding:0;line-height:22px;min-width:calc(100% - 26px - var(--icon-margin-right))}.cdx-search-field__input::-webkit-input-placeholder{color:#707684;font-weight:500}.cdx-search-field__input::-moz-placeholder{color:#707684;font-weight:500}.cdx-search-field__input:-ms-input-placeholder{color:#707684;font-weight:500}.cdx-search-field__input::-ms-input-placeholder{color:#707684;font-weight:500}.cdx-search-field__input::placeholder{color:#707684;font-weight:500}.ce-popover{--border-radius: 6px;--width: 200px;--max-height: 270px;--padding: 6px;--offset-from-target: 8px;--color-border: #e8e8eb;--color-shadow: rgba(13,20,33,.13);--color-background: white;--color-text-primary: black;--color-text-secondary: #707684;--color-border-icon: rgba(201, 201, 204, .48);--color-border-icon-disabled: #EFF0F1;--color-text-icon-active: #388AE5;--color-background-icon-active: rgba(56, 138, 229, .1);--color-background-item-focus: rgba(34, 186, 255, .08);--color-shadow-item-focus: rgba(7, 161, 227, .08);--color-background-item-hover: #eff2f5;--color-background-item-confirm: #E24A4A;--color-background-item-confirm-hover: #CE4343;min-width:var(--width);width:var(--width);max-height:var(--max-height);border-radius:var(--border-radius);overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-shadow:0 3px 15px -3px var(--color-shadow);box-shadow:0 3px 15px -3px var(--color-shadow);position:absolute;left:0;top:calc(100% + var(--offset-from-target));background:var(--color-background);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;z-index:4;opacity:0;max-height:0;pointer-events:none;padding:0;border:none}.ce-popover--opened{opacity:1;padding:var(--padding);max-height:var(--max-height);pointer-events:auto;-webkit-animation:panelShowing .1s ease;animation:panelShowing .1s ease;border:1px solid var(--color-border)}@media (max-width: 650px){.ce-popover--opened{-webkit-animation:panelShowingMobile .25s ease;animation:panelShowingMobile .25s ease}}.ce-popover__items{overflow-y:auto;-ms-scroll-chaining:none;overscroll-behavior:contain}@media (max-width: 650px){.ce-popover__overlay{position:fixed;top:0;bottom:0;left:0;right:0;background:#1D202B;z-index:3;opacity:.5;-webkit-transition:opacity .12s ease-in;transition:opacity .12s ease-in;will-change:opacity;visibility:visible}}.ce-popover__overlay--hidden{display:none}.ce-popover--open-top{top:calc(-1 * (var(--offset-from-target) + var(--popover-height)))}@media (max-width: 650px){.ce-popover{--offset: 5px;position:fixed;max-width:none;min-width:calc(100% - var(--offset) * 2);left:var(--offset);right:var(--offset);bottom:calc(var(--offset) + env(safe-area-inset-bottom));top:auto;border-radius:10px}.ce-popover .ce-popover__search{display:none}}.ce-popover__search,.ce-popover__custom-content:not(:empty){margin-bottom:5px}.ce-popover__nothing-found-message{color:#707684;display:none;cursor:default;padding:3px;font-size:14px;line-height:20px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ce-popover__nothing-found-message--displayed{display:block}.ce-popover__custom-content:not(:empty){padding:4px}@media (min-width: 651px){.ce-popover__custom-content:not(:empty){padding:0}}.ce-popover__custom-content--hidden{display:none}.ce-popover-item{--border-radius: 6px;--icon-size: 20px;--icon-size-mobile: 28px;border-radius:var(--border-radius);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:3px;color:var(--color-text-primary);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}@media (max-width: 650px){.ce-popover-item{padding:4px}}.ce-popover-item:not(:last-of-type){margin-bottom:1px}.ce-popover-item__icon{border-radius:5px;width:26px;height:26px;-webkit-box-shadow:0 0 0 1px var(--color-border-icon);box-shadow:0 0 0 1px var(--color-border-icon);background:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-right:10px}.ce-popover-item__icon svg{width:20px;height:20px}@media (max-width: 650px){.ce-popover-item__icon{width:36px;height:36px;border-radius:8px}.ce-popover-item__icon svg{width:var(--icon-size-mobile);height:var(--icon-size-mobile)}}.ce-popover-item__title{font-size:14px;line-height:20px;font-weight:500;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}@media (max-width: 650px){.ce-popover-item__title{font-size:16px}}.ce-popover-item__secondary-title{color:var(--color-text-secondary);font-size:12px;margin-left:auto;white-space:nowrap;letter-spacing:-.1em;padding-right:5px;margin-bottom:-2px;opacity:.6}@media (max-width: 650px){.ce-popover-item__secondary-title{display:none}}.ce-popover-item--active{background:var(--color-background-icon-active);color:var(--color-text-icon-active)}.ce-popover-item--active .ce-popover-item__icon{-webkit-box-shadow:none;box-shadow:none}.ce-popover-item--disabled{color:var(--color-text-secondary);cursor:default;pointer-events:none}.ce-popover-item--disabled .ce-popover-item__icon{-webkit-box-shadow:0 0 0 1px var(--color-border-icon-disabled);box-shadow:0 0 0 1px var(--color-border-icon-disabled)}.ce-popover-item--focused:not(.ce-popover-item--no-focus){background:var(--color-background-item-focus)!important}.ce-popover-item--focused:not(.ce-popover-item--no-focus){-webkit-box-shadow:inset 0 0 0px 1px var(--color-shadow-item-focus);box-shadow:inset 0 0 0 1px var(--color-shadow-item-focus)}.ce-popover-item--hidden{display:none}@media (hover: hover){.ce-popover-item:hover{cursor:pointer}.ce-popover-item:hover:not(.ce-popover-item--no-hover){background-color:var(--color-background-item-hover)}.ce-popover-item:hover .ce-popover-item__icon{-webkit-box-shadow:none;box-shadow:none}}.ce-popover-item--confirmation{background:var(--color-background-item-confirm)}.ce-popover-item--confirmation .ce-popover-item__icon{color:var(--color-background-item-confirm)}.ce-popover-item--confirmation .ce-popover-item__title{color:#fff}@media (hover: hover){.ce-popover-item--confirmation:not(.ce-popover-item--no-hover):hover{background:var(--color-background-item-confirm-hover)}}.ce-popover-item--confirmation:not(.ce-popover-item--no-focus).ce-popover-item--focused{background:var(--color-background-item-confirm-hover)!important}.ce-popover-item--confirmation .ce-popover-item__icon,.ce-popover-item--active .ce-popover-item__icon,.ce-popover-item--focused .ce-popover-item__icon{-webkit-box-shadow:none;box-shadow:none}@-webkit-keyframes panelShowing{0%{opacity:0;-webkit-transform:translateY(-8px) scale(.9);transform:translateY(-8px) scale(.9)}70%{opacity:1;-webkit-transform:translateY(2px);transform:translateY(2px)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes panelShowing{0%{opacity:0;-webkit-transform:translateY(-8px) scale(.9);transform:translateY(-8px) scale(.9)}70%{opacity:1;-webkit-transform:translateY(2px);transform:translateY(2px)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes panelShowingMobile{0%{opacity:0;-webkit-transform:translateY(14px) scale(.98);transform:translateY(14px) scale(.98)}70%{opacity:1;-webkit-transform:translateY(-4px);transform:translateY(-4px)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes panelShowingMobile{0%{opacity:0;-webkit-transform:translateY(14px) scale(.98);transform:translateY(14px) scale(.98)}70%{opacity:1;-webkit-transform:translateY(-4px);transform:translateY(-4px)}to{-webkit-transform:translateY(0);transform:translateY(0)}}.wobble{-webkit-animation-name:wobble;animation-name:wobble;-webkit-animation-duration:.4s;animation-duration:.4s}@-webkit-keyframes wobble{0%{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}15%{-webkit-transform:translate3d(-9%,0,0);transform:translate3d(-9%,0,0)}30%{-webkit-transform:translate3d(9%,0,0);transform:translate3d(9%,0,0)}45%{-webkit-transform:translate3d(-4%,0,0);transform:translate3d(-4%,0,0)}60%{-webkit-transform:translate3d(4%,0,0);transform:translate3d(4%,0,0)}75%{-webkit-transform:translate3d(-1%,0,0);transform:translate3d(-1%,0,0)}to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}@keyframes wobble{0%{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}15%{-webkit-transform:translate3d(-9%,0,0);transform:translate3d(-9%,0,0)}30%{-webkit-transform:translate3d(9%,0,0);transform:translate3d(9%,0,0)}45%{-webkit-transform:translate3d(-4%,0,0);transform:translate3d(-4%,0,0)}60%{-webkit-transform:translate3d(4%,0,0);transform:translate3d(4%,0,0)}75%{-webkit-transform:translate3d(-1%,0,0);transform:translate3d(-1%,0,0)}to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}\n`;\nclass bi extends C {\n constructor() {\n super(...arguments), this.isMobile = !1, this.contentRectCache = void 0, this.resizeDebouncer = Ht(() => {\n this.windowResize();\n }, 200);\n }\n /**\n * Editor.js UI CSS class names\n *\n * @returns {{editorWrapper: string, editorZone: string}}\n */\n get CSS() {\n return {\n editorWrapper: \"codex-editor\",\n editorWrapperNarrow: \"codex-editor--narrow\",\n editorZone: \"codex-editor__redactor\",\n editorZoneHidden: \"codex-editor__redactor--hidden\",\n editorEmpty: \"codex-editor--empty\",\n editorRtlFix: \"codex-editor--rtl\"\n };\n }\n /**\n * Return Width of center column of Editor\n *\n * @returns {DOMRect}\n */\n get contentRect() {\n if (this.contentRectCache)\n return this.contentRectCache;\n const e = this.nodes.wrapper.querySelector(`.${F.CSS.content}`);\n return e ? (this.contentRectCache = e.getBoundingClientRect(), this.contentRectCache) : {\n width: 650,\n left: 0,\n right: 0\n };\n }\n /**\n * Making main interface\n */\n async prepare() {\n this.checkIsMobile(), this.make(), this.loadStyles();\n }\n /**\n * Toggle read-only state\n *\n * If readOnly is true:\n * - removes all listeners from main UI module elements\n *\n * if readOnly is false:\n * - enables all listeners to UI module elements\n *\n * @param {boolean} readOnlyEnabled - \"read only\" state\n */\n toggleReadOnly(e) {\n e ? this.disableModuleBindings() : this.enableModuleBindings();\n }\n /**\n * Check if Editor is empty and set CSS class to wrapper\n */\n checkEmptiness() {\n const { BlockManager: e } = this.Editor;\n this.nodes.wrapper.classList.toggle(this.CSS.editorEmpty, e.isEditorEmpty);\n }\n /**\n * Check if one of Toolbar is opened\n * Used to prevent global keydowns (for example, Enter) conflicts with Enter-on-toolbar\n *\n * @returns {boolean}\n */\n get someToolbarOpened() {\n const { Toolbar: e, BlockSettings: t, InlineToolbar: o, ConversionToolbar: i } = this.Editor;\n return t.opened || o.opened || i.opened || e.toolbox.opened;\n }\n /**\n * Check for some Flipper-buttons is under focus\n */\n get someFlipperButtonFocused() {\n return this.Editor.Toolbar.toolbox.hasFocus() ? !0 : Object.entries(this.Editor).filter(([e, t]) => t.flipper instanceof G).some(([e, t]) => t.flipper.hasFocus());\n }\n /**\n * Clean editor`s UI\n */\n destroy() {\n this.nodes.holder.innerHTML = \"\";\n }\n /**\n * Close all Editor's toolbars\n */\n closeAllToolbars() {\n const { Toolbar: e, BlockSettings: t, InlineToolbar: o, ConversionToolbar: i } = this.Editor;\n t.close(), o.close(), i.close(), e.toolbox.close();\n }\n /**\n * Check for mobile mode and cache a result\n */\n checkIsMobile() {\n this.isMobile = window.innerWidth < rt;\n }\n /**\n * Makes Editor.js interface\n */\n make() {\n this.nodes.holder = d.getHolder(this.config.holder), this.nodes.wrapper = d.make(\"div\", [\n this.CSS.editorWrapper,\n ...this.isRtl ? [this.CSS.editorRtlFix] : []\n ]), this.nodes.redactor = d.make(\"div\", this.CSS.editorZone), this.nodes.holder.offsetWidth < this.contentRect.width && this.nodes.wrapper.classList.add(this.CSS.editorWrapperNarrow), this.nodes.redactor.style.paddingBottom = this.config.minHeight + \"px\", this.nodes.wrapper.appendChild(this.nodes.redactor), this.nodes.holder.appendChild(this.nodes.wrapper);\n }\n /**\n * Appends CSS\n */\n loadStyles() {\n const e = \"editor-js-styles\";\n if (d.get(e))\n return;\n const t = d.make(\"style\", null, {\n id: e,\n textContent: gi.toString()\n });\n d.prepend(document.head, t);\n }\n /**\n * Bind events on the Editor.js interface\n */\n enableModuleBindings() {\n this.readOnlyMutableListeners.on(this.nodes.redactor, \"click\", (e) => {\n this.redactorClicked(e);\n }, !1), this.readOnlyMutableListeners.on(this.nodes.redactor, \"mousedown\", (e) => {\n this.documentTouched(e);\n }, !0), this.readOnlyMutableListeners.on(this.nodes.redactor, \"touchstart\", (e) => {\n this.documentTouched(e);\n }, !0), this.readOnlyMutableListeners.on(document, \"keydown\", (e) => {\n this.documentKeydown(e);\n }, !0), this.readOnlyMutableListeners.on(document, \"mousedown\", (e) => {\n this.documentClicked(e);\n }, !0), this.readOnlyMutableListeners.on(document, \"selectionchange\", () => {\n this.selectionChanged();\n }, !0), this.readOnlyMutableListeners.on(window, \"resize\", () => {\n this.resizeDebouncer();\n }, {\n passive: !0\n }), this.watchBlockHoveredEvents();\n }\n /**\n * Listen redactor mousemove to emit 'block-hovered' event\n */\n watchBlockHoveredEvents() {\n let e;\n this.readOnlyMutableListeners.on(this.nodes.redactor, \"mousemove\", Ce((t) => {\n const o = t.target.closest(\".ce-block\");\n this.Editor.BlockSelection.anyBlockSelected || o && e !== o && (e = o, this.eventsDispatcher.emit(kt, {\n block: this.Editor.BlockManager.getBlockByChildNode(o)\n }));\n }, 20), {\n passive: !0\n });\n }\n /**\n * Unbind events on the Editor.js interface\n */\n disableModuleBindings() {\n this.readOnlyMutableListeners.clearAll();\n }\n /**\n * Resize window handler\n */\n windowResize() {\n this.contentRectCache = null, this.checkIsMobile();\n }\n /**\n * All keydowns on document\n *\n * @param {KeyboardEvent} event - keyboard event\n */\n documentKeydown(e) {\n switch (e.keyCode) {\n case B.ENTER:\n this.enterPressed(e);\n break;\n case B.BACKSPACE:\n case B.DELETE:\n this.backspacePressed(e);\n break;\n case B.ESC:\n this.escapePressed(e);\n break;\n default:\n this.defaultBehaviour(e);\n break;\n }\n }\n /**\n * Ignore all other document's keydown events\n *\n * @param {KeyboardEvent} event - keyboard event\n */\n defaultBehaviour(e) {\n const { currentBlock: t } = this.Editor.BlockManager, o = e.target.closest(`.${this.CSS.editorWrapper}`), i = e.altKey || e.ctrlKey || e.metaKey || e.shiftKey;\n if (t !== void 0 && o === null) {\n this.Editor.BlockEvents.keydown(e);\n return;\n }\n o || t && i || (this.Editor.BlockManager.dropPointer(), this.Editor.Toolbar.close());\n }\n /**\n * @param {KeyboardEvent} event - keyboard event\n */\n backspacePressed(e) {\n const { BlockManager: t, BlockSelection: o, Caret: i } = this.Editor;\n if (o.anyBlockSelected && !m.isSelectionExists) {\n const n = t.removeSelectedBlocks();\n i.setToBlock(t.insertDefaultBlockAtIndex(n, !0), i.positions.START), o.clearSelection(e), e.preventDefault(), e.stopPropagation(), e.stopImmediatePropagation();\n }\n }\n /**\n * Escape pressed\n * If some of Toolbar components are opened, then close it otherwise close Toolbar\n *\n * @param {Event} event - escape keydown event\n */\n escapePressed(e) {\n this.Editor.BlockSelection.clearSelection(e), this.Editor.Toolbar.toolbox.opened ? (this.Editor.Toolbar.toolbox.close(), this.Editor.Caret.setToBlock(this.Editor.BlockManager.currentBlock)) : this.Editor.BlockSettings.opened ? this.Editor.BlockSettings.close() : this.Editor.ConversionToolbar.opened ? this.Editor.ConversionToolbar.close() : this.Editor.InlineToolbar.opened ? this.Editor.InlineToolbar.close() : this.Editor.Toolbar.close();\n }\n /**\n * Enter pressed on document\n *\n * @param {KeyboardEvent} event - keyboard event\n */\n enterPressed(e) {\n const { BlockManager: t, BlockSelection: o } = this.Editor, i = t.currentBlockIndex >= 0;\n if (o.anyBlockSelected && !m.isSelectionExists) {\n o.clearSelection(e), e.preventDefault(), e.stopImmediatePropagation(), e.stopPropagation();\n return;\n }\n if (!this.someToolbarOpened && i && e.target.tagName === \"BODY\") {\n const n = this.Editor.BlockManager.insert();\n this.Editor.Caret.setToBlock(n), this.Editor.BlockManager.highlightCurrentNode(), this.Editor.Toolbar.moveAndOpen(n);\n }\n this.Editor.BlockSelection.clearSelection(e);\n }\n /**\n * All clicks on document\n *\n * @param {MouseEvent} event - Click event\n */\n documentClicked(e) {\n if (!e.isTrusted)\n return;\n const t = e.target;\n this.nodes.holder.contains(t) || m.isAtEditor || (this.Editor.BlockManager.dropPointer(), this.Editor.Toolbar.close());\n const i = this.Editor.BlockSettings.nodes.wrapper.contains(t), n = this.Editor.Toolbar.nodes.settingsToggler.contains(t), r = i || n;\n if (this.Editor.BlockSettings.opened && !r) {\n this.Editor.BlockSettings.close();\n const a = this.Editor.BlockManager.getBlockByChildNode(t);\n this.Editor.Toolbar.moveAndOpen(a);\n }\n this.Editor.BlockSelection.clearSelection(e);\n }\n /**\n * First touch on editor\n * Fired before click\n *\n * Used to change current block — we need to do it before 'selectionChange' event.\n * Also:\n * - Move and show the Toolbar\n * - Set a Caret\n *\n * @param {MouseEvent | TouchEvent} event - touch or mouse event\n */\n documentTouched(e) {\n let t = e.target;\n if (t === this.nodes.redactor) {\n const o = e instanceof MouseEvent ? e.clientX : e.touches[0].clientX, i = e instanceof MouseEvent ? e.clientY : e.touches[0].clientY;\n t = document.elementFromPoint(o, i);\n }\n try {\n this.Editor.BlockManager.setCurrentBlockByChildNode(t), this.Editor.BlockManager.highlightCurrentNode();\n } catch {\n this.Editor.RectangleSelection.isRectActivated() || this.Editor.Caret.setToTheLastBlock();\n }\n this.Editor.Toolbar.moveAndOpen();\n }\n /**\n * All clicks on the redactor zone\n *\n * @param {MouseEvent} event - click event\n * @description\n * - By clicks on the Editor's bottom zone:\n * - if last Block is empty, set a Caret to this\n * - otherwise, add a new empty Block and set a Caret to that\n */\n redactorClicked(e) {\n const { BlockSelection: t } = this.Editor;\n if (!m.isCollapsed)\n return;\n const o = () => {\n e.stopImmediatePropagation(), e.stopPropagation();\n }, i = e.target, n = e.metaKey || e.ctrlKey;\n if (d.isAnchor(i) && n) {\n o();\n const u = i.getAttribute(\"href\"), h = zt(u);\n $t(h);\n return;\n }\n const r = this.Editor.BlockManager.getBlockByIndex(-1), a = d.offset(r.holder).bottom, l = e.pageY;\n if (e.target instanceof Element && e.target.isEqualNode(this.nodes.redactor) && /**\n * If there is cross block selection started, target will be equal to redactor so we need additional check\n */\n !t.anyBlockSelected && /**\n * Prevent caret jumping (to last block) when clicking between blocks\n */\n a < l) {\n o();\n const { BlockManager: u, Caret: h, Toolbar: f } = this.Editor;\n (!u.lastBlock.tool.isDefault || !u.lastBlock.isEmpty) && u.insertAtEnd(), h.setToTheLastBlock(), f.moveAndOpen(u.lastBlock);\n }\n }\n /**\n * Handle selection changes on mobile devices\n * Uses for showing the Inline Toolbar\n */\n selectionChanged() {\n const { CrossBlockSelection: e, BlockSelection: t } = this.Editor, o = m.anchorElement;\n if (e.isCrossBlockSelectionStarted && t.anyBlockSelected && m.get().removeAllRanges(), !o) {\n m.range || this.Editor.InlineToolbar.close();\n return;\n }\n const i = o.closest(`.${F.CSS.content}`) === null;\n if (i && (this.Editor.InlineToolbar.containsNode(o) || this.Editor.InlineToolbar.close(), !(o.dataset.inlineToolbar === \"true\")))\n return;\n this.Editor.BlockManager.currentBlock || this.Editor.BlockManager.setCurrentBlockByChildNode(o);\n const n = i !== !0;\n this.Editor.InlineToolbar.tryToShow(!0, n);\n }\n}\nconst mi = {\n // API Modules\n BlocksAPI: Qt,\n CaretAPI: eo,\n EventsAPI: to,\n I18nAPI: Pe,\n API: oo,\n InlineToolbarAPI: io,\n ListenersAPI: no,\n NotifierAPI: lo,\n ReadOnlyAPI: co,\n SanitizerAPI: mo,\n SaverAPI: ko,\n SelectionAPI: vo,\n StylesAPI: xo,\n ToolbarAPI: wo,\n TooltipAPI: Bo,\n UiAPI: To,\n // Toolbar Modules\n BlockSettings: jo,\n ConversionToolbar: Y,\n Toolbar: Ko,\n InlineToolbar: Xo,\n // Modules\n BlockEvents: Vo,\n BlockManager: Go,\n BlockSelection: Jo,\n Caret: ve,\n CrossBlockSelection: Qo,\n DragNDrop: ei,\n ModificationsObserver: ti,\n Paste: yt,\n ReadOnly: oi,\n RectangleSelection: fe,\n Renderer: ii,\n Saver: ni,\n Tools: It,\n UI: bi\n};\nclass ki {\n /**\n * @param {EditorConfig} config - user configuration\n */\n constructor(e) {\n this.moduleInstances = {}, this.eventsDispatcher = new we();\n let t, o;\n this.isReady = new Promise((i, n) => {\n t = i, o = n;\n }), Promise.resolve().then(async () => {\n this.configuration = e, this.validate(), this.init(), await this.start(), await this.render();\n const { BlockManager: i, Caret: n, UI: r, ModificationsObserver: a } = this.moduleInstances;\n r.checkEmptiness(), a.enable(), this.configuration.autofocus && (n.setToBlock(i.blocks[0], n.positions.START), i.highlightCurrentNode()), t();\n }).catch((i) => {\n L(`Editor.js is not ready because of ${i}`, \"error\"), o(i);\n });\n }\n /**\n * Setting for configuration\n *\n * @param {EditorConfig|string} config - Editor's config to set\n */\n set configuration(e) {\n var o, i;\n z(e) ? this.config = {\n ...e\n } : this.config = {\n holder: e\n }, Ie(!!this.config.holderId, \"config.holderId\", \"config.holder\"), this.config.holderId && !this.config.holder && (this.config.holder = this.config.holderId, this.config.holderId = null), this.config.holder == null && (this.config.holder = \"editorjs\"), this.config.logLevel || (this.config.logLevel = it.VERBOSE), Nt(this.config.logLevel), Ie(!!this.config.initialBlock, \"config.initialBlock\", \"config.defaultBlock\"), this.config.defaultBlock = this.config.defaultBlock || this.config.initialBlock || \"paragraph\", this.config.minHeight = this.config.minHeight !== void 0 ? this.config.minHeight : 300;\n const t = {\n type: this.config.defaultBlock,\n data: {}\n };\n this.config.placeholder = this.config.placeholder || !1, this.config.sanitizer = this.config.sanitizer || {\n p: !0,\n b: !0,\n a: !0\n }, this.config.hideToolbar = this.config.hideToolbar ? this.config.hideToolbar : !1, this.config.tools = this.config.tools || {}, this.config.i18n = this.config.i18n || {}, this.config.data = this.config.data || { blocks: [] }, this.config.onReady = this.config.onReady || (() => {\n }), this.config.onChange = this.config.onChange || (() => {\n }), this.config.inlineToolbar = this.config.inlineToolbar !== void 0 ? this.config.inlineToolbar : !0, (V(this.config.data) || !this.config.data.blocks || this.config.data.blocks.length === 0) && (this.config.data = { blocks: [t] }), this.config.readOnly = this.config.readOnly || !1, (o = this.config.i18n) != null && o.messages && $.setDictionary(this.config.i18n.messages), this.config.i18n.direction = ((i = this.config.i18n) == null ? void 0 : i.direction) || \"ltr\";\n }\n /**\n * Returns private property\n *\n * @returns {EditorConfig}\n */\n get configuration() {\n return this.config;\n }\n /**\n * Checks for required fields in Editor's config\n */\n validate() {\n const { holderId: e, holder: t } = this.config;\n if (e && t)\n throw Error(\"«holderId» and «holder» param can't assign at the same time.\");\n if (J(t) && !d.get(t))\n throw Error(`element with ID «${t}» is missing. Pass correct holder's ID.`);\n if (t && z(t) && !d.isElement(t))\n throw Error(\"«holder» value must be an Element node\");\n }\n /**\n * Initializes modules:\n * - make and save instances\n * - configure\n */\n init() {\n this.constructModules(), this.configureModules();\n }\n /**\n * Start Editor!\n *\n * Get list of modules that needs to be prepared and return a sequence (Promise)\n *\n * @returns {Promise}\n */\n async start() {\n await [\n \"Tools\",\n \"UI\",\n \"BlockManager\",\n \"Paste\",\n \"BlockSelection\",\n \"RectangleSelection\",\n \"CrossBlockSelection\",\n \"ReadOnly\"\n ].reduce(\n (t, o) => t.then(async () => {\n try {\n await this.moduleInstances[o].prepare();\n } catch (i) {\n if (i instanceof lt)\n throw new Error(i.message);\n L(`Module ${o} was skipped because of %o`, \"warn\", i);\n }\n }),\n Promise.resolve()\n );\n }\n /**\n * Render initial data\n */\n render() {\n return this.moduleInstances.Renderer.render(this.config.data.blocks);\n }\n /**\n * Make modules instances and save it to the @property this.moduleInstances\n */\n constructModules() {\n Object.entries(mi).forEach(([e, t]) => {\n try {\n this.moduleInstances[e] = new t({\n config: this.configuration,\n eventsDispatcher: this.eventsDispatcher\n });\n } catch (o) {\n L(\"[constructModules]\", `Module ${e} skipped because`, \"error\", o);\n }\n });\n }\n /**\n * Modules instances configuration:\n * - pass other modules to the 'state' property\n * - ...\n */\n configureModules() {\n for (const e in this.moduleInstances)\n Object.prototype.hasOwnProperty.call(this.moduleInstances, e) && (this.moduleInstances[e].state = this.getModulesDiff(e));\n }\n /**\n * Return modules without passed name\n *\n * @param {string} name - module for witch modules difference should be calculated\n */\n getModulesDiff(e) {\n const t = {};\n for (const o in this.moduleInstances)\n o !== e && (t[o] = this.moduleInstances[o]);\n return t;\n }\n}\n/**\n * Editor.js\n *\n * @license Apache-2.0\n * @see Editor.js \n * @author CodeX Team \n */\nclass vi {\n /** Editor version */\n static get version() {\n return \"2.28.0\";\n }\n /**\n * @param {EditorConfig|string|undefined} [configuration] - user configuration\n */\n constructor(e) {\n let t = () => {\n };\n z(e) && D(e.onReady) && (t = e.onReady);\n const o = new ki(e);\n this.isReady = o.isReady.then(() => {\n this.exportAPI(o), t();\n });\n }\n /**\n * Export external API methods\n *\n * @param {Core} editor — Editor's instance\n */\n exportAPI(e) {\n const t = [\"configuration\"], o = () => {\n Object.values(e.moduleInstances).forEach((n) => {\n D(n.destroy) && n.destroy(), n.listeners.removeAll();\n }), e = null;\n for (const n in this)\n Object.prototype.hasOwnProperty.call(this, n) && delete this[n];\n Object.setPrototypeOf(this, null);\n };\n t.forEach((n) => {\n this[n] = e[n];\n }), this.destroy = o, Object.setPrototypeOf(this, e.moduleInstances.API.methods), delete this.exportAPI, Object.entries({\n blocks: {\n clear: \"clear\",\n render: \"render\"\n },\n caret: {\n focus: \"focus\"\n },\n events: {\n on: \"on\",\n off: \"off\",\n emit: \"emit\"\n },\n saver: {\n save: \"save\"\n }\n }).forEach(([n, r]) => {\n Object.entries(r).forEach(([a, l]) => {\n this[l] = e.moduleInstances.API.methods[n][a];\n });\n });\n }\n}\nexport {\n vi as default\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(1384);\n"],"names":["___CSS_LOADER_EXPORT___","push","module","id","exports","cssWithMappingToString","list","toString","this","map","item","content","needLayer","concat","length","join","i","modules","media","dedupe","supports","layer","undefined","alreadyImportedModules","k","_k","cssMapping","btoa","base64","unescape","encodeURIComponent","JSON","stringify","data","sourceMapping","self","e","t","r","d","default","s","n","o","a","c","l","u","hmr","transform","insertInto","locals","window","document","all","atob","apply","arguments","querySelector","call","HTMLIFrameElement","contentDocument","head","f","p","refs","parts","m","h","base","css","sourceMap","v","Error","insertAt","nextSibling","insertBefore","appendChild","firstChild","before","b","parentNode","removeChild","indexOf","splice","y","createElement","attrs","type","g","Object","keys","forEach","setAttribute","singleton","x","bind","URL","createObjectURL","revokeObjectURL","Blob","rel","O","href","B","DEBUG","w","filter","Boolean","styleSheet","cssText","createTextNode","childNodes","convertToAbsoluteUrls","location","protocol","host","pathname","replace","trim","test","__esModule","defineProperty","enumerable","get","prototype","hasOwnProperty","Symbol","toStringTag","value","configurable","writable","key","configuration","blocks","toolbar","save","TypeError","borderStyle","api","holder","getElementById","readOnly","startBlock","endBlock","setDragListener","setDropListener","createRange","getSelection","setStart","collapse","removeAllRanges","addRange","focus","addEventListener","getCurrentBlockIndex","close","isTheOnlyBlock","querySelectorAll","setElementCursor","setBorderBlocks","values","style","removeProperty","find","borderBottom","borderTop","target","contains","getDropTarget","getTargetPosition","moveBlocks","classList","closest","Array","from","children","getBlocksCount","move","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","stylesInDOM","getIndexByIdentifier","identifier","result","modulesToDom","idCountMap","identifiers","count","indexByIdentifier","obj","references","updater","addElementStyle","byIndex","update","newObj","remove","lastIdentifiers","newList","index","newLastIdentifiers","_i","_index","memo","styleTarget","getTarget","element","attributes","styleElement","nonce","removeStyleElement","DragDrop","constructor","editor","super","setDragEndListener","settingsButton","block","EditorJS","globalThis","global","xe","Be","assign","register","revert","Element","matches","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","ownerDocument","documentElement","parentElement","prepend","createDocumentFragment","isArray","Node","scrollIntoViewIfNeeded","getComputedStyle","parseInt","getPropertyValue","offsetTop","scrollTop","clientHeight","offsetLeft","scrollLeft","clientWidth","scrollIntoView","requestIdleCallback","Date","now","setTimeout","didTimeout","timeRemaining","Math","max","cancelIdleCallback","clearTimeout","it","VERBOSE","INFO","WARN","ERROR","_t","be","console","includes","logLevel","unshift","L","K","oe","match","toLowerCase","D","z","J","qe","Ze","V","nt","async","Dt","reduce","function","Promise","resolve","st","slice","re","Ce","leading","trailing","ae","toUpperCase","Se","shift","Re","win","mac","x11","linux","navigator","appVersion","jt","Ut","crypto","getRandomValues","Uint8Array","At","Ie","ce","set","te","matchMedia","Ge","platform","maxTouchPoints","isSingleTag","tagName","isLineBreakTag","make","add","text","append","reverse","swap","findAll","allInputsSelector","findAllInputs","isNativeInput","containsOnlyInlineElements","getDeepestBlockElements","getDeepestNode","nodeType","ELEMENT_NODE","isElement","isFragment","DOCUMENT_FRAGMENT_NODE","isContentEditable","contentEditable","canSetCaret","isNodeEmpty","textContent","isLeaf","isEmpty","normalize","isHTMLString","innerHTML","childElementCount","getContentLength","TEXT_NODE","blockElements","every","getHolder","isAnchor","offset","getBoundingClientRect","pageXOffset","pageYOffset","top","left","bottom","height","right","width","at","ui","blockTunes","toggler","inlineToolbar","converter","toolbox","Add","popover","Filter","toolNames","Text","Link","Bold","Italic","tools","link","stub","delete","Delete","moveUp","moveDown","ie","setDictionary","currentDictionary","getNamespace","split","$","lt","we","subscribers","on","once","emit","off","warn","destroy","ee","setPrototypeOf","name","config","selected","stretched","validate","dispatchChange","De","allListeners","floor","random","Wt","eventType","handler","findOne","removeEventListener","offById","findById","findByEventTarget","removeAll","findByType","findByHandler","C","eventsDispatcher","nodes","listeners","readOnlyMutableListeners","mutableListenerIds","clearAll","state","Editor","removeAllNodes","HTMLElement","isRtl","i18n","direction","instance","selection","savedSelectionRange","isFakeBackgroundEnabled","commandBackground","commandRemoveFormat","CSS","editorWrapper","editorZone","anchorNode","anchorElement","anchorOffset","isCollapsed","isAtEditor","isSelectionAtEditor","focusNode","isRangeAtEditor","startContainer","isSelectionExists","range","getRangeFromSelection","rangeCount","getRangeAt","rect","boundingLeft","boundingTop","boundingWidth","boundingHeight","isNaN","cloneRange","insertNode","setCursor","selectionStart","selectionEnd","setEnd","isRangeInsideContainer","addFakeCursor","dataset","mutationFree","isFakeCursorInsideContainer","removeFakeCursor","body","removeFakeBackground","execCommand","setFakeBackground","restore","clearSaved","collapseToEnd","selectNodeContents","findParentTag","expandToTag","Me","ct","dt","ht","Je","mergeable","q","APPEND_CALLBACK","RENDERED","MOVED","UPDATED","REMOVED","ON_PASTE","F","tool","tunesData","cachedInputs","toolRenderedElement","tunesInstances","Map","defaultTunesInstances","unavailableTunesData","inputIndex","editorEventBus","handleFocus","dropInputsCache","updateCurrentInput","didMutated","InputEvent","detectToolRootChange","addedNodes","removedNodes","A","some","_","settings","blockAPI","toolInstance","create","tunes","composeTunes","compose","watchBlockMutations","addInputEvents","wrapper","wrapperStretched","focused","dropTarget","inputs","currentInput","findIndex","firstInput","lastInput","nextInput","previousInput","then","sanitize","sanitizeConfig","merge","pluginsContent","hasMedia","toggle","message","mergeWith","entries","performance","time","catch","Function","getTunes","renderSettings","render","flat","activeElement","unwatchBlockMutations","removeInputEvents","getActiveToolboxEntry","Yt","exportDataAsString","export","Gt","conversionConfig","wrap","isInternal","has","redactorDomChangedCallback","mutations","Zt","Pe","isTune","methods","getMethodsForTool","Le","so","show","getWrapper","confirm","prompt","alert","sources","sourceRoot","E","T","S","H","M","N","W","R","de","Q","Ee","Mt","Lt","Ve","I","cancelHandler","okHandler","okText","cancelText","placeholder","inputType","ro","ao","Oe","ho","tags","nodeName","createTreeWalker","NodeFilter","SHOW_TEXT","SHOW_ELEMENT","SHOW_COMMENT","clean","implementation","createHTMLDocument","_sanitize","COMMENT_NODE","keepNestedBlockElements","removeAttribute","previousElementSibling","nextElementSibling","uo","ut","Fe","Z","po","bo","fo","go","Rt","Ae","yo","showed","offsetRight","hidingDelay","handleWindowScroll","hide","loadStyles","prepare","passive","tooltip","tooltipContent","tooltipShown","placement","hidingTimeout","marginTop","marginLeft","marginRight","marginBottom","delay","placeTop","placeLeft","placeRight","placeBottom","showingTimeout","onHover","offsetWidth","applyPlacement","offsetHeight","Eo","He","lib","X","pt","ft","Qe","P","root","icon","confirmationState","removeSpecialFocusBehavior","noFocus","removeSpecialHoverBehavior","noHover","onErrorAnimationEnd","wobbleAnimation","params","isDisabled","title","closeOnActivate","isConfirmationStateEnabled","isFocused","container","secondaryTitle","active","disabled","hidden","getElement","handleClick","activateOrEnableConfirmationMode","toggleActive","toggleHidden","reset","disableConfirmationMode","onFocus","disableSpecialHoverAndFocusBehavior","itemName","secondaryLabel","isActive","enableConfirmationMode","confirmation","enableSpecialHoverAndFocusBehavior","onActivate","animateError","he","cursor","items","focusedCssClass","currentItem","dropCursor","setItems","next","leafNodesAndReturnIndex","directions","RIGHT","previous","LEFT","ne","G","iterator","activated","flipCallbacks","onKeyDown","isEventReadyForHandling","usedKeys","keyCode","preventDefault","handleTabPress","flipLeft","flipRight","handleEnterPress","focusedItemClass","activateCallback","allowedKeys","isActivated","activate","deactivate","focusFirst","flipCallback","hasFocus","onFlip","removeOnFlip","shiftKey","stopPropagation","click","pe","input","onSearch","clear","searchQuery","foundItems","checkItem","ue","lock","lockHard","scrollLocked","unlock","unlockHard","scrollPosition","setProperty","scrollLockedHard","scrollTo","gt","Po","Fo","getOwnPropertyDescriptor","ge","Close","j","scopeElement","scrollLocker","nothingFoundMessage","customContent","overlay","messages","nothingFound","search","customContentFlippableItems","addCustomContent","searchable","addSearch","initializeFlipper","popoverOpenTop","popoverOpened","nothingFoundMessageDisplayed","customContentHidden","overlayHidden","flipper","shouldOpenBottom","flippableElements","getTargetItem","handleItemClick","toggleNothingFoundMessage","toggleCustomContent","composedPath","toggleItemActivenessIfNeeded","cloneNode","visibility","position","min","innerHeight","je","Ho","Y","opened","togglingCallback","conversionToolbarWrapper","conversionToolbarShowed","conversionToolbarTools","conversionToolbarLabel","conversionTool","conversionToolHidden","conversionToolIcon","conversionToolSecondaryLabel","conversionToolFocused","conversionToolActive","UI","editorRtlFix","addTools","enableFlipper","open","filterTools","requestAnimationFrame","button","hasTools","defaultBlock","replaceWithBlock","BlockManager","BlockSelection","InlineToolbar","Caret","convert","currentBlock","clearSelection","setToBlock","positions","END","Tools","blockTools","import","addToolIfValid","addTool","shortcut","innerText","toolboxItem","_e","zo","commands","parseShortcutName","callback","executeShortcut","execute","SHIFT","CMD","ALT","U","BACKSPACE","ENTER","ESCAPE","UP","DOWN","INSERT","DELETE","supportedCommands","ctrlKey","metaKey","altKey","keyCodes","Uo","le","registeredShortcuts","findShortcut","Wo","Yo","bt","me","Opened","Closed","BlockAdded","mt","i18nLabels","onPopoverClose","toolsToBeDisplayed","redactor","toolboxItemsToBeDisplayed","enableShortcuts","removeAllShortcuts","toolButtonActivated","insertNewBlock","enableShortcutForTool","getBlockByIndex","caret","composeBlockData","ze","kt","ye","Block","Inline","Tune","ke","Shortcut","Toolbox","EnabledInlineTools","EnabledBlockTunes","Config","vt","SanitizeConfig","se","IsEnabledLineBreaks","ConversionConfig","IsReadOnlySupported","PasteConfig","Ue","IsInline","Title","xt","IsTune","$e","constructable","isDefault","defaultPlaceholder","toolName","isInline","isBlock","Te","workingArea","array","Number","Reflect","insertToDOM","composeBlockEvent","fromIndex","toIndex","replaceWith","insertMany","DocumentFragment","after","insertAfter","insertAdjacentElement","CustomEvent","detail","et","tt","ot","Zo","completed","ve","START","DEFAULT","shadowCaret","isAtStart","focusOffset","getHigherLevelSiblings","isAtEnd","setCurrentBlockByChildNode","setToInput","scrollBy","setToTheLastBlock","lastBlock","insertAtEnd","extractFragmentFromCaretPosition","deleteContents","substring","endContainer","endOffset","extractContents","navigateNext","nextContentfulBlock","navigatePrevious","previousContentfulBlock","createShadow","restoreCaret","selectNode","insertContentAtCaretPosition","lastChild","wt","MIME_TYPE","toolsTags","tagsByTool","toolsPatterns","toolsFiles","exceptionList","processTool","pasteConfig","onPaste","getTagsConfig","getFilesConfig","getPatternsConfig","handlePasteEvent","Toolbar","isNativeBehaviour","clipboardData","types","processDataTransfer","clearFocused","processTools","toggleReadOnly","unsetCallback","setCallback","processFiles","files","getData","insertEditorJSData","parse","sanitizationConfig","getAllInlineToolsSanitizeConfig","br","processText","processHTML","processPlain","processSingleBlock","pop","processInlinePaste","insertBlock","collectTagNames","extensions","mimeTypes","Ft","patterns","RegExp","pattern","processFile","paste","event","Pt","composePasteEvent","file","getNodes","defaultTool","baseSanitizeConfig","outerHTML","PATTERN_PROCESSING_MAX_LENGTH","processPattern","exec","processElementNode","yt","fe","isRectSelectionActivated","SCROLL_SPEED","HEIGHT_OF_SCROLL_ZONE","BOTTOM_SCROLL_ZONE","TOP_SCROLL_ZONE","MAIN_MOUSE_BUTTON","mousedown","isScrolling","inScrollZone","startX","startY","mouseX","mouseY","stackOfSelected","listenerIds","overlayContainer","topScrollZone","bottomScrollZone","enableModuleBindings","startSelection","elementFromPoint","allBlocksSelected","endSelection","overlayRectangle","display","isRectActivated","genHTML","processMouseDown","processMouseMove","processMouseLeave","processScroll","processMouseUp","pageX","pageY","changingRectangle","scrollByZones","clientY","scrollVertical","rightPos","leftPos","genInfoForMouseSelection","rectCrossesBlocks","shrinkRectangleToPoint","updateRectangleSize","trySelectNextBlock","inverseSelection","selectBlockByIndex","unSelectBlockByIndex","getBlockByChildNode","addBlockInSelection","Ne","si","nc","_CSS","styles","onKeyUp","_placeholder","DEFAULT_PLACEHOLDER","_data","_element","_preserveBlank","preserveBlank","code","drawView","hydrate","ri","We","commandName","buttonActive","buttonModifier","surround","checkState","queryCommandState","Ye","Ke","commandLink","commandUnlink","ENTER_KEY","buttonUnlink","inputShowed","inputOpened","notifier","renderActions","enterPressed","unlink","closeActions","toggleActions","openActions","getAttribute","validateURL","prepareLink","insertLink","stopImmediatePropagation","addProtocol","Et","info","subtitle","savedData","isReadOnlySupported","ai","li","inlineTools","internalTools","externalTools","ci","di","Bt","Xe","isLineBreaksEnabled","enabledInlineTools","enabledBlockTunes","hi","editorConfig","class","getConstructor","Tt","animation","abs","scrollY","toggleBlockSettings","Ct","St","pi","It","stubTool","toolsAvailable","toolsUnavailable","available","unavailable","internal","validateTools","prepareConfig","factory","API","getListOfPrepareFunctions","toolPrepareMethodSuccess","toolPrepareMethodFallback","prepareBlockTools","bold","italic","paragraph","assignInlineToolsToBlockTool","assignBlockTunesToBlockTool","fi","gi","mi","BlocksAPI","needToFocus","getBlockById","validateIndex","composeBlock","renderFromHTML","getById","getBlockIndex","stretchBlock","currentBlockIndex","removeBlock","ModificationsObserver","disable","Renderer","enable","Paste","CaretAPI","setToFirstBlock","firstBlock","setToLastBlock","setToPreviousBlock","previousBlock","setToNextBlock","nextBlock","EventsAPI","I18nAPI","events","ListenersAPI","NotifierAPI","sanitizer","SanitizerAPI","saver","SaverAPI","SelectionAPI","StylesAPI","classes","ToolbarAPI","InlineToolbarAPI","TooltipAPI","ReadOnlyAPI","UiAPI","tryToShow","isEnabled","ReadOnly","reject","Saver","inlineToolButton","inlineToolButtonActive","loader","settingsButtonActive","toggleToolbox","moveAndOpen","BlockSettings","editorNodes","closed","clearCache","resolveTuneAliases","getControls","CrossBlockSelection","isCrossBlockSelectionStarted","Co","label","ConversionToolbar","toolboxInstance","actions","actionsOpened","toolbarOpened","openedToolboxHolderModifier","plusButton","plusButtonShortcut","settingsToggler","settingsTogglerHidden","hoveredBlock","blockActions","blockTunesToggler","disableModuleBindings","drawUI","timeout","isMobile","paddingTop","plusButtonClicked","makeToolbox","settingsTogglerClicked","inlineToolbarShowed","inlineToolbarLeftOriented","inlineToolbarRightOriented","inlineToolbarShortcut","buttonsWrapper","actionsWrapper","inputField","focusedButton","conversionToggler","conversionTogglerArrow","conversionTogglerHidden","conversionTogglerContent","togglerAndButtonsWrapper","toolbarVerticalMargin","buttonsList","allowedToShow","contentRect","toolsInstances","getToolShortcut","addToolsFiltered","buttons","setConversionTogglerContent","containsNode","addConversionToggler","prepareConversionToolbar","recalculateWidth","getBlock","size","toolClicked","checkToolsState","BlockEvents","keydown","beforeKeydownProcessing","backspace","enter","arrowRightAndDown","arrowLeftAndUp","tabPressed","needToolbarClosing","keyup","checkEmptiness","activateToolbox","activateBlockSettings","dragOver","dragLeave","handleCommandC","anyBlockSelected","copySelectedBlocks","handleCommandX","removeSelectedBlocks","insertDefaultBlockAtIndex","someToolbarOpened","someFlipperButtonFocused","mergeBlocks","toggleBlockSelectedState","closeAllToolbars","_currentBlockIndex","_blocks","isEditorEmpty","Proxy","bindBlockEvents","blockDidMutated","removeAllBlocks","highlightCurrentNode","isEqualNode","Jt","dropPointer","anyBlockSelectedCache","needToSelectAll","nativeInputSelected","readyToBlockSelection","sanitizerConfig","h1","h2","h3","h4","h5","h6","ol","ul","img","src","selectedBlocks","selectAllBlocks","handleCommandA","RectangleSelection","KeyboardEvent","setData","onMouseUp","onMouseOver","relatedTarget","lastSelectedBlock","firstSelectedBlock","toggleBlocksSelectedState","enableCrossBlockSelection","watchSelection","DragNDrop","isStartedAtEditor","processDrop","processDragStart","processDragOver","dataTransfer","batchingTimeout","batchingOnChangeQueue","batchTime","mutationObserver","MutationObserver","redactorChanged","particularBlockChanged","observe","childList","subtree","characterData","disconnect","onChange","toolsDontSupportReadOnly","readOnlyEnabled","throwCriticalError","composeStubDataForTool","error","getSavedData","makeOutput","isValid","version","contentRectCache","resizeDebouncer","Ht","windowResize","editorWrapperNarrow","editorZoneHidden","editorEmpty","checkIsMobile","innerWidth","paddingBottom","minHeight","redactorClicked","documentTouched","documentKeydown","documentClicked","selectionChanged","watchBlockHoveredEvents","backspacePressed","escapePressed","defaultBehaviour","isTrusted","MouseEvent","clientX","touches","origin","zt","$t","ki","moduleInstances","isReady","init","start","autofocus","holderId","Nt","initialBlock","hideToolbar","onReady","constructModules","configureModules","getModulesDiff","vi","exportAPI","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","definition","prop","__webpack_exports__"],"sourceRoot":""}