jodit-pro
Version:
PRO Version of Jodit Editor
761 lines (691 loc) • 31 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
*/
(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__) {
;
/* 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__) {
;
/* 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__) {
;
/* 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__) {
;
/* 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__) {
;
__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__) {
;
/* 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__) {
;
/* 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__;
/******/ }
]);
});