jodit
Version:
Jodit is an awesome and useful wysiwyg editor with filebrowser
1,234 lines (1,105 loc) • 1.77 MB
JavaScript
/*!
* jodit - Jodit is an awesome and useful wysiwyg editor with filebrowser
* Author: Chupurnov <chupurnov@gmail.com> (https://xdsoft.net/jodit/)
* Version: v4.6.2
* Url: https://xdsoft.net/jodit/
* License(s): MIT
*/
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory(require("{}"));
else if(typeof define === 'function' && define.amd)
define(["{}"], factory);
else {
var a = typeof exports === 'object' ? factory(require("{}")) : factory(root["{}"]);
for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
}
})(self, function(__WEBPACK_EXTERNAL_MODULE__41324__) {
return /******/ (function() { // webpackBootstrap
/******/ var __webpack_modules__ = ({
/***/ 140:
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ V: function() { return /* binding */ FileBrowser; }
/* harmony export */ });
/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(31635);
/* harmony import */ var jodit_core_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(77753);
/* harmony import */ var jodit_core_constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(17352);
/* harmony import */ var jodit_core_decorators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(22664);
/* harmony import */ var jodit_core_decorators_watch_watch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(66927);
/* harmony import */ var jodit_core_event_emitter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(50025);
/* harmony import */ var jodit_core_helpers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(65147);
/* harmony import */ var jodit_core_storage__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(63915);
/* harmony import */ var jodit_core_traits_dlgs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(58597);
/* harmony import */ var jodit_core_view_view_with_toolbar__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(14961);
/* harmony import */ var jodit_config__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(36115);
/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(70265);
/* harmony import */ var _fetch_load_items__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(9979);
/* harmony import */ var _fetch_load_tree__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(31859);
/* harmony import */ var _listeners_native_listeners__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(62994);
/* harmony import */ var _listeners_self_listeners__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(18043);
/* harmony import */ var _listeners_state_listeners__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(80004);
/* harmony import */ var _data_provider__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(75889);
/* harmony import */ var _factories__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(83797);
/* harmony import */ var _ui__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(10274);
/*!
* Jodit Editor (https://xdsoft.net/jodit/)
* Released under MIT see LICENSE.txt in the project root for license information.
* Copyright (c) 2013-2025 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
*/
let FileBrowser = class FileBrowser extends jodit_core_view_view_with_toolbar__WEBPACK_IMPORTED_MODULE_8__/* .ViewWithToolbar */ .T {
/** @override */
className() {
return 'FileBrowser';
}
get dataProvider() {
return (0,_factories__WEBPACK_IMPORTED_MODULE_16__/* .makeDataProvider */ .S)(this, this.options);
}
onSelect(callback) {
return () => {
if (this.state.activeElements.length) {
const files = [];
const isImages = [];
this.state.activeElements.forEach(elm => {
const url = elm.fileURL;
if (url) {
files.push(url);
isImages.push(elm.isImage || false);
}
});
this.close();
const data = {
baseurl: '',
files,
isImages
};
if ((0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_5__.isFunction)(callback)) {
callback(data);
}
this.close();
}
return false;
};
}
get _dialog() {
const dialog = this.dlg({
minWidth: Math.min(700, screen.width),
minHeight: 300,
buttons: this.o.headerButtons ?? ['fullsize', 'dialog.close']
});
['beforeClose', 'afterClose', 'beforeOpen'].forEach(proxyEvent => dialog.events.on(dialog, proxyEvent, () => this.e.fire(proxyEvent)));
dialog.setSize(this.o.width, this.o.height);
return dialog;
}
/**
* Container for set/get value
*/
get storage() {
return jodit_core_storage__WEBPACK_IMPORTED_MODULE_6__/* .Storage */ .wc.makeStorage(Boolean(this.o.saveStateInStorage), this.componentName);
}
get isOpened() {
return this._dialog.isOpened && this.browser.style.display !== 'none';
}
/**
* It displays a message in the status bar of filebrowser
*
* @param message - The message that will be displayed
* @param success - true It will be shown a message light . If no option is specified ,
* ßan error will be shown the red
* @example
* ```javascript
* parent.filebrowser.status('There was an error uploading file', false);
* ```
*/
status(message, success) {
if (!message || (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_5__.isAbortError)(message)) {
return;
}
if (!(0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_5__.isString)(message)) {
message = message.message;
}
if (!(0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_5__.isString)(message) || !(0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_5__.trim)(message).length) {
return;
}
this.message.message(message, success ? 'success' : 'error', this.o.howLongShowMsg);
}
/**
* It opens a web browser window
*
* @param callback - The function that will be called after the file selection in the browser
* @param onlyImages - Show only images
* @example
* ```javascript
* var fb = new Jodit.modules.FileBrowser(parent);
* fb.open(function (data) {
* var i;
* for (i = 0;i < data.files.length; i += 1) {
* parent.s.insertImage(data.baseurl + data.files[i]);
* }
* });
* ```
*/
open(callback = this.o
.defaultCallback, onlyImages = false) {
this.state.onlyImages = onlyImages;
return this.async
.promise((resolve, reject) => {
if (!this.o.items || !this.o.items.url) {
throw (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_5__.error)('Need set options.filebrowser.ajax.url');
}
let localTimeout = 0;
this.e
.off(this.files.container, 'dblclick')
.on(this.files.container, 'dblclick', this.onSelect(callback))
.on(this.files.container, 'touchstart', () => {
const now = new Date().getTime();
if (now - localTimeout <
jodit_core_constants__WEBPACK_IMPORTED_MODULE_1__.EMULATE_DBLCLICK_TIMEOUT) {
this.onSelect(callback)();
}
localTimeout = now;
})
.off('select.filebrowser')
.on('select.filebrowser', this.onSelect(callback));
const header = this.c.div();
this.toolbar?.appendTo(header);
this.__updateToolbarButtons();
this._dialog.open(this.browser, header);
this.e.fire('sort.filebrowser', this.state.sortBy);
(0,_fetch_load_tree__WEBPACK_IMPORTED_MODULE_11__/* .loadTree */ .r)(this)
.then(resolve, reject)
.finally(() => {
if (this.isInDestruct) {
return;
}
this?.e?.fire('fileBrowserReady.filebrowser');
});
})
.catch((e) => {
if (!(0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_5__.isAbortError)(e) && !jodit_core_constants__WEBPACK_IMPORTED_MODULE_1__.IS_PROD) {
throw e;
}
});
}
__getButtons() {
const options = (this.o.buttons ?? []);
return options.filter((btn) => {
if (!(0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_5__.isString)(btn)) {
return true;
}
switch (btn) {
case 'filebrowser.upload':
return this.dataProvider.canI('FileUpload');
case 'filebrowser.edit':
return (this.dataProvider.canI('ImageResize') ||
this.dataProvider.canI('ImageCrop'));
case 'filebrowser.remove':
return this.dataProvider.canI('FileRemove');
}
return true;
});
}
initUploader(editor) {
const self = this, options = editor?.options?.uploader, uploaderOptions = (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_5__.ConfigProto)(options || {}, jodit_config__WEBPACK_IMPORTED_MODULE_9__/* .Config */ .T.defaultOptions.uploader);
const uploadHandler = () => (0,_fetch_load_items__WEBPACK_IMPORTED_MODULE_18__/* .loadItems */ .f)(this);
self.uploader = self.getInstance('Uploader', uploaderOptions);
self.uploader
.setPath(self.state.currentPath)
.setSource(self.state.currentSource)
.bind(self.browser, uploadHandler, self.errorHandler);
this.state.on(['change.currentPath', 'change.currentSource'], () => {
this.uploader
.setPath(this.state.currentPath)
.setSource(this.state.currentSource);
});
self.e.on('bindUploader.filebrowser', (button) => {
self.uploader.bind(button, uploadHandler, self.errorHandler);
});
}
constructor(options) {
super(options);
this.browser = this.c.div(this.componentName);
this.status_line = this.c.div(this.getFullElName('status'));
this.tree = new _ui__WEBPACK_IMPORTED_MODULE_17__/* .FileBrowserTree */ .V(this);
this.files = new _ui__WEBPACK_IMPORTED_MODULE_17__/* .FileBrowserFiles */ .Q(this);
this.state = (0,jodit_core_event_emitter__WEBPACK_IMPORTED_MODULE_4__/* .observable */ .sH)({
currentPath: '',
currentSource: _data_provider__WEBPACK_IMPORTED_MODULE_15__/* .DEFAULT_SOURCE_NAME */ .o,
currentBaseUrl: '',
activeElements: [],
elements: [],
sources: [],
view: 'tiles',
sortBy: 'changed-desc',
filterWord: '',
onlyImages: false
});
this.errorHandler = (resp) => {
if ((0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_5__.isAbortError)(resp)) {
return;
}
if (resp instanceof Error) {
this.status(this.i18n(resp.message));
}
else {
this.status(this.dataProvider.getMessage(resp));
}
};
/**
* Close dialog
*/
this.close = () => {
this._dialog.close();
};
this.__prevButtons = [];
this.attachEvents(options);
const self = this;
self.options = (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_5__.ConfigProto)(options || {}, jodit_config__WEBPACK_IMPORTED_MODULE_9__/* .Config */ .T.defaultOptions.filebrowser);
self.browser.component = this;
self.container = self.browser;
if (self.o.showFoldersPanel) {
self.browser.appendChild(self.tree.container);
}
self.browser.appendChild(self.files.container);
self.browser.appendChild(self.status_line);
_listeners_self_listeners__WEBPACK_IMPORTED_MODULE_13__/* .selfListeners */ .c.call(self);
_listeners_native_listeners__WEBPACK_IMPORTED_MODULE_12__/* .nativeListeners */ .nW.call(self);
_listeners_state_listeners__WEBPACK_IMPORTED_MODULE_14__/* .stateListeners */ .r.call(self);
const keys = [
'getLocalFileByUrl',
'crop',
'resize',
'create',
'fileMove',
'folderMove',
'fileRename',
'folderRename',
'fileRemove',
'folderRemove',
'folder',
'items',
'permissions'
];
keys.forEach(key => {
if (this.options[key] != null) {
this.options[key] = (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_5__.ConfigProto)(this.options[key], this.o.ajax);
}
});
const { storeView, storeSortBy, storeLastOpenedFolder } = this.o
.saveStateInStorage || {
storeLastOpenedFolder: false,
storeView: false,
storeSortBy: false
};
const view = storeView && this.storage.get('view');
if (view && this.o.view == null) {
self.state.view = view === 'list' ? 'list' : 'tiles';
}
else {
self.state.view = self.o.view === 'list' ? 'list' : 'tiles';
}
self.files.setMod('view', self.state.view);
const sortBy = storeSortBy && self.storage.get('sortBy');
if (sortBy) {
const parts = sortBy.split('-');
self.state.sortBy = ['changed', 'name', 'size'].includes(parts[0])
? sortBy
: 'changed-desc';
}
else {
self.state.sortBy = self.o.sortBy || 'changed-desc';
}
if (storeLastOpenedFolder) {
const currentPath = self.storage.get('currentPath'), currentSource = self.storage.get('currentSource');
self.state.currentPath = currentPath ?? '';
self.state.currentSource = currentSource ?? '';
}
self.initUploader(self);
self.setStatus(jodit_core_component__WEBPACK_IMPORTED_MODULE_0__/* .STATUSES */ .f.ready);
}
destruct() {
if (this.isInDestruct) {
return;
}
(0,jodit_core_decorators__WEBPACK_IMPORTED_MODULE_2__.cached)(this, '_dialog')?.destruct();
super.destruct();
this.events && this.e.off('.filebrowser');
this.uploader && this.uploader.destruct();
}
__updateToolbarButtons() {
const buttons = this.__getButtons();
if (isEqualButtonList(this.__prevButtons, buttons)) {
return;
}
this.__prevButtons = buttons;
this.toolbar?.build(buttons);
}
};
(0,tslib__WEBPACK_IMPORTED_MODULE_19__/* .__decorate */ .Cg)([
jodit_core_decorators__WEBPACK_IMPORTED_MODULE_2__.cache
], FileBrowser.prototype, "dataProvider", null);
(0,tslib__WEBPACK_IMPORTED_MODULE_19__/* .__decorate */ .Cg)([
jodit_core_decorators__WEBPACK_IMPORTED_MODULE_2__.cache
], FileBrowser.prototype, "_dialog", null);
(0,tslib__WEBPACK_IMPORTED_MODULE_19__/* .__decorate */ .Cg)([
jodit_core_decorators__WEBPACK_IMPORTED_MODULE_2__.cache
], FileBrowser.prototype, "storage", null);
(0,tslib__WEBPACK_IMPORTED_MODULE_19__/* .__decorate */ .Cg)([
jodit_core_decorators__WEBPACK_IMPORTED_MODULE_2__.autobind
], FileBrowser.prototype, "status", null);
(0,tslib__WEBPACK_IMPORTED_MODULE_19__/* .__decorate */ .Cg)([
jodit_core_decorators__WEBPACK_IMPORTED_MODULE_2__.autobind
], FileBrowser.prototype, "open", null);
(0,tslib__WEBPACK_IMPORTED_MODULE_19__/* .__decorate */ .Cg)([
(0,jodit_core_decorators_watch_watch__WEBPACK_IMPORTED_MODULE_3__/* .watch */ .w)('dataProvider:changePermissions')
], FileBrowser.prototype, "__updateToolbarButtons", null);
FileBrowser = (0,tslib__WEBPACK_IMPORTED_MODULE_19__/* .__decorate */ .Cg)([
(0,jodit_core_decorators__WEBPACK_IMPORTED_MODULE_2__.derive)(jodit_core_traits_dlgs__WEBPACK_IMPORTED_MODULE_7__/* .Dlgs */ .z)
], FileBrowser);
function isEqualButtonList(prevButtons, buttons) {
if (prevButtons.length !== buttons.length) {
return false;
}
for (let i = 0; i < prevButtons.length; i++) {
if (prevButtons[i] !== buttons[i]) {
return false;
}
}
return true;
}
/***/ }),
/***/ 223:
/***/ (function(module) {
module.exports = "<svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"> <path d=\"M5.09668 6.99707H7.17358L4.17358 3.99707L1.17358 6.99707H3.09668V17.0031H1.15881L4.15881 20.0031L7.15881 17.0031H5.09668V6.99707Z\"/> <path d=\"M22.8412 7H8.84119V5H22.8412V7Z\"/> <path d=\"M22.8412 11H8.84119V9H22.8412V11Z\"/> <path d=\"M8.84119 15H22.8412V13H8.84119V15Z\"/> <path d=\"M22.8412 19H8.84119V17H22.8412V19Z\"/> </svg>"
/***/ }),
/***/ 225:
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
/* unused harmony exports isEditorEmpty, placeholder */
/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(31635);
/* harmony import */ var jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(17352);
/* harmony import */ var jodit_core_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(22664);
/* harmony import */ var jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(55186);
/* harmony import */ var jodit_core_global__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(56298);
/* harmony import */ var jodit_core_helpers_checker_is_marker__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(71274);
/* harmony import */ var jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(26150);
/* harmony import */ var jodit_core_helpers_utils_css__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(38322);
/* harmony import */ var jodit_core_plugin_plugin__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(29866);
/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(50248);
/*!
* Jodit Editor (https://xdsoft.net/jodit/)
* Released under MIT see LICENSE.txt in the project root for license information.
* Copyright (c) 2013-2025 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
*/
/**
* Check if root node is empty
* @private
*/
function isEditorEmpty(root) {
if (!root.firstChild) {
return true;
}
const first = root.firstChild;
if (jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.INSEPARABLE_TAGS.has(first.nodeName?.toLowerCase()) ||
/^(TABLE)$/i.test(first.nodeName)) {
return false;
}
const next = jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_2__/* .Dom */ .J.next(first, node => node && !jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_2__/* .Dom */ .J.isEmptyTextNode(node), root);
if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_2__/* .Dom */ .J.isText(first) && !next) {
return jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_2__/* .Dom */ .J.isEmptyTextNode(first);
}
return (!next &&
jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_2__/* .Dom */ .J.each(first, elm => !(jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_2__/* .Dom */ .J.isLeaf(elm) || jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_2__/* .Dom */ .J.isList(elm)) &&
(jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_2__/* .Dom */ .J.isEmpty(elm) || jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_2__/* .Dom */ .J.isTag(elm, 'br'))));
}
/**
* Show placeholder inside empty editor
*/
class placeholder extends jodit_core_plugin_plugin__WEBPACK_IMPORTED_MODULE_6__/* .Plugin */ .k {
constructor() {
super(...arguments);
this.addNativeListeners = () => {
this.j.e
.off(this.j.editor, 'input.placeholder keydown.placeholder')
.on(this.j.editor, 'input.placeholder keydown.placeholder', this.toggle);
};
this.addEvents = () => {
const editor = this.j;
if (editor.o.useInputsPlaceholder &&
editor.element.hasAttribute('placeholder')) {
this.placeholderElm.innerHTML =
(0,jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_5__/* .attr */ .C)(editor.element, 'placeholder') || '';
}
editor.e.fire('placeholder', this.placeholderElm.innerHTML);
editor.e
.off('.placeholder')
.on('changePlace.placeholder', this.addNativeListeners)
.on('change.placeholder focus.placeholder keyup.placeholder mouseup.placeholder keydown.placeholder ' +
'mousedown.placeholder afterSetMode.placeholder changePlace.placeholder', this.toggle)
.on(window, 'load', this.toggle);
this.addNativeListeners();
this.toggle();
};
}
afterInit(editor) {
if (!editor.o.showPlaceholder) {
return;
}
this.placeholderElm = editor.c.fromHTML(`<span data-ref="placeholder" style="display: none;" class="jodit-placeholder">${editor.i18n(editor.o.placeholder)}</span>`);
if (editor.o.direction === 'rtl') {
this.placeholderElm.style.right = '0px';
this.placeholderElm.style.direction = 'rtl';
}
editor.e
.on('readonly', (isReadOnly) => {
if (isReadOnly) {
this.hide();
}
else {
this.toggle();
}
})
.on('changePlace', this.addEvents);
this.addEvents();
}
show() {
const editor = this.j;
if (editor.o.readonly) {
return;
}
let marginTop = 0, marginLeft = 0;
const current = editor.s.current(), wrapper = (current && jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_2__/* .Dom */ .J.closest(current, jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_2__/* .Dom */ .J.isBlock, editor.editor)) ||
editor.editor;
const style = editor.ew.getComputedStyle(wrapper);
const styleEditor = editor.ew.getComputedStyle(editor.editor);
editor.workplace.appendChild(this.placeholderElm);
const { firstChild } = editor.editor;
if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_2__/* .Dom */ .J.isElement(firstChild) && !(0,jodit_core_helpers_checker_is_marker__WEBPACK_IMPORTED_MODULE_4__/* .isMarker */ .r)(firstChild)) {
const style2 = editor.ew.getComputedStyle(firstChild);
marginTop = parseInt(style2.getPropertyValue('margin-top'), 10);
marginLeft = parseInt(style2.getPropertyValue('margin-left'), 10);
this.placeholderElm.style.fontSize =
parseInt(style2.getPropertyValue('font-size'), 10) + 'px';
this.placeholderElm.style.lineHeight =
style2.getPropertyValue('line-height');
}
else {
this.placeholderElm.style.fontSize =
parseInt(style.getPropertyValue('font-size'), 10) + 'px';
this.placeholderElm.style.lineHeight =
style.getPropertyValue('line-height');
}
(0,jodit_core_helpers_utils_css__WEBPACK_IMPORTED_MODULE_8__/* .css */ .A)(this.placeholderElm, {
display: 'block',
textAlign: style.getPropertyValue('text-align'),
paddingTop: parseInt(styleEditor.paddingTop, 10) + 'px',
paddingLeft: parseInt(styleEditor.paddingLeft, 10) + 'px',
paddingRight: parseInt(styleEditor.paddingRight, 10) + 'px',
marginTop: Math.max(parseInt(style.getPropertyValue('margin-top'), 10), marginTop),
marginLeft: Math.max(parseInt(style.getPropertyValue('margin-left'), 10), marginLeft)
});
}
hide() {
jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_2__/* .Dom */ .J.safeRemove(this.placeholderElm);
}
toggle() {
const editor = this.j;
if (!editor.editor || editor.isInDestruct) {
return;
}
if (editor.getRealMode() !== jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.MODE_WYSIWYG) {
this.hide();
return;
}
if (!isEditorEmpty(editor.editor)) {
this.hide();
}
else {
this.show();
}
}
beforeDestruct(jodit) {
this.hide();
jodit.e.off('.placeholder').off(window, 'load', this.toggle);
}
}
(0,tslib__WEBPACK_IMPORTED_MODULE_9__/* .__decorate */ .Cg)([
(0,jodit_core_decorators__WEBPACK_IMPORTED_MODULE_1__.debounce)(ctx => ctx.defaultTimeout / 10, true)
], placeholder.prototype, "toggle", null);
jodit_core_global__WEBPACK_IMPORTED_MODULE_3__/* .pluginSystem */ .fg.add('placeholder', placeholder);
/***/ }),
/***/ 449:
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ N: function() { return /* binding */ CamelCaseToKebabCase; },
/* harmony export */ k: function() { return /* binding */ kebabCase; }
/* harmony export */ });
/*!
* Jodit Editor (https://xdsoft.net/jodit/)
* Released under MIT see LICENSE.txt in the project root for license information.
* Copyright (c) 2013-2025 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
*/
/**
* @module helpers/string
*/
const kebabCase = (key) => {
return key
.replace(/([A-Z])([A-Z])([a-z])/g, '$1-$2$3')
.replace(/([a-z])([A-Z])/g, '$1-$2')
.replace(/[\s_]+/g, '-')
.toLowerCase();
};
const CamelCaseToKebabCase = (key) => {
return key
.replace(/([A-Z])([A-Z])([a-z])/g, '$1-$2$3')
.replace(/([a-z])([A-Z])/g, '$1-$2')
.toLowerCase();
};
/***/ }),
/***/ 641:
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ $: function() { return /* binding */ scrollIntoViewIfNeeded; },
/* harmony export */ l: function() { return /* binding */ inView; }
/* harmony export */ });
/* harmony import */ var jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(55186);
/*!
* Jodit Editor (https://xdsoft.net/jodit/)
* Released under MIT see LICENSE.txt in the project root for license information.
* Copyright (c) 2013-2025 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
*/
/**
* @module helpers/utils
*/
/**
* Check if element is in view
*/
function inView(elm, root, doc) {
let rect = elm.getBoundingClientRect(), el = elm;
const top = rect.top, height = rect.height;
while (el && el !== root && el.parentNode) {
el = el.parentNode;
rect = el.getBoundingClientRect();
if (!(top <= rect.bottom)) {
return false;
}
// Check if the element is out of view due to a container scrolling
if (top + height <= rect.top) {
return false;
}
}
// Check it's within the document viewport
return (top <= ((doc.documentElement && doc.documentElement.clientHeight) || 0));
}
/**
* Scroll element into view if it is not in view
*/
function scrollIntoViewIfNeeded(elm, root, doc) {
if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__/* .Dom */ .J.isHTMLElement(elm) && !inView(elm, root, doc)) {
if (root.clientHeight !== root.scrollHeight) {
root.scrollTop = elm.offsetTop;
}
if (!inView(elm, root, doc)) {
elm.scrollIntoView();
}
}
}
/***/ }),
/***/ 926:
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ r: function() { return /* binding */ removeEmptyTextNode; }
/* harmony export */ });
/* harmony import */ var jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(55186);
/*!
* Jodit Editor (https://xdsoft.net/jodit/)
* Released under MIT see LICENSE.txt in the project root for license information.
* Copyright (c) 2013-2025 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
*/
/**
* @private
*/
function removeEmptyTextNode(jodit, node, hadEffect, arg, argi, currentNode) {
if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__/* .Dom */ .J.isText(node) && !node.nodeValue) {
if (node === currentNode && jodit.s.isCollapsed()) {
jodit.s.setCursorAfter(node);
}
jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__/* .Dom */ .J.safeRemove(node);
return true;
}
return hadEffect;
}
/***/ }),
/***/ 928:
/***/ (function(module) {
module.exports = "<svg xmlns='http://www.w3.org/2000/svg' viewBox=\"0 0 1792 1792\"> <path d=\"M621 1280h595v-595zm-45-45l595-595h-595v595zm1152 77v192q0 14-9 23t-23 9h-224v224q0 14-9 23t-23 9h-192q-14 0-23-9t-9-23v-224h-864q-14 0-23-9t-9-23v-864h-224q-14 0-23-9t-9-23v-192q0-14 9-23t23-9h224v-224q0-14 9-23t23-9h192q14 0 23 9t9 23v224h851l246-247q10-9 23-9t23 9q9 10 9 23t-9 23l-247 246v851h224q14 0 23 9t9 23z\"/> </svg>"
/***/ }),
/***/ 931:
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ I: function() { return /* binding */ Icon; }
/* harmony export */ });
/* harmony import */ var jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(17352);
/* harmony import */ var jodit_core_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(65147);
/* harmony import */ var jodit_core_helpers_utils_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(38322);
/*!
* Jodit Editor (https://xdsoft.net/jodit/)
* Released under MIT see LICENSE.txt in the project root for license information.
* Copyright (c) 2013-2025 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
*/
class Icon {
static getIcon(name) {
if (/<svg/i.test(name)) {
return name;
}
const icon = Icon.icons[name] ||
Icon.icons[name.replace(/-/g, '_')] ||
Icon.icons[name.replace(/_/g, '-')] ||
Icon.icons[(0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_1__.camelCase)(name)] ||
Icon.icons[(0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_1__.kebabCase)(name)] ||
Icon.icons[name.toLowerCase()];
if (!jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.IS_PROD && !icon) {
console.warn(`Icon "${name}" not found`);
}
return icon;
}
/**
* Check if icon exist in store
*/
static exists(name) {
return this.getIcon(name) !== undefined;
}
/**
* Return SVG icon
*/
static get(name, defaultValue = '<span></span>') {
return this.getIcon(name) || defaultValue;
}
/**
* Set SVG in store
*/
static set(name, value) {
this.icons[name.replace('_', '-')] = value;
return this;
}
/**
* Make icon html element
*/
static makeIcon(jodit, icon) {
if (!icon) {
return;
}
let iconElement;
const { name, iconURL, fill } = icon;
const clearName = name.replace(/[^a-zA-Z0-9]/g, '_');
let iconFromEvent;
if (!/<svg/.test(name)) {
iconFromEvent = jodit.o.getIcon?.(name, clearName);
}
const cacheKey = `${name}${iconURL}${fill}${iconFromEvent ?? ''}`;
if (jodit.o.cache && this.__cache.has(cacheKey)) {
return this.__cache.get(cacheKey)?.cloneNode(true);
}
if (iconURL) {
iconElement = jodit.c.span();
(0,jodit_core_helpers_utils_css__WEBPACK_IMPORTED_MODULE_2__/* .css */ .A)(iconElement, 'backgroundImage', 'url(' +
iconURL.replace('{basePath}', jodit?.basePath || '') +
')');
}
else {
const svg = iconFromEvent ||
Icon.get(name, '') ||
jodit.o.extraIcons?.[name];
if (svg) {
iconElement = jodit.c.fromHTML(svg.trim());
if (!/^<svg/i.test(name)) {
iconElement.classList.add('jodit-icon_' + clearName);
}
}
}
if (iconElement) {
iconElement.classList.add('jodit-icon');
iconElement.style.fill = fill;
jodit.o.cache &&
this.__cache.set(cacheKey, iconElement.cloneNode(true));
}
return iconElement;
}
}
Icon.icons = {};
Icon.__cache = new Map();
/***/ }),
/***/ 1239:
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
/* unused harmony export orderedList */
/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(31635);
/* harmony import */ var jodit_core_decorators__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(22664);
/* harmony import */ var jodit_core_global__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(56298);
/* harmony import */ var jodit_core_plugin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(71005);
/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(20797);
/*!
* Jodit Editor (https://xdsoft.net/jodit/)
* Released under MIT see LICENSE.txt in the project root for license information.
* Copyright (c) 2013-2025 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
*/
/**
* Process commands insertOrderedList and insertUnOrderedList
*/
class orderedList extends jodit_core_plugin__WEBPACK_IMPORTED_MODULE_2__/* .Plugin */ .k {
constructor() {
super(...arguments);
this.buttons = [
{
name: 'ul',
group: 'list'
},
{
name: 'ol',
group: 'list'
}
];
}
afterInit(jodit) {
jodit
.registerCommand('insertUnorderedList', this.onCommand)
.registerCommand('insertOrderedList', this.onCommand);
}
onCommand(command, _, type) {
this.jodit.s.commitStyle({
element: command === 'insertunorderedlist' ? 'ul' : 'ol',
attributes: {
style: {
listStyleType: type ?? null
}
}
});
this.jodit.synchronizeValues();
return false;
}
beforeDestruct(jodit) { }
}
(0,tslib__WEBPACK_IMPORTED_MODULE_4__/* .__decorate */ .Cg)([
jodit_core_decorators__WEBPACK_IMPORTED_MODULE_0__.autobind
], orderedList.prototype, "onCommand", null);
jodit_core_global__WEBPACK_IMPORTED_MODULE_1__/* .pluginSystem */ .fg.add('orderedList', orderedList);
/***/ }),
/***/ 1540:
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ $: function() { return /* binding */ UISelect; }
/* harmony export */ });
/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(31635);
/* harmony import */ var jodit_core_decorators_component_component__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(24767);
/* harmony import */ var jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(26150);
/* harmony import */ var jodit_core_ui_form_inputs_input_input__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(69198);
/* harmony import */ var jodit_core_ui_form_validators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(84103);
/*!
* Jodit Editor (https://xdsoft.net/jodit/)
* Released under MIT see LICENSE.txt in the project root for license information.
* Copyright (c) 2013-2025 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
*/
var UISelect_1;
let UISelect = UISelect_1 = class UISelect extends jodit_core_ui_form_inputs_input_input__WEBPACK_IMPORTED_MODULE_1__/* .UIInput */ .t {
/** @override */
className() {
return 'UISelect';
}
/** @override **/
createContainer(state) {
const container = super.createContainer(state);
const { j } = this, { nativeInput } = this;
const opt = () => j.create.element('option');
if (state.placeholder !== undefined) {
const option = opt();
option.value = '';
option.text = j.i18n(state.placeholder);
nativeInput.add(option);
}
state.options?.forEach(element => {
const option = opt();
option.value = element.value.toString();
option.text = j.i18n(element.text);
nativeInput.add(option);
});
if (state.size && state.size > 0) {
(0,jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_0__/* .attr */ .C)(nativeInput, 'size', state.size);
}
if (state.multiple) {
(0,jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_0__/* .attr */ .C)(nativeInput, 'multiple', '');
}
return container;
}
/** @override **/
createNativeInput() {
return this.j.create.element('select');
}
/** @override **/
updateValidators() {
super.updateValidators();
if (this.state.required) {
this.validators.delete(jodit_core_ui_form_validators__WEBPACK_IMPORTED_MODULE_2__/* .inputValidators.required */ .O.required);
this.validators.add(jodit_core_ui_form_validators__WEBPACK_IMPORTED_MODULE_2__/* .selectValidators.required */ .U.m);
}
}
constructor(jodit, state) {
super(jodit, state);
/** @override */
this.state = { ...UISelect_1.defaultState };
Object.assign(this.state, state);
}
};
/** @override */
UISelect.defaultState = {
...jodit_core_ui_form_inputs_input_input__WEBPACK_IMPORTED_MODULE_1__/* .UIInput */ .t.defaultState,
options: [],
size: 1,
multiple: false
};
UISelect = UISelect_1 = (0,tslib__WEBPACK_IMPORTED_MODULE_3__/* .__decorate */ .Cg)([
jodit_core_decorators_component_component__WEBPACK_IMPORTED_MODULE_4__/* .component */ .s
], UISelect);
/***/ }),
/***/ 1677:
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
/* unused harmony export sticky */
/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(31635);
/* harmony import */ var jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(17352);
/* harmony import */ var jodit_core_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(22664);
/* harmony import */ var jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(55186);
/* harmony import */ var jodit_core_global__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(56298);
/* harmony import */ var jodit_core_helpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(65147);
/* harmony import */ var jodit_core_plugin_plugin__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(29866);
/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(63400);
/*!
* Jodit Editor (https://xdsoft.net/jodit/)
* Released under MIT see LICENSE.txt in the project root for license information.
* Copyright (c) 2013-2025 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
*/
const NEED_DUMMY_BOX = !jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.IS_ES_NEXT && jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.IS_IE;
class sticky extends jodit_core_plugin_plugin__WEBPACK_IMPORTED_MODULE_5__/* .Plugin */ .k {
constructor() {
super(...arguments);
this.__isToolbarStuck = false;
this.__createDummy = (toolbar) => {
this.__dummyBox = this.j.c.div();
this.__dummyBox.classList.add('jodit_sticky-dummy_toolbar');
this.j.container.insertBefore(this.__dummyBox, toolbar);
};
/**
* Add sticky
*/
this.addSticky = (toolbar) => {
if (!this.__isToolbarStuck) {
if (NEED_DUMMY_BOX && !this.__dummyBox) {
this.__createDummy(toolbar);
}
this.j.container.classList.add('jodit_sticky');
this.__isToolbarStuck = true;
}
// on resize, it should work always
(0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_4__.css)(toolbar, {
top: this.j.o.toolbarStickyOffset || null,
width: this.j.container.offsetWidth - 2
});
this.__dummyBox &&
(0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_4__.css)(this.__dummyBox, {
height: toolbar.offsetHeight
});
};
/**
* Remove sticky behaviour
*/
this.removeSticky = (toolbar) => {
if (!this.__isToolbarStuck) {
return;
}
(0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_4__.css)(toolbar, {
width: '',
top: ''
});
this.j.container.classList.remove('jodit_sticky');
this.__isToolbarStuck = false;
};
}
afterInit(jodit) {
jodit.e
.on(jodit.ow, 'scroll.sticky wheel.sticky mousewheel.sticky resize.sticky', this.__onScroll)
.on('getStickyState.sticky', () => this.__isToolbarStuck);
}
/**
* Scroll handler
*/
__onScroll() {
const { jodit } = this;
if (!jodit.o.toolbarSticky || !jodit.o.toolbar) {
return;
}
const scrollWindowTop = jodit.ow.pageYOffset ||
(jodit.od.documentElement && jodit.od.documentElement.scrollTop) ||
0;
const offsetEditor = (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_4__.offset)(jodit.container, jodit, jodit.od, true);
const doSticky = jodit.getMode() === jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.MODE_WYSIWYG &&
scrollWindowTop + jodit.o.toolbarStickyOffset > offsetEditor.top &&
scrollWindowTop + jodit.o.toolbarStickyOffset <
offsetEditor.top + offsetEditor.height &&
!(jodit.o.toolbarDisableStickyForMobile && this.__isMobile());
if (this.__isToolbarStuck === doSticky) {
return;
}
const container = jodit.toolbarContainer;
if (container) {
doSticky ? this.addSticky(container) : this.removeSticky(container);
}
jodit.e.fire('toggleSticky', doSticky);
}
/**
* Is mobile device
*/
__isMobile() {
const { j } = this;
return (j &&
j.options &&
j.container &&
j.options.sizeSM >= j.container.offsetWidth);
}
beforeDestruct(jodit) {
jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_2__/* .Dom */ .J.safeRemove(this.__dummyBox);
jodit.e
.off(jodit.ow, 'scroll.sticky wheel.sticky mousewheel.sticky resize.sticky', this.__onScroll)
.off('.sticky');
}
}
(0,tslib__WEBPACK_IMPORTED_MODULE_7__/* .__decorate */ .Cg)([
(0,jodit_core_decorators__WEBPACK_IMPORTED_MODULE_1__.throttle)()
], sticky.prototype, "__onScroll", null);
jodit_core_global__WEBPACK_IMPORTED_MODULE_3__/* .pluginSystem */ .fg.add('sticky', sticky);
/***/ }),
/***/ 1916:
/***/ (function(module) {
module.exports = "<svg xmlns='http://www.w3.org/2000/svg' viewBox=\"0 0 24 24\"> <g transform=\"scale(1.2 1.2) translate(-2 -0.5)\"> <path d=\"M 22,12.5 A 1.49995,1.49995 0 0 0 20.50006,11 H 20 V 10 A 3,3 0 0 0 17,7 H 13 V 5.7226 a 2,2 0 1 0 -2,0 V 7 H 7 a 3,3 0 0 0 -3,3 v 1 H 3.49994 a 1.5,1.5 0 0 0 0,3 H 4 v 1 A 3.00128,3.00128 0 0 0 6.20251,17.89282 1.03113,1.03113 0 0 1 7,18.86975 v 0.716 a 0.99928,0.99928 0 0 0 1.00726,1.002 0.9792,0.9792 0 0 0 0.69983,-0.29486 l 2,-2 A 1,1 0 0 1 11.41425,18 H 17 a 3,3 0 0 0 3,-3 v -1 h 0.50006 A 1.49995,1.49995 0 0 0 22,12.5 Z M 19,15 a 2.00226,2.00226 0 0 1 -2,2 H 11.41425 A 1.987,1.987 0 0 0 10,17.58575 l -2,2 v -0.716 A 2.02082,2.02082 0 0 0 6.46771,16.92865 2.00439,2.00439 0 0 1 5,15 V 10 A 2.00226,2.00226 0 0 1 7,8 h 10 a 2.00222,2.00222 0 0 1 2,2 z M 10,12.5 A 1.5,1.5 0 1 1 8.5,11 1.5,1.5 0 0 1 10,12.5 Z m 7,0 A 1.5,1.5 0 1 1 15.5,11 1.5,1.5 0 0 1 17,12.5 Z\"/> </g> </svg>"
/***/ }),
/***/ 1963:
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ C: function() { return /* binding */ derive; }
/* harmony export */ });
/* harmony import */ var jodit_core_helpers_checker_is_function__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(69052);
/*!
* Jodit Editor (https://xdsoft.net/jodit/)
* Released under MIT see LICENSE.txt in the project root for license information.
* Copyright (c) 2013-2025 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
*/
/**
* [[include:core/decorators/derive/README.md]]
* @packageDocumentation
* @module decorators/derive
*/
function derive(...traits) {
return (target) => {
const origin = target.prototype;
for (let i = 0; i < traits.length; i++) {
const trait = traits[i];
const keys = Object.getOwnPropertyNames(trait.prototype);
for (let j = 0; j < keys.length; j++) {
const key = keys[j], method = Object.getOwnPropertyDescriptor(trait.prototype, key);
const canDerive = method != null &&
(0,jodit_core_helpers_checker_is_function__WEBPACK_IMPORTED_MODULE_0__/* .isFunction */ .T)(method.value) &&
!(0,jodit_core_helpers_checker_is_function__WEBPACK_IMPORTED_MODULE_0__/* .isFunction */ .T)(origin[key]);
if (canDerive) {
Object.defineProperty(origin, key, {
enumerable: true,
configurable: true,
writable: true,
value: function (...args) {
return method.value.call(this, ...args);
}
});
}
}
}
};
}
/***/ }),
/***/ 1992:
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ b: function() { return /* binding */ createSourceEditor; }
/* harmony export */ });
/* harmony import */ var jodit_core_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(65147);
/* harmony import */ var _engines__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(76134);
/*!
* Jodit Editor (https://xdsoft.net/jodit/)
* Released under MIT see LICENSE.txt in the project root for license information.
* Copyright (c) 2013-2025 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
*/
function createSourceEditor(type, editor, container, toWYSIWYG, fromWYSIWYG) {
let sourceEditor;
if ((0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_0__.isFunction)(type)) {
sourceEditor = type(editor);
}
else {
switch (type) {
case 'ace':
if (!editor.o.shadowRoot) {
sourceEditor = new _engines__WEBPACK_IMPORTED_MODULE_1__/* .AceEditor */ .p(editor, container, toWYSIWYG, fromWYSIWYG);
break;
}
default:
sourceEditor = new _engines__WEBPACK_IMPORTED_MODULE_1__/* .TextAreaEditor */ .S(editor, container, toWYSIWYG, fromWYSIWYG);
}
}
sourceEditor.init(editor);
sourceEditor.onReadyAlways(() => {
sourceEditor.setReadOnly(editor.o.readonly);
});
return sourceEditor;
}
/***/ }),
/***/ 2461:
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ E: function() { return /* binding */ isNumber; }
/* harmony export */ });
/*!
* Jodit Editor (https://xdsoft.net/jodit/)
* Released under MIT see LICENSE.txt in the project root for license information.
* Copyright (c) 2013-2025 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
*/
/**
* @module helpers/checker
*/
/**
* Check value is a number
*/
function isNumber(value) {
return typeof value === 'number' && !isNaN(value) && isFinite(value);
}
/***/ }),
/***/ 2533:
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
/* unused harmony export tableKeyboardNavigation */
/* harmony import */ var jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(17352);
/* harmony import */ var jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(55186);
/* harmony import */ var jodit_core_global__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(56298);
/* harmony import */ var jodit_core_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(65147);
/* harmony import */ var jodit_modules_table_table__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(11648);
/*!
* Jodit Editor (https://xdsoft.net/jodit/)
* Released under MIT see LICENSE.txt in the project root for license information.
* Copyright (c) 2013-2025 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
*/
const WORK_KEYS = new Set([
jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.KEY_TAB,
jodit_core_const