UNPKG

jodit-pro

Version:

PRO Version of Jodit Editor

761 lines (691 loc) 31 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 */ (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([[954],{ /***/ 20104: /***/ (function(__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var _assets_swap_svg__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(74922); /* harmony import */ var _assets_swap_svg__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_assets_swap_svg__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _assets_translate_svg__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(34575); /* harmony import */ var _assets_translate_svg__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_assets_translate_svg__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var jodit_esm_config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6441); /* harmony import */ var jodit_esm_core_ui_icon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12153); /*! * 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/ */ jodit_esm_config__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.translate = { hotkeys: { translateSelection: [ 'ctrl+shift+o', 'cmd+shift+o' ], translateOptions: [ 'ctrl+shift+p', 'cmd+shift+p' ] }, provider: 'google', googleProviderOptions: { url: 'https://translation.googleapis.com/language/translate/v2', key: '' }, defaultSourceLang: '', defaultTargetLang: 'de' }; jodit_esm_config__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.controls.translate = { translate: { tooltip: 'Translate selected text', icon: 'translate', command: 'translate', exec (editor) { editor.execCommand('translate'); }, list: [ 'Options' ], childExec (editor, _, { control }) { editor.execCommand('translate' + control.name); }, mods: { stroke: false } } }; jodit_esm_core_ui_icon__WEBPACK_IMPORTED_MODULE_3__.Icon.set('translate', (_assets_translate_svg__WEBPACK_IMPORTED_MODULE_1___default())).set('translate-swap', (_assets_swap_svg__WEBPACK_IMPORTED_MODULE_0___default())); /***/ }), /***/ 27834: /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ GoogleTranslateProvider: function() { return /* binding */ GoogleTranslateProvider; } /* harmony export */ }); /* harmony import */ var _swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82749); /* harmony import */ var jodit_esm_core_constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(82758); /* harmony import */ var jodit_esm_core_helpers_utils_assert__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(38837); /* harmony import */ var jodit_pro_plugins_translate_providers_languages__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(80942); /*! * 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/ */ class GoogleTranslateProvider { __fetch(command, data = {}) { const opt = this.jodit.o.translate.googleProviderOptions; (0,jodit_esm_core_helpers_utils_assert__WEBPACK_IMPORTED_MODULE_2__.assert)(opt, 'Set googleProviderOptions'); return this.jodit.fetch(opt.url + '?key=' + opt.key, { method: 'POST', data: { ...data, ui: this.jodit.o.language }, contentType: 'application/json; charset=utf-8', withCredentials: false }).then((resp)=>resp.json()).catch((resp)=>{ try { this.jodit.message.error(resp.json().message); } catch (e) { if (!jodit_esm_core_constants__WEBPACK_IMPORTED_MODULE_1__.IS_PROD) { console.error(e); } } }); } translate(q, source, target) { return this.__fetch('translate', { q, source, target, format: 'html' }).then((resp)=>{ return { text: resp.data.translations[0].translatedText }; }); } supportedLanguages() { return Promise.resolve({ langs: jodit_pro_plugins_translate_providers_languages__WEBPACK_IMPORTED_MODULE_3__.languages }); } constructor(jodit){ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "jodit", void 0); this.jodit = jodit; } } /***/ }), /***/ 33124: /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ UITranslateSettings: function() { return /* binding */ UITranslateSettings; } /* harmony export */ }); /* harmony import */ var _swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82749); /* harmony import */ var _swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(31635); /* harmony import */ var jodit_esm_core_decorators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(65478); /* harmony import */ var jodit_esm_core_ui__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(67510); /* harmony import */ var jodit_pro_plugins_translate_ui_list_list__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(67082); /*! * 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/ */ class UITranslateSettings extends jodit_esm_core_ui__WEBPACK_IMPORTED_MODULE_3__.UIElement { className() { return 'UITranslateSettings'; } render() { return `<div> <div class='&__list &__source-list'></div> <div class='&__arrow'> <a class='&__arrow-swap'>*translate-swap*</a> </div> <div class='&__list &__target-list'></div> </div>`; } __onSwap() { const tmp = this.state.sourceLang; this.state.sourceLang = this.state.targetLang; this.state.targetLang = tmp; this.__sourceList.state.active = this.state.sourceLang; this.__targetList.state.active = this.state.targetLang; this.options.onChange({ ...this.state }); } constructor(jodit, state, options){ super(jodit), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "state", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "options", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "__sourceList", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "__targetList", void 0), this.state = state, this.options = options; this.__sourceList = new jodit_pro_plugins_translate_ui_list_list__WEBPACK_IMPORTED_MODULE_4__.UITranslateList(jodit, { list: options.sourceList, active: state.sourceLang, onChange: (lang)=>{ this.state.sourceLang = lang; this.options.onChange({ ...this.state }); } }); this.getElm('source-list')?.appendChild(this.__sourceList.container); this.__targetList = new jodit_pro_plugins_translate_ui_list_list__WEBPACK_IMPORTED_MODULE_4__.UITranslateList(jodit, { list: options.targetList, active: state.targetLang, onChange: (lang)=>{ this.state.targetLang = lang; this.options.onChange({ ...this.state }); } }); this.getElm('target-list')?.appendChild(this.__targetList.container); } } (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__.__decorate)([ (0,jodit_esm_core_decorators__WEBPACK_IMPORTED_MODULE_2__.watch)('arrow-swap:click') ], UITranslateSettings.prototype, "__onSwap", null); UITranslateSettings = (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__.__decorate)([ jodit_esm_core_decorators__WEBPACK_IMPORTED_MODULE_2__.component ], UITranslateSettings); /***/ }), /***/ 34575: /***/ (function(module) { module.exports = "<svg viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\"> <path d=\"M4.545 6.714 4.11 8H3l1.862-5h1.284L8 8H6.833l-.435-1.286H4.545zm1.634-.736L5.5 3.956h-.049l-.679 2.022H6.18z\"/> <path d=\"M0 2a2 2 0 0 1 2-2h7a2 2 0 0 1 2 2v3h3a2 2 0 0 1 2 2v7a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2v-3H2a2 2 0 0 1-2-2V2zm2-1a1 1 0 0 0-1 1v7a1 1 0 0 0 1 1h7a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H2zm7.138 9.995c.193.301.402.583.63.846-.748.575-1.673 1.001-2.768 1.292.178.217.451.635.555.867 1.125-.359 2.08-.844 2.886-1.494.777.665 1.739 1.165 2.93 1.472.133-.254.414-.673.629-.89-1.125-.253-2.057-.694-2.82-1.284.681-.747 1.222-1.651 1.621-2.757H14V8h-3v1.047h.765c-.318.844-.74 1.546-1.272 2.13a6.066 6.066 0 0 1-.415-.492 1.988 1.988 0 0 1-.94.31z\"/> </svg>" /***/ }), /***/ 67082: /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ UITranslateList: function() { return /* binding */ UITranslateList; } /* harmony export */ }); /* harmony import */ var _swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82749); /* harmony import */ var _swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(31635); /* harmony import */ var jodit_esm_core_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(82758); /* harmony import */ var jodit_esm_core_decorators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(65478); /* harmony import */ var jodit_esm_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(2748); /* harmony import */ var jodit_esm_core_helpers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(21537); /* harmony import */ var jodit_esm_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(29960); /* harmony import */ var jodit_esm_core_ui_element__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(48538); /* harmony import */ var jodit_esm_core_ui_form_inputs_input_input__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(80256); /*! * 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/ */ class UITranslateList extends jodit_esm_core_ui_element__WEBPACK_IMPORTED_MODULE_7__.UIElement { className() { return 'UITranslateList'; } get items() { return this.getElms('item'); } render(options) { const list = []; Object.keys(options.list).sort().forEach((lang)=>{ const key = options.list[lang]; list.push(`<a role='button' tabindex='0' class='&__item' data-lang='${key}'> <span class='&__item-key'>${key}</span> <span class='&__item-title'>${this.j.i18n(lang)}</span> </a>`); }); return `<div class='&'> <div class='&__input'></div> <div class='&__list'>${list.join('')}</div> </div>`; } __onChangeFilter(value) { this.items.forEach((elm)=>{ const key = elm.textContent?.toLowerCase() ?? ''; (0,jodit_esm_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_6__.attr)(elm, 'data-hidden', (0,jodit_esm_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_6__.attr)(elm, 'data-active') !== 'true' && !key.includes(value.toLowerCase())); }); } __scrollToActive() { const active = this.container.querySelector('[data-active="true"]'); const list = this.getElm('list'); active && list && (0,jodit_esm_core_helpers__WEBPACK_IMPORTED_MODULE_5__.scrollIntoViewIfNeeded)(active, list, this.j.od); } onClickItem(e) { if (e.type === 'keydown' && 'key' in e && e.key !== jodit_esm_core_constants__WEBPACK_IMPORTED_MODULE_2__.KEY_ENTER) { return; } const target = e.target; if (jodit_esm_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.isHTMLElement(target) && target.getAttribute('data-lang')) { const newValue = (0,jodit_esm_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_6__.attr)(target, 'data-lang'); this.options.onChange(newValue); this.state.active = newValue; } } __onActiveChange() { this.items.forEach((elm)=>(0,jodit_esm_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_6__.attr)(elm, 'data-active', (0,jodit_esm_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_6__.attr)(elm, 'data-lang') === this.state.active)); this.__scrollToActive(); } constructor(jodit, options){ super(jodit, options), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "options", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "state", void 0), this.options = options, this.state = { active: '' }; this.state.active = options.active; const input = new jodit_esm_core_ui_form_inputs_input_input__WEBPACK_IMPORTED_MODULE_8__.UIInput(jodit, { placeholder: jodit.i18n('Filter'), icon: 'search', onChange: this.__onChangeFilter, clearButton: true }); this.getElm('input')?.appendChild(input.container); this.__onActiveChange(); } } (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__.__decorate)([ (0,jodit_esm_core_decorators__WEBPACK_IMPORTED_MODULE_3__.debounce)() ], UITranslateList.prototype, "__onChangeFilter", null); (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__.__decorate)([ (0,jodit_esm_core_decorators__WEBPACK_IMPORTED_MODULE_3__.watch)(':afterOpen') ], UITranslateList.prototype, "__scrollToActive", null); (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__.__decorate)([ (0,jodit_esm_core_decorators__WEBPACK_IMPORTED_MODULE_3__.watch)([ 'container:click', 'container:keydown' ]) ], UITranslateList.prototype, "onClickItem", null); (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__.__decorate)([ (0,jodit_esm_core_decorators__WEBPACK_IMPORTED_MODULE_3__.watch)('state.active'), (0,jodit_esm_core_decorators__WEBPACK_IMPORTED_MODULE_3__.debounce)() ], UITranslateList.prototype, "__onActiveChange", null); UITranslateList = (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__.__decorate)([ jodit_esm_core_decorators__WEBPACK_IMPORTED_MODULE_3__.component ], UITranslateList); /***/ }), /***/ 73098: /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ Translate: function() { return /* binding */ Translate; } /* harmony export */ }); /* harmony import */ var _swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82749); /* harmony import */ var _swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(31635); /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(20104); /* harmony import */ var _providers_google_google__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(27834); /* harmony import */ var _ui_settings_settings__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(33124); /* harmony import */ var _replace_text_fragments__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(73534); /* harmony import */ var jodit_esm_core_decorators__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(65478); /* harmony import */ var jodit_esm_core_helpers_checker_is_function__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(23282); /* harmony import */ var jodit_esm_core_helpers_checker_is_string__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(70799); /* harmony import */ var jodit_esm_core_helpers_utils_assert__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(38837); /* harmony import */ var jodit_esm_core_helpers_utils_default_language__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(96325); /* harmony import */ var jodit_esm_core_plugin__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(50911); /* harmony import */ var jodit_esm_core_ui_button_button_button__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(10830); /* harmony import */ var jodit_pro_jodit_pro__WEBPACK_IMPORTED_MODULE_13__ = __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/ */ class Translate extends jodit_esm_core_plugin__WEBPACK_IMPORTED_MODULE_11__.Plugin { __getProvider() { const { provider } = this.jodit.options.translate; if ((0,jodit_esm_core_helpers_checker_is_string__WEBPACK_IMPORTED_MODULE_8__.isString)(provider)) { switch(provider){ case 'google': return new _providers_google_google__WEBPACK_IMPORTED_MODULE_3__.GoogleTranslateProvider(this.j); default: throw new Error('Unknown provider'); } } (0,jodit_esm_core_helpers_utils_assert__WEBPACK_IMPORTED_MODULE_9__.assert)((0,jodit_esm_core_helpers_checker_is_function__WEBPACK_IMPORTED_MODULE_7__.isFunction)(provider), 'Provider must be a function'); return provider(this.jodit); } afterInit(jodit) { const defaultLanguage = (0,jodit_esm_core_helpers_utils_default_language__WEBPACK_IMPORTED_MODULE_10__.defaultLanguage)(jodit.o.language, jodit_pro_jodit_pro__WEBPACK_IMPORTED_MODULE_13__.JoditPro.defaultOptions.language), language = (0,jodit_esm_core_helpers_utils_default_language__WEBPACK_IMPORTED_MODULE_10__.defaultLanguage)(jodit.o.language, defaultLanguage); const provider = this.__getProvider(); jodit.registerCommand('translateOptions', { exec: async ()=>{ let newState = this.state; const dlg = jodit.dlg(); dlg.setHeader('Translate options'); const langs = await provider.supportedLanguages(); const settings = new _ui_settings_settings__WEBPACK_IMPORTED_MODULE_4__.UITranslateSettings(dlg, this.state, { sourceList: langs.langs, targetList: langs.langs, onChange (state) { newState = state; } }); dlg.setContent(settings); dlg.setFooter([ (0,jodit_esm_core_ui_button_button_button__WEBPACK_IMPORTED_MODULE_12__.Button)(jodit, 'cancel', 'Cancel').onAction(()=>dlg.close()), (0,jodit_esm_core_ui_button_button_button__WEBPACK_IMPORTED_MODULE_12__.Button)(jodit, 'ok', 'Save', 'primary').onAction(()=>{ this.state = newState; dlg.close(); }) ]); settings.bindDestruct(dlg); dlg.setSize(500, 400).open(true); }, hotkeys: jodit.o.translate.hotkeys.translateOptions }).registerCommand('translate', { exec: ()=>{ const selection = (0,_replace_text_fragments__WEBPACK_IMPORTED_MODULE_5__.getSelectionFragments)(jodit).filter((fragment)=>fragment.text.trim().length > 0); if (!selection.length) { jodit.message.error('Select text for translate'); return; } const source = !this.state.sourceLang || this.state.sourceLang === 'auto' ? language : this.state.sourceLang; const target = this.state.targetLang; return Promise.all(selection.map((fragment)=>{ provider.translate(fragment.text, source, target).then((response)=>{ fragment.replace(response.text); }).catch((error)=>{ jodit.message.error((0,jodit_esm_core_helpers_checker_is_string__WEBPACK_IMPORTED_MODULE_8__.isString)(error) ? error : error.message); }); })).then(()=>{ jodit.synchronizeValues(); }); }, hotkeys: jodit.o.translate.hotkeys.translateSelection }); } beforeDestruct(jodit) {} constructor(...args){ super(...args), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "buttons", [ { name: 'translate.translate', group: 'insert' } ]), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "state", { sourceLang: this.jodit.o.translate.defaultSourceLang || 'en', targetLang: this.jodit.o.translate.defaultTargetLang }); } } (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(Translate, "requires", [ 'license' ]); (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__.__decorate)([ jodit_esm_core_decorators__WEBPACK_IMPORTED_MODULE_6__.persistent ], Translate.prototype, "state", void 0); jodit_pro_jodit_pro__WEBPACK_IMPORTED_MODULE_13__.JoditPro.plugins.add('translate', Translate); /***/ }), /***/ 73534: /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ getSelectionFragments: function() { return /* binding */ getSelectionFragments; } /* harmony export */ }); /* harmony import */ var jodit_esm_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2748); function getSelectionFragments(jodit) { const result = []; const selection = jodit.s.expandSelection().sel; if (!selection || selection.rangeCount === 0 || selection.isCollapsed) { return result; } jodit.s.range.commonAncestorContainer.normalize(); const range = jodit.s.range; const { commonAncestorContainer, startContainer, endContainer, startOffset, endOffset } = range; if (startContainer === endContainer) { if (jodit_esm_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isText(startContainer)) { return [ replaceTextNode(startContainer, startOffset, endOffset) ]; } // One child selected exactly if (endOffset - startOffset === 1) { const childNode = startContainer.childNodes[startOffset]; if (jodit_esm_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isText(childNode)) { return [ replaceTextNode(childNode, 0, childNode.nodeValue.length) ]; } return [ replaceElementNode(childNode) ]; } // Whole container contents selected if (startOffset === 0 && startContainer.childNodes.length === endOffset) { return [ replaceElementNode(startContainer) ]; } // Range spans multiple children of the same container for(let i = startOffset; i < endOffset; i++){ const childNode = startContainer.childNodes[i]; if (jodit_esm_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isText(childNode)) { result.push(replaceTextNode(childNode, 0, childNode.nodeValue.length)); } else { result.push(replaceElementNode(childNode)); } } return result; } const allContainedEls = new Set(); const walker = jodit.ed.createTreeWalker(commonAncestorContainer, NodeFilter.SHOW_ALL, { acceptNode: (n)=>{ if (!range.intersectsNode(n)) return NodeFilter.FILTER_REJECT; if (jodit_esm_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.closest(n, (el)=>el && allContainedEls.has(el), commonAncestorContainer)) { return NodeFilter.FILTER_REJECT; } return NodeFilter.FILTER_ACCEPT; } }); let nextNode = walker.nextNode(); while(nextNode){ if (jodit_esm_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isElement(nextNode) && fullyContains(range, nextNode)) { allContainedEls.add(nextNode); result.push(replaceElementNode(nextNode)); } else if (jodit_esm_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isText(nextNode) && fullyContains(range, nextNode)) { result.push(replaceTextNode(nextNode, 0, nextNode.nodeValue.length)); } else if (jodit_esm_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isText(nextNode)) { let sOffset = 0; let eOffset = nextNode.nodeValue.length; if (nextNode === startContainer) { sOffset = startOffset; } if (nextNode === endContainer) { eOffset = endOffset; } result.push(replaceTextNode(nextNode, sOffset, eOffset)); } nextNode = walker.nextNode(); } return result; } const fullyContains = (r, node)=>{ const nr = document.createRange(); // For containment, we want the node’s *contents* try { nr.selectNodeContents(node); } catch { nr.selectNode(node); } return r.compareBoundaryPoints(Range.START_TO_START, nr) <= 0 && r.compareBoundaryPoints(Range.END_TO_END, nr) >= 0; }; function replaceTextNode(node, start, end) { const text = node.nodeValue.slice(start, end); return { text, replace: (newText)=>{ node.nodeValue = node.nodeValue.slice(0, start) + newText + node.nodeValue.slice(end); } }; } function replaceElementNode(node) { const el = node; return { text: el.innerHTML, replace: (newHTML)=>{ el.innerHTML = newHTML; } }; } /***/ }), /***/ 74922: /***/ (function(module) { module.exports = "<svg viewBox=\"0 0 48 48\" xmlns=\"http://www.w3.org/2000/svg\"> <path d=\"M13.98 22L6 30l7.98 8v-6H28v-4H13.98v-6zM42 18l-7.98-8v6H20v4h14.02v6L42 18z\"/> <path d=\"M0 0h48v48H0z\" fill=\"none\"/> </svg>" /***/ }), /***/ 80942: /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ languages: function() { return /* binding */ languages; } /* harmony export */ }); /*! * 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/ */ const languages = { Afrikaans: 'af', Albanian: 'sq', Amharic: 'am', Arabic: 'ar', Armenian: 'hy', 'Assamese*': 'as', 'Aymara*': 'ay', Azerbaijani: 'az', 'Bambara*': 'bm', Basque: 'eu', Belarusian: 'be', Bengali: 'bn', 'Bhojpuri*': 'bho', Bosnian: 'bs', Bulgarian: 'bg', Catalan: 'ca', Cebuano: 'ceb', 'Chinese (Simplified)': 'zh-CN', 'Chinese (Traditional)': 'zh-TW', Corsican: 'co', Croatian: 'hr', Czech: 'cs', Danish: 'da', 'Dhivehi*': 'dv', 'Dogri*': 'doi', Dutch: 'nl', English: 'en', Esperanto: 'eo', Estonian: 'et', 'Ewe*': 'ee', 'Filipino (Tagalog)': 'fil', Finnish: 'fi', French: 'fr', Frisian: 'fy', Galician: 'gl', Georgian: 'ka', German: 'de', Greek: 'el', 'Guarani*': 'gn', Gujarati: 'gu', 'Haitian Creole': 'ht', Hausa: 'ha', Hawaiian: 'haw', Hebrew: 'he', Hindi: 'hi', Hmong: 'hmn', Hungarian: 'hu', Icelandic: 'is', Igbo: 'ig', 'Ilocano*': 'ilo', Indonesian: 'id', Irish: 'ga', Italian: 'it', Japanese: 'ja', Kannada: 'kn', Kazakh: 'kk', Khmer: 'km', Kinyarwanda: 'rw', 'Konkani*': 'gom', Korean: 'ko', 'Krio*': 'kri', Kurdish: 'ku', 'Kurdish (Sorani)*': 'ckb', Kyrgyz: 'ky', Lao: 'lo', Latin: 'la', Latvian: 'lv', 'Lingala*': 'ln', Lithuanian: 'lt', 'Luganda*': 'lg', Luxembourgish: 'lb', Macedonian: 'mk', 'Maithili*': 'mai', Malagasy: 'mg', Malay: 'ms', Malayalam: 'ml', Maltese: 'mt', Maori: 'mi', Marathi: 'mr', 'Meiteilon (Manipuri)*': 'mni-Mtei', Mizo: 'lus', Mongolian: 'mn', 'Myanmar (Burmese)': 'my', Nepali: 'ne', Norwegian: 'no', 'Nyanja (Chichewa)': 'ny', 'Odia (Oriya)': 'or', 'Oromo*': 'om', Pashto: 'ps', Persian: 'fa', Polish: 'pl', Portuguese: 'pt', Punjabi: 'pa', 'Quechua*': 'qu', Romanian: 'ro', Russian: 'ru', Samoan: 'sm', 'Sanskrit*': 'sa', 'Scots Gaelic': 'gd', 'Sepedi*': 'nso', Serbian: 'sr', Sesotho: 'st', Shona: 'sn', Sindhi: 'sd', 'Sinhala (Sinhalese)': 'si', Slovak: 'sk', Slovenian: 'sl', Somali: 'so', Spanish: 'es', Sundanese: 'su', Swahili: 'sw', Swedish: 'sv', 'Tagalog (Filipino)': 'tl', Tajik: 'tg', Tamil: 'ta', Tatar: 'tt', Telugu: 'te', Thai: 'th', 'Tigrinya*': 'ti', 'Tsonga*': 'ts', Turkish: 'tr', Turkmen: 'tk', 'Twi (Akan)*': 'ak', Ukrainian: 'uk', Urdu: 'ur', Uyghur: 'ug', Uzbek: 'uz', Vietnamese: 'vi', Welsh: 'cy', Xhosa: 'xh', Yiddish: 'yi', Yoruba: 'yo', Zulu: 'zu' }; /***/ }) }, /******/ function(__webpack_require__) { // webpackRuntimeModules /******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); } /******/ var __webpack_exports__ = (__webpack_exec__(73098)); /******/ return __webpack_exports__; /******/ } ]); });