UNPKG

jodit-pro

Version:

PRO Version of Jodit Editor

465 lines (426 loc) 19.8 kB
/*! * jodit-pro - PRO Version of Jodit Editor * Author: Chupurnov Valerii <chupurnov@gmail.com> * Version: v4.9.27 * Url: https://xdsoft.net/jodit/pro/ * License(s): SEE LICENSE IN LICENSE.md */ "use strict"; (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define([], factory); else { var a = factory(); for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; } })(self, function() { return (self["webpackChunkjodit_pro"] = self["webpackChunkjodit_pro"] || []).push([[576],{ /***/ 8256: /***/ (function(__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) { /* harmony import */ var _swc_helpers_to_consumable_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(94899); /* harmony import */ var jodit_esm_config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6441); /* harmony import */ var jodit_esm_core_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(22732); /* harmony import */ var jodit_esm_core_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(21537); /*! * Jodit Editor PRO (https://xdsoft.net/jodit/) * See LICENSE.md in the project root for license information. * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net/jodit/pro/ */ var common = [ 'tune.up', 'tune.remove', 'tune.down' ], header = [ 'tune.h1', 'tune.h2', 'tune.h3', '\n', 'tune.h4', 'tune.h5', 'tune.h6', '\n' ].concat((0,_swc_helpers_to_consumable_array__WEBPACK_IMPORTED_MODULE_0__._)(common)); jodit_esm_config__WEBPACK_IMPORTED_MODULE_1__.Config.prototype.tuneBlock = { popup: { p: common, table: common, img: common, blockquote: common, div: common, pre: [ 'tune.editPre' ].concat((0,_swc_helpers_to_consumable_array__WEBPACK_IMPORTED_MODULE_0__._)(common)), h1: header, h2: header, h3: header, h4: header, h5: header, h6: header } }; function headerControl(h) { return { icon: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50">' + '<text dominant-baseline="text-before-edge" style="font: 45px sans-serif" x="0" y="0">' + h.toUpperCase() + '</text>' + '</svg>', isActive: function isActive(editor, button) { var _button_target; return (button === null || button === void 0 ? void 0 : (_button_target = button.target) === null || _button_target === void 0 ? void 0 : _button_target.tagName.toLowerCase()) === h; }, exec: function exec(editor, target) { if (target) { editor.selection.save(); var header = jodit_esm_core_dom__WEBPACK_IMPORTED_MODULE_2__.Dom.replace(target, h, editor.createInside); editor.selection.restore(); editor.e.fire('synchro'); editor.e.fire('afterExecTune.tune', header); } return true; } }; } function moveTo(up) { var sibling = up ? 'previousSibling' : 'nextSibling'; return { icon: up ? 'angle-up' : 'angle-down', isDisabled: function isDisabled(editor, button) { var _button_target; return !(button === null || button === void 0 ? void 0 : (_button_target = button.target) === null || _button_target === void 0 ? void 0 : _button_target[sibling]); }, exec: function exec(editor, target) { var siblingNode = target === null || target === void 0 ? void 0 : target[sibling]; if (target && siblingNode) { editor.selection.save(); (0,jodit_esm_core_helpers__WEBPACK_IMPORTED_MODULE_3__.call)(up ? jodit_esm_core_dom__WEBPACK_IMPORTED_MODULE_2__.Dom.before : jodit_esm_core_dom__WEBPACK_IMPORTED_MODULE_2__.Dom.after, siblingNode, target); editor.selection.restore(); } editor.e.fire('synchro'); editor.e.fire('afterExecTune.tune'); return true; } }; } jodit_esm_config__WEBPACK_IMPORTED_MODULE_1__.Config.prototype.controls.tune = { h1: headerControl('h1'), h2: headerControl('h2'), h3: headerControl('h3'), h4: headerControl('h4'), h5: headerControl('h5'), h6: headerControl('h6'), up: moveTo(true), down: moveTo(false), editPre: { icon: 'pencil', exec: function exec(editor, target) { editor.e.fire('editPreInPasteCode', target); } }, remove: { icon: 'bin', exec: function exec(editor, target) { jodit_esm_core_dom__WEBPACK_IMPORTED_MODULE_2__.Dom.safeRemove(target); editor.e.fire('synchro'); editor.e.fire('closeTuner.tune'); editor.e.fire('hideTuner.tune'); } } }; /***/ }), /***/ 13152: /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ tuneBlock: function() { return /* binding */ tuneBlock; } /* harmony export */ }); /* harmony import */ var _swc_helpers_call_super__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(80294); /* harmony import */ var _swc_helpers_class_call_check__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20616); /* harmony import */ var _swc_helpers_create_class__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(67709); /* harmony import */ var _swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(82749); /* harmony import */ var _swc_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(18766); /* harmony import */ var _swc_helpers_wrap_native_super__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(23078); /* harmony import */ var _swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(31635); /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(8256); /* harmony import */ var _ui_tuner_tuner__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(40104); /* harmony import */ var jodit_esm_core_decorators__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(65478); /* harmony import */ var jodit_esm_core_plugin__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(50911); /* harmony import */ var jodit_pro_jodit_pro__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(2692); /*! * Jodit Editor PRO (https://xdsoft.net/jodit/) * See LICENSE.md in the project root for license information. * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net/jodit/pro/ */ /** * Tune block with popup: move, align, change block tag, and another options */ var tuneBlock = /*#__PURE__*/ function(Plugin) { "use strict"; (0,_swc_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__._)(tuneBlock, Plugin); function tuneBlock() { (0,_swc_helpers_class_call_check__WEBPACK_IMPORTED_MODULE_1__._)(this, tuneBlock); var _this; _this = (0,_swc_helpers_call_super__WEBPACK_IMPORTED_MODULE_0__._)(this, tuneBlock, arguments), /** * UI element for managing blocks */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_3__._)(_this, "tuner", void 0); return _this; } (0,_swc_helpers_create_class__WEBPACK_IMPORTED_MODULE_2__._)(tuneBlock, [ { key: "afterInit", value: function afterInit(jodit) { this.tuner = new _ui_tuner_tuner__WEBPACK_IMPORTED_MODULE_8__.UITuner(jodit); } }, { key: "hideTuner", value: /** * Handler: click on an element outside the editor or the keyboard closes the tuner */ function hideTuner() { this.tuner.hide(); } }, { key: "onChangeSelection", value: function onChangeSelection() { if (!this.j.s.isCollapsed()) { this.hideTuner(); } } }, { key: "onClickInBlock", value: /** * Handler: click on an element inside the editor */ function onClickInBlock(_) { if (this.j.s.isCollapsed()) { this.tuner.show(); } } }, { key: "beforeDestruct", value: function beforeDestruct(jodit) { this.tuner.destruct(); } } ]); return tuneBlock; }((0,_swc_helpers_wrap_native_super__WEBPACK_IMPORTED_MODULE_5__._)(jodit_esm_core_plugin__WEBPACK_IMPORTED_MODULE_10__.Plugin)); /** @override */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_3__._)(tuneBlock, "requires", [ 'license' ]); (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_6__.__decorate)([ (0,jodit_esm_core_decorators__WEBPACK_IMPORTED_MODULE_9__.watch)(':outsideClick :keydown') ], tuneBlock.prototype, "hideTuner", null); (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_6__.__decorate)([ (0,jodit_esm_core_decorators__WEBPACK_IMPORTED_MODULE_9__.watch)('j.ed:selectionchange'), (0,jodit_esm_core_decorators__WEBPACK_IMPORTED_MODULE_9__.debounce)() ], tuneBlock.prototype, "onChangeSelection", null); (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_6__.__decorate)([ (0,jodit_esm_core_decorators__WEBPACK_IMPORTED_MODULE_9__.watch)(':click') ], tuneBlock.prototype, "onClickInBlock", null); jodit_pro_jodit_pro__WEBPACK_IMPORTED_MODULE_11__.JoditPro.plugins.add('tune-block', tuneBlock); /***/ }), /***/ 40104: /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ UITuner: function() { return /* binding */ UITuner; } /* harmony export */ }); /* harmony import */ var _swc_helpers_call_super__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(80294); /* harmony import */ var _swc_helpers_class_call_check__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20616); /* harmony import */ var _swc_helpers_create_class__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(67709); /* harmony import */ var _swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(82749); /* harmony import */ var _swc_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(18766); /* harmony import */ var _swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(31635); /* harmony import */ var jodit_esm_core_decorators__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(65478); /* harmony import */ var jodit_esm_core_dom__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(22732); /* harmony import */ var jodit_esm_core_helpers__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(21537); /* harmony import */ var jodit_esm_core_ui__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(67510); /* harmony import */ var jodit_esm_modules_toolbar_factory__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(21491); /*! * Jodit Editor PRO (https://xdsoft.net/jodit/) * See LICENSE.md in the project root for license information. * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net/jodit/pro/ */ var UITuner = /*#__PURE__*/ function(UIElement) { "use strict"; (0,_swc_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__._)(UITuner, UIElement); function UITuner() { (0,_swc_helpers_class_call_check__WEBPACK_IMPORTED_MODULE_1__._)(this, UITuner); var _this; _this = (0,_swc_helpers_call_super__WEBPACK_IMPORTED_MODULE_0__._)(this, UITuner, arguments), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_3__._)(_this, "isShown", false), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_3__._)(_this, "toolbar", (0,jodit_esm_modules_toolbar_factory__WEBPACK_IMPORTED_MODULE_10__.makeCollection)(_this.j, _this)), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_3__._)(_this, "popup", new jodit_esm_core_ui__WEBPACK_IMPORTED_MODULE_9__.Popup(_this.j, false)), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_3__._)(_this, "currentBlock", void 0); return _this; } (0,_swc_helpers_create_class__WEBPACK_IMPORTED_MODULE_2__._)(UITuner, [ { key: "className", value: function className() { return 'UITuner'; } }, { key: "render", value: function render() { return "<div>\n <div class='&__handle' title='~Click to tune~'/>\n </div>"; } }, { /** * Shows the tuner, even if it is already shown - recalculates its position */ key: "show", value: function show() { var _this = this; var target = this.j.s.current(); if (!target) { return this.hide(); } var block = jodit_esm_core_dom__WEBPACK_IMPORTED_MODULE_7__.Dom.isBlock(target) ? target : jodit_esm_core_dom__WEBPACK_IMPORTED_MODULE_7__.Dom.closest(target, function(node) { return Boolean(node && _this.j.o.tuneBlock.popup[node.nodeName.toLowerCase()]); }, this.j.editor); if (!block || block === this.j.editor || !this.j.o.tuneBlock.popup[block.tagName.toLowerCase()]) { return this.hide(); } this.currentBlock = block; this.isShown = true; this.closeToolbar(); this.calcPosition(); if (!this.container.parentNode) { this.j.workplace.append(this.container); } } }, { key: "hide", value: /** * Hides the tuner button */ function hide() { if (this.isShown) { this.isShown = false; jodit_esm_core_dom__WEBPACK_IMPORTED_MODULE_7__.Dom.safeRemove(this.container); this.closeToolbar(); } } }, { key: "onEditorScroll", value: /** * Recalculates the position of the tuner button when scrolling the editor itself */ function onEditorScroll() { if (this.isShown) { this.calcPosition(); } } }, { key: "calcPosition", value: /** * Calculates the position of the tuner in the editor so that it is always to the right of the block */ function calcPosition() { var offset = 15; var marginLeft = (0,jodit_esm_core_helpers__WEBPACK_IMPORTED_MODULE_8__.css)(this.j.editor, 'marginLeft'); var paddingLeft = (0,jodit_esm_core_helpers__WEBPACK_IMPORTED_MODULE_8__.css)(this.j.editor, 'paddingLeft'); var marginTop = (0,jodit_esm_core_helpers__WEBPACK_IMPORTED_MODULE_8__.css)(this.j.editor, 'marginTop'); var left = this.currentBlock.offsetWidth - offset + marginLeft + paddingLeft; var top = this.currentBlock.offsetTop - this.j.editor.scrollTop + marginTop; (0,jodit_esm_core_helpers__WEBPACK_IMPORTED_MODULE_8__.css)(this.container, { transform: "translate3d(".concat(left, "px, ").concat(top, "px, 0)") }); if (this.popup.isOpened) { this.popup.updatePosition(); } } }, { key: "onAfterExecTune", value: /** * Handler: `afterExecTune.tune` */ function onAfterExecTune(newBlock) { if (newBlock) { this.currentBlock = newBlock; } this.calcPosition(); this.openToolbar(); } }, { key: "onClickPrevent", value: /** * To prevent the editor from losing focus when clicking on the handler - we will prevent the click */ function onClickPrevent(e) { e.preventDefault(); e.stopPropagation(); } }, { key: "onTargetClick", value: /** * Handler: click on the tuner button */ function onTargetClick() { this.toggleToolbar(); } }, { key: "openToolbar", value: /** * Opens the tuner toolbar */ function openToolbar() { this.setMod('opened', true); this.toolbar.build(this.j.o.tuneBlock.popup[this.currentBlock.tagName.toLowerCase()], this.currentBlock); this.popup.setContent(this.toolbar.container); if (!this.popup.isOpened) { var handle = this.getElm('handle'); (0,jodit_esm_core_helpers__WEBPACK_IMPORTED_MODULE_8__.assert)(handle != null, 'Handle element does not exist'); this.popup.open(function() { return (0,jodit_esm_core_helpers__WEBPACK_IMPORTED_MODULE_8__.position)(handle); }); } } }, { key: "closeToolbar", value: /** * Closes the tuner toolbar */ function closeToolbar() { this.setMod('opened', false); this.popup.close(); } }, { key: "toggleToolbar", value: function toggleToolbar() { this.getMod('opened') ? this.closeToolbar() : this.openToolbar(); } } ]); return UITuner; }(jodit_esm_core_ui__WEBPACK_IMPORTED_MODULE_9__.UIElement); (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_5__.__decorate)([ (0,jodit_esm_core_decorators__WEBPACK_IMPORTED_MODULE_6__.watch)(':hideTuner.tune') ], UITuner.prototype, "hide", null); (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_5__.__decorate)([ (0,jodit_esm_core_decorators__WEBPACK_IMPORTED_MODULE_6__.watch)('j.editor:scroll'), (0,jodit_esm_core_decorators__WEBPACK_IMPORTED_MODULE_6__.throttle)(10) ], UITuner.prototype, "onEditorScroll", null); (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_5__.__decorate)([ (0,jodit_esm_core_decorators__WEBPACK_IMPORTED_MODULE_6__.watch)(':afterExecTune.tune'), (0,jodit_esm_core_decorators__WEBPACK_IMPORTED_MODULE_6__.idle)() ], UITuner.prototype, "onAfterExecTune", null); (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_5__.__decorate)([ (0,jodit_esm_core_decorators__WEBPACK_IMPORTED_MODULE_6__.watch)('container:click container:mousedown') ], UITuner.prototype, "onClickPrevent", null); (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_5__.__decorate)([ (0,jodit_esm_core_decorators__WEBPACK_IMPORTED_MODULE_6__.watch)('handle:click') ], UITuner.prototype, "onTargetClick", null); (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_5__.__decorate)([ (0,jodit_esm_core_decorators__WEBPACK_IMPORTED_MODULE_6__.watch)(':closeTuner.tune') ], UITuner.prototype, "closeToolbar", null); UITuner = (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_5__.__decorate)([ jodit_esm_core_decorators__WEBPACK_IMPORTED_MODULE_6__.component ], UITuner); /***/ }) }, /******/ function(__webpack_require__) { // webpackRuntimeModules /******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); } /******/ var __webpack_exports__ = (__webpack_exec__(13152)); /******/ return __webpack_exports__; /******/ } ]); });