jodit-pro
Version:
PRO Version of Jodit Editor
465 lines (426 loc) • 19.8 kB
JavaScript
/*!
* 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__;
/******/ }
]);
});