diff --git a/scripts/user-notes-sanitize.js b/scripts/user-notes-sanitize.js new file mode 100644 index 0000000..9b3bea7 --- /dev/null +++ b/scripts/user-notes-sanitize.js @@ -0,0 +1,211 @@ +const USER_NOTES_ALLOWED_TAGS = new Set([ + "A", + "B", + "BLOCKQUOTE", + "BR", + "CAPTION", + "CODE", + "COL", + "COLGROUP", + "DIV", + "EM", + "H1", + "H2", + "H3", + "H4", + "H5", + "H6", + "HR", + "I", + "LI", + "OL", + "P", + "PRE", + "S", + "SPAN", + "STRONG", + "SUB", + "SUP", + "TABLE", + "TBODY", + "TD", + "TFOOT", + "TH", + "THEAD", + "TR", + "U", + "UL" +]); + +const USER_NOTES_ALLOWED_ATTRIBUTES = new Set([ + "class", + "colspan", + "href", + "rel", + "rowspan", + "style", + "target", + "title" +]); + +const USER_NOTES_ALLOWED_CSS_PROPERTIES = new Set([ + "background-color", + "border", + "border-bottom", + "border-color", + "border-left", + "border-radius", + "border-right", + "border-style", + "border-top", + "border-width", + "color", + "font-family", + "font-size", + "font-style", + "font-weight", + "margin-left", + "padding", + "text-align", + "text-decoration" +]); + +function userNotesSanitizeStyle(styleValue) { + const safeRules = []; + + for (const rule of String(styleValue ?? "").split(";")) { + const [rawProperty, ...rawValueParts] = rule.split(":"); + + if (!rawProperty || rawValueParts.length === 0) { + continue; + } + + const property = rawProperty.trim().toLowerCase(); + const value = rawValueParts.join(":").trim(); + + if (!USER_NOTES_ALLOWED_CSS_PROPERTIES.has(property)) { + continue; + } + + const lowered = value.toLowerCase(); + + if ( + lowered.includes("url(") || + lowered.includes("expression(") || + lowered.includes("javascript:") || + lowered.includes("data:") || + lowered.includes("@import") || + lowered.includes("behavior:") + ) { + continue; + } + + safeRules.push(`${property}: ${value}`); + } + + return safeRules.join("; "); +} + +function userNotesIsSafeHref(value) { + const href = String(value ?? "").trim(); + + if (!href) { + return false; + } + + if (href.startsWith("#")) { + return true; + } + + try { + const url = new URL(href, window.location.origin); + return ["http:", "https:", "mailto:"].includes(url.protocol); + } catch (_err) { + return false; + } +} + +function userNotesSanitizeElement(element) { + if (!USER_NOTES_ALLOWED_TAGS.has(element.tagName)) { + const text = document.createTextNode(element.textContent ?? ""); + element.replaceWith(text); + return; + } + + for (const attribute of [...element.attributes]) { + const name = attribute.name.toLowerCase(); + const value = attribute.value; + + if (name.startsWith("on")) { + element.removeAttribute(attribute.name); + continue; + } + + if (!USER_NOTES_ALLOWED_ATTRIBUTES.has(name)) { + element.removeAttribute(attribute.name); + continue; + } + + if (name === "href") { + if (!userNotesIsSafeHref(value)) { + element.removeAttribute(attribute.name); + } else { + element.setAttribute("rel", "noopener noreferrer"); + element.setAttribute("target", "_blank"); + } + + continue; + } + + if (name === "target" && value !== "_blank") { + element.removeAttribute(attribute.name); + continue; + } + + if (name === "style") { + const sanitizedStyle = userNotesSanitizeStyle(value); + + if (sanitizedStyle) { + element.setAttribute("style", sanitizedStyle); + } else { + element.removeAttribute(attribute.name); + } + } + } +} + +export function userNotesSanitizeHtml(html) { + const template = document.createElement("template"); + template.innerHTML = String(html ?? ""); + + for (const element of [...template.content.querySelectorAll("*")]) { + userNotesSanitizeElement(element); + } + + return template.innerHTML.replace(/
/gi, "
"); +} + +export function userNotesEscapePlainTextAsHtml(text) { + const div = document.createElement("div"); + div.textContent = String(text ?? ""); + + return div.innerHTML.replace(/\n/g, "
"); +} + +export function userNotesLooksLikeHtml(value) { + return /<\/?[a-z][\s\S]*>/i.test(String(value ?? "")); +} + +export function userNotesNormalizeStoredNotesForEditor(value) { + const content = String(value ?? ""); + + if (!content) { + return ""; + } + + if (userNotesLooksLikeHtml(content)) { + return userNotesSanitizeHtml(content); + } + + return userNotesEscapePlainTextAsHtml(content); +} \ No newline at end of file diff --git a/scripts/user-notes-window.js b/scripts/user-notes-window.js index 2090b60..a4d3361 100644 --- a/scripts/user-notes-window.js +++ b/scripts/user-notes-window.js @@ -18,6 +18,11 @@ import { userNotesApplyWindowSettings } from "./user-notes-settings.js"; +import { + userNotesNormalizeStoredNotesForEditor, + userNotesSanitizeHtml +} from "./user-notes-sanitize.js"; + let userNotesSaveTimer = null; export function userNotesSetStatus(text) { @@ -35,7 +40,7 @@ export function userNotesDebouncedSave(value) { userNotesSetStatus("Ungespeichert …"); userNotesSaveTimer = window.setTimeout(() => { - userNotesSaveNotes(value); + userNotesSaveNotes(userNotesSanitizeHtml(value)); userNotesSetStatus("Gespeichert"); }, 250); } @@ -241,6 +246,144 @@ export function userNotesMakeDraggable(win) { }); } +function userNotesGetEditorValue(win) { + const editor = win.__userNotesEditor; + + if (editor) { + return userNotesSanitizeHtml(editor.value); + } + + const textarea = win.querySelector(".user-notes-editor"); + + if (textarea instanceof HTMLTextAreaElement) { + return userNotesSanitizeHtml(textarea.value); + } + + return ""; +} + +function userNotesDestroyEditor(win) { + const editor = win.__userNotesEditor; + + if (editor && typeof editor.destruct === "function") { + editor.destruct(); + } + + win.__userNotesEditor = null; +} + +function userNotesInsertSymbol(editor, symbol) { + editor.s.insertHTML(`${symbol} `); +} + +function userNotesCreateEditor(win, editorElement) { + const initialContent = userNotesNormalizeStoredNotesForEditor(userNotesLoadNotes()); + + if (!globalThis.Jodit) { + console.warn("User Notes | Jodit is not available. Falling back to plain textarea."); + + editorElement.value = initialContent + .replace(//gi, "\n") + .replace(/<\/p>/gi, "\n") + .replace(/<[^>]+>/g, ""); + + editorElement.addEventListener("input", event => { + userNotesDebouncedSave(event.currentTarget.value); + }); + + return null; + } + + const editor = globalThis.Jodit.make(editorElement, { + height: "100%", + minHeight: 150, + toolbarAdaptive: false, + askBeforePasteHTML: false, + askBeforePasteFromWord: false, + defaultActionOnPaste: "insert_clear_html", + disablePlugins: [ + "about", + "add-new-line", + "ai-assistant", + "file", + "image", + "media", + "paste-storage", + "powered-by-jodit", + "preview", + "print", + "source", + "speech-recognize", + "video" + ], + buttons: [ + "bold", + "italic", + "underline", + "strikethrough", + "|", + "ul", + "ol", + "|", + "font", + "fontsize", + "brush", + "|", + "table", + "|", + "undo", + "redo", + "|", + { + name: "checkbox-empty", + tooltip: "Kästchen einfügen", + icon: "☐", + exec: editorInstance => userNotesInsertSymbol(editorInstance, "☐") + }, + { + name: "checkbox-checked", + tooltip: "Angehaktes Kästchen einfügen", + icon: "☑", + exec: editorInstance => userNotesInsertSymbol(editorInstance, "☑") + }, + { + name: "checkmark", + tooltip: "Haken einfügen", + icon: "✓", + exec: editorInstance => userNotesInsertSymbol(editorInstance, "✓") + }, + { + name: "crossmark", + tooltip: "Kreuz einfügen", + icon: "✗", + exec: editorInstance => userNotesInsertSymbol(editorInstance, "✗") + }, + { + name: "bordered-text", + tooltip: "Rahmen um markierten Text", + icon: "▣", + exec: editorInstance => { + const selected = editorInstance.s.html || " "; + + editorInstance.s.insertHTML( + `${selected}` + ); + } + } + ] + }); + + editor.value = initialContent; + + editor.events.on("change", () => { + userNotesDebouncedSave(editor.value); + }); + + win.__userNotesEditor = editor; + + return editor; +} + export function userNotesOpenNotes() { let win = document.getElementById(USER_NOTES_WINDOW_ID); @@ -249,7 +392,15 @@ export function userNotesOpenNotes() { userNotesRestorePosition(win); userNotesApplyWindowSettings(win); userNotesBringToFront(win); - win.querySelector("textarea")?.focus(); + + const editor = win.__userNotesEditor; + + if (editor) { + editor.focus(); + } else { + win.querySelector(".user-notes-editor")?.focus(); + } + return; } @@ -278,7 +429,7 @@ export function userNotesOpenNotes() {
- +
`; @@ -287,27 +438,23 @@ export function userNotesOpenNotes() { userNotesApplyWindowSettings(win); userNotesRestorePosition(win); - const textarea = win.querySelector(".user-notes-textarea"); + const editorElement = win.querySelector(".user-notes-editor"); - if (!(textarea instanceof HTMLTextAreaElement)) { - console.error(`${USER_NOTES_MODULE_ID} | Notes textarea could not be created.`); + if (!(editorElement instanceof HTMLTextAreaElement)) { + console.error(`${USER_NOTES_MODULE_ID} | Notes editor could not be created.`); return; } - textarea.value = userNotesLoadNotes(); - - textarea.addEventListener("input", event => { - userNotesDebouncedSave(event.currentTarget.value); - }); + userNotesCreateEditor(win, editorElement); win.querySelector(".user-notes-save")?.addEventListener("click", () => { - userNotesSaveNotes(textarea.value); + userNotesSaveNotes(userNotesGetEditorValue(win)); userNotesSetStatus("Gespeichert"); userNotesSavePosition(win); }); win.querySelector(".user-notes-close")?.addEventListener("click", () => { - userNotesSaveNotes(textarea.value); + userNotesSaveNotes(userNotesGetEditorValue(win)); userNotesSavePosition(win); win.hidden = true; }); @@ -334,7 +481,12 @@ export function userNotesOpenNotes() { userNotesMakeDraggable(win); userNotesBringToFront(win); - textarea.focus(); + + if (win.__userNotesEditor) { + win.__userNotesEditor.focus(); + } else { + editorElement.focus(); + } } export function userNotesRefreshOpenWindow() { @@ -344,15 +496,10 @@ export function userNotesRefreshOpenWindow() { return; } - const textarea = oldWin.querySelector(".user-notes-textarea"); - - if (textarea instanceof HTMLTextAreaElement) { - userNotesSaveNotes(textarea.value); - } - + userNotesSaveNotes(userNotesGetEditorValue(oldWin)); userNotesSavePosition(oldWin); - + userNotesDestroyEditor(oldWin); oldWin.remove(); userNotesOpenNotes(); -} +} \ No newline at end of file diff --git a/scripts/user-notes.js b/scripts/user-notes.js index 197ce23..e9ecd11 100644 --- a/scripts/user-notes.js +++ b/scripts/user-notes.js @@ -8,11 +8,13 @@ import { import { userNotesOpenNotes, + userNotesRefreshOpenWindow, userNotesResetPositionAndSize } from "./user-notes-window.js"; globalThis.UserNotes = { open: userNotesOpenNotes, + refresh: userNotesRefreshOpenWindow, resetPosition: userNotesResetPositionAndSize }; @@ -42,4 +44,4 @@ Hooks.on("getSceneControlButtons", controls => { "User Notes: Fehler beim Registrieren des Token-Controls." ); } -}); +}); \ No newline at end of file diff --git a/styles/user-notes-window.css b/styles/user-notes-window.css index b59dd85..ea54589 100644 --- a/styles/user-notes-window.css +++ b/styles/user-notes-window.css @@ -102,7 +102,35 @@ box-sizing: border-box; } -.user-notes-textarea { +.user-notes-content .jodit-container { + flex: 1 1 auto; + width: 100% !important; + height: 100% !important; + min-width: 0; + min-height: 0; + + box-sizing: border-box; +} + +.user-notes-content .jodit-workplace { + min-height: 0 !important; +} + +.user-notes-content .jodit-wysiwyg { + min-height: 0 !important; + background: var(--user-notes-textarea-background, rgba(255, 255, 255, 0.92)); + color: var(--user-notes-textarea-color, #111111); +} + +.user-notes-content .jodit-toolbar__box { + flex: 0 0 auto; +} + +.user-notes-content .jodit-status-bar { + display: none; +} + +.user-notes-editor { flex: 1 1 auto; width: 100%; @@ -127,7 +155,18 @@ line-height: 1.35; } -.user-notes-textarea:focus { +.user-notes-editor:focus { outline: 1px solid var(--color-border-highlight, #ff6400); outline-offset: 0; } + +.user-notes-window table { + border-collapse: collapse; + width: auto; +} + +.user-notes-window th, +.user-notes-window td { + border: 1px solid currentColor; + padding: 0.25rem 0.4rem; +} \ No newline at end of file diff --git a/vendor/jodit/CHANGELOG.md b/vendor/jodit/CHANGELOG.md new file mode 100644 index 0000000..bd1c6cc --- /dev/null +++ b/vendor/jodit/CHANGELOG.md @@ -0,0 +1,5568 @@ +# Changelog + +> **Tags:** +> +> - :boom: [Breaking Change] +> - :rocket: [New Feature] +> - :bug: [Bug Fix] +> - :memo: [Documentation] +> - :house: [Internal] +> - :nail_care: [Polish] + +## 4.12.0 + +#### :rocket: New Feature + +- Add `Jodit.configure()` static method for deep-merging partial options into global defaults without losing existing keys. Previously, overriding nested defaults like `controls` or `createAttributes` required setting each property individually. Now you can patch only the keys you need: + + ```js + // Add a button without losing existing controls + Jodit.configure({ + controls: { + myButton: { icon: 'pencil', command: 'selectall' } + } + }); + + // Partially update createAttributes + Jodit.configure({ + createAttributes: { + div: { class: 'my-class' } + } + }); + ``` + +#### :house: Internal + +- Upgrade TypeScript from 5.9 to 6.0 +- Replace `ts-node` with `tsx` for running TypeScript tooling scripts +- Add `ignoreDeprecations: "6.0"` to tsconfig files for TS 6 compatibility +- Add `declare module '*.less'` for TS 6 stricter side-effect import checks +- Fix `--update-snapshots` flag not being passed to Playwright in `make screenshots-update` + +## 4.11.15 + +#### :house: Internal + +- Add data-ref attributes to image buttons in UIImageMainTab + +## 4.11.14 + +#### :rocket: New Feature + +- Add `stream()` method to `Ajax` class for SSE (Server-Sent Events) streaming over XMLHttpRequest. Returns an `AsyncGenerator` that yields parsed `data:` fields incrementally via `onprogress`. + + ```js + const ajax = new Jodit.modules.Ajax({ + method: 'POST', + url: '/api/ai/stream', + contentType: 'application/json', + data: { prompt: 'Hello' } + }); + + try { + for await (const data of ajax.stream()) { + const event = JSON.parse(data); + editor.s.insertHTML(event.text); + } + } finally { + ajax.destruct(); + } + ``` + +#### :memo: Documentation + +- Rewrite `src/core/request/README.md` with full API reference, usage examples, SSE streaming guide, AbortController integration, and real-world patterns (FileBrowser, Uploader, plugins). + +## 4.11.12 + +#### :rocket: New Feature + +- Add `link.openInNewTabCheckboxDefaultChecked` option to set default state of "Open in new tab" checkbox when inserting a new link ([#1289](https://github.com/xdan/jodit/issues/1289)) + +#### :bug: Bug Fix + +- Fix pasting table into table cell creating invalid nesting and trailing empty paragraph ([#1314](https://github.com/xdan/jodit/issues/1314)) +- Fix font size module misbehavior in pt mode: duplicated unit display, incorrect active state, and wrong px/pt conversion ([#1197](https://github.com/xdan/jodit/issues/1197)) +- Fix focus competition between multiple editor instances in Source mode ([#1313](https://github.com/xdan/jodit/issues/1313)) +- Fix tooltip clipped by viewport when toolbar is near the bottom of the page ([#1150](https://github.com/xdan/jodit/issues/1150)) + +## 4.11.7 + +#### :rocket: New Feature + +- Implement custom highlight styling for search results ([#1343](https://github.com/xdan/jodit/issues/1343)) +- Add `backSpaceAfterDelete` event triggered after backspace operations +- Add `Dom.findFirstMatchedNode()` method for retrieving first matched node in DOM tree + +#### :nail_care: Polish + +- Improve cursor positioning in `wrapNodes` plugin after backspace +- Improve readability of selection marker queries and add focus condition check + +#### :house: Internal + +- Enhance test coverage for undo/redo, backspace, search, and other plugins + +## 4.11.6 + +#### :house: Internal + +- Release workflow now populates GitHub Release notes from CHANGELOG.md instead of relying on auto-generated notes + +## 4.11.5 + +#### :rocket: New Feature + +- `ProgressBar.showFileUploadAnimation(from?, to?)` — animated file icon that flies from a given point and fades out. Coordinates are relative to the editor container. Both `from` and `to` are optional with sensible defaults. The animation is automatically cleaned up on `destruct()`. + ```js + const editor = Jodit.make('#editor') + jodit.progressbar.showFileUploadAnimation(); + ``` + +## 4.11.4 + +#### :boom: Breaking Change + +- `.jodit-icon` `transform-origin` changed from `0 0 !important` to `var(--jd-icon-transform-origin)` (default `center`), and the `!important` flag was removed. If your layout depends on the old top-left origin, restore it via CSS: + ```css + :root { + --jd-icon-transform-origin: 0 0 !important; + } + ``` + +#### :rocket: New Feature + +- `IUIIconState` now supports `scale` property — when set, applies `transform: scale(...)` to the SVG icon element, overriding the CSS variable +- `IControlType.icon` now accepts `string | IUIIconState` — allows setting icon name, fill, iconURL, and scale directly from toolbar button config + + Per-button scale example: + ```javascript + Jodit.make('#editor', { + buttons: Jodit.atom([ + 'bold', + { + name: 'big-italic', + icon: { name: 'italic', fill: '', iconURL: '', scale: 1.5 }, + tooltip: 'Italic (large icon)' + }, + 'underline' + ]) + }); + ``` + +- CSS custom properties `--jd-icon-transform-origin` and `--jd-icon-transform-scale` for global icon scaling. Override them to resize all editor icons at once. Per-button `scale` in `IUIIconState` takes priority over the CSS variable. + + Global scale override via CSS: + ```css + :root { + --jd-icon-transform-scale: 1.3; + --jd-icon-transform-origin: center; + } + ``` + +## 4.11.2 + +#### :boom: Breaking Change + +- `cleanHTML.denyTags` default changed from `'script'` to `'script,iframe,object,embed'` — iframes, objects, and embeds are now blocked by default +- `cleanHTML.removeOnError` is deprecated in favor of `cleanHTML.removeEventAttributes` — all `on*` event handler attributes (`onerror`, `onclick`, `onload`, `onmouseover`, etc.) are now removed by default, not just `onerror` +- `cleanHTML.safeLinksTarget` is now `true` by default — links with `target="_blank"` automatically get `rel="noopener noreferrer"` +- `cleanHTML.sandboxIframesInContent` is now `true` by default — all ``; + } + + return Jodit.modules.Helpers.convertMediaUrlToVideoEmbed( + url, + size + ); + } + }, + controls: { + video: { + tooltip: 'Insert video' + } + } + }); + ``` + +## 4.2.40 + +### :bug: Bug Fix + +- [Toolbar Customization Issue When Selecting Text Inside Table Cells](https://github.com/xdan/jodit/issues/1131) +- Fixed a bug when the tooltip remained on the screen when its popup was already closed +- [Inline popup tooltips are not visible #1141](https://github.com/xdan/jodit/issues/1141) +- Fixed a bug in the Enter plugin where inside a table you had to press Enter twice to create a new row + +## 4.2.39 + +#### :house: Internal + +- Chai.js switched to ESM from version 5.0.0, which led to problems with tests inside browser. + To solve the problem, we abandoned node_modules version and switched to jsdelivr+esm + We are not removing the dependency yet, see `./test/tests/chai-loader.js` + +- Update dependencies + +```plain + @eslint/compat ^1.2.0 → ^1.2.2 + @eslint/js ^9.12.0 → ^9.14.0 + @playwright/test ^1.48.0 → ^1.48.2 + @types/karma ^6.3.8 → ^6.3.9 + @types/node ^20.16.11 → ^22.8.7 + @typescript-eslint/eslint-plugin ^8.8.1 → ^8.12.2 + @typescript-eslint/parser ^8.8.1 → ^8.12.2 + compression ^1.7.4 → ^1.7.5 + core-js ^3.38.1 → ^3.39.0 + eslint ^9.12.0 → ^9.14.0 + mini-css-extract-plugin ^2.9.1 → ^2.9.2 + mocha ^10.7.3 → ^10.8.2 + tslib ^2.7.0 → ^2.8.1 + tsx ^4.19.1 → ^4.19.2 + webpack 5.95.0 → 5.96.1 +``` + +## 4.2.38 + +### :bug: Bug Fix + +- Fixed behavior of form submit with its own validation + +## 4.2.37 + +### :bug: Bug Fix + +- [Bug: this.j.o.resizer is undefined in jodit version 4 #1166](https://github.com/xdan/jodit/issues/1166) + +## 4.2.35 + +### :bug: Bug Fix + +- [Edit Link bugg when there is a iframe #1176](https://github.com/xdan/jodit/issues/1176) + +## 4.2.34 + +### :bug: Bug Fix + +- [Bug UL and OL list not working corretly with option "enter":"BR" #1178](https://github.com/xdan/jodit/issues/1178) + +## 4.2.33 + +### :bug: Bug Fix + +- Fixed bug inside Search plugin with Highlight API. When selection was not cleared + +## 4.2.32 + +### :rocket: New Feature + +- Added option `iframeSandbox: string | null = null;` Apply the `sandbox` attribute to the iframe element. The value of the attribute is a space-separated list of directives. See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#attr-sandbox + Issue: https://github.com/xdan/jodit/issues/1186 + +```typescript +Jodit.make('#editor', { + iframe: true, + iframeSandbox: 'allow-scripts allow-same-origin' +}); +``` + +#### :house: Internal + +- Move to ESLint 9 +- Update dependencies + +```plain + @playwright/test ^1.45.0 → ^1.48.0 + @types/mocha ^10.0.7 → ^10.0.9 + @types/node ^20.14.9 → ^22.7.5 + @types/yargs ^17.0.32 → ^17.0.33 + @typescript-eslint/eslint-plugin ^7.14.1 → ^8.8.1 + @typescript-eslint/parser ^7.14.1 → ^8.8.1 + autoprefixer ^10.4.19 → ^10.4.20 + axios ^1.7.2 → ^1.7.7 + core-js ^3.37.1 → ^3.38.1 + cssnano-preset-advanced ^7.0.3 → ^7.0.6 + eslint ^8.57.0 → ^9.12.0 + eslint-plugin-import ^2.29.1 → ^2.31.0 + eslint-plugin-mocha ^10.4.3 → ^10.5.0 + eslint-plugin-prettier ^5.1.3 → ^5.2.1 + eslint-plugin-simple-import-sort ^12.1.0 → ^12.1.1 + glob ^10.4.2 → ^11.0.0 + karma ^6.4.3 → ^6.4.4 + mini-css-extract-plugin ^2.9.0 → ^2.9.1 + mocha ^10.5.1 → ^10.7.3 + node-jq ^4.4.0 → ^6.0.1 + postcss >=8.4.38 → >=8.4.47 + prettier ^3.3.2 → ^3.3.3 + stylelint ^16.6.1 → ^16.10.0 + stylelint-prettier ^5.0.0 → ^5.0.2 + tslib ^2.6.3 → ^2.7.0 + typescript ^5.5.2 → ^5.6.3 + webpack 5.92.1 → 5.95.0 + webpack-dev-middleware ^7.2.1 → ^7.4.2 + webpack-dev-server ^5.0.4 → ^5.1.0 +``` + +## 4.2.28 + +### :rocket: New Feature + +- Added option `countTextSpaces: boolean = false;` Issue https://github.com/xdan/jodit/issues/1144 + +```typescript +Jodit.make('#editor', { + countTextSpaces: true +}); +``` + +### :bug: Bug Fix + +- [Menu Item Popups Hidden when Jodit is inside an element #1146](https://github.com/xdan/jodit/issues/1146) + +#### :house: Internal + +- Use node 20 for build +- Update dependencies + +```plain + @playwright/test ^1.43.1 → ^1.45.0 + @types/mocha ^10.0.6 → ^10.0.7 + @types/node ^20.12.5 → ^20.14.9 + @typescript-eslint/eslint-plugin ^7.5.0 → ^7.14.1 + @typescript-eslint/parser ^7.5.0 → ^7.14.1 + axios ^1.6.8 → ^1.7.2 + core-js ^3.36.1 → ^3.37.1 + css-loader ^7.0.0 → ^7.1.2 + css-minimizer-webpack-plugin ^6.0.0 → ^7.0.0 + cssnano-preset-advanced ^6.1.2 → ^7.0.3 + eslint-plugin-mocha ^10.4.1 → ^10.4.3 + eslint-plugin-simple-import-sort ^12.0.0 → ^12.1.0 + eslint-plugin-tsdoc ^0.2.17 → ^0.3.0 + glob ^10.3.12 → ^10.4.2 + mini-css-extract-plugin ^2.8.1 → ^2.9.0 + mocha ^10.4.0 → ^10.5.1 + node-jq ^4.3.1 → ^4.4.0 + prettier ^3.2.5 → ^3.3.2 + style-loader ^3.3.4 → ^4.0.0 + stylelint ^16.3.1 → ^16.6.1 + stylelint-config-standard ^36.0.0 → ^36.0.1 + tslib ^2.6.2 → ^2.6.3 + typescript ^5.4.5 → ^5.5.2 + webpack 5.91.0 → 5.92.1 +``` + +## 4.2.26 + +### :bug: Bug Fix + +- [Table dragging creates an issue #1128](https://github.com/xdan/jodit/issues/1128) +- AddNewLine plugin shown incorrect position after CleanHTML plugin +- Inserting a new table - added extra spaces before the table +- When merging multiple table cells after the TR tag, the CleanHTML plugin added `
` +- [Inline popup tooltips are not visible #1141](https://github.com/xdan/jodit/issues/1141) +- [space key issues #1143](https://github.com/xdan/jodit/issues/1143) + +## 4.2.25 + +### :rocket: New Feature + +- [add ukrainian localization #1142](https://github.com/xdan/jodit/pull/1142) + +## 4.2.22 + +### :bug: Bug Fix + +- [Try to fix Unable to use Speech Recognition #1139](https://github.com/xdan/jodit/issues/1139) + +## 4.2.21 + +#### :house: Internal + +- Improved appearance of tabs +- Fixed a bug when hovering over a button. The tooltip sometimes did not disappear + +## 4.2.19 + +- Fixed the lag between setting the activity to a list item when opening it. + +## 4.2.18 + +#### :house: Internal + +- When connecting third-party scripts, two attributes are now added to the script tag. + [Jodit not hiding the raw textarea #1086](https://github.com/xdan/jodit/issues/1086) + + ```json + { + "crossorigin": "anonymous", + "referrerpolicy": "no-referrer" + } + ``` + + - [crossorigin](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/crossorigin) + - [referrerpolicy](https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement/referrerPolicy) + +## 4.2.17 + +#### :house: Internal + +- Removed conversion of list arrays into objects when creating a button in the toolbar. Previously the code looked like: + + ```js + Jodit.make('#editor', { + constrols: { + lineHeight: { + list: [1, 1.1, 1.2, 1.3, 1.4, 1.5, 2] + } + } + }); + ``` + + was implicitly transformed into an object of the form: + + ```js + Jodit.make('#editor', { + constrols: { + lineHeight: { + list: { + 1: '1', + 2: '2', + 1.1: '1.1', + 1.2: '1.2', + 1.3: '1.3', + 1.4: '1.4', + 1.5: '1.5' + } + } + } + }); + ``` + + Thus, due to the nature of integer keys, the order of the elements was lost. Now such a transformation does not occur. + In your code you clearly need to check what came into `list` and if it is an array, then use it as is. + + ```js + Jodit.make('#editor', { + constrols: { + lineHeight: { + list: [1, 1.1, 1.2, 1.3, 1.4, 1.5, 2], + update(editor: IJodit, button): boolean { + if (Array.isArray(button.control)) { + // Work with array + } + } + } + } + }); + ``` + +### :bug: Bug Fix + +- [Backspacing in the editor with preadded styling or added styling is not retained #1120](https://github.com/xdan/jodit/issues/1120) +- [missing generation of inferface.js and interface.d.ts in esm build path esm\plugins\image-properties #1117](https://github.com/xdan/jodit/issues/1117) + +## 4.2.13 + +### :bug: Bug Fix + +- [Table inline popup buttons issue #1129](https://github.com/xdan/jodit/issues/1129) + +## 4.2.8 + +### :rocket: New Feature + +- Controls have a new field `isVisible(editor: IJodit): boolean`, which allows you to completely hide the button in some situations. + +```typescript +Jodit.make('#editor', { + controls: { + undo: { + isVisible(editor: IJodit): boolean { + return editor.history.canUndo(); + } + } + } +}); +``` + +## 4.2.1 + +### :bug: Bug Fix + +- [Size of picture is not correct when changin a picture #1107](https://github.com/xdan/jodit/issues/1107) +- [Selection by triple click removes close tag + open tag of next paragraph #1101](https://github.com/xdan/jodit/issues/1101) + Added options `select.normalizeTripleClick: boolean = true` to normalize selection after triple click + For disable this behavior set `select.normalizeTripleClick: false` + + ```js + Jodit.make('#editor', { + select: { + normalizeTripleClick: false + } + }); + ``` + +## 4.1.12 + +#### :boom: Breaking Change + +- Removed the default export from the watch decorator. We refrain from using default exports in this project (refer to CONTRIBUTING.md for more details). + +Before: + +```js +import watch, { watch as watch2 } from 'jodit/core/decorators/watch/watch'; +``` + +Now only: + +```js +import { watch } from 'jodit/core/decorators/watch/watch'; +``` + +### :bug: Bug Fix + +- [FileBrowser - Permissions Incorrect during Open of Dialog #1095](https://github.com/xdan/jodit/issues/1095) + +## 4.1.11 + +- Fixed a bug within the FileBrowser module. The issue was due to the import order; the Ajax configuration was applied after the module had been initialized. + +## 4.1.9 + +- Added `AbortError` to the `Jodit.modules` namespace. This is a custom error that is thrown when the user cancels the operation. + +```js +const jodit = Jodit.make('#editor'); +jodit.async + .promise((res, rej) => fetch('./test.php').then(res).catch(rej)) + .catch(error => { + if (Jodit.modules.Helpers.isAbortError(error)) { + console.log('Operation was aborted'); + } + }); +jodit.destruct(); +``` + +## 4.1.7 + +- [Wrong generation of es5 bundle - polyfills missing #1105](https://github.com/xdan/jodit/issues/1105) + +## 4.1.1 + +- Added plugin AI Assistant. https://github.com/xdan/jodit/pull/1088 Thanks @huizarmx + +#### :house: Internal + +- Update dependencies + +```plain + +@tsconfig/node18 ^18.2.2 → ^18.2.4 +@types/node ^20.11.25 → ^20.12.2 +@typescript-eslint/eslint-plugin ^7.1.1 → ^7.5.0 +@typescript-eslint/parser ^7.1.1 → ^7.5.0 +autoprefixer ^10.4.18 → ^10.4.19 +axios ^1.6.7 → ^1.6.8 +core-js ^3.36.0 → ^3.36.1 +cssnano-preset-advanced ^6.1.0 → ^6.1.2 +eslint-plugin-mocha ^10.4.0 → ^10.4.1 +glob ^10.3.10 → ^10.3.12 +mocha ^10.3.0 → ^10.4.0 +open ^10.0.4 → ^10.1.0 +postcss >=8.4.35 → >=8.4.38 +stylelint ^16.2.1 → ^16.3.1 +typescript ^5.4.2 → ^5.4.3 +webpack 5.90.3 → 5.91.0 +webpack-dev-middleware ^7.0.0 → ^7.2.0 +webpack-dev-server ^5.0.2 → ^5.0.4 +``` + +- Update dependencies + +```plain +@types/node ^20.10.7 → ^20.11.25 +@typescript-eslint/eslint-plugin ^6.18.0 → ^7.1.1 +@typescript-eslint/parser ^6.18.0 → ^7.1.1 +autoprefixer ^10.4.16 → ^10.4.18 +axios ^1.6.5 → ^1.6.7 +core-js ^3.35.0 → ^3.36.0 +css-loader ^6.8.1 → ^6.10.0 +css-minimizer-webpack-plugin ^5.0.1 → ^6.0.0 +cssnano-preset-advanced ^6.0.3 → ^6.1.0 +eslint ^8.56.0 → ^8.57.0 +eslint-plugin-mocha ^10.2.0 → ^10.4.0 +eslint-plugin-prettier ^5.1.2 → ^5.1.3 +karma ^6.4.2 → ^6.4.3 +karma-firefox-launcher ^2.1.2 → ^2.1.3 +less-loader ^11.1.4 → ^12.2.0 +mini-css-extract-plugin ^2.7.6 → ^2.8.1 +mocha ^10.2.0 → ^10.3.0 +node-jq ^4.2.2 → ^4.3.1 +open ^10.0.3 → ^10.0.4 +postcss >=8.4.33 → >=8.4.35 +postcss-loader ^7.3.4 → ^8.1.1 +prettier ^3.1.1 → ^3.2.5 +style-loader ^3.3.3 → ^3.3.4 +stylelint ^16.1.0 → ^16.2.1 +typescript ^5.3.3 → ^5.4.2 +webpack 5.89.0 → 5.90.3 +webpack-dev-server ^4.15.1 → ^5.0.2 +webpack-hot-middleware ^2.26.0 → ^2.26.1 +``` + +## 4.0.15 + +- Fixed bug in `beforeInit` hook. If the hook returned a promise, and the editor was destroyed after that, + then after resolving the promise, the editor continued the initialization procedure + +## 4.0.8 + +- Fixed a bug in the plugins module when extra plugins did not cause the editor to be redrawn after initialization + +## 4.0.7 + +- Added `search.useCustomHighlightAPI` option to the "Search" plugin to use the built-in text highlighting API https://developer.mozilla.org/en-US/docs/Web/API/CSS_Custom_Highlight_API + If the browser does not support this API, then standard text highlighting will be used by wrapping it in the `` tag. +- Added Finnish (Suomi) translation https://github.com/xdan/jodit/pull/1081 + +## 4.0.2 + +- [BUG: FileBrowser Context Menu Grows Infinitely](https://github.com/xdan/jodit/issues/1059) + +## 4.0.1 + +- [See changelog](https://github.com/xdan/jodit/releases) + +## 4.0.0-beta.121 + +#### :boom: Breaking Change + +- All static methods of the `Jodit.modules.Table` module have been removed and replaced with methods of an instance of the `Table` class with the same name. + + ```js + const jodit = Jodit.make('#editor'); + + // Before + Jodit.modules.Table.mergeSelected(jodit.editor.firstChild, jodit); + + // Now + jodit.getInstance('Table').mergeSelected(jodit.editor.firstChild); + ``` + +- `.jodit-filebrowser` class prefix was renamed to `.jodit-file-browser` +- CSS key `--color-background-filebrowser-folders` was removed from global scope. + +### :bug: Bug Fix + +- [Folder renames not working if "space" is added in folder name #1054](https://github.com/xdan/jodit/issues/1054) + +#### :house: Internal + +- Update dependencies + + ```plain + stylelint-config-idiomatic-order v9.0.0 → v10.0.0 + stylelint-config-standard ^34.0.0 → ^36.0.0 + stylelint-prettier ^4.1.0 → ^4.4.0 + terser-webpack-plugin ^5.3.9 → ^5.3.10 + ts-node ^10.9.1 → ^10.9.2 + typescript ^5.3.2 → ^5.3.3 + webpack-dev-middleware ^6.1.1 → ^7.0.0 + webpack-hot-middleware ^2.25.4 → ^2.26.0 + ``` + +### :rocket: New Feature + +- The `Jodit.getInstance` method can accept a module constructor instead of its name: + + ```js + const jodit = Jodit.make('#editor'); + const table = jodit.getInstance(Jodit.modules.Table); + const table2 = jodit.getInstance('Table'); // It still works + console.log(table === table2); // true + ``` + +## 4.0.0-beta.119 + +- [Even though I disable some editor plugins, they are displayed on mobile #243](https://github.com/jodit/jodit-react/issues/243) + +## 4.0.0-beta.118 + +### :bug: Bug Fix + +- [fix import #1046](https://github.com/xdan/jodit/pull/1046) + +#### :house: Internal + +- Fixed colors for selected toolbar elements in the dark theme + +## 4.0.0-beta.117 + +### :bug: Bug Fix + +- [Marking a line with shift "pos1 or end" and pressing del removes too much and destroys structure #1038](https://github.com/xdan/jodit/issues/1038) + +## 4.0.0-beta.108 + +### :bug: Bug Fix + +- [Comment block in the template throws error "Cannot read properties of undefined (reading 'font-weight')" #1044](https://github.com/xdan/jodit/issues/1044) + +#### :house: Internal + +```plain +@types/ace ^0.0.50 → ^0.0.52 +@types/fs-extra ^11.0.3 → ^11.0.4 +@types/karma ^6.3.6 → ^6.3.8 +@types/node ^20.8.7 → ^20.10.3 +@types/postcss-css-variables ^0.18.2 → ^0.18.3 +@types/yargs ^17.0.29 → ^17.0.32 +@typescript-eslint/eslint-plugin ^6.8.0 → ^6.13.2 +@typescript-eslint/parser ^6.8.0 → ^6.13.2 +axios ^1.5.1 → ^1.6.2 +core-js ^3.33.1 → ^3.34.0 +eslint ^8.52.0 → ^8.55.0 +eslint-config-prettier ^9.0.0 → ^9.1.0 +eslint-plugin-import ^2.28.1 → ^2.29.0 +node-jq ^4.0.1 → ^4.2.2 +postcss >=8.4.31 → >=8.4.32 +prettier ^3.0.3 → ^3.1.0 +stylelint-prettier ^4.0.2 → ^4.1.0 +ts-loader ^9.5.0 → ^9.5.1 +typescript ^5.2.2 → ^5.3.2 +``` + +## 4.0.0-beta.108 + +- Fixed a bug in the UITextArea UI component. Instead of adding a textarea element, it was incorrectly adding an input element. + +## 4.0.0-beta.107 + +### :rocket: New Feature + +- Introduced the pasteExcludeStripTags option. This is a list of tags that won't be removed from the pasted HTML + when in INSERT_AS_TEXT mode. By default, it includes `['br', 'hr']`. + See https://github.com/xdan/jodit/issues/1033 for more details. + + ```js + Jodit.make('#editor', { + pasteExcludeStripTags: ['br', 'style'] + }); + ``` + +- [copy pasting twitter or istagram or etc. not as expected #1032](https://github.com/xdan/jodit/issues/1032) + +## 4.0.0-beta.97 + +#### :house: Internal + +- Calls to setTimout without the async module have been removed from autotests, and most of the asynchronous tests have been rewritten from done to async/await + +## 4.0.0-beta.96 + +#### :boom: Breaking Change + +- Removed `Jodit.modules.Helpers.val` method + +## 4.0.0-beta.95 + +### :bug: Bug Fix + +- Fixed the logic of the file upload module. When HTTP errors were simply ignored. + +## 4.0.0-beta.93 + +### :bug: Bug Fix + +- Fixed a bug with the `editor.selection.setCursorIn(box)` method, which could set the cursor inside a
. + +## 4.0.0-beta.91 + +### :bug: Bug Fix + +- Issues with ESM #1029, icons were not included in the esm build + Issue: https://github.com/xdan/jodit/issues/1029 + +- Use node 18.17.1 for build +- Update + +``` +@types/ace ^0.0.49 → ^0.0.50 +@types/fs-extra ^11.0.2 → ^11.0.3 +@types/karma ^6.3.5 → ^6.3.6 +@types/node ^20.8.3 → ^20.8.7 +@types/postcss-css-variables ^0.18.1 → ^0.18.2 +@types/yargs ^17.0.28 → ^17.0.29 +@typescript-eslint/eslint-plugin ^6.7.4 → ^6.8.0 +@typescript-eslint/parser ^6.7.4 → ^6.8.0 +core-js ^3.33.0 → ^3.33.1 +eslint ^8.51.0 → ^8.52.0 +eslint-plugin-prettier ^5.0.0 → ^5.0.1 +lint-staged ^14.0.1 → ^15.0.2 +stylelint ^15.10.3 → ^15.11.0 +webpack 5.88.2 → 5.89.0 +``` + +## 4.0.0-beta.89 + +### :rocket: New Feature + +- Improved UX of dialog boxes. Added two options `closeOnEsc` defaulting to `true` and `closeOnClickOverlay` defaulting to `false`. + ```js + Jodit.make('#editor', { + dialog: { + closeOnEsc: true, + closeOnClickOverlay: false + } + }); + // or + const editor = Jodit.make('#editor'); + editor.alert('Hello world'); // closeOnEsc = true, closeOnClickOverlay = true + editor + .dlg({ + closeOnEsc: false, + closeOnClickOverlay: true + }) + .open(); + ``` + +## 4.0.0-beta.88 + +### :bug: Bug Fix + +- Fixed a bug where the cursor, when positioned at the start of the h1 tag and a style was applied to the h1 tag, would move up one tag level. +- [Firefox specific execCommands no longer needed #1028](https://github.com/xdan/jodit/issues/1028) + +## 4.0.0-beta.78 + +- Update + +``` + @types/ace ^0.0.48 → ^0.0.49 + @types/fs-extra ^11.0.1 → ^11.0.2 + @types/karma ^6.3.4 → ^6.3.5 + @types/node ^20.5.7 → ^20.8.3 + @types/postcss-css-variables ^0.18.0 → ^0.18.1 + @types/yargs ^17.0.24 → ^17.0.28 + @typescript-eslint/eslint-plugin ^6.5.0 → ^6.7.4 + @typescript-eslint/parser ^6.5.0 → ^6.7.4 + autoprefixer ^10.4.15 → ^10.4.16 + axios ^1.5.0 → ^1.5.1 + chai ^4.3.8 → ^4.3.10 + core-js ^3.32.1 → ^3.33.0 + eslint ^8.48.0 → ^8.51.0 + eslint-plugin-mocha ^10.1.0 → ^10.2.0 + glob ^10.3.3 → ^10.3.10 + postcss >=8.4.28 → >=8.4.31 + prettier ^3.0.2 → ^3.0.3 + ts-loader ^9.4.4 → ^9.5.0 + +``` + +## 4.0.0-beta.78 + +- Update + +``` + @types/karma ^6.3.3 → ^6.3.4 + @types/node ^20.1.0 → ^20.5.0 + @typescript-eslint/eslint-plugin ^5.59.2 → ^6.4.0 + @typescript-eslint/parser ^5.59.2 → ^6.4.0 + autoprefixer ^10.4.14 → ^10.4.15 + core-js ^3.30.2 → ^3.32.0 + css-loader ^6.7.3 → ^6.8.1 + css-minimizer-webpack-plugin ^5.0.0 → ^5.0.1 + eslint ^8.40.0 → ^8.47.0 + eslint-config-prettier ^8.8.0 → ^9.0.0 + eslint-plugin-import ^2.27.5 → ^2.28.0 + eslint-plugin-prettier ^4.2.1 → ^5.0.0 + glob ^10.2.2 → ^10.3.3 + less ^4.1.3 → ^4.2.0 + less-loader ^11.1.0 → ^11.1.3 + lint-staged ^13.2.2 → ^14.0.0 + mini-css-extract-plugin ^2.7.5 → ^2.7.6 + node-jq ^2.3.5 → ^4.0.1 + postcss >=8.4.23 → >=8.4.27 + postcss-loader ^7.3.0 → ^7.3.3 + prettier ^2.8.8 → ^3.0.1 + style-loader ^3.3.2 → ^3.3.3 + stylelint ^15.6.1 → ^15.10.2 + stylelint-config-standard ^33.0.0 → ^34.0.0 + stylelint-prettier ^3.0.0 → ^4.0.2 + synchronous-promise 2.0.15 → 2.0.17 + terser-webpack-plugin ^5.3.8 → ^5.3.9 + ts-loader ^9.4.2 → ^9.4.4 + tslib ^2.5.0 → ^2.6.1 + typescript ^5.0.4 → ^5.1.6 + webpack 5.82.0 → 5.88.2 + webpack-cli ^5.1.0 → ^5.1.4 + webpack-dev-middleware ^6.1.0 → ^6.1.1 + webpack-dev-server ^4.15.0 → ^4.15.1 + webpack-hot-middleware ^2.25.3 → ^2.25.4 +``` + +## 4.0.0-beta.77 + +### :bug: Bug Fix + +- [Image duplication issue #993](https://github.com/xdan/jodit/issues/993) +- Fixed an issue where the inline popup was not hidden after deleting an image + +### :rocket: New Feature + +- [When cursor is not in view and paste is done, editor doesn't scroll to the pasted content automatically #983](https://github.com/xdan/jodit/issues/983) + Added [scrollToPastedContent](https://xdsoft.net/jodit/docs/classes/config.Config.html#scrollToPastedContent) +- After inserting the HTML, the cursor will be inserted inside the block element + +## 4.0.0-beta.52 + +#### :boom: Breaking Change + +- Removed deprecated selection.applyStyle method +- Change Creates. Sandbox signature to return body,iframe tuple +- In the plugin system, the requirement field has been removed from instances, + only the field in the constructor has been left + ```js + class somePlugin extends Jodit.modulules.Plugin { + static requires = ['hotkeys']; // It still works + requires = ['hotkeys']; // Now it does not work + } + ``` +- Deprecated were removed + - `Dom.isTag` does not support array + - `Select.applyStyle` method was removed + - `history.observer` was removed + - `editorCssClass` removed + +- `wrapNodes.exclude` changed from array to set +- `allowResizeTags` changed from array to set +- `resizer.useAspectRatio` changed from array to set + +- All css variables renamed to kebab-case + +## 4.0.0-beta.42 + +- Remove all languages from lang/index.js for ESM build +- Only base plugins list in plugins/index.js for ESM build +- Remove polyfills from ESM build +- Remove `composer.json` + +## 4.0.0-beta.10 + +```plain +@types/node ^18.15.12 → ^20.1.0 +@typescript-eslint/eslint-plugin ^5.59.0 → ^5.59.2 +@typescript-eslint/parser ^5.59.0 → ^5.59.2 +axios ^1.3.6 → ^1.4.0 +core-js ^3.30.1 → ^3.30.2 +cssnano-preset-advanced ^6.0.0 → ^6.0.1 +eslint ^8.38.0 → ^8.40.0 +glob ^10.2.1 → ^10.2.2 +karma ^6.4.1 → ^6.4.2 +lint-staged ^13.2.1 → ^13.2.2 +open ^8.4.2 → ^9.1.0 +postcss-loader ^7.2.4 → ^7.3.0 +prettier ^2.8.7 → ^2.8.8 +puppeteer ^19.10.0 → ^20.1.1 +stylelint ^15.5.0 → ^15.6.1 +terser-webpack-plugin ^5.3.7 → ^5.3.8 +webpack 5.80.0 → 5.82.0 +webpack-cli ^5.0.1 → ^5.1.0 +webpack-dev-middleware ^6.0.2 → ^6.1.0 +webpack-dev-server ^4.13.3 → ^4.15.0 +yargs ^17.7.1 → ^17.7.2 +``` + +## 4.0.0.beta-0 + +#### :boom: Breaking Change + +- !!! Build files removed from repository and only available in npm package !!! +- !!! bowers.json was removed !!! +- server.js was removed +- All build js files was rewritten to typescript +- `build-system` was renamed as `tools` +- Removed `exludeLangs` build option. Instead use `--includeLanguages=en` option. +- Default target for build was changed to es2015 +- Build in es2018 target was removed, instead es2021 was added +- Event `getIcon` was removed. Use option `getIcon` instead + +```ts +Jodit.make('#editor', { + getIcon: (name: string, clearName: string) => { + if (name === 'bold') { + return '...'; + } + + return null; + } +}); +``` + +- Removed `errorMessage` event. Use `module.messages` instead + + ```js + Jodit.make('#editor').message.info('Hello world'); + ``` + +#### :rocket: New Feature + +- Added `Jodit.modules.Dom.isList` method +- Added `Jodit.modules.Dom.isLeaf` method +- Added plugin `delete` for correct delete content with command `delete` + +#### :house: Internal + +```plain +@types/node ^18.13.0 → ^18.15.12 +@typescript-eslint/eslint-plugin ^5.50.0 → ^5.59.0 +@typescript-eslint/parser ^5.50.0 → ^5.59.0 +autoprefixer ^10.4.13 → ^10.4.14 +axios ^1.3.3 → ^1.3.6 +core-js ^3.28.0 → ^3.30.1 +css-minimizer-webpack-plugin ^4.2.2 → ^5.0.0 +cssnano-preset-advanced ^5.3.9 → ^6.0.0 +eslint ^8.34.0 → ^8.38.0 +eslint-config-prettier ^8.6.0 → ^8.8.0 +expect-mocha-image-snapshot ^3.0.1 → ^3.0.13 +glob ^8.1.0 → ^10.2.1 +karma-chrome-launcher ^3.1.1 → ^3.2.0 +lint-staged ^13.1.2 → ^13.2.1 +mini-css-extract-plugin ^2.7.2 → ^2.7.5 +postcss >=8.4.21 → >=8.4.23 +postcss-css-variables ^0.18.0 → ^0.19.0 +postcss-loader ^7.0.2 → ^7.2.4 +prettier ^2.8.4 → ^2.8.7 +puppeteer ^19.7.0 → ^19.10.0 +style-loader ^3.3.1 → ^3.3.2 +stylelint ^15.1.0 → ^15.5.0 +stylelint-config-standard ^30.0.1 → ^33.0.0 +stylelint-prettier ^2.0.0 → ^3.0.0 +terser-webpack-plugin ^5.3.6 → ^5.3.7 +tsc-alias ^1.8.2 → ^1.8.5 +typescript ^4.9.5 → ^5.0.4 +webpack 5.76.0 → 5.80.0 +webpack-dev-middleware ^6.0.1 → ^6.0.2 +webpack-dev-server ^4.11.1 → ^4.13.3 +yargs ^17.6.2 → ^17.7.1 +``` + +## 3.24.6 + +#### :house: Internal + +- `Jodit.modules.Helpers.htmlspecialchars` marked as deprecated. Instead use `Jodit.modules.Helpers.stripTags` +- `Jodit.modules.Helpers.stripTags` added third argument for excluding tags + +```js +Jodit.modules.Helpers.stripTags( + '

test po
p

stop lop

', + document, + new Set(['p', 'br']) +); +//

test po
p
stop lop

+``` + +- Inside `safeMode` will init only `safePluginsList` plugins. It used to init `extraPlugins` too. +- `size` plugin was added in default `safePluginsList` + +```js +const editor = Jodit.make('#editor', { + safeMode: true, + safePluginsList: ['enter', 'backspace'] +}); +console.log(editor.__plugins); // only 'enter', 'backspace' +``` + +## 3.24.5 + +#### :bug: Bug Fix + +- [Wrong new empty paragraph location when cursor is set after a table and key is pressed #953](https://github.com/xdan/jodit/issues/953) +- The PluginSystem module has been refactored: now asynchronous plugins do not block the initialization of the editor and it is ready to work without them. +- [Remove anchor element when set black text color. #936](https://github.com/xdan/jodit/issues/936) +- [Insert_only_text makes mistakes when i copy a text html that includes a style tag #934](https://github.com/xdan/jodit/issues/934) +- [Selected font styling reverts to default style after removing the added text using the backspace key #925](https://github.com/xdan/jodit/issues/925) + +#### :house: Internal + +``` +core-js ^3.27.2 → ^3.28.0 +@types/node ^18.11.19 → ^18.13.0 +axios ^1.3.2 → ^1.3.3 +eslint ^8.33.0 → ^8.34.0 +karma-sourcemap-loader ^0.3.8 → ^0.4.0 +lint-staged ^13.1.0 → ^13.1.2 +open ^8.4.0 → ^8.4.1 +prettier ^2.8.3 → ^2.8.4 +puppeteer ^19.6.3 → ^19.7.0 +stylelint ^14.16.1 → ^15.1.0 +stylelint-config-prettier ^9.0.4 → ^9.0.5 +stylelint-config-standard ^29.0.0 → ^30.0.1 +synchronous-promise 2.0.15 → 2.0.17 +``` + +## 3.24.4 + +#### :boom: Breaking Change + +- Options to hide the functionality of editing directories and files `filebrowser.createNewFolder`, `filebrowser.editImage`, + `filebrowser.deleteFolder`,`filebrowser.renameFolder`,`filebrowser.moveFolder`,`filebrowser.moveFile` were marked as deprecated. +- Instead added `filebrowser.permissionsPresets: Partial` option. + +Before: + +```js +Jodit.make('#editor', { + filebrowser: { + createNewFolder: false, + deleteFolder: false, + renameFolder: false, + moveFolder: false, + moveFile: false, + editImage: false, + ajax: { + url: 'https://xdsoft.net/jodit/finder/' + } + } +}); +``` + +Now + +```js +Jodit.make('#editor', { + filebrowser: { + permissionsPresets: { + allowFiles: false, + allowFileMove: false, + allowFileUpload: false, + allowFileUploadRemote: false, + allowFileRemove: false, + allowFileRename: false, + allowFolders: false, + allowFolderCreate: false, + allowFolderMove: false, + allowFolderRemove: false, + allowFolderRename: false, + allowImageResize: false, + allowImageCrop: false + }, + ajax: { + url: 'https://xdsoft.net/jodit/finder/' + } + } +}); +``` + +## 3.24.3 + +#### :house: Internal + +```plain + core-js ^3.26.1 → ^3.27.2 + @types/node ^18.11.9 → ^18.11.19 + @typescript-eslint/eslint-plugin ^5.45.0 → ^5.50.0 + @typescript-eslint/parser ^5.45.0 → ^5.50.0 + axios ^1.2.0 → ^1.3.2 + css-loader ^6.7.2 → ^6.7.3 + eslint ^8.28.0 → ^8.33.0 + eslint-config-prettier ^8.5.0 → ^8.6.0 + eslint-plugin-import ^2.26.0 → ^2.27.5 + expect-mocha-image-snapshot ^2.0.14 → ^3.0.1 + glob ^8.0.3 → ^8.1.0 + husky ^8.0.2 → ^8.0.3 + lint-staged ^13.0.4 → ^13.1.0 + mini-css-extract-plugin ^2.7.0 → ^2.7.2 + mocha ^10.1.0 → ^10.2.0 + nock ^13.2.9 → ^13.3.0 + postcss >=8.4.19 → >=8.4.21 + postcss-loader ^7.0.1 → ^7.0.2 + prettier ^2.8.0 → ^2.8.3 + puppeteer ^19.3.0 → ^19.6.3 + stylelint ^14.15.0 → ^14.16.1 + synchronous-promise 2.0.15 → 2.0.17 + ts-loader ^9.4.1 → ^9.4.2 + tsc-alias ^1.7.1 → ^1.8.2 + tslib ^2.4.1 → ^2.5.0 + typescript ^4.9.3 → ^4.9.5 + webpack-cli ^5.0.0 → ^5.0.1 +``` + +## 3.24.2 + +#### :rocket: New Feature + +- [Fix #909 Add option to provide pre-defined classes for img elements. #910](https://github.com/xdan/jodit/pull/910) + +## 3.24.1 + +#### :boom: Breaking Change + +- Constant array `MAY_BE_REMOVED_WITH_KEY` was replaced on set `INSEPARABLE_TAGS` + +#### :rocket: New Feature + +- Method `Select.applyStyle` marked as deprecated. Use `Select.commitStyle` instead. + +Before: + +```js +jodit.select.applyStyle( + { color: red }, + { + element: 'strong' + } +); +``` + +Now: + +```js +jodit.s.commitStyle({ + element: 'strong', + attributes: { + style: { + color: 'red' + } + } +}); +``` + +- In the options of the `Select`.`commitStyle` method, the `attributes` property has been added, which allows you to + also set attributes when applying a style. + +```js +jodit.s.commitStyle({ + element: 'a', + attributes: { + href: 'https://stename.ru' + } +}); +``` + +Wraps the selected text into a link with the specified address. + +- When inserting a url, if the text is selected, it will automatically be replaced with a link + +- In Tab plugin allow use shift+tab for lists + +#### :bug: Bug Fix + +- [Safari custom color picker errors out on browser check #906](https://github.com/xdan/jodit/issues/906) + +#### :house: Internal + +- Fixed deletion of the asserts function from the production code, instead of regular expressions, transformers are used\*\*\*\* + +## 3.23.3 + +#### :rocket: New Feature + +- Added option `IControlType.childExec` Allows you to set a separate handler for list items + +```javascript +Jodit.make('.editor', { + buttons: [ + { + name: 'add-date', + iconURL: 'stuf/dummy.png', + list: { + options: 'Open options' + }, + exec(editor, current, control) { + editor.s.insertHTML(new Date().toString()); + }, + childExec(editor, current, control) { + if (control.args[0] === 'options') { + editor.alert('Options'); + } + } + } + ] +}); +``` + +## 3.23.2 + +#### :bug: Bug Fix + +- [Insert link in Safari adds link to the beginning of the text #900](https://github.com/xdan/jodit/issues/900) + +#### :house: Internal + +- Deleted ajax.dataType option, because it was not used + +## 3.23.1 + +#### :boom: Breaking Change + +- Remove `IJodit` from first argument of `Ajax` constructor. + +#### :rocket: New Feature + +- The focus method and the isFocused property have been added to the `IJodit` interface. + These are just aliases for the same methods and properties of the `Select` module. + +```js +const editor = Jodit.make('#editor'); +editor.focus(); +``` + +- The `IJodit.fetch` method has been added to the `IJodit` interface, + which is similar in signature to the `fetch` method in the browser + +```js +const editor = Jodit.make('#editor'); +const data = await editor.fetch('https://somesite.com?type=json'); +``` + +#### :bug: Bug Fix + +- Fixed error when using `superscript` and `subscript` commands. If the cursor was inside sub or sup tags, then nothing happened. +- Fixed a bug in the placeholder plugin when indent styles were set for the edit area, + they were not taken into account in the positioning of the placeholder. As a result, it was shifted relative to the focus. + +## 3.22.1 + +#### :boom: Breaking Change + +- `ISnapshot.isBlocked` - is readonly now +- `IHistory.snapshot` - is readonly now +- `IHistory.processChanges` and `IHistory.upTick` were removed. +- Instead of `IHistory.snapshot.isBlocked=true...IHistory.snapshot.isBlocked=false` should be used `IHistory.snapshot.transaction(() => {...})` +- `IJodit.registerCommand` - is generic now +- `IJodit.getNativeEditorValue` - marked as internal, please do not use it in your code +- To class `.jodit-container` was added `background-color: var(--color-background-light-gray);` +- To class `.jodit-workplace` was added `background-color: var(--color-background-default);` +- Selection markers now are marked as temporary with `Dom.markTemporary` +- Search plugin move selection to the next found element after replacing. See bug fix section +- WrapNodes plugin added `emptyBlockAfterInit=true` option. After the editor is initialized, if it is empty, an empty block will be added to it. + +#### :bug: Bug Fix + +- [Select text formatting before writing #894](https://github.com/xdan/jodit/issues/894) + +#### :house: Internal + +``` +core-js ^3.25.5 → ^3.26.0 +@types/node ^18.11.0 → ^18.11.9 +@typescript-eslint/eslint-plugin ^5.40.0 → ^5.42.0 +@typescript-eslint/parser ^5.40.0 → ^5.42.0 +autoprefixer ^10.4.12 → ^10.4.13 +cssnano-preset-advanced ^5.3.8 → ^5.3.9 +eslint ^8.25.0 → ^8.26.0 +puppeteer ^19.0.0 → ^19.2.1 +replace ^1.2.1 → ^1.2.2 +tslib ^2.4.0 → ^2.4.1 +yargs ^17.6.0 → ^17.6.1 +``` + +## 3.21.5 + +- [Unnecessary message showing after reaching the limit](https://xdsoft.net/jodit/pro/cab/issues/380e8a02-00c5-4aa0-8923-5b957d503eb1) + +## 3.21.4 + +#### :bug: Bug Fix + +- [Font Style Change when removing Bold or Italics](https://xdsoft.net/jodit/pro/cab/issues/6ef20dc4-fabe-43c3-a299-86797d328bdf) + +#### :house: Internal + +@types/node ^18.8.3 → ^18.11.0 +axios ^1.1.2 → ^1.1.3 +css-minimizer-webpack-plugin ^4.2.1 → ^4.2.2 +mocha ^10.0.0 → ^10.1.0 +postcss >=8.4.17 → >=8.4.18 +puppeteer ^18.2.1 → ^19.0.0 +stylelint ^14.13.0 → ^14.14.0 +stylelint-config-standard ^28.0.0 → ^29.0.0 + +## 3.21.1 + +#### :boom: Breaking Change + +- Filebrowser adds a timestamp to the image preview url, now it will be the same as the server returned the `changed` field in the response. + This is necessary for better caching in the browser. +- `cleanHTML.denyTags` default equal `script` Those. script tags are disabled by default. If you need them then turn off this rule: + +```js +Jodit.make('#editor', { + cleanHTML: { + denyTags: false + } +}); +``` + +- The order of the hotkeys plugin keys has been changed to a more popular one. + It used to be: `b+meta`, `b+ctrl` + Now: `meta+b`, `ctrl+b` + This is expressed in the installation of handlers for keyboard shortcuts: + +```js +Jodit.make('#editor', { disablePlugins: ['bold'] }).e.on('meta+b', () => { + alert('Do smth with text'); + return false; +}); +``` + +#### :house: Internal + +- Remove `assert` calls from production build. +- Update deps + +``` +core-js ^3.24.1 → ^3.25.5 +@types/node ^18.7.3 → ^18.8.3 +@typescript-eslint/eslint-plugin ^5.33.0 → ^5.39.0 +@typescript-eslint/parser ^5.33.0 → ^5.39.0 +autoprefixer ^10.4.8 → ^10.4.12 +axios ^0.27.2 → ^1.1.2 +css-minimizer-webpack-plugin ^4.0.0 → ^4.2.1 +eslint ^8.22.0 → ^8.25.0 +eslint-plugin-tsdoc ^0.2.16 → ^0.2.17 +express ^4.18.1 → ^4.18.2 +karma ^6.4.0 → ^6.4.1 +less-loader ^11.0.0 → ^11.1.0 +postcss >=8.4.16 → >=8.4.17 +puppeteer ^17.0.0 → ^18.2.1 +stylelint ^14.10.0 → ^14.13.0 +stylelint-config-idiomatic-order v8.1.0 → v9.0.0 +stylelint-config-standard ^27.0.0 → ^28.0.0 +synchronous-promise ^2.0.15 → ^2.0.16 +terser-webpack-plugin ^5.3.4 → ^5.3.6 +ts-loader ^9.3.1 → ^9.4.1 +typescript ^4.8.2 → ^4.8.4 +webpack 5.73.0 → 5.74.0 +webpack-dev-server ^4.9.3 → ^4.11.1 +webpack-hot-middleware ^2.25.1 → ^2.25.2 +yargs ^17.5.1 → ^17.6.0 +``` + +## 3.20.4 + +#### :house: Internal + +- Move `error-messages` functionality to `messages` module. +- Improved appearance of popup messages in the [messages](https://xdsoft.net/jodit/docs/modules/modules_messages.html) module. + +#### :bug: Bug Fix + +- Fixed a bug in the limit plugin. When the limit was reached, he checked the limits strictly, + when entering from the keyboard. Therefore, every time I change the input focus. +- Events are added to the same plugin when limits are reached. + More details can be found in the documentation [limit](https://xdsoft.net/jodit/docs/modules/plugins_limit.html) + +## 3.20.3 + +#### :house: Internal + +- En lang is loaded as is +- Fix types generation: + - Remove styles + - Replace aliases + +#### :bug: Bug Fix + +- [After reaching the maximum character limit unable to copy the content from the editor](https://xdsoft.net/jodit/pro/cab/issues/e72690fa-6dea-4586-82fb-30b0e8d53d4a) + +## 3.20.2 + +#### :house: Internal + +- Tooltip plugin functionality moved to `ui/button/tooltip` so that it can be used not only with the editor + +#### :bug: Bug Fix + +- Fixed bug in add-new-line in iframe-mode + +## 3.20.1 + +#### :rocket: New Feature + +- Removed Panel and IPanel +- Made IDlgs and Dlgs traits +- Added @derive decorator +- Mods/Elms/Dlgs traits now uses with @derive +- Added `dtd` plugin. [Read more](https://xdsoft.net/jodit/docs/modules/plugins_dtd.html) + +#### :house: Internal + +- Added documentation for [Image properties - Input fields are not clickable ( react + material ui ) #879](https://github.com/xdan/jodit/issues/879) + +#### :bug: Bug Fix + +- [After adding hyperlink and hit enter the hyperlink added to first letter of the next word.](https://xdsoft.net/jodit/pro/cab/issues/a6ccc696-313f-4195-bed6-59ef28af2643) +- [After reaching the maximum character limit unable to copy the content from the editor.(eg:- if limit is 50000 then we are able to copy only 49999)](https://xdsoft.net/jodit/pro/cab/issues/e72690fa-6dea-4586-82fb-30b0e8d53d4a) +- [When typing Japanese characters in Jodit editor, extra characters are being added to the beginning of the first word.](https://xdsoft.net/jodit/pro/cab/issues/4c468c09-837d-40c6-b487-3746aecc470a) + Same [Composing japanese text is decided unintentionally. #870](https://github.com/xdan/jodit/issues/870) + +## 3.19.5 + +#### :rocket: New Feature + +- Added `cleanHTML.disableCleanFilter:Set` options. Node filtering rules that do not need to be applied to content + The full list of rules is generated dynamically from the folder + https://github.com/xdan/jodit/tree/main/src/plugins/clean-html/helpers/visitor/filters +- Added `allowCommandsInReadOnly:string[]` options. Allow execute commands in readonly mode. + [activeButtonsInReadOnly: ['source', 'preview'] is not working. #878](https://github.com/xdan/jodit/issues/878) + ```js + const editor = Jodit.make('#editor', { + readonly: true, + allowCommandsInReadOnly: ['alert'] + }); + editor.registerCommand('alert', (_, _2, text) => { + alert(text); + }); + editor.execCommand('alert', '', 'Hello!'); + ``` + +#### :bug: Bug Fix + +- [Pasting html breaks full screen mode #864](https://github.com/xdan/jodit/issues/864) +- [Using BR tag as enter element results reset of cursor while typing in newlines. #860](https://github.com/xdan/jodit/issues/860) + Fixed bugs with invisible aand empty nodes. +- [Adding paragraph when copying and pasting with little text #851](https://github.com/xdan/jodit/issues/851) + Options `select.normalizeSelectionBeforeCutAndCopy` now default is false +- [Jodit-selection-marker span appears after clicking Undo button. #880](https://github.com/xdan/jodit/issues/880) + +## 3.19.4 + +#### :rocket: New Feature + +- Added [[IUploader.getDisplayName]] option. Allow change file name before display it inside editor. + [Can we customize uploaded file's name? #869](https://github.com/xdan/jodit/issues/869) + +```javascript +Jodit.make('#editor', { + uploader: { + url: 'https://sitename.net/jodit/connector/index.php?action=fileUpload', + getDisplayName: (_, name) => 'File:' + name + } +}); +``` + +- Added `cleanHTML.useIframeSandbox`:`boolean` option(default: false). Use iframe[sandbox] to paste HTML code into the editor to check it for safety. + Allows you not to run scripts and handlers, but it works much slower + +#### :bug: Bug Fix + +- [applyLink event is only fired when link is inserted via menu button but not when it is pasted #874](https://github.com/xdan/jodit/issues/874) +- [Dialogs don't work inside Shadow DOM #866](https://github.com/xdan/jodit/issues/866) +- [Popups don't work inside Shadow DOM #865](https://github.com/xdan/jodit/issues/865) +- [Pb with cleanHTML.safeJavaScriptLink option #862](https://github.com/xdan/jodit/issues/862) + +## 3.19.3 + +#### :bug: Bug Fix + +- Quick fix bug with webpack output.clean=true. + +## 3.19.2 + +#### :bug: Bug Fix + +- Big bugfix in es2021 version, sideEffect cut all styles and configs + +## 3.19.1 + +#### :house: Internal + +- Plugin icons moved to their respective plugins +- Used plugin `webpack.ids.DeterministicModuleIdsPlugin` for more reliable sharing of exported module names between builds. + Now you can include plugins from 'es5' in the assembly for 'es2021.en'. +- Deps + ``` + @types/node ^17.0.36 → ^17.0.41 + @typescript-eslint/eslint-plugin ^5.27.0 → ^5.27.1 + @typescript-eslint/parser ^5.27.0 → ^5.27.1 + cssnano-preset-advanced ^5.3.6 → ^5.3.7 + eslint ^8.16.0 → ^8.17.0 + lint-staged ^12.4.3 → ^13.0.0 + terser-webpack-plugin ^5.3.1 → ^5.3.3 + typescript ^4.7.2 → ^4.7.3 + webpack ^5.72.1 → ^5.73.0 + webpack-dev-server ^4.9.0 → ^4.9.2 + core-js ^3.22.7 → ^3.22.8 + ``` + +## 3.18.7 + +#### :rocket: New Feature + +- Allow custom resizing with Alt btn [How to resize image with the handle bars without fixed aspect ratio #839](https://github.com/xdan/jodit/issues/839) + +#### :bug: Bug Fix + +- [Multiple modals 'Paste as HTML' after longer pressing ctrl+v #849](https://github.com/xdan/jodit/issues/849) +- [All added videos are deleted when you click Delete or Backspace #847](https://github.com/xdan/jodit/issues/847) + +## 3.18.6 + +#### :rocket: New Feature + +- Separate plugin for voice recognition and input of recognized text into the editor. + [Feature Request: Add ability for user to dictate using local device microphone as input #828](https://github.com/xdan/jodit/issues/828) + > This plugin is not included in the main Jodit build. It must be connected separately [Read more](./src/plugins/speech-recognize/README.md) + +## 3.18.5 + +#### :boom: Breaking Change + +- Added default table style to `createAttributes` option: + +```js +Jodit.defaultOptions.createAttributes = { + table: { + style: 'border-collapse:collapse;width: 100%;' + } +}; +``` + +#### :bug: Bug Fix + +- Fixed a bug where the download cancellation business exceptions were shown as errors in the file browser. Also fixed uncatchable exceptions inside Async.promise +- [Fixed Eraser delete "" tag! #705 #845](https://github.com/xdan/jodit/pull/845) Thanks @s-renier-taonix-fr +- [Update Docker Env #844](https://github.com/xdan/jodit/pull/844) Thanks @s-renier-taonix-fr +- Fixed table default styles [Jodit doesn't keep table borders #295](https://github.com/xdan/jodit/issues/295) +- [All td elements got double border style. #842](https://github.com/xdan/jodit/issues/842) + +## 3.18.4 + +#### :rocket: New Feature + +- Added option `uploader.processFileName` - The method can be used to change the name of the uploaded file + +```js +Jodit.make('#editor', { + uploader: { + url: 'some-connector.php', + processFileName: (key, file, name) => { + return [key, file, 'some-prefix_' + name]; + } + } +}); +``` + +- Fixed file naming error when uploading to server + +## 3.18.3 + +#### :bug: Bug Fix + +- Fixed a bug where pressing `Esc` did not close the dialog + +## 3.18.2 + +#### :boom: Breaking Change + +The on/one/off methods of the Jodit Event System have been greatly simplified: + +instead: + +```js +editor.e.on( + 'click', + () => { + alert('Clicked!'); + }, + undefined, + true +); +``` + +Now: + +```js +editor.e.on( + 'click', + () => { + alert('Clicked!'); + }, + { + top: true + } +); +``` + +Also, the methods now support an array of events: + +```js +editor.e.on('click mousedown mouseup', () => { + alert('Some event!'); +}); +editor.e.on(['click', 'mousedown', 'mouseup'], () => { + alert('Some event!'); +}); +``` + +#### :rocket: New Feature + +- All components have their own instance of the Async module. What used to be `this.j.async` is now `this.async`. +- New option `resizer.useAspectRatio` [How to resize image with the handle bars without fixed aspect ratio](https://github.com/xdan/jodit/issues/839) +- Added event `applyLink` for issue [change default target for all links #841](https://github.com/xdan/jodit/issues/841) + +#### :bug: Bug Fix + +- Fixed non-removal of the event handler on destruct +- Extra br are not removed +- [Bold removing line break in table #838](https://github.com/xdan/jodit/issues/838) +- [Cleans
that should be there #835](https://github.com/xdan/jodit/issues/835) +- [Cursor goes out of edit box when moving to a new line #824](https://github.com/xdan/jodit/issues/824) +- [Couldn't click next line button, when table is resized. #831](https://github.com/xdan/jodit/issues/831) +- [Unable to add line height for Html pasted content. #830](https://github.com/xdan/jodit/issues/830) + +#### :house: Internal + +- Instead of a self-written truncated polyfill for `Array.from`, the core-js module is used +- Moved the test files to the appropriate directories +- Update deps + + ``` + @types/node ^17.0.23 → ^17.0.31 + @typescript-eslint/eslint-plugin ^5.19.0 → ^5.22.0 + @typescript-eslint/parser ^5.19.0 → ^5.22.0 + autoprefixer ^10.4.4 → ^10.4.7 + axios ^0.26.1 → ^0.27.2 + eslint ^8.13.0 → ^8.14.0 + express ^4.17.3 → ^4.18.1 + karma ^6.3.17 → ^6.3.19 + lint-staged ^12.3.7 → ^12.4.1 + mocha ^9.2.2 → ^10.0.0 + postcss >=8.4.12 → >=8.4.13 + stylelint ^14.6.1 → ^14.8.2 + ts-loader ^9.2.8 → ^9.3.0 + tslib ^2.3.1 → ^2.4.0 + typescript ^4.6.3 → ^4.6.4 + webpack-dev-server ^4.8.1 → ^4.9.0 + core-js ^3.21.1 → ^3.22.4 + ``` + +## 3.17.1 + +#### :boom: Breaking Change + +Some minifier configurations do not correctly handle inheritance in the `component` decorator, +we added some helper code earlier to make this work correctly. +We tried to determine belonging by the name of the component and not by its constructor or prototype. +Because in some build system(ex. create-react-app): + +```js +@component +class A extends Component { + className() { + return 'A'; + } +} +const a = new A(); +a instanceof Component; // false - only in some cases +elm.className() === A.prototype.className(); // true +``` + +In most cases, this entailed new bugs, so in 3.17 we decided to remove this heuristic. +If something broke in your assembly, please create an [issue on github](https://github.com/xdan/jodit/issues/new). + +#### :bug: Bug Fix + +- Fixed processing of inserting videos from YouTube. Now you can start playing the video. +- [selection.insertHTML causes infinite blur loop when Jodit editor not active](https://github.com/xdan/jodit/issues/819) Added `insertCursorAfter` argument. +- [Preview missing non styled content in a paragraph when there is any styled text in that paragraph #823](https://github.com/xdan/jodit/issues/823) +- [Image hyperlink is not working without https:// #821](https://github.com/xdan/jodit/issues/821) + +```js +const editor = Jodit.make('#editor'); +editor.s.insertHTML('test', false); +``` + +#### :house: Internal + +- Update + +``` +@typescript-eslint/eslint-plugin ^5.16.0 → ^5.19.0 +@typescript-eslint/parser ^5.16.0 → ^5.19.0 +cssnano-preset-advanced ^5.3.1 → ^5.3.3 +eslint ^8.12.0 → ^8.13.0 +eslint-plugin-tsdoc ^0.2.14 → ^0.2.16 +prettier ^2.6.1 → ^2.6.2 +webpack ^5.70.0 → ^5.72.0 +webpack-dev-server ^4.7.4 → ^4.8.1 +yargs ^17.4.0 → ^17.4.1 +``` + +## 3.16.6 + +#### :bug: Bug Fix + +- [Keyboard Trap in Source Code mode #817](https://github.com/xdan/jodit/issues/817) Author: @haruanm +- ["Uncaught TypeError: Cannot redefine property: \_\_activeTab" occurs when I use 'brush' button twice in inline-popup for a element. #815](https://github.com/xdan/jodit/issues/815) + +## 3.16.5 + +#### :rocket: New Feature + +- imageProcessor.replaceDataURIToBlobIdInView + The `imageProcessor` plugin has added the functionality of replacing data-uri objects in the `src` of images with `blob-url`. + This allows you to more conveniently work with an HTML document without loading the processor. + Checks if the `imageProcessor.replaceDataURIToBlobIdInView` option is enabled then converts image src which has `data:base64` + to [blob-object-uri](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL) + +In this case, `Jodit.value` returns images with `data-uri`. And original `textarea` itself does the reverse replacement take place. + +```js +const editor = Jodit.make('#editor', { + imageProcessor: { + replaceDataURIToBlobIdInView: true // This is the default value, but for examples we set it + } +}); + +editor.value = + '

'; +console.log(editor.value); //

+console.log(editor.getElementValue()); // '

' +console.log(editor.getNativeEditorValue()); //

+``` + +- Method `Jodit.setElementValue` marked us deprecated and will be removed in next major release. + +#### :house: Internal + +- Update + +``` +@types/node ^17.0.21 → ^17.0.23 +@typescript-eslint/eslint-plugin ^5.14.0 → ^5.16.0 +@typescript-eslint/parser ^5.14.0 → ^5.16.0 +autoprefixer ^10.4.2 → ^10.4.4 +cssnano-preset-advanced ^5.2.4 → ^5.3.1 +eslint ^8.11.0 → ^8.12.0 +lint-staged ^12.3.5 → ^12.3.7 +postcss >=8.4.8 → >=8.4.12 +prettier ^2.5.1 → ^2.6.1 +stylelint ^14.5.3 → ^14.6.1 +typescript ^4.6.2 → ^4.6.3 +yargs ^17.3.1 → ^17.4.0 +``` + +## 3.16.4 + +#### :bug: Bug Fix + +- [Sass compile error Css3 min() #809](https://github.com/xdan/jodit/issues/809) +- [The preview popup has double scrollbars #808](https://github.com/xdan/jodit/issues/808) +- Fixed bug with sync editor size with iframe mode (Works only with [ResizeObserver](https://caniuse.com/resizeobserver)) + +## 3.16.3 + +- Fixed composition `wait` and `debounce` decorators + +## 3.16.2 + +#### :bug: Bug Fix + +- ["Uncaught TypeError: this.setEditorValue is not a function" with Japanese input method #807](https://github.com/xdan/jodit/issues/807) + +## 3.16.1 + +#### :rocket: New Feature + +- Added `spellcheck` plugin. +- Added `Config.pasteHTMLActionList` and `Config.pasteFromWordActionList` options https://github.com/xdan/jodit/issues/802. +- Added `Jodit.synchronizeValues()` method. The method synchronizes the WYSIWYG values of the editor +- and the original input field. The method works through `Async.throttle`. +- Added a new class for working with DOM without blocking the main thread `LazyWalker` +- Search engine replace on `LazyWalker` +- CleanHTML plugin engine replace on `LazyWalker` +- Search plugin now highlights all found options https://github.com/xdan/jodit/issues/798 +- Added `Jodit.constants` https://github.com/xdan/jodit/issues/806 + +#### :boom: Breaking Change + +- Renamed `wrap-text-nodes` plugin to `wrap-nodes` +- Option `spellcheck` = false by default. This is due to the fact that the built-in spell check slows down the editor very much on large tests. +- Enabled `@typescript-eslint/explicit-function-return-type` in eslint + +#### :bug: Bug Fix + +- Fixed a bug in the `watch` decorator, when multiple watchers were set, it used only one context +- [Default is not working for insert ordered list and insert unordered list #799](https://github.com/xdan/jodit/issues/799) +- [In print preview, table border color and background color is not showing #803](https://github.com/xdan/jodit/issues/803) + +#### :house: Internal + +- `clean-html` plugin now works via `requestIdleCallback` and doesn't slow down the browser + +## 3.15.3 + +#### :boom: Breaking Change + +- `Observer` module renamed to `History`, accessed via `Jodit.history` +- `Jodit.observer` field deprecated and will be removed in future releases +- Changed to `history` in `observer` settings. The `observer` field has been deprecated. +- Removed `stack` field from `History` class (former `Observer`). +- Separated default editor timeout and `history.timeout`. Now the second setting is just for history. + Timeouts for all asynchronous operations in Jodit now apply the `defaultTimeout` setting + +Before: + +```js +const editor = Jodit.make({ + observer: { + timeout: 122, + maxHistoryLength: 100 + } +}); +console.log(editor.defaultTimeout); // 122 +editor.observer.stack.clear(); +``` + +Now: + +```js +const editor = Jodit.make({ + defaultTimeout: 122, + history: { + timeout: 1000, + maxHistoryLength: 100 + } +}); +console.log(editor.defaultTimeout); // 122 +editor.history.clear(); +``` + +- When adding information to the editor via `Jodit.value`, the history of changes will be process immediately, + without a timeout. Read more https://github.com/xdan/jodit/issues/792 + +#### :bug: Bug Fix + +- [Colors popup closes when I select the secondary tab (Text) #171](https://github.com/jodit/jodit-react/issues/171) + +## 3.15.2 + +- Fixed a bug when it was impossible to select a normal font after selecting any other +- [Dropdowns not hiding when clicking again on the arrow #791](https://github.com/xdan/jodit/issues/791) +- [The problem that the selected text disappears #790](https://github.com/xdan/jodit/issues/790) + +## 3.15.1 + +#### :rocket: New Feature + +- When copying elements, their hierarchy is taken into, for example, if you selected `
  • |test|
`, + then when copying to the clipboard, the selection will be expanded to root element `UL`. + For this, the [[Select.expandSelection]] method has been added to the [[Select]] class. + [Ordered Bullets are getting changed to unordered bullets after copy and pasting within the editor #789](https://github.com/xdan/jodit/issues/789) + > Method called before copy/cut/selectall operations + +#### :house: Internal + +- The [[Dom.isNode]] method now uses Duck Typing instead of inctanceof, this seems to be enough +- Update + @types/node ^17.0.18 → ^17.0.21 + @typescript-eslint/eslint-plugin ^5.12.0 → ^5.13.0 + @typescript-eslint/parser ^5.12.0 → ^5.13.0 + cssnano-preset-advanced ^5.1.12 → ^5.2.1 + eslint ^8.9.0 → ^8.10.0 + eslint-config-prettier ^8.4.0 → ^8.5.0 + karma ^6.3.16 → ^6.3.17 + mini-css-extract-plugin ^2.5.3 → ^2.6.0 + postcss >=8.4.6 → >=8.4.7 + stylelint ^14.5.1 → ^14.5.3 + ts-loader ^9.2.6 → ^9.2.7 + typescript ^4.5.5 → ^4.6.2 + webpack ^5.69.1 → ^5.70.0 + +## 3.14.2 + +#### :rocket: New Feature + +- Added an experimental module for working with VDom<->Dom, an attempt to switch to this technology in the editor + +#### :house: Internal + +- @types/node ^17.0.15 → ^17.0.18 +- @typescript-eslint/eslint-plugin ^5.10.2 → ^5.12.0 +- @typescript-eslint/parser ^5.10.2 → ^5.12.0 +- axios ^0.25.0 → ^0.26.0 +- cssnano-preset-advanced ^5.1.11 → ^5.1.12 +- eslint ^8.8.0 → ^8.9.0 +- eslint-config-prettier ^8.3.0 → ^8.4.0 +- express ^4.17.2 → ^4.17.3 +- karma ^6.3.15 → ^6.3.16 +- lint-staged ^12.3.3 → ^12.3.4 +- mocha ^9.2.0 → ^9.2.1 +- stylelint ^14.3.0 → ^14.5.1 +- stylelint-config-standard ^24.0.0 → ^25.0.0 +- webpack ^5.68.0 → ^5.69.1 +- core-js ^3.21.0 → ^3.21.1 + +## 3.14.1 + +#### :house: Internal + +- [(change) improved a few german translations #783](https://github.com/xdan/jodit/pull/783) + +#### :boom: Breaking Change + +- Changed the positions of some buttons on different resolutions for greater density +- Disabled the ability to drag and drop elements on mobile devices as it affected page scrollability + +#### :bug: Bug Fix + +- [Cannot format table cells in PRO version #786](https://github.com/xdan/jodit/issues/786) -[Build error: Property or signature expected. #174](https://github.com/jodit/jodit-react/issues/174) + +## 3.13.5 + +#### :bug: Bug Fix + +- [Unable to drag and drop image between table cells #782](https://github.com/xdan/jodit/issues/782) + +## 3.13.4 + +#### :rocket: New Feature + +- Plugin for setting line spacing + +#### :bug: Bug Fix + +- [Previewing data not showing table content #780](https://github.com/xdan/jodit/issues/780) + +## 3.13.2 + +#### :rocket: New Feature + +- Added a plugin to handle pressing the Tab key, it added the functionality of processing a keystroke inside the UL/li + element and allows you to add tree-like lists. +- Added static `Jodit.isJoditAssigned` method: Checks if the element has already been initialized when for Jodit + +```js +const area = document.getElementById('editor'); +(Jodit.make(area) === Jodit.make(area)) === Jodit.make(area); +console.log(Jodit.isJoditAssigned(area)); // true +const editor = Jodit.make(area); +editor.destruct(); +console.log(Jodit.isJoditAssigned(area)); // false +``` + +#### :bug: Bug Fix + +- Fixed a bug when switching between source and wysiwyg mode, the FORM tag was wrapped in P +- [Not maintaining styles set when switching format blocks #773](https://github.com/xdan/jodit/issues/773) + +## 3.13.1 + +#### :boom: Breaking Change + +- `ObserveObject` removed +- Added `observable` function which makes object observable. In this case, the function returns the same object. + +```js +const obj = { + a: 1, + b: { + c: 5 + } +}; + +const obsObj = Jodit.modules.observable(obj); +console.log(obj === obsObj); // true +obsObj.on('change', () => { + console.log('Object changed'); +}); +obsObj.on('change.a', () => { + console.log('Key a changed'); +}); +obsObj.on('change.b.c', () => { + console.log('Key b.c changed'); +}); + +obj.a = 6; +// Object changed +// Key a changed + +obj.b = { c: 6 }; +// Object changed + +obj.b.c = 8; +// Object changed +// Key b.c changed +``` + +#### :bug: Bug Fix + +- Fixed autotest in Chrome on Windows + +## 3.12.5 + +#### :rocket: New Feature + +- Added options `safeMode:boolean` and `safePluginsList:string[]` for debugging + +```js +Jodit.make('#editor', { + safeMode: true, + safePluginsList: ['about'] +}); +``` + +Only one plugin will be activated. Convenient for debugging and your plugins, you can turn off all the others. + +#### :bug: Bug Fix + +- Fixed a bug due to which Jodit did not work in ie11, + added a polyfill for the iterator + +## 3.12.3 + +- [Fixed Full Screen showing elements not part of editable content #763](Issue: https://github.com/xdan/jodit/issues/763) + +#### :rocket: New Feature + +- Added `monospace` button in format list https://github.com/xdan/jodit/issues/767 +- In plugin `paste` added `memorizeChoiceWhenPasteFragment` option: when the user inserts a piece of HTML, the plugin will ask - How to insert it. + If after that user insert the same fragment again, the previous option will be used without extra question. + +> memorizeChoiceWhenPasteFragment = false, by default, it is Breaking change + +## 3.12.1 + +#### :boom: Breaking Change + +- `ObserveObject` renamed to `ObservableObject` + +```js +const obj = { a: 1, b: 2 }; +const observed = Jodit.modules.ObservableObject.create(obj); + +observed.on('change', (oldV, newV) => console.log(oldV, newV)); +observed.a = 5; +``` + +- [Replace additional newlines by HTML line breaks. #770](https://github.com/xdan/jodit/pull/770) + +#### :bug: Bug Fix + +- [New lines are removed when pasting plain text in the jodit editor #755](https://github.com/xdan/jodit/issues/755) + +#### :rocket: New Feature + +- In addition to the preinstalled editors, the source plugin adds the ability to use its own implementation. You can read more in the [documentation](https://xdsoft.net/jodit/docs/modules/plugins_source.html) + +## 3.11.2 + +#### :bug: Bug Fix + +- Fixed a bug when resizing images whose size was specified in the style attribute - the size did not change + +## 3.11.1 + +#### :boom: Breaking Change + +- Plugin `Delete` renamed to` Backspace`. And it is highly refractory. + +#### :rocket: New Feature + +- Open localhost in browser on `npm start` +- Added `Async.prototype.delay` method + +```js +await editor.async.delay(1000); +alert('Alert after 1s'); +``` + +- Added `Ajax.options.responseType` option `XMLHttpRequestResponseType` +- Added `Response.prototype.blob()` method + +```js +const ajax = new Jodit.modules.Ajax({ responseType: 'blob' }); +await ajax.send().then(resp => resp.blob()); +``` + +#### :bug: Bug Fix + +- Added handling of `contenteditable = false` elements to the plugin` Backspace`. +- [es2021 build don't works properly starting from jodit 3.9.4 #758](https://github.com/xdan/jodit/issues/758) +- [shadow dom support only partly fixed #746](https://github.com/xdan/jodit/issues/746) + +## 3.10.2 + +#### :boom: Breaking Change + +- The hotkeys have been castled in the Delete plugin: + Was: + +```js +const hotkeys = { + delete: ['delete', 'cmd+backspace'], + deleteWord: ['ctrl+delete', 'cmd+alt+backspace', 'ctrl+alt+backspace'], + backspace: ['backspace'], + backspaceWord: ['ctrl+backspace'] +}; +``` + +But the setting was called incorrectly, when the combination was pressed, not one word was deleted, but a whole sentence. +Now added one more setting: + +```js +const hotkeys = { + delete: ['delete', 'cmd+backspace'], + deleteWord: ['ctrl+delete', 'cmd+alt+backspace', 'ctrl+alt+backspace'], + deleteSentence: ['ctrl+shift+delete', 'cmd+shift+delete'], + backspace: ['backspace'], + backspaceWord: ['ctrl+backspace'], + backspaceSentence: ['ctrl+shift+backspace', 'cmd+shift+backspace'] +}; +``` + +#### :bug: Bug Fix + +- fixed sync between WYSIWYG and source editor + +## 3.10.1 + +#### :boom: Breaking Change + +- Update `TypeScript@4.5.2` +- In `IJodit.getEditorValue` added second argument for using with `afterGetValueFromEditor` event. + You can see example in `source` plugin. +- In UIButton `state.status` changed to `state.variant` +- `beforeClose` event can prevent closing the dialog + +```js +const dialog = new Jodit.modules.Dialog(); +dialog.setContent('Hello world!').open(); +dialog.e.on('beforeClose', () => confirm('Are you sure?')); +``` + +#### :bug: Bug Fix + +- fix: Proxy blur event to parent triggered on the ACE editor + +## 3.9.5 + +#### :rocket: New Feature + +- [Feature request: Open the inline toolbar without having to highlight text. #600](https://github.com/xdan/jodit/issues/600) + Allow open inline toolbar. This feature is implemented on the basis of the `inline-popup` plugin, a setting has been + added to it: `popup.toolbar`, which lists the buttons that will be shown in such a toolbar. Added the `showInline` + method to the `ToolbarEditorCollection` itself: + +```js +const editor = Jodit.make('#editor', { + preset: 'inline', + popup: { + toolbar: Jodit.atom(['bold', 'italic', 'image']) + } +}); +editor.s.focus(); + +editor.toolbar.showInline(); +// or +editor.e.fire('showInlineToolbar'); +``` + +Also added `ToolbarCollection.hide` and `ToolbarCollection.show` methods. + +```js +const editor = Jodit.make('#editor'); +editor.toolbar.hide(); +editor.toolbar.show(); +``` + +- Allow use prototype as component name + +```js +console.log(Jodit.modules.UIButton.getFullElName('element')); // jodit-ui-button__element +console.log(Jodit.modules.UIButton.componentName); // jodit-ui-button +``` + +- [Remember last opened folder with FileBrowser #675](https://github.com/xdan/jodit/issues/675) + Boolean option `filebrowser.saveStateInStorage` split to dictionary: + +```typescript +interface IFileBrowserOptions { + saveStateInStorage: + | false + | { + storeLastOpenedFolder?: boolean; + storeView?: boolean; + storeSortBy?: boolean; + }; +} +``` + +By default: + +```js +opt = { + saveStateInStorage: { + storeLastOpenedFolder: true, + storeView: true, + storeSortBy: true + } +}; +``` + +Disable it: + +```js +Jodit.make('#editor', { + filebrowser: { + saveStateInStorage: false + } +}); + +// or + +Jodit.make('#editor', { + filebrowser: { + saveStateInStorage: { + storeLastOpenedFolder: false + } + } +}); +``` + +- [Spacer in Button Toolbar](https://github.com/xdan/jodit/issues/713) + In addition to the `|` metacharacters and `\n` which stand for separator and newline, the `---` metacharacter has + appeared, which allows you to add a spacer element which pushes all buttons behind the spacer to the right side of the + toolbar and creates space in the middle. + +```js +Jodit.make('#editor', { + buttons: [ + 'source', + 'bold', + '|', + '---', + '|', + 'brush', + 'about', + '\n', + 'italic' + ] +}); +``` + +## 3.9.4 + +#### :rocket: New Feature + +- Changed style resize rectangle for resize image or table +- Added link `POWERED BY JODIT` in statusbar +- Changed icon for resize handle in the bottom right corner + +#### :bug: Bug Fix + +- Fixed popup color for dark theme +- [Change html tags when list style on/off #738](https://github.com/xdan/jodit/issues/738) +- [order list/unorder list in source view #732](https://github.com/xdan/jodit/issues/732) +- [dots supplementary buttons shown incorrectly #692](https://github.com/xdan/jodit/issues/692) +- [Jodit adds unexpected tag when user lefts cursor inside +``` + +#### :bug: Bug Fix + +- Hide popup after deleting target node with key press. +- [image-editor : onChangeSizeInput #663](https://github.com/xdan/jodit/issues/663) +- [image-editor : switcher #662](https://github.com/xdan/jodit/issues/662) Replace buttons to switcher +- [Error from ESlint, please fix it #658](https://github.com/xdan/jodit/issues/658) +- [Support Mobile platform’s slide to type feature. #654](https://github.com/xdan/jodit/issues/654) +- [The Jodit eraser tool doesn't work for

tags #652](https://github.com/xdan/jodit/issues/652) +- [Links at the end of editor after unlink #648](https://github.com/xdan/jodit/issues/648) + +## 3.6.7 + +#### :bug: Bug Fix + +- When deleting a file via the context menu - the list of files was not updated. + +#### :rocket: New Feature + +- Added the ability to open a file browser and any dialog in a new window. To do this, you need to define + the `ownerWindow` field. For example, this can be done so that the file browser opens in a separate popup window. + +```js +const editor = Jodit.make('#editor', { + uploader: { + url: 'https://xdsoft.net/jodit/connector/index.php?action=fileUpload' + }, + filebrowser: { + ajax: { + url: 'https://xdsoft.net/jodit/connector/index.php' + } + } +}); + +// Rewrite default filebrowser instance +editor.e.on('getInstanceFileBrowser', options => { + const win = window.open( + 'about:blank', + 'File Browser', + 'location=0,menubar=0,status=0,toolbar=0,titlebar=0,width=700,height=500' + ); + + win.document.open(); + // Need append css for Jodit + win.document.write( + 'File Browser!' + ); + win.document.close(); + + const browser = new Jodit.modules.FileBrowser({ + ownerWindow: win, // set window which will be used for opening + headerButtons: [], // disable buttns - close and fullscreen + fullsize: true, + events: { + beforeOpen: () => { + win.focus(); + }, + afterClose: () => { + win.close(); + } + }, + ajax: options.ajax + }); + + browser.noCache = true; // Becouse window can be closed - create instance on every getInstanceFileBrowser + + return browser; +}); +``` + +## 3.6.5 + +#### :boom: Breaking Change + +- Removed options: `useIframeResizer`, `useImgResizer`, `useTableResizer` from `resizer` plugin. Instead, + added `allowResizeTags`. + +```js +Config.prototype.allowResizeTags = ['img', 'iframe', 'table', 'jodit']; +``` + +## 3.6.2 + +#### :bug: Bug Fix + +- [Error when resizing tables and tables cells](https://github.com/xdan/jodit/issues/611) +- [Image and video resizing in the table does not work correctly](https://github.com/xdan/jodit/issues/528) +- [The link popup closes when trying to add it to an image inside a table. #524](https://github.com/xdan/jodit/issues/524) +- Fixed a bug when command `emptyTable` didn't work. + +## 3.6.1 + +#### :bug: Bug Fix + +- ["),n.document.close(),(0,a.previewBox)(e,void 0,"px",n.document.body));let t=n.document.createElement("style");t.innerHTML=`@media print { + body { + -webkit-print-color-adjust: exact; + } + }`,n.document.head.appendChild(t),n.focus(),n.print()}},mode:n.MODE_SOURCE+n.MODE_WYSIWYG,tooltip:"Print"},r.pluginSystem.add("print",function(e){e.registerButton({name:"print"})})},59758:function(e,t,i){"use strict";var n=i(25045),o=i(81937),r=i(28077),s=i(18855),a=i(29434),l=i(5266),c=i(34045),u=i.n(c),d=i(39199),h=i.n(d);a.Icon.set("redo",u()).set("undo",h()),l.Config.prototype.controls.redo={mode:o.MODE_SPLIT,isDisabled:e=>!e.history.canRedo(),tooltip:"Redo"},l.Config.prototype.controls.undo={mode:o.MODE_SPLIT,isDisabled:e=>!e.history.canUndo(),tooltip:"Undo"};class p extends s.Plugin{beforeDestruct(){}afterInit(e){let t=t=>(e.history[t](),!1);e.registerCommand("redo",{exec:t,hotkeys:["ctrl+y","ctrl+shift+z","cmd+y","cmd+shift+z"]}),e.registerCommand("undo",{exec:t,hotkeys:["ctrl+z","cmd+z"]})}constructor(...e){super(...e),(0,n._)(this,"buttons",[{name:"undo",group:"history"},{name:"redo",group:"history"}])}}r.pluginSystem.add("redoUndo",p)},51822:function(e,t,i){"use strict";i(5266).Config.prototype.tableAllowCellResize=!0},14248:function(e,t,i){"use strict";var n=i(25045),o=i(31635),r=i(81937),s=i(84839),a=i(23211),l=i(28077),c=i(65946),u=i(60936);i(51822);let d="table_processor_observer-resize";class h extends u.Plugin{get module(){return this.j.getInstance("Table",this.j.o)}get isRTL(){return"rtl"===this.j.o.direction}showResizeHandle(){this.j.async.clearTimeout(this.hideTimeout),this.j.workplace.appendChild(this.resizeHandler)}hideResizeHandle(){this.hideTimeout=this.j.async.setTimeout(()=>{a.Dom.safeRemove(this.resizeHandler)},{timeout:this.j.defaultTimeout,label:"hideResizer"})}onHandleMouseDown(e){if(this.j.isLocked)return;this.drag=!0,this.j.e.on(this.j.ow,"mouseup.resize-cells touchend.resize-cells",this.onMouseUp).on(this.j.ew,"mousemove.table touchmove.table",this.onMouseMove),this.startX=e.clientX,this.j.lock(d),this.resizeHandler.classList.add("jodit-table-resizer_moved");let t,i=this.workTable.getBoundingClientRect();if(this.minX=0,this.maxX=1e6,null!=this.wholeTable)i=this.workTable.parentNode.getBoundingClientRect(),this.minX=i.left,this.maxX=this.minX+i.width;else{let e=this.module.formalCoordinate(this.workTable,this.workCell,!0);this.module.formalMatrix(this.workTable,(i,n,o)=>{e[1]===o&&(t=i.getBoundingClientRect(),this.minX=Math.max(t.left+r.NEARBY/2,this.minX)),e[1]+(this.isRTL?-1:1)===o&&(t=i.getBoundingClientRect(),this.maxX=Math.min(t.left+t.width-r.NEARBY/2,this.maxX))})}return!1}onMouseMove(e){if(!this.drag)return;this.j.e.fire("closeAllPopups");let t=e.clientX,i=(0,c.offset)(this.resizeHandler.parentNode||this.j.od.documentElement,this.j,this.j.od,!0);tthis.maxX&&(t=this.maxX),this.resizeDelta=t-this.startX+(this.j.o.iframe?i.left:0),this.resizeHandler.style.left=t-(this.j.o.iframe?0:i.left)+"px";let n=this.j.s.sel;n&&n.removeAllRanges()}onMouseUp(e){(this.selectMode||this.drag)&&(this.selectMode=!1,this.j.unlock()),this.resizeHandler&&this.drag&&(this.drag=!1,this.j.e.off(this.j.ew,"mousemove.table touchmove.table",this.onMouseMove),this.resizeHandler.classList.remove("jodit-table-resizer_moved"),this.startX!==e.clientX&&(null==this.wholeTable?this.resizeColumns():this.resizeTable()),this.j.synchronizeValues(),this.j.s.focus())}resizeColumns(){let e=this.resizeDelta,t=[],i=this.module;i.setColumnWidthByDelta(this.workTable,i.formalCoordinate(this.workTable,this.workCell,!0)[1],e,!0,t);let n=(0,c.call)(this.isRTL?a.Dom.prev:a.Dom.next,this.workCell,a.Dom.isCell,this.workCell.parentNode);i.setColumnWidthByDelta(this.workTable,i.formalCoordinate(this.workTable,n)[1],-e,!1,t)}resizeTable(){let e=this.resizeDelta*(this.isRTL?-1:1),t=this.workTable.offsetWidth,i=(0,c.getContentWidth)(this.workTable.parentNode,this.j.ew),n=!this.wholeTable;if(this.isRTL?!n:n)this.workTable.style.width=(t+e)/i*100+"%";else{let n=this.isRTL?"marginRight":"marginLeft",o=parseInt(this.j.ew.getComputedStyle(this.workTable)[n]||"0",10);this.workTable.style.width=(t-e)/i*100+"%",this.workTable.style[n]=(o+e)/i*100+"%"}}setWorkCell(e,t=null){this.wholeTable=t,this.workCell=e,this.workTable=a.Dom.up(e,e=>a.Dom.isTag(e,"table"),this.j.editor)}calcHandlePosition(e,t,i=0,n=0){let o=(0,c.offset)(t,this.j,this.j.ed);if(i>r.NEARBY&&i{(0,c.$$)("table",e.editor).forEach(this.observe)}).on(this.j.ow,"scroll.resize-cells",()=>{if(!this.drag)return;let t=a.Dom.up(this.workCell,e=>a.Dom.isTag(e,"table"),e.editor);if(t){let e=t.getBoundingClientRect();this.resizeHandler.style.top=e.top+"px"}}).on("beforeSetMode.resize-cells",()=>{let t=this.module;t.getAllSelectedCells().forEach(i=>{t.removeSelection(i),t.normalizeTable(a.Dom.closest(i,"table",e.editor))})})}observe(e){(0,c.dataBind)(e,d)||((0,c.dataBind)(e,d,!0),this.j.e.on(e,"mouseleave.resize-cells",e=>{this.resizeHandler&&this.resizeHandler!==e.relatedTarget&&this.hideResizeHandle()}).on(e,"mousemove.resize-cells touchmove.resize-cells",this.j.async.throttle(t=>{if(this.j.isLocked)return;let i=a.Dom.up(t.target,a.Dom.isCell,e);i&&this.calcHandlePosition(e,i,t.offsetX)},{timeout:this.j.defaultTimeout})),this.createResizeHandle())}beforeDestruct(e){e.events&&(e.e.off(this.j.ow,".resize-cells"),e.e.off(".resize-cells"))}constructor(...e){super(...e),(0,n._)(this,"selectMode",!1),(0,n._)(this,"resizeDelta",0),(0,n._)(this,"resizeHandler",void 0),(0,n._)(this,"createResizeHandle",()=>{this.resizeHandler||(this.resizeHandler=this.j.c.div("jodit-table-resizer"),this.j.e.on(this.resizeHandler,"mousedown.table touchstart.table",this.onHandleMouseDown).on(this.resizeHandler,"mouseenter.table",()=>{this.j.async.clearTimeout(this.hideTimeout)}))}),(0,n._)(this,"hideTimeout",0),(0,n._)(this,"drag",!1),(0,n._)(this,"wholeTable",void 0),(0,n._)(this,"workCell",void 0),(0,n._)(this,"workTable",void 0),(0,n._)(this,"minX",0),(0,n._)(this,"maxX",0),(0,n._)(this,"startX",0)}}(0,o.__decorate)([s.autobind],h.prototype,"onHandleMouseDown",null),(0,o.__decorate)([s.autobind],h.prototype,"onMouseMove",null),(0,o.__decorate)([s.autobind],h.prototype,"onMouseUp",null),(0,o.__decorate)([s.autobind],h.prototype,"observe",null),l.pluginSystem.add("resizeCells",h)},58293:function(e,t,i){"use strict";var n=i(5266);n.Config.prototype.allowResizeX=!1,n.Config.prototype.allowResizeY=!0},72214:function(e,t,i){"use strict";var n=i(25045),o=i(31635),r=i(84839),s=i(27795),a=i(28077),l=i(91206),c=i(4099);i(58293);class u extends l.Plugin{afterInit(e){let{height:t,width:i,allowResizeX:n}=e.o,{allowResizeY:o}=e.o;"auto"===t&&"auto"!==i&&(o=!1),("auto"!==t||"auto"!==i)&&(n||o)&&(e.statusbar.setMod("resize-handle",!0),e.statusbar.show(),e.e.on("toggleFullSize.resizeHandler",()=>{this.handle.style.display=e.isFullSize?"none":"block"}).on(this.handle,"mousedown touchstart",this.onHandleResizeStart).on(e.ow,"mouseup touchend",this.onHandleResizeEnd),e.container.appendChild(this.handle))}onHandleResizeStart(e){this.isResized=!0,this.start.x=e.clientX,this.start.y=e.clientY,this.start.w=this.j.container.offsetWidth,this.start.h=this.j.container.offsetHeight,this.j.lock(),this.j.e.on(this.j.ow,"mousemove touchmove",this.onHandleResize),e.preventDefault()}onHandleResize(e){this.isResized&&(this.j.o.allowResizeY&&this.j.e.fire("setHeight",this.start.h+e.clientY-this.start.y),this.j.o.allowResizeX&&this.j.e.fire("setWidth",this.start.w+e.clientX-this.start.x),this.j.e.fire("resize"))}onHandleResizeEnd(){this.isResized&&(this.isResized=!1,this.j.e.off(this.j.ow,"mousemove touchmove",this.onHandleResize),this.j.unlock())}beforeDestruct(){s.Dom.safeRemove(this.handle),this.j.e.off(this.j.ow,"mouseup touchsend",this.onHandleResizeEnd)}constructor(...e){super(...e),(0,n._)(this,"isResized",!1),(0,n._)(this,"start",{x:0,y:0,w:0,h:0}),(0,n._)(this,"handle",this.j.c.div("jodit-editor__resize",c.Icon.get("resize_handler")))}}(0,n._)(u,"requires",["size"]),(0,o.__decorate)([r.autobind],u.prototype,"onHandleResizeStart",null),(0,o.__decorate)([r.autobind],u.prototype,"onHandleResize",null),(0,o.__decorate)([r.autobind],u.prototype,"onHandleResizeEnd",null),a.pluginSystem.add("resizeHandler",u)},96608:function(e,t,i){"use strict";var n=i(5266);n.Config.prototype.allowResizeTags=new Set(["img","iframe","table","jodit"]),n.Config.prototype.resizer={showSize:!0,hideSizeTimeout:1e3,forImageChangeAttributes:!0,min_width:10,min_height:10,useAspectRatio:new Set(["img"])}},74522:function(e,t,i){"use strict";var n=i(25045),o=i(31635),r=i(81937),s=i(84839),a=i(23211),l=i(28077),c=i(65946),u=i(18855);i(96608);let d="__jodit-resizer_binded";class h extends u.Plugin{afterInit(e){(0,c.$$)("div",this.rect).forEach(t=>{e.e.on(t,"mousedown.resizer touchstart.resizer",this.onStartResizing.bind(this,t))}),l.eventEmitter.on("hideHelpers",this.hide),e.e.on("readonly",e=>{e&&this.hide()}).on("afterInit changePlace",this.addEventListeners.bind(this)).on("afterGetValueFromEditor.resizer",e=>{let t=/]+data-jodit_iframe_wrapper[^>]+>(.*?]*>.*?<\/iframe>.*?)<\/jodit>/gi;t.test(e.value)&&(e.value=e.value.replace(t,"$1"))}),this.addEventListeners(),this.__onChangeEditor()}onEditorClick(e){let t=e.target,{editor:i,options:{allowResizeTags:n}}=this.j;for(;t&&t!==i;){if(a.Dom.isTag(t,n)){this.__bind(t),this.onClickElement(t);return}t=t.parentNode}}__afterInsertImage(e){if(this.j.o.resizer.forImageChangeAttributes)return;let t=(0,c.attr)(e,"width");t&&!(0,c.css)(e,"width",!0)&&((0,c.css)(e,"width",t),(0,c.attr)(e,"width",null))}addEventListeners(){let e=this.j;e.e.off(e.editor,".resizer").off(e.ow,".resizer").on(e.editor,"keydown.resizer",e=>{this.isShown&&e.key===r.KEY_DELETE&&this.element&&!a.Dom.isTag(this.element,"table")&&this.onDelete(e)}).on(e.ow,"resize.resizer",this.updateSize).on("resize.resizer",this.updateSize).on([e.ow,e.editor],"scroll.resizer",()=>{this.isShown&&!this.isResizeMode&&this.hide()}).on(e.ow,"keydown.resizer",this.onKeyDown).on(e.ow,"keyup.resizer",this.onKeyUp).on(e.ow,"mouseup.resizer touchend.resizer",this.onClickOutside)}onStartResizing(e,t){if(!this.element||!this.element.parentNode)return this.hide(),!1;this.handle=e,t.cancelable&&t.preventDefault(),t.stopImmediatePropagation(),this.width=this.element.offsetWidth,this.height=this.element.offsetHeight,this.ratio=this.width/this.height,this.isResizeMode=!0,this.startX=t.clientX,this.startY=t.clientY,this.pointerX=t.clientX,this.pointerY=t.clientY;let{j:i}=this;i.e.fire("hidePopup"),i.lock(this.LOCK_KEY),i.e.on(i.ow,"mousemove.resizer touchmove.resizer",this.onResize)}onEndResizing(){let{j:e}=this;e.unlock(),this.isResizeMode=!1,this.isAltMode=!1,e.synchronizeValues(),e.e.off(e.ow,"mousemove.resizer touchmove.resizer",this.onResize)}onResize(e){if(this.isResizeMode){let t,i;if(!this.element)return;if(this.pointerX=e.clientX,this.pointerY=e.clientY,this.j.options.iframe){let n=this.getWorkplacePosition();t=e.clientX+n.left-this.startX,i=e.clientY+n.top-this.startY}else t=this.pointerX-this.startX,i=this.pointerY-this.startY;let n=this.handle.className,o=0,r=0,s=this.j.o.resizer.useAspectRatio;!this.isAltMode&&(!0===s||s&&a.Dom.isTag(this.element,s))?(t?r=Math.round((o=this.width+(n.match(/left/)?-1:1)*t)/this.ratio):o=Math.round((r=this.height+(n.match(/top/)?-1:1)*i)*this.ratio),o>(0,c.innerWidth)(this.j.editor,this.j.ow)&&(r=Math.round((o=(0,c.innerWidth)(this.j.editor,this.j.ow))/this.ratio))):(o=this.width+(n.match(/left/)?-1:1)*t,r=this.height+(n.match(/top/)?-1:1)*i),o>this.j.o.resizer.min_width&&(othis.j.o.resizer.min_height&&this.applySize(this.element,"height",r),this.updateSize(),this.showSizeViewer(this.element.offsetWidth,this.element.offsetHeight),e.stopImmediatePropagation()}}onKeyDown(e){this.isAltMode=e.key===r.KEY_ALT,!this.isAltMode&&this.isResizeMode&&this.onEndResizing()}onKeyUp(){this.isAltMode&&this.isResizeMode&&this.element&&(this.width=this.element.offsetWidth,this.height=this.element.offsetHeight,this.ratio=this.width/this.height,this.startX=this.pointerX,this.startY=this.pointerY),this.isAltMode=!1}onClickOutside(e){if(this.isShown){if(!this.isResizeMode)return this.hide();e.stopImmediatePropagation(),this.onEndResizing()}}getWorkplacePosition(){return(0,c.offset)(this.rect.parentNode||this.j.od.documentElement,this.j,this.j.od,!0)}applySize(e,t,i){let n=a.Dom.isImage(e)&&this.j.o.resizer.forImageChangeAttributes;n&&(0,c.attr)(e,t,i),(!n||e.style[t])&&(0,c.css)(e,t,i)}onDelete(e){this.element&&("JODIT"!==this.element.tagName?this.j.s.select(this.element):(a.Dom.safeRemove(this.element),this.hide(),e.preventDefault()))}__onChangeEditor(){this.isShown&&(this.element&&this.element.parentNode?this.updateSize():this.hide()),(0,c.$$)("iframe",this.j.editor).forEach(this.__bind)}__bind(e){let t;if(!(!a.Dom.isHTMLElement(e)||!this.j.o.allowResizeTags.has(e.tagName.toLowerCase())||(0,c.dataBind)(e,d))){if((0,c.dataBind)(e,d,!0),a.Dom.isTag(e,"iframe")){let i=e;a.Dom.isHTMLElement(e.parentNode)&&(0,c.attr)(e.parentNode,"-jodit_iframe_wrapper")?e=e.parentNode:(t=this.j.createInside.element("jodit",{"data-jodit-temp":1,contenteditable:!1,draggable:!0,"data-jodit_iframe_wrapper":1}),(0,c.attr)(t,"style",(0,c.attr)(e,"style")),(0,c.css)(t,{display:"inline-block"===e.style.display?"inline-block":"block",width:e.offsetWidth,height:e.offsetHeight}),e.parentNode&&e.parentNode.insertBefore(t,e),t.appendChild(e),this.j.e.on(t,"click",()=>{(0,c.attr)(t,"data-jodit-wrapper_active",!0)}),e=t),this.j.e.off(e,"mousedown.select touchstart.select").on(e,"mousedown.select touchstart.select",()=>{this.j.s.select(e)}).off(e,"changesize").on(e,"changesize",()=>{(0,c.attr)(i,"width",e.offsetWidth+"px"),(0,c.attr)(i,"height",e.offsetHeight+"px")})}this.j.e.on(e,"dragstart",this.hide),!r.IS_ES_NEXT&&r.IS_IE&&this.j.e.on(e,"mousedown",t=>{a.Dom.isTag(e,"img")&&t.preventDefault()})}}showSizeViewer(e,t){if(this.j.o.resizer.showSize){if(e(0,c.attr)(e,"data-jodit-wrapper_active",!1)))}beforeDestruct(e){this.hide(),l.eventEmitter.off("hideHelpers",this.hide),e.e.off(this.j.ow,".resizer").off(".resizer")}constructor(...e){super(...e),(0,n._)(this,"LOCK_KEY","resizer"),(0,n._)(this,"handle",void 0),(0,n._)(this,"element",null),(0,n._)(this,"isResizeMode",!1),(0,n._)(this,"isShown",!1),(0,n._)(this,"startX",0),(0,n._)(this,"startY",0),(0,n._)(this,"width",0),(0,n._)(this,"height",0),(0,n._)(this,"ratio",0),(0,n._)(this,"rect",this.j.c.fromHTML(`

+
+
+
+
+ 100x100 +
`)),(0,n._)(this,"sizeViewer",this.rect.getElementsByTagName("span")[0]),(0,n._)(this,"pointerX",0),(0,n._)(this,"pointerY",0),(0,n._)(this,"isAltMode",!1),(0,n._)(this,"onClickElement",e=>{!this.isResizeMode&&(this.element===e&&this.isShown||(this.element=e,this.show(),a.Dom.isTag(this.element,"img")&&!this.element.complete&&this.j.e.one(this.element,"load",this.updateSize)))}),(0,n._)(this,"updateSize",()=>{if(!this.isInDestruct&&this.isShown&&this.element&&this.rect){let e=this.getWorkplacePosition(),t=(0,c.offset)(this.element,this.j,this.j.ed),i=parseInt(this.rect.style.left||"0",10),n=parseInt(this.rect.style.top||"0",10),o=this.rect.offsetWidth,r=this.rect.offsetHeight,s=t.top-e.top,a=t.left-e.left;(n!==s||i!==a||o!==this.element.offsetWidth||r!==this.element.offsetHeight)&&((0,c.css)(this.rect,{top:s,left:a,width:this.element.offsetWidth,height:this.element.offsetHeight}),this.j.events&&(this.j.e.fire(this.element,"changesize"),isNaN(i)||this.j.e.fire("resize")))}}),(0,n._)(this,"hideSizeViewer",()=>{this.sizeViewer.style.opacity="0"})}}(0,o.__decorate)([(0,s.watch)(":click")],h.prototype,"onEditorClick",null),(0,o.__decorate)([(0,s.watch)(":afterInsertImage")],h.prototype,"__afterInsertImage",null),(0,o.__decorate)([s.autobind],h.prototype,"onStartResizing",null),(0,o.__decorate)([s.autobind],h.prototype,"onEndResizing",null),(0,o.__decorate)([s.autobind],h.prototype,"onResize",null),(0,o.__decorate)([s.autobind],h.prototype,"onKeyDown",null),(0,o.__decorate)([s.autobind],h.prototype,"onKeyUp",null),(0,o.__decorate)([s.autobind],h.prototype,"onClickOutside",null),(0,o.__decorate)([(0,s.watch)(":change")],h.prototype,"__onChangeEditor",null),(0,o.__decorate)([s.autobind],h.prototype,"__bind",null),(0,o.__decorate)([s.autobind,(0,s.watch)(":hideResizer")],h.prototype,"hide",null),l.pluginSystem.add("resizer",h)},12266:function(e,t,i){"use strict";var n=i(81937),o=i(29434),r=i(5266),s=i(21917),a=i.n(s);r.Config.prototype.useSearch=!0,r.Config.prototype.search={lazyIdleTimeout:0,useCustomHighlightAPI:n.globalWindow&&void 0!==n.globalWindow.Highlight},o.Icon.set("search",a()),r.Config.prototype.controls.find={tooltip:"Find",icon:"search",exec(e,t,{control:i}){switch(i.args&&i.args[0]){case"findPrevious":e.e.fire("searchPrevious");break;case"findNext":e.e.fire("searchNext");break;case"replace":e.execCommand("openReplaceDialog");break;default:e.execCommand("openSearchDialog")}},list:{search:"Find",findNext:"Find Next",findPrevious:"Find Previous",replace:"Replace"},childTemplate:(e,t,i)=>i}},19213:function(e,t,i){"use strict";i.d(t,{clearSelectionWrappers:function(){return h},clearSelectionWrappersFromHTML:function(){return p},getSelectionWrappers:function(){return d},highlightTextRanges:function(){return u}});var n=i(81937),o=i(23211),r=i(28723);let s="jd-tmp-selection",a="background-color: var(--jd-color-background-selection); color: var(--jd-color-text-selection);",l=new WeakSet;function c(e,t){if(l.has(e))return;l.add(e);let i=t?`::highlight(jodit-search-result) { ${a} }`:`[${s}] { ${a} }`;try{let t=new CSSStyleSheet;t.insertRule(i),e.adoptedStyleSheets=[...e.adoptedStyleSheets,t]}catch{let t=e.createElement("style");t.textContent=i,e.head.appendChild(t)}}function u(e,t,i,r,a){if(null==t.startContainer.nodeValue||null==t.endContainer.nodeValue||function(e,t,i){if(e.o.search.useCustomHighlightAPI&&n.globalWindow&&void 0!==n.globalWindow.Highlight){let n=[t,...i].map(t=>{let i=e.selection.createRange();return i.setStart(t.startContainer,t.startOffset),i.setEnd(t.endContainer,t.endOffset),i});c(e.ed,!0);let o=new Highlight(...n);return CSS.highlights.clear(),CSS.highlights.set("jodit-search-result",o),i.length=0,!0}return!1}(e,t,i))return;c(e.ed,!1);let l=r.element("span",{[s]:!0});o.Dom.markTemporary(l),function(e,t,i){let n=e.startContainer.nodeValue,r=0;if(0!==e.startOffset){let t=i.text(n.substring(0,e.startOffset));e.startContainer.nodeValue=n.substring(e.startOffset),o.Dom.before(e.startContainer,t),e.startContainer===e.endContainer&&(r=e.startOffset,e.endOffset-=r),e.startOffset=0}let s=e.endContainer.nodeValue;if(e.endOffset!==s.length){let n=i.text(s.substring(e.endOffset));for(let i of(e.endContainer.nodeValue=s.substring(0,e.endOffset),o.Dom.after(e.endContainer,n),t))if(i.startContainer===e.endContainer)i.startContainer=n,i.startOffset=i.startOffset-e.endOffset-r,i.endContainer===e.endContainer&&(i.endContainer=n,i.endOffset=i.endOffset-e.endOffset-r);else break;e.endOffset=e.endContainer.nodeValue.length}}(t,i,r);let u=t.startContainer;do{var d;if(!u||(o.Dom.isText(u)&&(d=u.parentNode,!(o.Dom.isElement(d)&&d.hasAttribute(s)))&&o.Dom.wrap(u,l.cloneNode(),r),u===t.endContainer))break;let e=u.firstChild||u.nextSibling;if(!e){for(;u&&!u.nextSibling&&u!==a;)u=u.parentNode;e=u?.nextSibling}u=e}while(u&&u!==a)}function d(e){return(0,r.$$)(`[${s}]`,e)}function h(e){d(e.editor).forEach(e=>o.Dom.unwrap(e)),e.o.search.useCustomHighlightAPI&&n.globalWindow&&void 0!==n.globalWindow.Highlight&&CSS.highlights.clear()}function p(e){return e.replace(RegExp(`]+${s}[^>]+>(.*?)
`,"g"),"$1")}},87624:function(e,t,i){"use strict";i.d(t,{SentenceFinder:function(){return o.SentenceFinder},clearSelectionWrappers:function(){return n.clearSelectionWrappers},clearSelectionWrappersFromHTML:function(){return n.clearSelectionWrappersFromHTML},getSelectionWrappers:function(){return n.getSelectionWrappers},highlightTextRanges:function(){return n.highlightTextRanges}});var n=i(19213),o=i(59276)},59276:function(e,t,i){"use strict";i.d(t,{SentenceFinder:function(){return r}});var n=i(25045),o=i(57626);class r{add(e){let t=(e.nodeValue??"").toLowerCase();if(!t.length)return;let i=this.value.length;this.queue.push({startIndex:i,endIndex:i+t.length,node:e}),this.value+=t}ranges(e,t=0){let i=[],n=t,o=0,r=0;do if([n,o]=this.searchIndex(e,this.value,n),-1!==n){let e,t=0,s,a=0;for(let i=r;in&&(e=this.queue[i].node,t=n-this.queue[i].startIndex),e&&this.queue[i].endIndex>=n+o){s=this.queue[i].node,a=n+o-this.queue[i].startIndex,r=i;break}e&&s&&i.push({startContainer:e,startOffset:t,endContainer:s,endOffset:a}),n+=o}while(-1!==n)return 0===i.length?null:i}constructor(e=o.fuzzySearchIndex){(0,n._)(this,"searchIndex",void 0),(0,n._)(this,"queue",void 0),(0,n._)(this,"value",void 0),this.searchIndex=e,this.queue=[],this.value=""}}},30500:function(e,t,i){"use strict";var n=i(25045),o=i(31635),r=i(81937),s=i(84839),a=i(27795),l=i(28077),c=i(65946),u=i(91206);i(12266);var d=i(87624),h=i(58317);class p extends u.Plugin{get ui(){return new h.UISearch(this.j)}async updateCounters(){this.ui.isOpened&&(this.ui.count=await this.calcCounts(this.ui.query))}onPressReplaceButton(){this.findAndReplace(this.ui.query),this.updateCounters()}tryScrollToElement(e){let t=a.Dom.closest(e,a.Dom.isElement,this.j.editor);t||(t=a.Dom.prev(e,a.Dom.isElement,this.j.editor)),t&&t!==this.j.editor&&(0,c.scrollIntoViewIfNeeded)(t,this.j.editor,this.j.ed)}async calcCounts(e){return(await this.findQueryBounds(e,"walkerCount")).length}async findQueryBounds(e,t){let i=this[t];return i&&i.break(),i=new a.LazyWalker(this.j.async,{timeout:this.j.o.search.lazyIdleTimeout}),this[t]=i,this.find(i,e).catch(e=>(r.IS_PROD,[]))}async findAndReplace(e){let t=await this.findQueryBounds(e,"walker");if(!t.length)return!1;let i=this.findCurrentIndexInRanges(t,this.j.s.range);-1===i&&(i=0);let n=t[i];if(n){try{let t=this.j.ed.createRange();t.setStart(n.startContainer,n.startOffset),t.setEnd(n.endContainer,n.endOffset),t.deleteContents();let o=this.j.createInside.text(this.ui.replace);a.Dom.safeInsertNode(t,o),(0,d.clearSelectionWrappers)(this.j),this.j.s.setCursorAfter(o),this.tryScrollToElement(o),this.cache={},this.ui.currentIndex=i,await this.findAndSelect(e,!0).catch(e=>(r.IS_PROD,null))}finally{this.j.synchronizeValues()}return this.j.e.fire("afterFindAndReplace"),!0}return!1}async findAndSelect(e,t){let i=await this.findQueryBounds(e,"walker");if(!i.length)return!1;this.previousQuery===e&&(0,d.getSelectionWrappers)(this.j.editor).length||(this.drawPromise?.rejectCallback(),this.j.async.cancelAnimationFrame(this.wrapFrameRequest),(0,d.clearSelectionWrappers)(this.j),this.drawPromise=this.__drawSelectionRanges(i)),this.previousQuery=e;let n=this.ui.currentIndex-1;n=-1===n?0:t?n===i.length-1?0:n+1:0===n?i.length-1:n-1,this.ui.currentIndex=n+1;let o=i[n];if(o){let e=this.j.ed.createRange();try{e.setStart(o.startContainer,o.startOffset),e.setEnd(o.endContainer,o.endOffset),this.j.s.selectRange(e)}catch(e){r.IS_PROD}return this.tryScrollToElement(o.startContainer),await this.updateCounters(),await this.drawPromise,this.j.e.fire("afterFindAndSelect"),!0}return!1}findCurrentIndexInRanges(e,t){return e.findIndex(e=>e.startContainer===t.startContainer&&e.startOffset===t.startOffset&&e.endContainer===t.startContainer&&e.endOffset===t.endOffset)}async isValidCache(e){return(await e).every(e=>e.startContainer.isConnected&&e.startOffset<=(e.startContainer.nodeValue?.length??0)&&e.endContainer.isConnected&&e.endOffset<=(e.endContainer.nodeValue?.length??0))}async find(e,t){if(!t.length)return[];let i=this.cache[t];return i&&await this.isValidCache(i)?i:(this.cache[t]=this.j.async.promise(i=>{let n=new d.SentenceFinder(this.j.o.search.fuzzySearch);e.on("break",()=>{i([])}).on("visit",e=>(a.Dom.isText(e)&&n.add(e),!1)).on("end",()=>{i(n.ranges(t)??[])}).setWork(this.j.editor)}),this.cache[t])}__drawSelectionRanges(e){let{async:t,createInside:i,editor:n}=this.j;t.cancelAnimationFrame(this.wrapFrameRequest);let o=[...e],r,s=0;return t.promise(e=>{let a=()=>{do(r=o.shift())&&(0,d.highlightTextRanges)(this.j,r,o,i,n),s+=1;while(r&&s<=5)o.length?this.wrapFrameRequest=t.requestAnimationFrame(a):e()};a()})}onAfterGetValueFromEditor(e){e.value=(0,d.clearSelectionWrappersFromHTML)(e.value)}afterInit(e){if(e.o.useSearch){let t=this;e.e.on("beforeSetMode.search",()=>{this.ui.close()}).on(this.ui,"afterClose",()=>{(0,d.clearSelectionWrappers)(e),this.ui.currentIndex=0,this.ui.count=0,this.cache={},e.focus()}).on("click",()=>{this.ui.currentIndex=0,(0,d.clearSelectionWrappers)(e)}).on("change.search",()=>{this.cache={}}).on("keydown.search mousedown.search",e.async.debounce(()=>{this.ui.selInfo&&(e.s.removeMarkers(),this.ui.selInfo=null),this.ui.isOpened&&this.updateCounters()},e.defaultTimeout)).on("searchNext.search searchPrevious.search",()=>(this.ui.isOpened||this.ui.open(),t.findAndSelect(t.ui.query,"searchNext"===e.e.current).catch(e=>{r.IS_PROD}))).on("search.search",(e,i=!0)=>(this.ui.currentIndex=0,t.findAndSelect(e||"",i).catch(e=>{r.IS_PROD}))),e.registerCommand("search",{exec:(e,i,n=!0)=>(i&&t.findAndSelect(i,n).catch(e=>{r.IS_PROD}),!1)}).registerCommand("openSearchDialog",{exec:(e,i)=>(t.ui.open(i),!1),hotkeys:["ctrl+f","cmd+f"]}).registerCommand("openReplaceDialog",{exec:(i,n,o)=>(e.o.readonly||t.ui.open(n,o,!0),!1),hotkeys:["ctrl+h","cmd+h"]})}}beforeDestruct(e){(0,s.cached)(this,"ui")?.destruct(),e.e.off(".search")}constructor(...e){super(...e),(0,n._)(this,"buttons",[{name:"find",group:"search"}]),(0,n._)(this,"previousQuery",""),(0,n._)(this,"drawPromise",null),(0,n._)(this,"walker",null),(0,n._)(this,"walkerCount",null),(0,n._)(this,"cache",{}),(0,n._)(this,"wrapFrameRequest",0)}}(0,o.__decorate)([s.cache],p.prototype,"ui",null),(0,o.__decorate)([(0,s.watch)("ui:needUpdateCounters")],p.prototype,"updateCounters",null),(0,o.__decorate)([(0,s.watch)("ui:pressReplaceButton")],p.prototype,"onPressReplaceButton",null),(0,o.__decorate)([s.autobind],p.prototype,"findQueryBounds",null),(0,o.__decorate)([s.autobind],p.prototype,"findAndReplace",null),(0,o.__decorate)([s.autobind],p.prototype,"findAndSelect",null),(0,o.__decorate)([s.autobind],p.prototype,"find",null),(0,o.__decorate)([(0,s.watch)(":afterGetValueFromEditor")],p.prototype,"onAfterGetValueFromEditor",null),l.pluginSystem.add("search",p)},58317:function(e,t,i){"use strict";i.d(t,{UISearch:function(){return u}});var n=i(25045),o=i(31635),r=i(81937),s=i(84839),a=i(27795),l=i(65946),c=i(4099);class u extends c.UIElement{className(){return"UISearch"}render(){return`
+
+
+ + +
+
+ + 0/0 + +
+
+ + + + +
+
+
`}get currentIndex(){return this._currentIndex}set currentIndex(e){this._currentIndex=e,this.currentBox.innerText=e.toString()}set count(e){this.countBox.innerText=e.toString()}get query(){return this.queryInput.value}get replace(){return this.replaceInput.value}onEditorKeyDown(e){if(!this.isOpened)return;let{j:t}=this;if(t.getRealMode()===r.MODE_WYSIWYG)switch(e.key){case r.KEY_ESC:this.close();break;case r.KEY_F3:this.queryInput.value&&(t.e.fire(e.shiftKey?"searchPrevious":"searchNext"),e.preventDefault())}}open(e,t,i=!1){this.isOpened||(this.j.workplace.appendChild(this.container),this.isOpened=!0),this.calcSticky(this.j.e.fire("getStickyState.sticky")||!1),this.j.e.fire("hidePopup"),this.setMod("replace",i);let n=e??(this.j.s.sel||"").toString();n&&(this.queryInput.value=n),t&&(this.replaceInput.value=t),this.setMod("empty-query",!n.length),this.j.e.fire(this,"needUpdateCounters"),n?this.queryInput.select():this.queryInput.focus()}close(){this.isOpened&&(this.j.s.restore(),a.Dom.safeRemove(this.container),this.isOpened=!1,this.j.e.fire(this,"afterClose"))}calcSticky(e){if(this.isOpened)if(this.setMod("sticky",e),e){let e=(0,l.position)(this.j.toolbarContainer);(0,l.css)(this.container,{top:e.top+e.height,left:e.left+e.width})}else(0,l.css)(this.container,{top:null,left:null})}constructor(e){super(e),(0,n._)(this,"queryInput",void 0),(0,n._)(this,"replaceInput",void 0),(0,n._)(this,"selInfo",null),(0,n._)(this,"closeButton",void 0),(0,n._)(this,"replaceButton",void 0),(0,n._)(this,"currentBox",void 0),(0,n._)(this,"countBox",void 0),(0,n._)(this,"_currentIndex",0),(0,n._)(this,"isOpened",!1);const{query:t,replace:i,cancel:o,next:s,prev:a,replaceBtn:c,current:u,count:d}=(0,l.refs)(this.container);this.queryInput=t,this.replaceInput=i,this.closeButton=o,this.replaceButton=c,this.currentBox=u,this.countBox=d,e.e.on(this.closeButton,"pointerdown",()=>(this.close(),!1)).on(this.queryInput,"input",()=>{this.currentIndex=0}).on(this.queryInput,"pointerdown",()=>{e.s.isFocused()&&(e.s.removeMarkers(),this.selInfo=e.s.save())}).on(this.replaceButton,"pointerdown",()=>(e.e.fire(this,"pressReplaceButton"),!1)).on(s,"pointerdown",()=>(e.e.fire("searchNext"),!1)).on(a,"pointerdown",()=>(e.e.fire("searchPrevious"),!1)).on(this.queryInput,"input",()=>{this.setMod("empty-query",!(0,l.trim)(this.queryInput.value).length)}).on(this.queryInput,"keydown",this.j.async.debounce(async t=>{t.key===r.KEY_ENTER?(t.preventDefault(),t.stopImmediatePropagation(),await e.e.fire("searchNext")&&this.close()):e.e.fire(this,"needUpdateCounters")},this.j.defaultTimeout))}}(0,o.__decorate)([(0,s.watch)([":keydown","queryInput:keydown"])],u.prototype,"onEditorKeyDown",null),(0,o.__decorate)([s.autobind],u.prototype,"open",null),(0,o.__decorate)([s.autobind],u.prototype,"close",null),(0,o.__decorate)([(0,s.watch)(":toggleSticky")],u.prototype,"calcSticky",null),u=(0,o.__decorate)([s.component],u)},69070:function(e,t,i){"use strict";i(5266).Config.prototype.tableAllowCellSelection=!0},2756:function(e,t,i){"use strict";var n=i(25045),o=i(31635),r=i(81937),s=i(84839),a=i(23211),l=i(28077),c=i(65946),u=i(91206),d=i(98803);i(69070);let h="table_processor_observer",p="onMoveTableSelectCell";class f extends u.Plugin{get __tableModule(){return this.j.getInstance(d.Table,this.j.o)}afterInit(e){e.o.tableAllowCellSelection&&e.e.on("keydown.select-cells",e=>{e.key===r.KEY_TAB&&this.unselectCells()}).on("beforeCommand.select-cells",this.onExecCommand).on("afterCommand.select-cells",this.onAfterCommand).on(["clickEditor","mousedownTd","mousedownTh","touchstartTd","touchstartTh"].map(e=>e+".select-cells").join(" "),this.onStartSelection).on("clickTr clickTbody",()=>{let e=this.__tableModule.getAllSelectedCells().length;if(e)return e>1&&this.j.s.sel?.removeAllRanges(),!1})}onStartSelection(e){if(this.j.o.readonly||(this.unselectCells(),e===this.j.editor))return;let t=a.Dom.closest(e,"table",this.j.editor);if(e&&t)return e.firstChild||e.appendChild(this.j.createInside.element("br")),this.__isSelectionMode=!0,this.__selectedCell=e,this.__tableModule.addSelection(e),this.j.e.on(t,"mousemove.select-cells touchmove.select-cells",this.j.async.throttle(this.__onMove.bind(this,t),{label:p,timeout:this.j.defaultTimeout/2})).on(t,"mouseup.select-cells touchend.select-cells",this.__onStopSelection.bind(this,t)),!1}onOutsideClick(){this.__selectedCell=null,this.__onRemoveSelection()}onChange(){this.j.isLocked||this.__isSelectionMode||this.__onRemoveSelection()}__onMove(e,t){let i;if(this.j.o.readonly&&!this.j.isLocked||this.j.isLockedNotBy(h))return;let n=this.j.ed.elementFromPoint(t.clientX,t.clientY);if(!n)return;let o=a.Dom.closest(n,["td","th"],e);if(!o||!this.__selectedCell)return;o!==this.__selectedCell&&this.j.lock(h),this.unselectCells();let r=this.__tableModule.getSelectedBound(e,[o,this.__selectedCell]),s=this.__tableModule.formalMatrix(e);for(let e=r[0][0];e<=r[1][0];e+=1)for(let t=r[0][1];t<=r[1][1];t+=1)this.__tableModule.addSelection(s[e][t]);this.__tableModule.getAllSelectedCells().length>1&&this.j.s.sel?.removeAllRanges(),this.j.e.fire("hidePopup"),t.stopPropagation(),i=this.j.createInside.fromHTML('
 
'),o.appendChild(i),this.j.async.setTimeout(()=>{i.parentNode?.removeChild(i)},this.j.defaultTimeout/5)}__onRemoveSelection(e){if(!e?.buffer?.actionTrigger&&!this.__selectedCell&&this.__tableModule.getAllSelectedCells().length){this.j.unlock(),this.unselectCells(),this.j.e.fire("hidePopup","cells");return}this.__isSelectionMode=!1,this.__selectedCell=null}__onStopSelection(e,t){if(!this.__selectedCell)return;this.__isSelectionMode=!1,this.j.unlock();let i=this.j.ed.elementFromPoint(t.clientX,t.clientY);if(!i)return;let n=a.Dom.closest(i,["td","th"],e);if(!n)return;let o=a.Dom.closest(n,"table",e);if(o&&o!==e)return;let r=this.__tableModule.getSelectedBound(e,[n,this.__selectedCell]),s=this.__tableModule.formalMatrix(e),l=s[r[1][0]][r[1][1]],u=s[r[0][0]][r[0][1]];this.j.e.fire("showPopup",e,()=>{let e=(0,c.position)(u,this.j),t=(0,c.position)(l,this.j);return{left:e.left,top:e.top,width:t.left-e.left+t.width,height:t.top-e.top+t.height}},"cells"),(0,c.$$)("table",this.j.editor).forEach(e=>{this.j.e.off(e,"mousemove.select-cells touchmove.select-cells mouseup.select-cells touchend.select-cells")}),this.j.async.clearTimeout(p)}unselectCells(e){let t=this.__tableModule,i=t.getAllSelectedCells();i.length&&i.forEach(i=>{e&&e===i||t.removeSelection(i)})}onExecCommand(e){if(/table(splitv|splitg|merge|empty|bin|binrow|bincolumn|addcolumn|addrow)/.test(e)){e=e.replace("table","");let t=this.__tableModule.getAllSelectedCells();if(t.length){let[i]=t;if(!i)return;let n=a.Dom.closest(i,"table",this.j.editor);if(!n)return;switch(e){case"splitv":this.__tableModule.splitVertical(n);break;case"splitg":this.__tableModule.splitHorizontal(n);break;case"merge":this.__tableModule.mergeSelected(n);break;case"empty":t.forEach(e=>a.Dom.detach(e));break;case"bin":a.Dom.safeRemove(n);break;case"binrow":new Set(t.map(e=>e.parentNode)).forEach(e=>{this.__tableModule.removeRow(n,e.rowIndex)});break;case"bincolumn":{let e=new Set,i=[];t.forEach(t=>{let[,o]=this.__tableModule.formalCoordinate(n,t);e.has(o)||(i.push(o),e.add(o))}),i.sort((e,t)=>t-e).forEach(e=>{this.__tableModule.removeColumn(n,e)})}break;case"addcolumnafter":case"addcolumnbefore":this.__tableModule.appendColumn(n,i,"addcolumnafter"===e);break;case"addrowafter":case"addrowbefore":this.__tableModule.appendRow(n,i.parentNode,"addrowafter"===e)}}return!1}}onAfterCommand(e){/^justify/.test(e)&&this.__tableModule.getAllSelectedCells().forEach(t=>(0,c.alignElement)(e,t))}beforeDestruct(e){this.__onRemoveSelection(),e.e.off(".select-cells")}constructor(...e){super(...e),(0,n._)(this,"__selectedCell",null),(0,n._)(this,"__isSelectionMode",!1)}}(0,n._)(f,"requires",["select"]),(0,o.__decorate)([s.autobind],f.prototype,"onStartSelection",null),(0,o.__decorate)([(0,s.watch)(":outsideClick")],f.prototype,"onOutsideClick",null),(0,o.__decorate)([(0,s.watch)(":change")],f.prototype,"onChange",null),(0,o.__decorate)([s.autobind],f.prototype,"__onRemoveSelection",null),(0,o.__decorate)([s.autobind],f.prototype,"__onStopSelection",null),(0,o.__decorate)([s.autobind],f.prototype,"onExecCommand",null),(0,o.__decorate)([s.autobind],f.prototype,"onAfterCommand",null),l.pluginSystem.add("selectCells",f)},47670:function(e,t,i){"use strict";i(5266).Config.prototype.select={normalizeSelectionBeforeCutAndCopy:!1,normalizeTripleClick:!0}},98988:function(e,t,i){"use strict";var n=i(25045),o=i(31635),r=i(84839),s=i(23211),a=i(28077),l=i(57821),c=i(91206),u=i(4099);i(47670);class d extends c.Plugin{afterInit(e){this.proxyEventsList.forEach(t=>{e.e.on(t+".select",this.onStartSelection)})}beforeDestruct(e){this.proxyEventsList.forEach(t=>{e.e.on(t+".select",this.onStartSelection)})}onStartSelection(e){let{j:t}=this,i,n=e.target;for(;void 0===i&&n&&n!==t.editor;)i=t.e.fire((0,l.camelCase)(e.type+"_"+n.nodeName.toLowerCase()),n,e),n=n.parentElement;"click"===e.type&&void 0===i&&n===t.editor&&t.e.fire(e.type+"Editor",n,e)}onOutsideClick(e){let t=e.target;s.Dom.up(t,e=>e===this.j.editor)||u.UIElement.closestElement(t,u.Popup)||this.j.e.fire("outsideClick",e)}beforeCommandCut(){let{s:e}=this.j;if(!e.isCollapsed()){let t=e.current();t&&s.Dom.isOrContains(this.j.editor,t)&&this.onCopyNormalizeSelectionBound()}}beforeCommandSelectAll(){let{s:e}=this.j;return e.focus(),e.select(this.j.editor,!0),e.expandSelection(),!1}onTripleClickNormalizeSelection(e){if(3!==e.detail||!this.j.o.select.normalizeTripleClick)return;let{s:t}=this.j,{startContainer:i,startOffset:n}=t.range;0===n&&s.Dom.isText(i)&&t.select(s.Dom.closest(i,s.Dom.isBlock,this.j.editor)||i,!0)}onCopyNormalizeSelectionBound(e){let{s:t,editor:i,o:n}=this.j;!n.select.normalizeSelectionBeforeCutAndCopy||t.isCollapsed()||(!e||e.isTrusted&&s.Dom.isNode(e.target)&&s.Dom.isOrContains(i,e.target))&&this.jodit.s.expandSelection()}constructor(...e){super(...e),(0,n._)(this,"proxyEventsList",["click","mousedown","touchstart","mouseup","touchend"])}}(0,o.__decorate)([r.autobind],d.prototype,"onStartSelection",null),(0,o.__decorate)([(0,r.watch)("ow:click")],d.prototype,"onOutsideClick",null),(0,o.__decorate)([(0,r.watch)([":beforeCommandCut"])],d.prototype,"beforeCommandCut",null),(0,o.__decorate)([(0,r.watch)([":beforeCommandSelectall"])],d.prototype,"beforeCommandSelectAll",null),(0,o.__decorate)([(0,r.watch)([":click"])],d.prototype,"onTripleClickNormalizeSelection",null),(0,o.__decorate)([(0,r.watch)([":copy",":cut"])],d.prototype,"onCopyNormalizeSelectionBound",null),a.pluginSystem.add("select",d)},80202:function(e,t,i){"use strict";var n=i(5266);n.Config.prototype.minWidth=200,n.Config.prototype.maxWidth="100%",n.Config.prototype.minHeight=200,n.Config.prototype.maxHeight="auto",n.Config.prototype.saveHeightInStorage=!1},44322:function(e,t,i){"use strict";var n=i(25045),o=i(31635),r=i(84839),s=i(28077),a=i(72412),l=i(80991),c=i(18855);i(80202);class u extends c.Plugin{afterInit(e){e.e.on("setHeight.size",this.__setHeight).on("setWidth.size",this.__setWidth).on("afterInit.size changePlace.size",this.__initialize,{top:!0}).on(e.ow,"load.size",this.__resizeWorkspaces).on("afterInit.size resize.size afterUpdateToolbar.size scroll.size afterResize.size",this.__resizeWorkspaces).on("toggleFullSize.size toggleToolbar.size",this.__resizeWorkspaceImd),this.__immediateInitialize()}__initialize(){this.__immediateInitialize()}__immediateInitialize(){let{j:e}=this;if(e.o.inline)return;let{height:t}=e.o;if(e.o.saveHeightInStorage&&"auto"!==t){let i=e.storage.get("height");i&&(t=i)}(0,l.css)(e.editor,{minHeight:"100%"}),(0,l.css)(e.container,{minHeight:e.o.minHeight,maxHeight:e.o.maxHeight,minWidth:e.o.minWidth,maxWidth:e.o.maxWidth}),e.isFullSize||(this.__setHeight(t),this.__setWidth(e.o.width))}__setHeight(e){let{clientHeight:t,clientWidth:i}=this.j.container;if((0,a.isNumber)(e)){let{minHeight:t,maxHeight:i}=this.j.o;(0,a.isNumber)(t)&&t>e&&(e=t),(0,a.isNumber)(i)&&ie&&(e=t),(0,a.isNumber)(i)&&e>i&&(e=i)}(0,l.css)(this.j.container,"width",e),this.__resizeWorkspaceImd({clientHeight:t,clientWidth:i})}__getNotWorkHeight(){return(this.j.toolbarContainer?.offsetHeight||0)+(this.j.statusbar?.getHeight()||0)+2}__resizeWorkspaceImd({clientHeight:e,clientWidth:t}=this.j.container){if(!this.j||this.j.isDestructed||!this.j.o||this.j.o.inline||!this.j.container||!this.j.container.parentNode)return;let i=((0,l.css)(this.j.container,"minHeight")||0)-this.__getNotWorkHeight();if((0,a.isNumber)(i)&&i>0&&([this.j.workplace,this.j.currentPlace.slots.center,this.j.iframe,this.j.editor].map(e=>{e&&(0,l.css)(e,"minHeight",i)}),this.j.e.fire("setMinHeight",i)),(0,a.isNumber)(this.j.o.maxHeight)){let e=this.j.o.maxHeight-this.__getNotWorkHeight();[this.j.workplace,this.j.currentPlace.slots.center,this.j.iframe,this.j.editor].map(t=>{t&&(0,l.css)(t,"maxHeight",e)}),this.j.e.fire("setMaxHeight",e)}if(this.j.container){let e="auto"!==this.j.o.height||this.j.isFullSize?this.j.container.offsetHeight-this.__getNotWorkHeight():"auto";(0,l.css)(this.j.workplace,"height",e),this.j.container.style.setProperty("--jd-jodit-workplace-height",(0,a.isNumber)(e)?e+"px":e)}let{clientHeight:n,clientWidth:o}=this.j.container;(e!==n||t!==o)&&this.j.e.fire(this.j,"resize")}beforeDestruct(e){e.e.off(e.ow,"load.size",this.__resizeWorkspaces).off(".size")}constructor(...e){super(...e),(0,n._)(this,"__resizeWorkspaces",this.j.async.debounce(this.__resizeWorkspaceImd,this.j.defaultTimeout,!0))}}(0,o.__decorate)([(0,r.throttle)()],u.prototype,"__initialize",null),(0,o.__decorate)([r.autobind],u.prototype,"__setHeight",null),(0,o.__decorate)([r.autobind],u.prototype,"__setWidth",null),(0,o.__decorate)([r.autobind],u.prototype,"__resizeWorkspaceImd",null),s.pluginSystem.add("size",u)},18929:function(e,t,i){"use strict";var n=i(81937),o=i(29434),r=i(5266),s=i(9103),a=i.n(s);r.Config.prototype.beautifyHTML=!n.IS_IE,r.Config.prototype.sourceEditor="ace",r.Config.prototype.sourceEditorNativeOptions={showGutter:!0,theme:"ace/theme/idle_fingers",mode:"ace/mode/html",wrap:!0,highlightActiveLine:!0},r.Config.prototype.sourceEditorCDNUrlsJS=["https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.2/ace.js"],r.Config.prototype.beautifyHTMLCDNUrlsJS=["https://cdnjs.cloudflare.com/ajax/libs/js-beautify/1.14.4/beautify.min.js","https://cdnjs.cloudflare.com/ajax/libs/js-beautify/1.14.4/beautify-html.min.js"],o.Icon.set("source",a()),r.Config.prototype.controls.source={mode:n.MODE_SPLIT,exec(e){e.toggleMode()},isActive:e=>e.getRealMode()===n.MODE_SOURCE,tooltip:"Change mode"}},94978:function(e,t,i){"use strict";i.d(t,{AceEditor:function(){return a}});var n=i(25045),o=i(81937),r=i(65946),s=i(94193);class a extends s.SourceEditor{aceExists(){return void 0!==this.j.ow.ace}getLastColumnIndex(e){return this.instance.session.getLine(e).length}getLastColumnIndices(){let e=this.instance.session.getLength(),t=[],i=0;for(let n=0;e>n;n++)i+=this.getLastColumnIndex(n),n>0&&(i+=1),t[n]=i;return t}getRowColumnIndices(e){let t=this.getLastColumnIndices();if(e<=t[0])return{row:0,column:e};let i=1;for(let n=1;nt[n]&&(i=n+1);let n=e-t[i-1]-1;return{row:i,column:n}}setSelectionRangeIndices(e,t){let i=this.getRowColumnIndices(e),n=this.getRowColumnIndices(t);this.instance.getSelection().setSelectionRange({start:i,end:n})}getIndexByRowColumn(e,t){return this.getLastColumnIndices()[e]-this.getLastColumnIndex(e)+t}init(e){let t=()=>{if(void 0!==this.instance||!this.aceExists())return;let t=this.j.c.div("jodit-source__mirror-fake");this.container.appendChild(t);let i=e.ow.ace;this.instance=i.edit(t),"rtl"===e.o.direction&&(this.instance.setOption("rtlText",!0),this.instance.setOption("rtl",!0)),this.instance.setTheme(e.o.sourceEditorNativeOptions.theme),this.instance.renderer.setShowGutter(e.o.sourceEditorNativeOptions.showGutter),this.instance.getSession().setMode(e.o.sourceEditorNativeOptions.mode),this.instance.setHighlightActiveLine(e.o.sourceEditorNativeOptions.highlightActiveLine),this.instance.getSession().setUseWrapMode(!0),this.instance.setOption("indentedSoftWrap",!1),this.instance.setOption("wrap",e.o.sourceEditorNativeOptions.wrap),this.instance.getSession().setUseWorker(!1),this.instance.$blockScrolling=1/0,this.instance.on("change",this.toWYSIWYG),this.instance.on("focus",this.proxyOnFocus),this.instance.on("mousedown",this.proxyOnMouseDown),this.instance.on("blur",this.proxyOnBlur),e.getRealMode()!==o.MODE_WYSIWYG&&this.setValue(this.getValue());let n=this.j.async.throttle(()=>{if(e.isInDestruct||e.getMode()===o.MODE_WYSIWYG)return;let t=this.instance.isFocused();"auto"!==e.o.height?this.instance.setOption("maxLines",e.workplace.offsetHeight/this.instance.renderer.lineHeight):this.instance.setOption("maxLines",1/0),this.instance.resize(),t&&this.focus()},2*this.j.defaultTimeout);e.e.on(e,"resize",n).on("afterResize afterSetMode",n),n(),this.onReady()},i=()=>{e.isInDestruct||e.getRealMode()!==o.MODE_SOURCE&&e.getMode()!==o.MODE_SPLIT||(this.fromWYSIWYG(),t())};e.e.on("afterSetMode",i),i(),this.aceExists()||(0,r.loadNext)(e,e.o.sourceEditorCDNUrlsJS).then(i).catch(()=>null)}destruct(){this.instance.off("change",this.toWYSIWYG),this.instance.off("focus",this.proxyOnFocus),this.instance.off("mousedown",this.proxyOnMouseDown),this.instance.destroy(),this.j?.events?.off("aceInited.source")}setValue(e){if(!this.j.o.editHTMLDocumentMode&&this.j.o.beautifyHTML){let t=this.j.e.fire("beautifyHTML",e);(0,r.isString)(t)&&(e=t)}this.instance.setValue(e),this.instance.clearSelection()}getValue(){return this.instance.getValue()}setReadOnly(e){this.instance.setReadOnly(e)}get isFocused(){return this.instance.isFocused()}focus(){this.instance.container.focus(),this.instance.focus()}blur(){this.instance.blur()}getSelectionStart(){let e=this.instance.selection.getRange();return this.getIndexByRowColumn(e.start.row,e.start.column)}getSelectionEnd(){let e=this.instance.selection.getRange();return this.getIndexByRowColumn(e.end.row,e.end.column)}selectAll(){this.instance.selection.selectAll()}insertRaw(e){let t=this.instance.selection.getCursor(),i=this.instance.session.insert(t,e);this.instance.selection.setRange({start:t,end:i},!1)}setSelectionRange(e,t){this.setSelectionRangeIndices(e,t)}setPlaceHolder(e){}replaceUndoManager(){let{history:e}=this.jodit;this.instance.commands.addCommand({name:"Undo",bindKey:{win:"Ctrl-Z",mac:"Command-Z"},exec(){e.undo()}}),this.instance.commands.addCommand({name:"Redo",bindKey:{win:"Ctrl-Shift-Z",mac:"Command-Shift-Z"},exec(){e.redo()}})}constructor(...e){super(...e),(0,n._)(this,"className","jodit_ace_editor"),(0,n._)(this,"proxyOnBlur",e=>{this.j.e.fire("blur",e)}),(0,n._)(this,"proxyOnFocus",e=>{this.j.e.fire("focus",e)}),(0,n._)(this,"proxyOnMouseDown",e=>{this.j.e.fire("mousedown",e)})}}},45844:function(e,t,i){"use strict";i.d(t,{TextAreaEditor:function(){return l}});var n=i(25045),o=i(23211),r=i(7909),s=i(80991),a=i(94193);class l extends a.SourceEditor{init(e){this.instance=e.c.element("textarea",{class:"jodit-source__mirror",dir:"rtl"===e.o.direction?"rtl":void 0}),this.container.appendChild(this.instance),e.e.on(this.instance,"mousedown keydown touchstart input",e.async.debounce(this.toWYSIWYG,e.defaultTimeout)).on("setMinHeight.source",e=>{(0,s.css)(this.instance,"minHeight",e)}).on(this.instance,"change keydown mousedown touchstart input",this.autosize).on("afterSetMode.source",this.autosize).on(this.instance,"mousedown focus blur",t=>{e.e.fire(t.type,t)}),this.autosize(),this.onReady()}destruct(){o.Dom.safeRemove(this.instance)}getValue(){return this.instance.value}setValue(e){this.instance.value=e}insertRaw(e){let t=this.getValue();if(this.getSelectionStart()>=0){let i=this.getSelectionStart(),n=this.getSelectionEnd();this.setValue(t.substring(0,i)+e+t.substring(n,t.length))}else this.setValue(t+e)}getSelectionStart(){return this.instance.selectionStart}getSelectionEnd(){return this.instance.selectionEnd}setSelectionRange(e,t=e){this.instance.setSelectionRange(e,t)}get isFocused(){return this.instance===this.j.od.activeElement}focus(){this.instance.focus()}blur(){this.instance.blur()}setPlaceHolder(e){(0,r.attr)(this.instance,"placeholder",e)}setReadOnly(e){(0,r.attr)(this.instance,"readonly",e?"true":null)}selectAll(){this.instance.select()}replaceUndoManager(){let{history:e}=this.jodit;this.j.e.on(this.instance,"keydown",t=>{if((t.ctrlKey||t.metaKey)&&"z"===t.key)return t.shiftKey?e.redo():e.undo(),this.setSelectionRange(this.getValue().length),!1})}constructor(...e){super(...e),(0,n._)(this,"autosize",this.j.async.debounce(()=>{this.instance.style.height="auto",this.instance.style.height=this.instance.scrollHeight+"px"},this.j.defaultTimeout,!0))}}},8105:function(e,t,i){"use strict";i.d(t,{AceEditor:function(){return n.AceEditor},TextAreaEditor:function(){return o.TextAreaEditor}});var n=i(94978),o=i(45844)},82495:function(e,t,i){"use strict";i.d(t,{createSourceEditor:function(){return r}});var n=i(65946),o=i(8105);function r(e,t,i,r,s){let a;if((0,n.isFunction)(e))a=e(t);else switch(e){case"ace":if(!t.o.shadowRoot){a=new o.AceEditor(t,i,r,s);break}default:a=new o.TextAreaEditor(t,i,r,s)}return a.init(t),a.onReadyAlways(()=>{a.setReadOnly(t.o.readonly)}),a}},94193:function(e,t,i){"use strict";i.d(t,{SourceEditor:function(){return o}});var n=i(25045);class o{get j(){return this.jodit}onReady(){this.replaceUndoManager(),this.isReady=!0,this.j.e.fire(this,"ready")}onReadyAlways(e){this.isReady?e():this.j.events?.on(this,"ready",e)}constructor(e,t,i,o){(0,n._)(this,"jodit",void 0),(0,n._)(this,"container",void 0),(0,n._)(this,"toWYSIWYG",void 0),(0,n._)(this,"fromWYSIWYG",void 0),(0,n._)(this,"instance",void 0),(0,n._)(this,"className",void 0),(0,n._)(this,"isReady",void 0),this.jodit=e,this.container=t,this.toWYSIWYG=i,this.fromWYSIWYG=o,this.className="",this.isReady=!1}}},13810:function(e,t,i){"use strict";var n=i(25045),o=i(31635),r=i(81937),s=i(84839),a=i(23211),l=i(28077),c=i(65946),u=i(91206);i(18929);var d=i(82495);class h extends u.Plugin{onInsertHTML(e){if(!this.j.o.readonly&&!this.j.isEditorMode())return this.sourceEditor?.insertRaw(e),this.toWYSIWYG(),!1}fromWYSIWYG(e=!1){if(!this.__lock||!0===e){this.__lock=!0;let e=this.j.getEditorValue(!1,r.SOURCE_CONSUMER);e!==this.getMirrorValue()&&this.setMirrorValue(e),this.__lock=!1}}toWYSIWYG(){if(this.__lock)return;let e=this.getMirrorValue();e!==this.__oldMirrorValue&&(this.__lock=!0,this.j.value=e,this.__lock=!1,this.__oldMirrorValue=e)}getNormalPosition(e,t){for(t=t.replace(/<(script|style|iframe)[^>]*>[^]*?<\/\1>/im,e=>{let t="";for(let i=0;i0&&t[e]===r.INVISIBLE_SPACE;)e--;let i=e;for(;i>0;){if("<"===t[--i]&&void 0!==t[i+1]&&t[i+1].match(/[\w/]+/i))return i;if(">"===t[i])break}return e}clnInv(e){return e.replace(r.INVISIBLE_SPACE_REG_EXP(),"")}onSelectAll(e){if("selectall"===e.toLowerCase()&&this.j.getRealMode()===r.MODE_SOURCE)return this.sourceEditor?.selectAll(),!1}getMirrorValue(){return this.sourceEditor?.getValue()||""}setMirrorValue(e){this.sourceEditor?.setValue(e)}setFocusToMirror(){this.sourceEditor?.focus()}saveSelection(){if(this.j.getRealMode()===r.MODE_WYSIWYG)this.j.s.save(),this.j.synchronizeValues(),this.fromWYSIWYG(!0);else{if(this.j.o.editHTMLDocumentMode)return;let e=this.getMirrorValue();if(this.getSelectionStart()===this.getSelectionEnd()){let t=this.j.s.marker(!0),i=this.getNormalPosition(this.getSelectionStart(),this.getMirrorValue());this.setMirrorValue(e.substring(0,i)+this.clnInv(t.outerHTML)+e.substring(i))}else{let t=this.j.s.marker(!0),i=this.j.s.marker(!1),n=this.getNormalPosition(this.getSelectionStart(),e),o=this.getNormalPosition(this.getSelectionEnd(),e);this.setMirrorValue(e.slice(0,n)+this.clnInv(t.outerHTML)+e.slice(n,o)+this.clnInv(i.outerHTML)+e.slice(o))}this.toWYSIWYG()}}removeSelection(){if(this.j.getRealMode()===r.MODE_WYSIWYG){this.__lock=!0,this.j.s.restore(),this.__lock=!1;return}let e=this.getMirrorValue(),t=0,i=0;try{if(e=e.replace(/]+data-jodit-selection_marker=(["'])start\1[^>]*>[<>]*?<\/span>/gim,this.tempMarkerStart).replace(/]+data-jodit-selection_marker=(["'])end\1[^>]*>[<>]*?<\/span>/gim,this.tempMarkerEnd),!this.j.o.editHTMLDocumentMode&&this.j.o.beautifyHTML){let t=this.j.e.fire("beautifyHTML",e);(0,c.isString)(t)&&(e=t)}if(i=t=e.indexOf(this.tempMarkerStart),e=e.replace(this.tempMarkerStartReg,""),-1!==t){let t=e.indexOf(this.tempMarkerEnd);-1!==t&&(i=t)}e=e.replace(this.tempMarkerEndReg,"")}finally{e=e.replace(this.tempMarkerEndReg,"").replace(this.tempMarkerStartReg,"")}this.setMirrorValue(e),this.setMirrorSelectionRange(t,i),this.toWYSIWYG(),this.setFocusToMirror()}setMirrorSelectionRange(e,t){this.sourceEditor?.setSelectionRange(e,t)}onReadonlyReact(){this.sourceEditor?.setReadOnly(this.j.o.readonly)}afterInit(e){if(this.mirrorContainer=e.c.div("jodit-source"),e.workplace.appendChild(this.mirrorContainer),e.e.on("afterAddPlace changePlace afterInit",()=>{e.workplace.appendChild(this.mirrorContainer)}),this.sourceEditor=(0,d.createSourceEditor)("area",e,this.mirrorContainer,this.toWYSIWYG,this.fromWYSIWYG),e.e.on(e.ow,"keydown",e=>{e.key===r.KEY_ESC&&this.sourceEditor?.isFocused&&this.sourceEditor.blur()}),this.onReadonlyReact(),e.e.on("placeholder.source",e=>{this.sourceEditor?.setPlaceHolder(e)}).on("change.source",this.syncValueFromWYSIWYG).on("beautifyHTML",e=>e),e.o.beautifyHTML){let t=()=>{if(e.isInDestruct)return!1;let t=e.ow.html_beautify;return!!t&&!e.isInDestruct&&(e.events?.off("beautifyHTML").on("beautifyHTML",e=>t(e)),!0)};t()||(0,c.loadNext)(e,e.o.beautifyHTMLCDNUrlsJS).then(t,()=>null)}this.syncValueFromWYSIWYG(!0),this.initSourceEditor(e)}syncValueFromWYSIWYG(e=!1){let t=this.j;(t.getMode()===r.MODE_SPLIT||t.getMode()===r.MODE_SOURCE)&&this.fromWYSIWYG(e)}initSourceEditor(e){if("area"!==e.o.sourceEditor){let t=(0,d.createSourceEditor)(e.o.sourceEditor,e,this.mirrorContainer,this.toWYSIWYG,this.fromWYSIWYG);t.onReadyAlways(()=>{this.sourceEditor?.destruct(),this.sourceEditor=t,this.syncValueFromWYSIWYG(!0),e.events?.fire("sourceEditorReady",e)})}else this.sourceEditor?.onReadyAlways(()=>{this.syncValueFromWYSIWYG(!0),e.events?.fire("sourceEditorReady",e)})}beforeDestruct(){this.sourceEditor&&(this.sourceEditor.destruct(),delete this.sourceEditor),a.Dom.safeRemove(this.mirrorContainer)}constructor(...e){super(...e),(0,n._)(this,"buttons",[{name:"source",group:"source"}]),(0,n._)(this,"sourceEditor",void 0),(0,n._)(this,"mirrorContainer",void 0),(0,n._)(this,"__lock",!1),(0,n._)(this,"__oldMirrorValue",""),(0,n._)(this,"tempMarkerStart","{start-jodit-selection}"),(0,n._)(this,"tempMarkerStartReg",/{start-jodit-selection}/g),(0,n._)(this,"tempMarkerEnd","{end-jodit-selection}"),(0,n._)(this,"tempMarkerEndReg",/{end-jodit-selection}/g),(0,n._)(this,"getSelectionStart",()=>this.sourceEditor?.getSelectionStart()??0),(0,n._)(this,"getSelectionEnd",()=>this.sourceEditor?.getSelectionEnd()??0)}}(0,o.__decorate)([(0,s.watch)(":insertHTML.source")],h.prototype,"onInsertHTML",null),(0,o.__decorate)([s.autobind],h.prototype,"fromWYSIWYG",null),(0,o.__decorate)([s.autobind],h.prototype,"toWYSIWYG",null),(0,o.__decorate)([s.autobind],h.prototype,"getNormalPosition",null),(0,o.__decorate)([(0,s.watch)(":beforeCommand.source")],h.prototype,"onSelectAll",null),(0,o.__decorate)([(0,s.watch)(":beforeSetMode.source")],h.prototype,"saveSelection",null),(0,o.__decorate)([(0,s.watch)(":afterSetMode.source")],h.prototype,"removeSelection",null),(0,o.__decorate)([s.autobind],h.prototype,"setMirrorSelectionRange",null),(0,o.__decorate)([(0,s.watch)(":readonly.source")],h.prototype,"onReadonlyReact",null),(0,o.__decorate)([s.autobind],h.prototype,"syncValueFromWYSIWYG",null),l.pluginSystem.add("source",h)},24268:function(e,t,i){"use strict";var n=i(29434),o=i(5266),r=i(49989),s=i.n(r);o.Config.prototype.spellcheck=!1,n.Icon.set("spellcheck",s()),o.Config.prototype.controls.spellcheck={isActive:e=>e.o.spellcheck,icon:s(),name:"spellcheck",command:"toggleSpellcheck",tooltip:"Spellcheck"}},30885:function(e){e.exports={Spellcheck:"التدقيق الإملائي"}},48918:function(e){e.exports={Spellcheck:"Kontrola pravopisu"}},47229:function(e){e.exports={Spellcheck:"Rechtschreibprüfung"}},67026:function(e){e.exports={Spellcheck:"Corrección ortográfica"}},69495:function(e){e.exports={Spellcheck:"غلطیابی املایی"}},59903:function(e){e.exports={Spellcheck:"Oikeinkirjoituksen tarkistus"}},38522:function(e){e.exports={Spellcheck:"Vérification Orthographique"}},81089:function(e){e.exports={Spellcheck:"בדיקת איות"}},59985:function(e){e.exports={Spellcheck:"Helyesírás-ellenőrzés"}},43439:function(e){e.exports={Spellcheck:"Spellchecking"}},33494:function(e,t,i){"use strict";i.r(t),i.d(t,{ar:function(){return n},cs_cz:function(){return o},de:function(){return r},es:function(){return s},fa:function(){return a},fi:function(){return l},fr:function(){return c},he:function(){return u},hu:function(){return d},id:function(){return h},it:function(){return p},ja:function(){return f},ko:function(){return m},mn:function(){return g},nl:function(){return _},no:function(){return v},pl:function(){return b},pt_br:function(){return y},ru:function(){return S},tr:function(){return w},ua:function(){return C},zh_cn:function(){return k},zh_tw:function(){return E}});var n=i(30885),o=i(48918),r=i(47229),s=i(67026),a=i(69495),l=i(59903),c=i(38522),u=i(81089),d=i(59985),h=i(43439),p=i(57759),f=i(93203),m=i(32540),g=i(68429),_=i(45596),v=i(91685),b=i(63794),y=i(69977),S=i(51647),w=i(54472),C=i(84872),k=i(18310),E=i(95042)},57759:function(e){e.exports={Spellcheck:"Controllo ortografico"}},93203:function(e){e.exports={Spellcheck:"スペルチェック"}},32540:function(e){e.exports={Spellcheck:"맞춤법 검사"}},68429:function(e){e.exports={Spellcheck:"Дүрмийн алдаа шалгах"}},45596:function(e){e.exports={Spellcheck:"Spellingcontrole"}},91685:function(e){e.exports={Spellcheck:"Stavekontroll"}},63794:function(e){e.exports={Spellcheck:"Sprawdzanie pisowni"}},69977:function(e){e.exports={Spellcheck:"Verificação ortográfica"}},51647:function(e){e.exports={Spellcheck:"Проверка орфографии"}},54472:function(e){e.exports={Spellcheck:"Yazım denetimi"}},84872:function(e){e.exports={Spellcheck:"Перевірка орфографії"}},18310:function(e){e.exports={Spellcheck:"拼写检查"}},95042:function(e){e.exports={Spellcheck:"拼字檢查"}},90204:function(e,t,i){"use strict";var n=i(25045),o=i(31635),r=i(84839),s=i(28077),a=i(7909),l=i(91206);i(24268);var c=i(33494);class u extends l.Plugin{afterInit(e){e.e.on("afterInit afterAddPlace prepareWYSIWYGEditor",this.toggleSpellcheck),this.toggleSpellcheck(),e.registerCommand("toggleSpellcheck",()=>{this.jodit.o.spellcheck=!this.jodit.o.spellcheck,this.toggleSpellcheck(),this.j.e.fire("updateToolbar")})}toggleSpellcheck(){(0,a.attr)(this.jodit.editor,"spellcheck",this.jodit.o.spellcheck)}beforeDestruct(e){}constructor(e){super(e),(0,n._)(this,"buttons",[{group:"state",name:"spellcheck"}]),(0,s.extendLang)(c)}}(0,o.__decorate)([r.autobind],u.prototype,"toggleSpellcheck",null),s.pluginSystem.add("spellcheck",u)},88580:function(e,t,i){"use strict";var n=i(5266);n.Config.prototype.showCharsCounter=!0,n.Config.prototype.countHTMLChars=!1,n.Config.prototype.countTextSpaces=!1,n.Config.prototype.showWordsCounter=!0},86236:function(e,t,i){"use strict";var n=i(25045),o=i(81937),r=i(23211),s=i(28077),a=i(18855);i(88580);class l extends a.Plugin{afterInit(){this.charCounter=this.j.c.span(),this.wordCounter=this.j.c.span(),this.j.e.on("afterInit changePlace afterAddPlace",this.reInit),this.reInit()}beforeDestruct(){r.Dom.safeRemove(this.charCounter),r.Dom.safeRemove(this.wordCounter),this.j.e.off("afterInit changePlace afterAddPlace",this.reInit),this.charCounter=null,this.wordCounter=null}constructor(...e){super(...e),(0,n._)(this,"charCounter",null),(0,n._)(this,"wordCounter",null),(0,n._)(this,"reInit",()=>{this.j.o.showCharsCounter&&this.charCounter&&this.j.statusbar.append(this.charCounter,!0),this.j.o.showWordsCounter&&this.wordCounter&&this.j.statusbar.append(this.wordCounter,!0),this.j.e.off("change keyup",this.calc).on("change keyup",this.calc),this.calc()}),(0,n._)(this,"calc",this.j.async.throttle(()=>{let e=this.j.text;if(this.j.o.showCharsCounter&&this.charCounter){let t;t=this.j.o.countHTMLChars?this.j.value:this.j.o.countTextSpaces?e.replace((0,o.INVISIBLE_SPACE_REG_EXP)(),"").replace(/[\r\n]/g,""):e.replace((0,o.SPACE_REG_EXP)(),""),this.charCounter.textContent=this.j.i18n("Chars: %d",t.length)}this.j.o.showWordsCounter&&this.wordCounter&&(this.wordCounter.textContent=this.j.i18n("Words: %d",e.replace((0,o.INVISIBLE_SPACE_REG_EXP)(),"").split((0,o.SPACE_REG_EXP)()).filter(e=>e.length).length))},this.j.defaultTimeout))}}s.pluginSystem.add("stat",l)},79803:function(e,t,i){"use strict";var n=i(5266);n.Config.prototype.toolbarSticky=!0,n.Config.prototype.toolbarDisableStickyForMobile=!0,n.Config.prototype.toolbarStickyOffset=0},67582:function(e,t,i){"use strict";var n=i(25045),o=i(31635),r=i(81937),s=i(84839),a=i(23211),l=i(28077),c=i(65946),u=i(18855);i(79803);let d=!r.IS_ES_NEXT&&r.IS_IE;class h extends u.Plugin{afterInit(e){e.e.on(e.ow,"scroll.sticky wheel.sticky mousewheel.sticky resize.sticky",this.__onScroll).on("getStickyState.sticky",()=>this.__isToolbarStuck)}__onScroll(){let{jodit:e}=this;if(!e.o.toolbarSticky||!e.o.toolbar)return;let t=e.ow.pageYOffset||e.od.documentElement&&e.od.documentElement.scrollTop||0,i=(0,c.offset)(e.container,e,e.od,!0),n=e.getMode()===r.MODE_WYSIWYG&&t+e.o.toolbarStickyOffset>i.top&&t+e.o.toolbarStickyOffset=e.container.offsetWidth}beforeDestruct(e){a.Dom.safeRemove(this.__dummyBox),e.e.off(e.ow,"scroll.sticky wheel.sticky mousewheel.sticky resize.sticky",this.__onScroll).off(".sticky")}constructor(...e){super(...e),(0,n._)(this,"__isToolbarStuck",!1),(0,n._)(this,"__dummyBox",void 0),(0,n._)(this,"__createDummy",e=>{this.__dummyBox=this.j.c.div(),this.__dummyBox.classList.add("jodit_sticky-dummy_toolbar"),this.j.container.insertBefore(this.__dummyBox,e)}),(0,n._)(this,"addSticky",e=>{this.__isToolbarStuck||(d&&!this.__dummyBox&&this.__createDummy(e),this.j.container.classList.add("jodit_sticky"),this.__isToolbarStuck=!0),(0,c.css)(e,{top:this.j.o.toolbarStickyOffset||null,width:this.j.container.offsetWidth-2}),this.__dummyBox&&(0,c.css)(this.__dummyBox,{height:e.offsetHeight})}),(0,n._)(this,"removeSticky",e=>{this.__isToolbarStuck&&((0,c.css)(e,{width:"",top:""}),this.j.container.classList.remove("jodit_sticky"),this.__isToolbarStuck=!1)})}}(0,o.__decorate)([(0,s.throttle)()],h.prototype,"__onScroll",null),l.pluginSystem.add("sticky",h)},18993:function(e,t,i){"use strict";var n=i(29434),o=i(5266),r=i(81875),s=i.n(r);o.Config.prototype.usePopupForSpecialCharacters=!1,o.Config.prototype.specialCharacters=["!",""","#","$","%","&","'","(",")","*","+","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~","€","‘","’","“","”","–","—","¡","¢","£","¤","¥","¦","§","¨","©","ª","«","»","¬","®","¯","°","²","³","´","µ","¶","·","¸","¹","º","¼","½","¾","¿","À","Á","Â","Ã","Ä","Å","Æ","Ç","È","É","Ê","Ë","Ì","Í","Î","Ï","Ð","Ñ","Ò","Ó","Ô","Õ","Ö","×","Ø","Ù","Ú","Û","Ü","Ý","Þ","ß","à","á","â","ã","ä","å","æ","ç","è","é","ê","ë","ì","í","î","ï","ð","ñ","ò","ó","ô","õ","ö","÷","ø","ù","ú","û","ü","ý","þ","ÿ","Œ","œ","Ŵ","Ŷ","ŵ","ŷ","‚","‛","„","…","™","►","•","→","⇒","⇔","♦","≈"],n.Icon.set("symbols",s()),o.Config.prototype.controls.symbols={hotkeys:["ctrl+shift+i","cmd+shift+i"],tooltip:"Insert Special Character",popup(e,t,i){let n=e.e.fire("generateSpecialCharactersTable.symbols");if(n){if(e.o.usePopupForSpecialCharacters){let t=e.c.div();return t.classList.add("jodit-symbols"),t.appendChild(n),e.e.on(n,"close_dialog",i),t}e.alert(n,"Select Special Character",void 0,"jodit-symbols").bindDestruct(e);let t=n.querySelector("a");t&&t.focus()}}}},80696:function(e){e.exports={symbols:"رمز"}},33433:function(e){e.exports={symbols:"symbol"}},59488:function(e){e.exports={symbols:"Symbol"}},14099:function(e){e.exports={symbols:"Símbolo"}},64394:function(e){e.exports={symbols:"سمبل"}},96978:function(e){e.exports={symbols:"Symbolit"}},54055:function(e){e.exports={symbols:"caractère"}},15164:function(e){e.exports={symbols:"תו מיוחד"}},42412:function(e){e.exports={symbols:"Szimbólum"}},98710:function(e){e.exports={symbols:"simbol"}},91017:function(e,t,i){"use strict";i.r(t),i.d(t,{ar:function(){return n},cs_cz:function(){return o},de:function(){return r},es:function(){return s},fa:function(){return a},fi:function(){return l},fr:function(){return c},he:function(){return u},hu:function(){return d},id:function(){return h},it:function(){return p},ja:function(){return f},ko:function(){return m},mn:function(){return g},nl:function(){return _},pl:function(){return v},pt_br:function(){return b},ru:function(){return y},tr:function(){return S},ua:function(){return w},zh_cn:function(){return C},zh_tw:function(){return k}});var n=i(80696),o=i(33433),r=i(59488),s=i(14099),a=i(64394),l=i(96978),c=i(54055),u=i(15164),d=i(42412),h=i(98710),p=i(68294),f=i(3294),m=i(44837),g=i(72320),_=i(87141),v=i(10099),b=i(442),y=i(54554),S=i(86581),w=i(97493),C=i(58585),k=i(57629)},68294:function(e){e.exports={symbols:"Simbolo"}},3294:function(e){e.exports={symbols:"symbol"}},44837:function(e){e.exports={symbols:"기호"}},72320:function(e){e.exports={symbols:"тэмдэгт"}},87141:function(e){e.exports={symbols:"symbool"}},10099:function(e){e.exports={symbols:"symbol"}},442:function(e){e.exports={symbols:"Símbolo"}},54554:function(e){e.exports={symbols:"символ"}},86581:function(e){e.exports={symbols:"Sembol"}},97493:function(e){e.exports={symbols:"символ"}},58585:function(e){e.exports={symbols:"符号"}},57629:function(e){e.exports={symbols:"符號"}},11774:function(e,t,i){"use strict";var n=i(25045),o=i(81937),r=i(23211),s=i(28077),a=i(93640),l=i(18855);i(18993);var c=i(91017);class u extends l.Plugin{afterInit(e){e.e.on("generateSpecialCharactersTable.symbols",()=>{let t=e.c.fromHTML(`
+
+
+
+
+
+
+
`),i=t.querySelector(".jodit-symbols__preview"),n=t.querySelector("table").tBodies[0],s=[];for(let t=0;t${e.o.specialCharacters[t]}
`);s.push(r),o.appendChild(r),i.appendChild(o)}n.appendChild(i)}let l=this;return e.e.on(s,"focus",function(){i.innerHTML=this.innerHTML}).on(s,"mousedown",function(t){r.Dom.isTag(this,"a")&&(e.s.focus(),e.s.insertHTML(this.innerHTML),t?.shiftKey||e.e.fire(this,"close_dialog"),t&&t.preventDefault(),t&&t.stopImmediatePropagation())}).on(s,"mouseenter",function(){r.Dom.isTag(this,"a")&&this.focus()}).on(s,"keydown",t=>{let i=t.target;if(r.Dom.isTag(i,"a")){let n,r=parseInt((0,a.attr)(i,"-index")||"0",10),c=parseInt((0,a.attr)(i,"data-index-j")||"0",10);switch(t.key){case o.KEY_UP:case o.KEY_DOWN:void 0===s[n=t.key===o.KEY_UP?r-l.__countInRow:r+l.__countInRow]&&(n=t.key===o.KEY_UP?Math.floor(s.length/l.__countInRow)*l.__countInRow+c:c)>s.length-1&&(n-=l.__countInRow),s[n]&&s[n].focus();break;case o.KEY_RIGHT:case o.KEY_LEFT:void 0===s[n=t.key===o.KEY_LEFT?r-1:r+1]&&(n=t.key===o.KEY_LEFT?s.length-1:0),s[n]&&s[n].focus();break;case o.KEY_ENTER:e.e.fire(i,"mousedown"),t.stopImmediatePropagation(),t.preventDefault()}}}),t})}beforeDestruct(e){e.e.off("generateSpecialCharactersTable.symbols")}constructor(e){super(e),(0,n._)(this,"buttons",[{name:"symbols",group:"insert"}]),(0,n._)(this,"__countInRow",17),(0,s.extendLang)(c)}}s.pluginSystem.add("symbols",u)},2923:function(e,t,i){"use strict";i.d(t,{onTabInsideLi:function(){return n.onTabInsideLi}});var n=i(8837)},8837:function(e,t,i){"use strict";i.d(t,{onTabInsideLi:function(){return r}});var n=i(23211),o=i(28712);function r(e,t=!1){let i,s,a,l;if(!e.o.tab.tabInsideLiInsertNewList)return!1;let[c,u]=(i=e.createInside.fake(),s=e.createInside.fake(),(a=e.s.range.cloneRange()).collapse(!0),a.insertNode(i),(l=e.s.range.cloneRange()).collapse(!1),l.insertNode(s),[i,s]);try{let i,r,s,a,l,u=!!(i=n.Dom.closest(c,"li",e.editor))&&(!!t||!!n.Dom.isLeaf(i.previousElementSibling))&&(!t||!!n.Dom.closest(i,"li",e.editor))&&i;if(!u||!(r=n.Dom.closest(c,"li",e.editor))||r!==u&&!u.contains(r))return!1;let d=n.Dom.closest(u,["ol","ul"],e.editor);if(!d||t&&!n.Dom.closest(d,"li",e.editor))return!1;return t?function(e,t,i){let r=n.Dom.closest(t,"li",e.editor);(0,o.assert)(r,"tab parent li is null");let s=Array.from(t.children).filter(e=>n.Dom.isLeaf(e));n.Dom.after(r,i);let a=s.indexOf(i);if((0===a||1===s.length)&&n.Dom.safeRemove(t),a!==s.length-1){let e=t.cloneNode();n.Dom.append(i,e);for(let t=a+1;t(e[t.name]=t.value,e),{}))).appendChild(u),a!==l&&s.appendChild(l)),!0}finally{let t=e.s.createRange();t.setStartAfter(c),t.setEndBefore(u),e.s.selectRange(t),n.Dom.safeRemove(c),n.Dom.safeRemove(u)}}},69023:function(e,t,i){"use strict";i(5266).Config.prototype.tab={tabInsideLiInsertNewList:!0}},81582:function(e,t,i){"use strict";var n=i(31635),o=i(81937),r=i(84839),s=i(28077),a=i(91206);i(69023);var l=i(2923);class c extends a.Plugin{afterInit(e){}__onTab(e){if(e.key===o.KEY_TAB&&this.__onShift(e.shiftKey))return!1}__onCommand(e){if(("indent"===e||"outdent"===e)&&this.__onShift("outdent"===e))return!1}__onShift(e){let t=(0,l.onTabInsideLi)(this.j,e);return t&&this.j.e.fire("afterTab",e),t}beforeDestruct(e){}}(0,n.__decorate)([(0,r.watch)(":keydown.tab")],c.prototype,"__onTab",null),(0,n.__decorate)([(0,r.watch)(":beforeCommand.tab")],c.prototype,"__onCommand",null),s.pluginSystem.add("tab",c)},30110:function(e,t,i){"use strict";var n=i(81937),o=i(23211),r=i(28077),s=i(65946),a=i(98803);let l=new Set([n.KEY_TAB,n.KEY_LEFT,n.KEY_RIGHT,n.KEY_UP,n.KEY_DOWN]);r.pluginSystem.add("tableKeyboardNavigation",function(e){e.e.off(".tableKeyboardNavigation").on("keydown.tableKeyboardNavigation",t=>{let{key:i}=t,r=function(e,t){if(!l.has(t))return;let i=e.s.current();if(!i)return;let r=o.Dom.up(i,o.Dom.isCell,e.editor);if(!r)return;let{range:a}=e.s;if(t!==n.KEY_TAB&&i!==r){let e=t===n.KEY_RIGHT||t===n.KEY_DOWN,l=(0,s.call)(e?o.Dom.next:o.Dom.prev,i,e=>t===n.KEY_UP||t===n.KEY_DOWN?o.Dom.isTag(e,"br"):!!e,r);if(!e&&(l||t!==n.KEY_UP&&o.Dom.isText(i)&&0!==a.startOffset)||e&&(l||t!==n.KEY_DOWN&&o.Dom.isText(i)&&i.nodeValue&&a.startOffset!==i.nodeValue.length))return}return r}(e,i);if(!r)return;let c=e.getInstance(a.Table,e.o),u=o.Dom.closest(r,"table",e.editor),d=null,h=i===n.KEY_LEFT||t.shiftKey,p=()=>(0,s.call)(h?o.Dom.prev:o.Dom.next,r,o.Dom.isCell,u);switch(i){case n.KEY_TAB:case n.KEY_LEFT:(d=p())||(c.appendRow(u,!!h&&u.querySelector("tr"),!h),d=p());break;case n.KEY_UP:case n.KEY_DOWN:{let e=c.formalMatrix(u),[t,o]=c.formalCoordinate(u,r);i===n.KEY_UP?void 0!==e[t-1]&&(d=e[t-1][o]):void 0!==e[t+1]&&(d=e[t+1][o])}}if(d){if(e.e.fire("hidePopup hideResizer"),d.firstChild)i===n.KEY_TAB?e.s.select(d,!0):e.s.setCursorIn(d,i===n.KEY_RIGHT||i===n.KEY_DOWN);else{let t=e.createInside.element("br");d.appendChild(t),e.s.setCursorBefore(t)}return e.synchronizeValues(),!1}})})},48290:function(e,t,i){"use strict";var n=i(27795),o=i(65946),r=i(93640),s=i(29434),a=i(5266),l=i(67447),c=i.n(l);a.Config.prototype.table={splitBlockOnInsertTable:!0,selectionCellStyle:"border: 1px double #1e88e5 !important;",useExtraClassesOptions:!1},s.Icon.set("table",c()),a.Config.prototype.controls.table={data:{cols:10,rows:10,classList:{"table table-bordered":"Bootstrap Bordered","table table-striped":"Bootstrap Striped","table table-dark":"Bootstrap Dark"}},popup(e,t,i,s){e.editor.normalize();let a=e.history.snapshot.make(),l=s.control,c=l.data&&l.data.rows?l.data.rows:10,u=l.data&&l.data.cols?l.data.cols:10,d=e.c.fromHTML('
'+(()=>{if(!e.o.table.useExtraClassesOptions)return"";let t=[];if(l.data){let e=l.data.classList;Object.keys(e).forEach(i=>{t.push(``)})}return t.join("")})()+'
'),h=d.querySelectorAll("span")[0],p=d.querySelectorAll("span")[1],f=d.querySelector(".jodit-form__container"),m=d.querySelector(".jodit-form__options"),g=[],_=c*u;for(let t=0;t<_;t+=1)g[t]||g.push(e.c.element("span",{dataIndex:t}));if(e.e.on(f,"mousemove",(e,t)=>{let i=e.target;if(!n.Dom.isTag(i,"span"))return;let o=void 0===t||isNaN(t)?parseInt((0,r.attr)(i,"-index")||"0",10):t||0,s=Math.ceil((o+1)/u),a=o%u+1;for(let e=0;e=e%u+1&&s>=Math.ceil((e+1)/u)?g[e].className="jodit_hovered":g[e].className="";p.textContent=a.toString(),h.textContent=s.toString()}).on(f,"touchstart mousedown",t=>{let s=t.target;if(t.preventDefault(),t.stopImmediatePropagation(),!n.Dom.isTag(s,"span"))return;let l=parseInt((0,r.attr)(s,"-index")||"0",10),c=Math.ceil((l+1)/u),d=l%u+1,h=e.createInside,p=h.element("tbody"),f=h.element("table");f.appendChild(p);let g=null,_,v;for(let e=1;c>=e;e+=1){_=h.element("tr");for(let e=1;e<=d;e+=1)v=h.element("td"),g||(g=v),(0,o.css)(v,"width",(100/d).toFixed(4)+"%"),v.appendChild(h.element("br")),_.appendChild(h.text(` +`)),_.appendChild(h.text(" ")),_.appendChild(v);p.appendChild(h.text(` +`)),p.appendChild(_)}(0,o.$$)("input[type=checkbox]:checked",m).forEach(e=>{e.value.split(/[\s]+/).forEach(e=>{f.classList.add(e)})}),e.s.restore(),e.s.removeMarkers(),e.editor.normalize(),e.history.snapshot.restore(a);let b=n.Dom.furthest(e.s.current(),n.Dom.isBlock,e.editor);if(b&&n.Dom.isEmpty(b))n.Dom.replace(b,f,void 0,!1,!0);else if(b){let t=h.text(` +`);if(e.o.table.splitBlockOnInsertTable){let i=e.s.range;i.collapse(!1),i.insertNode(t),i.collapse(!1),e.s.selectRange(i);let o=e.s.splitSelection(b,t);o?n.Dom.after(o,f):n.Dom.after(b,f)}else n.Dom.after(b,t),n.Dom.after(t,f)}else e.s.insertNode(f,!1);g&&(e.s.setCursorIn(g),(0,o.scrollIntoViewIfNeeded)(g,e.editor,e.ed)),i()}),s&&s.parentElement){for(let t=0;ts.submit())])]),a=new r.UIForm(e,[new r.UIBlock(e,[new r.UITextArea(e,{name:"code",required:!0,label:"Embed code"})]),new r.UIBlock(e,[(0,o.Button)(e,"","Insert","primary").onAction(()=>a.submit())])]),c=[],u=t=>{e.s.restore(),e.s.insertHTML(t),i()};return e.s.save(),c.push({icon:"link",name:"Link",content:s.container},{icon:"source",name:"Code",content:a.container}),s.onSubmit(t=>{u((0,n.call)(e.o.video?.parseUrlToVideoEmbed??n.convertMediaUrlToVideoEmbed,t.url,{width:e.o.video?.defaultWidth,height:e.o.video?.defaultHeight}))}),a.onSubmit(e=>{u(e.code)}),(0,l.TabsWidget)(e,c)},tags:["iframe"],tooltip:"Insert youtube/vimeo video"}},34142:function(e,t,i){"use strict";var n=i(28077);i(48899),n.pluginSystem.add("video",function(e){e.registerButton({name:"video",group:"media"})})},86038:function(e,t,i){"use strict";i(5266).Config.prototype.wrapNodes={exclude:new Set(["hr","style","br"]),emptyBlockAfterInit:!0}},22980:function(e,t,i){"use strict";var n=i(25045),o=i(31635),r=i(84839),s=i(27795),a=i(28077),l=i(85932),c=i(91206);i(86038);class u extends c.Plugin{afterInit(e){"br"!==e.o.enter.toLowerCase()&&e.e.on("drop.wtn focus.wtn keydown.wtn mousedown.wtn afterInit.wtn backSpaceAfterDelete.wtn",this.preprocessInput,{top:!0}).on("afterInit.wtn postProcessSetEditorValue.wtn afterCommitStyle.wtn backSpaceAfterDelete.wtn",this.postProcessSetEditorValue)}beforeDestruct(e){e.e.off(".wtn")}postProcessSetEditorValue(){let{jodit:e}=this;if(!e.isEditorMode())return;let t=e.editor.firstChild,i=!1;for(;t;){if(t=function(e,t){let i=e,n=e;do if(s.Dom.isElement(n)&&s.Dom.isLeaf(n)&&!s.Dom.isList(n.parentElement)){let e=s.Dom.findNotEmptySibling(n,!1);s.Dom.isTag(i,"ul")?i.appendChild(n):i=s.Dom.wrap(n,"ul",t.createInside),n=e}else break;while(n)return i}(t,e),this.isSuitableStart(t)){i||e.s.save(),i=!0;let n=e.createInside.element(e.o.enter);for(s.Dom.before(t,n);t&&this.isSuitable(t);){let e=t.nextSibling;n.appendChild(t),t=e}n.normalize(),t=n}t=t&&t.nextSibling}i&&(e.s.restore(),"afterInit"===e.e.current&&e.e.fire("internalChange"))}preprocessInput(){let{jodit:e}=this,t="afterInit"===e.e.current;if(!e.isEditorMode()||e.editor.firstChild||!e.o.wrapNodes.emptyBlockAfterInit&&t)return;let i=e.createInside.element(e.o.enter),n=e.createInside.element("br");s.Dom.append(i,n),s.Dom.append(e.editor,i),(e.s.isFocused()||"backSpaceAfterDelete"===e.e.current)&&e.s.setCursorBefore(n),e.e.fire("internalChange")}constructor(...e){super(...e),(0,n._)(this,"isSuitableStart",e=>s.Dom.isText(e)&&(0,l.isString)(e.nodeValue)&&(/[^\s]/.test(e.nodeValue)||e.parentNode?.firstChild===e&&this.isSuitable(e.nextSibling))||this.isNotWrapped(e)&&!s.Dom.isTemporary(e)),(0,n._)(this,"isSuitable",e=>s.Dom.isText(e)||this.isNotWrapped(e)),(0,n._)(this,"isNotWrapped",e=>s.Dom.isElement(e)&&!(s.Dom.isBlock(e)||s.Dom.isTag(e,this.j.o.wrapNodes.exclude)))}}(0,o.__decorate)([r.autobind],u.prototype,"postProcessSetEditorValue",null),(0,o.__decorate)([r.autobind],u.prototype,"preprocessInput",null),a.pluginSystem.add("wrapNodes",u)},92063:function(e,t,i){"use strict";i(5266).Config.prototype.showXPathInStatusbar=!0},52014:function(e,t,i){"use strict";var n=i(25045),o=i(81937),r=i(27795),s=i(28077),a=i(4040),l=i(7909),c=i(28723),u=i(91206),d=i(67399),h=i(4274);i(92063);class p extends u.Plugin{afterInit(){if(this.j.o.showXPathInStatusbar){this.container=this.j.c.div("jodit-xpath"),(0,l.attr)(this.container,"role","list");let e=()=>{this.j.o.showXPathInStatusbar&&this.container&&(this.j.statusbar.append(this.container),this.j.getRealMode()===o.MODE_WYSIWYG?this.calcPath():(this.container&&(this.container.innerHTML=o.INVISIBLE_SPACE),this.appendSelectAll()))};this.j.e.off(".xpath").on("pointerup.xpath change.xpath keydown.xpath changeSelection.xpath",this.calcPath).on("afterSetMode.xpath afterInit.xpath changePlace.xpath",e),e(),this.calcPath()}}beforeDestruct(){this.j&&this.j.events&&this.j.e.off(".xpath"),this.removeSelectAll(),this.menu&&this.menu.destruct(),r.Dom.safeRemove(this.container),delete this.menu,delete this.container}constructor(...e){super(...e),(0,n._)(this,"onContext",(e,t)=>(this.menu||(this.menu=new d.ContextMenu(this.j)),this.menu.show(t.clientX,t.clientY,[{icon:"bin",title:e===this.j.editor?"Clear":"Remove",exec:()=>{e!==this.j.editor?r.Dom.safeRemove(e):this.j.value="",this.j.synchronizeValues()}},{icon:"select-all",title:"Select",exec:()=>{this.j.s.select(e)}}]),!1)),(0,n._)(this,"onSelectPath",(e,t)=>{this.j.s.focus();let i=(0,l.attr)(t.target,"-path")||"/";if("/"===i)return this.j.execCommand("selectall"),!1;try{let e=this.j.ed.evaluate(i,this.j.editor,null,XPathResult.ANY_TYPE,null).iterateNext();if(e)return this.j.s.select(e),!1}catch{}return this.j.s.select(e),!1}),(0,n._)(this,"tpl",(e,t,i,n)=>{let o=this.j.c.fromHTML(`${(0,a.trim)(i)}`),r=o.firstChild;return this.j.e.on(r,"click",this.onSelectPath.bind(this,e)).on(r,"contextmenu",this.onContext.bind(this,e)),o}),(0,n._)(this,"selectAllButton",void 0),(0,n._)(this,"removeSelectAll",()=>{this.selectAllButton&&(this.selectAllButton.destruct(),delete this.selectAllButton)}),(0,n._)(this,"appendSelectAll",()=>{this.removeSelectAll(),this.selectAllButton=(0,h.makeButton)(this.j,{name:"selectall",...this.j.o.controls.selectall}),this.selectAllButton.state.size="tiny",this.container&&this.container.insertBefore(this.selectAllButton.container,this.container.firstChild)}),(0,n._)(this,"calcPathImd",()=>{if(this.isDestructed)return;let e=this.j.s.current();if(this.container&&(this.container.innerHTML=o.INVISIBLE_SPACE),e){let t,i,n;r.Dom.up(e,e=>{e&&this.j.editor!==e&&!r.Dom.isText(e)&&!r.Dom.isComment(e)&&(t=e.nodeName.toLowerCase(),i=(0,c.getXPathByElement)(e,this.j.editor).replace(/^\//,""),n=this.tpl(e,i,t,this.j.i18n("Select %s",t)),this.container&&this.container.insertBefore(n,this.container.firstChild))},this.j.editor)}this.appendSelectAll()}),(0,n._)(this,"calcPath",this.j.async.debounce(this.calcPathImd,2*this.j.defaultTimeout,!0)),(0,n._)(this,"container",void 0),(0,n._)(this,"menu",void 0)}}s.pluginSystem.add("xpath",p)},13564:function(e,t,i){"use strict";i.r(t),i.d(t,{angle_down:function(){return o.a},angle_left:function(){return s.a},angle_right:function(){return l.a},angle_up:function(){return u.a},bin:function(){return h.a},cancel:function(){return f.a},center:function(){return g.a},check:function(){return v.a},chevron:function(){return y.a},dots:function(){return w.a},eye:function(){return k.a},file:function(){return I.a},folder:function(){return x.a},info_circle:function(){return j.a},left:function(){return L.a},lock:function(){return P.a},ok:function(){return N.a},pencil:function(){return B.a},plus:function(){return F.a},resize_handler:function(){return H.a},right:function(){return U.a},save:function(){return $.a},settings:function(){return K.a},unlock:function(){return X.a},update:function(){return Z.a},upload:function(){return ee.a},valign:function(){return ei.a}});var n=i(88497),o=i.n(n),r=i(91882),s=i.n(r),a=i(14305),l=i.n(a),c=i(58446),u=i.n(c),d=i(39858),h=i.n(d),p=i(70881),f=i.n(p),m=i(60636),g=i.n(m),_=i(32013),v=i.n(_),b=i(45512),y=i.n(b),S=i(80347),w=i.n(S),C=i(95134),k=i.n(C),E=i(70697),I=i.n(E),T=i(49983),x=i.n(T),D=i(98964),j=i.n(D),z=i(8136),L=i.n(z),A=i(94806),P=i.n(A),M=i(31365),N=i.n(M),R=i(44636),B=i.n(R),O=i(36327),F=i.n(O),q=i(53328),H=i.n(q),V=i(98711),U=i.n(V),W=i(53808),$=i.n(W),Y=i(20784),K=i.n(Y),G=i(70999),X=i.n(G),J=i(45244),Z=i.n(J),Q=i(99876),ee=i.n(Q),et=i(14006),ei=i.n(et)},57741:function(e){e.exports.default=["إبدأ في الكتابة...","حول جوديت","محرر جوديت","دليل مستخدم جوديت","يحتوي على مساعدة مفصلة للاستخدام","للحصول على معلومات حول الترخيص، يرجى الذهاب لموقعنا:","شراء النسخة الكاملة","حقوق الطبع والنشر © XDSoft.net - Chupurnov Valeriy. كل الحقوق محفوظة.","مِرْساة","فتح في نافذة جديدة","فتح المحرر في الحجم الكامل","مسح التنسيق","ملء اللون أو تعيين لون النص","إعادة","تراجع","عريض","مائل","إدراج قائمة غير مرتبة","إدراج قائمة مرتبة","محاذاة للوسط","محاذاة مثبتة","محاذاة لليسار","محاذاة لليمين","إدراج خط أفقي","إدراج صورة","ادخال الملف","إدراج فيديو يوتيوب/فيميو ","إدراج رابط","حجم الخط","نوع الخط","إدراج كتلة تنسيق","عادي","عنوان 1","عنوان 2","عنوان 3","عنوان 4","إقتباس","كود","إدراج","إدراج جدول","تقليل المسافة البادئة","زيادة المسافة البادئة","تحديد أحرف خاصة","إدراج حرف خاص","تنسيق الرسم","تغيير الوضع","هوامش","أعلى","يمين","أسفل","يسار","الأنماط","الطبقات","محاذاة","اليمين","الوسط","اليسار","--غير مضبوط--","Src","العنوان","العنوان البديل","الرابط","افتح الرابط في نافذة جديدة","الصورة","ملف","متقدم","خصائص الصورة","إلغاء","حسنا","متصفح الملفات","حدث خطأ في تحميل القائمة ","حدث خطأ في تحميل المجلدات","هل أنت واثق؟","أدخل اسم المجلد","إنشاء مجلد","أكتب إسم","إسقاط صورة","إسقاط الملف","أو أنقر","النص البديل","رفع","تصفح","الخلفية","نص","أعلى","الوسط","الأسفل","إدراج عمود قبل","إدراج عمود بعد","إدراج صف أعلى","إدراج صف أسفل","حذف الجدول","حذف الصف","حذف العمود","خلية فارغة","%d حرف","%d كلام","اضرب من خلال","أكد","حرف فوقي","مخطوطة","قطع الاختيار","اختر الكل","استراحة","البحث عن","استبدل ب","محل","معجون","اختر محتوى للصق","مصدر","بالخط العريض","مائل","شغل","صلة","إلغاء","كرر","طاولة","صورة","نظيف","فقرة","حجم الخط","فيديو","الخط","حول المحرر","طباعة","أكد","شطب","المسافة البادئة","نتوء","ملء الشاشة","الحجم التقليدي","الخط","قائمة","قائمة مرقمة","قطع","اختر الكل","قانون","فتح الرابط","تعديل الرابط","سمة Nofollow","إزالة الرابط","تحديث","لتحرير","مراجعة","URL","تحرير","محاذاة أفقية","فلتر","عن طريق التغيير","بالاسم","حسب الحجم","إضافة مجلد","إعادة","احتفظ","حفظ باسم","تغيير الحجم","حجم القطع","عرض","ارتفاع","حافظ على النسب","أن","لا","حذف","تميز","تميز %s","محاذاة عمودية","انشق، مزق","اذهب","أضف العمود","اضف سطر","رخصة %s","حذف","انقسام عمودي","تقسيم أفقي","الحدود","يشبه الكود الخاص بك HTML. تبقي كما HTML؟","الصق ك HTML","احتفظ","إدراج كنص","إدراج النص فقط","يمكنك فقط تحرير صورك الخاصة. تحميل هذه الصورة على المضيف؟","تم تحميل الصورة بنجاح على الخادم!","لوحة","لا توجد ملفات في هذا الدليل.","إعادة تسمية","أدخل اسم جديد","معاينة","تحميل","لصق من الحافظة","متصفحك لا يدعم إمكانية الوصول المباشر إلى الحافظة.","نسخ التحديد","نسخ","دائرة نصف قطرها الحدود","عرض كل","تطبيق","يرجى ملء هذا المجال","يرجى إدخال عنوان ويب","الافتراضي","دائرة","نقطة","المربعة","البحث","تجد السابقة","تجد التالي","للصق المحتوى قادم من Microsoft Word/Excel الوثيقة. هل تريد أن تبقي شكل أو تنظيفه ؟ ","كلمة لصق الكشف عن","نظيفة","أدخل اسم الفصل","اضغط البديل لتغيير حجم مخصص","ارتفاع الخط","التدقيق الإملائي","التعرف على الكلام","تحديد الكل"]},56014:function(e){e.exports.default=["Napiš něco","O Jodit","Editor Jodit","Jodit Uživatelská příručka","obsahuje detailní nápovědu","Pro informace o licenci, prosím, přejděte na naši stránku:","Koupit plnou verzi","Copyright © XDSoft.net - Chupurnov Valeriy. Všechna práva vyhrazena.","Anchor","Otevřít v nové záložce","Otevřít v celoobrazovkovém režimu","Vyčistit formátování","Barva výplně a písma","Vpřed","Zpět","Tučné","Kurzíva","Odrážky","Číslovaný seznam","Zarovnat na střed","Zarovnat do bloku","Zarovnat vlevo","Zarovnat vpravo","Vložit horizontální linku","Vložit obrázek","Vložit soubor","Vložit video (YT/Vimeo)","Vložit odkaz","Velikost písma","Typ písma","Formátovat blok","Normální text","Nadpis 1","Nadpis 2","Nadpis 3","Nadpis 4","Citát","Kód","Vložit","Vložit tabulku","Zmenšit odsazení","Zvětšit odsazení","Vybrat speciální symbol","Vložit speciální symbol","Použít formát","Změnit mód","Okraje","horní","pravý","spodní","levý","Styly","Třídy","Zarovnání","Vpravo","Na střed","Vlevo","--nenastaveno--","src","Titulek","Alternativní text (alt)","Link","Otevřít link v nové záložce","Obrázek","soubor","Rozšířené","Vlastnosti obrázku","Zpět","Ok","Prohlížeč souborů","Chyba při načítání seznamu souborů","Chyba při načítání složek","Jste si jistý(á)?","Název složky","Vytvořit složku","název","Přetáhněte sem obrázek","Přetáhněte sem soubor","nebo klikněte","Alternativní text","Nahrát","Server","Pozadí","Text","Nahoru","Na střed","Dolu","Vložit sloupec před","Vložit sloupec za","Vložit řádek nad","Vložit řádek pod","Vymazat tabulku","Vymazat řádku","Vymazat sloupec","Vyčistit buňku","Znaky: %d","Slova: %d","Přeškrtnuto","Podtrženo","Horní index","Dolní index","Vyjmout označené","Označit vše","Zalomení","Najdi","Nahradit za","Vyměňte","Vložit","Vyber obsah pro vložení","HTML","tučně","kurzíva","štětec","odkaz","zpět","vpřed","tabulka","obrázek","guma","odstavec","velikost písma","video","písmo","о editoru","tisk","podtrženo","přeškrtnuto","zvětšit odsazení","zmenšit odsazení","celoobrazovkový režim","smrsknout","Linka","Odrážka","Číslovaný seznam","Vyjmout","Označit vše","Kód","Otevřít odkaz","Upravit odkaz","Atribut no-follow","Odstranit odkaz","Aktualizovat","Chcete-li upravit","Zobrazit","URL","Editovat","Horizontální zarovnání","Filtr","Dle poslední změny","Dle názvu","Dle velikosti","Přidat složku","Reset","Uložit","Uložit jako...","Změnit rozměr","Ořezat","Šířka","Výška","Ponechat poměr","Ano","Ne","Vyjmout","Označit","Označit %s","Vertikální zarovnání","Rozdělit","Spojit","Přidat sloupec","Přidat řádek","Licence: %s","Vymazat","Rozdělit vertikálně","Rozdělit horizontálně","Okraj","Váš text se podobá HTML. Vložit ho jako HTML?","Vložit jako HTML","Ponechat originál","Vložit jako TEXT","Vložit pouze TEXT","Můžete upravovat pouze své obrázky. Načíst obrázek?","Obrázek byl úspěšně nahrán!","paleta","V tomto adresáři nejsou žádné soubory.","přejmenovat","Zadejte nový název","náhled","Stažení","Vložit ze schránky","Váš prohlížeč nepodporuje přímý přístup do schránky.","Kopírovat výběr","kopírování","Border radius","Zobrazit všechny","Platí","Prosím, vyplňte toto pole","Prosím, zadejte webovou adresu","Výchozí","Kruh","Dot","Quadrate","Najít","Najít Předchozí","Najít Další","Obsah, který vkládáte, je pravděpodobně z Microsoft Word / Excel. Chcete ponechat formát nebo vložit pouze text?","Detekován fragment z Wordu nebo Excelu","Vyčistit","Vložte název třídy","Stiskněte Alt pro vlastní změnu velikosti",null,null,null,"Vše"]},95461:function(e){e.exports.default=["Bitte geben Sie einen Text ein","Über Jodit","Jodit Editor","Das Jodit Benutzerhandbuch","beinhaltet ausführliche Informationen wie Sie den Editor verwenden können.","Für Informationen zur Lizenz, besuchen Sie bitte unsere Web-Präsenz:","Vollversion kaufen","Copyright © XDSoft.net - Chupurnov Valeriy. Alle Rechte vorbehalten.","Anker","In neuer Registerkarte öffnen","Editor in voller Größe öffnen","Formatierung löschen","Füllfarbe oder Textfarbe ändern","Wiederholen","Rückgängig machen","Fett","Kursiv","Unsortierte Liste einfügen","Nummerierte Liste einfügen","Mittig ausrichten","Blocksatz","Links ausrichten","Rechts ausrichten","Horizontale Linie einfügen","Bild einfügen","Datei einfügen","Youtube/vimeo Video einfügen","Link einfügen","Schriftgröße","Schriftfamilie","Formatblock einfügen","Normal","Überschrift 1","Überschrift 2","Überschrift 3","Überschrift 4","Zitat","Code","Einfügen","Tabelle einfügen","Einzug verkleinern","Einzug vergrößern","Sonderzeichen auswählen","Sonderzeichen einfügen","Format kopieren","Änderungsmodus","Ränder","Oben","Rechts","Unten","Links","CSS Stil","CSS Klassen","Ausrichtung","Rechts","Zentriert","Links","Keine","Pfad","Titel","Alternativer Text","Link","Link in neuem Tab öffnen","Bild","Datei","Fortgeschritten","Bildeigenschaften","Abbrechen","OK","Dateibrowser","Fehler beim Laden der Liste","Fehler beim Laden der Ordner","Sind Sie sicher?","Geben Sie den Verzeichnisnamen ein","Verzeichnis erstellen","Typname","Bild hier hinziehen","Datei löschen","oder hier klicken","Alternativtext","Hochladen","Auswählen","Hintergrund","Text","Oben","Mittig","Unten","Spalte davor einfügen","Spalte danach einfügen","Zeile oberhalb einfügen","Zeile unterhalb einfügen","Tabelle löschen","Zeile löschen","Spalte löschen","Zelle leeren","Zeichen: %d","Wörter: %d","Durchstreichen","Unterstreichen","Hochstellen","Tiefstellen","Auswahl ausschneiden","Alles markieren","Pause","Suche nach","Ersetzen durch","Ersetzen","Einfügen","Wählen Sie den Inhalt zum Einfügen aus","HTML","Fett gedruckt","Kursiv","Bürste","Verknüpfung","Rückgängig machen","Wiederholen","Tabelle","Bild","Radiergummi","Absatz","Schriftgröße","Video","Schriftart","Über","Drucken","Unterstreichen","Durchstreichen","Einzug","Herausstellen","Vollgröße","Schrumpfen","die Linie","Liste von","Nummerierte Liste","Schneiden","Wählen Sie Alle aus","Code einbetten","Link öffnen","Link bearbeiten","Nofollow-Attribut","Link entfernen","Aktualisieren","Bearbeiten","Ansehen","URL","Bearbeiten","Horizontale Ausrichtung","Filter","Sortieren nach geändert","Nach Name sortieren","Nach Größe sortiert","Ordner hinzufügen","Wiederherstellen","Speichern","Speichern als","Größe ändern","Größe anpassen","Breite","Höhe","Seitenverhältnis beibehalten","Ja","Nein","Entfernen","Markieren","Markieren: %s","Vertikale Ausrichtung","Unterteilen","Vereinen","Spalte hinzufügen","Zeile hinzufügen","Lizenz: %s","Löschen","Vertikal unterteilen","Horizontal unterteilen","Rand","Ihr Text ähnelt HTML-Code. Als HTML beibehalten?","Als HTML einfügen?","Original speichern","Als Text einfügen","Nur Text einfügen","Sie können nur Ihre eigenen Bilder bearbeiten. Dieses Bild auf den Host herunterladen?","Das Bild wurde erfolgreich auf den Server hochgeladen!","Palette","In diesem Verzeichnis befinden sich keine Dateien.","Umbenennen","Geben Sie einen neuen Namen ein","Vorschau","Herunterladen","Aus Zwischenablage einfügen","Ihr Browser unterstützt keinen direkten Zugriff auf die Zwischenablage.","Auswahl kopieren","Kopieren","Radius für abgerundete Ecken","Alle anzeigen","Anwenden","Bitte füllen Sie dieses Feld aus","Bitte geben Sie eine Web-Adresse ein","Standard","Kreis","Punkte","Quadrate","Suchen","Suche vorherige","Weitersuchen","Der Inhalt, den Sie einfügen, stammt aus einem Microsoft Word / Excel-Dokument. Möchten Sie das Format erhalten oder bereinigen?","In Word formatierter Text erkannt","Säubern","className (CSS) einfügen","Drücken Sie Alt für benutzerdefinierte Größenanpassung",null,null,null,"Alles markieren"]},63837:function(e){e.exports.default={"Type something":"Start writing...",pencil:"Edit",Quadrate:"Square"}},39386:function(e){e.exports.default=["Escriba algo...","Acerca de Jodit","Jodit Editor","Guía de usuario Jodit","contiene ayuda detallada para el uso.","Para información sobre la licencia, por favor visite nuestro sitio:","Compre la versión completa","Copyright © XDSoft.net - Chupurnov Valeriy. Todos los derechos reservados.","Anclar","Abrir en nueva pestaña","Abrir editor en pantalla completa","Limpiar formato","Color de relleno o de letra","Rehacer","Deshacer","Negrita","Cursiva","Insertar lista no ordenada","Insertar lista ordenada","Alinear Centrado","Alinear Justificado","Alinear Izquierda","Alinear Derecha","Insertar línea horizontal","Insertar imagen","Insertar archivo","Insertar video de Youtube/vimeo","Insertar vínculo","Tamaño de letra","Familia de letra","Insertar bloque","Normal","Encabezado 1","Encabezado 2","Encabezado 3","Encabezado 4","Cita","Código","Insertar","Insertar tabla","Disminuir sangría","Aumentar sangría","Seleccionar caracter especial","Insertar caracter especial","Copiar formato","Cambiar modo","Márgenes","arriba","derecha","abajo","izquierda","Estilos CSS","Clases CSS","Alinear","Derecha","Centrado","Izquierda","--No Establecido--","Fuente","Título","Texto Alternativo","Vínculo","Abrir vínculo en nueva pestaña","Imagen","Archivo","Avanzado","Propiedades de imagen","Cancelar","Aceptar","Buscar archivo","Error al cargar la lista","Error al cargar las carpetas","¿Está seguro?","Entre nombre de carpeta","Crear carpeta","Entre el nombre","Soltar imagen","Soltar archivo","o click","Texto alternativo","Subir","Buscar","Fondo","Texto","Arriba","Centro","Abajo","Insertar columna antes","Interar columna después","Insertar fila arriba","Insertar fila debajo","Borrar tabla","Borrar fila","Borrar columna","Vaciar celda","Caracteres: %d","Palabras: %d","Tachado","Subrayado","superíndice","subíndice","Cortar selección","Seleccionar todo","Pausa","Buscar","Reemplazar con","Reemplazar","Pegar","Seleccionar contenido para pegar","HTML","negrita","cursiva","Brocha","Vínculo","deshacer","rehacer","Tabla","Imagen","Borrar","Párrafo","Tamaño de letra","Video","Letra","Acerca de","Imprimir","subrayar","tachar","sangría","quitar sangría","Tamaño completo","encoger","línea horizontal","lista sin ordenar","lista ordenada","Cortar","Seleccionar todo","Incluir código","Abrir vínculo","Editar vínculo","No seguir","Desvincular","Actualizar","Para editar","Ver","URL","Editar","Alineación horizontal","Filtrar","Ordenar por fecha modificación","Ordenar por nombre","Ordenar por tamaño","Agregar carpeta","Resetear","Guardar","Guardar como...","Redimensionar","Recortar","Ancho","Alto","Mantener relación de aspecto","Si","No","Quitar","Seleccionar","Seleccionar: %s","Alineación vertical","Dividir","Mezclar","Agregar columna","Agregar fila","Licencia: %s","Borrar","Dividir vertical","Dividir horizontal","Borde","El código es similar a HTML. ¿Mantener como HTML?","Pegar como HTML?","Mantener","Insertar como texto","Insertar solo texto","Solo puedes editar tus propias imágenes. ¿Descargar esta imagen en el servidor?","¡La imagen se ha subido correctamente al servidor!","paleta","No hay archivos en este directorio.","renombrar","Ingresa un nuevo nombre","avance","Descargar","Pegar desde el portapapeles","Su navegador no soporta el acceso directo en el portapapeles.","Selección de copia","copia","Radio frontera","Mostrar todos los","Aplicar","Por favor, rellene este campo","Por favor, introduzca una dirección web","Predeterminado","Círculo","Punto","Cuadro","Encontrar","Buscar Anterior","Buscar Siguiente","El contenido pegado proviene de un documento de Microsoft Word/Excel. ¿Desea mantener el formato o limpiarlo?","Pegado desde Word detectado","Limpiar","Insertar nombre de clase","Presione Alt para cambiar el tamaño personalizado",null,null,null,"Todo"]},62327:function(e){e.exports.default=["Kirjoita jotain...","Tietoja Jodit:ista","Jodit Editor","Jodit käyttäjän ohje","sisältää tarkempaa tietoa käyttämiseen","Tietoa lisensoinnista, vieraile verkkosivuillamme:","Osta täysi versio","Copyright © XDSoft.net - Chupurnov Valeriy. Kaikki oikeudet pidätetään.","Ankkuri","Avaa uudessa välilehdessä","Avaa täysikokoisena","Poista muotoilu","Täytä värillä tai aseta tekstin väri","Tee uudelleen","Peruuta","Lihavoitu","Kursiivi","Lisää järjestämätön lista","Lisää järjestetty lista","Asemoi keskelle","Asemoi tasavälein","Asemoi vasemmalle","Asemoi oikealle","Lisää vaakasuuntainen viiva","Lisää kuva","Lisää tiedosto","Lisää Youtube-/vimeo- video","Lisää linkki","Kirjasimen koko","Kirjasimen nimi","Lisää muotoilualue","Normaali","Otsikko 1","Otsikko 2","Otsikko 3","Otsikko 4","Lainaus","Koodi","Lisää","Lisää taulukko","Pienennä sisennystä","Lisää sisennystä","Valitse erikoismerkki","Lisää erikoismerkki","Maalaa muotoilu","Vaihda tilaa","Marginaalit","ylös","oikealle","alas","vasemmalle","CSS-tyylit","CSS-luokat","Asemointi","Oikea","Keskellä","Vasen","--Ei asetettu--","Fuente","Otsikko","Vaihtoehtoinen teksti","Linkki","Avaa uudessa välilehdessä","Kuva","Tiedosto","Avanzado","Kuvan ominaisuudet","Peruuta","Ok","Tiedostoselain","Virhe listan latauksessa","Virhe kansioiden latauksessa","Oletko varma?","Syötä hakemiston nimi","Luo hakemisto","Syötä nimi","Pudota kuva","Pudota tiedosto","tai klikkaa","Vaihtoehtoinen teksti","Lataa","Selaa","Tausta","Teksti","Ylös","Keskelle","Alas","Lisää sarake ennen","Lisää sarake jälkeen","Lisää rivi ylös","Lisää rivi alle","Poista taulukko","Poista rivi","Poista sarake","Tyhjennä solu","Merkit: %d","Sanat: %d","Yliviivaus","Alleviivaus","yläviite","alaviite","Leikkaa valinta","Valitse kaikki","Vaihto","Etsi arvoa","Korvaa arvolla","Korvaa","Liitä","Valitse liitettävä sisältö","HTML","lihavoitu","kursiivi","sivellin","linkki","peruuta","tee uudelleen","taulukko","kuva","pyyhekumi","kappale","tekstin koko","video","kirjasin","tietoja","tulosta","alleviivaa","yliviivaa","sisennä","pienennä sisennystä","täysikokoinen","pienennä","vaakaviiva","järjestetty lista","järjestämätön lista","leikkaa","valitse kaikki","Sisällytä koodi","Avaa linkki","Muokkaa linkkiä","Älä seuraa","Pura linkki","Päivitä","Muokkaa","Ver","URL","Muokkaa","Vaaka-asemointi","Suodatin","Järjestä muuttuneilla","Järjestä nimellä","Järjestä koolla","Lisää kansio","Nollaa","Tallenna","Tallenna nimellä ...","Muuta kokoa","Rajaa","Leveys","Korkeus","Säilytä kuvasuhde","Kyllä","Ei","Poista","Valitse","Valitse: %s","Pystyasemointi","Jaa","Yhdistä","Lisää sarake","Lisää rivi","Lisenssi: %s","Poista","Jaa pystysuuntaisesti","Jaa vaakasuuntaisesti","Reuna","Koodi on HTML:n tapaista. Säilytetäänkö HTML?","Liitä HTML:nä?","Säilytä","Lisää tekstinä","Lisää vain teksti","Voit muokata vain omia kuvia. Lataa tämä kuva palvelimelle?","Kuva on onnistuneesti ladattu palvelimelle!","paletti","Tiedostoja ei ole","Nimeä uudelleen","Syötä uusi nimi","esikatselu","Lataa","Liitä leikepöydältä","Selaimesi ei tue suoraa pääsyä leikepöydälle.","Kopioi valinta","kopioi","Reunan pyöristys","Näytä kaikki","Käytä","Täytä tämä kenttä","Annan web-osoite","Oletus","Ympyrä","Piste","Neliö","Hae","Hae edellinen","Hae seuraava","Liitetty sisältö tulee Microsoft Word-/Excel- tiedostosta. Haluatko säilyttää muotoilun vai poistaa sen?","Word liittäminen havaittu","Tyhjennä","Lisää luokkanimi","Paina Alt muokattuun koon muuttamiseen",null,null,null,"Kaikki"]},25090:function(e){e.exports.default=["Ecrivez ici","A propos de Jodit","Editeur Jodit","Guide de l'utilisateur","Aide détaillée à l'utilisation","Consulter la licence sur notre site web:","Acheter la version complète","Copyright © XDSoft.net - Chupurnov Valeriy. Tous droits réservés.","Ancre","Ouvrir dans un nouvel onglet","Ouvrir l'éditeur en pleine page","Supprimer le formattage","Modifier la couleur du fond ou du texte","Refaire","Défaire","Gras","Italique","Liste non ordonnée","Liste ordonnée","Centrer","Justifier","Aligner à gauche ","Aligner à droite","Insérer une ligne horizontale","Insérer une image","Insérer un fichier","Insérer une vidéo","Insérer un lien","Taille des caractères","Famille des caractères","Bloc formatté","Normal","Titre 1","Titre 2","Titre 3","Titre 4","Citation","Code","Insérer","Insérer un tableau","Diminuer le retrait","Retrait plus","Sélectionnez un caractère spécial","Insérer un caractère spécial","Cloner le format","Mode wysiwyg <-> code html","Marges","haut","droite","Bas","gauche","Styles","Classes","Alignement","Droite","Centre","Gauche","--Non disponible--","Source","Titre","Alternative","Lien","Ouvrir le lien dans un nouvel onglet","Image","fichier","Avancé","Propriétés de l'image","Annuler","OK","Explorateur de fichiers","Erreur de liste de chargement","Erreur de dossier de chargement","Etes-vous sûrs ?","Entrer le nom de dossier","Créer un dossier","type de fichier","Coller une image","Déposer un fichier","ou cliquer","Texte de remplacemement","Charger","Chercher","Arrière-plan","Texte","Haut","Milieu","Bas","Insérer une colonne avant","Insérer une colonne après","Insérer une ligne au dessus","Insérer une ligne en dessous","Supprimer le tableau","Supprimer la ligne","Supprimer la colonne","Vider la cellule","Symboles: %d","Mots: %d","Barrer","Souligner","exposant","indice","Couper la sélection","Tout sélectionner","Pause","Rechercher","Remplacer par","Remplacer","Coller","Choisissez le contenu à coller","la source","gras","italique","pinceau","lien","annuler","refaire","tableau","image","gomme","clause","taille de police","Video","police","à propos de l'éditeur","impression","souligné","barré","indentation","retrait","taille réelle","taille conventionnelle","la ligne","Liste","Liste numérotée","Couper","Sélectionner tout","Code d'intégration","Ouvrir le lien","Modifier le lien","Attribut Nofollow","Supprimer le lien","Mettre à jour","Pour éditer","Voir","URL","Modifier","Alignement horizontal","Filtre","Trier par modification","Trier par nom","Trier par taille","Créer le dossier","Restaurer","Sauvegarder","Enregistrer sous","Changer la taille","Taille de garniture","Largeur","Hauteur","Garder les proportions","Oui","Non","Supprimer","Mettre en évidence","Mettre en évidence: %s","Alignement vertical","Split","aller","Ajouter une colonne","Ajouter une rangée","Licence: %s","Effacer","Split vertical","Split horizontal","Bordure","Votre texte que vous essayez de coller est similaire au HTML. Collez-le en HTML?","Coller en HTML?","Sauvegarder l'original","Coller en tant que texte","Coller le texte seulement","Vous ne pouvez éditer que vos propres images. Téléchargez cette image sur l'hôte?","L'image a été téléchargée avec succès sur le serveur!","Palette","Il n'y a aucun fichier dans ce répertoire.","renommer","Entrez un nouveau nom","Aperçu","Télécharger","Coller à partir du presse-papiers","Votre navigateur ne prend pas en charge l'accès direct au presse-papiers.","Copier la sélection","copie","Rayon des bordures","Afficher tous","Appliquer","Veuillez remplir ce champ","Veuillez entrer une adresse web","Par défaut","Cercle","Point","Quadratique","Trouver","Précédent","Suivant","Le contenu que vous insérez provient d'un document Microsoft Word / Excel. Voulez-vous enregistrer le format ou l'effacer?","C'est peut-être un fragment de Word ou Excel","Nettoyer","Insérer un nom de classe","Appuyez sur Alt pour un redimensionnement personnalisé",null,null,null,"Tout sélectionner"]},53113:function(e){e.exports.default=["הקלד משהו...","About Jodit","Jodit Editor","Jodit User's Guide","contains detailed help for using.","For information about the license, please go to our website:","Buy full version","Copyright © XDSoft.net - Chupurnov Valeriy. All rights reserved.","מקום עיגון","פתח בכרטיסיה חדשה","פתח את העורך בחלון חדש","נקה עיצוב","שנה צבע טקסט או רקע","בצע שוב","בטל","מודגש","נטוי","הכנס רשימת תבליטים","הכנס רשימה ממוספרת","מרכז","ישר ","ישר לשמאל","ישר לימין","הכנס קו אופקי","הכנס תמונה","הכנס קובץ","הכנס סרטון וידאו מYouTube/Vimeo","הכנס קישור","גודל גופן","גופן","מעוצב מראש","רגיל","כותרת 1","כותרת 2","כותרת 3","כותרת 4","ציטוט","קוד","הכנס","הכנס טבלה","הקטן כניסה","הגדל כניסה","בחר תו מיוחד","הכנס תו מיוחד","העתק עיצוב","החלף מצב","ריווח","עליון","ימין","תחתון","שמאל","עיצוב CSS","מחלקת CSS","יישור","ימין","מרכז","שמאל","--לא נקבע--","מקור","כותרת","כיתוב חלופי","קישור","פתח בכרטיסיה חדשה","תמונה","קובץ","מתקדם","מאפייני תמונה","ביטול","אישור","סייר הקבצים","שגיאה בזמן טעינת רשימה","שגיאה בזמן טעינת תקיות","האם אתה בטוח?","הכנס שם תקיה","צור תקיה","סוג הקובץ","הסר תמונה","הסר קובץ","או לחץ","כיתוב חלופי","העלה","סייר","רקע","טקסט","עליון","מרכז","תחתון","הכנס עמודה לפני","הכנס עמודה אחרי","הכנס שורה מעל","הכנס שורה מתחת","מחק טבלה","מחק שורה","מחק עמודה","רוקן תא","תווים: %d","מילים: %d","קו חוצה","קו תחתון","superscript","subscript","גזור בחירה","בחר הכל","שבירת שורה","חפש","החלף ב","להחליף","הדבק","בחר תוכן להדבקה","HTML","מודגש","נטוי","מברשת","קישור","בטל","בצע שוב","טבלה","תמונה","מחק","פסקה","גודל גופן","וידאו","גופן","עלינו","הדפס","קו תחתון","קו חוצה","הגדל כניסה","הקטן כניסה","גודל מלא","כווץ","קו אופקי","רשימת תבליטים","רשימה ממוספרת","חתוך","בחר הכל","הוסף קוד","פתח קישור","ערוך קישור","ללא מעקב","בטל קישור","עדכן","כדי לערוך","הצג","כתובת","ערוך","יישור אופקי","סנן","מין לפי שינוי","מיין לפי שם","מיין לפי גודל","הוסף תקייה","אפס","שמור","שמור בשם...","שנה גודל","חתוך","רוחב","גובה","שמור יחס","כן","לא","הסר","בחר","נבחר: %s","יישור אנכי","פיצול","מזג","הוסף עמודה","הוסף שורה","רישיון: %s","מחק","פיצול אנכי","פיצול אופקי","מסגרת","הקוד דומה לHTML, האם להשאיר כHTML","הדבק כHTML","השאר","הכנס כטקסט","הכנס טקסט בלבד","רק קבצים המשוייכים שלך ניתנים לעריכה. האם להוריד את הקובץ?","התמונה עלתה בהצלחה!","לוח","אין קבצים בספריה זו.","הונגרית","הזן שם חדש","תצוגה מקדימה","הורד","להדביק מהלוח","הדפדפן שלך לא תומך גישה ישירה ללוח.","העתק בחירה","העתק","רדיוס הגבול","הצג את כל","החל","נא למלא שדה זה","אנא הזן כתובת אינטרנט","ברירת המחדל","מעגל","נקודה","הריבוע הזה","למצוא","מצא את הקודם","חפש את הבא","התוכן המודבק מגיע ממסמך וורד/אקסל. האם ברצונך להשאיר את העיצוב או לנקותו",'זוהתה הדבקה מ"וורד"',"נקה","הכנס את שם הכיתה","לחץ על אלט לשינוי גודל מותאם אישית",null,null,null,"הכל"]},81321:function(e){e.exports.default=["Írjon be valamit","Joditról","Jodit Editor","Jodit útmutató","további segítséget tartalmaz","További licence információkért látogassa meg a weboldalunkat:","Teljes verzió megvásárlása","Copyright © XDSoft.net - Chupurnov Valeriy. Minden jog fenntartva.","Horgony","Megnyitás új lapon","Megnyitás teljes méretben","Formázás törlése","Háttér/szöveg szín","Újra","Visszavon","Félkövér","Dőlt","Pontozott lista","Számozott lista","Középre zárt","Sorkizárt","Balra zárt","Jobbra zárt","Vízszintes vonal beszúrása","Kép beszúrás","Fájl beszúrás","Youtube videó beszúrása","Link beszúrás","Betűméret","Betűtípus","Formázott blokk beszúrása","Normál","Fejléc 1","Fejléc 2","Fejléc 3","Fejléc 4","Idézet","Kód","Beszúr","Táblázat beszúrása","Behúzás csökkentése","Behúzás növelése","Speciális karakter kiválasztása","Speciális karakter beszúrása","Kép formázása","Nézet váltása","Szegélyek","felső","jobb","alsó","bal","CSS stílusok","CSS osztályok","Igazítás","Jobbra","Középre","Balra","Nincs","Forrás","Cím","Helyettesítő szöveg","Link","Link megnyitása új lapon","Kép","Fájl","Haladó","Kép tulajdonságai","Mégsem","OK","Fájl tallózó","Hiba a lista betöltése közben","Hiba a mappák betöltése közben","Biztosan ezt szeretné?","Írjon be egy mappanevet","Mappa létrehozása","írjon be bevet","Húzza ide a képet","Húzza ide a fájlt","vagy kattintson","Helyettesítő szöveg","Feltölt","Tallóz","Háttér","Szöveg","Fent","Középen","Lent","Oszlop beszúrás elé","Oszlop beszúrás utána","Sor beszúrás fölé","Sor beszúrás alá","Táblázat törlése","Sor törlése","Oszlop törlése","Cella tartalmának törlése","Karakterek száma: %d","Szavak száma: %d","Áthúzott","Aláhúzott","Felső index","Alsó index","Kivágás","Összes kijelölése","Szünet","Keresés","Csere erre","Cserélje ki","Beillesztés","Válasszon tartalmat a beillesztéshez","HTML","Félkövér","Dőlt","Ecset","Link","Visszavon","Újra","Táblázat","Kép","Törlés","Paragráfus","Betűméret","Videó","Betű","Rólunk","Nyomtat","Aláhúzott","Áthúzott","Behúzás","Aussenseiter","Teljes méret","Összenyom","Egyenes vonal","Lista","Számozott lista","Kivág","Összes kijelölése","Beágyazott kód","Link megnyitása","Link szerkesztése","Nincs követés","Link leválasztása","Frissít","Szerkesztés","felülvizsgálat","URL","Szerkeszt","Vízszintes igazítás","Szűrő","Rendezés módosítás szerint","Rendezés név szerint","Rendezés méret szerint","Mappa hozzáadás","Visszaállít","Mentés","Mentés másként...","Átméretezés","Kivág","Szélesség","Magasság","Képarány megtartása","Igen","Nem","Eltávolít","Kijelöl","Kijelöl: %s","Függőleges igazítás","Felosztás","Összevonás","Oszlop hozzáadás","Sor hozzáadás","Licenc: %s","Törlés","Függőleges felosztás","Vízszintes felosztás","Szegély","A beillesztett szöveg HTML-nek tűnik. Megtartsuk HTML-ként?","Beszúrás HTML-ként","Megtartás","Beszúrás szövegként","Csak szöveg beillesztése","Csak a saját képeit tudja szerkeszteni. Letölti ezt a képet?","Kép sikeresen feltöltve!","Palette","Er zijn geen bestanden in deze map.","átnevezés","Adja meg az új nevet","előnézet","Letöltés","Illessze be a vágólap","A böngésző nem támogatja a közvetlen hozzáférést biztosít a vágólapra.","Másolás kiválasztása","másolás","Határ sugár","Összes","Alkalmazni","Kérjük, töltse ki ezt a mezőt,","Kérjük, írja be a webcímet","Alapértelmezett","Kör","Pont","Quadrate","Találni","Megtalálja Előző","Következő Keresése","A beillesztett tartalom Microsoft Word/Excel dokumentumból származik. Meg szeretné tartani a formátumát?","Word-ből másolt szöveg","Elvetés","Helyezze be az osztály nevét","Nyomja meg az Alt egyéni átméretezés",null,null,null,"Összes"]},4679:function(e){e.exports.default=["Ketik sesuatu","Tentang Jodit","Editor Jodit","Panduan Pengguna Jodit","mencakup detail bantuan penggunaan","Untuk informasi tentang lisensi, silakan kunjungi website:","Beli versi lengkap","Hak Cipta © XDSoft.net - Chupurnov Valeriy. Hak cipta dilindungi undang-undang.","Tautan","Buka di tab baru","Buka editor dalam ukuran penuh","Hapus Pemformatan","Isi warna atau atur warna teks","Ulangi","Batalkan","Tebal","Miring","Sisipkan Daftar Tidak Berurut","Sisipkan Daftar Berurut","Tengah","Penuh","Kiri","Kanan","Sisipkan Garis Horizontal","Sisipkan Gambar","Sisipkan Berkas","Sisipkan video youtube/vimeo","Sisipkan tautan","Ukuran font","Keluarga font","Sisipkan blok format","Normal","Heading 1","Heading 2","Heading 3","Heading 4","Kutip","Kode","Sisipkan","Sisipkan tabel","Kurangi Indentasi","Tambah Indentasi","Pilih Karakter Spesial","Sisipkan Karakter Spesial","Formar warna","Ubah mode","Batas","atas","kanan","bawah","kiri","Gaya","Class","Rata","Kanan","Tengah","Kiri","--Tidak diset--","Src","Judul","Teks alternatif","Tautan","Buka tautan di tab baru","Gambar","berkas","Lanjutan","Properti gambar","Batal","Ya","Penjelajah Berkas","Error ketika memuat list","Error ketika memuat folder","Apakah Anda yakin?","Masukkan nama Direktori","Buat direktori","ketik nama","Letakkan gambar","Letakkan berkas","atau klik","Teks alternatif","Unggah","Jelajahi","Latar Belakang","Teks","Atas","Tengah","Bawah","Sisipkan kolom sebelumnya","Sisipkan kolom setelahnya","Sisipkan baris di atasnya","Sisipkan baris di bawahnya","Hapus tabel","Hapus baris","Hapus kolom","Kosongkan cell","Karakter: %d","Kata: %d","Coret","Garis Bawah","Superskrip","Subskrip","Potong pilihan","Pilih semua","Berhenti","Mencari","Ganti dengan","Mengganti","Paste","Pilih konten untuk dipaste","sumber","tebal","miring","sikat","tautan","batalkan","ulangi","tabel","gambar","penghapus","paragraf","ukuran font","video","font","tentang","cetak","garis bawah","coret","menjorok ke dalam","menjorok ke luar","ukuran penuh","menyusut","hr","ul","ol","potong","Pilih semua","Kode embed","Buka tautan","Edit tautan","No follow","Hapus tautan","Perbarui","pensil","Mata","URL","Edit","Perataan horizontal","Filter","Urutkan berdasarkan perubahan","Urutkan berdasarkan nama","Urutkan berdasarkan ukuran","Tambah folder","Reset","Simpan","Simpan sebagai...","Ubah ukuran","Crop","Lebar","Tinggi","Jaga aspek rasio","Ya","Tidak","Copot","Pilih","Pilih %s","Rata vertikal","Bagi","Gabungkan","Tambah kolom","tambah baris","Lisensi: %s","Hapus","Bagi secara vertikal","Bagi secara horizontal","Bingkai","Kode Anda cenderung ke HTML. Biarkan sebagai HTML?","Paste sebagai HTML","Jaga","Sisipkan sebagai teks","Sisipkan hanya teks","Anda hanya dapat mengedit gambar Anda sendiri. Unduh gambar ini di host?","Gambar telah sukses diunggah ke host!","palet","Tidak ada berkas","ganti nama","Masukkan nama baru","pratinjau","Unduh","Paste dari clipboard","Browser anda tidak mendukung akses langsung ke clipboard.","Copy seleksi","copy","Border radius","Tampilkan semua","Menerapkan","Silahkan mengisi kolom ini","Silahkan masukkan alamat web","Default","Lingkaran","Dot","Kuadrat","Menemukan","Menemukan Sebelumnya","Menemukan Berikutnya","Konten dipaste dari dokumen Microsoft Word/Excel. Apakah Anda ingin tetap menjaga format atau membersihkannya?","Terdeteksi paste dari Word","Bersih","Masukkan nama kelas","Tekan Alt untuk mengubah ukuran kustom",null,null,null,"Semua"]},31927:function(e){e.exports.default=["Scrivi qualcosa...","A proposito di Jodit","Jodit Editor","Guida utente di Jodit","contiene una guida dettagliata per l'uso.","Per informazioni sulla licenza, si prega di visitare il nostro sito web:","Acquista la versione completa","Copyright © XDSoft.net - Chupurnov Valeriy. Tutti i diritti riservati.","Link","Apri in una nuova scheda","Apri l'editor a schermo intero","Pulisci Formattazione","Colore di sfondo o del testo","Ripristina","Annulla","Grassetto","Corsivo","Inserisci lista non ordinata","Inserisci lista ordinata","Allinea al centro","Allineamento Giustificato","Allinea a Sinistra","Allinea a Destra","Inserisci una linea orizzontale","Inserisci immagine","Inserisci un file","Inserisci video Youtube/Vimeo","Inserisci link","Dimensione carattere","Tipo di font","Inserisci blocco","Normale","Intestazione 1","Intestazione 2","Intestazione 3","Intestazione 4","Citazione","Codice","Inserisci","Inserisci tabella","Riduci il rientro","Aumenta il rientro","Seleziona un carattere speciale","Inserisci un carattere speciale","Copia formato","Cambia modalita'","Margini","su","destra","giù","sinistra","Stili CSS","Classi CSS","Allinea","Destra","Centro","Sinistra","--Non Impostato--","Fonte","Titolo","Testo Alternativo","Link","Apri il link in una nuova scheda","Immagine","Archivio","Avanzato","Proprietà dell'immagine","Annulla","Accetta","Cerca file","Errore durante il caricamento dell'elenco","Errore durante il caricamento delle cartelle","Sei sicuro?","Inserisci il nome della cartella","Crea cartella","Digita il nome","Cancella immagine","Cancella file","o clicca","Testo alternativo","Carica","Sfoglia","Sfondo","Testo","Su","Centro","Sotto","Inserisci la colonna prima","Inserisci la colonna dopo","Inserisci la riga sopra","Inserisci la riga sotto","Elimina tabella","Elimina riga","Elimina colonna","Cella vuota","Caratteri: %d","Parole: %d","Barrato","Sottolineato","indice","pedice","Taglia selezione","Seleziona tutto","Pausa","Cerca per","Sostituisci con","Sostituisci","Incolla","Seleziona il contenuto da incollare","risorsa","Grassetto","Corsivo","Pennello","Link","Annulla","Ripristina","Tabella","Immagine","Gomma","Paragrafo","Dimensione del carattere","Video","Font","Approposito di","Stampa","Sottolineato","Barrato","aumenta rientro","riduci rientro","espandi","comprimi","linea orizzontale","lista non ordinata","lista ordinata","Taglia","Seleziona tutto","Includi codice","Apri link","Modifica link","Non seguire","Rimuovi link","Aggiorna","Per modificare","Recensione"," URL","Modifica","Allineamento orizzontale","Filtro","Ordina per data di modifica","Ordina per nome","Ordina per dimensione","Aggiungi cartella","Reset","Salva","Salva con nome...","Ridimensiona","Ritaglia","Larghezza","Altezza","Mantieni le proporzioni","Si","No","Rimuovi","Seleziona","Seleziona: %s","Allineamento verticala","Dividi","Fondi","Aggiungi colonna","Aggiungi riga","Licenza: %s","Cancella","Dividi verticalmente","Dividi orizzontale","Bordo","Il codice è simile all'HTML. Mantieni come HTML?","Incolla come HTML","Mantieni","Inserisci come testo","Inserisci solo il testo","Puoi modificare solo le tue immagini. Vuoi scaricare questa immagine dal server?","L'immagine è stata caricata correttamente sul server!","tavolozza","Non ci sono file in questa directory.","Rinomina","Inserisci un nuovo nome","anteprima","Scarica","Incolla dagli appunti","Il tuo browser non supporta l'accesso diretto agli appunti.","Copia selezione","copia","Border radius","Mostra tutti","Applica","Si prega di compilare questo campo","Si prega di inserire un indirizzo web","Default","Cerchio","Punto","Quadrato","Trova","Trova Precedente","Trova Successivo","Il contenuto incollato proviene da un documento Microsoft Word / Excel. Vuoi mantenere il formato o pulirlo?","Incolla testo da Word rilevato","Pulisci","Inserisci il nome della classe","Premere Alt per il ridimensionamento personalizzato",null,null,null,"Tutto"]},21195:function(e){e.exports.default=["なにかタイプしてください","Joditについて","Jodit Editor","Jodit ユーザーズ・ガイド","詳しい使い方","ライセンス詳細についてはJodit Webサイトを確認ください:","フルバージョンを購入","Copyright © XDSoft.net - Chupurnov Valeriy. All rights reserved.","Anchor","新しいタブで開く","エディターのサイズ(フル/ノーマル)","書式をクリア","テキストの色","やり直し","元に戻す","太字","斜体","箇条書き","番号付きリスト","中央揃え","両端揃え","左揃え","右揃え","区切り線を挿入","画像を挿入","ファイルを挿入","Youtube/Vimeo 動画","リンクを挿入","フォントサイズ","フォント","テキストのスタイル","指定なし","タイトル1","タイトル2","タイトル3","タイトル4","引用","コード","挿入","表を挿入","インデント減","インデント増","特殊文字を選択","特殊文字を挿入","書式を貼付け","編集モード切替え","マージン","上","右","下","左","スタイル","クラス","配置","右寄せ","中央寄せ","左寄せ","指定なし","ソース","タイトル","代替テキスト","リンク","新しいタブで開く","画像","ファイル","高度な設定","画像のプロパティー","キャンセル","確定","File Browser","Error on load list","Error on load folders","Are you sure?","Enter Directory name","Create directory","type name","ここに画像をドロップ","ここにファイルをドロップ","or クリック","代替テキスト","アップロード","ブラウズ","背景","文字","上","中央","下","左に列を挿入","右に列を挿入","上に行を挿入","下に行を挿入","表を削除","行を削除","列を削除","セルを空にする","文字数: %d","単語数: %d","取り消し線","下線","上付き文字","下付き文字","切り取り","すべて選択","Pause","検索","置換","交換","貼付け","選択した内容を貼付け","source","bold","italic","brush","link","undo","redo","table","image","eraser","paragraph","fontsize","video","font","about","print","underline","strikethrough","indent","outdent","fullsize","shrink","分割線","箇条書き","番号付きリスト","切り取り","すべて選択","埋め込みコード","リンクを開く","リンクを編集","No follow","リンク解除","更新","鉛筆","サイトを確認","URL","編集","水平方向の配置","Filter","Sort by changed","Sort by name","Sort by size","Add folder","リセット","保存","Save as ...","リサイズ","Crop","幅","高さ","縦横比を保持","はい","いいえ","移除","選択","選択: %s","垂直方向の配置","分割","セルの結合","列を追加","行を追加","ライセンス: %s","削除","セルの分割(垂直方向)","セルの分割(水平方向)","境界線","HTMLコードを保持しますか?","HTMLで貼付け","HTMLを保持","HTMLをテキストにする","テキストだけ","You can only edit your own images. Download this image on the host?","The image has been successfully uploaded to the host!","パレット","There are no files","Rename","Enter new name","プレビュー","ダウンロード","貼り付け","お使いのブラウザはクリップボードを使用できません","コピー","copy","角の丸み","全て表示","適用","まだこの分野","を入力してくださいウェブアドレス","デフォルト","白丸","黒丸","四角","見","探前","由来","The pasted content is coming from a Microsoft Word/Excel document. Do you want to keep the format or clean it up?","Word Paste Detected","Clean","クラス名を挿入","カスタムサイズ変更のためのAltキーを押します",null,null,null,"全部"]},53414:function(e){e.exports.default=["Type something","About Jodit","Jodit Editor","Jodit User's Guide","contains detailed help for using","For information about the license, please go to our website:","Buy full version","Copyright © XDSoft.net - Chupurnov Valeriy. All rights reserved.","Anchor","Open in new tab","Open in fullsize","Clear Formatting","Fill color or set the text color","Redo","Undo","Bold","Italic","Insert Unordered List","Insert Ordered List","Align Center","Align Justify","Align Left","Align Right","Insert Horizontal Line","Insert Image","Insert file","Insert youtube/vimeo video","Insert link","Font size","Font family","Insert format block","Normal","Heading 1","Heading 2","Heading 3","Heading 4","Quote","Code","Insert","Insert table","Decrease Indent","Increase Indent","Select Special Character","Insert Special Character","Paint format","Change mode","Margins","top","right","bottom","left","Styles","Classes","Align","Right","Center","Left","--Not Set--","Src","Title","Alternative","Link","Open link in new tab","Image","file","Advanced","Image properties","Cancel","Ok","File Browser","Error on load list","Error on load folders","Are you sure?","Enter Directory name","Create directory","type name","Drop image","Drop file","or click","Alternative text","Upload","Browse","Background","Text","Top","Middle","Bottom","Insert column before","Insert column after","Insert row above","Insert row below","Delete table","Delete row","Delete column","Empty cell","Chars: %d","Words: %d","Strike through","Underline","superscript","subscript","Cut selection","Select all","Break","Search for","Replace with","Replace","Paste","Choose Content to Paste","source","bold","italic","brush","link","undo","redo","table","image","eraser","paragraph","fontsize","video","font","about","print","underline","strikethrough","indent","outdent","fullsize","shrink","hr","ul","ol","cut","selectall","Embed code","Open link","Edit link","No follow","Unlink","Update","pencil","Eye"," URL","Edit","Horizontal align","Filter","Sort by changed","Sort by name","Sort by size","Add folder","Reset","Save","Save as ...","Resize","Crop","Width","Height","Keep Aspect Ratio","Yes","No","Remove","Select","Select %s","Vertical align","Split","Merge","Add column","Add row","License: %s","Delete","Split vertical","Split horizontal","Border","Your code is similar to HTML. Keep as HTML?","Paste as HTML","Keep","Insert as Text","Insert only Text","You can only edit your own images. Download this image on the host?","The image has been successfully uploaded to the host!","palette","There are no files","Rename","Enter new name","preview","download","Paste from clipboard","Your browser doesn't support direct access to the clipboard.","Copy selection","copy","Border radius","Show all","Apply","Please fill out this field","Please enter a web address","Default","Circle","Dot","Quadrate","Find","Find Previous","Find Next","The pasted content is coming from a Microsoft Word/Excel document. Do you want to keep the format or clean it up?","Word Paste Detected","Clean","Insert className","Press Alt for custom resizing","Line height","spellcheck","Speech Recognize","All"]},11012:function(e){e.exports.default=["무엇이든 입력하세요","Jodit에 대하여","Jodit Editor","Jodit 사용자 안내서","자세한 도움말이 들어있어요","라이센스에 관해서는 Jodit 웹 사이트를 방문해주세요:","풀 버전 구입하기","© XDSoft.net - Chupurnov Valeriy. 에게 저작권과 모든 권리가 있습니다.","Anchor","새 탭에서 열기","전체 크기로 보기","서식 지우기","글씨 색상","재실행","실행 취소","굵게","기울임","글머리 목록","번호 목록","가운데 정렬","양쪽 정렬","왼쪽 정렬","오른쪽 정렬","수평 구분선 넣기","이미지 넣기","파일 넣기","Youtube/Vimeo 동영상","링크 넣기","글꼴 크기","글꼴","블록 요소 넣기","일반 텍스트","제목 1","제목 2","제목 3","제목 4","인용","코드","붙여 넣기","테이블","들여쓰기 감소","들여쓰기 증가","특수문자 선택","특수문자 입력","페인트 형식","편집모드 변경","마진","위","오른쪽","아래","왼쪽","스타일","클래스","정렬","오른쪽으로","가운데로","왼쪽으로","--지정 안 함--","경로(src)","제목","대체 텍스트(alt)","링크","새 탭에서 열기",null,"파일","고급","이미지 속성","취소","확인","파일 탐색기","목록 불러오기 에러","폴더 불러오기","정말 진행할까요?","디렉토리 이름 입력","디렉토리 생성","이름 입력","이미지 드래그","파일 드래그","혹은 클릭","대체 텍스트","업로드","탐색","배경","텍스트","위","중앙","아래","이전 열에 삽입","다음 열에 삽입","위 행에 삽입","아래 행에 삽입","테이블 삭제","행 삭제","열 삭제","빈 셀","문자수: %d","단어수: %d","취소선","밑줄","윗첨자","아래첨자","선택 잘라내기","모두 선택","구분자","검색","대체하기","대체","붙여넣기","붙여넣을 내용 선택","HTML 소스","볼드","이탤릭","브러시","링크","실행 취소","재실행","테이블","이미지","지우개","문단","글꼴 크기","비디오","글꼴","편집기 정보","프린트","밑줄","취소선","들여쓰기","내어쓰기","전체 화면","일반 화면","구분선","글머리 목록","번호 목록","잘라내기","모두 선택","Embed 코드","링크 열기","링크 편집","No follow","링크 제거","갱신","연필","사이트 확인","URL","편집","수평 정렬","필터","변경일 정렬","이름 정렬","크기 정렬","새 폴더","초기화","저장","새로 저장하기 ...","리사이즈","크롭","가로 길이","세로 높이","비율 유지하기","네","아니오","제거","선택","선택: %s","수직 정렬","분할","셀 병합","열 추가","행 추가","라이센스: %s","삭제","세로 셀 분할","가로 셀 분할","외곽선","HTML 코드로 감지했어요. 코드인채로 붙여넣을까요?","HTML로 붙여넣기","원본 유지","텍스트로 넣기","텍스트만 넣기","외부 이미지는 편집할 수 없어요. 외부 이미지를 다운로드 할까요?","이미지를 무사히 업로드 했어요!","팔레트","파일이 없어요","이름 변경","새 이름 입력","미리보기","다운로드","클립보드 붙여넣기","사용중인 브라우저가 클립보드 접근을 지원하지 않아요.","선택 복사","복사","둥근 테두리","모두 보기","적용","이 항목을 입력해주세요!","웹 URL을 입력해주세요.","기본","원","점","정사각형","찾기","이전 찾기","다음 찾기","Microsoft Word/Excel 문서로 감지했어요. 서식을 유지한채로 붙여넣을까요?","Word 붙여넣기 감지","지우기","className 입력","사용자 지정 크기 조정에 대 한 고도 누르십시오",null,null,null,"모두"]},87061:function(e){e.exports.default=["Бичээд үзээрэй","Jodit-ын талаар ","Jodit програм","Jodit гарын авлага","хэрэглээний талаар дэлгэрэнгүй мэдээллийг агуулна","Лицензийн мэдээллийг манай вэб хуудаснаас авна уу:","Бүрэн хувилбар худалдан авах","Зохиогчийн эрх хамгаалагдсан © XDSoft.net - Chupurnov Valeriy. Бүх эрхийг эзэмшинэ.","Холбоо барих","Шинэ табаар нээх","Бүтэн дэлгэцээр нээх","Форматыг арилгах","Өнгөөр будах эсвэл текстийн өнгө сонгох","Дахих","Буцаах","Тод","Налуу","Тэмдэгт жагсаалт нэмэх","Дугаарт жагсаалт нэмэх","Голлож байрлуулах","Тэгшитгэн байрлуулах","Зүүнд байрлуулах","Баруунд байрлуулах","Хэвтээ зураас нэмэх","Зураг нэмэх","Файл нэмэх","Youtube/Vimeo видео нэмэх","Холбоос нэмэх","Фонтын хэмжээ","Фонтын бүл","Блок нэмэх","Хэвийн","Гарчиг 1","Гарчиг 2","Гарчиг 3","Гарчиг 4","Ишлэл","Код","Оруулах","Хүснэгт оруулах","Доголын зай хасах","Доголын зай нэмэх","Тусгай тэмдэгт сонгох","Тусгай тэмдэгт нэмэх","Зургийн формат","Горим өөрчлөх","Цаасны зай","Дээрээс","Баруунаас","Доороос","Зүүнээс","CSS стиль","CSS анги","Байрлуулах","Баруун","Төв","Зүүн","--Тодорхойгүй--","Эх үүсвэр","Гарчиг","Алтернатив текст","Холбоос","Холбоосыг шинэ хавтсанд нээх","Зураг","Файл","Дэвшилтэт","Зургийн үзүүлэлт","Цуцлах","Ok","Файлын цонх","Жагсаалт татах үед алдаа гарлаа","Хавтас татах үед алдаа гарлаа","Итгэлтэй байна уу?","Хавтсын нэр оруулах","Хавтас үүсгэх","Нэр бичих","Зураг буулгах","Файл буулгах","эсвэл товш","Алтернатив текст","Байршуулах","Үзэх","Арын зураг","Текст","Дээр","Дунд","Доор","Урд нь багана нэмэх","Ард нь багана нэмэх","Дээр нь мөр нэмэх","Доор нь мөр нэмэх","Хүснэгт устгах","Мөр устгах","Багана устгах","Нүд цэвэрлэх","Тэмдэгт: %d","Үг: %d","Дээгүүр зураас","Доогуур зураас","Дээд индекс","Доод индекс","Сонголтыг таслах","Бүгдийг сонго","Мөрийг таслах","Хайх","Үүгээр солих","Солих","Буулгах","Буулгах агуулгаа сонгоно уу","Эх үүсвэр","Тод","Налуу","Будах","Холбоос","Буцаах","Дахих","Хүснэгт","Зураг","Баллуур","Параграф","Фонтын хэмжээ","Видео","Фонт","Тухай","Хэвлэх","Доогуур зураас","Дээгүүр зураас","Догол нэмэх","Догол багасгах","Бүтэн дэлгэц","Багасга","Хаалт","Тэмдэгт жагсаалт","Дугаарласан жагсаалт","Таслах","Бүгдийг сонго","Код оруулах","Холбоос нээх","Холбоос засах","Nofollow özelliği","Холбоос салгах","Шинэчлэх","Засах","Нүд","URL","Засах","Хэвтээ эгнүүлэх","Шүүх","Сүүлд өөрчлөгдсөнөөр жагсаах","Нэрээр жагсаах","Хэмжээгээр жагсаах","Хавтас нэмэх","Буцаах","Хадгалах","Өөрөөр хадгалах","Хэмжээг өөрчил","Тайрах","Өргөн","Өндөр","Харьцааг хадгал","Тийм","Үгүй","Арилга","Сонго","Сонго: %s","Босоо эгнүүлэх","Задлах","Нэгтгэх","Багана нэмэх","Мөр нэмэх","Лиценз: %s","Устгах","Баганаар задлах","Мөрөөр задлах","Хүрээ","Таны код HTML кодтой адил байна. HTML форматаар үргэлжлүүлэх үү?","HTML байдлаар буулгах","Хадгалах","Текст байдлаар нэмэх","Зөвхөн текст оруулах","Та зөвхөн өөрийн зургуудаа янзлах боломжтой. Энэ зургийг өөр лүүгээ татмаар байна уу?","Зургийг хост руу амжилттай хадгалсан","Палет","Энд ямар нэг файл алга","Шинээр нэрлэх","Шинэ нэр оруулна уу","Урьдчилан харах","Татах","Самбараас хуулах ","Энэ вэб хөтчөөс самбарт хандах эрх алга.","Сонголтыг хуул","Хуулах","Хүрээний радиус","Бүгдийг харуулах","Хэрэгжүүл","Энэ талбарыг бөглөнө үү","Вэб хаягаа оруулна уу","Үндсэн","Дугуй","Цэг","Дөрвөлжин","Хайх","Өмнөхийг ол","Дараагийнхийг ол","Буулгасан агуулга Microsoft Word/Excel форматтай байна. Энэ форматыг хэвээр хадгалах уу эсвэл арилгах уу?","Word байдлаар буулгасан байна","Цэвэрлэх","Бүлгийн нэрээ оруулна уу","Хэмжээсийг шинээр өөчрлөхийн тулд Alt товчин дээр дарна уу",null,null,null,"Бүгдийг"]},3268:function(e){e.exports.default=["Begin met typen..","Over Jodit","Jodit Editor","Jodit gebruikershandleiding","bevat gedetailleerde informatie voor gebruik.","Voor informatie over de licentie, ga naar onze website:","Volledige versie kopen","Copyright © XDSoft.net - Chupurnov Valeriy. Alle rechten voorbehouden.","Anker","Open in nieuwe tab","Editor in volledig scherm openen","Opmaak verwijderen","Vulkleur of tekstkleur aanpassen","Opnieuw","Ongedaan maken","Vet","Cursief","Geordende list invoegen","Ongeordende lijst invoegen","Centreren","Uitlijnen op volledige breedte","Links uitlijnen","Rechts uitlijnen","Horizontale lijn invoegen","Afbeelding invoegen","Bestand invoegen","Youtube/Vimeo video invoegen","Link toevoegen","Tekstgrootte","Lettertype","Format blok invoegen","Normaal","Koptekst 1","Koptekst 2","Koptekst 3","Koptekst 4","Citaat","Code","Invoegen","Tabel invoegen","Inspringing verkleinen","Inspringing vergroten","Symbool selecteren","Symbool invoegen","Opmaak kopieren","Modus veranderen","Marges","Boven","Rechts","Onder","Links","CSS styles","CSS classes","Uitlijning","Rechts","Gecentreerd","Links","--Leeg--","Src","Titel","Alternatieve tekst","Link","Link in nieuwe tab openen","Afbeelding","Bestand","Geavanceerd","Afbeeldingseigenschappen","Annuleren","OK","Bestandsbrowser","Fout bij het laden van de lijst","Fout bij het laden van de mappenlijst","Weet je het zeker?","Geef de map een naam","Map aanmaken","Type naam","Sleep hier een afbeelding naartoe","Sleep hier een bestand naartoe","of klik","Alternatieve tekst","Uploaden","Bladeren","Achtergrond","Tekst","Boven","Midden","Onder","Kolom invoegen (voor)","Kolom invoegen (na)","Rij invoegen (boven)","Rij invoegen (onder)","Tabel verwijderen","Rij verwijderen","Kolom verwijderen","Cel leegmaken","Tekens: %d","Woorden: %d","Doorstrepen","Onderstrepen","Superscript","Subscript","Selectie knippen","Selecteer alles","Enter","Zoek naar","Vervangen door","Vervangen","Plakken","Kies content om te plakken","Broncode","vet","cursief","kwast","link","ongedaan maken","opnieuw","tabel","afbeelding","gum","paragraaf","lettergrootte","video","lettertype","over","afdrukken","onderstreept","doorgestreept","inspringen","minder inspringen","volledige grootte","kleiner maken","horizontale lijn","lijst","genummerde lijst","knip","alles selecteren","Embed code","Link openen","Link aanpassen","Niet volgen","link verwijderen","Updaten","Om te bewerken","Recensie"," URL","Bewerken","Horizontaal uitlijnen","Filteren","Sorteren op wijzigingsdatum","Sorteren op naam","Sorteren op grootte","Map toevoegen","Herstellen","Opslaan","Opslaan als ...","Grootte aanpassen","Bijknippen","Breedte","Hoogte","Verhouding behouden","Ja","Nee","Verwijderen","Selecteren","Selecteer: %s","Verticaal uitlijnen","Splitsen","Samenvoegen","Kolom toevoegen","Rij toevoegen","Licentie: %s","Verwijderen","Verticaal splitsen","Horizontaal splitsen","Rand","Deze code lijkt op HTML. Als HTML behouden?","Invoegen als HTML","Origineel behouden","Als tekst invoegen","Als onopgemaakte tekst invoegen","Je kunt alleen je eigen afbeeldingen aanpassen. Deze afbeelding downloaden?","De afbeelding is succesvol geüploadet!","Palette","Er zijn geen bestanden in deze map.","Hernoemen","Voer een nieuwe naam in","Voorvertoning","Download","Plakken van klembord","Uw browser ondersteunt geen directe toegang tot het klembord.","Selectie kopiëren","kopiëren","Border radius","Toon alle","Toepassen","Vul dit veld in","Voer een webadres in","Standaard","Cirkel","Punt","Kwadraat","Zoeken","Vorige Zoeken","Volgende Zoeken","De geplakte tekst is afkomstig van een Microsoft Word/Excel document. Wil je de opmaak behouden of opschonen?","Word-tekst gedetecteerd","Opschonen","Voeg de klassenaam in","Druk op Alt voor aangepaste grootte",null,null,null,"Alles"]},85325:function(e){e.exports.default=["Skriv noe","Om Jodit","Jodit-redigerer","Jodit brukerveiledning","Inneholder detaljert hjelp for bruk","For informasjon om lisensen, besøk vår nettside:","Kjøp fullversjon","Opphavsrett © XDSoft.net - Chupurnov Valeriy. Alle rettigheter forbeholdt.","Anker","Åpne i ny fane","Åpne i fullskjerm","Fjern formatering","Endre bakgrunns- eller tekstfarge","Gjør om","Angre","Fet","Kursiv","Sett inn punktliste","Sett inn nummerert liste","Midtstill","Juster","Venstrejuster","Høyrejuster","Sett inn horisontal linje","Sett inn bilde","Sett inn fil","Sett inn YouTube/Vimeo-video","Sett inn lenke","Skriftstørrelse","Skriftfamilie","Sett inn formateringsblokk","Normal","Overskrift 1","Overskrift 2","Overskrift 3","Overskrift 4","Sitat","Kode","Sett inn","Sett inn tabell","Reduser innrykk","Øk innrykk","Velg spesialtegn","Sett inn spesialtegn","Kopier format","Bytt modus (WYSIWYG/HTML)","Marger","topp","høyre","bunn","venstre","Stiler","Klasser","Justering","Høyre","Senter","Venstre","--Ikke satt--","Kilde","Tittel","Alternativ","Lenke","Åpne lenke i ny fane","Bilde","fil","Avansert","Bildeegenskaper","Avbryt","OK","Filutforsker","Feil ved lasting av liste","Feil ved lasting av mapper","Er du sikker?","Skriv inn mappenavn","Opprett mappe","skriv navn","Slipp bilde","Slipp fil","eller klikk","Alternativ tekst","Last opp","Bla gjennom","Bakgrunn","Tekst","Topp","Midt","Bunn","Sett inn kolonne før","Sett inn kolonne etter","Sett inn rad over","Sett inn rad under","Slett tabell","Slett rad","Slett kolonne","Tøm celle","Tegn: %d","Ord: %d","Gjennomstreking","Understreking","hevet skrift","senket skrift","Klipp ut markering","Velg alt","Pause","Søk etter","Erstatt med","Erstatt","Lim inn","Velg innhold å lime inn","kilde","fet","kursiv","pensel","lenke","angre","gjør om","tabell","bilde","viskelær","avsnitt","skriftstørrelse","video","skrift","om redigeringsverktøyet","skriv ut","understreking","gjennomstreking","innrykk","reduser innrykk","full størrelse","krympe","linje","punktliste","nummerert liste","klipp ut","velg alt","Bygge inn kode","Åpne lenke","Rediger lenke","Ingen oppfølging","Fjern lenke","Oppdater","Rediger","Forhåndsvisning","URL","Rediger","Horisontal justering","Filter","Sorter etter endring","Sorter etter navn","Sorter etter størrelse","Legg til mappe","Tilbakestill","Lagre","Lagre som ...","Endre størrelse","Beskjær","Bredde","Høyde","Behold proporsjoner","Ja","Nei","Fjern","Velg","Velg: %s","Vertikal justering","Del","Slå sammen","Legg til kolonne","Legg til rad","Lisens: %s","Slett","Del vertikalt","Del horisontalt","Kantlinje","Koden din ligner HTML. Beholde som HTML?","Lim inn som HTML","Behold","Lim inn som tekst","Lim inn kun tekst","Du kan bare redigere dine egne bilder. Last ned dette bildet på verten?","Bildet har blitt lastet opp til verten!","Palett","Det er ingen filer i denne katalogen","Gi nytt navn","Skriv inn nytt navn","Forhåndsvisning","Last ned","Lim inn fra utklippstavlen","Nettleseren din støtter ikke direkte tilgang til utklippstavlen.","Kopier utvalg","kopi","Grenseradius","Vis alle","Bruk","Vennligst fyll ut dette feltet","Vennligst skriv inn en webadresse","Standard","Sirkel","Prikk","Firkant","Finne","Finn forrige","Finn neste","Innholdet du limer inn kommer fra et Microsoft Word/Excel-dokument. Vil du beholde formatet eller rense det?","Word-innliming oppdaget","Rens","Sett inn klassenavn","Trykk på Alt for å endre størrelse","Linjehøyde",null,null,"Velg alle"]},97834:function(e){e.exports.default=["Napisz coś","O Jodit","Edytor Jodit","Instrukcja Jodit","zawiera szczegółowe informacje dotyczące użytkowania.","Odwiedź naszą stronę, aby uzyskać więcej informacji na temat licencji:","Zakup pełnej wersji","Copyright © XDSoft.net - Chupurnov Valeriy. Wszystkie prawa zastrzeżone.","Kotwica","Otwórz w nowej zakładce","Otwórz edytor w pełnym rozmiarze","Wyczyść formatowanie","Kolor wypełnienia lub ustaw kolor tekstu","Ponów","Cofnij","Pogrubienie","Kursywa","Wstaw listę wypunktowaną","Wstaw listę numeryczną","Wyśrodkuj","Wyjustuj","Wyrównaj do lewej","Wyrównaj do prawej","Wstaw linię poziomą","Wstaw grafikę","Wstaw plik","Wstaw film Youtube/vimeo","Wstaw link","Rozmiar tekstu","Krój czcionki","Wstaw formatowanie","Normalne","Nagłówek 1","Nagłówek 2","Nagłówek 3","Nagłówek 4","Cytat","Kod","Wstaw","Wstaw tabelę","Zmniejsz wcięcie","Zwiększ wcięcie","Wybierz znak specjalny","Wstaw znak specjalny","Malarz formatów","Zmień tryb","Marginesy","Górny","Prawy","Dolny","Levy","Style CSS","Klasy CSS","Wyrównanie","Prawa","środek","Lewa","brak","Źródło","Tytuł","Tekst alternatywny","Link","Otwórz w nowej zakładce","Grafika","Plik","Zaawansowane","Właściwości grafiki","Anuluj","OK","Przeglądarka plików","Błąd ładowania listy plików","Błąd ładowania folderów","Czy jesteś pewien?","Wprowadź nazwę folderu","Utwórz folder","wprowadź nazwę","Upuść plik graficzny","Upuść plik","lub kliknij tu","Tekst alternatywny","Wczytaj","Przeglądaj","Tło","Treść","Góra","Środek","Dół","Wstaw kolumnę przed","Wstaw kolumnę po","Wstaw wiersz przed","Wstaw wiersz po","Usuń tabelę","Usuń wiersz","Usuń kolumnę","Wyczyść komórkę","Znaki: %d","Słowa: %d","Przekreślenie","Podkreślenie","indeks górny","index dolny","Wytnij zaznaczenie","Wybierz wszystko","Przerwa","Szukaj","Zamień na","Wymienić","Wklej","Wybierz zawartość do wklejenia","HTML","pogrubienie","kursywa","pędzel","link","cofnij","ponów","tabela","grafika","wyczyść","akapit","rozmiar czcionki","wideo","czcionka","O programie","drukuj","podkreślenie","przekreślenie","wcięcie","wycięcie","pełen rozmiar","przytnij","linia pozioma","lista","lista numerowana","wytnij","zaznacz wszystko","Wstaw kod","otwórz link","edytuj link","Atrybut no-follow","Usuń link","Aktualizuj","edytuj","szukaj","URL","Edytuj","Wyrównywanie w poziomie","Filtruj","Sortuj wg zmiany","Sortuj wg nazwy","Sortuj wg rozmiaru","Dodaj folder","wyczyść","zapisz","zapisz jako","Zmień rozmiar","Przytnij","Szerokość","Wysokość","Zachowaj proporcje","Tak","Nie","Usuń","Wybierz","Wybierz: %s","Wyrównywanie w pionie","Podziel","Scal","Dodaj kolumnę","Dodaj wiersz","Licencja: %s","Usuń","Podziel w pionie","Podziel w poziomie","Obramowanie","Twój kod wygląda jak HTML. Zachować HTML?","Wkleić jako HTML?","Oryginalny tekst","Wstaw jako tekst","Wstaw tylko treść","Możesz edytować tylko swoje grafiki. Czy chcesz pobrać tą grafikę?","Grafika została pomyślnienie dodana na serwer","Paleta","Brak plików.","zmień nazwę","Wprowadź nową nazwę","podgląd","pobierz","Wklej ze schowka","Twoja przeglądarka nie obsługuje schowka","Kopiuj zaznaczenie","kopiuj","Zaokrąglenie krawędzi","Pokaż wszystkie","Zastosuj","Proszę wypełnić to pole","Proszę, wpisz adres sieci web","Domyślnie","Koło","Punkt","Kwadrat","Znaleźć","Znaleźć Poprzednie","Znajdź Dalej","Wklejany tekst pochodzi z dokumentu Microsoft Word/Excel. Chcesz zachować ten format czy wyczyścić go? ","Wykryto tekst w formacie Word","Wyczyść","Wstaw nazwę zajęć","Naciśnij Alt, aby zmienić rozmiar",null,null,null,"Wszystko"]},86433:function(e){e.exports.default=["Escreva algo...","Sobre o Jodit","Editor Jodit","Guia de usuário Jodit","contém ajuda detalhada para o uso.","Para informação sobre a licença, por favor visite nosso site:","Compre a versão completa","Copyright © XDSoft.net - Chupurnov Valeriy. Todos os direitos reservados.","Link","Abrir em nova aba","Abrir editor em tela cheia","Limpar formatação","Cor de preenchimento ou cor do texto","Refazer","Desfazer","Negrito","Itálico","Inserir lista não ordenada","Inserir lista ordenada","Centralizar","Justificar","Alinhar à Esquerda","Alinhar à Direita","Inserir linha horizontal","Inserir imagem","Inserir arquivo","Inserir vídeo do Youtube/vimeo","Inserir link","Tamanho da letra","Fonte","Inserir bloco","Normal","Cabeçalho 1","Cabeçalho 2","Cabeçalho 3","Cabeçalho 4","Citação","Código","Inserir","Inserir tabela","Diminuir recuo","Aumentar recuo","Selecionar caractere especial","Inserir caractere especial","Copiar formato","Mudar modo","Margens","cima","direta","baixo","esquerda","Estilos CSS","Classes CSS","Alinhamento","Direita","Centro","Esquerda","--Não Estabelecido--","Fonte","Título","Texto Alternativo","Link","Abrir link em nova aba","Imagem","Arquivo","Avançado","Propriedades da imagem","Cancelar","Ok","Procurar arquivo","Erro ao carregar a lista","Erro ao carregar as pastas","Você tem certeza?","Escreva o nome da pasta","Criar pasta","Escreva seu nome","Soltar imagem","Soltar arquivo","ou clique","Texto alternativo","Upload","Explorar","Fundo","Texto","Cima","Meio","Baixo","Inserir coluna antes","Inserir coluna depois","Inserir linha acima","Inserir linha abaixo","Excluir tabela","Excluir linha","Excluir coluna","Limpar célula","Caracteres: %d","Palavras: %d","Tachado","Sublinhar","sobrescrito","subscrito","Cortar seleção","Selecionar tudo","Pausa","Procurar por","Substituir com","Substituir","Colar","Escolher conteúdo para colar","HTML","negrito","itálico","pincel","link","desfazer","refazer","tabela","imagem","apagar","parágrafo","tamanho da letra","vídeo","fonte","Sobre de","Imprimir","sublinhar","tachado","recuar","diminuir recuo","Tamanho completo","diminuir","linha horizontal","lista não ordenada","lista ordenada","Cortar","Selecionar tudo","Incluir código","Abrir link","Editar link","Não siga","Remover link","Atualizar","Editar","Visualizar","URL","Editar","Alinhamento horizontal","filtrar","Ordenar por modificação","Ordenar por nome","Ordenar por tamanho","Adicionar pasta","Resetar","Salvar","Salvar como...","Redimensionar","Recortar","Largura","Altura","Manter a proporção","Sim","Não","Remover","Selecionar","Selecionar: %s","Alinhamento vertical","Dividir","Mesclar","Adicionar coluna","Adicionar linha","Licença: %s","Excluir","Dividir vertical","Dividir horizontal","Borda","Seu código é similar ao HTML. Manter como HTML?","Colar como HTML?","Manter","Inserir como Texto","Inserir somente o Texto","Você só pode editar suas próprias imagens. Baixar essa imagem pro servidor?","A imagem foi enviada com sucesso para o servidor!","Palette","Não há arquivos nesse diretório.","Húngara","Digite um novo nome","preview","Baixar","Colar da área de transferência","O seu navegador não oferece suporte a acesso direto para a área de transferência.","Selecção de cópia","cópia","Border radius","Mostrar todos os","Aplicar","Por favor, preencha este campo","Por favor introduza um endereço web","Padrão","Círculo","Ponto","Quadro","Encontrar","Encontrar Anteriores","Localizar Próxima","O conteúdo colado veio de um documento Microsoft Word/Excel. Você deseja manter o formato ou limpa-lo?","Colado do Word Detectado","Limpar","Insira o nome da classe","Pressione Alt para redimensionamento personalizado",null,null,null,"Tudo"]},28359:function(e){e.exports.default=["Напишите что-либо","О Jodit","Редактор Jodit","Jodit Руководство пользователя","содержит детальную информацию по использованию","Для получения сведений о лицензии , пожалуйста, перейдите на наш сайт:","Купить полную версию","Авторские права © XDSoft.net - Чупурнов Валерий. Все права защищены.","Анкор","Открывать ссылку в новой вкладке","Открыть редактор в полном размере","Очистить форматирование","Цвет заливки или цвет текста","Повтор","Отмена","Жирный","Наклонный","Вставка маркированного списка","Вставить нумерованный список","Выровнять по центру","Выровнять по ширине","Выровнять по левому краю","Выровнять по правому краю","Вставить горизонтальную линию","Вставить изображение","Вставить файл","Вставьте видео","Вставить ссылку","Размер шрифта","Шрифт","Вставить блочный элемент","Нормальный текст","Заголовок 1","Заголовок 2","Заголовок 3","Заголовок 4","Цитата","Код","Вставить","Вставить таблицу","Уменьшить отступ","Увеличить отступ","Выберите специальный символ","Вставить специальный символ","Формат краски","Источник","Отступы","сверху","справа","снизу","слева","Стили","Классы","Выравнивание","По правому краю","По центру","По левому краю","--не устанавливать--","src","Заголовок","Альтернативный текст (alt)","Ссылка","Открывать ссылку в новом окне",null,"Файл","Расширенные","Свойства изображения","Отмена","Ок","Браузер файлов","Ошибка при загрузке списка изображений","Ошибка при загрузке списка директорий","Вы уверены?","Введите название директории","Создать директорию","введите название","Перетащите сюда изображение","Перетащите сюда файл","или нажмите","Альтернативный текст","Загрузка","Сервер","Фон","Текст"," К верху","По середине","К низу","Вставить столбец до","Вставить столбец после","Вставить ряд выше","Вставить ряд ниже","Удалить таблицу","Удалять ряд","Удалить столбец","Очистить ячейку","Символов: %d","Слов: %d","Перечеркнуть","Подчеркивание","верхний индекс","индекс","Вырезать","Выделить все","Разделитель","Найти","Заменить на","Заменить","Вставить","Выбрать контент для вставки","HTML","жирный","курсив","заливка","ссылка","отменить","повторить","таблица","Изображение","очистить","параграф","размер шрифта","видео","шрифт","о редакторе","печать","подчеркнутый","перечеркнутый","отступ","выступ","во весь экран","обычный размер","линия","Список","Нумерованный список","Вырезать","Выделить все","Код","Открыть ссылку","Редактировать ссылку","Атрибут nofollow","Убрать ссылку","Обновить","Редактировать","Просмотр","URL","Редактировать","Горизонтальное выравнивание","Фильтр","По изменению","По имени","По размеру","Добавить папку","Восстановить","Сохранить","Сохранить как","Изменить размер","Обрезать размер","Ширина","Высота","Сохранять пропорции","Да","Нет","Удалить","Выделить","Выделить: %s","Вертикальное выравнивание","Разделить","Объединить в одну","Добавить столбец","Добавить строку","Лицензия: %s","Удалить","Разделить по вертикали","Разделить по горизонтали","Рамка","Ваш текст, который вы пытаетесь вставить похож на HTML. Вставить его как HTML?","Вставить как HTML?","Сохранить оригинал","Вставить как текст","Вставить только текст","Вы можете редактировать только свои собственные изображения. Загрузить это изображение на ваш сервер?","Изображение успешно загружено на сервер!","палитра","В данном каталоге нет файлов","Переименовать","Введите новое имя","Предпросмотр","Скачать","Вставить из буфера обмена","Ваш браузер не поддерживает прямой доступ к буферу обмена.","Скопировать выделенное","копия","Радиус границы","Показать все","Применить","Пожалуйста, заполните это поле","Пожалуйста, введите веб-адрес","По умолчанию","Круг","Точка","Квадрат","Найти","Найти Предыдущие","Найти Далее","Контент который вы вставляете поступает из документа Microsoft Word / Excel. Вы хотите сохранить формат или очистить его?","Возможно это фрагмент Word или Excel","Почистить","Вставить название класса","Нажмите Alt для изменения пользовательского размера",null,null,null,"Выделить все"]},68368:function(e){e.exports.default=["Bir şeyler yaz","Jodit Hakkında","Jodit Editor","Jodit Kullanım Kılavuzu","kullanım için detaylı bilgiler içerir","Lisans hakkında bilgi için lütfen web sitemize gidin:","Tam versiyonunu satın al","Copyright © XDSoft.net - Chupurnov Valeriy. Tüm hakları saklıdır.","Bağlantı","Yeni sekmede aç","Editörü tam ekranda aç","Stili temizle","Renk doldur veya yazı rengi seç","Yinele","Geri Al","Kalın","İtalik","Sırasız Liste Ekle","Sıralı Liste Ekle","Ortala","Kenarlara Yasla","Sola Yasla","Sağa Yasla","Yatay Çizgi Ekle","Resim Ekle","Dosya Ekle","Youtube/Vimeo Videosu Ekle","Bağlantı Ekle","Font Boyutu","Font Ailesi","Blok Ekle","Normal","Başlık 1","Başlık 2","Başlık 3","Başlık 4","Alıntı","Kod","Ekle","Tablo Ekle","Girintiyi Azalt","Girintiyi Arttır","Özel Karakter Seç","Özel Karakter Ekle","Resim Biçimi","Mod Değiştir","Boşluklar","Üst","Sağ","Alt","Sol","CSS Stilleri","CSS Sınıfları","Hizalama","Sağ","Ortalı","Sol","Belirsiz","Kaynak","Başlık","Alternatif Yazı","Link","Bağlantıyı yeni sekmede aç","Resim","Dosya","Gelişmiş","Resim özellikleri","İptal","Tamam","Dosya Listeleyici","Liste yüklenirken hata oluştu","Klasörler yüklenirken hata oluştur","Emin misiniz?","Dizin yolu giriniz","Dizin oluştur","İsim yaz","Resim bırak","Dosya bırak","veya tıkla","Alternatif yazı","Yükle","Gözat","Arka plan","Yazı","Üst","Orta","Aşağı","Öncesine kolon ekle","Sonrasına kolon ekle","Üstüne satır ekle","Altına satır ekle","Tabloyu sil","Satırı sil","Kolonu sil","Hücreyi temizle","Harfler: %d","Kelimeler: %d","Üstü çizili","Alt çizgi","Üst yazı","Alt yazı","Seçilimi kes","Tümünü seç","Satır sonu","Ara","Şununla değiştir","Değiştir","Yapıştır","Yapıştırılacak içerik seç","Kaynak","Kalın","italik","Fırça","Bağlantı","Geri al","Yinele","Tablo","Resim","Silgi","Paragraf","Font boyutu","Video","Font","Hakkında","Yazdır","Alt çizgi","Üstü çizili","Girinti","Çıkıntı","Tam ekran","Küçült","Ayraç","Sırasız liste","Sıralı liste","Kes","Tümünü seç","Kod ekle","Bağlantıyı aç","Bağlantıyı düzenle","Nofollow özelliği","Bağlantıyı kaldır","Güncelle","Düzenlemek için","Yorumu","URL","Düzenle","Yatay hizala","Filtre","Değişime göre sırala","İsme göre sırala","Boyuta göre sırala","Klasör ekle","Sıfırla","Kaydet","Farklı kaydet","Boyutlandır","Kırp","Genişlik","Yükseklik","En boy oranını koru","Evet","Hayır","Sil","Seç","Seç: %s","Dikey hizala","Ayır","Birleştir","Kolon ekle","Satır ekle","Lisans: %s","Sil","Dikey ayır","Yatay ayır","Kenarlık","Kodunuz HTML koduna benziyor. HTML olarak devam etmek ister misiniz?","HTML olarak yapıştır","Sakla","Yazı olarak ekle","Sadece yazıyı ekle","Sadece kendi resimlerinizi düzenleyebilirsiniz. Bu görseli kendi hostunuza indirmek ister misiniz?","Görsel başarıyla hostunuza yüklendi","Palet","Bu dizinde dosya yok","Yeniden isimlendir","Yeni isim girin","Ön izleme","İndir","Panodan yapıştır ","Tarayıcınız panoya doğrudan erişimi desteklemiyor.","Seçimi kopyala","Kopyala","Sınır yarıçapı","Tümünü Göster","Uygula","Lütfen bu alanı doldurun","Lütfen bir web adresi girin","Varsayılan","Daire","Nokta","Kare","Bul","Öncekini Bul","Sonrakini Bul","Der Inhalt, den Sie einfügen, stammt aus einem Microsoft Word / Excel-Dokument. Möchten Sie das Format erhalten oder löschen?","Word biçiminde yapıştırma algılandı","Temizle","Sınıf adı girin","Özel yeniden boyutlandırma için Alt tuşuna basın",null,null,null,"Tümü"]},57456:function(e){e.exports.default=["Напишіть щось","Про Jodit","Редактор Jodit","Jodit інструкція користувача","містить детальну інформацію щодо користування","Щоб дізнатись більше про ліцензію , будь ласка, перейдіть на наш сайт:","Купити повну версію","Авторські права © XDSoft.net - Чупурнов Валерій. Всі права захищені.","Анкор","Відкрити у новій вкладці","Відкрити редактор в повному розмірі","Очистити форматування","Колір заливки або колір текста","Повторити","Відмінити","Жирний","Курсів","Вставити невпорядкований список","Вставити нумерованний список","Вирівняти по центру","Вирівняти по ширині","Вирівняти по лівому краю","Вирівняти по правому краю","Вставити горизонтальну лінію","Вставити зображення","Вставити файл","Вставити відео","Вставити посилання","Розмір шрифту","Шрифт","Вставити блочний елемент","Нормальний текст","Заголовок 1","Заголовок 2","Заголовок 3","Заголовок 4","Цитата","Код","Вставити","Вставити таблицю","Збільшити відступ","Зменшити відступ","Оберіть спеціальный символ","Вставити спеціальный символ","Формат краски","Джерело","Відступи","зверху","справа","знизу","зліва","Стилі","Класи","Вирівнювання","По правому краю","По центру","По лівому краю","--не встановлено--","src","Заголовок","Альтернативний текст (alt)","Посилання","Відкрити посилання в новій вкладці",null,"Файл","Розширені","Властивості зображення","Відміна","Ок","Браузер файлів","Помилка при завантаженні списку зображень","Помилка при завантаженні списку папок","Ви впевнені?","Введіть назву папки","Створити папку","введіть назву","Перетягніть зображення сюди","Перетягніть файл сюди","або клікніть","Альтернативный текст","Завантаження","Сервер","Фон","Текст"," Вгору","По центру","Донизу","Вставити стовпець до","Вставити стовпець після","Вставити рядок вище","Вставити рядок нижче","Видалити таблицю","Видалити рядок","Видалити стовпчик","Очистити кліинку","Символів: %d","Слів: %d","Закреслений","Підкреслений","верхній індекс","індекс","Обрізати вибране","Вибрати все","Межа","Шукати","Замінити на","Замінити","Вставити","Обрати контент для вставки","HTML","жирний","курсів","заливка","посилання","відмінити","повторити","таблиця","зображення","видалення","параграф","розмір шрифту","відео","шрифт","про редактор","друк","підкреслений","закреслений","відступ","заступ","на весь екран","звичайний розмір","лінія","Список","Нумерований список","Вирізати","Виділити все","Код","Відкрити посилання","Редагувати посилання","Атрибут nofollow","Видалити посилання","Оновити","Редагування","Перегляд","URL","Редагувати","Горизонтальне вирівнювання","Фільтр","Сортувати за зміною","Сортувати за ім'ям","Сортувати за розміром","Додати папку","Відновити","Зберегти","Зберегти як","Змінити розмір","Обрізати розмір","Ширина","Висота","Зберегти пропорції","Так","Ні","Видалити","Вибрати","Вибрати: %s","Вертикальне вирівнювання","Розділити","Об'єднати в одну","Додати стовпчик","Додати рядок","Ліцензія: %s","Видалити","Розділити по вертикалі","Розділити по горизонталі","Рамка","Текст, який Ви намагаєтесь вставити схожий на HTML. Вставити його як HTML?","Вставити його як HTML","Зберегти оригінал","Вставити як текст","Вставити тільки текст","Ви можете редагувати лише власні зображення. Завантажити зображення на ваш сервер?","Зображення успішно завантажено на сервер!","палітра","Файли відсутні","Змінити назву","Введіть нове імя'","Попередній перегляд","Завантажити","Вставити з буфера обміну","Ваш браузер не підтримує доступ до буфера обміну.","Копіювати виділене","копія","Радіус рамки","Показати все","Застосувати","Будь ласка, заповніть це поле","Будь ласка, введіть веб-адресу","За замовченням","Коло","Крапка","Квадрат","Знайти","Знайти попередні","Знайти наступні","Ви вставляєте контент з документа Microsoft Word або Excel. Бажаєте зберегти форматування?","Можливо це фрагмент Word або Excel","Почистити","Вставити клас","Натисніть Alt для зміни розміру",null,null,null,"Вибрати все"]},25182:function(e){e.exports.default=["输入一些内容","关于Jodit","Jodit Editor","开发者指南","使用帮助","有关许可证的信息,请访问我们的网站:","购买完整版本","Copyright © XDSoft.net - Chupurnov Valeriy. 版权所有","Anchor","在新窗口打开","全屏编辑","清除样式","颜色","重做","撤销","粗体","斜体","符号列表","编号","居中","对齐文本","左对齐","右对齐","分割线","图片","文件","视频","链接","字号","字体","格式块","默认","标题1","标题2","标题3","标题4","引用","代码","插入","表格","减少缩进","增加缩进","选择特殊符号","特殊符号","格式复制","改变模式","外边距(Margins)","top","right","bottom","left","样式","Classes","对齐方式","居右","居中","居左","无","Src","Title","Alternative","Link","在新窗口打开链接","图片","file","高级","图片属性","取消","确定","文件管理","加载list错误","加载folders错误","你确定吗?","输入路径","创建路径","type name","拖动图片到此","拖动文件到此","或点击","Alternative text","上传","浏览","背景色","文字","顶部","中间","底部","在之前插入列","在之后插入列","在之前插入行","在之后插入行","删除表格","删除行","删除列","清除内容","字符数: %d","单词数: %d","删除线","下划线","上标","下标","剪切","全选","Break","查找","替换为","替换","粘贴","选择内容并粘贴","源码","粗体","斜体","颜色","链接","撤销","重做","表格","图片","橡皮擦","段落","字号","视频","字体","关于","打印","下划线","上出现","增加缩进","减少缩进","全屏","收缩","分割线","无序列表","顺序列表","剪切","全选","嵌入代码","打开链接","编辑链接","No follow","取消链接","更新","铅笔","预览","URL","编辑","水平对齐","筛选","修改时间排序","名称排序","大小排序","新建文件夹","重置","保存","保存为","调整大小","剪切","宽","高","保持长宽比","是","不","移除","选择","选择: %s","垂直对齐","拆分","合并","添加列","添加行","许可证: %s","删除","垂直拆分","水平拆分","边框","你粘贴的文本是一段html代码,是否保留源格式","html粘贴","保留源格式","把html代码视为普通文本","只保留文本","你只能编辑你自己的图片。Download this image on the host?","图片上传成功","调色板","此目录中沒有文件。","重命名","输入新名称","预览","下载","粘贴从剪贴板","你浏览器不支持直接访问的剪贴板。","复制选中内容","复制","边界半径","显示所有","应用","请填写这个字段","请输入一个网址","默认","圆圈","点","方形","搜索","查找上一个","查找下一个","正在粘贴 Word/Excel 的文本,是否保留源格式?","文本粘贴","匹配目标格式","插入班级名称","按Alt自定义调整大小",null,null,null,"全部"]},44906:function(e){e.exports.default=["輸入一些內容","關於Jodit","Jodit Editor","開發者指南","使用幫助","相關授權條款資訊,請造訪我們的網站:","購買完整版本","Copyright © XDSoft.net - Chupurnov Valeriy. All rights reserved.","錨點","在新分頁開啟","全螢幕編輯","清除樣式","顏色","取消復原","復原","粗體","斜體","項目符號清單","編號清單","置中","文字對齊","靠左","靠右","分割線","圖片","檔案","插入 youtube/vimeo 影片","插入連結","文字大小","字型","格式化區塊","內文","標題1","標題2","標題3","標題4","引文","程式碼","插入","表格","減少縮排","增加縮排","選擇特殊符號","特殊符號","格式複製","檢視原始碼","邊距","上","右","下","左","樣式","Classes","對齊方式","靠右","置中","靠左","無","Src","Title","替代","Link","在新分頁開啟連結","圖片","檔案","進階","圖片屬性","取消","確定","檔案瀏覽","清單載入錯誤","資料夾載入錯誤","您確定嗎?","輸入路徑","創建路徑","type name","拖曳圖片至此","拖曳檔案至此","或點擊","替代文字","上傳","瀏覽","背景色","文字","頂部","中間","底部","插入左方欄","插入右方欄","插入上方列","插入下方列","刪除表格","刪除整列","刪除整欄","清除內容","字元數: %d","單字數: %d","刪除線","底線","上標","下標","剪下","全選","斷行","尋找","取代為","取代","貼上","選擇內容並貼上","原始碼","粗體","斜體","顏色","連結","復原","取消復原","表格","圖片","橡皮擦","段落","文字大小","影片","字型","關於","列印","底線","刪除線","增加縮排","減少縮排","全螢幕","縮減","分隔線","項目符號清單","編號清單","剪下","全選","嵌入程式碼","打開連結","編輯連結","No follow","取消連結","更新","鉛筆","查看","URL","編輯","水平對齊","篩選","修改時間排序","名稱排序","大小排序","新增資料夾","重設","儲存","另存為...","調整大小","裁切","寬","高","維持長寬比","是","否","移除","選擇","選擇: %s","垂直對齊","分割","合併","新增欄","新增列","許可證: %s","刪除","垂直分割","水平分割","邊框","您的程式碼與 HTML 類似,是否貼上 HTML 格式?","貼上 HTML","保留原始格式","以純文字貼上","僅貼上內文","您只能編輯您自己的圖片。是否下載此圖片?","圖片上傳成功","調色盤","沒有檔案","重新命名","輸入新名稱","預覽","下載","從剪貼簿貼上","瀏覽器無法存取剪貼簿。","複製已選取項目","複製","邊框圓角","顯示全部","應用","請輸入此欄位","請輸入網址","預設","圓圈","點","方形","尋找","尋找上一個","尋找下一個","正在貼上 Word/Excel 文件的內容,是否保留原始格式?","貼上 Word 格式","清除格式","插入 class 名稱","按住 Alt 以調整自訂大小",null,null,null,"全部"]},928:function(e){e.exports=' '},31230:function(e){e.exports=' '},54522:function(e){e.exports=' '},17995:function(e){e.exports=' '},86634:function(e){e.exports=' '},91115:function(e){e.exports=' '},1916:function(e){e.exports=' '},52450:function(e){e.exports=' '},41111:function(e){e.exports=' '},49972:function(e){e.exports=' '},45062:function(e){e.exports=' '},18605:function(e){e.exports=' '},83389:function(e){e.exports=' '},93267:function(e){e.exports=' '},71948:function(e){e.exports=' '},51457:function(e){e.exports=' '},23602:function(e){e.exports=' '},86899:function(e){e.exports=' '},95320:function(e){e.exports=' '},45674:function(e){e.exports=' '},3843:function(e){e.exports=' '},48842:function(e){e.exports=' '},25501:function(e){e.exports=' '},29348:function(e){e.exports=''},24772:function(e){e.exports=' '},66547:function(e){e.exports=' '},89097:function(e){e.exports=' '},64831:function(e){e.exports=' '},67176:function(e){e.exports=' '},14017:function(e){e.exports=' '},38681:function(e){e.exports=' '},64637:function(e){e.exports=' '},94190:function(e){e.exports=' '},51957:function(e){e.exports=' '},71940:function(e){e.exports=' '},48007:function(e){e.exports=' '},43218:function(e){e.exports=' '},80515:function(e){e.exports=' '},223:function(e){e.exports=' '},95032:function(e){e.exports=' '},73533:function(e){e.exports=' '},40037:function(e){e.exports=' '},83207:function(e){e.exports=' '},59827:function(e){e.exports=' '},34045:function(e){e.exports=' '},39199:function(e){e.exports=' '},21917:function(e){e.exports=' '},9103:function(e){e.exports=' '},49989:function(e){e.exports=' '},81875:function(e){e.exports=' '},67447:function(e){e.exports=' '},36339:function(e){e.exports=' '},88497:function(e){e.exports=' '},91882:function(e){e.exports=' '},14305:function(e){e.exports=' '},58446:function(e){e.exports=' '},39858:function(e){e.exports=' '},70881:function(e){e.exports=' '},60636:function(e){e.exports=' '},32013:function(e){e.exports=' '},45512:function(e){e.exports=' '},80347:function(e){e.exports=' '},95134:function(e){e.exports=' '},70697:function(e){e.exports=' '},49983:function(e){e.exports=' '},98964:function(e){e.exports=' '},8136:function(e){e.exports=' '},94806:function(e){e.exports=''},31365:function(e){e.exports=' '},44636:function(e){e.exports=''},36327:function(e){e.exports=''},53328:function(e){e.exports=' '},98711:function(e){e.exports=' '},53808:function(e){e.exports=' '},20784:function(e){e.exports=' '},70999:function(e){e.exports=' '},45244:function(e){e.exports=' '},99876:function(e){e.exports=' '},14006:function(e){e.exports=' '},28712:function(e){"use strict";e.exports={assert(){}}},25045:function(e,t,i){"use strict";function n(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}i.d(t,{_:function(){return n}})},31635:function(e,t,i){"use strict";function n(e,t,i,n){var o,r=arguments.length,s=r<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,i,s):o(t,i))||s);return r>3&&s&&Object.defineProperty(t,i,s),s}i.d(t,{__decorate:function(){return n}}),"function"==typeof SuppressedError&&SuppressedError}},r={};function s(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={exports:{}};return o[e](i,i.exports,s),i.exports}s.m=o,e=[],s.O=function(t,i,n,o){if(i){o=o||0;for(var r=e.length;r>0&&e[r-1][2]>o;r--)e[r]=e[r-1];e[r]=[i,n,o];return}for(var a=1/0,r=0;r=o)&&Object.keys(s.O).every(function(e){return s.O[e](i[c])})?i.splice(c--,1):(l=!1,otypeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t={521:0},s.O.j=function(e){return 0===t[e]},i=function(e,i){var n,o,r=i[0],a=i[1],l=i[2],c=0;if(r.some(function(e){return 0!==t[e]})){for(n in a)s.o(a,n)&&(s.m[n]=a[n]);if(l)var u=l(s)}for(e&&e(i);c{e.Jodit[t]=i[t]});let c=e=>"__esModule"!==e;Object.keys(r).filter(c).forEach(e=>{o.Icon.set(e.replace("_","-"),r[e])}),Object.keys(o).filter(c).forEach(i=>{let n=o[i],r=(0,t.isFunction)(n.prototype?.className)?n.prototype.className():i;(0,t.isString)(r)&&(e.Jodit.modules[r]=n)}),Object.keys(n).filter(c).forEach(t=>{e.Jodit.decorators[t]=n[t]}),["Confirm","Alert","Prompt"].forEach(t=>{e.Jodit[t]=o[t]}),Object.keys(l.default).filter(c).forEach(t=>{e.Jodit.lang[t]=l.default[t]});class u{}}(),a=s.O(a)}()}); \ No newline at end of file