From e1c2573778305c990df2a587e52890dda738f918 Mon Sep 17 00:00:00 2001 From: zadam Date: Sun, 21 Jun 2020 12:47:24 +0200 Subject: [PATCH 01/12] add tooltip to fancytree node icon, #1120 --- src/public/app/widgets/note_tree.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/public/app/widgets/note_tree.js b/src/public/app/widgets/note_tree.js index 15e1b0946..892399058 100644 --- a/src/public/app/widgets/note_tree.js +++ b/src/public/app/widgets/note_tree.js @@ -553,6 +553,8 @@ export default class NoteTreeWidget extends TabAwareWidget { key: utils.randomString(12) // this should prevent some "duplicate key" errors }; + node.iconTooltip = node.title; + if (node.folder && node.expanded) { node.children = await this.prepareChildren(note); } @@ -839,6 +841,7 @@ export default class NoteTreeWidget extends TabAwareWidget { node.icon = this.getIcon(note, isFolder); node.extraClasses = this.getExtraClasses(note); node.title = (branch.prefix ? (branch.prefix + " - ") : "") + note.title; + node.iconTooltip = node.title; if (node.isExpanded() !== branch.isExpanded) { node.setExpanded(branch.isExpanded, {noEvents: true}); From d03d3603d220de657b6a713ac54af49268a89eac Mon Sep 17 00:00:00 2001 From: Shon Ramamurthy Date: Mon, 22 Jun 2020 19:58:58 +0000 Subject: [PATCH 02/12] Add optional support for note title tooltips under note tree widget (#1120) * Add support for note title tooltips under note tree widget This change adds an option to set the 'tooltip' configuration of the Fancytree component. This allows tooltips containing the note title to be displayed when a hover is performed over a note title in the tree widget. * Revert DB Upgrade The db upgrade is reverted as this is not required for options. * Simplify boolean option comparison With this change, the existing 'is(key)' method is used to perform tooltip enable option boolean comparison. * Display tooltip only on center-pane overlap - Experimental With this change, a straight-forward method to detect HTML element overlap has been identified (source: https://gist.github.com/jtsternberg/c272d7de5b967cec2d3d). It is now possible to detect whether the center-pane element overlaps with the Fancytree node title-bar. Using this approach we now have a rough implementation which only displays a note-title tooltip when there is a center-pane overlap. At this stage, this change is experimental and the following needs to be further addressed, - Register the 'mouseenter' event handler in an appropriate place. The current placement of this event handler is only for testing. - This change is now enabled by default. It needs to be seen whether it would still make sense to disable it via an option. * Remove option to set tooltip With this change, the tooltip options menu item has been removed as it becomes relevant to have this feature enabled by default. * Revert further changes related to the options menu Further changes are rolled back which was earlier related to the tooltip options setting. Some of these were missed in the previous commit. * Remove debug logging Remove debug logging and unnecessary line breaks. * Move note-title tooltip handler under note_tree.js With this change, we move the definition for the note-title tooltip handler inside 'note_tree.js'. Registration is done inside 'side_pane_toggles.js' as we would need the handler to detect the 'center-pane' element first before detecting collisions. --- src/public/app/widgets/note_tree.js | 42 +++++++++++++++++++++ src/public/app/widgets/side_pane_toggles.js | 3 ++ 2 files changed, 45 insertions(+) diff --git a/src/public/app/widgets/note_tree.js b/src/public/app/widgets/note_tree.js index 892399058..d1eac2761 100644 --- a/src/public/app/widgets/note_tree.js +++ b/src/public/app/widgets/note_tree.js @@ -1319,3 +1319,45 @@ export default class NoteTreeWidget extends TabAwareWidget { noteCreateService.duplicateNote(node.data.noteId, branch.parentNoteId); } } + +export function setupNoteTitleTooltip() { + // Source - https://gist.github.com/jtsternberg/c272d7de5b967cec2d3d + var is_colliding = function( $div1, $div2 ) { + // Div 1 data + var d1_offset = $div1.offset(); + var d1_height = $div1.outerHeight( true ); + var d1_width = $div1.outerWidth( true ); + var d1_distance_from_top = d1_offset.top + d1_height; + var d1_distance_from_left = d1_offset.left + d1_width; + + // Div 2 data + var d2_offset = $div2.offset(); + var d2_height = $div2.outerHeight( true ); + var d2_width = $div2.outerWidth( true ); + var d2_distance_from_top = d2_offset.top + d2_height; + var d2_distance_from_left = d2_offset.left + d2_width; + + var not_colliding = ( d1_distance_from_top < d2_offset.top + || d1_offset.top > d2_distance_from_top + || d1_distance_from_left < d2_offset.left + || d1_offset.left > d2_distance_from_left ); + + // Return whether it IS colliding + return ! not_colliding; + }; + + // Detects if there is a collision between the note-title and the + // center-pane element + let centerPane = document.getElementById("center-pane"); + $(document).on("mouseenter", "span", + function(e) { + if (e.currentTarget.className === 'fancytree-title') { + if(is_colliding($(centerPane), $(e.currentTarget))) { + e.currentTarget.title = e.currentTarget.innerText; + } else { + e.currentTarget.title = ""; + } + } + } + ); +} diff --git a/src/public/app/widgets/side_pane_toggles.js b/src/public/app/widgets/side_pane_toggles.js index df443ae13..a2819d510 100644 --- a/src/public/app/widgets/side_pane_toggles.js +++ b/src/public/app/widgets/side_pane_toggles.js @@ -1,6 +1,7 @@ import options from "../services/options.js"; import splitService from "../services/split.js"; import BasicWidget from "./basic_widget.js"; +import { setupNoteTitleTooltip } from './note_tree.js' const TPL = `
@@ -70,5 +71,7 @@ export default class SidePaneToggles extends BasicWidget { this.toggleSidebar('right', options.is('rightPaneVisible')); splitService.setupSplit(this.paneVisible.left, this.paneVisible.right); + + setupNoteTitleTooltip(); } } From 959c4cbe6452fc42bdabe1d6ee8462ea69a6a3de Mon Sep 17 00:00:00 2001 From: zadam Date: Mon, 22 Jun 2020 22:00:08 +0200 Subject: [PATCH 03/12] removed icon tooltip again --- src/public/app/widgets/note_tree.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/public/app/widgets/note_tree.js b/src/public/app/widgets/note_tree.js index 892399058..15e1b0946 100644 --- a/src/public/app/widgets/note_tree.js +++ b/src/public/app/widgets/note_tree.js @@ -553,8 +553,6 @@ export default class NoteTreeWidget extends TabAwareWidget { key: utils.randomString(12) // this should prevent some "duplicate key" errors }; - node.iconTooltip = node.title; - if (node.folder && node.expanded) { node.children = await this.prepareChildren(note); } @@ -841,7 +839,6 @@ export default class NoteTreeWidget extends TabAwareWidget { node.icon = this.getIcon(note, isFolder); node.extraClasses = this.getExtraClasses(note); node.title = (branch.prefix ? (branch.prefix + " - ") : "") + note.title; - node.iconTooltip = node.title; if (node.isExpanded() !== branch.isExpanded) { node.setExpanded(branch.isExpanded, {noEvents: true}); From a89b6711d15b9e674e2dd90046b137377ac72ce3 Mon Sep 17 00:00:00 2001 From: zadam Date: Mon, 22 Jun 2020 22:28:45 +0200 Subject: [PATCH 04/12] refactored code to not depend on external elements, #1120 --- src/public/app/widgets/note_tree.js | 74 +++++++++------------ src/public/app/widgets/side_pane_toggles.js | 3 - 2 files changed, 31 insertions(+), 46 deletions(-) diff --git a/src/public/app/widgets/note_tree.js b/src/public/app/widgets/note_tree.js index 77d1b330b..df07f6b12 100644 --- a/src/public/app/widgets/note_tree.js +++ b/src/public/app/widgets/note_tree.js @@ -249,9 +249,39 @@ export default class NoteTreeWidget extends TabAwareWidget { this.initialized = this.initFancyTree(); + this.setupNoteTitleTooltip(); + return this.$widget; } + setupNoteTitleTooltip() { + // the following will dynamically set tree item's tooltip if the whole item's text is not currently visible + // if the whole text is visible then no tooltip is show since that's unnecessarily distracting + // see https://github.com/zadam/trilium/pull/1120 for discussion + + // code inspired by https://gist.github.com/jtsternberg/c272d7de5b967cec2d3d + const isEnclosing = ($container, $sub) => { + const conOffset = $container.offset(); + const conDistanceFromTop = conOffset.top + $container.outerHeight(true); + const conDistanceFromLeft = conOffset.left + $container.outerWidth(true); + + const subOffset = $sub.offset(); + const subDistanceFromTop = subOffset.top + $sub.outerHeight(true); + const subDistanceFromLeft = subOffset.left + $sub.outerWidth(true); + + return conDistanceFromTop > subDistanceFromTop + && conOffset.top < subOffset.top + && conDistanceFromLeft > subDistanceFromLeft + && conOffset.left < subOffset.left; + }; + + this.$tree.on("mouseenter", "span.fancytree-title", e => { + e.currentTarget.title = isEnclosing(this.$tree, $(e.currentTarget)) + ? "" + : e.currentTarget.innerText; + }); + } + get hideArchivedNotes() { return options.is("hideArchivedNotes_" + this.treeName); } @@ -747,7 +777,7 @@ export default class NoteTreeWidget extends TabAwareWidget { utils.assertArguments(notePath); const hoistedNoteId = hoistedNoteService.getHoistedNoteId(); - /** @var {FancytreeNode} */ + /** @const {FancytreeNode} */ let parentNode = null; const runPath = await treeService.getRunPath(notePath, logErrors); @@ -1316,45 +1346,3 @@ export default class NoteTreeWidget extends TabAwareWidget { noteCreateService.duplicateNote(node.data.noteId, branch.parentNoteId); } } - -export function setupNoteTitleTooltip() { - // Source - https://gist.github.com/jtsternberg/c272d7de5b967cec2d3d - var is_colliding = function( $div1, $div2 ) { - // Div 1 data - var d1_offset = $div1.offset(); - var d1_height = $div1.outerHeight( true ); - var d1_width = $div1.outerWidth( true ); - var d1_distance_from_top = d1_offset.top + d1_height; - var d1_distance_from_left = d1_offset.left + d1_width; - - // Div 2 data - var d2_offset = $div2.offset(); - var d2_height = $div2.outerHeight( true ); - var d2_width = $div2.outerWidth( true ); - var d2_distance_from_top = d2_offset.top + d2_height; - var d2_distance_from_left = d2_offset.left + d2_width; - - var not_colliding = ( d1_distance_from_top < d2_offset.top - || d1_offset.top > d2_distance_from_top - || d1_distance_from_left < d2_offset.left - || d1_offset.left > d2_distance_from_left ); - - // Return whether it IS colliding - return ! not_colliding; - }; - - // Detects if there is a collision between the note-title and the - // center-pane element - let centerPane = document.getElementById("center-pane"); - $(document).on("mouseenter", "span", - function(e) { - if (e.currentTarget.className === 'fancytree-title') { - if(is_colliding($(centerPane), $(e.currentTarget))) { - e.currentTarget.title = e.currentTarget.innerText; - } else { - e.currentTarget.title = ""; - } - } - } - ); -} diff --git a/src/public/app/widgets/side_pane_toggles.js b/src/public/app/widgets/side_pane_toggles.js index a2819d510..df443ae13 100644 --- a/src/public/app/widgets/side_pane_toggles.js +++ b/src/public/app/widgets/side_pane_toggles.js @@ -1,7 +1,6 @@ import options from "../services/options.js"; import splitService from "../services/split.js"; import BasicWidget from "./basic_widget.js"; -import { setupNoteTitleTooltip } from './note_tree.js' const TPL = `
@@ -71,7 +70,5 @@ export default class SidePaneToggles extends BasicWidget { this.toggleSidebar('right', options.is('rightPaneVisible')); splitService.setupSplit(this.paneVisible.left, this.paneVisible.right); - - setupNoteTitleTooltip(); } } From 74a78020883d97dd3b55b6dc832e6dd67013dce0 Mon Sep 17 00:00:00 2001 From: zadam Date: Mon, 22 Jun 2020 23:13:53 +0200 Subject: [PATCH 05/12] fix custom resource handler, closes #1125 --- src/routes/custom.js | 115 +++++++++++++++++++++++-------------------- 1 file changed, 62 insertions(+), 53 deletions(-) diff --git a/src/routes/custom.js b/src/routes/custom.js index 7527b94b2..c8535c604 100644 --- a/src/routes/custom.js +++ b/src/routes/custom.js @@ -2,67 +2,76 @@ const repository = require('../services/repository'); const log = require('../services/log'); const fileUploadService = require('./api/files.js'); const scriptService = require('../services/script'); +const cls = require('../services/cls'); + +async function handleRequest(req, res) { + // express puts content after first slash into 0 index element + + const path = req.params.path + req.params[0]; + + const attrs = await repository.getEntities("SELECT * FROM attributes WHERE isDeleted = 0 AND type = 'label' AND name IN ('customRequestHandler', 'customResourceProvider')"); + + for (const attr of attrs) { + const regex = new RegExp(attr.value); + let match; + + try { + match = path.match(regex); + } + catch (e) { + log.error(`Testing path for label ${attr.attributeId}, regex=${attr.value} failed with error ` + e.stack); + continue; + } + + if (!match) { + continue; + } + + if (attr.name === 'customRequestHandler') { + const note = await attr.getNote(); + + log.info(`Handling custom request "${path}" with note ${note.noteId}`); + + try { + await scriptService.executeNote(note, { + pathParams: match.slice(1), + req, + res + }); + } + catch (e) { + log.error(`Custom handler ${note.noteId} failed with ${e.message}`); + + res.status(500).send(e.message); + } + } + else if (attr.name === 'customResourceProvider') { + await fileUploadService.downloadNoteFile(attr.noteId, res); + } + else { + throw new Error("Unrecognized attribute name " + attr.name); + } + + return; // only first handler is executed + } + + const message = `No handler matched for custom ${path} request.`; + + log.info(message); + res.status(404).send(message); +} function register(router) { // explicitly no CSRF middleware since it's meant to allow integration from external services router.all('/custom/:path*', async (req, res, next) => { - // express puts content after first slash into 0 index element - const path = req.params.path + req.params[0]; + cls.namespace.bindEmitter(req); + cls.namespace.bindEmitter(res); - const attrs = await repository.getEntities("SELECT * FROM attributes WHERE isDeleted = 0 AND type = 'label' AND name IN ('customRequestHandler', 'customResourceProvider')"); - - for (const attr of attrs) { - const regex = new RegExp(attr.value); - let match; - - try { - match = path.match(regex); - } - catch (e) { - log.error(`Testing path for label ${attr.attributeId}, regex=${attr.value} failed with error ` + e.stack); - continue; - } - - if (!match) { - continue; - } - - if (attr.name === 'customRequestHandler') { - const note = await attr.getNote(); - - log.info(`Handling custom request "${path}" with note ${note.noteId}`); - - try { - await scriptService.executeNote(note, { - pathParams: match.slice(1), - req, - res - }); - } - catch (e) { - log.error(`Custom handler ${note.noteId} failed with ${e.message}`); - - res.status(500).send(e.message); - } - } - else if (attr.name === 'customResourceProvider') { - await fileUploadService.downloadNoteFile(attr.noteId, res); - } - else { - throw new Error("Unrecognized attribute name " + attr.name); - } - - return; // only first handler is executed - } - - const message = `No handler matched for custom ${path} request.`; - - log.info(message); - res.status(404).send(message); + cls.init(() => handleRequest(req, res)); }); } module.exports = { register -}; \ No newline at end of file +}; From 89aa4fbc73fc6c357e04e037d6a1191fa4058d80 Mon Sep 17 00:00:00 2001 From: zadam Date: Tue, 23 Jun 2020 10:10:59 +0200 Subject: [PATCH 06/12] electron 9.0.5 --- package-lock.json | 8 ++++---- package.json | 2 +- src/services/export/zip.js | 3 +-- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 16d75f6d1..481284c32 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "trilium", - "version": "0.42.7", + "version": "0.43.0-beta", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -3345,9 +3345,9 @@ } }, "electron": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/electron/-/electron-9.0.4.tgz", - "integrity": "sha512-QzkeZNAiNB7KxcdoQKSoaiVT/GQdB4Vt0/ZZOuU8tIKABAsni2I7ztiAbUzxcsnQsqEBSfChuPuDQ5A4VbbzPg==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/electron/-/electron-9.0.5.tgz", + "integrity": "sha512-bnL9H48LuQ250DML8xUscsKiuSu+xv5umXbpBXYJ0BfvYVmFfNbG3jCfhrsH7aP6UcQKVxOG1R/oQExd0EFneQ==", "dev": true, "requires": { "@electron/get": "^1.0.1", diff --git a/package.json b/package.json index 38c4e225f..67c34424f 100644 --- a/package.json +++ b/package.json @@ -78,7 +78,7 @@ "yazl": "^2.5.1" }, "devDependencies": { - "electron": "9.0.4", + "electron": "9.0.5", "electron-builder": "22.6.0", "electron-packager": "14.2.1", "electron-rebuild": "1.10.1", diff --git a/src/services/export/zip.js b/src/services/export/zip.js index 63883b18c..7eb72ad43 100644 --- a/src/services/export/zip.js +++ b/src/services/export/zip.js @@ -3,7 +3,6 @@ const html = require('html'); const repository = require('../repository'); const dateUtils = require('../date_utils'); -const zip = require('tar-stream'); const path = require('path'); const mimeTypes = require('mime-types'); const mdService = require('./md'); @@ -444,4 +443,4 @@ ${content} module.exports = { exportToZip -}; \ No newline at end of file +}; From a0395e986695e6598a3fd9a9148f4f111f6dbd90 Mon Sep 17 00:00:00 2001 From: zadam Date: Tue, 23 Jun 2020 10:11:17 +0200 Subject: [PATCH 07/12] release 0.43.1 --- package.json | 2 +- src/services/build.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 67c34424f..5a88411ae 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "trilium", "productName": "Trilium Notes", "description": "Trilium Notes", - "version": "0.43.0-beta", + "version": "0.43.1", "license": "AGPL-3.0-only", "main": "electron.js", "bin": { diff --git a/src/services/build.js b/src/services/build.js index 1e7e53c8d..220fdddbf 100644 --- a/src/services/build.js +++ b/src/services/build.js @@ -1 +1 @@ -module.exports = { buildDate:"2020-06-15T23:26:12+02:00", buildRevision: "9791dab97d9e86c4b02ca593198caffd1b72bbfb" }; +module.exports = { buildDate:"2020-06-23T10:11:17+02:00", buildRevision: "89aa4fbc73fc6c357e04e037d6a1191fa4058d80" }; From c78ca4c9db1b46eeb227278286ade6e94ba3e1ce Mon Sep 17 00:00:00 2001 From: zadam Date: Tue, 23 Jun 2020 22:03:01 +0200 Subject: [PATCH 08/12] fixed triggers to sort children of notes with "sorted" label, closes #1126 --- src/routes/api/notes.js | 8 +++++++- src/services/handlers.js | 5 ++++- src/services/notes.js | 3 ++- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/routes/api/notes.js b/src/routes/api/notes.js index 682d25f91..12f58540b 100644 --- a/src/routes/api/notes.js +++ b/src/routes/api/notes.js @@ -164,10 +164,16 @@ async function changeTitle(req) { return [400, `Note ${noteId} is not available for change`]; } + const noteTitleChanged = note.title !== title; + note.title = title; await note.save(); + if (noteTitleChanged) { + await noteService.triggerNoteTitleChanged(note); + } + return note; } @@ -189,4 +195,4 @@ module.exports = { getRelationMap, changeTitle, duplicateNote -}; \ No newline at end of file +}; diff --git a/src/services/handlers.js b/src/services/handlers.js index 12ac55afb..e68f3be44 100644 --- a/src/services/handlers.js +++ b/src/services/handlers.js @@ -68,6 +68,9 @@ eventService.subscribe(eventService.ENTITY_CREATED, async ({ entityName, entity await note.setContent(await targetNote.getContent()); } + else if (entity.type === 'label' && entity.name === 'sorted') { + await treeService.sortNotesAlphabetically(entity.noteId); + } } else if (entityName === 'notes') { await runAttachedRelations(entity, 'runOnNoteCreation', entity); @@ -135,4 +138,4 @@ eventService.subscribe(eventService.ENTITY_DELETED, async ({ entityName, entity targetNote.invalidateAttributeCache(); } }); -}); \ No newline at end of file +}); diff --git a/src/services/notes.js b/src/services/notes.js index f18dcfa9a..be11fd196 100644 --- a/src/services/notes.js +++ b/src/services/notes.js @@ -778,5 +778,6 @@ module.exports = { protectNoteRecursively, scanForLinks, duplicateNote, - getUndeletedParentBranches + getUndeletedParentBranches, + triggerNoteTitleChanged }; From 2b757bfccd00c68bd96bee1e9cb88542cbb79387 Mon Sep 17 00:00:00 2001 From: zadam Date: Wed, 24 Jun 2020 16:17:39 +0200 Subject: [PATCH 09/12] upgrade ckeditor to 20.0.0 --- libraries/ckeditor/ckeditor-content.css | 221 +++++++++++++----------- libraries/ckeditor/ckeditor.js | 2 +- libraries/ckeditor/ckeditor.js.map | 2 +- libraries/ckeditor/inspector.js | 2 +- 4 files changed, 124 insertions(+), 103 deletions(-) diff --git a/libraries/ckeditor/ckeditor-content.css b/libraries/ckeditor/ckeditor-content.css index f77439c18..9b3dd1e87 100644 --- a/libraries/ckeditor/ckeditor-content.css +++ b/libraries/ckeditor/ckeditor-content.css @@ -1,19 +1,16 @@ /* - * !!!!!!! This stylesheet is heavily modified compared to the original for similarity with in-editor look !!!!!!! - * This is used for printing and tar HTML export - - * CKEditor 5 (v17.0.0) content styles. - * Generated on Fri, 13 Mar 2020 13:27:10 GMT. + * CKEditor 5 (v19.1.1) content styles. + * Generated on Tue, 09 Jun 2020 10:37:49 GMT. * For more information, check out https://ckeditor.com/docs/ckeditor5/latest/builds/guides/integration/content-styles.html */ :root { - --ck-highlight-marker-blue: #72cdfd; - --ck-highlight-marker-green: #63f963; - --ck-highlight-marker-pink: #fc7999; - --ck-highlight-marker-yellow: #fdfd77; - --ck-highlight-pen-green: #118800; - --ck-highlight-pen-red: #e91313; + --ck-highlight-marker-blue: hsl(201, 97%, 72%); + --ck-highlight-marker-green: hsl(120, 93%, 68%); + --ck-highlight-marker-pink: hsl(345, 96%, 73%); + --ck-highlight-marker-yellow: hsl(60, 97%, 73%); + --ck-highlight-pen-green: hsl(112, 100%, 27%); + --ck-highlight-pen-red: hsl(0, 85%, 49%); --ck-image-style-spacing: 1.5em; --ck-todo-list-checkmark-size: 16px; } @@ -32,26 +29,23 @@ .ck-content .image.image_resized > figcaption { display: block; } +/* ckeditor5-image/theme/imagecaption.css */ +.ck-content .image > figcaption { + display: table-caption; + caption-side: bottom; + word-break: break-word; + color: hsl(0, 0%, 20%); + background-color: hsl(0, 0%, 97%); + padding: .6em; + font-size: .75em; + outline-offset: -1px; +} /* ckeditor5-basic-styles/theme/code.css */ .ck-content code { background-color: hsla(0, 0%, 78%, 0.3); padding: .15em; border-radius: 2px; } -/* ckeditor5-image/theme/image.css */ -.ck-content .image { - display: table; - clear: both; - text-align: center; - margin: 1em auto; -} -/* ckeditor5-image/theme/image.css */ -.ck-content .image > img { - display: block; - margin: 0 auto; - max-width: 100%; - min-width: 50px; -} /* ckeditor5-image/theme/imagestyle.css */ .ck-content .image-style-side, .ck-content .image-style-align-left, @@ -79,42 +73,6 @@ float: right; margin-left: var(--ck-image-style-spacing); } -/* ckeditor5-page-break/theme/pagebreak.css */ -.ck-content .page-break { - position: relative; - clear: both; - padding: 5px 0; - display: flex; - align-items: center; - justify-content: center; -} -/* ckeditor5-page-break/theme/pagebreak.css */ -.ck-content .page-break::after { - content: ''; - position: absolute; - border-bottom: 2px dashed hsl(0, 0%, 77%); - width: 100%; -} -/* ckeditor5-page-break/theme/pagebreak.css */ -.ck-content .page-break__label { - position: relative; - z-index: 1; - padding: .3em .6em; - display: block; - text-transform: uppercase; - border: 1px solid hsl(0, 0%, 77%); - border-radius: 2px; - font-family: Helvetica, Arial, Tahoma, Verdana, Sans-Serif; - font-size: 0.75em; - font-weight: bold; - color: hsl(0, 0%, 20%); - background: #fff; - box-shadow: 2px 2px 1px hsla(0, 0%, 0%, 0.15); - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} /* ckeditor5-block-quote/theme/blockquote.css */ .ck-content blockquote { overflow: hidden; @@ -130,12 +88,46 @@ border-left: 0; border-right: solid 5px hsl(0, 0%, 80%); } -/* ckeditor5-media-embed/theme/mediaembed.css */ -.ck-content .media { +/* ckeditor5-code-block/theme/codeblock.css */ +.ck-content pre { + padding: 1em; + color: hsl(0, 0%, 20.8%); + background: hsla(0, 0%, 78%, 0.3); + border: 1px solid hsl(0, 0%, 77%); + border-radius: 2px; + text-align: left; + direction: ltr; + tab-size: 4; + white-space: pre-wrap; + font-style: normal; + min-width: 200px; +} +/* ckeditor5-code-block/theme/codeblock.css */ +.ck-content pre code { + background: unset; + padding: 0; + border-radius: 0; +} +/* ckeditor5-horizontal-line/theme/horizontalline.css */ +.ck-content hr { + border-width: 1px 0 0; + border-style: solid; + border-color: hsl(0, 0%, 37%); + margin: 0; +} +/* ckeditor5-image/theme/image.css */ +.ck-content .image { + display: table; clear: both; - margin: 1em 0; + text-align: center; + margin: 1em auto; +} +/* ckeditor5-image/theme/image.css */ +.ck-content .image > img { display: block; - min-width: 15em; + margin: 0 auto; + max-width: 100%; + min-width: 50px; } /* ckeditor5-table/theme/table.css */ .ck-content .table { @@ -155,13 +147,28 @@ .ck-content .table table th { min-width: 2em; padding: .4em; - border-color: hsl(0, 0%, 75%); + border: 1px solid hsl(0, 0%, 75%); } /* ckeditor5-table/theme/table.css */ .ck-content .table table th { font-weight: bold; background: hsla(0, 0%, 0%, 5%); } +/* ckeditor5-table/theme/table.css */ +.ck-content[dir="rtl"] .table th { + text-align: right; +} +/* ckeditor5-table/theme/table.css */ +.ck-content[dir="ltr"] .table th { + text-align: left; +} +/* ckeditor5-media-embed/theme/mediaembed.css */ +.ck-content .media { + clear: both; + margin: 1em 0; + display: block; + min-width: 15em; +} /* ckeditor5-list/theme/todolist.css */ .ck-content .todo-list { list-style: none; @@ -229,17 +236,6 @@ .ck-content .todo-list .todo-list__label .todo-list__label__description { vertical-align: middle; } -/* ckeditor5-image/theme/imagecaption.css */ -.ck-content .image > figcaption { - display: table-caption; - caption-side: bottom; - word-break: break-word; - color: hsl(0, 0%, 20%); - background-color: hsl(0, 0%, 97%); - padding: .6em; - font-size: .75em; - outline-offset: -1px; -} /* ckeditor5-highlight/theme/highlight.css */ .ck-content .marker-yellow { background-color: var(--ck-highlight-marker-yellow); @@ -266,32 +262,57 @@ color: var(--ck-highlight-pen-green); background-color: transparent; } -/* ckeditor5-horizontal-line/theme/horizontalline.css */ -.ck-content hr { - border-width: 1px 0 0; - border-style: solid; - border-color: hsl(0, 0%, 37%); - margin: 0; +/* ckeditor5-page-break/theme/pagebreak.css */ +.ck-content .page-break { + position: relative; + clear: both; + padding: 5px 0; + display: flex; + align-items: center; + justify-content: center; } -/* ckeditor5-code-block/theme/codeblock.css */ -.ck-content pre { - padding: 1em; - color: #353535; - background: hsla(0, 0%, 78%, 0.3); +/* ckeditor5-page-break/theme/pagebreak.css */ +.ck-content .page-break::after { + content: ''; + position: absolute; + border-bottom: 2px dashed hsl(0, 0%, 77%); + width: 100%; +} +/* ckeditor5-page-break/theme/pagebreak.css */ +.ck-content .page-break__label { + position: relative; + z-index: 1; + padding: .3em .6em; + display: block; + text-transform: uppercase; border: 1px solid hsl(0, 0%, 77%); border-radius: 2px; - text-align: left; - direction: ltr; - tab-size: 4; - white-space: pre-wrap; - font-style: normal; - min-width: 200px; + font-family: Helvetica, Arial, Tahoma, Verdana, Sans-Serif; + font-size: 0.75em; + font-weight: bold; + color: hsl(0, 0%, 20%); + background: hsl(0, 0%, 100%); + box-shadow: 2px 2px 1px hsla(0, 0%, 0%, 0.15); + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } -/* ckeditor5-code-block/theme/codeblock.css */ -.ck-content pre code { - background: unset; - padding: 0; - border-radius: 0; +/* ckeditor5-font/theme/fontsize.css */ +.ck-content .text-tiny { + font-size: .7em; +} +/* ckeditor5-font/theme/fontsize.css */ +.ck-content .text-small { + font-size: .85em; +} +/* ckeditor5-font/theme/fontsize.css */ +.ck-content .text-big { + font-size: 1.4em; +} +/* ckeditor5-font/theme/fontsize.css */ +.ck-content .text-huge { + font-size: 1.8em; } @media print { /* ckeditor5-page-break/theme/pagebreak.css */ @@ -302,4 +323,4 @@ .ck-content .page-break::after { display: none; } -} \ No newline at end of file +} diff --git a/libraries/ckeditor/ckeditor.js b/libraries/ckeditor/ckeditor.js index 56af9c144..98555251d 100644 --- a/libraries/ckeditor/ckeditor.js +++ b/libraries/ckeditor/ckeditor.js @@ -2,5 +2,5 @@ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md. */ -!function(t){const e=t.en=t.en||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 of %1","Align cell text to the bottom":"Align cell text to the bottom","Align cell text to the center":"Align cell text to the center","Align cell text to the left":"Align cell text to the left","Align cell text to the middle":"Align cell text to the middle","Align cell text to the right":"Align cell text to the right","Align cell text to the top":"Align cell text to the top","Align table to the left":"Align table to the left","Align table to the right":"Align table to the right",Alignment:"Alignment",Aquamarine:"Aquamarine",Background:"Background",Big:"Big",Black:"Black","Block quote":"Block quote",Blue:"Blue",Bold:"Bold",Border:"Border","Bulleted List":"Bulleted List",Cancel:"Cancel","Cannot upload file:":"Cannot upload file:","Cell properties":"Cell properties","Center table":"Center table","Centered image":"Centered image","Change image text alternative":"Change image text alternative","Choose heading":"Choose heading",Code:"Code",Color:"Color","Color picker":"Color picker",Column:"Column",Dashed:"Dashed","Decrease indent":"Decrease indent",Default:"Default","Delete column":"Delete column","Delete row":"Delete row","Dim grey":"Dim grey",Dimensions:"Dimensions","Document colors":"Document colors",Dotted:"Dotted",Double:"Double",Downloadable:"Downloadable","Dropdown toolbar":"Dropdown toolbar","Edit block":"Edit block","Edit link":"Edit link","Editor toolbar":"Editor toolbar","Enter image caption":"Enter image caption","Font Background Color":"Font Background Color","Font Color":"Font Color","Font Family":"Font Family","Font Size":"Font Size","Full size image":"Full size image",Green:"Green",Grey:"Grey",Groove:"Groove","Header column":"Header column","Header row":"Header row",Heading:"Heading","Heading 1":"Heading 1","Heading 2":"Heading 2","Heading 3":"Heading 3","Heading 4":"Heading 4","Heading 5":"Heading 5","Heading 6":"Heading 6",Height:"Height","Horizontal text alignment toolbar":"Horizontal text alignment toolbar",Huge:"Huge","Image toolbar":"Image toolbar","image widget":"image widget","Increase indent":"Increase indent","Insert code block":"Insert code block","Insert column left":"Insert column left","Insert column right":"Insert column right","Insert image":"Insert image","Insert paragraph after block":"Insert paragraph after block","Insert paragraph before block":"Insert paragraph before block","Insert row above":"Insert row above","Insert row below":"Insert row below","Insert table":"Insert table",Inset:"Inset",Italic:"Italic","Justify cell text":"Justify cell text","Left aligned image":"Left aligned image","Light blue":"Light blue","Light green":"Light green","Light grey":"Light grey",Link:"Link","Link URL":"Link URL","Merge cell down":"Merge cell down","Merge cell left":"Merge cell left","Merge cell right":"Merge cell right","Merge cell up":"Merge cell up","Merge cells":"Merge cells",Next:"Next",None:"None","Numbered List":"Numbered List","Open in a new tab":"Open in a new tab","Open link in new tab":"Open link in new tab",Orange:"Orange",Outset:"Outset",Padding:"Padding",Paragraph:"Paragraph","Plain text":"Plain text",Previous:"Previous",Purple:"Purple",Red:"Red",Redo:"Redo","Remove color":"Remove color","Rich Text Editor, %0":"Rich Text Editor, %0",Ridge:"Ridge","Right aligned image":"Right aligned image",Row:"Row",Save:"Save","Select all":"Select all","Select column":"Select column","Select row":"Select row","Show more items":"Show more items","Side image":"Side image",Small:"Small",Solid:"Solid","Split cell horizontally":"Split cell horizontally","Split cell vertically":"Split cell vertically",Strikethrough:"Strikethrough",Style:"Style",Subscript:"Subscript",Superscript:"Superscript","Table alignment toolbar":"Table alignment toolbar","Table cell text alignment":"Table cell text alignment","Table properties":"Table properties","Table toolbar":"Table toolbar","Text alternative":"Text alternative",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".','The value is invalid. Try "10px" or "2em" or simply "2".':'The value is invalid. Try "10px" or "2em" or simply "2".',"This link has no URL":"This link has no URL",Tiny:"Tiny","To-do List":"To-do List",Turquoise:"Turquoise",Underline:"Underline",Undo:"Undo",Unlink:"Unlink","Upload failed":"Upload failed","Upload in progress":"Upload in progress","Vertical text alignment toolbar":"Vertical text alignment toolbar",White:"White","Widget toolbar":"Widget toolbar",Width:"Width",Yellow:"Yellow"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})),function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.BalloonEditor=e():t.BalloonEditor=e()}(window,(function(){return function(t){var e={};function o(i){if(e[i])return e[i].exports;var n=e[i]={i:i,l:!1,exports:{}};return t[i].call(n.exports,n,n.exports,o),n.l=!0,n.exports}return o.m=t,o.c=e,o.d=function(t,e,i){o.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},o.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(o.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)o.d(i,n,function(e){return t[e]}.bind(null,n));return i},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,"a",e),e},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o.p="",o(o.s=122)}([function(t,e,o){"use strict";o.d(e,"b",(function(){return i})),o.d(e,"a",(function(){return n}));class i extends Error{constructor(t,e,o){t=n(t),o&&(t+=" "+JSON.stringify(o)),super(t),this.name="CKEditorError",this.context=e,this.data=o}is(t){return"CKEditorError"===t}static rethrowUnexpectedError(t,e){if(t.is&&t.is("CKEditorError"))throw t;const o=new i(t.message,e);throw o.stack=t.stack,o}}function n(t){const e=t.match(/^([^:]+):/);return e?t+` Read more: https://ckeditor.com/docs/ckeditor5/latest/framework/guides/support/error-codes.html#error-${e[1]}\n`:t}},function(t,e,o){"use strict";var i,n=function(){return void 0===i&&(i=Boolean(window&&document&&document.all&&!window.atob)),i},r=function(){var t={};return function(e){if(void 0===t[e]){var o=document.querySelector(e);if(window.HTMLIFrameElement&&o instanceof window.HTMLIFrameElement)try{o=o.contentDocument.head}catch(t){o=null}t[e]=o}return t[e]}}(),s=[];function a(t){for(var e=-1,o=0;o*{margin-right:var(--ck-spacing-small);margin-top:var(--ck-spacing-small);margin-bottom:var(--ck-spacing-small)}.ck .ck-balloon-rotator__navigation .ck-balloon-rotator__counter{margin-right:var(--ck-spacing-standard);margin-left:var(--ck-spacing-small)}.ck .ck-balloon-rotator__content .ck.ck-annotation-wrapper{box-shadow:none}"},function(t,e,o){var i=o(1),n=o(29);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=".ck .ck-fake-panel{position:absolute;z-index:calc(var(--ck-z-modal) - 1)}.ck .ck-fake-panel div{position:absolute}.ck .ck-fake-panel div:first-child{z-index:2}.ck .ck-fake-panel div:nth-child(2){z-index:1}:root{--ck-balloon-fake-panel-offset-horizontal:6px;--ck-balloon-fake-panel-offset-vertical:6px}.ck .ck-fake-panel div{box-shadow:var(--ck-drop-shadow),0 0;min-height:15px;background:var(--ck-color-panel-background);border:1px solid var(--ck-color-panel-border);border-radius:var(--ck-border-radius);width:100%;height:100%}.ck .ck-fake-panel div:first-child{margin-left:var(--ck-balloon-fake-panel-offset-horizontal);margin-top:var(--ck-balloon-fake-panel-offset-vertical)}.ck .ck-fake-panel div:nth-child(2){margin-left:calc(var(--ck-balloon-fake-panel-offset-horizontal)*2);margin-top:calc(var(--ck-balloon-fake-panel-offset-vertical)*2)}.ck .ck-fake-panel div:nth-child(3){margin-left:calc(var(--ck-balloon-fake-panel-offset-horizontal)*3);margin-top:calc(var(--ck-balloon-fake-panel-offset-vertical)*3)}.ck .ck-balloon-panel_arrow_s+.ck-fake-panel,.ck .ck-balloon-panel_arrow_se+.ck-fake-panel,.ck .ck-balloon-panel_arrow_sw+.ck-fake-panel{--ck-balloon-fake-panel-offset-vertical:-6px}"},function(t,e,o){var i=o(1),n=o(31);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=".ck.ck-dropdown{display:inline-block;position:relative}.ck.ck-dropdown .ck-dropdown__arrow{pointer-events:none;z-index:var(--ck-z-default)}.ck.ck-dropdown .ck-button.ck-dropdown__button{width:100%}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on .ck-tooltip{display:none}.ck.ck-dropdown .ck-dropdown__panel{-webkit-backface-visibility:hidden;display:none;z-index:var(--ck-z-modal);position:absolute}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel-visible{display:inline-block}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_ne,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nw{bottom:100%}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_se,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sw{top:100%;bottom:auto}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_ne,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_se{left:0}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sw{right:0}:root{--ck-dropdown-arrow-size:calc(0.5*var(--ck-icon-size))}.ck.ck-dropdown{font-size:inherit}.ck.ck-dropdown .ck-dropdown__arrow{width:var(--ck-dropdown-arrow-size)}[dir=ltr] .ck.ck-dropdown .ck-dropdown__arrow{right:var(--ck-spacing-standard);margin-left:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-dropdown .ck-dropdown__arrow{left:var(--ck-spacing-standard);margin-right:var(--ck-spacing-small)}.ck.ck-dropdown.ck-disabled .ck-dropdown__arrow{opacity:var(--ck-disabled-opacity)}[dir=ltr] .ck.ck-dropdown .ck-button.ck-dropdown__button:not(.ck-button_with-text){padding-left:var(--ck-spacing-small)}[dir=rtl] .ck.ck-dropdown .ck-button.ck-dropdown__button:not(.ck-button_with-text){padding-right:var(--ck-spacing-small)}.ck.ck-dropdown .ck-button.ck-dropdown__button .ck-button__label{width:7em;overflow:hidden;text-overflow:ellipsis}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-disabled .ck-button__label{opacity:var(--ck-disabled-opacity)}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on{border-bottom-left-radius:0;border-bottom-right-radius:0}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-dropdown__button_label-width_auto .ck-button__label{width:auto}.ck.ck-dropdown__panel{border-radius:0}.ck-rounded-corners .ck.ck-dropdown__panel,.ck.ck-dropdown__panel.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-dropdown__panel{box-shadow:var(--ck-drop-shadow),0 0;background:var(--ck-color-dropdown-panel-background);border:1px solid var(--ck-color-dropdown-panel-border);bottom:0;min-width:100%}.ck.ck-dropdown__panel.ck-dropdown__panel_se{border-top-left-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_sw{border-top-right-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_ne{border-bottom-left-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_nw{border-bottom-right-radius:0}"},function(t,e,o){var i=o(1),n=o(33);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=".ck.ck-list{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:flex;flex-direction:column}.ck.ck-list .ck-list__item,.ck.ck-list .ck-list__separator{display:block}.ck.ck-list .ck-list__item>:focus{position:relative;z-index:var(--ck-z-default)}.ck.ck-list{border-radius:0}.ck-rounded-corners .ck.ck-list,.ck.ck-list.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-list{list-style-type:none;background:var(--ck-color-list-background)}.ck.ck-list__item{cursor:default;min-width:12em}.ck.ck-list__item .ck-button{min-height:unset;width:100%;text-align:left;border-radius:0;padding:calc(0.2*var(--ck-line-height-base)*var(--ck-font-size-base)) calc(0.4*var(--ck-line-height-base)*var(--ck-font-size-base))}.ck.ck-list__item .ck-button .ck-button__label{line-height:calc(1.2*var(--ck-line-height-base)*var(--ck-font-size-base))}.ck.ck-list__item .ck-button:active{box-shadow:none}.ck.ck-list__item .ck-button.ck-on{background:var(--ck-color-list-button-on-background);color:var(--ck-color-list-button-on-text)}.ck.ck-list__item .ck-button.ck-on:active{box-shadow:none}.ck.ck-list__item .ck-button.ck-on:hover:not(.ck-disabled){background:var(--ck-color-list-button-on-background-focus)}.ck.ck-list__item .ck-button.ck-on:focus:not(.ck-disabled){border-color:var(--ck-color-base-background)}.ck.ck-list__item .ck-button:hover:not(.ck-disabled){background:var(--ck-color-list-button-hover-background)}.ck.ck-list__item .ck-switchbutton.ck-on{background:var(--ck-color-list-background);color:inherit}.ck.ck-list__item .ck-switchbutton.ck-on:hover:not(.ck-disabled){background:var(--ck-color-list-button-hover-background);color:inherit}.ck.ck-list__separator{height:1px;width:100%;background:var(--ck-color-base-border)}"},function(t,e,o){var i=o(1),n=o(35);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=".ck.ck-button.ck-switchbutton .ck-button__toggle,.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{display:block}:root{--ck-switch-button-toggle-width:2.6153846154em;--ck-switch-button-toggle-inner-size:1.0769230769em;--ck-switch-button-toggle-spacing:1px;--ck-switch-button-translation:calc(var(--ck-switch-button-toggle-width) - var(--ck-switch-button-toggle-inner-size) - 2*var(--ck-switch-button-toggle-spacing))}[dir=ltr] .ck.ck-button.ck-switchbutton .ck-button__label{margin-right:calc(2*var(--ck-spacing-large))}[dir=rtl] .ck.ck-button.ck-switchbutton .ck-button__label{margin-left:calc(2*var(--ck-spacing-large))}.ck.ck-button.ck-switchbutton .ck-button__toggle{border-radius:0}.ck-rounded-corners .ck.ck-button.ck-switchbutton .ck-button__toggle,.ck.ck-button.ck-switchbutton .ck-button__toggle.ck-rounded-corners{border-radius:var(--ck-border-radius)}[dir=ltr] .ck.ck-button.ck-switchbutton .ck-button__toggle{margin-left:auto}[dir=rtl] .ck.ck-button.ck-switchbutton .ck-button__toggle{margin-right:auto}.ck.ck-button.ck-switchbutton .ck-button__toggle{transition:background .4s ease;width:var(--ck-switch-button-toggle-width);background:var(--ck-color-switch-button-off-background)}.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{border-radius:0}.ck-rounded-corners .ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner,.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner.ck-rounded-corners{border-radius:var(--ck-border-radius);border-radius:calc(0.5*var(--ck-border-radius))}.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{margin:var(--ck-switch-button-toggle-spacing);width:var(--ck-switch-button-toggle-inner-size);height:var(--ck-switch-button-toggle-inner-size);background:var(--ck-color-switch-button-inner-background);transition:all .3s ease}.ck.ck-button.ck-switchbutton .ck-button__toggle:hover{background:var(--ck-color-switch-button-off-hover-background)}.ck.ck-button.ck-switchbutton .ck-button__toggle:hover .ck-button__toggle__inner{box-shadow:0 0 0 5px var(--ck-color-switch-button-inner-shadow)}.ck.ck-button.ck-switchbutton.ck-disabled .ck-button__toggle{opacity:var(--ck-disabled-opacity)}.ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle{background:var(--ck-color-switch-button-on-background)}.ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle:hover{background:var(--ck-color-switch-button-on-hover-background)}[dir=ltr] .ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle .ck-button__toggle__inner{transform:translateX(var(--ck-switch-button-translation))}[dir=rtl] .ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle .ck-button__toggle__inner{transform:translateX(calc(-1*var(--ck-switch-button-translation)))}"},function(t,e,o){var i=o(1),n=o(37);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=".ck.ck-toolbar-dropdown .ck.ck-toolbar .ck.ck-toolbar__items{flex-wrap:nowrap}.ck.ck-toolbar-dropdown .ck-dropdown__panel .ck-button:focus{z-index:calc(var(--ck-z-default) + 1)}.ck.ck-toolbar-dropdown .ck-toolbar{border:0}"},function(t,e,o){var i=o(1),n=o(39);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=".ck.ck-dropdown .ck-dropdown__panel .ck-list{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list,.ck.ck-dropdown .ck-dropdown__panel .ck-list.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0}.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button,.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button,.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0;border-top-right-radius:0}"},function(t,e,o){var i=o(1),n=o(41);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=".ck.ck-toolbar{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:flex;flex-flow:row nowrap;align-items:center}.ck.ck-toolbar>.ck-toolbar__items{display:flex;flex-flow:row wrap;align-items:center;flex-grow:1}.ck.ck-toolbar .ck.ck-toolbar__separator{display:inline-block}.ck.ck-toolbar .ck.ck-toolbar__separator:first-child,.ck.ck-toolbar .ck.ck-toolbar__separator:last-child{display:none}.ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items{flex-wrap:nowrap}.ck.ck-toolbar.ck-toolbar_vertical>.ck-toolbar__items{flex-direction:column}.ck.ck-toolbar.ck-toolbar_floating>.ck-toolbar__items{flex-wrap:nowrap}.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown>.ck-dropdown__button .ck-dropdown__arrow{display:none}.ck.ck-toolbar{border-radius:0}.ck-rounded-corners .ck.ck-toolbar,.ck.ck-toolbar.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-toolbar{background:var(--ck-color-toolbar-background);padding:0 var(--ck-spacing-small);border:1px solid var(--ck-color-toolbar-border)}.ck.ck-toolbar .ck.ck-toolbar__separator{align-self:stretch;width:1px;min-width:1px;margin-top:0;margin-bottom:0;background:var(--ck-color-toolbar-border)}.ck.ck-toolbar>.ck-toolbar__items>*{margin-top:var(--ck-spacing-small);margin-bottom:var(--ck-spacing-small);margin-right:var(--ck-spacing-small)}.ck.ck-toolbar>.ck-toolbar__items:empty+.ck.ck-toolbar__separator{display:none}.ck.ck-toolbar>.ck-toolbar__items>*,.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown{margin-top:var(--ck-spacing-small);margin-bottom:var(--ck-spacing-small)}.ck.ck-toolbar.ck-toolbar_vertical{padding:0}.ck.ck-toolbar.ck-toolbar_vertical>.ck-toolbar__items>.ck{width:100%;margin:0;border-radius:0;border:0}.ck.ck-toolbar.ck-toolbar_compact{padding:0}.ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>*{margin:0}.ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>:not(:first-child):not(:last-child){border-radius:0}.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown>.ck.ck-button.ck-dropdown__button{padding-left:var(--ck-spacing-tiny)}.ck-toolbar-container .ck.ck-toolbar{border:0}.ck.ck-toolbar[dir=rtl]>.ck-toolbar__items>.ck,[dir=rtl] .ck.ck-toolbar>.ck-toolbar__items>.ck{margin-right:0}.ck.ck-toolbar[dir=rtl]:not(.ck-toolbar_compact)>.ck-toolbar__items>.ck,[dir=rtl] .ck.ck-toolbar:not(.ck-toolbar_compact)>.ck-toolbar__items>.ck{margin-left:var(--ck-spacing-small)}.ck.ck-toolbar[dir=rtl]>.ck-toolbar__items>.ck:last-child,[dir=rtl] .ck.ck-toolbar>.ck-toolbar__items>.ck:last-child{margin-left:0}.ck.ck-toolbar[dir=rtl].ck-toolbar_compact>.ck-toolbar__items>.ck:first-child,[dir=rtl] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.ck.ck-toolbar[dir=rtl].ck-toolbar_compact>.ck-toolbar__items>.ck:last-child,[dir=rtl] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:last-child{border-top-right-radius:0;border-bottom-right-radius:0}.ck.ck-toolbar[dir=rtl]>.ck.ck-toolbar__separator,[dir=rtl] .ck.ck-toolbar>.ck.ck-toolbar__separator{margin-left:var(--ck-spacing-small)}.ck.ck-toolbar[dir=rtl].ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child),[dir=rtl] .ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child){margin-left:var(--ck-spacing-small)}.ck.ck-toolbar[dir=ltr]>.ck-toolbar__items>.ck:last-child,[dir=ltr] .ck.ck-toolbar>.ck-toolbar__items>.ck:last-child{margin-right:0}.ck.ck-toolbar[dir=ltr].ck-toolbar_compact>.ck-toolbar__items>.ck:first-child,[dir=ltr] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.ck.ck-toolbar[dir=ltr].ck-toolbar_compact>.ck-toolbar__items>.ck:last-child,[dir=ltr] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.ck.ck-toolbar[dir=ltr]>.ck.ck-toolbar__separator,[dir=ltr] .ck.ck-toolbar>.ck.ck-toolbar__separator{margin-right:var(--ck-spacing-small)}.ck.ck-toolbar[dir=ltr].ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child),[dir=ltr] .ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child){margin-right:var(--ck-spacing-small)}"},function(t,e,o){var i=o(1),n=o(43);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=".ck.ck-placeholder:before,.ck .ck-placeholder:before{content:attr(data-placeholder);pointer-events:none}.ck.ck-read-only .ck-placeholder:before{display:none}.ck.ck-placeholder:before,.ck .ck-placeholder:before{cursor:text;color:var(--ck-color-engine-placeholder-text)}"},function(t,e,o){var i=o(1),n=o(45);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=":root{--ck-color-editable-blur-selection:#d9d9d9}.ck.ck-editor__editable:not(.ck-editor__nested-editable){border-radius:0}.ck-rounded-corners .ck.ck-editor__editable:not(.ck-editor__nested-editable),.ck.ck-editor__editable:not(.ck-editor__nested-editable).ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-editor__editable:not(.ck-editor__nested-editable).ck-focused{outline:none;border:var(--ck-focus-ring);box-shadow:var(--ck-inner-shadow),0 0}.ck.ck-editor__editable_inline{overflow:auto;padding:0 var(--ck-spacing-standard);border:1px solid transparent}.ck.ck-editor__editable_inline[dir=ltr]{text-align:left}.ck.ck-editor__editable_inline[dir=rtl]{text-align:right}.ck.ck-editor__editable_inline>:first-child{margin-top:var(--ck-spacing-large)}.ck.ck-editor__editable_inline>:last-child{margin-bottom:var(--ck-spacing-large)}.ck.ck-editor__editable_inline.ck-blurred ::selection{background:var(--ck-color-editable-blur-selection)}.ck.ck-balloon-panel.ck-toolbar-container[class*=arrow_n]:after{border-bottom-color:var(--ck-color-base-foreground)}.ck.ck-balloon-panel.ck-toolbar-container[class*=arrow_s]:after{border-top-color:var(--ck-color-base-foreground)}"},function(t,e){t.exports=".ck-content code{background-color:hsla(0,0%,78%,.3);padding:.15em;border-radius:2px}"},function(t,e,o){var i=o(1),n=o(48);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=".ck-content blockquote{overflow:hidden;padding-right:1.5em;padding-left:1.5em;margin-left:0;margin-right:0;font-style:italic;border-left:5px solid #ccc}.ck-content[dir=rtl] blockquote{border-left:0;border-right:5px solid #ccc}"},function(t,e){t.exports=".ck.ck-heading_heading1{font-size:20px}.ck.ck-heading_heading2{font-size:17px}.ck.ck-heading_heading3{font-size:14px}.ck[class*=ck-heading_heading]{font-weight:700}.ck.ck-dropdown.ck-heading-dropdown .ck-dropdown__button .ck-button__label{width:8em}.ck.ck-dropdown.ck-heading-dropdown .ck-dropdown__panel .ck-list__item{min-width:18em}"},function(t,e,o){var i=o(1),n=o(51);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports='.ck .ck-widget .ck-widget__type-around__button{display:block;position:absolute;overflow:hidden;z-index:var(--ck-z-default)}.ck .ck-widget .ck-widget__type-around__button svg{position:absolute;top:50%;left:50%;z-index:calc(var(--ck-z-default) + 2)}.ck .ck-widget .ck-widget__type-around__button.ck-widget__type-around__button_before{top:calc(-0.5*var(--ck-widget-outline-thickness));left:min(10%,30px);transform:translateY(-50%)}.ck .ck-widget .ck-widget__type-around__button.ck-widget__type-around__button_after{bottom:calc(-0.5*var(--ck-widget-outline-thickness));right:min(10%,30px);transform:translateY(50%)}.ck .ck-widget:not(.ck-widget_can-type-around_after)>.ck-widget__type-around>.ck-widget__type-around__button_after,.ck .ck-widget:not(.ck-widget_can-type-around_before)>.ck-widget__type-around>.ck-widget__type-around__button_before{display:none}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:after,.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__button:hover:after{content:"";display:block;position:absolute;top:1px;left:1px;z-index:calc(var(--ck-z-default) + 1)}.ck.ck-editor__editable.ck-read-only .ck-widget__type-around,.ck.ck-editor__editable.ck-restricted-editing_mode_restricted .ck-widget__type-around{display:none}:root{--ck-widget-type-around-button-size:20px;--ck-color-widget-type-around-button-active:var(--ck-color-focus-border);--ck-color-widget-type-around-button-hover:var(--ck-color-widget-hover-border);--ck-color-widget-type-around-button-blurred-editable:var(--ck-color-widget-blurred-border);--ck-color-widget-type-around-button-radar-start-alpha:0;--ck-color-widget-type-around-button-radar-end-alpha:.3;--ck-color-widget-type-around-button-icon:var(--ck-color-base-background)}.ck .ck-widget .ck-widget__type-around__button{width:var(--ck-widget-type-around-button-size);height:var(--ck-widget-type-around-button-size);background:var(--ck-color-widget-type-around-button);border-radius:100px;pointer-events:none;opacity:0;transition:opacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),background var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve)}.ck .ck-widget .ck-widget__type-around__button svg{width:10px;height:8px;transform:translate(-50%,-50%);transition:transform .5s ease;margin-top:1px}.ck .ck-widget .ck-widget__type-around__button svg *{stroke-dasharray:10;stroke-dashoffset:0;fill:none;stroke:var(--ck-color-widget-type-around-button-icon);stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.ck .ck-widget .ck-widget__type-around__button svg line{stroke-dasharray:7}.ck .ck-widget .ck-widget__type-around__button:hover{animation:ck-widget-type-around-button-sonar 1s ease infinite}.ck .ck-widget .ck-widget__type-around__button:hover svg polyline{animation:ck-widget-type-around-arrow-dash 2s linear}.ck .ck-widget .ck-widget__type-around__button:hover svg line{animation:ck-widget-type-around-arrow-tip-dash 2s linear}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button,.ck .ck-widget:hover>.ck-widget__type-around>.ck-widget__type-around__button{pointer-events:auto;opacity:1}.ck .ck-widget:not(.ck-widget_selected)>.ck-widget__type-around>.ck-widget__type-around__button{background:var(--ck-color-widget-type-around-button-hover)}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button,.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__button:hover{background:var(--ck-color-widget-type-around-button-active)}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:after,.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__button:hover:after{width:calc(var(--ck-widget-type-around-button-size) - 2px);height:calc(var(--ck-widget-type-around-button-size) - 2px);border-radius:100px;background:linear-gradient(135deg,hsla(0,0%,100%,0),hsla(0,0%,100%,.3))}.ck .ck-widget.ck-widget_with-selection-handle>.ck-widget__type-around>.ck-widget__type-around__button_before{margin-left:20px}.ck-editor__nested-editable.ck-editor__editable_selected .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button,.ck-editor__nested-editable.ck-editor__editable_selected .ck-widget:hover>.ck-widget__type-around>.ck-widget__type-around__button{pointer-events:none;opacity:0}.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:not(:hover){background:var(--ck-color-widget-type-around-button-blurred-editable)}.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:not(:hover) svg *{stroke:#999}@keyframes ck-widget-type-around-arrow-dash{0%{stroke-dashoffset:10}20%,to{stroke-dashoffset:0}}@keyframes ck-widget-type-around-arrow-tip-dash{0%,20%{stroke-dashoffset:7}40%,to{stroke-dashoffset:0}}@keyframes ck-widget-type-around-button-sonar{0%{box-shadow:0 0 0 0 hsla(var(--ck-color-focus-border-coordinates),var(--ck-color-widget-type-around-button-radar-start-alpha))}50%{box-shadow:0 0 0 5px hsla(var(--ck-color-focus-border-coordinates),var(--ck-color-widget-type-around-button-radar-end-alpha))}to{box-shadow:0 0 0 5px hsla(var(--ck-color-focus-border-coordinates),var(--ck-color-widget-type-around-button-radar-start-alpha))}}'},function(t,e,o){var i=o(1),n=o(53);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=":root{--ck-color-resizer:var(--ck-color-focus-border);--ck-resizer-size:10px;--ck-resizer-border-width:1px;--ck-resizer-border-radius:2px;--ck-resizer-offset:calc(var(--ck-resizer-size)/-2 - 2px);--ck-resizer-tooltip-offset:10px;--ck-color-resizer-tooltip-background:#262626;--ck-color-resizer-tooltip-text:#f2f2f2}.ck .ck-widget,.ck .ck-widget.ck-widget_with-selection-handle{position:relative}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{position:absolute}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon{display:block}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected .ck-widget__selection-handle,.ck .ck-widget.ck-widget_with-selection-handle:hover .ck-widget__selection-handle{visibility:visible}.ck .ck-size-view{background:var(--ck-color-resizer-tooltip-background);color:var(--ck-color-resizer-tooltip-text);border:1px solid var(--ck-color-resizer-tooltip-text);border-radius:var(--ck-resizer-border-radius);font-size:var(--ck-font-size-tiny);display:block;padding:var(--ck-spacing-small)}.ck .ck-size-view.ck-orientation-bottom-left,.ck .ck-size-view.ck-orientation-bottom-right,.ck .ck-size-view.ck-orientation-top-left,.ck .ck-size-view.ck-orientation-top-right{position:absolute}.ck .ck-size-view.ck-orientation-top-left{top:var(--ck-resizer-tooltip-offset);left:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-top-right{top:var(--ck-resizer-tooltip-offset);right:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-bottom-right{bottom:var(--ck-resizer-tooltip-offset);right:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-bottom-left{bottom:var(--ck-resizer-tooltip-offset);left:var(--ck-resizer-tooltip-offset)}:root{--ck-widget-outline-thickness:3px;--ck-widget-handler-icon-size:16px;--ck-widget-handler-animation-duration:200ms;--ck-widget-handler-animation-curve:ease;--ck-color-widget-blurred-border:#dedede;--ck-color-widget-hover-border:#ffc83d;--ck-color-widget-editable-focus-background:var(--ck-color-base-background);--ck-color-widget-drag-handler-icon-color:var(--ck-color-base-background)}.ck .ck-widget{outline-width:var(--ck-widget-outline-thickness);outline-style:solid;outline-color:transparent;transition:outline-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve)}.ck .ck-widget.ck-widget_selected,.ck .ck-widget.ck-widget_selected:hover{outline:var(--ck-widget-outline-thickness) solid var(--ck-color-focus-border)}.ck .ck-widget:hover{outline-color:var(--ck-color-widget-hover-border)}.ck .ck-editor__nested-editable{border:1px solid transparent}.ck .ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck .ck-editor__nested-editable:focus{outline:none;border:var(--ck-focus-ring);box-shadow:var(--ck-inner-shadow),0 0;background-color:var(--ck-color-widget-editable-focus-background)}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{padding:4px;box-sizing:border-box;background-color:transparent;opacity:0;transition:background-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),visibility var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),opacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);border-radius:var(--ck-border-radius) var(--ck-border-radius) 0 0;transform:translateY(-100%);left:calc(0px - var(--ck-widget-outline-thickness))}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon{width:var(--ck-widget-handler-icon-size);height:var(--ck-widget-handler-icon-size);color:var(--ck-color-widget-drag-handler-icon-color)}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator{opacity:0;transition:opacity .3s var(--ck-widget-handler-animation-curve)}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle:hover .ck-icon .ck-icon__selected-indicator{opacity:1}.ck .ck-widget.ck-widget_with-selection-handle:hover .ck-widget__selection-handle{opacity:1;background-color:var(--ck-color-widget-hover-border)}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected .ck-widget__selection-handle,.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected:hover .ck-widget__selection-handle{opacity:1;background-color:var(--ck-color-focus-border)}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected .ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator,.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected:hover .ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator{opacity:1}.ck[dir=rtl] .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{left:auto;right:calc(0px - var(--ck-widget-outline-thickness))}.ck.ck-editor__editable.ck-read-only .ck-widget{transition:none}.ck.ck-editor__editable.ck-read-only .ck-widget:not(.ck-widget_selected){--ck-widget-outline-thickness:0px}.ck.ck-editor__editable.ck-read-only .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle,.ck.ck-editor__editable.ck-read-only .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle:hover{background:var(--ck-color-widget-blurred-border)}.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected:hover{outline-color:var(--ck-color-widget-blurred-border)}.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle .ck-widget__selection-handle,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle .ck-widget__selection-handle:hover,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected:hover.ck-widget_with-selection-handle .ck-widget__selection-handle,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected:hover.ck-widget_with-selection-handle .ck-widget__selection-handle:hover{background:var(--ck-color-widget-blurred-border)}.ck.ck-editor__editable>.ck-widget.ck-widget_with-selection-handle:first-child,.ck.ck-editor__editable blockquote>.ck-widget.ck-widget_with-selection-handle:first-child{margin-top:calc(1em + var(--ck-widget-handler-icon-size))}"},function(t,e,o){var i=o(1),n=o(55);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=".ck.ck-label{display:block}.ck.ck-voice-label{display:none}.ck.ck-label{font-weight:700}"},function(t,e,o){var i=o(1),n=o(57);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=".ck.ck-labeled-field-view .ck-labeled-field-view__status{font-size:var(--ck-font-size-small);margin-top:var(--ck-spacing-small);white-space:normal}.ck.ck-labeled-field-view .ck-labeled-field-view__status_error{color:var(--ck-color-base-error)}.ck.ck-labeled-field-view>.ck.ck-label{width:100%;text-overflow:ellipsis;overflow:hidden}"},function(t,e,o){var i=o(1),n=o(59);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=":root{--ck-input-text-width:18em}.ck.ck-input-text{border-radius:0}.ck-rounded-corners .ck.ck-input-text,.ck.ck-input-text.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-input-text{box-shadow:var(--ck-inner-shadow),0 0;background:var(--ck-color-input-background);border:1px solid var(--ck-color-input-border);padding:var(--ck-spacing-extra-tiny) var(--ck-spacing-medium);min-width:var(--ck-input-text-width);min-height:var(--ck-ui-component-min-height);transition:box-shadow .2s ease-in-out,border .2s ease-in-out}.ck.ck-input-text:focus{outline:none;border:var(--ck-focus-ring);box-shadow:var(--ck-focus-outer-shadow),var(--ck-inner-shadow)}.ck.ck-input-text[readonly]{border:1px solid var(--ck-color-input-disabled-border);background:var(--ck-color-input-disabled-background);color:var(--ck-color-input-disabled-text)}.ck.ck-input-text[readonly]:focus{box-shadow:var(--ck-focus-disabled-outer-shadow),var(--ck-inner-shadow)}.ck.ck-input-text.ck-error{border-color:var(--ck-color-input-error-border);animation:ck-text-input-shake .3s ease both}.ck.ck-input-text.ck-error:focus{box-shadow:var(--ck-focus-error-outer-shadow),var(--ck-inner-shadow)}@keyframes ck-text-input-shake{20%{transform:translateX(-2px)}40%{transform:translateX(2px)}60%{transform:translateX(-1px)}80%{transform:translateX(1px)}}"},function(t,e,o){var i=o(1),n=o(61);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=".ck.ck-text-alternative-form{display:flex;flex-direction:row;flex-wrap:nowrap}.ck.ck-text-alternative-form .ck-labeled-field-view{display:inline-block}.ck.ck-text-alternative-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-text-alternative-form{flex-wrap:wrap}.ck.ck-text-alternative-form .ck-labeled-field-view{flex-basis:100%}.ck.ck-text-alternative-form .ck-button{flex-basis:50%}}.ck.ck-text-alternative-form{padding:var(--ck-spacing-standard)}.ck.ck-text-alternative-form:focus{outline:none}[dir=ltr] .ck.ck-text-alternative-form>:not(:first-child),[dir=rtl] .ck.ck-text-alternative-form>:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-text-alternative-form{padding:0;width:calc(0.8*var(--ck-input-text-width))}.ck.ck-text-alternative-form .ck-labeled-field-view{margin:var(--ck-spacing-standard) var(--ck-spacing-standard) 0}.ck.ck-text-alternative-form .ck-labeled-field-view .ck-input-text{min-width:0;width:100%}.ck.ck-text-alternative-form .ck-button{padding:var(--ck-spacing-standard);margin-top:var(--ck-spacing-standard);border-radius:0;border:0;border-top:1px solid var(--ck-color-base-border)}[dir=ltr] .ck.ck-text-alternative-form .ck-button{margin-left:0}[dir=ltr] .ck.ck-text-alternative-form .ck-button:first-of-type{border-right:1px solid var(--ck-color-base-border)}[dir=rtl] .ck.ck-text-alternative-form .ck-button{margin-left:0}[dir=rtl] .ck.ck-text-alternative-form .ck-button:last-of-type{border-right:1px solid var(--ck-color-base-border)}}"},function(t,e,o){var i=o(1),n=o(63);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=".ck-content .image{display:table;clear:both;text-align:center;margin:1em auto}.ck-content .image>img{display:block;margin:0 auto;max-width:100%;min-width:50px}"},function(t,e,o){var i=o(1),n=o(65);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=".ck-content .image>figcaption{display:table-caption;caption-side:bottom;word-break:break-word;color:#333;background-color:#f7f7f7;padding:.6em;font-size:.75em;outline-offset:-1px}"},function(t,e,o){var i=o(1),n=o(67);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=":root{--ck-image-style-spacing:1.5em}.ck-content .image-style-align-center,.ck-content .image-style-align-left,.ck-content .image-style-align-right,.ck-content .image-style-side{max-width:50%}.ck-content .image-style-side{float:right;margin-left:var(--ck-image-style-spacing)}.ck-content .image-style-align-left{float:left;margin-right:var(--ck-image-style-spacing)}.ck-content .image-style-align-center{margin-left:auto;margin-right:auto}.ck-content .image-style-align-right{float:right;margin-left:var(--ck-image-style-spacing)}"},function(t,e,o){var i=o(1),n=o(69);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=".ck.ck-editor__editable .image{position:relative}.ck.ck-editor__editable .image .ck-progress-bar{position:absolute;top:0;left:0}.ck.ck-editor__editable .image.ck-appear{animation:fadeIn .7s}.ck.ck-editor__editable .image .ck-progress-bar{height:2px;width:0;background:var(--ck-color-upload-bar-background);transition:width .1s}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}"},function(t,e,o){var i=o(1),n=o(71);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports='.ck-image-upload-complete-icon{display:block;position:absolute;top:10px;right:10px;border-radius:50%}.ck-image-upload-complete-icon:after{content:"";position:absolute}:root{--ck-color-image-upload-icon:#fff;--ck-color-image-upload-icon-background:#008a00;--ck-image-upload-icon-size:20px;--ck-image-upload-icon-width:2px}.ck-image-upload-complete-icon{width:var(--ck-image-upload-icon-size);height:var(--ck-image-upload-icon-size);opacity:0;background:var(--ck-color-image-upload-icon-background);animation-name:ck-upload-complete-icon-show,ck-upload-complete-icon-hide;animation-fill-mode:forwards,forwards;animation-duration:.5s,.5s;font-size:var(--ck-image-upload-icon-size);animation-delay:0ms,3s}.ck-image-upload-complete-icon:after{left:25%;top:50%;opacity:0;height:0;width:0;transform:scaleX(-1) rotate(135deg);transform-origin:left top;border-top:var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);border-right:var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);animation-name:ck-upload-complete-icon-check;animation-duration:.5s;animation-delay:.5s;animation-fill-mode:forwards;box-sizing:border-box}@keyframes ck-upload-complete-icon-show{0%{opacity:0}to{opacity:1}}@keyframes ck-upload-complete-icon-hide{0%{opacity:1}to{opacity:0}}@keyframes ck-upload-complete-icon-check{0%{opacity:1;width:0;height:0}33%{width:.3em;height:0}to{opacity:1;width:.3em;height:.45em}}'},function(t,e,o){var i=o(1),n=o(73);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports='.ck .ck-upload-placeholder-loader{position:absolute;display:flex;align-items:center;justify-content:center;top:0;left:0}.ck .ck-upload-placeholder-loader:before{content:"";position:relative}:root{--ck-color-upload-placeholder-loader:#b3b3b3;--ck-upload-placeholder-loader-size:32px}.ck .ck-image-upload-placeholder{width:100%;margin:0}.ck .ck-upload-placeholder-loader{width:100%;height:100%}.ck .ck-upload-placeholder-loader:before{width:var(--ck-upload-placeholder-loader-size);height:var(--ck-upload-placeholder-loader-size);border-radius:50%;border-top:3px solid var(--ck-color-upload-placeholder-loader);border-right:2px solid transparent;animation:ck-upload-placeholder-loader 1s linear infinite}@keyframes ck-upload-placeholder-loader{to{transform:rotate(1turn)}}'},function(t,e,o){var i=o(1),n=o(75);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=".ck .ck-widget_with-resizer{position:relative}.ck .ck-widget__resizer{display:none;position:absolute;pointer-events:none;left:0;top:0;outline:1px solid var(--ck-color-resizer)}.ck-focused .ck-widget_with-resizer.ck-widget_selected>.ck-widget__resizer{display:block}.ck .ck-widget__resizer__handle{position:absolute;pointer-events:all;width:var(--ck-resizer-size);height:var(--ck-resizer-size);background:var(--ck-color-focus-border);border:var(--ck-resizer-border-width) solid #fff;border-radius:var(--ck-resizer-border-radius)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-left{top:var(--ck-resizer-offset);left:var(--ck-resizer-offset);cursor:nwse-resize}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-right{top:var(--ck-resizer-offset);right:var(--ck-resizer-offset);cursor:nesw-resize}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-right{bottom:var(--ck-resizer-offset);right:var(--ck-resizer-offset);cursor:nwse-resize}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-left{bottom:var(--ck-resizer-offset);left:var(--ck-resizer-offset);cursor:nesw-resize}"},function(t,e,o){var i=o(1),n=o(77);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=".ck-content .image.image_resized{max-width:100%;display:block;box-sizing:border-box}.ck-content .image.image_resized img{width:100%}.ck-content .image.image_resized>figcaption{display:block}"},function(t,e,o){var i=o(1),n=o(79);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=".ck .ck-link_selected{background:var(--ck-color-link-selected-background)}"},function(t,e,o){var i=o(1),n=o(81);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=".ck.ck-link-form{display:flex}.ck.ck-link-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-link-form{flex-wrap:wrap}.ck.ck-link-form .ck-labeled-field-view{flex-basis:100%}.ck.ck-link-form .ck-button{flex-basis:50%}}.ck.ck-link-form_layout-vertical{display:block}.ck.ck-link-form{padding:var(--ck-spacing-standard)}.ck.ck-link-form:focus{outline:none}[dir=ltr] .ck.ck-link-form>:not(:first-child),[dir=rtl] .ck.ck-link-form>:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-link-form{padding:0;width:calc(0.8*var(--ck-input-text-width))}.ck.ck-link-form .ck-labeled-field-view{margin:var(--ck-spacing-standard) var(--ck-spacing-standard) 0}.ck.ck-link-form .ck-labeled-field-view .ck-input-text{min-width:0;width:100%}.ck.ck-link-form .ck-button{padding:var(--ck-spacing-standard);margin-top:var(--ck-spacing-standard);border-radius:0;border:0;border-top:1px solid var(--ck-color-base-border)}[dir=ltr] .ck.ck-link-form .ck-button{margin-left:0}[dir=ltr] .ck.ck-link-form .ck-button:first-of-type{border-right:1px solid var(--ck-color-base-border)}[dir=rtl] .ck.ck-link-form .ck-button{margin-left:0}[dir=rtl] .ck.ck-link-form .ck-button:last-of-type{border-right:1px solid var(--ck-color-base-border)}}.ck.ck-link-form_layout-vertical{padding:0;min-width:var(--ck-input-text-width)}.ck.ck-link-form_layout-vertical .ck-labeled-field-view{margin:var(--ck-spacing-standard) var(--ck-spacing-standard) var(--ck-spacing-small)}.ck.ck-link-form_layout-vertical .ck-labeled-field-view .ck-input-text{min-width:0;width:100%}.ck.ck-link-form_layout-vertical .ck-button{padding:var(--ck-spacing-standard);margin:0;border-radius:0;border:0;border-top:1px solid var(--ck-color-base-border);width:50%}[dir=ltr] .ck.ck-link-form_layout-vertical .ck-button{margin-left:0}[dir=ltr] .ck.ck-link-form_layout-vertical .ck-button:first-of-type{border-right:1px solid var(--ck-color-base-border)}[dir=rtl] .ck.ck-link-form_layout-vertical .ck-button{margin-left:0}[dir=rtl] .ck.ck-link-form_layout-vertical .ck-button:last-of-type{border-right:1px solid var(--ck-color-base-border)}.ck.ck-link-form_layout-vertical .ck.ck-list{margin-left:0}.ck.ck-link-form_layout-vertical .ck.ck-list .ck-button.ck-switchbutton{border:0;width:100%}.ck.ck-link-form_layout-vertical .ck.ck-list .ck-button.ck-switchbutton:hover{background:none}"},function(t,e,o){var i=o(1),n=o(83);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=".ck.ck-link-actions{display:flex;flex-direction:row;flex-wrap:nowrap}.ck.ck-link-actions .ck-link-actions__preview{display:inline-block}.ck.ck-link-actions .ck-link-actions__preview .ck-button__label{overflow:hidden}@media screen and (max-width:600px){.ck.ck-link-actions{flex-wrap:wrap}.ck.ck-link-actions .ck-link-actions__preview{flex-basis:100%}.ck.ck-link-actions .ck-button:not(.ck-link-actions__preview){flex-basis:50%}}.ck.ck-link-actions{padding:var(--ck-spacing-standard)}.ck.ck-link-actions .ck-button.ck-link-actions__preview{padding-left:0;padding-right:0}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label{padding:0 var(--ck-spacing-medium);color:var(--ck-color-link-default);text-overflow:ellipsis;cursor:pointer;max-width:var(--ck-input-text-width);min-width:3em;text-align:center}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label:hover{text-decoration:underline}.ck.ck-link-actions .ck-button.ck-link-actions__preview,.ck.ck-link-actions .ck-button.ck-link-actions__preview:active,.ck.ck-link-actions .ck-button.ck-link-actions__preview:focus,.ck.ck-link-actions .ck-button.ck-link-actions__preview:hover{background:none}.ck.ck-link-actions .ck-button.ck-link-actions__preview:active{box-shadow:none}.ck.ck-link-actions .ck-button.ck-link-actions__preview:focus .ck-button__label{text-decoration:underline}.ck.ck-link-actions:focus{outline:none}[dir=ltr] .ck.ck-link-actions .ck-button:not(:first-child),[dir=rtl] .ck.ck-link-actions .ck-button:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-link-actions{padding:0;width:calc(0.8*var(--ck-input-text-width))}.ck.ck-link-actions .ck-button.ck-link-actions__preview{margin:var(--ck-spacing-standard) var(--ck-spacing-standard) 0}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label{min-width:0;max-width:100%}.ck.ck-link-actions .ck-button:not(.ck-link-actions__preview){padding:var(--ck-spacing-standard);margin-top:var(--ck-spacing-standard);border-radius:0;border:0;border-top:1px solid var(--ck-color-base-border)}[dir=ltr] .ck.ck-link-actions .ck-button:not(.ck-link-actions__preview){margin-left:0}[dir=ltr] .ck.ck-link-actions .ck-button:not(.ck-link-actions__preview):first-of-type{border-right:1px solid var(--ck-color-base-border)}[dir=rtl] .ck.ck-link-actions .ck-button:not(.ck-link-actions__preview){margin-left:0}[dir=rtl] .ck.ck-link-actions .ck-button:not(.ck-link-actions__preview):last-of-type{border-right:1px solid var(--ck-color-base-border)}}"},function(t,e,o){var i=o(1),n=o(85);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=':root{--ck-todo-list-checkmark-size:16px}.ck-content .todo-list{list-style:none}.ck-content .todo-list li{margin-bottom:5px}.ck-content .todo-list li .todo-list{margin-top:5px}.ck-content .todo-list .todo-list__label>input{-webkit-appearance:none;display:inline-block;position:relative;width:var(--ck-todo-list-checkmark-size);height:var(--ck-todo-list-checkmark-size);vertical-align:middle;border:0;left:-25px;margin-right:-15px;right:0;margin-left:0}.ck-content .todo-list .todo-list__label>input:before{display:block;position:absolute;box-sizing:border-box;content:"";width:100%;height:100%;border:1px solid #333;border-radius:2px;transition:box-shadow .25s ease-in-out,background .25s ease-in-out,border .25s ease-in-out}.ck-content .todo-list .todo-list__label>input:after{display:block;position:absolute;box-sizing:content-box;pointer-events:none;content:"";left:calc(var(--ck-todo-list-checkmark-size)/3);top:calc(var(--ck-todo-list-checkmark-size)/5.3);width:calc(var(--ck-todo-list-checkmark-size)/5.3);height:calc(var(--ck-todo-list-checkmark-size)/2.6);border-left:0 solid transparent;border-bottom:calc(var(--ck-todo-list-checkmark-size)/8) solid transparent;border-right:calc(var(--ck-todo-list-checkmark-size)/8) solid transparent;border-top:0 solid transparent;transform:rotate(45deg)}.ck-content .todo-list .todo-list__label>input[checked]:before{background:#26ab33;border-color:#26ab33}.ck-content .todo-list .todo-list__label>input[checked]:after{border-color:#fff}.ck-content .todo-list .todo-list__label .todo-list__label__description{vertical-align:middle}[dir=rtl] .todo-list .todo-list__label>input{left:0;margin-right:0;right:-25px;margin-left:-15px}.ck-editor__editable .todo-list .todo-list__label>input{cursor:pointer}.ck-editor__editable .todo-list .todo-list__label>input:hover:before{box-shadow:0 0 0 5px rgba(0,0,0,.1)}'},function(t,e,o){var i=o(1),n=o(87);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=":root{--ck-color-table-focused-cell-background:rgba(158,207,250,0.3)}.ck-widget.table td.ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck-widget.table td.ck-editor__nested-editable:focus,.ck-widget.table th.ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck-widget.table th.ck-editor__nested-editable:focus{background:var(--ck-color-table-focused-cell-background);border-style:none;outline:1px solid var(--ck-color-focus-border);outline-offset:-1px}"},function(t,e,o){var i=o(1),n=o(89);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=".ck.ck-splitbutton{font-size:inherit}.ck.ck-splitbutton .ck-splitbutton__action:focus{z-index:calc(var(--ck-z-default) + 1)}.ck.ck-splitbutton.ck-splitbutton_open>.ck-button .ck-tooltip{display:none}:root{--ck-color-split-button-hover-background:#ebebeb;--ck-color-split-button-hover-border:#b3b3b3}[dir=ltr] .ck.ck-splitbutton>.ck-splitbutton__action{border-top-right-radius:unset;border-bottom-right-radius:unset}[dir=rtl] .ck.ck-splitbutton>.ck-splitbutton__action{border-top-left-radius:unset;border-bottom-left-radius:unset}.ck.ck-splitbutton>.ck-splitbutton__arrow{min-width:unset}[dir=ltr] .ck.ck-splitbutton>.ck-splitbutton__arrow{border-radius:0}.ck-rounded-corners [dir=ltr] .ck.ck-splitbutton>.ck-splitbutton__arrow,[dir=ltr] .ck.ck-splitbutton>.ck-splitbutton__arrow.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:unset;border-bottom-left-radius:unset}[dir=rtl] .ck.ck-splitbutton>.ck-splitbutton__arrow{border-top-right-radius:unset;border-bottom-right-radius:unset}.ck.ck-splitbutton>.ck-splitbutton__arrow svg{width:var(--ck-dropdown-arrow-size)}.ck.ck-splitbutton.ck-splitbutton_open>.ck-button:not(.ck-on):not(.ck-disabled):not(:hover),.ck.ck-splitbutton:hover>.ck-button:not(.ck-on):not(.ck-disabled):not(:hover){background:var(--ck-color-split-button-hover-background)}[dir=ltr] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled),[dir=ltr] .ck.ck-splitbutton:hover>.ck-splitbutton__arrow:not(.ck-disabled){border-left-color:var(--ck-color-split-button-hover-border)}[dir=rtl] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled),[dir=rtl] .ck.ck-splitbutton:hover>.ck-splitbutton__arrow:not(.ck-disabled){border-right-color:var(--ck-color-split-button-hover-border)}.ck.ck-splitbutton.ck-splitbutton_open{border-radius:0}.ck-rounded-corners .ck.ck-splitbutton.ck-splitbutton_open,.ck.ck-splitbutton.ck-splitbutton_open.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck-rounded-corners .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__action,.ck.ck-splitbutton.ck-splitbutton_open.ck-rounded-corners>.ck-splitbutton__action{border-bottom-left-radius:0}.ck-rounded-corners .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow,.ck.ck-splitbutton.ck-splitbutton_open.ck-rounded-corners>.ck-splitbutton__arrow{border-bottom-right-radius:0}"},function(t,e,o){var i=o(1),n=o(91);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=".ck .ck-insert-table-dropdown__grid{display:flex;flex-direction:row;flex-wrap:wrap}:root{--ck-insert-table-dropdown-padding:10px;--ck-insert-table-dropdown-box-height:11px;--ck-insert-table-dropdown-box-width:12px;--ck-insert-table-dropdown-box-margin:1px}.ck .ck-insert-table-dropdown__grid{width:calc(var(--ck-insert-table-dropdown-box-width)*10 + var(--ck-insert-table-dropdown-box-margin)*20 + var(--ck-insert-table-dropdown-padding)*2);padding:var(--ck-insert-table-dropdown-padding) var(--ck-insert-table-dropdown-padding) 0}.ck .ck-insert-table-dropdown__label{text-align:center}.ck .ck-insert-table-dropdown-grid-box{width:var(--ck-insert-table-dropdown-box-width);height:var(--ck-insert-table-dropdown-box-height);margin:var(--ck-insert-table-dropdown-box-margin);border:1px solid var(--ck-color-base-border);border-radius:1px}.ck .ck-insert-table-dropdown-grid-box.ck-on{border-color:var(--ck-color-focus-border);background:var(--ck-color-focus-outer-shadow)}"},function(t,e,o){var i=o(1),n=o(93);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=':root{--ck-table-selected-cell-background:rgba(158,207,250,0.3)}.ck.ck-editor__editable .table table td.ck-editor__editable_selected,.ck.ck-editor__editable .table table th.ck-editor__editable_selected{position:relative;caret-color:transparent;outline:unset;box-shadow:unset}.ck.ck-editor__editable .table table td.ck-editor__editable_selected:after,.ck.ck-editor__editable .table table th.ck-editor__editable_selected:after{content:"";pointer-events:none;background-color:var(--ck-table-selected-cell-background);position:absolute;top:0;left:0;right:0;bottom:0}.ck.ck-editor__editable .table table td.ck-editor__editable_selected ::selection,.ck.ck-editor__editable .table table td.ck-editor__editable_selected:focus,.ck.ck-editor__editable .table table th.ck-editor__editable_selected ::selection,.ck.ck-editor__editable .table table th.ck-editor__editable_selected:focus{background-color:transparent}.ck.ck-editor__editable .table table td.ck-editor__editable_selected .ck-widget_selected,.ck.ck-editor__editable .table table th.ck-editor__editable_selected .ck-widget_selected{outline:unset}'},function(t,e,o){var i=o(1),n=o(95);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=".ck-content .table{margin:1em auto;display:table}.ck-content .table table{border-collapse:collapse;border-spacing:0;width:100%;height:100%;border:1px double #b3b3b3}.ck-content .table table td,.ck-content .table table th{min-width:2em;padding:.4em;border:1px solid #bfbfbf}.ck-content .table table th{font-weight:700;background:hsla(0,0%,0%,5%)}.ck-content[dir=rtl] .table th{text-align:right}.ck-content[dir=ltr] .table th{text-align:left}"},function(t,e,o){var i=o(1),n=o(97);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=".ck.ck-color-grid{display:grid}:root{--ck-color-grid-tile-size:24px;--ck-color-color-grid-check-icon:#000}.ck.ck-color-grid{grid-gap:5px;padding:8px}.ck.ck-color-grid__tile{width:var(--ck-color-grid-tile-size);height:var(--ck-color-grid-tile-size);min-width:var(--ck-color-grid-tile-size);min-height:var(--ck-color-grid-tile-size);padding:0;transition:box-shadow .2s ease;border:0}.ck.ck-color-grid__tile.ck-disabled{cursor:unset;transition:unset}.ck.ck-color-grid__tile.ck-color-table__color-tile_bordered{box-shadow:0 0 0 1px var(--ck-color-base-border)}.ck.ck-color-grid__tile .ck.ck-icon{display:none;color:var(--ck-color-color-grid-check-icon)}.ck.ck-color-grid__tile.ck-on{box-shadow:inset 0 0 0 1px var(--ck-color-base-background),0 0 0 2px var(--ck-color-base-text)}.ck.ck-color-grid__tile.ck-on .ck.ck-icon{display:block}.ck.ck-color-grid__tile.ck-on,.ck.ck-color-grid__tile:focus:not(.ck-disabled),.ck.ck-color-grid__tile:hover:not(.ck-disabled){border:0}.ck.ck-color-grid__tile:focus:not(.ck-disabled),.ck.ck-color-grid__tile:hover:not(.ck-disabled){box-shadow:inset 0 0 0 1px var(--ck-color-base-background),0 0 0 2px var(--ck-color-focus-border)}.ck.ck-color-grid__label{padding:0 var(--ck-spacing-standard)}"},function(t,e,o){var i=o(1),n=o(99);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=".ck.ck-input-color{width:100%;display:flex}.ck.ck-input-color>input.ck.ck-input-text{min-width:auto;flex-grow:1}.ck.ck-input-color>input.ck.ck-input-text:active,.ck.ck-input-color>input.ck.ck-input-text:focus{z-index:var(--ck-z-default)}.ck.ck-input-color>div.ck.ck-dropdown{min-width:auto}.ck.ck-input-color>div.ck.ck-dropdown>.ck-input-color__button .ck-dropdown__arrow{display:none}.ck.ck-input-color .ck.ck-input-color__button .ck.ck-input-color__button__preview{position:relative;overflow:hidden}.ck.ck-input-color .ck.ck-input-color__button .ck.ck-input-color__button__preview>.ck.ck-input-color__button__preview__no-color-indicator{position:absolute;display:block}[dir=ltr] .ck.ck-input-color>.ck.ck-input-text{border-top-right-radius:0;border-bottom-right-radius:0}[dir=rtl] .ck.ck-input-color>.ck.ck-input-text{border-top-left-radius:0;border-bottom-left-radius:0}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-input-color__button{padding:0}[dir=ltr] .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-input-color__button{border-top-left-radius:0;border-bottom-left-radius:0;margin-left:-1px}[dir=rtl] .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-input-color__button{border-top-right-radius:0;border-bottom-right-radius:0;margin-right:-1px}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-input-color__button.ck-disabled{background:var(--ck-color-input-disabled-background)}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-input-color__button>.ck.ck-input-color__button__preview{border-radius:0}.ck-rounded-corners .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-input-color__button>.ck.ck-input-color__button__preview,.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-input-color__button>.ck.ck-input-color__button__preview.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-input-color__button>.ck.ck-input-color__button__preview{width:20px;height:20px;border:1px solid var(--ck-color-input-border)}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-input-color__button>.ck.ck-input-color__button__preview>.ck.ck-input-color__button__preview__no-color-indicator{top:-30%;left:50%;height:150%;width:8%;background:red;border-radius:2px;transform:rotate(45deg);transform-origin:50%}.ck.ck-input-color .ck.ck-input-color__remove-color{width:100%;border-bottom:1px solid var(--ck-color-input-border);padding:calc(var(--ck-spacing-standard)/2) var(--ck-spacing-standard);border-bottom-left-radius:0;border-bottom-right-radius:0}[dir=ltr] .ck.ck-input-color .ck.ck-input-color__remove-color{border-top-right-radius:0}[dir=rtl] .ck.ck-input-color .ck.ck-input-color__remove-color{border-top-left-radius:0}.ck.ck-input-color .ck.ck-input-color__remove-color .ck.ck-icon{margin-right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-input-color .ck.ck-input-color__remove-color .ck.ck-icon{margin-right:0;margin-left:var(--ck-spacing-standard)}"},function(t,e,o){var i=o(1),n=o(101);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=".ck.ck-form__row{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between}.ck.ck-form__row>:not(.ck-label){flex-grow:1}.ck.ck-form__row.ck-table-form__action-row .ck-button-cancel,.ck.ck-form__row.ck-table-form__action-row .ck-button-save{justify-content:center}.ck.ck-form__row{padding:var(--ck-spacing-standard) var(--ck-spacing-large) 0}[dir=ltr] .ck.ck-form__row>:not(.ck-label)+*{margin-left:var(--ck-spacing-large)}[dir=rtl] .ck.ck-form__row>:not(.ck-label)+*{margin-right:var(--ck-spacing-large)}.ck.ck-form__row>.ck-label{width:100%;min-width:100%}.ck.ck-form__row.ck-table-form__action-row{margin-top:var(--ck-spacing-large)}.ck.ck-form__row.ck-table-form__action-row .ck-button .ck-button__label{color:var(--ck-color-text)}"},function(t,e,o){var i=o(1),n=o(103);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=".ck.ck-form__header{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:space-between}:root{--ck-form-header-height:38px}.ck.ck-form__header{padding:var(--ck-spacing-small) var(--ck-spacing-large);height:var(--ck-form-header-height);line-height:var(--ck-form-header-height);border-bottom:1px solid var(--ck-color-base-border)}.ck.ck-form__header .ck-form__header__label{font-weight:700}"},function(t,e){t.exports=".ck.ck-form{padding:0 0 var(--ck-spacing-large)}.ck.ck-form:focus{outline:none}.ck.ck-form .ck.ck-input-text{min-width:100%;width:0}.ck.ck-form .ck.ck-dropdown{min-width:100%}.ck.ck-form .ck.ck-dropdown .ck-dropdown__button:not(:focus){border:1px solid var(--ck-color-base-border)}.ck.ck-form .ck.ck-dropdown .ck-dropdown__button .ck-button__label{width:100%}"},function(t,e){t.exports='.ck.ck-table-form .ck-form__row.ck-table-form__border-row{flex-wrap:wrap}.ck.ck-table-form .ck-form__row.ck-table-form__border-row .ck-labeled-field-view{display:flex;flex-direction:column-reverse}.ck.ck-table-form .ck-form__row.ck-table-form__border-row .ck-labeled-field-view .ck.ck-dropdown,.ck.ck-table-form .ck-form__row.ck-table-form__border-row .ck-table-form__border-style,.ck.ck-table-form .ck-form__row.ck-table-form__border-row .ck-table-form__border-width{flex-grow:0}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row{flex-wrap:wrap;align-items:center}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-labeled-field-view{display:flex;flex-direction:column-reverse;align-items:center}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-labeled-field-view .ck.ck-dropdown,.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimension-operator{flex-grow:0}.ck.ck-table-form .ck.ck-labeled-field-view{position:relative}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{position:absolute;left:50%;bottom:calc(-1*var(--ck-table-properties-error-arrow-size));transform:translate(-50%,100%);z-index:1}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status:after{content:"";position:absolute;top:calc(-1*var(--ck-table-properties-error-arrow-size));left:50%;transform:translateX(-50%)}:root{--ck-table-properties-error-arrow-size:6px;--ck-table-properties-min-error-width:150px}.ck.ck-table-form .ck-form__row.ck-table-form__border-row .ck-labeled-field-view>.ck-label{font-size:var(--ck-font-size-tiny);text-align:center}.ck.ck-table-form .ck-form__row.ck-table-form__border-row .ck-table-form__border-style{width:80px;min-width:80px}.ck.ck-table-form .ck-form__row.ck-table-form__border-row .ck-table-form__border-width{width:50px;min-width:50px}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row{padding:0}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-labeled-field-view>.ck-label{font-size:10px;text-align:center}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimensions-row__height,.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimensions-row__width{margin:0}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimension-operator{align-self:start;display:inline-block;height:var(--ck-ui-component-min-height);line-height:var(--ck-ui-component-min-height);margin:0 var(--ck-spacing-small)}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{border-radius:0}.ck-rounded-corners .ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status,.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{background:var(--ck-color-base-error);color:var(--ck-color-base-background);padding:var(--ck-spacing-small) var(--ck-spacing-medium);min-width:var(--ck-table-properties-min-error-width);text-align:center}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status:after{border-left:var(--ck-table-properties-error-arrow-size) solid transparent;border-bottom:var(--ck-table-properties-error-arrow-size) solid var(--ck-color-base-error);border-right:var(--ck-table-properties-error-arrow-size) solid transparent;border-top:0 solid transparent}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{animation:ck-table-form-labeled-view-status-appear .15s ease both}.ck.ck-table-form .ck.ck-labeled-field-view .ck-input.ck-error:not(:focus)+.ck.ck-labeled-field-view__status{display:none}@keyframes ck-table-form-labeled-view-status-appear{0%{opacity:0}to{opacity:1}}'},function(t,e,o){var i=o(1),n=o(107);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=".ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row{flex-wrap:wrap;flex-basis:0;align-content:baseline}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row .ck.ck-toolbar .ck-toolbar__items{flex-wrap:nowrap}.ck.ck-table-properties-form{width:320px}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row{padding:0}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row .ck.ck-toolbar{background:none}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row .ck.ck-toolbar .ck-toolbar__items>*{width:40px}"},function(t,e,o){var i=o(1),n=o(109);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=".ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row{flex-wrap:wrap}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar{flex-grow:0}.ck.ck-table-cell-properties-form{width:320px}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__padding-row{padding:0;width:35%}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar{background:none}"},function(t,e,o){var i=o(1),n=o(111);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=".ck.ck-block-toolbar-button{position:absolute;z-index:var(--ck-z-default)}:root{--ck-color-block-toolbar-button:var(--ck-color-text);--ck-block-toolbar-button-size:var(--ck-font-size-normal)}.ck.ck-block-toolbar-button{color:var(--ck-color-block-toolbar-button);font-size:var(--ck-block-toolbar-size)}"},function(t,e,o){var i=o(1),n=o(113);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=".ck .ck-button.ck-color-table__remove-color{display:flex;align-items:center;width:100%}label.ck.ck-color-grid__label{font-weight:unset}.ck .ck-button.ck-color-table__remove-color{padding:calc(var(--ck-spacing-standard)/2) var(--ck-spacing-standard);border-bottom-left-radius:0;border-bottom-right-radius:0}.ck .ck-button.ck-color-table__remove-color:not(:focus){border-bottom:1px solid var(--ck-color-base-border)}[dir=ltr] .ck .ck-button.ck-color-table__remove-color .ck.ck-icon{margin-right:var(--ck-spacing-standard)}[dir=rtl] .ck .ck-button.ck-color-table__remove-color .ck.ck-icon{margin-left:var(--ck-spacing-standard)}"},function(t,e,o){var i=o(1),n=o(115);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=".ck-content .text-tiny{font-size:.7em}.ck-content .text-small{font-size:.85em}.ck-content .text-big{font-size:1.4em}.ck-content .text-huge{font-size:1.8em}"},function(t,e,o){var i=o(1),n=o(117);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=".ck-content pre{padding:1em;color:#353535;background:hsla(0,0%,78%,.3);border:1px solid #c4c4c4;border-radius:2px;text-align:left;direction:ltr;tab-size:4;white-space:pre-wrap;font-style:normal;min-width:200px}.ck-content pre code{background:unset;padding:0;border-radius:0}.ck.ck-editor__editable pre{position:relative}.ck.ck-editor__editable pre[data-language]:after{content:attr(data-language);position:absolute}:root{--ck-color-code-block-label-background:#757575}.ck.ck-editor__editable pre[data-language]:after{top:-1px;right:10px;background:var(--ck-color-code-block-label-background);font-size:10px;font-family:var(--ck-font-face);line-height:16px;padding:var(--ck-spacing-tiny) var(--ck-spacing-medium);color:#fff;white-space:nowrap}.ck.ck-code-block-dropdown .ck-dropdown__panel{max-height:250px;overflow-y:auto;overflow-x:hidden}"},function(t,e,o){var i=o(1),n=o(119);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=":root{--ck-mention-list-max-height:300px}.ck.ck-mentions{max-height:var(--ck-mention-list-max-height);overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain}.ck.ck-mentions>.ck-list__item{overflow:hidden;flex-shrink:0}"},function(t,e,o){var i=o(1),n=o(121);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(n,r);t.exports=n.locals||{}},function(t,e){t.exports=":root{--ck-color-mention-background:rgba(153,0,48,0.1);--ck-color-mention-text:#990030}.ck-content .mention{background:var(--ck-color-mention-background);color:var(--ck-color-mention-text)}"},function(t,e,o){"use strict";o.r(e),o.d(e,"default",(function(){return C_}));var i=o(3),n=i.a.Symbol,r=Object.prototype,s=r.hasOwnProperty,a=r.toString,l=n?n.toStringTag:void 0;var c=function(t){var e=s.call(t,l),o=t[l];try{t[l]=void 0;var i=!0}catch(t){}var n=a.call(t);return i&&(e?t[l]=o:delete t[l]),n},d=Object.prototype.toString;var h=function(t){return d.call(t)},u=n?n.toStringTag:void 0;var g=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":u&&u in Object(t)?c(t):h(t)};var m=function(t,e){return function(o){return t(e(o))}},f=m(Object.getPrototypeOf,Object);var p=function(t){return null!=t&&"object"==typeof t},b=Function.prototype,w=Object.prototype,k=b.toString,_=w.hasOwnProperty,v=k.call(Object);var y=function(t){if(!p(t)||"[object Object]"!=g(t))return!1;var e=f(t);if(null===e)return!0;var o=_.call(e,"constructor")&&e.constructor;return"function"==typeof o&&o instanceof o&&k.call(o)==v};var x=function(){this.__data__=[],this.size=0};var C=function(t,e){return t===e||t!=t&&e!=e};var A=function(t,e){for(var o=t.length;o--;)if(C(t[o][0],e))return o;return-1},T=Array.prototype.splice;var P=function(t){var e=this.__data__,o=A(e,t);return!(o<0)&&(o==e.length-1?e.pop():T.call(e,o,1),--this.size,!0)};var S=function(t){var e=this.__data__,o=A(e,t);return o<0?void 0:e[o][1]};var E=function(t){return A(this.__data__,t)>-1};var R=function(t,e){var o=this.__data__,i=A(o,t);return i<0?(++this.size,o.push([t,e])):o[i][1]=e,this};function I(t){var e=-1,o=null==t?0:t.length;for(this.clear();++e-1&&t%1==0&&t-1&&t%1==0&&t<=9007199254740991},jt={};jt["[object Float32Array]"]=jt["[object Float64Array]"]=jt["[object Int8Array]"]=jt["[object Int16Array]"]=jt["[object Int32Array]"]=jt["[object Uint8Array]"]=jt["[object Uint8ClampedArray]"]=jt["[object Uint16Array]"]=jt["[object Uint32Array]"]=!0,jt["[object Arguments]"]=jt["[object Array]"]=jt["[object ArrayBuffer]"]=jt["[object Boolean]"]=jt["[object DataView]"]=jt["[object Date]"]=jt["[object Error]"]=jt["[object Function]"]=jt["[object Map]"]=jt["[object Number]"]=jt["[object Object]"]=jt["[object RegExp]"]=jt["[object Set]"]=jt["[object String]"]=jt["[object WeakMap]"]=!1;var Ht=function(t){return p(t)&&Lt(t.length)&&!!jt[g(t)]};var Wt=function(t){return function(e){return t(e)}},qt=o(5),Ut=qt.a&&qt.a.isTypedArray,$t=Ut?Wt(Ut):Ht,Gt=Object.prototype.hasOwnProperty;var Kt=function(t,e){var o=Bt(t),i=!o&&Nt(t),n=!o&&!i&&Object(zt.a)(t),r=!o&&!i&&!n&&$t(t),s=o||i||n||r,a=s?Rt(t.length,String):[],l=a.length;for(var c in t)!e&&!Gt.call(t,c)||s&&("length"==c||n&&("offset"==c||"parent"==c)||r&&("buffer"==c||"byteLength"==c||"byteOffset"==c)||Dt(c,l))||a.push(c);return a},Jt=Object.prototype;var Yt=function(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||Jt)},Qt=m(Object.keys,Object),Xt=Object.prototype.hasOwnProperty;var Zt=function(t){if(!Yt(t))return Qt(t);var e=[];for(var o in Object(t))Xt.call(t,o)&&"constructor"!=o&&e.push(o);return e};var te=function(t){return null!=t&&Lt(t.length)&&!D(t)};var ee=function(t){return te(t)?Kt(t):Zt(t)};var oe=function(t,e){return t&&Et(e,ee(e),t)};var ie=function(t){var e=[];if(null!=t)for(var o in Object(t))e.push(o);return e},ne=Object.prototype.hasOwnProperty;var re=function(t){if(!z(t))return ie(t);var e=Yt(t),o=[];for(var i in t)("constructor"!=i||!e&&ne.call(t,i))&&o.push(i);return o};var se=function(t){return te(t)?Kt(t,!0):re(t)};var ae=function(t,e){return t&&Et(e,se(e),t)},le=o(8);var ce=function(t,e){var o=-1,i=t.length;for(e||(e=Array(i));++o{this._setToTarget(t,i,e[i],o)})}}function ro(t){return oo(t,so)}function so(t){return io(t)?t:void 0}var ao=function(){return function t(){t.called=!0}};class lo{constructor(t,e){this.source=t,this.name=e,this.path=[],this.stop=ao(),this.off=ao()}}const co=new Array(256).fill().map((t,e)=>("0"+e.toString(16)).slice(-2));function ho(){const t=4294967296*Math.random()>>>0,e=4294967296*Math.random()>>>0,o=4294967296*Math.random()>>>0,i=4294967296*Math.random()>>>0;return"e"+co[t>>0&255]+co[t>>8&255]+co[t>>16&255]+co[t>>24&255]+co[e>>0&255]+co[e>>8&255]+co[e>>16&255]+co[e>>24&255]+co[o>>0&255]+co[o>>8&255]+co[o>>16&255]+co[o>>24&255]+co[i>>0&255]+co[i>>8&255]+co[i>>16&255]+co[i>>24&255]}var uo={get(t){return"number"!=typeof t?this[t]||this.normal:t},highest:1e5,high:1e3,normal:0,low:-1e3,lowest:-1e5},go=(o(6),o(0));const mo=Symbol("listeningTo"),fo=Symbol("emitterId");var po={on(t,e,o={}){this.listenTo(this,t,e,o)},once(t,e,o){let i=!1;this.listenTo(this,t,(function(t,...o){i||(i=!0,t.off(),e.call(this,t,...o))}),o)},off(t,e){this.stopListening(this,t,e)},listenTo(t,e,o,i={}){let n,r;this[mo]||(this[mo]={});const s=this[mo];wo(t)||bo(t);const a=wo(t);(n=s[a])||(n=s[a]={emitter:t,callbacks:{}}),(r=n.callbacks[e])||(r=n.callbacks[e]=[]),r.push(o),function(t,e){const o=ko(t);if(o[e])return;let i=e,n=null;const r=[];for(;""!==i&&!o[i];)o[i]={callbacks:[],childEvents:[]},r.push(o[i]),n&&o[i].childEvents.push(n),n=i,i=i.substr(0,i.lastIndexOf(":"));if(""!==i){for(const t of r)t.callbacks=o[i].callbacks.slice();o[i].childEvents.push(n)}}(t,e);const l=_o(t,e),c=uo.get(i.priority),d={callback:o,priority:c};for(const t of l){let e=!1;for(let o=0;o-1?t(e,o.substr(0,o.lastIndexOf(":"))):null;return i.callbacks}(this,i);if(o.path.push(this),n){const t=[o,...e];n=Array.from(n);for(let e=0;e{this._delegations||(this._delegations=new Map),t.forEach(t=>{const i=this._delegations.get(t);i?i.set(e,o):this._delegations.set(t,new Map([[e,o]]))})}}},stopDelegating(t,e){if(this._delegations)if(t)if(e){const o=this._delegations.get(t);o&&o.delete(e)}else this._delegations.delete(t);else this._delegations.clear()}};function bo(t,e){t[fo]||(t[fo]=e||ho())}function wo(t){return t[fo]}function ko(t){return t._events||Object.defineProperty(t,"_events",{value:{}}),t._events}function _o(t,e){const o=ko(t)[e];if(!o)return[];let i=[o.callbacks];for(let e=0;e{Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e)).forEach(o=>{if(o in t.prototype)return;const i=Object.getOwnPropertyDescriptor(e,o);i.enumerable=!1,Object.defineProperty(t.prototype,o,i)})})}class Ao{constructor(t={},e={}){const o=xo(t);if(o||(e=t),this._items=[],this._itemMap=new Map,this._idProperty=e.idProperty||"id",this._bindToExternalToInternalMap=new WeakMap,this._bindToInternalToExternalMap=new WeakMap,this._skippedIndexesFromExternal=[],o)for(const e of t)this._items.push(e),this._itemMap.set(this._getItemIdBeforeAdding(e),e)}get length(){return this._items.length}get first(){return this._items[0]||null}get last(){return this._items[this.length-1]||null}add(t,e){const o=this._getItemIdBeforeAdding(t);if(void 0===e)e=this._items.length;else if(e>this._items.length||e<0)throw new go.b("collection-add-item-invalid-index",this);return this._items.splice(e,0,t),this._itemMap.set(o,t),this.fire("add",t,e),this}get(t){let e;if("string"==typeof t)e=this._itemMap.get(t);else{if("number"!=typeof t)throw new go.b("collection-get-invalid-arg: Index or id must be given.",this);e=this._items[t]}return e||null}has(t){if("string"==typeof t)return this._itemMap.has(t);{const e=t[this._idProperty];return this._itemMap.has(e)}}getIndex(t){let e;return e="string"==typeof t?this._itemMap.get(t):t,this._items.indexOf(e)}remove(t){let e,o,i,n=!1;const r=this._idProperty;if("string"==typeof t?(o=t,i=this._itemMap.get(o),n=!i,i&&(e=this._items.indexOf(i))):"number"==typeof t?(e=t,i=this._items[e],n=!i,i&&(o=i[r])):(i=t,o=i[r],e=this._items.indexOf(i),n=-1==e||!this._itemMap.get(o)),n)throw new go.b("collection-remove-404: Item not found.",this);this._items.splice(e,1),this._itemMap.delete(o);const s=this._bindToInternalToExternalMap.get(i);return this._bindToInternalToExternalMap.delete(i),this._bindToExternalToInternalMap.delete(s),this.fire("remove",i,e),i}map(t,e){return this._items.map(t,e)}find(t,e){return this._items.find(t,e)}filter(t,e){return this._items.filter(t,e)}clear(){for(this._bindToCollection&&(this.stopListening(this._bindToCollection),this._bindToCollection=null);this.length;)this.remove(0)}bindTo(t){if(this._bindToCollection)throw new go.b("collection-bind-to-rebind: The collection cannot be bound more than once.",this);return this._bindToCollection=t,{as:t=>{this._setUpBindToBinding(e=>new t(e))},using:t=>{"function"==typeof t?this._setUpBindToBinding(e=>t(e)):this._setUpBindToBinding(e=>e[t])}}}_setUpBindToBinding(t){const e=this._bindToCollection,o=(o,i,n)=>{const r=e._bindToCollection==this,s=e._bindToInternalToExternalMap.get(i);if(r&&s)this._bindToExternalToInternalMap.set(i,s),this._bindToInternalToExternalMap.set(s,i);else{const o=t(i);if(!o)return void this._skippedIndexesFromExternal.push(n);let r=n;for(const t of this._skippedIndexesFromExternal)n>t&&r--;for(const t of e._skippedIndexesFromExternal)r>=t&&r++;this._bindToExternalToInternalMap.set(i,o),this._bindToInternalToExternalMap.set(o,i),this.add(o,r);for(let t=0;t{const i=this._bindToExternalToInternalMap.get(e);i&&this.remove(i),this._skippedIndexesFromExternal=this._skippedIndexesFromExternal.reduce((t,e)=>(oe&&t.push(e),t),[])})}_getItemIdBeforeAdding(t){const e=this._idProperty;let o;if(e in t){if(o=t[e],"string"!=typeof o)throw new go.b("collection-add-invalid-id",this);if(this.get(o))throw new go.b("collection-add-item-already-exists",this)}else t[e]=o=ho();return o}[Symbol.iterator](){return this._items[Symbol.iterator]()}}Co(Ao,po);class To{constructor(t,e=[],o=[]){this._context=t,this._plugins=new Map,this._availablePlugins=new Map;for(const t of e)t.pluginName&&this._availablePlugins.set(t.pluginName,t);this._contextPlugins=new Map;for(const[t,e]of o)this._contextPlugins.set(t,e),this._contextPlugins.set(e,t),t.pluginName&&this._availablePlugins.set(t.pluginName,t)}*[Symbol.iterator](){for(const t of this._plugins)"function"==typeof t[0]&&(yield t)}get(t){const e=this._plugins.get(t);if(!e){const e="plugincollection-plugin-not-loaded: The requested plugin is not loaded.";let o=t;throw"function"==typeof t&&(o=t.pluginName||t.name),new go.b(e,this._context,{plugin:o})}return e}has(t){return this._plugins.has(t)}init(t,e=[]){const o=this,i=this._context,n=new Set,r=[],s=u(t),a=u(e),l=function(t){const e=[];for(const o of t)h(o)||e.push(o);return e.length?e:null}(t);if(l){const t="plugincollection-plugin-not-found: Some plugins are not available and could not be loaded.";return console.error(Object(go.a)(t),{plugins:l}),Promise.reject(new go.b(t,i,{plugins:l}))}return Promise.all(s.map(c)).then(()=>d(r,"init")).then(()=>d(r,"afterInit")).then(()=>r);function c(t){if(!a.includes(t)&&!o._plugins.has(t)&&!n.has(t))return function(t){return new Promise(s=>{n.add(t),t.requires&&t.requires.forEach(o=>{const n=h(o);if(t.isContextPlugin&&!n.isContextPlugin)throw new go.b("plugincollection-context-required: Context plugin can not require plugin which is not a context plugin",null,{plugin:n.name,requiredBy:t.name});if(e.includes(n))throw new go.b("plugincollection-required: Cannot load a plugin because one of its dependencies is listed inthe `removePlugins` option.",i,{plugin:n.name,requiredBy:t.name});c(n)});const a=o._contextPlugins.get(t)||new t(i);o._add(t,a),r.push(a),s()})}(t).catch(e=>{throw console.error(Object(go.a)("plugincollection-load: It was not possible to load the plugin."),{plugin:t}),e})}function d(t,e){return t.reduce((t,i)=>i[e]?o._contextPlugins.has(i)?t:t.then(i[e].bind(i)):t,Promise.resolve())}function h(t){return"function"==typeof t?t:o._availablePlugins.get(t)}function u(t){return t.map(t=>h(t)).filter(t=>!!t)}}destroy(){const t=[];for(const[,e]of this)"function"!=typeof e.destroy||this._contextPlugins.has(e)||t.push(e.destroy());return Promise.all(t)}_add(t,e){this._plugins.set(t,e);const o=t.pluginName;if(o){if(this._plugins.has(o))throw new go.b("plugincollection-plugin-name-conflict: Two plugins with the same name were loaded.",null,{pluginName:o,plugin1:this._plugins.get(o).constructor,plugin2:t});this._plugins.set(o,e)}}}function Po(t,e,o=1){if("number"!=typeof o)throw new go.b("translation-service-quantity-not-a-number: Expecting `quantity` to be a number.",null,{quantity:o});const i=Object.keys(window.CKEDITOR_TRANSLATIONS).length;1===i&&(t=Object.keys(window.CKEDITOR_TRANSLATIONS)[0]);const n=e.id||e.string;if(0===i||!function(t,e){return!!window.CKEDITOR_TRANSLATIONS[t]&&!!window.CKEDITOR_TRANSLATIONS[t].dictionary[e]}(t,n))return 1!==o?e.plural:e.string;const r=window.CKEDITOR_TRANSLATIONS[t].dictionary,s=window.CKEDITOR_TRANSLATIONS[t].getPluralForm||(t=>1===t?0:1);if("string"==typeof r[n])return r[n];const a=Number(s(o));return r[n][a]}Co(To,po),window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={});const So=["ar","fa","he","ku","ug"];class Eo{constructor(t={}){this.uiLanguage=t.uiLanguage||"en",this.contentLanguage=t.contentLanguage||this.uiLanguage,this.uiLanguageDirection=Ro(this.uiLanguage),this.contentLanguageDirection=Ro(this.contentLanguage),this.t=(t,e)=>this._t(t,e)}get language(){return console.warn("locale-deprecated-language-property: The Locale#language property has been deprecated and will be removed in the near future. Please use #uiLanguage and #contentLanguage properties instead."),this.uiLanguage}_t(t,e=[]){Array.isArray(e)||(e=[e]),"string"==typeof t&&(t={string:t});const o=!!t.plural?e[0]:1;return function(t,e){return t.replace(/%(\d+)/g,(t,o)=>ot.destroy())).then(()=>this.plugins.destroy())}_addEditor(t,e){if(this._contextOwner)throw new go.b("context-addEditor-private-context: Cannot add multiple editors to the context which is created by the editor.");this.editors.add(t),e&&(this._contextOwner=t)}_removeEditor(t){return this.editors.has(t)&&this.editors.remove(t),this._contextOwner===t?this.destroy():Promise.resolve()}_getEditorConfig(){const t={};for(const e of this.config.names())["plugins","removePlugins","extraPlugins"].includes(e)||(t[e]=this.config.get(e));return t}static create(t){return new Promise(e=>{const o=new this(t);e(o.initPlugins().then(()=>o))})}}function Vo(t,e){const o=Math.min(t.length,e.length);for(let i=0;it.data.length)throw new go.b("view-textproxy-wrong-offsetintext: Given offsetInText value is incorrect.",this);if(o<0||e+o>t.data.length)throw new go.b("view-textproxy-wrong-length: Given length value is incorrect.",this);this.data=t.data.substring(e,e+o),this.offsetInText=e}get offsetSize(){return this.data.length}get isPartial(){return this.data.length!==this.textNode.data.length}get parent(){return this.textNode.parent}get root(){return this.textNode.root}get document(){return this.textNode.document}is(t){return"textProxy"===t||"view:textProxy"===t}getAncestors(t={includeSelf:!1,parentFirst:!1}){const e=[];let o=t.includeSelf?this.textNode:this.parent;for(;null!==o;)e[t.parentFirst?"push":"unshift"](o),o=o.parent;return e}}function zo(t){return xo(t)?new Map(t):function(t){const e=new Map;for(const o in t)e.set(o,t[o]);return e}(t)}class Fo{constructor(...t){this._patterns=[],this.add(...t)}add(...t){for(let e of t)("string"==typeof e||e instanceof RegExp)&&(e={name:e}),e.classes&&("string"==typeof e.classes||e.classes instanceof RegExp)&&(e.classes=[e.classes]),this._patterns.push(e)}match(...t){for(const e of t)for(const t of this._patterns){const o=Do(e,t);if(o)return{element:e,pattern:t,match:o}}return null}matchAll(...t){const e=[];for(const o of t)for(const t of this._patterns){const i=Do(o,t);i&&e.push({element:o,pattern:t,match:i})}return e.length>0?e:null}getElementName(){if(1!==this._patterns.length)return null;const t=this._patterns[0],e=t.name;return"function"==typeof t||!e||e instanceof RegExp?null:e}}function Do(t,e){if("function"==typeof e)return e(t);const o={};return e.name&&(o.name=function(t,e){if(t instanceof RegExp)return t.test(e);return t===e}(e.name,t.name),!o.name)||e.attributes&&(o.attributes=function(t,e){const o=[];for(const i in t){const n=t[i];if(!e.hasAttribute(i))return null;{const t=e.getAttribute(i);if(!0===n)o.push(i);else if(n instanceof RegExp){if(!n.test(t))return null;o.push(i)}else{if(t!==n)return null;o.push(i)}}}return o}(e.attributes,t),!o.attributes)?null:!(e.classes&&(o.classes=function(t,e){const o=[];for(const i of t)if(i instanceof RegExp){const t=e.getClassNames();for(const e of t)i.test(e)&&o.push(e);if(0===o.length)return null}else{if(!e.hasClass(i))return null;o.push(i)}return o}(e.classes,t),!o.classes))&&(!(e.styles&&(o.styles=function(t,e){const o=[];for(const i in t){const n=t[i];if(!e.hasStyle(i))return null;{const t=e.getStyle(i);if(n instanceof RegExp){if(!n.test(t))return null;o.push(i)}else{if(t!==n)return null;o.push(i)}}}return o}(e.styles,t),!o.styles))&&o)}var Lo=function(t){return"symbol"==typeof t||p(t)&&"[object Symbol]"==g(t)},jo=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ho=/^\w*$/;var Wo=function(t,e){if(Bt(t))return!1;var o=typeof t;return!("number"!=o&&"symbol"!=o&&"boolean"!=o&&null!=t&&!Lo(t))||(Ho.test(t)||!jo.test(t)||null!=e&&t in Object(e))};function qo(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new TypeError("Expected a function");var o=function(){var i=arguments,n=e?e.apply(this,i):i[0],r=o.cache;if(r.has(n))return r.get(n);var s=t.apply(this,i);return o.cache=r.set(n,s)||r,s};return o.cache=new(qo.Cache||_t),o}qo.Cache=_t;var Uo=qo;var $o=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Go=/\\(\\)?/g,Ko=function(t){var e=Uo(t,(function(t){return 500===o.size&&o.clear(),t})),o=e.cache;return e}((function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace($o,(function(t,o,i,n){e.push(i?n.replace(Go,"$1"):o||t)})),e}));var Jo=function(t,e){for(var o=-1,i=null==t?0:t.length,n=Array(i);++on?0:n+e),(o=o>n?n:o)<0&&(o+=n),n=e>o?0:o-e>>>0,e>>>=0;for(var r=Array(n);++i0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(vi);var Ci=function(t,e){return xi(ki(t,e,pi),t+"")};var Ai=function(t,e,o){if(!z(o))return!1;var i=typeof e;return!!("number"==i?te(o)&&Dt(e,o.length):"string"==i&&e in o)&&C(o[e],t)};var Ti=function(t){return Ci((function(e,o){var i=-1,n=o.length,r=n>1?o[n-1]:void 0,s=n>2?o[2]:void 0;for(r=t.length>3&&"function"==typeof r?(n--,r):void 0,s&&Ai(o[0],o[1],s)&&(r=n<3?void 0:r,n=1),e=Object(e);++ie===t);return Array.isArray(e)}set(t,e){if(z(t))for(const[e,o]of Object.entries(t))this._styleProcessor.toNormalizedForm(e,o,this._styles);else this._styleProcessor.toNormalizedForm(t,e,this._styles)}remove(t){const e=Vi(t);ai(this._styles,e),delete this._styles[t],this._cleanEmptyObjectsOnPath(e)}getNormalized(t){return this._styleProcessor.getNormalized(t,this._styles)}toString(){return this.isEmpty?"":this._getStylesEntries().map(t=>t.join(":")).sort().join(";")+";"}getAsString(t){if(this.isEmpty)return;if(this._styles[t]&&!z(this._styles[t]))return this._styles[t];const e=this._styleProcessor.getReducedForm(t,this._styles).find(([e])=>e===t);return Array.isArray(e)?e[1]:void 0}getStyleNames(){if(this.isEmpty)return[];return this._getStylesEntries().map(([t])=>t)}clear(){this._styles={}}_getStylesEntries(){const t=[],e=Object.keys(this._styles);for(const o of e)t.push(...this._styleProcessor.getReducedForm(o,this._styles));return t}_cleanEmptyObjectsOnPath(t){const e=t.split(".");if(!(e.length>1))return;const o=e.splice(0,e.length-1).join("."),i=li(this._styles,o);if(!i)return;!Array.from(Object.keys(i)).length&&this.remove(o)}}class Ii{constructor(){this._normalizers=new Map,this._extractors=new Map,this._reducers=new Map,this._consumables=new Map}toNormalizedForm(t,e,o){if(z(e))Oi(o,Vi(t),e);else if(this._normalizers.has(t)){const i=this._normalizers.get(t),{path:n,value:r}=i(e);Oi(o,n,r)}else Oi(o,t,e)}getNormalized(t,e){if(!t)return Pi({},e);if(void 0!==e[t])return e[t];if(this._extractors.has(t)){const o=this._extractors.get(t);if("string"==typeof o)return li(e,o);const i=o(t,e);if(i)return i}return li(e,Vi(t))}getReducedForm(t,e){const o=this.getNormalized(t,e);if(void 0===o)return[];if(this._reducers.has(t)){return this._reducers.get(t)(o)}return[[t,o]]}getRelatedStyles(t){return this._consumables.get(t)||[]}setNormalizer(t,e){this._normalizers.set(t,e)}setExtractor(t,e){this._extractors.set(t,e)}setReducer(t,e){this._reducers.set(t,e)}setStyleRelation(t,e){this._mapStyleNames(t,e);for(const o of e)this._mapStyleNames(o,[t])}_mapStyleNames(t,e){this._consumables.has(t)||this._consumables.set(t,[]),this._consumables.get(t).push(...e)}}function Vi(t){return t.replace("-",".")}function Oi(t,e,o){let i=o;z(o)&&(i=Pi({},li(t,e),o)),Ei(t,e,i)}class Mi extends Mo{constructor(t,e,o,i){if(super(t),this.name=e,this._attrs=function(t){t=zo(t);for(const[e,o]of t)null===o?t.delete(e):"string"!=typeof o&&t.set(e,String(o));return t}(o),this._children=[],i&&this._insertChild(0,i),this._classes=new Set,this._attrs.has("class")){const t=this._attrs.get("class");Ni(this._classes,t),this._attrs.delete("class")}this._styles=new Ri(this.document.stylesProcessor),this._attrs.has("style")&&(this._styles.setTo(this._attrs.get("style")),this._attrs.delete("style")),this._customProperties=new Map}get childCount(){return this._children.length}get isEmpty(){return 0===this._children.length}is(t,e=null){return e?e===this.name&&("element"===t||"view:element"===t):t===this.name||t==="view:"+this.name||"element"===t||"view:element"===t||"node"===t||"view:node"===t}getChild(t){return this._children[t]}getChildIndex(t){return this._children.indexOf(t)}getChildren(){return this._children[Symbol.iterator]()}*getAttributeKeys(){this._classes.size>0&&(yield"class"),this._styles.isEmpty||(yield"style"),yield*this._attrs.keys()}*getAttributes(){yield*this._attrs.entries(),this._classes.size>0&&(yield["class",this.getAttribute("class")]),this._styles.isEmpty||(yield["style",this.getAttribute("style")])}getAttribute(t){if("class"==t)return this._classes.size>0?[...this._classes].join(" "):void 0;if("style"==t){const t=this._styles.toString();return""==t?void 0:t}return this._attrs.get(t)}hasAttribute(t){return"class"==t?this._classes.size>0:"style"==t?!this._styles.isEmpty:this._attrs.has(t)}isSimilar(t){if(!(t instanceof Mi))return!1;if(this===t)return!0;if(this.name!=t.name)return!1;if(this._attrs.size!==t._attrs.size||this._classes.size!==t._classes.size||this._styles.size!==t._styles.size)return!1;for(const[e,o]of this._attrs)if(!t._attrs.has(e)||t._attrs.get(e)!==o)return!1;for(const e of this._classes)if(!t._classes.has(e))return!1;for(const e of this._styles.getStyleNames())if(!t._styles.has(e)||t._styles.getAsString(e)!==this._styles.getAsString(e))return!1;return!0}hasClass(...t){for(const e of t)if(!this._classes.has(e))return!1;return!0}getClassNames(){return this._classes.keys()}getStyle(t){return this._styles.getAsString(t)}getNormalizedStyle(t){return this._styles.getNormalized(t)}getStyleNames(){return this._styles.getStyleNames()}hasStyle(...t){for(const e of t)if(!this._styles.has(e))return!1;return!0}findAncestor(...t){const e=new Fo(...t);let o=this.parent;for(;o;){if(e.match(o))return o;o=o.parent}return null}getCustomProperty(t){return this._customProperties.get(t)}*getCustomProperties(){yield*this._customProperties.entries()}getIdentity(){const t=Array.from(this._classes).sort().join(","),e=this._styles.toString(),o=Array.from(this._attrs).map(t=>`${t[0]}="${t[1]}"`).sort().join(" ");return this.name+(""==t?"":` class="${t}"`)+(e?` style="${e}"`:"")+(""==o?"":" "+o)}_clone(t=!1){const e=[];if(t)for(const o of this.getChildren())e.push(o._clone(t));const o=new this.constructor(this.document,this.name,this._attrs,e);return o._classes=new Set(this._classes),o._styles.set(this._styles.getNormalized()),o._customProperties=new Map(this._customProperties),o.getFillerOffset=this.getFillerOffset,o}_appendChild(t){return this._insertChild(this.childCount,t)}_insertChild(t,e){this._fireChange("children",this);let o=0;const i=function(t,e){if("string"==typeof e)return[new No(t,e)];xo(e)||(e=[e]);return Array.from(e).map(e=>"string"==typeof e?new No(t,e):e instanceof Bo?new No(t,e.data):e)}(this.document,e);for(const e of i)null!==e.parent&&e._remove(),e.parent=this,e.document=this.document,this._children.splice(t,0,e),t++,o++;return o}_removeChildren(t,e=1){this._fireChange("children",this);for(let o=t;o0&&(this._classes.clear(),!0):"style"==t?!this._styles.isEmpty&&(this._styles.clear(),!0):this._attrs.delete(t)}_addClass(t){this._fireChange("attributes",this),(t=Array.isArray(t)?t:[t]).forEach(t=>this._classes.add(t))}_removeClass(t){this._fireChange("attributes",this),(t=Array.isArray(t)?t:[t]).forEach(t=>this._classes.delete(t))}_setStyle(t,e){this._fireChange("attributes",this),this._styles.set(t,e)}_removeStyle(t){this._fireChange("attributes",this),(t=Array.isArray(t)?t:[t]).forEach(t=>this._styles.remove(t))}_setCustomProperty(t,e){this._customProperties.set(t,e)}_removeCustomProperty(t){return this._customProperties.delete(t)}}function Ni(t,e){const o=e.split(/\s+/);t.clear(),o.forEach(e=>t.add(e))}class Bi extends Mi{constructor(t,e,o,i){super(t,e,o,i),this.getFillerOffset=zi}is(t,e=null){return e?e===this.name&&("containerElement"===t||"view:containerElement"===t||"element"===t||"view:element"===t):"containerElement"===t||"view:containerElement"===t||t===this.name||t==="view:"+this.name||"element"===t||"view:element"===t||"node"===t||"view:node"===t}}function zi(){const t=[...this.getChildren()],e=t[this.childCount-1];if(e&&e.is("element","br"))return this.childCount;for(const e of t)if(!e.is("uiElement"))return null;return this.childCount}var Fi=Ti((function(t,e){Et(e,se(e),t)}));const Di=Symbol("observableProperties"),Li=Symbol("boundObservables"),ji=Symbol("boundProperties"),Hi={set(t,e){if(z(t))return void Object.keys(t).forEach(e=>{this.set(e,t[e])},this);qi(this);const o=this[Di];if(t in this&&!o.has(t))throw new go.b("observable-set-cannot-override: Cannot override an existing property.",this);Object.defineProperty(this,t,{enumerable:!0,configurable:!0,get:()=>o.get(t),set(e){const i=o.get(t);let n=this.fire("set:"+t,t,e,i);void 0===n&&(n=e),i===n&&o.has(t)||(o.set(t,n),this.fire("change:"+t,t,n,i))}}),this[t]=e},bind(...t){if(!t.length||!Gi(t))throw new go.b("observable-bind-wrong-properties: All properties must be strings.",this);if(new Set(t).size!==t.length)throw new go.b("observable-bind-duplicate-properties: Properties must be unique.",this);qi(this);const e=this[ji];t.forEach(t=>{if(e.has(t))throw new go.b("observable-bind-rebind: Cannot bind the same property more than once.",this)});const o=new Map;return t.forEach(t=>{const i={property:t,to:[]};e.set(t,i),o.set(t,i)}),{to:Ui,toMany:$i,_observable:this,_bindProperties:t,_to:[],_bindings:o}},unbind(...t){if(!this[Di])return;const e=this[ji],o=this[Li];if(t.length){if(!Gi(t))throw new go.b("observable-unbind-wrong-properties: Properties must be strings.",this);t.forEach(t=>{const i=e.get(t);if(!i)return;let n,r,s,a;i.to.forEach(t=>{n=t[0],r=t[1],s=o.get(n),a=s[r],a.delete(i),a.size||delete s[r],Object.keys(s).length||(o.delete(n),this.stopListening(n,"change"))}),e.delete(t)})}else o.forEach((t,e)=>{this.stopListening(e,"change")}),o.clear(),e.clear()},decorate(t){const e=this[t];if(!e)throw new go.b("observablemixin-cannot-decorate-undefined: Cannot decorate an undefined method.",this,{object:this,methodName:t});this.on(t,(t,o)=>{t.return=e.apply(this,o)}),this[t]=function(...e){return this.fire(t,e)}}};Fi(Hi,po);var Wi=Hi;function qi(t){t[Di]||(Object.defineProperty(t,Di,{value:new Map}),Object.defineProperty(t,Li,{value:new Map}),Object.defineProperty(t,ji,{value:new Map}))}function Ui(...t){const e=function(...t){if(!t.length)throw new go.b("observable-bind-to-parse-error: Invalid argument syntax in `to()`.",null);const e={to:[]};let o;"function"==typeof t[t.length-1]&&(e.callback=t.pop());return t.forEach(t=>{if("string"==typeof t)o.properties.push(t);else{if("object"!=typeof t)throw new go.b("observable-bind-to-parse-error: Invalid argument syntax in `to()`.",null);o={observable:t,properties:[]},e.to.push(o)}}),e}(...t),o=Array.from(this._bindings.keys()),i=o.length;if(!e.callback&&e.to.length>1)throw new go.b("observable-bind-to-no-callback: Binding multiple observables only possible with callback.",this);if(i>1&&e.callback)throw new go.b("observable-bind-to-extra-callback: Cannot bind multiple properties and use a callback in one binding.",this);var n;e.to.forEach(t=>{if(t.properties.length&&t.properties.length!==i)throw new go.b("observable-bind-to-properties-length: The number of properties must match.",this);t.properties.length||(t.properties=this._bindProperties)}),this._to=e.to,e.callback&&(this._bindings.get(o[0]).callback=e.callback),n=this._observable,this._to.forEach(t=>{const e=n[Li];let o;e.get(t.observable)||n.listenTo(t.observable,"change",(i,r)=>{o=e.get(t.observable)[r],o&&o.forEach(t=>{Ki(n,t.property)})})}),function(t){let e;t._bindings.forEach((o,i)=>{t._to.forEach(n=>{e=n.properties[o.callback?0:t._bindProperties.indexOf(i)],o.to.push([n.observable,e]),function(t,e,o,i){const n=t[Li],r=n.get(o),s=r||{};s[i]||(s[i]=new Set);s[i].add(e),r||n.set(o,s)}(t._observable,o,n.observable,e)})})}(this),this._bindProperties.forEach(t=>{Ki(this._observable,t)})}function $i(t,e,o){if(this._bindings.size>1)throw new go.b("observable-bind-to-many-not-one-binding: Cannot bind multiple properties with toMany().",this);this.to(...function(t,e){const o=t.map(t=>[t,e]);return Array.prototype.concat.apply([],o)}(t,e),o)}function Gi(t){return t.every(t=>"string"==typeof t)}function Ki(t,e){const o=t[ji].get(e);let i;o.callback?i=o.callback.apply(t,o.to.map(t=>t[0][t[1]])):(i=o.to[0],i=i[0][i[1]]),t.hasOwnProperty(e)?t[e]=i:t.set(e,i)}class Ji extends Bi{constructor(t,e,o,i){super(t,e,o,i),this.set("isReadOnly",!1),this.set("isFocused",!1),this.bind("isReadOnly").to(t),this.bind("isFocused").to(t,"isFocused",e=>e&&t.selection.editableElement==this),this.listenTo(t.selection,"change",()=>{this.isFocused=t.isFocused&&t.selection.editableElement==this})}is(t,e=null){return e?e===this.name&&("editableElement"===t||"view:editableElement"===t||"containerElement"===t||"view:containerElement"===t||"element"===t||"view:element"===t):"editableElement"===t||"view:editableElement"===t||"containerElement"===t||"view:containerElement"===t||t===this.name||t==="view:"+this.name||"element"===t||"view:element"===t||"node"===t||"view:node"===t}destroy(){this.stopListening()}}Co(Ji,Wi);const Yi=Symbol("rootName");class Qi extends Ji{constructor(t,e){super(t,e),this.rootName="main"}is(t,e=null){return e?e===this.name&&("rootElement"===t||"view:rootElement"===t||"editableElement"===t||"view:editableElement"===t||"containerElement"===t||"view:containerElement"===t||"element"===t||"view:element"===t):"rootElement"===t||"view:rootElement"===t||"editableElement"===t||"view:editableElement"===t||"containerElement"===t||"view:containerElement"===t||t===this.name||t==="view:"+this.name||"element"===t||"view:element"===t||"node"===t||"view:node"===t}get rootName(){return this.getCustomProperty(Yi)}set rootName(t){this._setCustomProperty(Yi,t)}set _name(t){this.name=t}}class Xi{constructor(t={}){if(!t.boundaries&&!t.startPosition)throw new go.b("view-tree-walker-no-start-position: Neither boundaries nor starting position have been defined.",null);if(t.direction&&"forward"!=t.direction&&"backward"!=t.direction)throw new go.b("view-tree-walker-unknown-direction: Only `backward` and `forward` direction allowed.",t.startPosition,{direction:t.direction});this.boundaries=t.boundaries||null,t.startPosition?this.position=Zi._createAt(t.startPosition):this.position=Zi._createAt(t.boundaries["backward"==t.direction?"end":"start"]),this.direction=t.direction||"forward",this.singleCharacters=!!t.singleCharacters,this.shallow=!!t.shallow,this.ignoreElementEnd=!!t.ignoreElementEnd,this._boundaryStartParent=this.boundaries?this.boundaries.start.parent:null,this._boundaryEndParent=this.boundaries?this.boundaries.end.parent:null}[Symbol.iterator](){return this}skip(t){let e,o,i;do{i=this.position,({done:e,value:o}=this.next())}while(!e&&t(o));e||(this.position=i)}next(){return"forward"==this.direction?this._next():this._previous()}_next(){let t=this.position.clone();const e=this.position,o=t.parent;if(null===o.parent&&t.offset===o.childCount)return{done:!0};if(o===this._boundaryEndParent&&t.offset==this.boundaries.end.offset)return{done:!0};let i;if(o instanceof No){if(t.isAtEnd)return this.position=Zi._createAfter(o),this._next();i=o.data[t.offset]}else i=o.getChild(t.offset);if(i instanceof Mi)return this.shallow?t.offset++:t=new Zi(i,0),this.position=t,this._formatReturnValue("elementStart",i,e,t,1);if(i instanceof No){if(this.singleCharacters)return t=new Zi(i,0),this.position=t,this._next();{let o,n=i.data.length;return i==this._boundaryEndParent?(n=this.boundaries.end.offset,o=new Bo(i,0,n),t=Zi._createAfter(o)):(o=new Bo(i,0,i.data.length),t.offset++),this.position=t,this._formatReturnValue("text",o,e,t,n)}}if("string"==typeof i){let i;if(this.singleCharacters)i=1;else{i=(o===this._boundaryEndParent?this.boundaries.end.offset:o.data.length)-t.offset}const n=new Bo(o,t.offset,i);return t.offset+=i,this.position=t,this._formatReturnValue("text",n,e,t,i)}return t=Zi._createAfter(o),this.position=t,this.ignoreElementEnd?this._next():this._formatReturnValue("elementEnd",o,e,t)}_previous(){let t=this.position.clone();const e=this.position,o=t.parent;if(null===o.parent&&0===t.offset)return{done:!0};if(o==this._boundaryStartParent&&t.offset==this.boundaries.start.offset)return{done:!0};let i;if(o instanceof No){if(t.isAtStart)return this.position=Zi._createBefore(o),this._previous();i=o.data[t.offset-1]}else i=o.getChild(t.offset-1);if(i instanceof Mi)return this.shallow?(t.offset--,this.position=t,this._formatReturnValue("elementStart",i,e,t,1)):(t=new Zi(i,i.childCount),this.position=t,this.ignoreElementEnd?this._previous():this._formatReturnValue("elementEnd",i,e,t));if(i instanceof No){if(this.singleCharacters)return t=new Zi(i,i.data.length),this.position=t,this._previous();{let o,n=i.data.length;if(i==this._boundaryStartParent){const e=this.boundaries.start.offset;o=new Bo(i,e,i.data.length-e),n=o.data.length,t=Zi._createBefore(o)}else o=new Bo(i,0,i.data.length),t.offset--;return this.position=t,this._formatReturnValue("text",o,e,t,n)}}if("string"==typeof i){let i;if(this.singleCharacters)i=1;else{const e=o===this._boundaryStartParent?this.boundaries.start.offset:0;i=t.offset-e}t.offset-=i;const n=new Bo(o,t.offset,i);return this.position=t,this._formatReturnValue("text",n,e,t,i)}return t=Zi._createBefore(o),this.position=t,this._formatReturnValue("elementStart",o,e,t,1)}_formatReturnValue(t,e,o,i,n){return e instanceof Bo&&(e.offsetInText+e.data.length==e.textNode.data.length&&("forward"!=this.direction||this.boundaries&&this.boundaries.end.isEqual(this.position)?o=Zi._createAfter(e.textNode):(i=Zi._createAfter(e.textNode),this.position=i)),0===e.offsetInText&&("backward"!=this.direction||this.boundaries&&this.boundaries.start.isEqual(this.position)?o=Zi._createBefore(e.textNode):(i=Zi._createBefore(e.textNode),this.position=i))),{done:!1,value:{type:t,item:e,previousPosition:o,nextPosition:i,length:n}}}}class Zi{constructor(t,e){this.parent=t,this.offset=e}get nodeAfter(){return this.parent.is("text")?null:this.parent.getChild(this.offset)||null}get nodeBefore(){return this.parent.is("text")?null:this.parent.getChild(this.offset-1)||null}get isAtStart(){return 0===this.offset}get isAtEnd(){const t=this.parent.is("text")?this.parent.data.length:this.parent.childCount;return this.offset===t}get root(){return this.parent.root}get editableElement(){let t=this.parent;for(;!(t instanceof Ji);){if(!t.parent)return null;t=t.parent}return t}getShiftedBy(t){const e=Zi._createAt(this),o=e.offset+t;return e.offset=o<0?0:o,e}getLastMatchingPosition(t,e={}){e.startPosition=this;const o=new Xi(e);return o.skip(t),o.position}getAncestors(){return this.parent.is("documentFragment")?[this.parent]:this.parent.getAncestors({includeSelf:!0})}getCommonAncestor(t){const e=this.getAncestors(),o=t.getAncestors();let i=0;for(;e[i]==o[i]&&e[i];)i++;return 0===i?null:e[i-1]}is(t){return"position"===t||"view:position"===t}isEqual(t){return this.parent==t.parent&&this.offset==t.offset}isBefore(t){return"before"==this.compareWith(t)}isAfter(t){return"after"==this.compareWith(t)}compareWith(t){if(this.root!==t.root)return"different";if(this.isEqual(t))return"same";const e=this.parent.is("node")?this.parent.getPath():[],o=t.parent.is("node")?t.parent.getPath():[];e.push(this.offset),o.push(t.offset);const i=Vo(e,o);switch(i){case"prefix":return"before";case"extension":return"after";default:return e[i]0?new this(o,i):new this(i,o)}static _createIn(t){return this._createFromParentsAndOffsets(t,0,t,t.childCount)}static _createOn(t){const e=t.is("textProxy")?t.offsetSize:1;return this._createFromPositionAndShift(Zi._createBefore(t),e)}}function en(t){return!(!t.item.is("attributeElement")&&!t.item.is("uiElement"))}function on(t){let e=0;for(const o of t)e++;return e}class nn{constructor(t=null,e,o){this._ranges=[],this._lastRangeBackward=!1,this._isFake=!1,this._fakeSelectionLabel="",this.setTo(t,e,o)}get isFake(){return this._isFake}get fakeSelectionLabel(){return this._fakeSelectionLabel}get anchor(){if(!this._ranges.length)return null;const t=this._ranges[this._ranges.length-1];return(this._lastRangeBackward?t.end:t.start).clone()}get focus(){if(!this._ranges.length)return null;const t=this._ranges[this._ranges.length-1];return(this._lastRangeBackward?t.start:t.end).clone()}get isCollapsed(){return 1===this.rangeCount&&this._ranges[0].isCollapsed}get rangeCount(){return this._ranges.length}get isBackward(){return!this.isCollapsed&&this._lastRangeBackward}get editableElement(){return this.anchor?this.anchor.editableElement:null}*getRanges(){for(const t of this._ranges)yield t.clone()}getFirstRange(){let t=null;for(const e of this._ranges)t&&!e.start.isBefore(t.start)||(t=e);return t?t.clone():null}getLastRange(){let t=null;for(const e of this._ranges)t&&!e.end.isAfter(t.end)||(t=e);return t?t.clone():null}getFirstPosition(){const t=this.getFirstRange();return t?t.start.clone():null}getLastPosition(){const t=this.getLastRange();return t?t.end.clone():null}isEqual(t){if(this.isFake!=t.isFake)return!1;if(this.isFake&&this.fakeSelectionLabel!=t.fakeSelectionLabel)return!1;if(this.rangeCount!=t.rangeCount)return!1;if(0===this.rangeCount)return!0;if(!this.anchor.isEqual(t.anchor)||!this.focus.isEqual(t.focus))return!1;for(const e of this._ranges){let o=!1;for(const i of t._ranges)if(e.isEqual(i)){o=!0;break}if(!o)return!1}return!0}isSimilar(t){if(this.isBackward!=t.isBackward)return!1;const e=on(this.getRanges());if(e!=on(t.getRanges()))return!1;if(0==e)return!0;for(let e of this.getRanges()){e=e.getTrimmed();let o=!1;for(let i of t.getRanges())if(i=i.getTrimmed(),e.start.isEqual(i.start)&&e.end.isEqual(i.end)){o=!0;break}if(!o)return!1}return!0}getSelectedElement(){return 1!==this.rangeCount?null:this.getFirstRange().getContainedElement()}setTo(t,e,o){if(null===t)this._setRanges([]),this._setFakeOptions(e);else if(t instanceof nn||t instanceof rn)this._setRanges(t.getRanges(),t.isBackward),this._setFakeOptions({fake:t.isFake,label:t.fakeSelectionLabel});else if(t instanceof tn)this._setRanges([t],e&&e.backward),this._setFakeOptions(e);else if(t instanceof Zi)this._setRanges([new tn(t)]),this._setFakeOptions(e);else if(t instanceof Mo){const i=!!o&&!!o.backward;let n;if(void 0===e)throw new go.b("view-selection-setTo-required-second-parameter: selection.setTo requires the second parameter when the first parameter is a node.",this);n="in"==e?tn._createIn(t):"on"==e?tn._createOn(t):new tn(Zi._createAt(t,e)),this._setRanges([n],i),this._setFakeOptions(o)}else{if(!xo(t))throw new go.b("view-selection-setTo-not-selectable: Cannot set selection to given place.",this);this._setRanges(t,e&&e.backward),this._setFakeOptions(e)}this.fire("change")}setFocus(t,e){if(null===this.anchor)throw new go.b("view-selection-setFocus-no-ranges: Cannot set selection focus if there are no ranges in selection.",this);const o=Zi._createAt(t,e);if("same"==o.compareWith(this.focus))return;const i=this.anchor;this._ranges.pop(),"before"==o.compareWith(i)?this._addRange(new tn(o,i),!0):this._addRange(new tn(i,o)),this.fire("change")}is(t){return"selection"===t||"view:selection"===t}_setRanges(t,e=!1){t=Array.from(t),this._ranges=[];for(const e of t)this._addRange(e);this._lastRangeBackward=!!e}_setFakeOptions(t={}){this._isFake=!!t.fake,this._fakeSelectionLabel=t.fake&&t.label||""}_addRange(t,e=!1){if(!(t instanceof tn))throw new go.b("view-selection-add-range-not-range: Selection range set to an object that is not an instance of view.Range",this);this._pushRange(t),this._lastRangeBackward=!!e}_pushRange(t){for(const e of this._ranges)if(t.isIntersecting(e))throw new go.b("view-selection-range-intersects: Trying to add a range that intersects with another range from selection.",this,{addedRange:t,intersectingRange:e});this._ranges.push(new tn(t.start,t.end))}}Co(nn,po);class rn{constructor(t=null,e,o){this._selection=new nn,this._selection.delegate("change").to(this),this._selection.setTo(t,e,o)}get isFake(){return this._selection.isFake}get fakeSelectionLabel(){return this._selection.fakeSelectionLabel}get anchor(){return this._selection.anchor}get focus(){return this._selection.focus}get isCollapsed(){return this._selection.isCollapsed}get rangeCount(){return this._selection.rangeCount}get isBackward(){return this._selection.isBackward}get editableElement(){return this._selection.editableElement}get _ranges(){return this._selection._ranges}*getRanges(){yield*this._selection.getRanges()}getFirstRange(){return this._selection.getFirstRange()}getLastRange(){return this._selection.getLastRange()}getFirstPosition(){return this._selection.getFirstPosition()}getLastPosition(){return this._selection.getLastPosition()}getSelectedElement(){return this._selection.getSelectedElement()}isEqual(t){return this._selection.isEqual(t)}isSimilar(t){return this._selection.isSimilar(t)}is(t){return"selection"===t||"documentSelection"==t||"view:selection"==t||"view:documentSelection"==t}_setTo(t,e,o){this._selection.setTo(t,e,o)}_setFocus(t,e){this._selection.setFocus(t,e)}}Co(rn,po);class sn{constructor(t){this.selection=new rn,this.roots=new Ao({idProperty:"rootName"}),this.stylesProcessor=t,this.set("isReadOnly",!1),this.set("isFocused",!1),this.set("isComposing",!1),this._postFixers=new Set}getRoot(t="main"){return this.roots.get(t)}registerPostFixer(t){this._postFixers.add(t)}destroy(){this.roots.map(t=>t.destroy()),this.stopListening()}_callPostFixers(t){let e=!1;do{for(const o of this._postFixers)if(e=o(t),e)break}while(e)}}Co(sn,Wi);class an extends Mi{constructor(t,e,o,i){super(t,e,o,i),this.getFillerOffset=ln,this._priority=10,this._id=null,this._clonesGroup=null}get priority(){return this._priority}get id(){return this._id}getElementsWithSameId(){if(null===this.id)throw new go.b("attribute-element-get-elements-with-same-id-no-id: Cannot get elements with the same id for an attribute element without id.",this);return new Set(this._clonesGroup)}is(t,e=null){return e?e===this.name&&("attributeElement"===t||"view:attributeElement"===t||"element"===t||"view:element"===t):"attributeElement"===t||"view:attributeElement"===t||t===this.name||t==="view:"+this.name||"element"===t||"view:element"===t||"node"===t||"view:node"===t}isSimilar(t){return null!==this.id||null!==t.id?this.id===t.id:super.isSimilar(t)&&this.priority==t.priority}_clone(t){const e=super._clone(t);return e._priority=this._priority,e._id=this._id,e}}function ln(){if(cn(this))return null;let t=this.parent;for(;t&&t.is("attributeElement");){if(cn(t)>1)return null;t=t.parent}return!t||cn(t)>1?null:this.childCount}function cn(t){return Array.from(t.getChildren()).filter(t=>!t.is("uiElement")).length}an.DEFAULT_PRIORITY=10;class dn extends Mi{constructor(t,e,o,i){super(t,e,o,i),this.getFillerOffset=hn}is(t,e=null){return e?e===this.name&&("emptyElement"===t||"view:emptyElement"===t||"element"===t||"view:element"===t):"emptyElement"===t||"view:emptyElement"===t||t===this.name||t==="view:"+this.name||"element"===t||"view:element"===t||"node"===t||"view:node"===t}_insertChild(t,e){if(e&&(e instanceof Mo||Array.from(e).length>0))throw new go.b("view-emptyelement-cannot-add: Cannot add child nodes to EmptyElement instance.",[this,e])}}function hn(){return null}const un=navigator.userAgent.toLowerCase();var gn={isMac:function(t){return t.indexOf("macintosh")>-1}(un),isGecko:function(t){return!!t.match(/gecko\/\d+/)}(un),isSafari:function(t){return t.indexOf(" applewebkit/")>-1&&-1===t.indexOf("chrome")}(un),isAndroid:function(t){return t.indexOf("android")>-1}(un),features:{isRegExpUnicodePropertySupported:function(){let t=!1;try{t=0==="ć".search(new RegExp("[\\p{L}]","u"))}catch(t){}return t}()}};const mn={"⌘":"ctrl","⇧":"shift","⌥":"alt"},fn={ctrl:"⌘",shift:"⇧",alt:"⌥"},pn=function(){const t={arrowleft:37,arrowup:38,arrowright:39,arrowdown:40,backspace:8,delete:46,enter:13,space:32,esc:27,tab:9,ctrl:1114112,cmd:1114112,shift:2228224,alt:4456448};for(let e=65;e<=90;e++){const o=String.fromCharCode(e);t[o.toLowerCase()]=e}for(let e=48;e<=57;e++)t[e-48]=e;for(let e=112;e<=123;e++)t["f"+(e-111)]=e;return t}();function bn(t){let e;if("string"==typeof t){if(e=pn[t.toLowerCase()],!e)throw new go.b("keyboard-unknown-key: Unknown key name.",null,{key:t})}else e=t.keyCode+(t.altKey?pn.alt:0)+(t.ctrlKey?pn.ctrl:0)+(t.shiftKey?pn.shift:0);return e}function wn(t){return"string"==typeof t&&(t=_n(t)),t.map(t=>"string"==typeof t?bn(t):t).reduce((t,e)=>e+t,0)}function kn(t){return gn.isMac?_n(t).map(t=>fn[t.toLowerCase()]||t).reduce((t,e)=>t.slice(-1)in mn?t+e:t+"+"+e):t}function _n(t){return t.split(/\s*\+\s*/)}class vn extends Mi{constructor(t,e,o,i){super(t,e,o,i),this.getFillerOffset=xn}is(t,e=null){return e?e===this.name&&("uiElement"===t||"view:uiElement"===t||"element"===t||"view:element"===t):"uiElement"===t||"view:uiElement"===t||t===this.name||t==="view:"+this.name||"element"===t||"view:element"===t||"node"===t||"view:node"===t}_insertChild(t,e){if(e&&(e instanceof Mo||Array.from(e).length>0))throw new go.b("view-uielement-cannot-add: Cannot add child nodes to UIElement instance.",this)}render(t){return this.toDomElement(t)}toDomElement(t){const e=t.createElement(this.name);for(const t of this.getAttributeKeys())e.setAttribute(t,this.getAttribute(t));return e}}function yn(t){t.document.on("keydown",(e,o)=>function(t,e,o){if(e.keyCode==pn.arrowright){const t=e.domTarget.ownerDocument.defaultView.getSelection(),i=1==t.rangeCount&&t.getRangeAt(0).collapsed;if(i||e.shiftKey){const e=t.focusNode,n=t.focusOffset,r=o.domPositionToView(e,n);if(null===r)return;let s=!1;const a=r.getLastMatchingPosition(t=>(t.item.is("uiElement")&&(s=!0),!(!t.item.is("uiElement")&&!t.item.is("attributeElement"))));if(s){const e=o.viewPositionToDom(a);i?t.collapse(e.parent,e.offset):t.extend(e.parent,e.offset)}}}}(0,o,t.domConverter))}function xn(){return null}class Cn{constructor(t,e){this.document=t,this._children=[],e&&this._insertChild(0,e)}[Symbol.iterator](){return this._children[Symbol.iterator]()}get childCount(){return this._children.length}get isEmpty(){return 0===this.childCount}get root(){return this}get parent(){return null}is(t){return"documentFragment"===t||"view:documentFragment"===t}_appendChild(t){return this._insertChild(this.childCount,t)}getChild(t){return this._children[t]}getChildIndex(t){return this._children.indexOf(t)}getChildren(){return this._children[Symbol.iterator]()}_insertChild(t,e){this._fireChange("children",this);let o=0;const i=function(t,e){if("string"==typeof e)return[new No(t,e)];xo(e)||(e=[e]);return Array.from(e).map(e=>"string"==typeof e?new No(t,e):e instanceof Bo?new No(t,e.data):e)}(this.document,e);for(const e of i)null!==e.parent&&e._remove(),e.parent=this,this._children.splice(t,0,e),t++,o++;return o}_removeChildren(t,e=1){this._fireChange("children",this);for(let o=t;oi instanceof t))throw new go.b("view-writer-insert-invalid-node",o);i.is("text")||t(i.getChildren(),o)}})(e=xo(e)?[...e]:[e],this.document);const o=Tn(t);if(!o)throw new go.b("view-writer-invalid-position-container",this.document);const i=this._breakAttributes(t,!0),n=o._insertChild(i.offset,e);for(const t of e)this._addToClonedElementsGroup(t);const r=i.getShiftedBy(n),s=this.mergeAttributes(i);if(0===n)return new tn(s,s);{s.isEqual(i)||r.offset--;const t=this.mergeAttributes(r);return new tn(s,t)}}remove(t){const e=t instanceof tn?t:tn._createOn(t);if(On(e,this.document),e.isCollapsed)return new Cn(this.document);const{start:o,end:i}=this._breakAttributesRange(e,!0),n=o.parent,r=i.offset-o.offset,s=n._removeChildren(o.offset,r);for(const t of s)this._removeFromClonedElementsGroup(t);const a=this.mergeAttributes(o);return e.start=a,e.end=a.clone(),new Cn(this.document,s)}clear(t,e){On(t,this.document);const o=t.getWalker({direction:"backward",ignoreElementEnd:!0});for(const i of o){const o=i.item;let n;if(o.is("element")&&e.isSimilar(o))n=tn._createOn(o);else if(!i.nextPosition.isAfter(t.start)&&o.is("textProxy")){const t=o.getAncestors().find(t=>t.is("element")&&e.isSimilar(t));t&&(n=tn._createIn(t))}n&&(n.end.isAfter(t.end)&&(n.end=t.end),n.start.isBefore(t.start)&&(n.start=t.start),this.remove(n))}}move(t,e){let o;if(e.isAfter(t.end)){const i=(e=this._breakAttributes(e,!0)).parent,n=i.childCount;t=this._breakAttributesRange(t,!0),o=this.remove(t),e.offset+=i.childCount-n}else o=this.remove(t);return this.insert(e,o)}wrap(t,e){if(!(e instanceof an))throw new go.b("view-writer-wrap-invalid-attribute",this.document);if(On(t,this.document),t.isCollapsed){let i=t.start;i.parent.is("element")&&(o=i.parent,!Array.from(o.getChildren()).some(t=>!t.is("uiElement")))&&(i=i.getLastMatchingPosition(t=>t.item.is("uiElement"))),i=this._wrapPosition(i,e);const n=this.document.selection;return n.isCollapsed&&n.getFirstPosition().isEqual(t.start)&&this.setSelection(i),new tn(i)}return this._wrapRange(t,e);var o}unwrap(t,e){if(!(e instanceof an))throw new go.b("view-writer-unwrap-invalid-attribute",this.document);if(On(t,this.document),t.isCollapsed)return t;const{start:o,end:i}=this._breakAttributesRange(t,!0),n=o.parent,r=this._unwrapChildren(n,o.offset,i.offset,e),s=this.mergeAttributes(r.start);s.isEqual(r.start)||r.end.offset--;const a=this.mergeAttributes(r.end);return new tn(s,a)}rename(t,e){const o=new Bi(this.document,t,e.getAttributes());return this.insert(Zi._createAfter(e),o),this.move(tn._createIn(e),Zi._createAt(o,0)),this.remove(tn._createOn(e)),o}clearClonedElementsGroup(t){this._cloneGroups.delete(t)}createPositionAt(t,e){return Zi._createAt(t,e)}createPositionAfter(t){return Zi._createAfter(t)}createPositionBefore(t){return Zi._createBefore(t)}createRange(t,e){return new tn(t,e)}createRangeOn(t){return tn._createOn(t)}createRangeIn(t){return tn._createIn(t)}createSelection(t,e,o){return new nn(t,e,o)}_wrapChildren(t,e,o,i){let n=e;const r=[];for(;n!1,t.parent._insertChild(t.offset,o);const i=new tn(t,t.getShiftedBy(1));this.wrap(i,e);const n=new Zi(o.parent,o.index);o._remove();const r=n.nodeBefore,s=n.nodeAfter;return r instanceof No&&s instanceof No?Rn(r,s):Sn(n)}_wrapAttributeElement(t,e){if(!Mn(t,e))return!1;if(t.name!==e.name||t.priority!==e.priority)return!1;for(const o of t.getAttributeKeys())if("class"!==o&&"style"!==o&&e.hasAttribute(o)&&e.getAttribute(o)!==t.getAttribute(o))return!1;for(const o of t.getStyleNames())if(e.hasStyle(o)&&e.getStyle(o)!==t.getStyle(o))return!1;for(const o of t.getAttributeKeys())"class"!==o&&"style"!==o&&(e.hasAttribute(o)||this.setAttribute(o,t.getAttribute(o),e));for(const o of t.getStyleNames())e.hasStyle(o)||this.setStyle(o,t.getStyle(o),e);for(const o of t.getClassNames())e.hasClass(o)||this.addClass(o,e);return!0}_unwrapAttributeElement(t,e){if(!Mn(t,e))return!1;if(t.name!==e.name||t.priority!==e.priority)return!1;for(const o of t.getAttributeKeys())if("class"!==o&&"style"!==o&&(!e.hasAttribute(o)||e.getAttribute(o)!==t.getAttribute(o)))return!1;if(!e.hasClass(...t.getClassNames()))return!1;for(const o of t.getStyleNames())if(!e.hasStyle(o)||e.getStyle(o)!==t.getStyle(o))return!1;for(const o of t.getAttributeKeys())"class"!==o&&"style"!==o&&this.removeAttribute(o,e);return this.removeClass(Array.from(t.getClassNames()),e),this.removeStyle(Array.from(t.getStyleNames()),e),!0}_breakAttributesRange(t,e=!1){const o=t.start,i=t.end;if(On(t,this.document),t.isCollapsed){const o=this._breakAttributes(t.start,e);return new tn(o,o)}const n=this._breakAttributes(i,e),r=n.parent.childCount,s=this._breakAttributes(o,e);return n.offset+=n.parent.childCount-r,new tn(s,n)}_breakAttributes(t,e=!1){const o=t.offset,i=t.parent;if(t.parent.is("emptyElement"))throw new go.b("view-writer-cannot-break-empty-element",this.document);if(t.parent.is("uiElement"))throw new go.b("view-writer-cannot-break-ui-element",this.document);if(!e&&i.is("text")&&Vn(i.parent))return t.clone();if(Vn(i))return t.clone();if(i.is("text"))return this._breakAttributes(En(t),e);if(o==i.childCount){const t=new Zi(i.parent,i.index+1);return this._breakAttributes(t,e)}if(0===o){const t=new Zi(i.parent,i.index);return this._breakAttributes(t,e)}{const t=i.index+1,n=i._clone();i.parent._insertChild(t,n),this._addToClonedElementsGroup(n);const r=i.childCount-o,s=i._removeChildren(o,r);n._appendChild(s);const a=new Zi(i.parent,t);return this._breakAttributes(a,e)}}_addToClonedElementsGroup(t){if(!t.root.is("rootElement"))return;if(t.is("element"))for(const e of t.getChildren())this._addToClonedElementsGroup(e);const e=t.id;if(!e)return;let o=this._cloneGroups.get(e);o||(o=new Set,this._cloneGroups.set(e,o)),o.add(t),t._clonesGroup=o}_removeFromClonedElementsGroup(t){if(t.is("element"))for(const e of t.getChildren())this._removeFromClonedElementsGroup(e);const e=t.id;if(!e)return;const o=this._cloneGroups.get(e);o&&o.delete(t)}}function Tn(t){let e=t.parent;for(;!Vn(e);){if(!e)return;e=e.parent}return e}function Pn(t,e){return t.prioritye.priority)&&t.getIdentity()t.createTextNode(" "),zn=t=>{const e=t.createElement("br");return e.dataset.ckeFiller=!0,e},Fn=(()=>{let t="";for(let e=0;e<7;e++)t+="​";return t})();function Dn(t){return Nn(t)&&t.data.substr(0,7)===Fn}function Ln(t){return 7==t.data.length&&Dn(t)}function jn(t){return Dn(t)?t.data.slice(7):t.data}function Hn(t,e){if(e.keyCode==pn.arrowleft){const t=e.domTarget.ownerDocument.defaultView.getSelection();if(1==t.rangeCount&&t.getRangeAt(0).collapsed){const e=t.getRangeAt(0).startContainer,o=t.getRangeAt(0).startOffset;Dn(e)&&o<=7&&t.collapse(e,0)}}}function Wn(t,e,o,i=!1){o=o||function(t,e){return t===e},Array.isArray(t)||(t=Array.prototype.slice.call(t)),Array.isArray(e)||(e=Array.prototype.slice.call(e));const n=function(t,e,o){const i=qn(t,e,o);if(-1===i)return{firstIndex:-1,lastIndexOld:-1,lastIndexNew:-1};const n=Un(t,i),r=Un(e,i),s=qn(n,r,o),a=t.length-s,l=e.length-s;return{firstIndex:i,lastIndexOld:a,lastIndexNew:l}}(t,e,o);return i?function(t,e){const{firstIndex:o,lastIndexOld:i,lastIndexNew:n}=t;if(-1===o)return Array(e).fill("equal");let r=[];o>0&&(r=r.concat(Array(o).fill("equal")));n-o>0&&(r=r.concat(Array(n-o).fill("insert")));i-o>0&&(r=r.concat(Array(i-o).fill("delete")));n0&&o.push({index:i,type:"insert",values:t.slice(i,r)});n-i>0&&o.push({index:i+(r-i),type:"delete",howMany:n-i});return o}(e,n)}function qn(t,e,o){for(let i=0;i200||n>200||i+n>300)return $n.fastDiff(t,e,o,!0);let r,s;if(nc?-1:1;d[i+u]&&(d[i]=d[i+u].slice(0)),d[i]||(d[i]=[]),d[i].push(n>c?r:s);let g=Math.max(n,c),m=g-i;for(;mc;g--)h[g]=u(g);h[c]=u(c),m++}while(h[c]!==l);return d[c].slice(1)}function Gn(t,e,o){t.insertBefore(o,t.childNodes[e]||null)}function Kn(t){const e=t.parentNode;e&&e.removeChild(t)}function Jn(t){if(t){if(t.defaultView)return t instanceof t.defaultView.Document;if(t.ownerDocument&&t.ownerDocument.defaultView)return t instanceof t.ownerDocument.defaultView.Node}return!1}$n.fastDiff=Wn;class Yn{constructor(t,e){this.domDocuments=new Set,this.domConverter=t,this.markedAttributes=new Set,this.markedChildren=new Set,this.markedTexts=new Set,this.selection=e,this.isFocused=!1,this._inlineFiller=null,this._fakeSelectionContainer=null}markToSync(t,e){if("text"===t)this.domConverter.mapViewToDom(e.parent)&&this.markedTexts.add(e);else{if(!this.domConverter.mapViewToDom(e))return;if("attributes"===t)this.markedAttributes.add(e);else{if("children"!==t)throw new go.b("view-renderer-unknown-type: Unknown type passed to Renderer.markToSync.",this);this.markedChildren.add(e)}}}render(){let t;for(const t of this.markedChildren)this._updateChildrenMappings(t);this._inlineFiller&&!this._isSelectionInInlineFiller()&&this._removeInlineFiller(),this._inlineFiller?t=this._getInlineFillerPosition():this._needsInlineFillerAtSelection()&&(t=this.selection.getFirstPosition(),this.markedChildren.add(t.parent));for(const t of this.markedAttributes)this._updateAttrs(t);for(const e of this.markedChildren)this._updateChildren(e,{inlineFillerPosition:t});for(const e of this.markedTexts)!this.markedChildren.has(e.parent)&&this.domConverter.mapViewToDom(e.parent)&&this._updateText(e,{inlineFillerPosition:t});if(t){const e=this.domConverter.viewPositionToDom(t),o=e.parent.ownerDocument;Dn(e.parent)?this._inlineFiller=e.parent:this._inlineFiller=Qn(o,e.parent,e.offset)}else this._inlineFiller=null;this._updateSelection(),this._updateFocus(),this.markedTexts.clear(),this.markedAttributes.clear(),this.markedChildren.clear()}_updateChildrenMappings(t){const e=this.domConverter.mapViewToDom(t);if(!e)return;const o=this.domConverter.mapViewToDom(t).childNodes,i=Array.from(this.domConverter.viewChildrenToDom(t,e.ownerDocument,{withChildren:!1})),n=this._diffNodeLists(o,i),r=this._findReplaceActions(n,o,i);if(-1!==r.indexOf("replace")){const e={equal:0,insert:0,delete:0};for(const n of r)if("replace"===n){const n=e.equal+e.insert,r=e.equal+e.delete,s=t.getChild(n);s&&!s.is("uiElement")&&this._updateElementMappings(s,o[r]),Kn(i[n]),e.equal++}else e[n]++}}_updateElementMappings(t,e){this.domConverter.unbindDomElement(e),this.domConverter.bindElements(e,t),this.markedChildren.add(t),this.markedAttributes.add(t)}_getInlineFillerPosition(){const t=this.selection.getFirstPosition();return t.parent.is("text")?Zi._createBefore(this.selection.getFirstPosition().parent):t}_isSelectionInInlineFiller(){if(1!=this.selection.rangeCount||!this.selection.isCollapsed)return!1;const t=this.selection.getFirstPosition(),e=this.domConverter.viewPositionToDom(t);return!!(e&&Nn(e.parent)&&Dn(e.parent))}_removeInlineFiller(){const t=this._inlineFiller;if(!Dn(t))throw new go.b("view-renderer-filler-was-lost: The inline filler node was lost.",this);Ln(t)?t.parentNode.removeChild(t):t.data=t.data.substr(7),this._inlineFiller=null}_needsInlineFillerAtSelection(){if(1!=this.selection.rangeCount||!this.selection.isCollapsed)return!1;const t=this.selection.getFirstPosition(),e=t.parent,o=t.offset;if(!this.domConverter.mapViewToDom(e.root))return!1;if(!e.is("element"))return!1;if(!function(t){if("false"==t.getAttribute("contenteditable"))return!1;const e=t.findAncestor(t=>t.hasAttribute("contenteditable"));return!e||"true"==e.getAttribute("contenteditable")}(e))return!1;if(o===e.getFillerOffset())return!1;const i=t.nodeBefore,n=t.nodeAfter;return!(i instanceof No||n instanceof No)}_updateText(t,e){const o=this.domConverter.findCorrespondingDomText(t),i=this.domConverter.viewToDom(t,o.ownerDocument),n=o.data;let r=i.data;const s=e.inlineFillerPosition;if(s&&s.parent==t.parent&&s.offset==t.index&&(r=Fn+r),n!=r){const t=Wn(n,r);for(const e of t)"insert"===e.type?o.insertData(e.index,e.values.join("")):o.deleteData(e.index,e.howMany)}}_updateAttrs(t){const e=this.domConverter.mapViewToDom(t);if(!e)return;const o=Array.from(e.attributes).map(t=>t.name),i=t.getAttributeKeys();for(const o of i)e.setAttribute(o,t.getAttribute(o));for(const i of o)t.hasAttribute(i)||e.removeAttribute(i)}_updateChildren(t,e){const o=this.domConverter.mapViewToDom(t);if(!o)return;const i=e.inlineFillerPosition,n=this.domConverter.mapViewToDom(t).childNodes,r=Array.from(this.domConverter.viewChildrenToDom(t,o.ownerDocument,{bind:!0,inlineFillerPosition:i}));i&&i.parent===t&&Qn(o.ownerDocument,r,i.offset);const s=this._diffNodeLists(n,r);let a=0;const l=new Set;for(const t of s)"delete"===t?(l.add(n[a]),Kn(n[a])):"equal"===t&&a++;a=0;for(const t of s)"insert"===t?(Gn(o,a,r[a]),a++):"equal"===t&&(this._markDescendantTextToSync(this.domConverter.domToView(r[a])),a++);for(const t of l)t.parentNode||this.domConverter.unbindDomElement(t)}_diffNodeLists(t,e){return $n(t=function(t,e){const o=Array.from(t);if(0==o.length||!e)return o;o[o.length-1]==e&&o.pop();return o}(t,this._fakeSelectionContainer),e,Zn.bind(null,this.domConverter))}_findReplaceActions(t,e,o){if(-1===t.indexOf("insert")||-1===t.indexOf("delete"))return t;let i=[],n=[],r=[];const s={equal:0,insert:0,delete:0};for(const a of t)"insert"===a?r.push(o[s.equal+s.insert]):"delete"===a?n.push(e[s.equal+s.delete]):(i=i.concat($n(n,r,Xn).map(t=>"equal"===t?"replace":t)),i.push("equal"),n=[],r=[]),s[a]++;return i.concat($n(n,r,Xn).map(t=>"equal"===t?"replace":t))}_markDescendantTextToSync(t){if(t)if(t.is("text"))this.markedTexts.add(t);else if(t.is("element"))for(const e of t.getChildren())this._markDescendantTextToSync(e)}_updateSelection(){if(0===this.selection.rangeCount)return this._removeDomSelection(),void this._removeFakeSelection();const t=this.domConverter.mapViewToDom(this.selection.editableElement);this.isFocused&&t&&(this.selection.isFake?this._updateFakeSelection(t):(this._removeFakeSelection(),this._updateDomSelection(t)))}_updateFakeSelection(t){const e=t.ownerDocument;this._fakeSelectionContainer||(this._fakeSelectionContainer=function(t){const e=t.createElement("div");return Object.assign(e.style,{position:"fixed",top:0,left:"-9999px",width:"42px"}),e.textContent=" ",e}(e));const o=this._fakeSelectionContainer;if(this.domConverter.bindFakeSelection(o,this.selection),!this._fakeSelectionNeedsUpdate(t))return;o.parentElement&&o.parentElement==t||t.appendChild(o),o.textContent=this.selection.fakeSelectionLabel||" ";const i=e.getSelection(),n=e.createRange();i.removeAllRanges(),n.selectNodeContents(o),i.addRange(n)}_updateDomSelection(t){const e=t.ownerDocument.defaultView.getSelection();if(!this._domSelectionNeedsUpdate(e))return;const o=this.domConverter.viewPositionToDom(this.selection.anchor),i=this.domConverter.viewPositionToDom(this.selection.focus);t.focus(),e.collapse(o.parent,o.offset),e.extend(i.parent,i.offset),gn.isGecko&&function(t,e){const o=t.parent;if(o.nodeType!=Node.ELEMENT_NODE||t.offset!=o.childNodes.length-1)return;const i=o.childNodes[t.offset];i&&"BR"==i.tagName&&e.addRange(e.getRangeAt(0))}(i,e)}_domSelectionNeedsUpdate(t){if(!this.domConverter.isDomSelectionCorrect(t))return!0;const e=t&&this.domConverter.domSelectionToView(t);return(!e||!this.selection.isEqual(e))&&!(!this.selection.isCollapsed&&this.selection.isSimilar(e))}_fakeSelectionNeedsUpdate(t){const e=this._fakeSelectionContainer,o=t.ownerDocument.getSelection();return!e||e.parentElement!==t||(o.anchorNode!==e&&!e.contains(o.anchorNode)||e.textContent!==this.selection.fakeSelectionLabel)}_removeDomSelection(){for(const t of this.domDocuments){if(t.getSelection().rangeCount){const e=t.activeElement,o=this.domConverter.mapDomToView(e);e&&o&&t.getSelection().removeAllRanges()}}}_removeFakeSelection(){const t=this._fakeSelectionContainer;t&&t.remove()}_updateFocus(){if(this.isFocused){const t=this.selection.editableElement;t&&this.domConverter.focus(t)}}}function Qn(t,e,o){const i=e instanceof Array?e:e.childNodes,n=i[o];if(Nn(n))return n.data=Fn+n.data,n;{const n=t.createTextNode(Fn);return Array.isArray(e)?i.splice(o,0,n):Gn(e,o,n),n}}function Xn(t,e){return Jn(t)&&Jn(e)&&!Nn(t)&&!Nn(e)&&t.tagName.toLowerCase()===e.tagName.toLowerCase()}function Zn(t,e,o){return e===o||(Nn(e)&&Nn(o)?e.data===o.data:!(!t.isBlockFiller(e)||!t.isBlockFiller(o)))}Co(Yn,Wi);var tr={window:window,document:document};function er(t){let e=0;for(;t.previousSibling;)t=t.previousSibling,e++;return e}function or(t){const e=[];for(;t&&t.nodeType!=Node.DOCUMENT_NODE;)e.unshift(t),t=t.parentNode;return e}const ir=zn(document);class nr{constructor(t,e={}){this.document=t,this.blockFillerMode=e.blockFillerMode||"br",this.preElements=["pre"],this.blockElements=["p","div","h1","h2","h3","h4","h5","h6","li","dd","dt","figcaption"],this._blockFiller="br"==this.blockFillerMode?zn:Bn,this._domToViewMapping=new WeakMap,this._viewToDomMapping=new WeakMap,this._fakeSelectionMapping=new WeakMap}bindFakeSelection(t,e){this._fakeSelectionMapping.set(t,new nn(e))}fakeSelectionToView(t){return this._fakeSelectionMapping.get(t)}bindElements(t,e){this._domToViewMapping.set(t,e),this._viewToDomMapping.set(e,t)}unbindDomElement(t){const e=this._domToViewMapping.get(t);if(e){this._domToViewMapping.delete(t),this._viewToDomMapping.delete(e);for(const e of t.childNodes)this.unbindDomElement(e)}}bindDocumentFragments(t,e){this._domToViewMapping.set(t,e),this._viewToDomMapping.set(e,t)}viewToDom(t,e,o={}){if(t.is("text")){const o=this._processDataFromViewText(t);return e.createTextNode(o)}{if(this.mapViewToDom(t))return this.mapViewToDom(t);let i;if(t.is("documentFragment"))i=e.createDocumentFragment(),o.bind&&this.bindDocumentFragments(i,t);else{if(t.is("uiElement"))return i=t.render(e),o.bind&&this.bindElements(i,t),i;i=t.hasAttribute("xmlns")?e.createElementNS(t.getAttribute("xmlns"),t.name):e.createElement(t.name),o.bind&&this.bindElements(i,t);for(const e of t.getAttributeKeys())i.setAttribute(e,t.getAttribute(e))}if(o.withChildren||void 0===o.withChildren)for(const n of this.viewChildrenToDom(t,e,o))i.appendChild(n);return i}}*viewChildrenToDom(t,e,o={}){const i=t.getFillerOffset&&t.getFillerOffset();let n=0;for(const r of t.getChildren())i===n&&(yield this._blockFiller(e)),yield this.viewToDom(r,e,o),n++;i===n&&(yield this._blockFiller(e))}viewRangeToDom(t){const e=this.viewPositionToDom(t.start),o=this.viewPositionToDom(t.end),i=document.createRange();return i.setStart(e.parent,e.offset),i.setEnd(o.parent,o.offset),i}viewPositionToDom(t){const e=t.parent;if(e.is("text")){const o=this.findCorrespondingDomText(e);if(!o)return null;let i=t.offset;return Dn(o)&&(i+=7),{parent:o,offset:i}}{let o,i,n;if(0===t.offset){if(o=this.mapViewToDom(e),!o)return null;n=o.childNodes[0]}else{const e=t.nodeBefore;if(i=e.is("text")?this.findCorrespondingDomText(e):this.mapViewToDom(t.nodeBefore),!i)return null;o=i.parentNode,n=i.nextSibling}if(Nn(n)&&Dn(n))return{parent:n,offset:7};return{parent:o,offset:i?er(i)+1:0}}}domToView(t,e={}){if(this.isBlockFiller(t,this.blockFillerMode))return null;const o=this.getParentUIElement(t,this._domToViewMapping);if(o)return o;if(Nn(t)){if(Ln(t))return null;{const e=this._processDataFromDomText(t);return""===e?null:new No(this.document,e)}}if(this.isComment(t))return null;{if(this.mapDomToView(t))return this.mapDomToView(t);let o;if(this.isDocumentFragment(t))o=new Cn(this.document),e.bind&&this.bindDocumentFragments(t,o);else{const i=e.keepOriginalCase?t.tagName:t.tagName.toLowerCase();o=new Mi(this.document,i),e.bind&&this.bindElements(t,o);const n=t.attributes;for(let t=n.length-1;t>=0;t--)o._setAttribute(n[t].name,n[t].value)}if(e.withChildren||void 0===e.withChildren)for(const i of this.domChildrenToView(t,e))o._appendChild(i);return o}}*domChildrenToView(t,e={}){for(let o=0;o{const{scrollLeft:e,scrollTop:o}=t;i.push([e,o])}),e.focus(),sr(e,t=>{const[e,o]=i.shift();t.scrollLeft=e,t.scrollTop=o}),tr.window.scrollTo(t,o)}}isElement(t){return t&&t.nodeType==Node.ELEMENT_NODE}isDocumentFragment(t){return t&&t.nodeType==Node.DOCUMENT_FRAGMENT_NODE}isComment(t){return t&&t.nodeType==Node.COMMENT_NODE}isBlockFiller(t){return"br"==this.blockFillerMode?t.isEqualNode(ir):!("BR"!==t.tagName||!ar(t,this.blockElements)||1!==t.parentNode.childNodes.length)||function(t,e){return Nn(t)&&" "==t.data&&ar(t,e)&&1===t.parentNode.childNodes.length}(t,this.blockElements)}isDomSelectionBackward(t){if(t.isCollapsed)return!1;const e=document.createRange();e.setStart(t.anchorNode,t.anchorOffset),e.setEnd(t.focusNode,t.focusOffset);const o=e.collapsed;return e.detach(),o}getParentUIElement(t){const e=or(t);for(e.pop();e.length;){const t=e.pop(),o=this._domToViewMapping.get(t);if(o&&o.is("uiElement"))return o}return null}isDomSelectionCorrect(t){return this._isDomSelectionPositionCorrect(t.anchorNode,t.anchorOffset)&&this._isDomSelectionPositionCorrect(t.focusNode,t.focusOffset)}_isDomSelectionPositionCorrect(t,e){if(Nn(t)&&Dn(t)&&e<7)return!1;if(this.isElement(t)&&Dn(t.childNodes[e]))return!1;const o=this.mapDomToView(t);return!o||!o.is("uiElement")}_processDataFromViewText(t){let e=t.data;if(t.getAncestors().some(t=>this.preElements.includes(t.name)))return e;if(" "==e.charAt(0)){const o=this._getTouchingViewTextNode(t,!1);!(o&&this._nodeEndsWithSpace(o))&&o||(e=" "+e.substr(1))}if(" "==e.charAt(e.length-1)){const o=this._getTouchingViewTextNode(t,!0);" "!=e.charAt(e.length-2)&&o&&" "!=o.data.charAt(0)||(e=e.substr(0,e.length-1)+" ")}return e.replace(/ {2}/g,"  ")}_nodeEndsWithSpace(t){if(t.getAncestors().some(t=>this.preElements.includes(t.name)))return!1;const e=this._processDataFromViewText(t);return" "==e.charAt(e.length-1)}_processDataFromDomText(t){let e=t.data;if(rr(t,this.preElements))return jn(t);e=e.replace(/[ \n\t\r]{1,}/g," ");const o=this._getTouchingInlineDomNode(t,!1),i=this._getTouchingInlineDomNode(t,!0),n=this._checkShouldLeftTrimDomText(o),r=this._checkShouldRightTrimDomText(t,i);return n&&(e=e.replace(/^ /,"")),r&&(e=e.replace(/ $/,"")),e=jn(new Text(e)),e=e.replace(/ \u00A0/g," "),(/( |\u00A0)\u00A0$/.test(e)||!i||i.data&&" "==i.data.charAt(0))&&(e=e.replace(/\u00A0$/," ")),n&&(e=e.replace(/^\u00A0/," ")),e}_checkShouldLeftTrimDomText(t){return!t||(!!io(t)||/[^\S\u00A0]/.test(t.data.charAt(t.data.length-1)))}_checkShouldRightTrimDomText(t,e){return!e&&!Dn(t)}_getTouchingViewTextNode(t,e){const o=new Xi({startPosition:e?Zi._createAfter(t):Zi._createBefore(t),direction:e?"forward":"backward"});for(const t of o){if(t.item.is("containerElement"))return null;if(t.item.is("br"))return null;if(t.item.is("textProxy"))return t.item}return null}_getTouchingInlineDomNode(t,e){if(!t.parentNode)return null;const o=e?"nextNode":"previousNode",i=t.ownerDocument,n=or(t)[0],r=i.createTreeWalker(n,NodeFilter.SHOW_TEXT|NodeFilter.SHOW_ELEMENT,{acceptNode:t=>Nn(t)||"BR"==t.tagName?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP});r.currentNode=t;const s=r[o]();if(null!==s){const e=function(t,e){const o=or(t),i=or(e);let n=0;for(;o[n]==i[n]&&o[n];)n++;return 0===n?null:o[n-1]}(t,s);if(e&&!rr(t,this.blockElements,e)&&!rr(s,this.blockElements,e))return s}return null}}function rr(t,e,o){let i=or(t);return o&&(i=i.slice(i.indexOf(o)+1)),i.some(t=>t.tagName&&e.includes(t.tagName.toLowerCase()))}function sr(t,e){for(;t&&t!=tr.document;)e(t),t=t.parentNode}function ar(t,e){const o=t.parentNode;return o&&o.tagName&&e.includes(o.tagName.toLowerCase())}function lr(t){const e=Object.prototype.toString.apply(t);return"[object Window]"==e||"[object global]"==e}var cr=Fi({},po,{listenTo(t,...e){if(Jn(t)||lr(t)){const o=this._getProxyEmitter(t)||new dr(t);o.attach(...e),t=o}po.listenTo.call(this,t,...e)},stopListening(t,e,o){if(Jn(t)||lr(t)){const e=this._getProxyEmitter(t);if(!e)return;t=e}po.stopListening.call(this,t,e,o),t instanceof dr&&t.detach(e)},_getProxyEmitter(t){return e=this,o=hr(t),e[mo]&&e[mo][o]?e[mo][o].emitter:null;var e,o}});class dr{constructor(t){bo(this,hr(t)),this._domNode=t}}function hr(t){return t["data-ck-expando"]||(t["data-ck-expando"]=ho())}Fi(dr.prototype,po,{attach(t,e,o={}){if(this._domListeners&&this._domListeners[t])return;const i=this._createDomListener(t,!!o.useCapture);this._domNode.addEventListener(t,i,!!o.useCapture),this._domListeners||(this._domListeners={}),this._domListeners[t]=i},detach(t){let e;!this._domListeners[t]||(e=this._events[t])&&e.callbacks.length||this._domListeners[t].removeListener()},_createDomListener(t,e){const o=e=>{this.fire(t,e)};return o.removeListener=()=>{this._domNode.removeEventListener(t,o,e),delete this._domListeners[t]},o}});class ur{constructor(t){this.view=t,this.document=t.document,this.isEnabled=!1}enable(){this.isEnabled=!0}disable(){this.isEnabled=!1}destroy(){this.disable(),this.stopListening()}}Co(ur,cr);var gr=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this};var mr=function(t){return this.__data__.has(t)};function fr(t){var e=-1,o=null==t?0:t.length;for(this.__data__=new _t;++ea))return!1;var c=r.get(t);if(c&&r.get(e))return c==e;var d=-1,h=!0,u=2&o?new pr:void 0;for(r.set(t,e),r.set(e,t);++d{this.listenTo(t,e,(t,e)=>{this.isEnabled&&this.onDomEvent(e)},{useCapture:this.useCapture})})}fire(t,e,o){this.isEnabled&&this.document.fire(t,new Vr(this.view,e,o))}}class Mr extends Or{constructor(t){super(t),this.domEventType=["keydown","keyup"]}onDomEvent(t){this.fire(t.type,t,{keyCode:t.keyCode,altKey:t.altKey,ctrlKey:t.ctrlKey||t.metaKey,shiftKey:t.shiftKey,get keystroke(){return bn(this)}})}}var Nr=function(){return i.a.Date.now()},Br=/^\s+|\s+$/g,zr=/^[-+]0x[0-9a-f]+$/i,Fr=/^0b[01]+$/i,Dr=/^0o[0-7]+$/i,Lr=parseInt;var jr=function(t){if("number"==typeof t)return t;if(Lo(t))return NaN;if(z(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=z(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(Br,"");var o=Fr.test(t);return o||Dr.test(t)?Lr(t.slice(2),o?2:8):zr.test(t)?NaN:+t},Hr=Math.max,Wr=Math.min;var qr=function(t,e,o){var i,n,r,s,a,l,c=0,d=!1,h=!1,u=!0;if("function"!=typeof t)throw new TypeError("Expected a function");function g(e){var o=i,r=n;return i=n=void 0,c=e,s=t.apply(r,o)}function m(t){return c=t,a=setTimeout(p,e),d?g(t):s}function f(t){var o=t-l;return void 0===l||o>=e||o<0||h&&t-c>=r}function p(){var t=Nr();if(f(t))return b(t);a=setTimeout(p,function(t){var o=e-(t-l);return h?Wr(o,r-(t-c)):o}(t))}function b(t){return a=void 0,u&&i?g(t):(i=n=void 0,s)}function w(){var t=Nr(),o=f(t);if(i=arguments,n=this,l=t,o){if(void 0===a)return m(l);if(h)return clearTimeout(a),a=setTimeout(p,e),g(l)}return void 0===a&&(a=setTimeout(p,e)),s}return e=jr(e)||0,z(o)&&(d=!!o.leading,r=(h="maxWait"in o)?Hr(jr(o.maxWait)||0,e):r,u="trailing"in o?!!o.trailing:u),w.cancel=function(){void 0!==a&&clearTimeout(a),c=0,i=l=n=a=void 0},w.flush=function(){return void 0===a?s:b(Nr())},w};class Ur extends ur{constructor(t){super(t),this._fireSelectionChangeDoneDebounced=qr(t=>this.document.fire("selectionChangeDone",t),200)}observe(){const t=this.document;t.on("keydown",(e,o)=>{var i;t.selection.isFake&&((i=o.keyCode)==pn.arrowright||i==pn.arrowleft||i==pn.arrowup||i==pn.arrowdown)&&this.isEnabled&&(o.preventDefault(),this._handleSelectionMove(o.keyCode))},{priority:"lowest"})}destroy(){super.destroy(),this._fireSelectionChangeDoneDebounced.cancel()}_handleSelectionMove(t){const e=this.document.selection,o=new nn(e.getRanges(),{backward:e.isBackward,fake:!1});t!=pn.arrowleft&&t!=pn.arrowup||o.setTo(o.getFirstPosition()),t!=pn.arrowright&&t!=pn.arrowdown||o.setTo(o.getLastPosition());const i={oldSelection:e,newSelection:o,domSelection:null};this.document.fire("selectionChange",i),this._fireSelectionChangeDoneDebounced(i)}}class $r extends ur{constructor(t){super(t),this.mutationObserver=t.getObserver(Ir),this.selection=this.document.selection,this.domConverter=t.domConverter,this._documents=new WeakSet,this._fireSelectionChangeDoneDebounced=qr(t=>this.document.fire("selectionChangeDone",t),200),this._clearInfiniteLoopInterval=setInterval(()=>this._clearInfiniteLoop(),1e3),this._loopbackCounter=0}observe(t){const e=t.ownerDocument;this._documents.has(e)||(this.listenTo(e,"selectionchange",()=>{this._handleSelectionChange(e)}),this._documents.add(e))}destroy(){super.destroy(),clearInterval(this._clearInfiniteLoopInterval),this._fireSelectionChangeDoneDebounced.cancel()}_handleSelectionChange(t){if(!this.isEnabled)return;this.mutationObserver.flush();const e=t.defaultView.getSelection(),o=this.domConverter.domSelectionToView(e);if(0!=o.rangeCount){if(this.view.hasDomSelection=!0,!(this.selection.isEqual(o)&&this.domConverter.isDomSelectionCorrect(e)||++this._loopbackCounter>60))if(this.selection.isSimilar(o))this.view.forceRender();else{const t={oldSelection:this.selection,newSelection:o,domSelection:e};this.document.fire("selectionChange",t),this._fireSelectionChangeDoneDebounced(t)}}else this.view.hasDomSelection=!1}_clearInfiniteLoop(){this._loopbackCounter=0}}class Gr extends Or{constructor(t){super(t),this.domEventType=["focus","blur"],this.useCapture=!0;const e=this.document;e.on("focus",()=>{e.isFocused=!0,this._renderTimeoutId=setTimeout(()=>t.forceRender(),50)}),e.on("blur",(o,i)=>{const n=e.selection.editableElement;null!==n&&n!==i.target||(e.isFocused=!1,t.forceRender())})}onDomEvent(t){this.fire(t.type,t)}destroy(){this._renderTimeoutId&&clearTimeout(this._renderTimeoutId),super.destroy()}}class Kr extends Or{constructor(t){super(t),this.domEventType=["compositionstart","compositionupdate","compositionend"];const e=this.document;e.on("compositionstart",()=>{e.isComposing=!0}),e.on("compositionend",()=>{e.isComposing=!1})}onDomEvent(t){this.fire(t.type,t)}}class Jr extends Or{constructor(t){super(t),this.domEventType=["beforeinput"]}onDomEvent(t){this.fire(t.type,t)}}function Yr(t){return"[object Range]"==Object.prototype.toString.apply(t)}function Qr(t){const e=t.ownerDocument.defaultView.getComputedStyle(t);return{top:parseInt(e.borderTopWidth,10),right:parseInt(e.borderRightWidth,10),bottom:parseInt(e.borderBottomWidth,10),left:parseInt(e.borderLeftWidth,10)}}const Xr=["top","right","bottom","left","width","height"];class Zr{constructor(t){const e=Yr(t);if(Object.defineProperty(this,"_source",{value:t._source||t,writable:!0,enumerable:!1}),io(t)||e)ts(this,e?Zr.getDomRangeRects(t)[0]:t.getBoundingClientRect());else if(lr(t)){const{innerWidth:e,innerHeight:o}=t;ts(this,{top:0,right:e,bottom:o,left:0,width:e,height:o})}else ts(this,t)}clone(){return new Zr(this)}moveTo(t,e){return this.top=e,this.right=t+this.width,this.bottom=e+this.height,this.left=t,this}moveBy(t,e){return this.top+=e,this.right+=t,this.left+=t,this.bottom+=e,this}getIntersection(t){const e={top:Math.max(this.top,t.top),right:Math.min(this.right,t.right),bottom:Math.min(this.bottom,t.bottom),left:Math.max(this.left,t.left)};return e.width=e.right-e.left,e.height=e.bottom-e.top,e.width<0||e.height<0?null:new Zr(e)}getIntersectionArea(t){const e=this.getIntersection(t);return e?e.getArea():0}getArea(){return this.width*this.height}getVisible(){const t=this._source;let e=this.clone();if(!es(t)){let o=t.parentNode||t.commonAncestorContainer;for(;o&&!es(o);){const t=new Zr(o),i=e.getIntersection(t);if(!i)return null;i.getArea()hs(t,i));const s=hs(t,i);if(is(i,s,e),i.parent!=i){if(n=i.frameElement,i=i.parent,!n)return}else i=null}}function is(t,e,o){const i=e.clone().moveBy(0,o),n=e.clone().moveBy(0,-o),r=new Zr(t).excludeScrollbarsAndBorders();if(![n,i].every(t=>r.contains(t))){let{scrollX:s,scrollY:a}=t;ss(n,r)?a-=r.top-e.top+o:rs(i,r)&&(a+=e.bottom-r.bottom+o),as(e,r)?s-=r.left-e.left+o:ls(e,r)&&(s+=e.right-r.right+o),t.scrollTo(s,a)}}function ns(t,e){const o=cs(t);let i,n;for(;t!=o.document.body;)n=e(),i=new Zr(t).excludeScrollbarsAndBorders(),i.contains(n)||(ss(n,i)?t.scrollTop-=i.top-n.top:rs(n,i)&&(t.scrollTop+=n.bottom-i.bottom),as(n,i)?t.scrollLeft-=i.left-n.left:ls(n,i)&&(t.scrollLeft+=n.right-i.right)),t=t.parentNode}function rs(t,e){return t.bottom>e.bottom}function ss(t,e){return t.tope.right}function cs(t){return Yr(t)?t.startContainer.ownerDocument.defaultView:t.ownerDocument.defaultView}function ds(t){if(Yr(t)){let e=t.commonAncestorContainer;return Nn(e)&&(e=e.parentNode),e}return t.parentNode}function hs(t,e){const o=cs(t),i=new Zr(t);if(o===e)return i;{let t=o;for(;t!=e;){const e=t.frameElement,o=new Zr(e).excludeScrollbarsAndBorders();i.moveBy(o.left,o.top),t=t.parent}}return i}Object.assign({},{scrollViewportToShowTarget:os,scrollAncestorsToShowTarget:function(t){ns(ds(t),()=>new Zr(t))}});class us{constructor(t){this.document=new sn(t),this.domConverter=new nr(this.document),this.domRoots=new Map,this.set("isRenderingInProgress",!1),this.set("hasDomSelection",!1),this._renderer=new Yn(this.domConverter,this.document.selection),this._renderer.bind("isFocused").to(this.document),this._initialDomRootAttributes=new WeakMap,this._observers=new Map,this._ongoingChange=!1,this._postFixersInProgress=!1,this._renderingDisabled=!1,this._hasChangedSinceTheLastRendering=!1,this._writer=new An(this.document),this.addObserver(Ir),this.addObserver($r),this.addObserver(Gr),this.addObserver(Mr),this.addObserver(Ur),this.addObserver(Kr),gn.isAndroid&&this.addObserver(Jr),this.document.on("keydown",Hn),yn(this),this.on("render",()=>{this._render(),this.document.fire("layoutChanged"),this._hasChangedSinceTheLastRendering=!1}),this.listenTo(this.document.selection,"change",()=>{this._hasChangedSinceTheLastRendering=!0})}attachDomRoot(t,e="main"){const o=this.document.getRoot(e);o._name=t.tagName.toLowerCase();const i={};for(const{name:e,value:n}of Array.from(t.attributes))i[e]=n,"class"===e?this._writer.addClass(n.split(" "),o):this._writer.setAttribute(e,n,o);this._initialDomRootAttributes.set(t,i);const n=()=>{this._writer.setAttribute("contenteditable",!o.isReadOnly,o),o.isReadOnly?this._writer.addClass("ck-read-only",o):this._writer.removeClass("ck-read-only",o)};n(),this.domRoots.set(e,t),this.domConverter.bindElements(t,o),this._renderer.markToSync("children",o),this._renderer.markToSync("attributes",o),this._renderer.domDocuments.add(t.ownerDocument),o.on("change:children",(t,e)=>this._renderer.markToSync("children",e)),o.on("change:attributes",(t,e)=>this._renderer.markToSync("attributes",e)),o.on("change:text",(t,e)=>this._renderer.markToSync("text",e)),o.on("change:isReadOnly",()=>this.change(n)),o.on("change",()=>{this._hasChangedSinceTheLastRendering=!0});for(const o of this._observers.values())o.observe(t,e)}detachDomRoot(t){const e=this.domRoots.get(t);Array.from(e.attributes).forEach(({name:t})=>e.removeAttribute(t));const o=this._initialDomRootAttributes.get(e);for(const t in o)e.setAttribute(t,o[t]);this.domRoots.delete(t),this.domConverter.unbindDomElement(e)}getDomRoot(t="main"){return this.domRoots.get(t)}addObserver(t){let e=this._observers.get(t);if(e)return e;e=new t(this),this._observers.set(t,e);for(const[t,o]of this.domRoots)e.observe(o,t);return e.enable(),e}getObserver(t){return this._observers.get(t)}disableObservers(){for(const t of this._observers.values())t.disable()}enableObservers(){for(const t of this._observers.values())t.enable()}scrollToTheSelection(){const t=this.document.selection.getFirstRange();t&&os({target:this.domConverter.viewRangeToDom(t),viewportOffset:20})}focus(){if(!this.document.isFocused){const t=this.document.selection.editableElement;t&&(this.domConverter.focus(t),this.forceRender())}}change(t){if(this.isRenderingInProgress||this._postFixersInProgress)throw new go.b("cannot-change-view-tree: Attempting to make changes to the view when it is in an incorrect state: rendering or post-fixers are in progress. This may cause some unexpected behavior and inconsistency between the DOM and the view.",this);try{if(this._ongoingChange)return t(this._writer);this._ongoingChange=!0;const e=t(this._writer);return this._ongoingChange=!1,!this._renderingDisabled&&this._hasChangedSinceTheLastRendering&&(this._postFixersInProgress=!0,this.document._callPostFixers(this._writer),this._postFixersInProgress=!1,this.fire("render")),e}catch(t){go.b.rethrowUnexpectedError(t,this)}}forceRender(){this._hasChangedSinceTheLastRendering=!0,this.change(()=>{})}destroy(){for(const t of this._observers.values())t.destroy();this.document.destroy(),this.stopListening()}createPositionAt(t,e){return Zi._createAt(t,e)}createPositionAfter(t){return Zi._createAfter(t)}createPositionBefore(t){return Zi._createBefore(t)}createRange(t,e){return new tn(t,e)}createRangeOn(t){return tn._createOn(t)}createRangeIn(t){return tn._createIn(t)}createSelection(t,e,o){return new nn(t,e,o)}_disableRendering(t){this._renderingDisabled=t,0==t&&this.change(()=>{})}_render(){this.isRenderingInProgress=!0,this.disableObservers(),this._renderer.render(),this.enableObservers(),this.isRenderingInProgress=!1}}Co(us,Wi);class gs{constructor(t){this.parent=null,this._attrs=zo(t)}get index(){let t;if(!this.parent)return null;if(null===(t=this.parent.getChildIndex(this)))throw new go.b("model-node-not-found-in-parent: The node's parent does not contain this node.",this);return t}get startOffset(){let t;if(!this.parent)return null;if(null===(t=this.parent.getChildStartOffset(this)))throw new go.b("model-node-not-found-in-parent: The node's parent does not contain this node.",this);return t}get offsetSize(){return 1}get endOffset(){return this.parent?this.startOffset+this.offsetSize:null}get nextSibling(){const t=this.index;return null!==t&&this.parent.getChild(t+1)||null}get previousSibling(){const t=this.index;return null!==t&&this.parent.getChild(t-1)||null}get root(){let t=this;for(;t.parent;)t=t.parent;return t}isAttached(){return this.root.is("rootElement")}getPath(){const t=[];let e=this;for(;e.parent;)t.unshift(e.startOffset),e=e.parent;return t}getAncestors(t={includeSelf:!1,parentFirst:!1}){const e=[];let o=t.includeSelf?this:this.parent;for(;o;)e[t.parentFirst?"push":"unshift"](o),o=o.parent;return e}getCommonAncestor(t,e={}){const o=this.getAncestors(e),i=t.getAncestors(e);let n=0;for(;o[n]==i[n]&&o[n];)n++;return 0===n?null:o[n-1]}isBefore(t){if(this==t)return!1;if(this.root!==t.root)return!1;const e=this.getPath(),o=t.getPath(),i=Vo(e,o);switch(i){case"prefix":return!0;case"extension":return!1;default:return e[i](t[e[0]]=e[1],t),{})),t}is(t){return"node"===t||"model:node"===t}_clone(){return new gs(this._attrs)}_remove(){this.parent._removeChildren(this.index)}_setAttribute(t,e){this._attrs.set(t,e)}_setAttributesTo(t){this._attrs=zo(t)}_removeAttribute(t){return this._attrs.delete(t)}_clearAttributes(){this._attrs.clear()}}class ms extends gs{constructor(t,e){super(e),this._data=t||""}get offsetSize(){return this.data.length}get data(){return this._data}is(t){return"text"===t||"model:text"===t||"node"===t||"model:node"===t}toJSON(){const t=super.toJSON();return t.data=this.data,t}_clone(){return new ms(this.data,this.getAttributes())}static fromJSON(t){return new ms(t.data,t.attributes)}}class fs{constructor(t,e,o){if(this.textNode=t,e<0||e>t.offsetSize)throw new go.b("model-textproxy-wrong-offsetintext: Given offsetInText value is incorrect.",this);if(o<0||e+o>t.offsetSize)throw new go.b("model-textproxy-wrong-length: Given length value is incorrect.",this);this.data=t.data.substring(e,e+o),this.offsetInText=e}get startOffset(){return null!==this.textNode.startOffset?this.textNode.startOffset+this.offsetInText:null}get offsetSize(){return this.data.length}get endOffset(){return null!==this.startOffset?this.startOffset+this.offsetSize:null}get isPartial(){return this.offsetSize!==this.textNode.offsetSize}get parent(){return this.textNode.parent}get root(){return this.textNode.root}is(t){return"textProxy"===t||"model:textProxy"===t}getPath(){const t=this.textNode.getPath();return t.length>0&&(t[t.length-1]+=this.offsetInText),t}getAncestors(t={includeSelf:!1,parentFirst:!1}){const e=[];let o=t.includeSelf?this:this.parent;for(;o;)e[t.parentFirst?"push":"unshift"](o),o=o.parent;return e}hasAttribute(t){return this.textNode.hasAttribute(t)}getAttribute(t){return this.textNode.getAttribute(t)}getAttributes(){return this.textNode.getAttributes()}getAttributeKeys(){return this.textNode.getAttributeKeys()}}class ps{constructor(t){this._nodes=[],t&&this._insertNodes(0,t)}[Symbol.iterator](){return this._nodes[Symbol.iterator]()}get length(){return this._nodes.length}get maxOffset(){return this._nodes.reduce((t,e)=>t+e.offsetSize,0)}getNode(t){return this._nodes[t]||null}getNodeIndex(t){const e=this._nodes.indexOf(t);return-1==e?null:e}getNodeStartOffset(t){const e=this.getNodeIndex(t);return null===e?null:this._nodes.slice(0,e).reduce((t,e)=>t+e.offsetSize,0)}indexToOffset(t){if(t==this._nodes.length)return this.maxOffset;const e=this._nodes[t];if(!e)throw new go.b("model-nodelist-index-out-of-bounds: Given index cannot be found in the node list.",this);return this.getNodeStartOffset(e)}offsetToIndex(t){let e=0;for(const o of this._nodes){if(t>=e&&tt.toJSON())}}class bs extends gs{constructor(t,e,o){super(e),this.name=t,this._children=new ps,o&&this._insertChild(0,o)}get childCount(){return this._children.length}get maxOffset(){return this._children.maxOffset}get isEmpty(){return 0===this.childCount}is(t,e=null){return e?e===this.name&&("element"===t||"model:element"===t):"element"===t||"model:element"===t||t===this.name||t==="model:"+this.name||"node"===t||"model:node"===t}getChild(t){return this._children.getNode(t)}getChildren(){return this._children[Symbol.iterator]()}getChildIndex(t){return this._children.getNodeIndex(t)}getChildStartOffset(t){return this._children.getNodeStartOffset(t)}offsetToIndex(t){return this._children.offsetToIndex(t)}getNodeByPath(t){let e=this;for(const o of t)e=e.getChild(e.offsetToIndex(o));return e}toJSON(){const t=super.toJSON();if(t.name=this.name,this._children.length>0){t.children=[];for(const e of this._children)t.children.push(e.toJSON())}return t}_clone(t=!1){const e=t?Array.from(this._children).map(t=>t._clone(!0)):null;return new bs(this.name,this.getAttributes(),e)}_appendChild(t){this._insertChild(this.childCount,t)}_insertChild(t,e){const o=function(t){if("string"==typeof t)return[new ms(t)];xo(t)||(t=[t]);return Array.from(t).map(t=>"string"==typeof t?new ms(t):t instanceof fs?new ms(t.data,t.getAttributes()):t)}(e);for(const t of o)null!==t.parent&&t._remove(),t.parent=this;this._children._insertNodes(t,o)}_removeChildren(t,e=1){const o=this._children._removeNodes(t,e);for(const t of o)t.parent=null;return o}static fromJSON(t){let e=null;if(t.children){e=[];for(const o of t.children)o.name?e.push(bs.fromJSON(o)):e.push(ms.fromJSON(o))}return new bs(t.name,t.attributes,e)}}class ws{constructor(t={}){if(!t.boundaries&&!t.startPosition)throw new go.b("model-tree-walker-no-start-position: Neither boundaries nor starting position have been defined.",null);const e=t.direction||"forward";if("forward"!=e&&"backward"!=e)throw new go.b("model-tree-walker-unknown-direction: Only `backward` and `forward` direction allowed.",t,{direction:e});this.direction=e,this.boundaries=t.boundaries||null,t.startPosition?this.position=t.startPosition.clone():this.position=_s._createAt(this.boundaries["backward"==this.direction?"end":"start"]),this.position.stickiness="toNone",this.singleCharacters=!!t.singleCharacters,this.shallow=!!t.shallow,this.ignoreElementEnd=!!t.ignoreElementEnd,this._boundaryStartParent=this.boundaries?this.boundaries.start.parent:null,this._boundaryEndParent=this.boundaries?this.boundaries.end.parent:null,this._visitedParent=this.position.parent}[Symbol.iterator](){return this}skip(t){let e,o,i,n;do{i=this.position,n=this._visitedParent,({done:e,value:o}=this.next())}while(!e&&t(o));e||(this.position=i,this._visitedParent=n)}next(){return"forward"==this.direction?this._next():this._previous()}_next(){const t=this.position,e=this.position.clone(),o=this._visitedParent;if(null===o.parent&&e.offset===o.maxOffset)return{done:!0};if(o===this._boundaryEndParent&&e.offset==this.boundaries.end.offset)return{done:!0};const i=e.parent,n=vs(e,i),r=n||ys(e,i,n);if(r instanceof bs)return this.shallow?e.offset++:(e.path.push(0),this._visitedParent=r),this.position=e,ks("elementStart",r,t,e,1);if(r instanceof ms){let i;if(this.singleCharacters)i=1;else{let t=r.endOffset;this._boundaryEndParent==o&&this.boundaries.end.offsett&&(t=this.boundaries.start.offset),i=e.offset-t}const n=e.offset-r.startOffset,s=new fs(r,n-i,i);return e.offset-=i,this.position=e,ks("text",s,t,e,i)}return e.path.pop(),this.position=e,this._visitedParent=o.parent,ks("elementStart",o,t,e,1)}}function ks(t,e,o,i,n){return{done:!1,value:{type:t,item:e,previousPosition:o,nextPosition:i,length:n}}}class _s{constructor(t,e,o="toNone"){if(!t.is("element")&&!t.is("documentFragment"))throw new go.b("model-position-root-invalid: Position root invalid.",t);if(!(e instanceof Array)||0===e.length)throw new go.b("model-position-path-incorrect-format: Position path must be an array with at least one item.",t,{path:e});t.is("rootElement")?e=e.slice():(e=[...t.getPath(),...e],t=t.root),this.root=t,this.path=e,this.stickiness=o}get offset(){return this.path[this.path.length-1]}set offset(t){this.path[this.path.length-1]=t}get parent(){let t=this.root;for(let e=0;eo.path.length){if(e.offset!==i.maxOffset)return!1;e.path=e.path.slice(0,-1),i=i.parent,e.offset++}else{if(0!==o.offset)return!1;o.path=o.path.slice(0,-1)}}}is(t){return"position"===t||"model:position"===t}hasSameParentAs(t){if(this.root!==t.root)return!1;return"same"==Vo(this.getParentPath(),t.getParentPath())}getTransformedByOperation(t){let e;switch(t.type){case"insert":e=this._getTransformedByInsertOperation(t);break;case"move":case"remove":case"reinsert":e=this._getTransformedByMoveOperation(t);break;case"split":e=this._getTransformedBySplitOperation(t);break;case"merge":e=this._getTransformedByMergeOperation(t);break;default:e=_s._createAt(this)}return e}_getTransformedByInsertOperation(t){return this._getTransformedByInsertion(t.position,t.howMany)}_getTransformedByMoveOperation(t){return this._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany)}_getTransformedBySplitOperation(t){const e=t.movedRange;return e.containsPosition(this)||e.start.isEqual(this)&&"toNext"==this.stickiness?this._getCombined(t.splitPosition,t.moveTargetPosition):t.graveyardPosition?this._getTransformedByMove(t.graveyardPosition,t.insertionPosition,1):this._getTransformedByInsertion(t.insertionPosition,1)}_getTransformedByMergeOperation(t){const e=t.movedRange;let o;return e.containsPosition(this)||e.start.isEqual(this)?(o=this._getCombined(t.sourcePosition,t.targetPosition),t.sourcePosition.isBefore(t.targetPosition)&&(o=o._getTransformedByDeletion(t.deletionPosition,1))):o=this.isEqual(t.deletionPosition)?_s._createAt(t.deletionPosition):this._getTransformedByMove(t.deletionPosition,t.graveyardPosition,1),o}_getTransformedByDeletion(t,e){const o=_s._createAt(this);if(this.root!=t.root)return o;if("same"==Vo(t.getParentPath(),this.getParentPath())){if(t.offsetthis.offset)return null;o.offset-=e}}else if("prefix"==Vo(t.getParentPath(),this.getParentPath())){const i=t.path.length-1;if(t.offset<=this.path[i]){if(t.offset+e>this.path[i])return null;o.path[i]-=e}}return o}_getTransformedByInsertion(t,e){const o=_s._createAt(this);if(this.root!=t.root)return o;if("same"==Vo(t.getParentPath(),this.getParentPath()))(t.offsete+1;){const e=i.maxOffset-o.offset;0!==e&&t.push(new Cs(o,o.getShiftedBy(e))),o.path=o.path.slice(0,-1),o.offset++,i=i.parent}for(;o.path.length<=this.end.path.length;){const e=this.end.path[o.path.length-1],i=e-o.offset;0!==i&&t.push(new Cs(o,o.getShiftedBy(i))),o.offset=e,o.path.push(0)}return t}getWalker(t={}){return t.boundaries=this,new ws(t)}*getItems(t={}){t.boundaries=this,t.ignoreElementEnd=!0;const e=new ws(t);for(const t of e)yield t.item}*getPositions(t={}){t.boundaries=this;const e=new ws(t);yield e.position;for(const t of e)yield t.nextPosition}getTransformedByOperation(t){switch(t.type){case"insert":return this._getTransformedByInsertOperation(t);case"move":case"remove":case"reinsert":return this._getTransformedByMoveOperation(t);case"split":return[this._getTransformedBySplitOperation(t)];case"merge":return[this._getTransformedByMergeOperation(t)]}return[new Cs(this.start,this.end)]}getTransformedByOperations(t){const e=[new Cs(this.start,this.end)];for(const o of t)for(let t=0;t0?new this(o,i):new this(i,o)}static _createIn(t){return new this(_s._createAt(t,0),_s._createAt(t,t.maxOffset))}static _createOn(t){return this._createFromPositionAndShift(_s._createBefore(t),t.offsetSize)}static _createFromRanges(t){if(0===t.length)throw new go.b("range-create-from-ranges-empty-array: At least one range has to be passed.",null);if(1==t.length)return t[0].clone();const e=t[0];t.sort((t,e)=>t.start.isAfter(e.start)?1:-1);const o=t.indexOf(e),i=new this(e.start,e.end);if(o>0)for(let e=o-1;t[e].end.isEqual(i.start);e++)i.start=_s._createAt(t[e].start);for(let e=o+1;e{if(e.viewPosition)return;const o=this._modelToViewMapping.get(e.modelPosition.parent);e.viewPosition=this._findPositionIn(o,e.modelPosition.offset)},{priority:"low"}),this.on("viewToModelPosition",(t,e)=>{if(e.modelPosition)return;const o=this.findMappedViewAncestor(e.viewPosition),i=this._viewToModelMapping.get(o),n=this._toModelOffset(e.viewPosition.parent,e.viewPosition.offset,o);e.modelPosition=_s._createAt(i,n)},{priority:"low"})}bindElements(t,e){this._modelToViewMapping.set(t,e),this._viewToModelMapping.set(e,t)}unbindViewElement(t){const e=this.toModelElement(t);if(this._viewToModelMapping.delete(t),this._elementToMarkerNames.has(t))for(const e of this._elementToMarkerNames.get(t))this._unboundMarkerNames.add(e);this._modelToViewMapping.get(e)==t&&this._modelToViewMapping.delete(e)}unbindModelElement(t){const e=this.toViewElement(t);this._modelToViewMapping.delete(t),this._viewToModelMapping.get(e)==t&&this._viewToModelMapping.delete(e)}bindElementToMarker(t,e){const o=this._markerNameToElements.get(e)||new Set;o.add(t);const i=this._elementToMarkerNames.get(t)||new Set;i.add(e),this._markerNameToElements.set(e,o),this._elementToMarkerNames.set(t,i)}unbindElementFromMarkerName(t,e){const o=this._markerNameToElements.get(e);o&&(o.delete(t),0==o.size&&this._markerNameToElements.delete(e));const i=this._elementToMarkerNames.get(t);i&&(i.delete(e),0==i.size&&this._elementToMarkerNames.delete(t))}flushUnboundMarkerNames(){const t=Array.from(this._unboundMarkerNames);return this._unboundMarkerNames.clear(),t}clearBindings(){this._modelToViewMapping=new WeakMap,this._viewToModelMapping=new WeakMap,this._markerNameToElements=new Map,this._elementToMarkerNames=new Map,this._unboundMarkerNames=new Set}toModelElement(t){return this._viewToModelMapping.get(t)}toViewElement(t){return this._modelToViewMapping.get(t)}toModelRange(t){return new Cs(this.toModelPosition(t.start),this.toModelPosition(t.end))}toViewRange(t){return new tn(this.toViewPosition(t.start),this.toViewPosition(t.end))}toModelPosition(t){const e={viewPosition:t,mapper:this};return this.fire("viewToModelPosition",e),e.modelPosition}toViewPosition(t,e={isPhantom:!1}){const o={modelPosition:t,mapper:this,isPhantom:e.isPhantom};return this.fire("modelToViewPosition",o),o.viewPosition}markerNameToElements(t){const e=this._markerNameToElements.get(t);if(!e)return null;const o=new Set;for(const t of e)if(t.is("attributeElement"))for(const e of t.getElementsWithSameId())o.add(e);else o.add(t);return o}registerViewToModelLength(t,e){this._viewToModelLengthCallbacks.set(t,e)}findMappedViewAncestor(t){let e=t.parent;for(;!this._viewToModelMapping.has(e);)e=e.parent;return e}_toModelOffset(t,e,o){if(o!=t){return this._toModelOffset(t.parent,t.index,o)+this._toModelOffset(t,e,t)}if(t.is("text"))return e;let i=0;for(let o=0;o1?e[0]+":"+e[1]:e[0]}class Ss{constructor(t){this.conversionApi=Fi({dispatcher:this},t)}convertChanges(t,e,o){for(const e of t.getMarkersToRemove())this.convertMarkerRemove(e.name,e.range,o);for(const e of t.getChanges())"insert"==e.type?this.convertInsert(Cs._createFromPositionAndShift(e.position,e.length),o):"remove"==e.type?this.convertRemove(e.position,e.length,e.name,o):this.convertAttribute(e.range,e.attributeKey,e.attributeOldValue,e.attributeNewValue,o);for(const t of this.conversionApi.mapper.flushUnboundMarkerNames()){const i=e.get(t).getRange();this.convertMarkerRemove(t,i,o),this.convertMarkerAdd(t,i,o)}for(const e of t.getMarkersToAdd())this.convertMarkerAdd(e.name,e.range,o)}convertInsert(t,e){this.conversionApi.writer=e,this.conversionApi.consumable=this._createInsertConsumable(t);for(const e of t){const t=e.item,o={item:t,range:Cs._createFromPositionAndShift(e.previousPosition,e.length)};this._testAndFire("insert",o);for(const e of t.getAttributeKeys())o.attributeKey=e,o.attributeOldValue=null,o.attributeNewValue=t.getAttribute(e),this._testAndFire("attribute:"+e,o)}this._clearConversionApi()}convertRemove(t,e,o,i){this.conversionApi.writer=i,this.fire("remove:"+o,{position:t,length:e},this.conversionApi),this._clearConversionApi()}convertAttribute(t,e,o,i,n){this.conversionApi.writer=n,this.conversionApi.consumable=this._createConsumableForRange(t,"attribute:"+e);for(const n of t){const t={item:n.item,range:Cs._createFromPositionAndShift(n.previousPosition,n.length),attributeKey:e,attributeOldValue:o,attributeNewValue:i};this._testAndFire("attribute:"+e,t)}this._clearConversionApi()}convertSelection(t,e,o){const i=Array.from(e.getMarkersAtPosition(t.getFirstPosition()));if(this.conversionApi.writer=o,this.conversionApi.consumable=this._createSelectionConsumable(t,i),this.fire("selection",{selection:t},this.conversionApi),t.isCollapsed){for(const e of i){const o=e.getRange();if(!Es(t.getFirstPosition(),e,this.conversionApi.mapper))continue;const i={item:t,markerName:e.name,markerRange:o};this.conversionApi.consumable.test(t,"addMarker:"+e.name)&&this.fire("addMarker:"+e.name,i,this.conversionApi)}for(const e of t.getAttributeKeys()){const o={item:t,range:t.getFirstRange(),attributeKey:e,attributeOldValue:null,attributeNewValue:t.getAttribute(e)};this.conversionApi.consumable.test(t,"attribute:"+o.attributeKey)&&this.fire("attribute:"+o.attributeKey+":$text",o,this.conversionApi)}this._clearConversionApi()}}convertMarkerAdd(t,e,o){if(!e.root.document||"$graveyard"==e.root.rootName)return;this.conversionApi.writer=o;const i="addMarker:"+t,n=new Ts;if(n.add(e,i),this.conversionApi.consumable=n,this.fire(i,{markerName:t,markerRange:e},this.conversionApi),n.test(e,i)){this.conversionApi.consumable=this._createConsumableForRange(e,i);for(const o of e.getItems()){if(!this.conversionApi.consumable.test(o,i))continue;const n={item:o,range:Cs._createOn(o),markerName:t,markerRange:e};this.fire(i,n,this.conversionApi)}this._clearConversionApi()}}convertMarkerRemove(t,e,o){e.root.document&&"$graveyard"!=e.root.rootName&&(this.conversionApi.writer=o,this.fire("removeMarker:"+t,{markerName:t,markerRange:e},this.conversionApi),this._clearConversionApi())}_createInsertConsumable(t){const e=new Ts;for(const o of t){const t=o.item;e.add(t,"insert");for(const o of t.getAttributeKeys())e.add(t,"attribute:"+o)}return e}_createConsumableForRange(t,e){const o=new Ts;for(const i of t.getItems())o.add(i,e);return o}_createSelectionConsumable(t,e){const o=new Ts;o.add(t,"selection");for(const i of e)o.add(t,"addMarker:"+i.name);for(const e of t.getAttributeKeys())o.add(t,"attribute:"+e);return o}_testAndFire(t,e){if(!this.conversionApi.consumable.test(e.item,t))return;const o=e.item.name||"$text";this.fire(t+":"+o,e,this.conversionApi)}_clearConversionApi(){delete this.conversionApi.writer,delete this.conversionApi.consumable}}function Es(t,e,o){const i=e.getRange(),n=Array.from(t.getAncestors());n.shift(),n.reverse();return!n.some(t=>{if(i.containsItem(t)){return!!o.toViewElement(t).getCustomProperty("addHighlight")}})}Co(Ss,po);class Rs{constructor(t,e,o){this._lastRangeBackward=!1,this._ranges=[],this._attrs=new Map,t&&this.setTo(t,e,o)}get anchor(){if(this._ranges.length>0){const t=this._ranges[this._ranges.length-1];return this._lastRangeBackward?t.end:t.start}return null}get focus(){if(this._ranges.length>0){const t=this._ranges[this._ranges.length-1];return this._lastRangeBackward?t.start:t.end}return null}get isCollapsed(){return 1===this._ranges.length&&this._ranges[0].isCollapsed}get rangeCount(){return this._ranges.length}get isBackward(){return!this.isCollapsed&&this._lastRangeBackward}isEqual(t){if(this.rangeCount!=t.rangeCount)return!1;if(0===this.rangeCount)return!0;if(!this.anchor.isEqual(t.anchor)||!this.focus.isEqual(t.focus))return!1;for(const e of this._ranges){let o=!1;for(const i of t._ranges)if(e.isEqual(i)){o=!0;break}if(!o)return!1}return!0}*getRanges(){for(const t of this._ranges)yield new Cs(t.start,t.end)}getFirstRange(){let t=null;for(const e of this._ranges)t&&!e.start.isBefore(t.start)||(t=e);return t?new Cs(t.start,t.end):null}getLastRange(){let t=null;for(const e of this._ranges)t&&!e.end.isAfter(t.end)||(t=e);return t?new Cs(t.start,t.end):null}getFirstPosition(){const t=this.getFirstRange();return t?t.start.clone():null}getLastPosition(){const t=this.getLastRange();return t?t.end.clone():null}setTo(t,e,o){if(null===t)this._setRanges([]);else if(t instanceof Rs)this._setRanges(t.getRanges(),t.isBackward);else if(t&&"function"==typeof t.getRanges)this._setRanges(t.getRanges(),t.isBackward);else if(t instanceof Cs)this._setRanges([t],!!e&&!!e.backward);else if(t instanceof _s)this._setRanges([new Cs(t)]);else if(t instanceof gs){const i=!!o&&!!o.backward;let n;if("in"==e)n=Cs._createIn(t);else if("on"==e)n=Cs._createOn(t);else{if(void 0===e)throw new go.b("model-selection-setTo-required-second-parameter: selection.setTo requires the second parameter when the first parameter is a node.",[this,t]);n=new Cs(_s._createAt(t,e))}this._setRanges([n],i)}else{if(!xo(t))throw new go.b("model-selection-setTo-not-selectable: Cannot set the selection to the given place.",[this,t]);this._setRanges(t,e&&!!e.backward)}}_setRanges(t,e=!1){const o=(t=Array.from(t)).some(e=>{if(!(e instanceof Cs))throw new go.b("model-selection-set-ranges-not-range: Selection range set to an object that is not an instance of model.Range.",[this,t]);return this._ranges.every(t=>!t.isEqual(e))});if(t.length!==this._ranges.length||o){this._removeAllRanges();for(const e of t)this._pushRange(e);this._lastRangeBackward=!!e,this.fire("change:range",{directChange:!0})}}setFocus(t,e){if(null===this.anchor)throw new go.b("model-selection-setFocus-no-ranges: Cannot set selection focus if there are no ranges in selection.",[this,t]);const o=_s._createAt(t,e);if("same"==o.compareWith(this.focus))return;const i=this.anchor;this._ranges.length&&this._popRange(),"before"==o.compareWith(i)?(this._pushRange(new Cs(o,i)),this._lastRangeBackward=!0):(this._pushRange(new Cs(i,o)),this._lastRangeBackward=!1),this.fire("change:range",{directChange:!0})}getAttribute(t){return this._attrs.get(t)}getAttributes(){return this._attrs.entries()}getAttributeKeys(){return this._attrs.keys()}hasAttribute(t){return this._attrs.has(t)}removeAttribute(t){this.hasAttribute(t)&&(this._attrs.delete(t),this.fire("change:attribute",{attributeKeys:[t],directChange:!0}))}setAttribute(t,e){this.getAttribute(t)!==e&&(this._attrs.set(t,e),this.fire("change:attribute",{attributeKeys:[t],directChange:!0}))}getSelectedElement(){return 1!==this.rangeCount?null:this.getFirstRange().getContainedElement()}is(t){return"selection"===t||"model:selection"===t}*getSelectedBlocks(){const t=new WeakSet;for(const e of this.getRanges()){const o=Os(e.start,t);o&&Ms(o,e)&&(yield o);for(const o of e.getWalker()){const i=o.item;"elementEnd"==o.type&&Vs(i,t,e)&&(yield i)}const i=Os(e.end,t);i&&!e.end.isTouching(_s._createAt(i,0))&&Ms(i,e)&&(yield i)}}containsEntireContent(t=this.anchor.root){const e=_s._createAt(t,0),o=_s._createAt(t,"end");return e.isTouching(this.getFirstPosition())&&o.isTouching(this.getLastPosition())}_pushRange(t){this._checkRange(t),this._ranges.push(new Cs(t.start,t.end))}_checkRange(t){for(let e=0;e0;)this._popRange()}_popRange(){this._ranges.pop()}}function Is(t,e){return!e.has(t)&&(e.add(t),t.root.document.model.schema.isBlock(t)&&t.parent)}function Vs(t,e,o){return Is(t,e)&&Ms(t,o)}function Os(t,e){const o=t.parent.root.document.model.schema,i=t.parent.getAncestors({parentFirst:!0,includeSelf:!0});let n=!1;const r=i.find(t=>!n&&(n=o.isLimit(t),!n&&Is(t,e)));return i.forEach(t=>e.add(t)),r}function Ms(t,e){const o=function(t){const e=t.root.document.model.schema;let o=t.parent;for(;o;){if(e.isBlock(o))return o;o=o.parent}}(t);if(!o)return!0;return!e.containsRange(Cs._createOn(o),!0)}Co(Rs,po);class Ns extends Cs{constructor(t,e){super(t,e),Bs.call(this)}detach(){this.stopListening()}is(t){return"liveRange"===t||"model:liveRange"===t||"range"==t||"model:range"===t}toRange(){return new Cs(this.start,this.end)}static fromRange(t){return new Ns(t.start,t.end)}}function Bs(){this.listenTo(this.root.document.model,"applyOperation",(t,e)=>{const o=e[0];o.isDocumentOperation&&zs.call(this,o)},{priority:"low"})}function zs(t){const e=this.getTransformedByOperation(t),o=Cs._createFromRanges(e),i=!o.isEqual(this),n=function(t,e){switch(e.type){case"insert":return t.containsPosition(e.position);case"move":case"remove":case"reinsert":case"merge":return t.containsPosition(e.sourcePosition)||t.start.isEqual(e.sourcePosition)||t.containsPosition(e.targetPosition);case"split":return t.containsPosition(e.splitPosition)||t.containsPosition(e.insertionPosition)}return!1}(this,t);let r=null;if(i){"$graveyard"==o.root.rootName&&(r="remove"==t.type?t.sourcePosition:t.deletionPosition);const e=this.toRange();this.start=o.start,this.end=o.end,this.fire("change:range",e,{deletionPosition:r})}else n&&this.fire("change:content",this.toRange(),{deletionPosition:r})}Co(Ns,po);class Fs{constructor(t){this._selection=new Ds(t),this._selection.delegate("change:range").to(this),this._selection.delegate("change:attribute").to(this),this._selection.delegate("change:marker").to(this)}get isCollapsed(){return this._selection.isCollapsed}get anchor(){return this._selection.anchor}get focus(){return this._selection.focus}get rangeCount(){return this._selection.rangeCount}get hasOwnRange(){return this._selection.hasOwnRange}get isBackward(){return this._selection.isBackward}get isGravityOverridden(){return this._selection.isGravityOverridden}get markers(){return this._selection.markers}get _ranges(){return this._selection._ranges}getRanges(){return this._selection.getRanges()}getFirstPosition(){return this._selection.getFirstPosition()}getLastPosition(){return this._selection.getLastPosition()}getFirstRange(){return this._selection.getFirstRange()}getLastRange(){return this._selection.getLastRange()}getSelectedBlocks(){return this._selection.getSelectedBlocks()}getSelectedElement(){return this._selection.getSelectedElement()}containsEntireContent(t){return this._selection.containsEntireContent(t)}destroy(){this._selection.destroy()}getAttributeKeys(){return this._selection.getAttributeKeys()}getAttributes(){return this._selection.getAttributes()}getAttribute(t){return this._selection.getAttribute(t)}hasAttribute(t){return this._selection.hasAttribute(t)}refresh(){this._selection._updateMarkers(),this._selection._updateAttributes(!1)}is(t){return"selection"===t||"model:selection"==t||"documentSelection"==t||"model:documentSelection"==t}_setFocus(t,e){this._selection.setFocus(t,e)}_setTo(t,e,o){this._selection.setTo(t,e,o)}_setAttribute(t,e){this._selection.setAttribute(t,e)}_removeAttribute(t){this._selection.removeAttribute(t)}_getStoredAttributes(){return this._selection._getStoredAttributes()}_overrideGravity(){return this._selection.overrideGravity()}_restoreGravity(t){this._selection.restoreGravity(t)}static _getStoreAttributeKey(t){return"selection:"+t}static _isStoreAttributeKey(t){return t.startsWith("selection:")}}Co(Fs,po);class Ds extends Rs{constructor(t){super(),this.markers=new Ao({idProperty:"name"}),this._model=t.model,this._document=t,this._attributePriority=new Map,this._fixGraveyardRangesData=[],this._hasChangedRange=!1,this._overriddenGravityRegister=new Set,this.listenTo(this._model,"applyOperation",(t,e)=>{const o=e[0];if(o.isDocumentOperation&&"marker"!=o.type&&"rename"!=o.type&&"noop"!=o.type){for(;this._fixGraveyardRangesData.length;){const{liveRange:t,sourcePosition:e}=this._fixGraveyardRangesData.shift();this._fixGraveyardSelection(t,e)}this._hasChangedRange&&(this._hasChangedRange=!1,this.fire("change:range",{directChange:!1}))}},{priority:"lowest"}),this.on("change:range",()=>{for(const t of this.getRanges())if(!this._document._validateSelectionRange(t))throw new go.b("document-selection-wrong-position: Range from document selection starts or ends at incorrect position.",this,{range:t})}),this.listenTo(this._model.markers,"update",()=>this._updateMarkers()),this.listenTo(this._document,"change",(t,e)=>{!function(t,e){const o=t.document.differ;for(const i of o.getChanges()){if("insert"!=i.type)continue;const o=i.position.parent;i.length===o.maxOffset&&t.enqueueChange(e,t=>{const e=Array.from(o.getAttributeKeys()).filter(t=>t.startsWith("selection:"));for(const i of e)t.removeAttribute(i,o)})}}(this._model,e)})}get isCollapsed(){return 0===this._ranges.length?this._document._getDefaultRange().isCollapsed:super.isCollapsed}get anchor(){return super.anchor||this._document._getDefaultRange().start}get focus(){return super.focus||this._document._getDefaultRange().end}get rangeCount(){return this._ranges.length?this._ranges.length:1}get hasOwnRange(){return this._ranges.length>0}get isGravityOverridden(){return!!this._overriddenGravityRegister.size}destroy(){for(let t=0;t{this._hasChangedRange=!0,e.root==this._document.graveyard&&this._fixGraveyardRangesData.push({liveRange:e,sourcePosition:i.deletionPosition})}),e}_updateMarkers(){const t=[];let e=!1;for(const e of this._model.markers){const o=e.getRange();for(const i of this.getRanges())o.containsRange(i,!i.isCollapsed)&&t.push(e)}const o=Array.from(this.markers);for(const o of t)this.markers.has(o)||(this.markers.add(o),e=!0);for(const o of Array.from(this.markers))t.includes(o)||(this.markers.remove(o),e=!0);e&&this.fire("change:marker",{oldMarkers:o,directChange:!1})}_updateAttributes(t){const e=zo(this._getSurroundingAttributes()),o=zo(this.getAttributes());if(t)this._attributePriority=new Map,this._attrs=new Map;else for(const[t,e]of this._attributePriority)"low"==e&&(this._attrs.delete(t),this._attributePriority.delete(t));this._setAttributesTo(e);const i=[];for(const[t,e]of this.getAttributes())o.has(t)&&o.get(t)===e||i.push(t);for(const[t]of o)this.hasAttribute(t)||i.push(t);i.length>0&&this.fire("change:attribute",{attributeKeys:i,directChange:!1})}_setAttribute(t,e,o=!0){const i=o?"normal":"low";if("low"==i&&"normal"==this._attributePriority.get(t))return!1;return super.getAttribute(t)!==e&&(this._attrs.set(t,e),this._attributePriority.set(t,i),!0)}_removeAttribute(t,e=!0){const o=e?"normal":"low";return("low"!=o||"normal"!=this._attributePriority.get(t))&&(this._attributePriority.set(t,o),!!super.hasAttribute(t)&&(this._attrs.delete(t),!0))}_setAttributesTo(t){const e=new Set;for(const[e,o]of this.getAttributes())t.get(e)!==o&&this._removeAttribute(e,!1);for(const[o,i]of t){this._setAttribute(o,i,!1)&&e.add(o)}return e}*_getStoredAttributes(){const t=this.getFirstPosition().parent;if(this.isCollapsed&&t.isEmpty)for(const e of t.getAttributeKeys())if(e.startsWith("selection:")){const o=e.substr("selection:".length);yield[o,t.getAttribute(e)]}}_getSurroundingAttributes(){const t=this.getFirstPosition(),e=this._model.schema;let o=null;if(this.isCollapsed){const e=t.textNode?t.textNode:t.nodeBefore,i=t.textNode?t.textNode:t.nodeAfter;if(this.isGravityOverridden||(o=Ls(e)),o||(o=Ls(i)),!this.isGravityOverridden&&!o){let t=e;for(;t&&!o;)t=t.previousSibling,o=Ls(t)}if(!o){let t=i;for(;t&&!o;)t=t.nextSibling,o=Ls(t)}o||(o=this._getStoredAttributes())}else{const t=this.getFirstRange();for(const i of t){if(i.item.is("element")&&e.isObject(i.item))break;if("text"==i.type){o=i.item.getAttributes();break}}}return o}_fixGraveyardSelection(t,e){const o=e.clone(),i=this._model.schema.getNearestSelectionRange(o),n=this._ranges.indexOf(t);if(this._ranges.splice(n,1),t.detach(),i&&(r=i,this._ranges.every(t=>!r.isEqual(t)))){const t=this._prepareRange(i);this._ranges.splice(n,0,t)}var r}}function Ls(t){return t instanceof fs||t instanceof ms?t.getAttributes():null}class js{constructor(t){this._dispatchers=t}add(t){for(const e of this._dispatchers)t(e);return this}}var Hs=function(t){return eo(t,5)};class Ws extends js{elementToElement(t){return this.add(function(t){return(t=Hs(t)).view=Us(t.view,"container"),e=>{var o;e.on("insert:"+t.model,(o=t.view,(t,e,i)=>{const n=o(e.item,i.writer);if(!n)return;if(!i.consumable.consume(e.item,"insert"))return;const r=i.mapper.toViewPosition(e.range.start);i.mapper.bindElements(e.item,n),i.writer.insert(r,n)}),{priority:t.converterPriority||"normal"})}}(t))}attributeToElement(t){return this.add(function(t){t=Hs(t);let e="attribute:"+(t.model.key?t.model.key:t.model);t.model.name&&(e+=":"+t.model.name);if(t.model.values)for(const e of t.model.values)t.view[e]=Us(t.view[e],"attribute");else t.view=Us(t.view,"attribute");const o=$s(t);return i=>{i.on(e,function(t){return(e,o,i)=>{const n=t(o.attributeOldValue,i.writer),r=t(o.attributeNewValue,i.writer);if(!n&&!r)return;if(!i.consumable.consume(o.item,e.name))return;const s=i.writer,a=s.document.selection;if(o.item instanceof Rs||o.item instanceof Fs)s.wrap(a.getFirstRange(),r);else{let t=i.mapper.toViewRange(o.range);null!==o.attributeOldValue&&n&&(t=s.unwrap(t,n)),null!==o.attributeNewValue&&r&&s.wrap(t,r)}}}(o),{priority:t.converterPriority||"normal"})}}(t))}attributeToAttribute(t){return this.add(function(t){t=Hs(t);let e="attribute:"+(t.model.key?t.model.key:t.model);t.model.name&&(e+=":"+t.model.name);if(t.model.values)for(const e of t.model.values)t.view[e]=Gs(t.view[e]);else t.view=Gs(t.view);const o=$s(t);return i=>{var n;i.on(e,(n=o,(t,e,o)=>{const i=n(e.attributeOldValue,e),r=n(e.attributeNewValue,e);if(!i&&!r)return;if(!o.consumable.consume(e.item,t.name))return;const s=o.mapper.toViewElement(e.item),a=o.writer;if(!s)throw new go.b("conversion-attribute-to-attribute-on-text: Trying to convert text node's attribute with attribute-to-attribute converter.",[e,o]);if(null!==e.attributeOldValue&&i)if("class"==i.key){const t=Array.isArray(i.value)?i.value:[i.value];for(const e of t)a.removeClass(e,s)}else if("style"==i.key){const t=Object.keys(i.value);for(const e of t)a.removeStyle(e,s)}else a.removeAttribute(i.key,s);if(null!==e.attributeNewValue&&r)if("class"==r.key){const t=Array.isArray(r.value)?r.value:[r.value];for(const e of t)a.addClass(e,s)}else if("style"==r.key){const t=Object.keys(r.value);for(const e of t)a.setStyle(e,r.value[e],s)}else a.setAttribute(r.key,r.value,s)}),{priority:t.converterPriority||"normal"})}}(t))}markerToElement(t){return this.add(function(t){return(t=Hs(t)).view=Us(t.view,"ui"),e=>{var o;e.on("addMarker:"+t.model,(o=t.view,(t,e,i)=>{e.isOpening=!0;const n=o(e,i.writer);e.isOpening=!1;const r=o(e,i.writer);if(!n||!r)return;const s=e.markerRange;if(s.isCollapsed&&!i.consumable.consume(s,t.name))return;for(const e of s)if(!i.consumable.consume(e.item,t.name))return;const a=i.mapper,l=i.writer;l.insert(a.toViewPosition(s.start),n),i.mapper.bindElementToMarker(n,e.markerName),s.isCollapsed||(l.insert(a.toViewPosition(s.end),r),i.mapper.bindElementToMarker(r,e.markerName)),t.stop()}),{priority:t.converterPriority||"normal"}),e.on("removeMarker:"+t.model,(t.view,(t,e,o)=>{const i=o.mapper.markerNameToElements(e.markerName);if(i){for(const t of i)o.mapper.unbindElementFromMarkerName(t,e.markerName),o.writer.clear(o.writer.createRangeOn(t),t);o.writer.clearClonedElementsGroup(e.markerName),t.stop()}}),{priority:t.converterPriority||"normal"})}}(t))}markerToHighlight(t){return this.add(function(t){return e=>{var o;e.on("addMarker:"+t.model,(o=t.view,(t,e,i)=>{if(!e.item)return;if(!(e.item instanceof Rs||e.item instanceof Fs||e.item.is("textProxy")))return;const n=Ks(o,e,i);if(!n)return;if(!i.consumable.consume(e.item,t.name))return;const r=i.writer,s=qs(r,n),a=r.document.selection;if(e.item instanceof Rs||e.item instanceof Fs)r.wrap(a.getFirstRange(),s,a);else{const t=i.mapper.toViewRange(e.range),o=r.wrap(t,s);for(const t of o.getItems())if(t.is("attributeElement")&&t.isSimilar(s)){i.mapper.bindElementToMarker(t,e.markerName);break}}}),{priority:t.converterPriority||"normal"}),e.on("addMarker:"+t.model,function(t){return(e,o,i)=>{if(!o.item)return;if(!(o.item instanceof bs))return;const n=Ks(t,o,i);if(!n)return;if(!i.consumable.test(o.item,e.name))return;const r=i.mapper.toViewElement(o.item);if(r&&r.getCustomProperty("addHighlight")){i.consumable.consume(o.item,e.name);for(const t of Cs._createIn(o.item))i.consumable.consume(t.item,e.name);r.getCustomProperty("addHighlight")(r,n,i.writer),i.mapper.bindElementToMarker(r,o.markerName)}}}(t.view),{priority:t.converterPriority||"normal"}),e.on("removeMarker:"+t.model,function(t){return(e,o,i)=>{if(o.markerRange.isCollapsed)return;const n=Ks(t,o,i);if(!n)return;const r=qs(i.writer,n),s=i.mapper.markerNameToElements(o.markerName);if(s){for(const t of s)i.mapper.unbindElementFromMarkerName(t,o.markerName),t.is("attributeElement")?i.writer.unwrap(i.writer.createRangeOn(t),r):t.getCustomProperty("removeHighlight")(t,n.id,i.writer);i.writer.clearClonedElementsGroup(o.markerName),e.stop()}}}(t.view),{priority:t.converterPriority||"normal"})}}(t))}}function qs(t,e){const o=t.createAttributeElement("span",e.attributes);return e.classes&&o._addClass(e.classes),e.priority&&(o._priority=e.priority),o._id=e.id,o}function Us(t,e){return"function"==typeof t?t:(o,i)=>function(t,e,o){"string"==typeof t&&(t={name:t});let i;const n=Object.assign({},t.attributes);if("container"==o)i=e.createContainerElement(t.name,n);else if("attribute"==o){const o={priority:t.priority||an.DEFAULT_PRIORITY};i=e.createAttributeElement(t.name,n,o)}else i=e.createUIElement(t.name,n);if(t.styles){const o=Object.keys(t.styles);for(const n of o)e.setStyle(n,t.styles[n],i)}if(t.classes){const o=t.classes;if("string"==typeof o)e.addClass(o,i);else for(const t of o)e.addClass(t,i)}return i}(t,i,e)}function $s(t){return t.model.values?(e,o)=>{const i=t.view[e];return i?i(e,o):null}:t.view}function Gs(t){return"string"==typeof t?e=>({key:t,value:e}):"object"==typeof t?t.value?()=>t:e=>({key:t.key,value:e}):t}function Ks(t,e,o){const i="function"==typeof t?t(e,o):t;return i?(i.priority||(i.priority=10),i.id||(i.id=e.markerName),i):null}class Js extends js{elementToElement(t){return this.add(Ys(t))}elementToAttribute(t){return this.add(function(t){Xs(t=Hs(t));const e=Zs(t,!1),o=Qs(t.view),i=o?"element:"+o:"element";return o=>{o.on(i,e,{priority:t.converterPriority||"low"})}}(t))}attributeToAttribute(t){return this.add(function(t){t=Hs(t);let e=null;("string"==typeof t.view||t.view.key)&&(e=function(t){"string"==typeof t.view&&(t.view={key:t.view});const e=t.view.key;let o;if("class"==e||"style"==e){o={["class"==e?"classes":"styles"]:t.view.value}}else{const i=void 0===t.view.value?/[\s\S]*/:t.view.value;o={attributes:{[e]:i}}}t.view.name&&(o.name=t.view.name);return t.view=o,e}(t));Xs(t,e);const o=Zs(t,!0);return e=>{e.on("element",o,{priority:t.converterPriority||"low"})}}(t))}elementToMarker(t){return this.add(function(t){return function(t){const e=t.model;t.model=(t,o)=>{const i="string"==typeof e?e:e(t);return o.createElement("$marker",{"data-name":i})}}(t=Hs(t)),Ys(t)}(t))}}function Ys(t){const e=function(t){const e=t.view?new Fo(t.view):null;return(o,i,n)=>{let r={};if(e){const t=e.match(i.viewItem);if(!t)return;r=t.match}r.name=!0;const s=(a=t.model,l=i.viewItem,c=n.writer,a instanceof Function?a(l,c):c.createElement(a));var a,l,c;if(!s)return;if(!n.consumable.test(i.viewItem,r))return;const d=n.splitToAllowedParent(s,i.modelCursor);if(!d)return;n.writer.insert(s,d.position),n.convertChildren(i.viewItem,n.writer.createPositionAt(s,0)),n.consumable.consume(i.viewItem,r);const h=n.getSplitParts(s);i.modelRange=new Cs(n.writer.createPositionBefore(s),n.writer.createPositionAfter(h[h.length-1])),d.cursorParent?i.modelCursor=n.writer.createPositionAt(d.cursorParent,0):i.modelCursor=i.modelRange.end}}(t=Hs(t)),o=Qs(t.view),i=o?"element:"+o:"element";return o=>{o.on(i,e,{priority:t.converterPriority||"normal"})}}function Qs(t){return"string"==typeof t?t:"object"==typeof t&&"string"==typeof t.name?t.name:null}function Xs(t,e=null){const o=null===e||(t=>t.getAttribute(e)),i="object"!=typeof t.model?t.model:t.model.key,n="object"!=typeof t.model||void 0===t.model.value?o:t.model.value;t.model={key:i,value:n}}function Zs(t,e){const o=new Fo(t.view);return(i,n,r)=>{const s=o.match(n.viewItem);if(!s)return;const a=t.model.key,l="function"==typeof t.model.value?t.model.value(n.viewItem):t.model.value;if(null===l)return;if(!function(t,e){const o="function"==typeof t?t(e):t;if("object"==typeof o&&!Qs(o))return!1;return!o.classes&&!o.attributes&&!o.styles}(t.view,n.viewItem)?delete s.match.name:s.match.name=!0,!r.consumable.test(n.viewItem,s.match))return;n.modelRange||(n=Object.assign(n,r.convertChildren(n.viewItem,n.modelCursor)));(function(t,e,o,i){let n=!1;for(const r of Array.from(t.getItems({shallow:o})))i.schema.checkAttribute(r,e.key)&&(i.writer.setAttribute(e.key,e.value,r),n=!0);return n})(n.modelRange,{key:a,value:l},e,r)&&r.consumable.consume(n.viewItem,s.match)}}class ta{constructor(t,e){this.model=t,this.view=new us(e),this.mapper=new As,this.downcastDispatcher=new Ss({mapper:this.mapper});const o=this.model.document,i=o.selection,n=this.model.markers;this.listenTo(this.model,"_beforeChanges",()=>{this.view._disableRendering(!0)},{priority:"highest"}),this.listenTo(this.model,"_afterChanges",()=>{this.view._disableRendering(!1)},{priority:"lowest"}),this.listenTo(o,"change",()=>{this.view.change(t=>{this.downcastDispatcher.convertChanges(o.differ,n,t),this.downcastDispatcher.convertSelection(i,n,t)})},{priority:"low"}),this.listenTo(this.view.document,"selectionChange",function(t,e){return(o,i)=>{const n=i.newSelection,r=new Rs,s=[];for(const t of n.getRanges())s.push(e.toModelRange(t));r.setTo(s,{backward:n.isBackward}),r.isEqual(t.document.selection)||t.change(t=>{t.setSelection(r)})}}(this.model,this.mapper)),this.downcastDispatcher.on("insert:$text",(t,e,o)=>{if(!o.consumable.consume(e.item,"insert"))return;const i=o.writer,n=o.mapper.toViewPosition(e.range.start),r=i.createText(e.item.data);i.insert(n,r)},{priority:"lowest"}),this.downcastDispatcher.on("remove",(t,e,o)=>{const i=o.mapper.toViewPosition(e.position),n=e.position.getShiftedBy(e.length),r=o.mapper.toViewPosition(n,{isPhantom:!0}),s=o.writer.createRange(i,r),a=o.writer.remove(s.getTrimmed());for(const t of o.writer.createRangeIn(a).getItems())o.mapper.unbindViewElement(t)},{priority:"low"}),this.downcastDispatcher.on("selection",(t,e,o)=>{const i=o.writer,n=i.document.selection;for(const t of n.getRanges())t.isCollapsed&&t.end.parent.isAttached()&&o.writer.mergeAttributes(t.start);i.setSelection(null)},{priority:"low"}),this.downcastDispatcher.on("selection",(t,e,o)=>{const i=e.selection;if(i.isCollapsed)return;if(!o.consumable.consume(i,"selection"))return;const n=[];for(const t of i.getRanges()){const e=o.mapper.toViewRange(t);n.push(e)}o.writer.setSelection(n,{backward:i.isBackward})},{priority:"low"}),this.downcastDispatcher.on("selection",(t,e,o)=>{const i=e.selection;if(!i.isCollapsed)return;if(!o.consumable.consume(i,"selection"))return;const n=o.writer,r=i.getFirstPosition(),s=o.mapper.toViewPosition(r),a=n.breakAttributes(s);n.setSelection(a)},{priority:"low"}),this.view.document.roots.bindTo(this.model.document.roots).using(t=>{if("$graveyard"==t.rootName)return null;const e=new Qi(this.view.document,t.name);return e.rootName=t.rootName,this.mapper.bindElements(t,e),e})}destroy(){this.view.destroy(),this.stopListening()}}Co(ta,Wi);class ea{constructor(){this._commands=new Map}add(t,e){this._commands.set(t,e)}get(t){return this._commands.get(t)}execute(t,...e){const o=this.get(t);if(!o)throw new go.b("commandcollection-command-not-found: Command does not exist.",this,{commandName:t});o.execute(...e)}*names(){yield*this._commands.keys()}*commands(){yield*this._commands.values()}[Symbol.iterator](){return this._commands[Symbol.iterator]()}destroy(){for(const t of this.commands())t.destroy()}}class oa{constructor(){this._consumables=new Map}add(t,e){let o;t.is("text")||t.is("documentFragment")?this._consumables.set(t,!0):(this._consumables.has(t)?o=this._consumables.get(t):(o=new ia(t),this._consumables.set(t,o)),o.add(e))}test(t,e){const o=this._consumables.get(t);return void 0===o?null:t.is("text")||t.is("documentFragment")?o:o.test(e)}consume(t,e){return!!this.test(t,e)&&(t.is("text")||t.is("documentFragment")?this._consumables.set(t,!1):this._consumables.get(t).consume(e),!0)}revert(t,e){const o=this._consumables.get(t);void 0!==o&&(t.is("text")||t.is("documentFragment")?this._consumables.set(t,!0):o.revert(e))}static consumablesFromElement(t){const e={element:t,name:!0,attributes:[],classes:[],styles:[]},o=t.getAttributeKeys();for(const t of o)"style"!=t&&"class"!=t&&e.attributes.push(t);const i=t.getClassNames();for(const t of i)e.classes.push(t);const n=t.getStyleNames();for(const t of n)e.styles.push(t);return e}static createFrom(t,e){if(e||(e=new oa(t)),t.is("text"))return e.add(t),e;t.is("element")&&e.add(t,oa.consumablesFromElement(t)),t.is("documentFragment")&&e.add(t);for(const o of t.getChildren())e=oa.createFrom(o,e);return e}}class ia{constructor(t){this.element=t,this._canConsumeName=null,this._consumables={attributes:new Map,styles:new Map,classes:new Map}}add(t){t.name&&(this._canConsumeName=!0);for(const e in this._consumables)e in t&&this._add(e,t[e])}test(t){if(t.name&&!this._canConsumeName)return this._canConsumeName;for(const e in this._consumables)if(e in t){const o=this._test(e,t[e]);if(!0!==o)return o}return!0}consume(t){t.name&&(this._canConsumeName=!1);for(const e in this._consumables)e in t&&this._consume(e,t[e])}revert(t){t.name&&(this._canConsumeName=!0);for(const e in this._consumables)e in t&&this._revert(e,t[e])}_add(t,e){const o=Bt(e)?e:[e],i=this._consumables[t];for(const e of o){if("attributes"===t&&("class"===e||"style"===e))throw new go.b("viewconsumable-invalid-attribute: Classes and styles should be handled separately.",this);if(i.set(e,!0),"styles"===t)for(const t of this.element.document.stylesProcessor.getRelatedStyles(e))i.set(t,!0)}}_test(t,e){const o=Bt(e)?e:[e],i=this._consumables[t];for(const e of o)if("attributes"!==t||"class"!==e&&"style"!==e){const t=i.get(e);if(void 0===t)return null;if(!t)return!1}else{const t="class"==e?"classes":"styles",o=this._test(t,[...this._consumables[t].keys()]);if(!0!==o)return o}return!0}_consume(t,e){const o=Bt(e)?e:[e],i=this._consumables[t];for(const e of o)if("attributes"!==t||"class"!==e&&"style"!==e){if(i.set(e,!1),"styles"==t)for(const t of this.element.document.stylesProcessor.getRelatedStyles(e))i.set(t,!1)}else{const t="class"==e?"classes":"styles";this._consume(t,[...this._consumables[t].keys()])}}_revert(t,e){const o=Bt(e)?e:[e],i=this._consumables[t];for(const e of o)if("attributes"!==t||"class"!==e&&"style"!==e){!1===i.get(e)&&i.set(e,!0)}else{const t="class"==e?"classes":"styles";this._revert(t,[...this._consumables[t].keys()])}}}class na{constructor(){this._sourceDefinitions={},this._attributeProperties={},this.decorate("checkChild"),this.decorate("checkAttribute"),this.on("checkAttribute",(t,e)=>{e[0]=new ra(e[0])},{priority:"highest"}),this.on("checkChild",(t,e)=>{e[0]=new ra(e[0]),e[1]=this.getDefinition(e[1])},{priority:"highest"})}register(t,e){if(this._sourceDefinitions[t])throw new go.b("schema-cannot-register-item-twice: A single item cannot be registered twice in the schema.",this,{itemName:t});this._sourceDefinitions[t]=[Object.assign({},e)],this._clearCache()}extend(t,e){if(!this._sourceDefinitions[t])throw new go.b("schema-cannot-extend-missing-item: Cannot extend an item which was not registered yet.",this,{itemName:t});this._sourceDefinitions[t].push(Object.assign({},e)),this._clearCache()}getDefinitions(){return this._compiledDefinitions||this._compile(),this._compiledDefinitions}getDefinition(t){let e;return e="string"==typeof t?t:t.is&&(t.is("text")||t.is("textProxy"))?"$text":t.name,this.getDefinitions()[e]}isRegistered(t){return!!this.getDefinition(t)}isBlock(t){const e=this.getDefinition(t);return!(!e||!e.isBlock)}isLimit(t){const e=this.getDefinition(t);return!!e&&!(!e.isLimit&&!e.isObject)}isObject(t){const e=this.getDefinition(t);return!(!e||!e.isObject)}isInline(t){const e=this.getDefinition(t);return!(!e||!e.isInline)}checkChild(t,e){return!!e&&this._checkContextMatch(e,t)}checkAttribute(t,e){const o=this.getDefinition(t.last);return!!o&&o.allowAttributes.includes(e)}checkMerge(t,e=null){if(t instanceof _s){const e=t.nodeBefore,o=t.nodeAfter;if(!(e instanceof bs))throw new go.b("schema-check-merge-no-element-before: The node before the merge position must be an element.",this);if(!(o instanceof bs))throw new go.b("schema-check-merge-no-element-after: The node after the merge position must be an element.",this);return this.checkMerge(e,o)}for(const o of e.getChildren())if(!this.checkChild(t,o))return!1;return!0}addChildCheck(t){this.on("checkChild",(e,[o,i])=>{if(!i)return;const n=t(o,i);"boolean"==typeof n&&(e.stop(),e.return=n)},{priority:"high"})}addAttributeCheck(t){this.on("checkAttribute",(e,[o,i])=>{const n=t(o,i);"boolean"==typeof n&&(e.stop(),e.return=n)},{priority:"high"})}setAttributeProperties(t,e){this._attributeProperties[t]=Object.assign(this.getAttributeProperties(t),e)}getAttributeProperties(t){return this._attributeProperties[t]||{}}getLimitElement(t){let e;if(t instanceof _s)e=t.parent;else{e=(t instanceof Cs?[t]:Array.from(t.getRanges())).reduce((t,e)=>{const o=e.getCommonAncestor();return t?t.getCommonAncestor(o,{includeSelf:!0}):o},null)}for(;!this.isLimit(e)&&e.parent;)e=e.parent;return e}checkAttributeInSelection(t,e){if(t.isCollapsed){const o=[...t.getFirstPosition().getAncestors(),new ms("",t.getAttributes())];return this.checkAttribute(o,e)}{const o=t.getRanges();for(const t of o)for(const o of t)if(this.checkAttribute(o.item,e))return!0}return!1}*getValidRanges(t,e){t=function*(t){for(const e of t)yield*e.getMinimalFlatRanges()}(t);for(const o of t)yield*this._getValidRangesForRange(o,e)}getNearestSelectionRange(t,e="both"){if(this.checkChild(t,"$text"))return new Cs(t);let o,i;const n=t.getAncestors().reverse().find(t=>this.isLimit(t))||t.root;"both"!=e&&"backward"!=e||(o=new ws({boundaries:Cs._createIn(n),startPosition:t,direction:"backward"})),"both"!=e&&"forward"!=e||(i=new ws({boundaries:Cs._createIn(n),startPosition:t}));for(const t of function*(t,e){let o=!1;for(;!o;){if(o=!0,t){const e=t.next();e.done||(o=!1,yield{walker:t,value:e.value})}if(e){const t=e.next();t.done||(o=!1,yield{walker:e,value:t.value})}}}(o,i)){const e=t.walker==o?"elementEnd":"elementStart",i=t.value;if(i.type==e&&this.isObject(i.item))return Cs._createOn(i.item);if(this.checkChild(i.nextPosition,"$text"))return new Cs(i.nextPosition)}return null}findAllowedParent(t,e){let o=t.parent;for(;o;){if(this.checkChild(o,e))return o;if(this.isLimit(o))return null;o=o.parent}return null}removeDisallowedAttributes(t,e){for(const o of t)if(o.is("text"))pa(this,o,e);else{const t=Cs._createIn(o).getPositions();for(const o of t){pa(this,o.nodeBefore||o.parent,e)}}}createContext(t){return new ra(t)}_clearCache(){this._compiledDefinitions=null}_compile(){const t={},e=this._sourceDefinitions,o=Object.keys(e);for(const i of o)t[i]=sa(e[i],i);for(const e of o)aa(t,e);for(const e of o)la(t,e);for(const e of o)ca(t,e),da(t,e);for(const e of o)ha(t,e),ua(t,e);this._compiledDefinitions=t}_checkContextMatch(t,e,o=e.length-1){const i=e.getItem(o);if(t.allowIn.includes(i.name)){if(0==o)return!0;{const t=this.getDefinition(i);return this._checkContextMatch(t,e,o-1)}}return!1}*_getValidRangesForRange(t,e){let o=t.start,i=t.start;for(const n of t.getItems({shallow:!0}))n.is("element")&&(yield*this._getValidRangesForRange(Cs._createIn(n),e)),this.checkAttribute(n,e)||(o.isEqual(i)||(yield new Cs(o,i)),o=_s._createAfter(n)),i=_s._createAfter(n);o.isEqual(i)||(yield new Cs(o,i))}}Co(na,Wi);class ra{constructor(t){if(t instanceof ra)return t;"string"==typeof t?t=[t]:Array.isArray(t)||(t=t.getAncestors({includeSelf:!0})),t[0]&&"string"!=typeof t[0]&&t[0].is("documentFragment")&&t.shift(),this._items=t.map(fa)}get length(){return this._items.length}get last(){return this._items[this._items.length-1]}[Symbol.iterator](){return this._items[Symbol.iterator]()}push(t){const e=new ra([t]);return e._items=[...this._items,...e._items],e}getItem(t){return this._items[t]}*getNames(){yield*this._items.map(t=>t.name)}endsWith(t){return Array.from(this.getNames()).join(" ").endsWith(t)}startsWith(t){return Array.from(this.getNames()).join(" ").startsWith(t)}}function sa(t,e){const o={name:e,allowIn:[],allowContentOf:[],allowWhere:[],allowAttributes:[],allowAttributesOf:[],inheritTypesFrom:[]};return function(t,e){for(const o of t){const t=Object.keys(o).filter(t=>t.startsWith("is"));for(const i of t)e[i]=o[i]}}(t,o),ga(t,o,"allowIn"),ga(t,o,"allowContentOf"),ga(t,o,"allowWhere"),ga(t,o,"allowAttributes"),ga(t,o,"allowAttributesOf"),ga(t,o,"inheritTypesFrom"),function(t,e){for(const o of t){const t=o.inheritAllFrom;t&&(e.allowContentOf.push(t),e.allowWhere.push(t),e.allowAttributesOf.push(t),e.inheritTypesFrom.push(t))}}(t,o),o}function aa(t,e){for(const o of t[e].allowContentOf)if(t[o]){ma(t,o).forEach(t=>{t.allowIn.push(e)})}delete t[e].allowContentOf}function la(t,e){for(const o of t[e].allowWhere){const i=t[o];if(i){const o=i.allowIn;t[e].allowIn.push(...o)}}delete t[e].allowWhere}function ca(t,e){for(const o of t[e].allowAttributesOf){const i=t[o];if(i){const o=i.allowAttributes;t[e].allowAttributes.push(...o)}}delete t[e].allowAttributesOf}function da(t,e){const o=t[e];for(const e of o.inheritTypesFrom){const i=t[e];if(i){const t=Object.keys(i).filter(t=>t.startsWith("is"));for(const e of t)e in o||(o[e]=i[e])}}delete o.inheritTypesFrom}function ha(t,e){const o=t[e],i=o.allowIn.filter(e=>t[e]);o.allowIn=Array.from(new Set(i))}function ua(t,e){const o=t[e];o.allowAttributes=Array.from(new Set(o.allowAttributes))}function ga(t,e,o){for(const i of t)"string"==typeof i[o]?e[o].push(i[o]):Array.isArray(i[o])&&e[o].push(...i[o])}function ma(t,e){const o=t[e];return(i=t,Object.keys(i).map(t=>i[t])).filter(t=>t.allowIn.includes(o.name));var i}function fa(t){return"string"==typeof t?{name:t,*getAttributeKeys(){},getAttribute(){}}:{name:t.is("element")?t.name:"$text",*getAttributeKeys(){yield*t.getAttributeKeys()},getAttribute:e=>t.getAttribute(e)}}function pa(t,e,o){for(const i of e.getAttributeKeys())t.checkAttribute(e,i)||o.removeAttribute(i,e)}class ba{constructor(t={}){this._splitParts=new Map,this._modelCursor=null,this.conversionApi=Object.assign({},t),this.conversionApi.convertItem=this._convertItem.bind(this),this.conversionApi.convertChildren=this._convertChildren.bind(this),this.conversionApi.splitToAllowedParent=this._splitToAllowedParent.bind(this),this.conversionApi.getSplitParts=this._getSplitParts.bind(this)}convert(t,e,o=["$root"]){this.fire("viewCleanup",t),this._modelCursor=function(t,e){let o;for(const i of new ra(t)){const t={};for(const e of i.getAttributeKeys())t[e]=i.getAttribute(e);const n=e.createElement(i.name,t);o&&e.append(n,o),o=_s._createAt(n,0)}return o}(o,e),this.conversionApi.writer=e,this.conversionApi.consumable=oa.createFrom(t),this.conversionApi.store={};const{modelRange:i}=this._convertItem(t,this._modelCursor),n=e.createDocumentFragment();if(i){this._removeEmptyElements();for(const t of Array.from(this._modelCursor.parent.getChildren()))e.append(t,n);n.markers=function(t,e){const o=new Set,i=new Map,n=Cs._createIn(t).getItems();for(const t of n)"$marker"==t.name&&o.add(t);for(const t of o){const o=t.getAttribute("data-name"),n=e.createPositionBefore(t);i.has(o)?i.get(o).end=n.clone():i.set(o,new Cs(n.clone())),e.remove(t)}return i}(n,e)}return this._modelCursor=null,this._splitParts.clear(),this.conversionApi.writer=null,this.conversionApi.store=null,n}_convertItem(t,e){const o=Object.assign({viewItem:t,modelCursor:e,modelRange:null});if(t.is("element")?this.fire("element:"+t.name,o,this.conversionApi):t.is("text")?this.fire("text",o,this.conversionApi):this.fire("documentFragment",o,this.conversionApi),o.modelRange&&!(o.modelRange instanceof Cs))throw new go.b("view-conversion-dispatcher-incorrect-result: Incorrect conversion result was dropped.",this);return{modelRange:o.modelRange,modelCursor:o.modelCursor}}_convertChildren(t,e){const o=new Cs(e);let i=e;for(const e of Array.from(t.getChildren())){const t=this._convertItem(e,i);t.modelRange instanceof Cs&&(o.end=t.modelRange.end,i=t.modelCursor)}return{modelRange:o,modelCursor:i}}_splitToAllowedParent(t,e){const o=this.conversionApi.schema.findAllowedParent(e,t);if(!o)return null;if(o===e.parent)return{position:e};if(this._modelCursor.parent.getAncestors().includes(o))return null;const i=this.conversionApi.writer.split(e,o),n=[];for(const t of i.range.getWalker())if("elementEnd"==t.type)n.push(t.item);else{const e=n.pop(),o=t.item;this._registerSplitPair(e,o)}return{position:i.position,cursorParent:i.range.end.parent}}_registerSplitPair(t,e){this._splitParts.has(t)||this._splitParts.set(t,[t]);const o=this._splitParts.get(t);this._splitParts.set(e,o),o.push(e)}_getSplitParts(t){let e;return e=this._splitParts.has(t)?this._splitParts.get(t):[t],e}_removeEmptyElements(){let t=!1;for(const e of this._splitParts.keys())e.isEmpty&&(this.conversionApi.writer.remove(e),this._splitParts.delete(e),t=!0);t&&this._removeEmptyElements()}}Co(ba,po);class wa{constructor(t,e){this.model=t,this.stylesProcessor=e,this.processor,this.mapper=new As,this.downcastDispatcher=new Ss({mapper:this.mapper}),this.downcastDispatcher.on("insert:$text",(t,e,o)=>{if(!o.consumable.consume(e.item,"insert"))return;const i=o.writer,n=o.mapper.toViewPosition(e.range.start),r=i.createText(e.item.data);i.insert(n,r)},{priority:"lowest"}),this.upcastDispatcher=new ba({schema:t.schema}),this.viewDocument=new sn(e),this._viewWriter=new An(this.viewDocument),this.upcastDispatcher.on("text",(t,e,o)=>{if(o.schema.checkChild(e.modelCursor,"$text")&&o.consumable.consume(e.viewItem)){const t=o.writer.createText(e.viewItem.data);o.writer.insert(t,e.modelCursor),e.modelRange=Cs._createFromPositionAndShift(e.modelCursor,t.offsetSize),e.modelCursor=e.modelRange.end}},{priority:"lowest"}),this.upcastDispatcher.on("element",(t,e,o)=>{if(!e.modelRange&&o.consumable.consume(e.viewItem,{name:!0})){const{modelRange:t,modelCursor:i}=o.convertChildren(e.viewItem,e.modelCursor);e.modelRange=t,e.modelCursor=i}},{priority:"lowest"}),this.upcastDispatcher.on("documentFragment",(t,e,o)=>{if(!e.modelRange&&o.consumable.consume(e.viewItem,{name:!0})){const{modelRange:t,modelCursor:i}=o.convertChildren(e.viewItem,e.modelCursor);e.modelRange=t,e.modelCursor=i}},{priority:"lowest"}),this.decorate("init"),this.on("init",()=>{this.fire("ready")},{priority:"lowest"})}get(t){const{rootName:e="main",trim:o="empty"}=t||{};if(!this._checkIfRootsExists([e]))throw new go.b("datacontroller-get-non-existent-root: Attempting to get data from a non-existing root.",this);const i=this.model.document.getRoot(e);return"empty"!==o||this.model.hasContent(i,{ignoreWhitespaces:!0})?this.stringify(i):""}stringify(t){const e=this.toView(t);return this.processor.toData(e)}toView(t){const e=this.viewDocument,o=this._viewWriter;this.mapper.clearBindings();const i=Cs._createIn(t),n=new Cn(e);if(this.mapper.bindElements(t,n),this.downcastDispatcher.convertInsert(i,o),!t.is("documentFragment")){const e=function(t){const e=[],o=t.root.document;if(!o)return[];const i=Cs._createIn(t);for(const t of o.model.markers){const o=i.getIntersection(t.getRange());o&&e.push([t.name,o])}return e}(t);for(const[t,i]of e)this.downcastDispatcher.convertMarkerAdd(t,i,o)}return n}init(t){if(this.model.document.version)throw new go.b("datacontroller-init-document-not-empty: Trying to set initial data to not empty document.",this);let e={};if("string"==typeof t?e.main=t:e=t,!this._checkIfRootsExists(Object.keys(e)))throw new go.b("datacontroller-init-non-existent-root: Attempting to init data on a non-existing root.",this);return this.model.enqueueChange("transparent",t=>{for(const o of Object.keys(e)){const i=this.model.document.getRoot(o);t.insert(this.parse(e[o],i),i,0)}}),Promise.resolve()}set(t){let e={};if("string"==typeof t?e.main=t:e=t,!this._checkIfRootsExists(Object.keys(e)))throw new go.b("datacontroller-set-non-existent-root: Attempting to set data on a non-existing root.",this);this.model.enqueueChange("transparent",t=>{t.setSelection(null),t.removeSelectionAttribute(this.model.document.selection.getAttributeKeys());for(const o of Object.keys(e)){const i=this.model.document.getRoot(o);t.remove(t.createRangeIn(i)),t.insert(this.parse(e[o],i),i,0)}})}parse(t,e="$root"){const o=this.processor.toView(t);return this.toModel(o,e)}toModel(t,e="$root"){return this.model.change(o=>this.upcastDispatcher.convert(t,o,e))}addStyleProcessorRules(t){t(this.stylesProcessor)}destroy(){this.stopListening()}_checkIfRootsExists(t){for(const e of t)if(!this.model.document.getRootNames().includes(e))return!1;return!0}}Co(wa,Wi);class ka{constructor(t,e){this._helpers=new Map,this._downcast=Array.isArray(t)?t:[t],this._createConversionHelpers({name:"downcast",dispatchers:this._downcast,isDowncast:!0}),this._upcast=Array.isArray(e)?e:[e],this._createConversionHelpers({name:"upcast",dispatchers:this._upcast,isDowncast:!1})}addAlias(t,e){const o=this._downcast.includes(e);if(!this._upcast.includes(e)&&!o)throw new go.b("conversion-add-alias-dispatcher-not-registered: Trying to register and alias for a dispatcher that nas not been registered.",this);this._createConversionHelpers({name:t,dispatchers:[e],isDowncast:o})}for(t){if(!this._helpers.has(t))throw new go.b("conversion-for-unknown-group: Trying to add a converter to an unknown dispatchers group.",this);return this._helpers.get(t)}elementToElement(t){this.for("downcast").elementToElement(t);for(const{model:e,view:o}of _a(t))this.for("upcast").elementToElement({model:e,view:o,converterPriority:t.converterPriority})}attributeToElement(t){this.for("downcast").attributeToElement(t);for(const{model:e,view:o}of _a(t))this.for("upcast").elementToAttribute({view:o,model:e,converterPriority:t.converterPriority})}attributeToAttribute(t){this.for("downcast").attributeToAttribute(t);for(const{model:e,view:o}of _a(t))this.for("upcast").attributeToAttribute({view:o,model:e})}_createConversionHelpers({name:t,dispatchers:e,isDowncast:o}){if(this._helpers.has(t))throw new go.b("conversion-group-exists: Trying to register a group name that has already been registered.",this);const i=o?new Ws(e):new Js(e);this._helpers.set(t,i)}}function*_a(t){if(t.model.values)for(const e of t.model.values){const o={key:t.model.key,value:e},i=t.view[e],n=t.upcastAlso?t.upcastAlso[e]:void 0;yield*va(o,i,n)}else yield*va(t.model,t.view,t.upcastAlso)}function*va(t,e,o){if(yield{model:t,view:e},o){o=Array.isArray(o)?o:[o];for(const e of o)yield{model:t,view:e}}}class ya{constructor(t="default"){this.operations=[],this.type=t}get baseVersion(){for(const t of this.operations)if(null!==t.baseVersion)return t.baseVersion;return null}addOperation(t){return t.batch=this,this.operations.push(t),t}}class xa{constructor(t){this.baseVersion=t,this.isDocumentOperation=null!==this.baseVersion,this.batch=null}_validate(){}toJSON(){const t=Object.assign({},this);return t.__className=this.constructor.className,delete t.batch,delete t.isDocumentOperation,t}static get className(){return"Operation"}static fromJSON(t){return new this(t.baseVersion)}}class Ca{constructor(t){this.markers=new Map,this._children=new ps,t&&this._insertChild(0,t)}[Symbol.iterator](){return this.getChildren()}get childCount(){return this._children.length}get maxOffset(){return this._children.maxOffset}get isEmpty(){return 0===this.childCount}get root(){return this}get parent(){return null}is(t){return"documentFragment"===t||"model:documentFragment"===t}getChild(t){return this._children.getNode(t)}getChildren(){return this._children[Symbol.iterator]()}getChildIndex(t){return this._children.getNodeIndex(t)}getChildStartOffset(t){return this._children.getNodeStartOffset(t)}getPath(){return[]}getNodeByPath(t){let e=this;for(const o of t)e=e.getChild(e.offsetToIndex(o));return e}offsetToIndex(t){return this._children.offsetToIndex(t)}toJSON(){const t=[];for(const e of this._children)t.push(e.toJSON());return t}static fromJSON(t){const e=[];for(const o of t)o.name?e.push(bs.fromJSON(o)):e.push(ms.fromJSON(o));return new Ca(e)}_appendChild(t){this._insertChild(this.childCount,t)}_insertChild(t,e){const o=function(t){if("string"==typeof t)return[new ms(t)];xo(t)||(t=[t]);return Array.from(t).map(t=>"string"==typeof t?new ms(t):t instanceof fs?new ms(t.data,t.getAttributes()):t)}(e);for(const t of o)null!==t.parent&&t._remove(),t.parent=this;this._children._insertNodes(t,o)}_removeChildren(t,e=1){const o=this._children._removeNodes(t,e);for(const t of o)t.parent=null;return o}}function Aa(t,e){const o=(e=Sa(e)).reduce((t,e)=>t+e.offsetSize,0),i=t.parent;Ra(t);const n=t.index;return i._insertChild(n,e),Ea(i,n+e.length),Ea(i,n),new Cs(t,t.getShiftedBy(o))}function Ta(t){if(!t.isFlat)throw new go.b("operation-utils-remove-range-not-flat: Trying to remove a range which starts and ends in different element.",this);const e=t.start.parent;Ra(t.start),Ra(t.end);const o=e._removeChildren(t.start.index,t.end.index-t.start.index);return Ea(e,t.start.index),o}function Pa(t,e){if(!t.isFlat)throw new go.b("operation-utils-move-range-not-flat: Trying to move a range which starts and ends in different element.",this);const o=Ta(t);return Aa(e=e._getTransformedByDeletion(t.start,t.end.offset-t.start.offset),o)}function Sa(t){const e=[];t instanceof Array||(t=[t]);for(let o=0;ot.maxOffset)throw new go.b("move-operation-nodes-do-not-exist: The nodes which should be moved do not exist.",this);if(t===e&&o=o&&this.targetPosition.path[t]t._clone(!0))),e=new Ba(this.position,t,this.baseVersion);return e.shouldReceiveAttributes=this.shouldReceiveAttributes,e}getReversed(){const t=this.position.root.document.graveyard,e=new _s(t,[0]);return new Na(this.position,this.nodes.maxOffset,e,this.baseVersion+1)}_validate(){const t=this.position.parent;if(!t||t.maxOffsett._clone(!0))),Aa(this.position,t)}toJSON(){const t=super.toJSON();return t.position=this.position.toJSON(),t.nodes=this.nodes.toJSON(),t}static get className(){return"InsertOperation"}static fromJSON(t,e){const o=[];for(const e of t.nodes)e.name?o.push(bs.fromJSON(e)):o.push(ms.fromJSON(e));const i=new Ba(_s.fromJSON(t.position,e),o,t.baseVersion);return i.shouldReceiveAttributes=t.shouldReceiveAttributes,i}}class za extends xa{constructor(t,e,o,i,n,r){super(r),this.name=t,this.oldRange=e?e.clone():null,this.newRange=o?o.clone():null,this.affectsData=n,this._markers=i}get type(){return"marker"}clone(){return new za(this.name,this.oldRange,this.newRange,this._markers,this.affectsData,this.baseVersion)}getReversed(){return new za(this.name,this.newRange,this.oldRange,this._markers,this.affectsData,this.baseVersion+1)}_execute(){const t=this.newRange?"_set":"_remove";this._markers[t](this.name,this.newRange,!0,this.affectsData)}toJSON(){const t=super.toJSON();return this.oldRange&&(t.oldRange=this.oldRange.toJSON()),this.newRange&&(t.newRange=this.newRange.toJSON()),delete t._markers,t}static get className(){return"MarkerOperation"}static fromJSON(t,e){return new za(t.name,t.oldRange?Cs.fromJSON(t.oldRange,e):null,t.newRange?Cs.fromJSON(t.newRange,e):null,e.model.markers,t.affectsData,t.baseVersion)}}class Fa extends xa{constructor(t,e,o,i){super(i),this.position=t,this.position.stickiness="toNext",this.oldName=e,this.newName=o}get type(){return"rename"}clone(){return new Fa(this.position.clone(),this.oldName,this.newName,this.baseVersion)}getReversed(){return new Fa(this.position.clone(),this.newName,this.oldName,this.baseVersion+1)}_validate(){const t=this.position.nodeAfter;if(!(t instanceof bs))throw new go.b("rename-operation-wrong-position: Given position is invalid or node after it is not an instance of Element.",this);if(t.name!==this.oldName)throw new go.b("rename-operation-wrong-name: Element to change has different name than operation's old name.",this)}_execute(){this.position.nodeAfter.name=this.newName}toJSON(){const t=super.toJSON();return t.position=this.position.toJSON(),t}static get className(){return"RenameOperation"}static fromJSON(t,e){return new Fa(_s.fromJSON(t.position,e),t.oldName,t.newName,t.baseVersion)}}class Da extends xa{constructor(t,e,o,i,n){super(n),this.root=t,this.key=e,this.oldValue=o,this.newValue=i}get type(){return null===this.oldValue?"addRootAttribute":null===this.newValue?"removeRootAttribute":"changeRootAttribute"}clone(){return new Da(this.root,this.key,this.oldValue,this.newValue,this.baseVersion)}getReversed(){return new Da(this.root,this.key,this.newValue,this.oldValue,this.baseVersion+1)}_validate(){if(this.root!=this.root.root||this.root.is("documentFragment"))throw new go.b("rootattribute-operation-not-a-root: The element to change is not a root element.",this,{root:this.root,key:this.key});if(null!==this.oldValue&&this.root.getAttribute(this.key)!==this.oldValue)throw new go.b("rootattribute-operation-wrong-old-value: Changed node has different attribute value than operation's old attribute value.",this,{root:this.root,key:this.key});if(null===this.oldValue&&null!==this.newValue&&this.root.hasAttribute(this.key))throw new go.b("rootattribute-operation-attribute-exists: The attribute with given key already exists.",this,{root:this.root,key:this.key})}_execute(){null!==this.newValue?this.root._setAttribute(this.key,this.newValue):this.root._removeAttribute(this.key)}toJSON(){const t=super.toJSON();return t.root=this.root.toJSON(),t}static get className(){return"RootAttributeOperation"}static fromJSON(t,e){if(!e.getRoot(t.root))throw new go.b("rootattribute-operation-fromjson-no-root: Cannot create RootAttributeOperation. Root with specified name does not exist.",this,{rootName:t.root});return new Da(e.getRoot(t.root),t.key,t.oldValue,t.newValue,t.baseVersion)}}class La extends xa{constructor(t,e,o,i,n){super(n),this.sourcePosition=t.clone(),this.sourcePosition.stickiness="toPrevious",this.howMany=e,this.targetPosition=o.clone(),this.targetPosition.stickiness="toNext",this.graveyardPosition=i.clone()}get type(){return"merge"}get deletionPosition(){return new _s(this.sourcePosition.root,this.sourcePosition.path.slice(0,-1))}get movedRange(){const t=this.sourcePosition.getShiftedBy(Number.POSITIVE_INFINITY);return new Cs(this.sourcePosition,t)}clone(){return new this.constructor(this.sourcePosition,this.howMany,this.targetPosition,this.graveyardPosition,this.baseVersion)}getReversed(){const t=this.targetPosition._getTransformedByMergeOperation(this),e=this.sourcePosition.path.slice(0,-1),o=new _s(this.sourcePosition.root,e)._getTransformedByMergeOperation(this),i=new ja(t,this.howMany,this.graveyardPosition,this.baseVersion+1);return i.insertionPosition=o,i}_validate(){const t=this.sourcePosition.parent,e=this.targetPosition.parent;if(!t.parent)throw new go.b("merge-operation-source-position-invalid: Merge source position is invalid.",this);if(!e.parent)throw new go.b("merge-operation-target-position-invalid: Merge target position is invalid.",this);if(this.howMany!=t.maxOffset)throw new go.b("merge-operation-how-many-invalid: Merge operation specifies wrong number of nodes to move.",this)}_execute(){const t=this.sourcePosition.parent;Pa(Cs._createIn(t),this.targetPosition),Pa(Cs._createOn(t),this.graveyardPosition)}toJSON(){const t=super.toJSON();return t.sourcePosition=t.sourcePosition.toJSON(),t.targetPosition=t.targetPosition.toJSON(),t.graveyardPosition=t.graveyardPosition.toJSON(),t}static get className(){return"MergeOperation"}static fromJSON(t,e){const o=_s.fromJSON(t.sourcePosition,e),i=_s.fromJSON(t.targetPosition,e),n=_s.fromJSON(t.graveyardPosition,e);return new this(o,t.howMany,i,n,t.baseVersion)}}class ja extends xa{constructor(t,e,o,i){super(i),this.splitPosition=t.clone(),this.splitPosition.stickiness="toNext",this.howMany=e,this.insertionPosition=ja.getInsertionPosition(t),this.insertionPosition.stickiness="toNone",this.graveyardPosition=o?o.clone():null,this.graveyardPosition&&(this.graveyardPosition.stickiness="toNext")}get type(){return"split"}get moveTargetPosition(){const t=this.insertionPosition.path.slice();return t.push(0),new _s(this.insertionPosition.root,t)}get movedRange(){const t=this.splitPosition.getShiftedBy(Number.POSITIVE_INFINITY);return new Cs(this.splitPosition,t)}clone(){const t=new this.constructor(this.splitPosition,this.howMany,this.graveyardPosition,this.baseVersion);return t.insertionPosition=this.insertionPosition,t}getReversed(){const t=this.splitPosition.root.document.graveyard,e=new _s(t,[0]);return new La(this.moveTargetPosition,this.howMany,this.splitPosition,e,this.baseVersion+1)}_validate(){const t=this.splitPosition.parent,e=this.splitPosition.offset;if(!t||t.maxOffset{for(const e of t.getAttributeKeys())this.removeAttribute(e,t)};if(t instanceof Cs)for(const o of t.getItems())e(o);else e(t)}move(t,e,o){if(this._assertWriterUsedCorrectly(),!(t instanceof Cs))throw new go.b("writer-move-invalid-range: Invalid range to move.",this);if(!t.isFlat)throw new go.b("writer-move-range-not-flat: Range to move is not flat.",this);const i=_s._createAt(e,o);if(i.isEqual(t.start))return;if(this._addOperationForAffectedMarkers("move",t),!Ka(t.root,i.root))throw new go.b("writer-move-different-document: Range is going to be moved between different documents.",this);const n=t.root.document?t.root.document.version:null,r=new Na(t.start,t.end.offset-t.start.offset,i,n);this.batch.addOperation(r),this.model.applyOperation(r)}remove(t){this._assertWriterUsedCorrectly();const e=(t instanceof Cs?t:Cs._createOn(t)).getMinimalFlatRanges().reverse();for(const t of e)this._addOperationForAffectedMarkers("move",t),Ga(t.start,t.end.offset-t.start.offset,this.batch,this.model)}merge(t){this._assertWriterUsedCorrectly();const e=t.nodeBefore,o=t.nodeAfter;if(this._addOperationForAffectedMarkers("merge",t),!(e instanceof bs))throw new go.b("writer-merge-no-element-before: Node before merge position must be an element.",this);if(!(o instanceof bs))throw new go.b("writer-merge-no-element-after: Node after merge position must be an element.",this);t.root.document?this._merge(t):this._mergeDetached(t)}createPositionFromPath(t,e,o){return this.model.createPositionFromPath(t,e,o)}createPositionAt(t,e){return this.model.createPositionAt(t,e)}createPositionAfter(t){return this.model.createPositionAfter(t)}createPositionBefore(t){return this.model.createPositionBefore(t)}createRange(t,e){return this.model.createRange(t,e)}createRangeIn(t){return this.model.createRangeIn(t)}createRangeOn(t){return this.model.createRangeOn(t)}createSelection(t,e,o){return this.model.createSelection(t,e,o)}_mergeDetached(t){const e=t.nodeBefore,o=t.nodeAfter;this.move(Cs._createIn(o),_s._createAt(e,"end")),this.remove(o)}_merge(t){const e=_s._createAt(t.nodeBefore,"end"),o=_s._createAt(t.nodeAfter,0),i=t.root.document.graveyard,n=new _s(i,[0]),r=t.root.document.version,s=new La(o,t.nodeAfter.maxOffset,e,n,r);this.batch.addOperation(s),this.model.applyOperation(s)}rename(t,e){if(this._assertWriterUsedCorrectly(),!(t instanceof bs))throw new go.b("writer-rename-not-element-instance: Trying to rename an object which is not an instance of Element.",this);const o=t.root.document?t.root.document.version:null,i=new Fa(_s._createBefore(t),t.name,e,o);this.batch.addOperation(i),this.model.applyOperation(i)}split(t,e){this._assertWriterUsedCorrectly();let o,i,n=t.parent;if(!n.parent)throw new go.b("writer-split-element-no-parent: Element with no parent can not be split.",this);if(e||(e=n.parent),!t.parent.getAncestors({includeSelf:!0}).includes(e))throw new go.b("writer-split-invalid-limit-element: Limit element is not a position ancestor.",this);do{const e=n.root.document?n.root.document.version:null,r=n.maxOffset-t.offset,s=new ja(t,r,null,e);this.batch.addOperation(s),this.model.applyOperation(s),o||i||(o=n,i=t.parent.nextSibling),n=(t=this.createPositionAfter(t.parent)).parent}while(n!==e);return{position:t,range:new Cs(_s._createAt(o,"end"),_s._createAt(i,0))}}wrap(t,e){if(this._assertWriterUsedCorrectly(),!t.isFlat)throw new go.b("writer-wrap-range-not-flat: Range to wrap is not flat.",this);const o=e instanceof bs?e:new bs(e);if(o.childCount>0)throw new go.b("writer-wrap-element-not-empty: Element to wrap with is not empty.",this);if(null!==o.parent)throw new go.b("writer-wrap-element-attached: Element to wrap with is already attached to tree model.",this);this.insert(o,t.start);const i=new Cs(t.start.getShiftedBy(1),t.end.getShiftedBy(1));this.move(i,_s._createAt(o,0))}unwrap(t){if(this._assertWriterUsedCorrectly(),null===t.parent)throw new go.b("writer-unwrap-element-no-parent: Trying to unwrap an element which has no parent.",this);this.move(Cs._createIn(t),this.createPositionAfter(t)),this.remove(t)}addMarker(t,e){if(this._assertWriterUsedCorrectly(),!e||"boolean"!=typeof e.usingOperation)throw new go.b("writer-addMarker-no-usingOperation: The options.usingOperation parameter is required when adding a new marker.",this);const o=e.usingOperation,i=e.range,n=void 0!==e.affectsData&&e.affectsData;if(this.model.markers.has(t))throw new go.b("writer-addMarker-marker-exists: Marker with provided name already exists.",this);if(!i)throw new go.b("writer-addMarker-no-range: Range parameter is required when adding a new marker.",this);return o?($a(this,t,null,i,n),this.model.markers.get(t)):this.model.markers._set(t,i,o,n)}updateMarker(t,e){this._assertWriterUsedCorrectly();const o="string"==typeof t?t:t.name,i=this.model.markers.get(o);if(!i)throw new go.b("writer-updateMarker-marker-not-exists: Marker with provided name does not exists.",this);if(!e)return void this.model.markers._refresh(i);const n="boolean"==typeof e.usingOperation,r="boolean"==typeof e.affectsData,s=r?e.affectsData:i.affectsData;if(!n&&!e.range&&!r)throw new go.b("writer-updateMarker-wrong-options: One of the options is required - provide range, usingOperations or affectsData.",this);const a=i.getRange(),l=e.range?e.range:a;n&&e.usingOperation!==i.managedUsingOperations?e.usingOperation?$a(this,o,null,l,s):($a(this,o,a,null,s),this.model.markers._set(o,l,void 0,s)):i.managedUsingOperations?$a(this,o,a,l,s):this.model.markers._set(o,l,void 0,s)}removeMarker(t){this._assertWriterUsedCorrectly();const e="string"==typeof t?t:t.name;if(!this.model.markers.has(e))throw new go.b("writer-removeMarker-no-marker: Trying to remove marker which does not exist.",this);const o=this.model.markers.get(e);if(!o.managedUsingOperations)return void this.model.markers._remove(e);$a(this,e,o.getRange(),null,o.affectsData)}setSelection(t,e,o){this._assertWriterUsedCorrectly(),this.model.document.selection._setTo(t,e,o)}setSelectionFocus(t,e){this._assertWriterUsedCorrectly(),this.model.document.selection._setFocus(t,e)}setSelectionAttribute(t,e){if(this._assertWriterUsedCorrectly(),"string"==typeof t)this._setSelectionAttribute(t,e);else for(const[e,o]of zo(t))this._setSelectionAttribute(e,o)}removeSelectionAttribute(t){if(this._assertWriterUsedCorrectly(),"string"==typeof t)this._removeSelectionAttribute(t);else for(const e of t)this._removeSelectionAttribute(e)}overrideSelectionGravity(){return this.model.document.selection._overrideGravity()}restoreSelectionGravity(t){this.model.document.selection._restoreGravity(t)}_setSelectionAttribute(t,e){const o=this.model.document.selection;if(o.isCollapsed&&o.anchor.parent.isEmpty){const i=Fs._getStoreAttributeKey(t);this.setAttribute(i,e,o.anchor.parent)}o._setAttribute(t,e)}_removeSelectionAttribute(t){const e=this.model.document.selection;if(e.isCollapsed&&e.anchor.parent.isEmpty){const o=Fs._getStoreAttributeKey(t);this.removeAttribute(o,e.anchor.parent)}e._removeAttribute(t)}_assertWriterUsedCorrectly(){if(this.model._currentWriter!==this)throw new go.b("writer-incorrect-use: Trying to use a writer outside the change() block.",this)}_addOperationForAffectedMarkers(t,e){for(const o of this.model.markers){if(!o.managedUsingOperations)continue;const i=o.getRange();let n=!1;if("move"===t)n=e.containsPosition(i.start)||e.start.isEqual(i.start)||e.containsPosition(i.end)||e.end.isEqual(i.end);else{const t=e.nodeBefore,o=e.nodeAfter,r=i.start.parent==t&&i.start.isAtEnd,s=i.end.parent==o&&0==i.end.offset,a=i.end.nodeAfter==o,l=i.start.nodeAfter==o;n=r||s||a||l}n&&this.updateMarker(o.name,{range:i})}}}function qa(t,e,o,i){const n=t.model,r=n.document;let s,a,l,c=i.start;for(const t of i.getWalker({shallow:!0}))l=t.item.getAttribute(e),s&&a!=l&&(a!=o&&d(),c=s),s=t.nextPosition,a=l;function d(){const i=new Cs(c,s),l=i.root.document?r.version:null,d=new Oa(i,e,a,o,l);t.batch.addOperation(d),n.applyOperation(d)}s instanceof _s&&s!=c&&a!=o&&d()}function Ua(t,e,o,i){const n=t.model,r=n.document,s=i.getAttribute(e);let a,l;if(s!=o){if(i.root===i){const t=i.document?r.version:null;l=new Da(i,e,s,o,t)}else{a=new Cs(_s._createBefore(i),t.createPositionAfter(i));const n=a.root.document?r.version:null;l=new Oa(a,e,s,o,n)}t.batch.addOperation(l),n.applyOperation(l)}}function $a(t,e,o,i,n){const r=t.model,s=r.document,a=new za(e,o,i,r.markers,n,s.version);t.batch.addOperation(a),r.applyOperation(a)}function Ga(t,e,o,i){let n;if(t.root.document){const o=i.document,r=new _s(o.graveyard,[0]);n=new Na(t,e,r,o.version)}else n=new Ma(t,e);o.addOperation(n),i.applyOperation(n)}function Ka(t,e){return t===e||t instanceof Ha&&e instanceof Ha}class Ja{constructor(t){this._markerCollection=t,this._changesInElement=new Map,this._elementSnapshots=new Map,this._changedMarkers=new Map,this._changeCount=0,this._cachedChanges=null,this._cachedChangesWithGraveyard=null}get isEmpty(){return 0==this._changesInElement.size&&0==this._changedMarkers.size}refreshItem(t){if(this._isInInsertedElement(t.parent))return;this._markRemove(t.parent,t.startOffset,t.offsetSize),this._markInsert(t.parent,t.startOffset,t.offsetSize);const e=Cs._createOn(t);for(const t of this._markerCollection.getMarkersIntersectingRange(e)){const e=t.getRange();this.bufferMarkerChange(t.name,e,e,t.affectsData)}this._cachedChanges=null}bufferOperation(t){switch(t.type){case"insert":if(this._isInInsertedElement(t.position.parent))return;this._markInsert(t.position.parent,t.position.offset,t.nodes.maxOffset);break;case"addAttribute":case"removeAttribute":case"changeAttribute":for(const e of t.range.getItems({shallow:!0}))this._isInInsertedElement(e.parent)||this._markAttribute(e);break;case"remove":case"move":case"reinsert":{if(t.sourcePosition.isEqual(t.targetPosition)||t.sourcePosition.getShiftedBy(t.howMany).isEqual(t.targetPosition))return;const e=this._isInInsertedElement(t.sourcePosition.parent),o=this._isInInsertedElement(t.targetPosition.parent);e||this._markRemove(t.sourcePosition.parent,t.sourcePosition.offset,t.howMany),o||this._markInsert(t.targetPosition.parent,t.getMovedRangeStart().offset,t.howMany);break}case"rename":{if(this._isInInsertedElement(t.position.parent))return;this._markRemove(t.position.parent,t.position.offset,1),this._markInsert(t.position.parent,t.position.offset,1);const e=Cs._createFromPositionAndShift(t.position,1);for(const t of this._markerCollection.getMarkersIntersectingRange(e)){const e=t.getRange();this.bufferMarkerChange(t.name,e,e,t.affectsData)}break}case"split":{const e=t.splitPosition.parent;this._isInInsertedElement(e)||this._markRemove(e,t.splitPosition.offset,t.howMany),this._isInInsertedElement(t.insertionPosition.parent)||this._markInsert(t.insertionPosition.parent,t.insertionPosition.offset,1),t.graveyardPosition&&this._markRemove(t.graveyardPosition.parent,t.graveyardPosition.offset,1);break}case"merge":{const e=t.sourcePosition.parent;this._isInInsertedElement(e.parent)||this._markRemove(e.parent,e.startOffset,1);const o=t.graveyardPosition.parent;this._markInsert(o,t.graveyardPosition.offset,1);const i=t.targetPosition.parent;this._isInInsertedElement(i)||this._markInsert(i,t.targetPosition.offset,e.maxOffset);break}}this._cachedChanges=null}bufferMarkerChange(t,e,o,i){const n=this._changedMarkers.get(t);n?(n.newRange=o,n.affectsData=i,null==n.oldRange&&null==n.newRange&&this._changedMarkers.delete(t)):this._changedMarkers.set(t,{oldRange:e,newRange:o,affectsData:i})}getMarkersToRemove(){const t=[];for(const[e,o]of this._changedMarkers)null!=o.oldRange&&t.push({name:e,range:o.oldRange});return t}getMarkersToAdd(){const t=[];for(const[e,o]of this._changedMarkers)null!=o.newRange&&t.push({name:e,range:o.newRange});return t}getChangedMarkers(){return Array.from(this._changedMarkers).map(t=>({name:t[0],data:{oldRange:t[1].oldRange,newRange:t[1].newRange}}))}hasDataChanges(){for(const[,t]of this._changedMarkers)if(t.affectsData)return!0;return this._changesInElement.size>0}getChanges(t={includeChangesInGraveyard:!1}){if(this._cachedChanges)return t.includeChangesInGraveyard?this._cachedChangesWithGraveyard.slice():this._cachedChanges.slice();const e=[];for(const t of this._changesInElement.keys()){const o=this._changesInElement.get(t).sort((t,e)=>t.offset===e.offset?t.type!=e.type?"remove"==t.type?-1:1:0:t.offsett.position.root!=e.position.root?t.position.root.rootNameo.offset){if(i>n){const t={type:"attribute",offset:n,howMany:i-n,count:this._changeCount++};this._handleChange(t,e),e.push(t)}t.nodesToHandle=o.offset-t.offset,t.howMany=t.nodesToHandle}else t.offset>=o.offset&&t.offsetn?(t.nodesToHandle=i-n,t.offset=n):t.nodesToHandle=0);if("remove"==o.type&&t.offseto.offset){const n={type:"attribute",offset:o.offset,howMany:i-o.offset,count:this._changeCount++};this._handleChange(n,e),e.push(n),t.nodesToHandle=o.offset-t.offset,t.howMany=t.nodesToHandle}"attribute"==o.type&&(t.offset>=o.offset&&i<=n?(t.nodesToHandle=0,t.howMany=0,t.offset=0):t.offset<=o.offset&&i>=n&&(o.howMany=0))}}t.howMany=t.nodesToHandle,delete t.nodesToHandle}_getInsertDiff(t,e,o){return{type:"insert",position:_s._createAt(t,e),name:o,length:1,changeCount:this._changeCount++}}_getRemoveDiff(t,e,o){return{type:"remove",position:_s._createAt(t,e),name:o,length:1,changeCount:this._changeCount++}}_getAttributesDiff(t,e,o){const i=[];o=new Map(o);for(const[n,r]of e){const e=o.has(n)?o.get(n):null;e!==r&&i.push({type:"attribute",position:t.start,range:t.clone(),length:1,attributeKey:n,attributeOldValue:r,attributeNewValue:e,changeCount:this._changeCount++}),o.delete(n)}for(const[e,n]of o)i.push({type:"attribute",position:t.start,range:t.clone(),length:1,attributeKey:e,attributeOldValue:null,attributeNewValue:n,changeCount:this._changeCount++});return i}_isInInsertedElement(t){const e=t.parent;if(!e)return!1;const o=this._changesInElement.get(e),i=t.startOffset;if(o)for(const t of o)if("insert"==t.type&&i>=t.offset&&ii){for(let e=0;e{const o=e[0];if(o.isDocumentOperation&&o.baseVersion!==this.version)throw new go.b("model-document-applyOperation-wrong-version: Only operations with matching versions can be applied.",this,{operation:o})},{priority:"highest"}),this.listenTo(t,"applyOperation",(t,e)=>{const o=e[0];o.isDocumentOperation&&this.differ.bufferOperation(o)},{priority:"high"}),this.listenTo(t,"applyOperation",(t,e)=>{const o=e[0];o.isDocumentOperation&&(this.version++,this.history.addOperation(o))},{priority:"low"}),this.listenTo(this.selection,"change",()=>{this._hasSelectionChangedFromTheLastChangeBlock=!0}),this.listenTo(t.markers,"update",(t,e,o,i)=>{this.differ.bufferMarkerChange(e.name,o,i,e.affectsData),null===o&&e.on("change",(t,o)=>{this.differ.bufferMarkerChange(e.name,o,e.getRange(),e.affectsData)})})}get graveyard(){return this.getRoot("$graveyard")}createRoot(t="$root",e="main"){if(this.roots.get(e))throw new go.b("model-document-createRoot-name-exists: Root with specified name already exists.",this,{name:e});const o=new Ha(this,t,e);return this.roots.add(o),o}destroy(){this.selection.destroy(),this.stopListening()}getRoot(t="main"){return this.roots.get(t)}getRootNames(){return Array.from(this.roots,t=>t.rootName).filter(t=>"$graveyard"!=t)}registerPostFixer(t){this._postFixers.add(t)}toJSON(){const t=Oo(this);return t.selection="[engine.model.DocumentSelection]",t.model="[engine.model.Model]",t}_handleChangeBlock(t){this._hasDocumentChangedFromTheLastChangeBlock()&&(this._callPostFixers(t),this.selection.refresh(),this.differ.hasDataChanges()?this.fire("change:data",t.batch):this.fire("change",t.batch),this.selection.refresh(),this.differ.reset()),this._hasSelectionChangedFromTheLastChangeBlock=!1}_hasDocumentChangedFromTheLastChangeBlock(){return!this.differ.isEmpty||this._hasSelectionChangedFromTheLastChangeBlock}_getDefaultRoot(){for(const t of this.roots)if(t!==this.graveyard)return t;return this.graveyard}_getDefaultRange(){const t=this._getDefaultRoot(),e=this.model,o=e.schema,i=e.createPositionFromPath(t,[0]);return o.getNearestSelectionRange(i)||e.createRange(i)}_validateSelectionRange(t){return il(t.start)&&il(t.end)}_callPostFixers(t){let e=!1;do{for(const o of this._postFixers)if(this.selection.refresh(),e=o(t),e)break}while(e)}}function il(t){const e=t.textNode;if(e){const o=e.data,i=t.offset-e.startOffset;return!tl(o,i)&&!el(o,i)}return!0}Co(ol,po);class nl{constructor(){this._markers=new Map}[Symbol.iterator](){return this._markers.values()}has(t){return this._markers.has(t)}get(t){return this._markers.get(t)||null}_set(t,e,o=!1,i=!1){const n=t instanceof rl?t.name:t,r=this._markers.get(n);if(r){const t=r.getRange();let s=!1;return t.isEqual(e)||(r._attachLiveRange(Ns.fromRange(e)),s=!0),o!=r.managedUsingOperations&&(r._managedUsingOperations=o,s=!0),"boolean"==typeof i&&i!=r.affectsData&&(r._affectsData=i,s=!0),s&&this.fire("update:"+n,r,t,e),r}const s=Ns.fromRange(e),a=new rl(n,s,o,i);return this._markers.set(n,a),this.fire("update:"+n,a,null,e),a}_remove(t){const e=t instanceof rl?t.name:t,o=this._markers.get(e);return!!o&&(this._markers.delete(e),this.fire("update:"+e,o,o.getRange(),null),this._destroyMarker(o),!0)}_refresh(t){const e=t instanceof rl?t.name:t,o=this._markers.get(e);if(!o)throw new go.b("markercollection-refresh-marker-not-exists: Marker with provided name does not exists.",this);const i=o.getRange();this.fire("update:"+e,o,i,i,o.managedUsingOperations,o.affectsData)}*getMarkersAtPosition(t){for(const e of this)e.getRange().containsPosition(t)&&(yield e)}*getMarkersIntersectingRange(t){for(const e of this)null!==e.getRange().getIntersection(t)&&(yield e)}destroy(){for(const t of this._markers.values())this._destroyMarker(t);this._markers=null,this.stopListening()}*getMarkersGroup(t){for(const e of this._markers.values())e.name.startsWith(t+":")&&(yield e)}_destroyMarker(t){t.stopListening(),t._detachLiveRange()}}Co(nl,po);class rl{constructor(t,e,o,i){this.name=t,this._liveRange=this._attachLiveRange(e),this._managedUsingOperations=o,this._affectsData=i}get managedUsingOperations(){if(!this._liveRange)throw new go.b("marker-destroyed: Cannot use a destroyed marker instance.",this);return this._managedUsingOperations}get affectsData(){if(!this._liveRange)throw new go.b("marker-destroyed: Cannot use a destroyed marker instance.",this);return this._affectsData}getStart(){if(!this._liveRange)throw new go.b("marker-destroyed: Cannot use a destroyed marker instance.",this);return this._liveRange.start.clone()}getEnd(){if(!this._liveRange)throw new go.b("marker-destroyed: Cannot use a destroyed marker instance.",this);return this._liveRange.end.clone()}getRange(){if(!this._liveRange)throw new go.b("marker-destroyed: Cannot use a destroyed marker instance.",this);return this._liveRange.toRange()}is(t){return"marker"===t||"model:marker"===t}_attachLiveRange(t){return this._liveRange&&this._detachLiveRange(),t.delegate("change:range").to(this),t.delegate("change:content").to(this),this._liveRange=t,t}_detachLiveRange(){this._liveRange.stopDelegating("change:range",this),this._liveRange.stopDelegating("change:content",this),this._liveRange.detach(),this._liveRange=null}}Co(rl,po);class sl extends xa{get type(){return"noop"}clone(){return new sl(this.baseVersion)}getReversed(){return new sl(this.baseVersion+1)}_execute(){}static get className(){return"NoOperation"}}const al={};al[Oa.className]=Oa,al[Ba.className]=Ba,al[za.className]=za,al[Na.className]=Na,al[sl.className]=sl,al[xa.className]=xa,al[Fa.className]=Fa,al[Da.className]=Da,al[ja.className]=ja,al[La.className]=La;class ll extends _s{constructor(t,e,o="toNone"){if(super(t,e,o),!this.root.is("rootElement"))throw new go.b("model-liveposition-root-not-rootelement: LivePosition's root has to be an instance of RootElement.",t);cl.call(this)}detach(){this.stopListening()}is(t){return"livePosition"===t||"model:livePosition"===t||"position"==t||"model:position"===t}toPosition(){return new _s(this.root,this.path.slice(),this.stickiness)}static fromPosition(t,e){return new this(t.root,t.path.slice(),e||t.stickiness)}}function cl(){this.listenTo(this.root.document.model,"applyOperation",(t,e)=>{const o=e[0];o.isDocumentOperation&&dl.call(this,o)},{priority:"low"})}function dl(t){const e=this.getTransformedByOperation(t);if(!this.isEqual(e)){const t=this.toPosition();this.path=e.path,this.root=e.root,this.fire("change",t)}}Co(ll,po);class hl{constructor(t,e,o){this.model=t,this.writer=e,this.position=o,this.canMergeWith=new Set([this.position.parent]),this.schema=t.schema,this._filterAttributesOf=[],this._affectedStart=null,this._affectedEnd=null}handleNodes(t,e){t=Array.from(t);for(let o=0;o{if(!o.doNotResetEntireContent&&function(t,e){const o=t.getLimitElement(e);if(!e.containsEntireContent(o))return!1;const i=e.getFirstRange();if(i.start.parent==i.end.parent)return!1;return t.checkChild(o,"paragraph")}(n,e))return void function(t,e){const o=t.model.schema.getLimitElement(e);t.remove(t.createRangeIn(o)),gl(t,t.createPositionAt(o,0),e)}(t,e);const r=i.start,s=ll.fromPosition(i.end,"toNext");i.start.isTouching(i.end)||t.remove(i),o.leaveUnmerged||(!function t(e,o,i){const n=o.parent,r=i.parent;if(n==r)return;if(e.model.schema.isLimit(n)||e.model.schema.isLimit(r))return;if(!function(t,e,o){const i=new Cs(t,e);for(const t of i.getWalker())if(o.isLimit(t.item))return!1;return!0}(o,i,e.model.schema))return;o=e.createPositionAfter(n),(i=e.createPositionBefore(r)).isEqual(o)||e.insert(r,o);e.merge(o);for(;i.parent.isEmpty;){const t=i.parent;i=e.createPositionBefore(t),e.remove(t)}t(e,o,i)}(t,r,s),n.removeDisallowedAttributes(r.parent.getChildren(),t)),ml(t,e,r),!o.doNotAutoparagraph&&function(t,e){const o=t.checkChild(e,"$text"),i=t.checkChild(e,"paragraph");return!o&&i}(n,r)&&gl(t,r,e),s.detach()})}function gl(t,e,o){const i=t.createElement("paragraph");t.insert(i,e),ml(t,o,t.createPositionAt(i,0))}function ml(t,e,o){e instanceof Fs?t.setSelection(o):e.setTo(o)}function fl(t,e){if("text"==e.type)return"word"===t.unit?function(t,e){let o=t.position.textNode;if(o){let i=t.position.offset-o.startOffset;for(;!bl(o.data,i,e)&&!wl(o,i,e);){t.next();const n=e?t.position.nodeAfter:t.position.nodeBefore;if(n&&n.is("text")){const i=n.data.charAt(e?0:n.data.length-1);' ,.?!:;"-()'.includes(i)||(t.next(),o=t.position.textNode)}i=t.position.offset-o.startOffset}}return t.position}(t.walker,t.isForward):function(t,e){const o=t.position.textNode;if(o){const i=o.data;let n=t.position.offset-o.startOffset;for(;tl(i,n)||"character"==e&&el(i,n);)t.next(),n=t.position.offset-o.startOffset}return t.position}(t.walker,t.unit,t.isForward);if(e.type==(t.isForward?"elementStart":"elementEnd")){if(t.schema.isObject(e.item))return _s._createAt(e.item,t.isForward?"after":"before");if(t.schema.checkChild(e.nextPosition,"$text"))return e.nextPosition}else{if(t.schema.isLimit(e.item))return void t.walker.skip(()=>!0);if(t.schema.checkChild(e.nextPosition,"$text"))return e.nextPosition}}function pl(t,e){const o=t.root,i=_s._createAt(o,e?"end":0);return e?new Cs(t,i):new Cs(i,t)}function bl(t,e,o){const i=e+(o?0:-1);return' ,.?!:;"-()'.includes(t.charAt(i))}function wl(t,e,o){return e===(o?t.endOffset:0)}function kl(t,e){const o=[];Array.from(t.getItems({direction:"backward"})).map(t=>e.createRangeOn(t)).filter(e=>(e.start.isAfter(t.start)||e.start.isEqual(t.start))&&(e.end.isBefore(t.end)||e.end.isEqual(t.end))).forEach(t=>{o.push(t.start.parent),e.remove(t)}),o.forEach(t=>{let o=t;for(;o.parent&&o.isEmpty;){const t=e.createRangeOn(o);o=o.parent,e.remove(t)}})}function _l(t){t.document.registerPostFixer(e=>function(t,e){const o=e.document.selection,i=e.schema,n=[];let r=!1;for(const t of o.getRanges()){const e=vl(t,i);e?(n.push(e),r=!0):n.push(t)}r&&t.setSelection(function(t){const e=[];e.push(t.shift());for(const o of t){const t=e.pop();if(o.isIntersecting(t)){const i=t.start.isAfter(o.start)?o.start:t.start,n=t.end.isAfter(o.end)?t.end:o.end,r=new Cs(i,n);e.push(r)}else e.push(t),e.push(o)}return e}(n),{backward:o.isBackward})}(e,t))}function vl(t,e){return t.isCollapsed?function(t,e){const o=t.start,i=e.getNearestSelectionRange(o);if(!i)return null;if(!i.isCollapsed)return i;const n=i.start;if(o.isEqual(n))return null;return new Cs(n)}(t,e):function(t,e){const o=t.start,i=t.end,n=e.checkChild(o,"$text"),r=e.checkChild(i,"$text"),s=e.getLimitElement(o),a=e.getLimitElement(i);if(s===a){if(n&&r)return null;if(function(t,e,o){const i=t.nodeAfter&&!o.isLimit(t.nodeAfter)||o.checkChild(t,"$text"),n=e.nodeBefore&&!o.isLimit(e.nodeBefore)||o.checkChild(e,"$text");return i||n}(o,i,e)){const t=o.nodeAfter&&e.isObject(o.nodeAfter)?null:e.getNearestSelectionRange(o,"forward"),n=i.nodeBefore&&e.isObject(i.nodeBefore)?null:e.getNearestSelectionRange(i,"backward"),r=t?t.start:o,s=n?n.start:i;return new Cs(r,s)}}const l=s&&!s.is("rootElement"),c=a&&!a.is("rootElement");if(l||c){const t=o.nodeAfter&&i.nodeBefore&&o.nodeAfter.parent===i.nodeBefore.parent,n=l&&(!t||!xl(o.nodeAfter,e)),r=c&&(!t||!xl(i.nodeBefore,e));let d=o,h=i;return n&&(d=_s._createBefore(yl(s,e))),r&&(h=_s._createAfter(yl(a,e))),new Cs(d,h)}return null}(t,e)}function yl(t,e){let o=t,i=o;for(;e.isLimit(i)&&i.parent;)o=i,i=i.parent;return o}function xl(t,e){return t&&e.isObject(t)}class Cl{constructor(){this.markers=new nl,this.document=new ol(this),this.schema=new na,this._pendingChanges=[],this._currentWriter=null,["insertContent","deleteContent","modifySelection","getSelectedContent","applyOperation"].forEach(t=>this.decorate(t)),this.on("applyOperation",(t,e)=>{e[0]._validate()},{priority:"highest"}),this.schema.register("$root",{isLimit:!0}),this.schema.register("$block",{allowIn:"$root",isBlock:!0}),this.schema.register("$text",{allowIn:"$block",isInline:!0}),this.schema.register("$clipboardHolder",{allowContentOf:"$root",isLimit:!0}),this.schema.extend("$text",{allowIn:"$clipboardHolder"}),this.schema.register("$marker"),this.schema.addChildCheck((t,e)=>{if("$marker"===e.name)return!0}),_l(this)}change(t){try{return 0===this._pendingChanges.length?(this._pendingChanges.push({batch:new ya,callback:t}),this._runPendingChanges()[0]):t(this._currentWriter)}catch(t){go.b.rethrowUnexpectedError(t,this)}}enqueueChange(t,e){try{"string"==typeof t?t=new ya(t):"function"==typeof t&&(e=t,t=new ya),this._pendingChanges.push({batch:t,callback:e}),1==this._pendingChanges.length&&this._runPendingChanges()}catch(t){go.b.rethrowUnexpectedError(t,this)}}applyOperation(t){t._execute()}insertContent(t,e,o){return function(t,e,o,i){return t.change(n=>{let r;r=o?o instanceof Rs||o instanceof Fs?o:n.createSelection(o,i):t.document.selection,r.isCollapsed||t.deleteContent(r,{doNotAutoparagraph:!0});const s=new hl(t,n,r.anchor);let a;a=e.is("documentFragment")?e.getChildren():[e],s.handleNodes(a,{isFirst:!0,isLast:!0});const l=s.getSelectionRange();l&&(r instanceof Fs?n.setSelection(l):r.setTo(l));const c=s.getAffectedRange()||t.createRange(r.anchor);return s.destroy(),c})}(this,t,e,o)}deleteContent(t,e){ul(this,t,e)}modifySelection(t,e){!function(t,e,o={}){const i=t.schema,n="backward"!=o.direction,r=o.unit?o.unit:"character",s=e.focus,a=new ws({boundaries:pl(s,n),singleCharacters:!0,direction:n?"forward":"backward"}),l={walker:a,schema:i,isForward:n,unit:r};let c;for(;c=a.next();){if(c.done)return;const o=fl(l,c.value);if(o)return void(e instanceof Fs?t.change(t=>{t.setSelectionFocus(o)}):e.setFocus(o))}}(this,t,e)}getSelectedContent(t){return function(t,e){return t.change(t=>{const o=t.createDocumentFragment(),i=e.getFirstRange();if(!i||i.isCollapsed)return o;const n=i.start.root,r=i.start.getCommonPath(i.end),s=n.getNodeByPath(r);let a;a=i.start.parent==i.end.parent?i:t.createRange(t.createPositionAt(s,i.start.path[r.length]),t.createPositionAt(s,i.end.path[r.length]+1));const l=a.end.offset-a.start.offset;for(const e of a.getItems({shallow:!0}))e.is("textProxy")?t.appendText(e.data,e.getAttributes(),o):t.append(e._clone(!0),o);if(a!=i){const e=i._getTransformedByMove(a.start,t.createPositionAt(o,0),l)[0],n=t.createRange(t.createPositionAt(o,0),e.start);kl(t.createRange(e.end,t.createPositionAt(o,"end")),t),kl(n,t)}return o})}(this,t)}hasContent(t,e){const o=t instanceof bs?Cs._createIn(t):t;if(o.isCollapsed)return!1;for(const t of this.markers.getMarkersIntersectingRange(o))if(t.affectsData)return!0;const{ignoreWhitespaces:i=!1}=e||{};for(const t of o.getItems())if(t.is("textProxy")){if(!i)return!0;if(-1!==t.data.search(/\S/))return!0}else if(this.schema.isObject(t))return!0;return!1}createPositionFromPath(t,e,o){return new _s(t,e,o)}createPositionAt(t,e){return _s._createAt(t,e)}createPositionAfter(t){return _s._createAfter(t)}createPositionBefore(t){return _s._createBefore(t)}createRange(t,e){return new Cs(t,e)}createRangeIn(t){return Cs._createIn(t)}createRangeOn(t){return Cs._createOn(t)}createSelection(t,e,o){return new Rs(t,e,o)}createBatch(t){return new ya(t)}createOperationFromJSON(t){return class{static fromJSON(t,e){return al[t.__className].fromJSON(t,e)}}.fromJSON(t,this.document)}destroy(){this.document.destroy(),this.stopListening()}_runPendingChanges(){const t=[];for(this.fire("_beforeChanges");this._pendingChanges.length;){const e=this._pendingChanges[0].batch;this._currentWriter=new Wa(this,e);const o=this._pendingChanges[0].callback(this._currentWriter);t.push(o),this.document._handleChangeBlock(this._currentWriter),this._pendingChanges.shift(),this._currentWriter=null}return this.fire("_afterChanges"),t}}Co(Cl,Wi);class Al{constructor(){this._listener=Object.create(cr)}listenTo(t){this._listener.listenTo(t,"keydown",(t,e)=>{this._listener.fire("_keydown:"+bn(e),e)})}set(t,e,o={}){const i=wn(t),n=o.priority;this._listener.listenTo(this._listener,"_keydown:"+i,(t,o)=>{e(o,()=>{o.preventDefault(),o.stopPropagation(),t.stop()}),t.return=!0},{priority:n})}press(t){return!!this._listener.fire("_keydown:"+bn(t),t)}destroy(){this._listener.stopListening()}}class Tl extends Al{constructor(t){super(),this.editor=t}set(t,e,o={}){if("string"==typeof e){const t=e;e=(e,o)=>{this.editor.execute(t),o()}}super.set(t,e,o)}}class Pl{constructor(t={}){this._context=t.context||new Io({language:t.language}),this._context._addEditor(this,!t.context);const e=Array.from(this.constructor.builtinPlugins||[]);this.config=new no(t,this.constructor.defaultConfig),this.config.define("plugins",e),this.config.define(this._context._getEditorConfig()),this.plugins=new To(this,e,this._context.plugins),this.locale=this._context.locale,this.t=this.locale.t,this.commands=new ea,this.set("state","initializing"),this.once("ready",()=>this.state="ready",{priority:"high"}),this.once("destroy",()=>this.state="destroyed",{priority:"high"}),this.set("isReadOnly",!1),this.model=new Cl;const o=new Ii;this.data=new wa(this.model,o),this.editing=new ta(this.model,o),this.editing.view.document.bind("isReadOnly").to(this),this.conversion=new ka([this.editing.downcastDispatcher,this.data.downcastDispatcher],this.data.upcastDispatcher),this.conversion.addAlias("dataDowncast",this.data.downcastDispatcher),this.conversion.addAlias("editingDowncast",this.editing.downcastDispatcher),this.keystrokes=new Tl(this),this.keystrokes.listenTo(this.editing.view.document)}initPlugins(){const t=this.config,e=t.get("plugins"),o=t.get("removePlugins")||[],i=t.get("extraPlugins")||[];return this.plugins.init(e.concat(i),o)}destroy(){let t=Promise.resolve();return"initializing"==this.state&&(t=new Promise(t=>this.once("ready",t))),t.then(()=>{this.fire("destroy"),this.stopListening(),this.commands.destroy()}).then(()=>this.plugins.destroy()).then(()=>{this.model.destroy(),this.data.destroy(),this.editing.destroy(),this.keystrokes.destroy()}).then(()=>this._context._removeEditor(this))}execute(...t){try{this.commands.execute(...t)}catch(t){go.b.rethrowUnexpectedError(t,this)}}}Co(Pl,Wi);class Sl{getHtml(t){const e=document.implementation.createHTMLDocument("").createElement("div");return e.appendChild(t),e.innerHTML}}class El{constructor(t){this._domParser=new DOMParser,this._domConverter=new nr(t,{blockFillerMode:"nbsp"}),this._htmlWriter=new Sl}toData(t){const e=this._domConverter.viewToDom(t,document);return this._htmlWriter.getHtml(e)}toView(t){const e=this._toDom(t);return this._domConverter.domToView(e)}_toDom(t){const e=this._domParser.parseFromString(t,"text/html"),o=e.createDocumentFragment(),i=e.body.childNodes;for(;i.length>0;)o.appendChild(i[0]);return o}}class Rl{constructor(t){this.editor=t,this.set("isEnabled",!0),this._disableStack=new Set}forceDisabled(t){this._disableStack.add(t),1==this._disableStack.size&&(this.on("set:isEnabled",Il,{priority:"highest"}),this.isEnabled=!1)}clearForceDisabled(t){this._disableStack.delete(t),0==this._disableStack.size&&(this.off("set:isEnabled",Il),this.isEnabled=!0)}destroy(){this.stopListening()}static get isContextPlugin(){return!1}}function Il(t){t.return=!1,t.stop()}Co(Rl,Wi);class Vl extends Ao{constructor(t=[]){super(t,{idProperty:"viewUid"}),this.on("add",(t,e,o)=>{this._renderViewIntoCollectionParent(e,o)}),this.on("remove",(t,e)=>{e.element&&this._parentElement&&e.element.remove()}),this._parentElement=null}destroy(){this.map(t=>t.destroy())}setParent(t){this._parentElement=t;for(const t of this)this._renderViewIntoCollectionParent(t)}delegate(...t){if(!t.length||!t.every(t=>"string"==typeof t))throw new go.b("ui-viewcollection-delegate-wrong-events: All event names must be strings.",this);return{to:e=>{for(const o of this)for(const i of t)o.delegate(i).to(e);this.on("add",(o,i)=>{for(const o of t)i.delegate(o).to(e)}),this.on("remove",(o,i)=>{for(const o of t)i.stopDelegating(o,e)})}}}_renderViewIntoCollectionParent(t,e){t.isRendered||t.render(),t.element&&this._parentElement&&this._parentElement.insertBefore(t.element,this._parentElement.children[e])}}class Ol{constructor(t){Object.assign(this,Wl(Hl(t))),this._isRendered=!1,this._revertData=null}render(){const t=this._renderNode({intoFragment:!0});return this._isRendered=!0,t}apply(t){return this._revertData={children:[],bindings:[],attributes:{}},this._renderNode({node:t,isApplying:!0,revertData:this._revertData}),t}revert(t){if(!this._revertData)throw new go.b("ui-template-revert-not-applied: Attempting to revert a template which has not been applied yet.",[this,t]);this._revertTemplateFromNode(t,this._revertData)}*getViews(){yield*function*t(e){if(e.children)for(const o of e.children)Kl(o)?yield o:Jl(o)&&(yield*t(o))}(this)}static bind(t,e){return{to:(o,i)=>new Nl({eventNameOrFunction:o,attribute:o,observable:t,emitter:e,callback:i}),if:(o,i,n)=>new Bl({observable:t,emitter:e,attribute:o,valueIfTrue:i,callback:n})}}static extend(t,e){if(t._isRendered)throw new go.b("template-extend-render: Attempting to extend a template which has already been rendered.",[this,t]);!function t(e,o){o.attributes&&(e.attributes||(e.attributes={}),$l(e.attributes,o.attributes));o.eventListeners&&(e.eventListeners||(e.eventListeners={}),$l(e.eventListeners,o.eventListeners));o.text&&e.text.push(...o.text);if(o.children&&o.children.length){if(e.children.length!=o.children.length)throw new go.b("ui-template-extend-children-mismatch: The number of children in extended definition does not match.",e);let i=0;for(const n of o.children)t(e.children[i++],n)}}(t,Wl(Hl(e)))}_renderNode(t){let e;if(e=t.node?this.tag&&this.text:this.tag?this.text:!this.text,e)throw new go.b('ui-template-wrong-syntax: Node definition must have either "tag" or "text" when rendering a new Node.',this);return this.text?this._renderText(t):this._renderElement(t)}_renderElement(t){let e=t.node;return e||(e=t.node=document.createElementNS(this.ns||"http://www.w3.org/1999/xhtml",this.tag)),this._renderAttributes(t),this._renderElementChildren(t),this._setUpListeners(t),e}_renderText(t){let e=t.node;return e?t.revertData.text=e.textContent:e=t.node=document.createTextNode(""),zl(this.text)?this._bindToObservable({schema:this.text,updater:Dl(e),data:t}):e.textContent=this.text.join(""),e}_renderAttributes(t){let e,o,i,n;if(!this.attributes)return;const r=t.node,s=t.revertData;for(e in this.attributes)if(i=r.getAttribute(e),o=this.attributes[e],s&&(s.attributes[e]=i),n=z(o[0])&&o[0].ns?o[0].ns:null,zl(o)){const a=n?o[0].value:o;s&&Ql(e)&&a.unshift(i),this._bindToObservable({schema:a,updater:Ll(r,e,n),data:t})}else"style"==e&&"string"!=typeof o[0]?this._renderStyleAttribute(o[0],t):(s&&i&&Ql(e)&&o.unshift(i),o=o.map(t=>t&&t.value||t).reduce((t,e)=>t.concat(e),[]).reduce(Ul,""),Gl(o)||r.setAttributeNS(n,e,o))}_renderStyleAttribute(t,e){const o=e.node;for(const i in t){const n=t[i];zl(n)?this._bindToObservable({schema:[n],updater:jl(o,i),data:e}):o.style[i]=n}}_renderElementChildren(t){const e=t.node,o=t.intoFragment?document.createDocumentFragment():e,i=t.isApplying;let n=0;for(const r of this.children)if(Yl(r)){if(!i){r.setParent(e);for(const t of r)o.appendChild(t.element)}}else if(Kl(r))i||(r.isRendered||r.render(),o.appendChild(r.element));else if(Jn(r))o.appendChild(r);else if(i){const e={children:[],bindings:[],attributes:{}};t.revertData.children.push(e),r._renderNode({node:o.childNodes[n++],isApplying:!0,revertData:e})}else o.appendChild(r.render());t.intoFragment&&e.appendChild(o)}_setUpListeners(t){if(this.eventListeners)for(const e in this.eventListeners){const o=this.eventListeners[e].map(o=>{const[i,n]=e.split("@");return o.activateDomEventListener(i,n,t)});t.revertData&&t.revertData.bindings.push(o)}}_bindToObservable({schema:t,updater:e,data:o}){const i=o.revertData;Fl(t,e,o);const n=t.filter(t=>!Gl(t)).filter(t=>t.observable).map(i=>i.activateAttributeListener(t,e,o));i&&i.bindings.push(n)}_revertTemplateFromNode(t,e){for(const t of e.bindings)for(const e of t)e();if(e.text)t.textContent=e.text;else{for(const o in e.attributes){const i=e.attributes[o];null===i?t.removeAttribute(o):t.setAttribute(o,i)}for(let o=0;oFl(t,e,o);return this.emitter.listenTo(this.observable,"change:"+this.attribute,i),()=>{this.emitter.stopListening(this.observable,"change:"+this.attribute,i)}}}class Nl extends Ml{activateDomEventListener(t,e,o){const i=(t,o)=>{e&&!o.target.matches(e)||("function"==typeof this.eventNameOrFunction?this.eventNameOrFunction(o):this.observable.fire(this.eventNameOrFunction,o))};return this.emitter.listenTo(o.node,t,i),()=>{this.emitter.stopListening(o.node,t,i)}}}class Bl extends Ml{getValue(t){return!Gl(super.getValue(t))&&(this.valueIfTrue||!0)}}function zl(t){return!!t&&(t.value&&(t=t.value),Array.isArray(t)?t.some(zl):t instanceof Ml)}function Fl(t,e,{node:o}){let i=function(t,e){return t.map(t=>t instanceof Ml?t.getValue(e):t)}(t,o);i=1==t.length&&t[0]instanceof Bl?i[0]:i.reduce(Ul,""),Gl(i)?e.remove():e.set(i)}function Dl(t){return{set(e){t.textContent=e},remove(){t.textContent=""}}}function Ll(t,e,o){return{set(i){t.setAttributeNS(o,e,i)},remove(){t.removeAttributeNS(o,e)}}}function jl(t,e){return{set(o){t.style[e]=o},remove(){t.style[e]=null}}}function Hl(t){return oo(t,t=>{if(t&&(t instanceof Ml||Jl(t)||Kl(t)||Yl(t)))return t})}function Wl(t){if("string"==typeof t?t=function(t){return{text:[t]}}(t):t.text&&function(t){Array.isArray(t.text)||(t.text=[t.text])}(t),t.on&&(t.eventListeners=function(t){for(const e in t)ql(t,e);return t}(t.on),delete t.on),!t.text){t.attributes&&function(t){for(const e in t)t[e].value&&(t[e].value=[].concat(t[e].value)),ql(t,e)}(t.attributes);const e=[];if(t.children)if(Yl(t.children))e.push(t.children);else for(const o of t.children)Jl(o)||Kl(o)||Jn(o)?e.push(o):e.push(new Ol(o));t.children=e}return t}function ql(t,e){Array.isArray(t[e])||(t[e]=[t[e]])}function Ul(t,e){return Gl(e)?t:Gl(t)?e:`${t} ${e}`}function $l(t,e){for(const o in e)t[o]?t[o].push(...e[o]):t[o]=e[o]}function Gl(t){return!t&&0!==t}function Kl(t){return t instanceof Xl}function Jl(t){return t instanceof Ol}function Yl(t){return t instanceof Vl}function Ql(t){return"class"==t||"style"==t}o(16);class Xl{constructor(t){this.element=null,this.isRendered=!1,this.locale=t,this.t=t&&t.t,this._viewCollections=new Ao,this._unboundChildren=this.createCollection(),this._viewCollections.on("add",(e,o)=>{o.locale=t}),this.decorate("render")}get bindTemplate(){return this._bindTemplate?this._bindTemplate:this._bindTemplate=Ol.bind(this,this)}createCollection(t){const e=new Vl(t);return this._viewCollections.add(e),e}registerChild(t){xo(t)||(t=[t]);for(const e of t)this._unboundChildren.add(e)}deregisterChild(t){xo(t)||(t=[t]);for(const e of t)this._unboundChildren.remove(e)}setTemplate(t){this.template=new Ol(t)}extendTemplate(t){Ol.extend(this.template,t)}render(){if(this.isRendered)throw new go.b("ui-view-render-already-rendered: This View has already been rendered.",this);this.template&&(this.element=this.template.render(),this.registerChild(this.template.getViews())),this.isRendered=!0}destroy(){this.stopListening(),this._viewCollections.map(t=>t.destroy()),this.template&&this.template._revertData&&this.template.revert(this.element)}}function Zl({element:t,target:e,positions:o,limiter:i,fitInViewport:n}){D(e)&&(e=e()),D(i)&&(i=i());const r=function(t){return t&&t.parentNode?t.offsetParent===tr.document.body?null:t.offsetParent:null}(t),s=new Zr(t),a=new Zr(e);let l,c;if(i||n){const t=function(t,e){const{elementRect:o,viewportRect:i}=e,n=o.getArea(),r=function(t,{targetRect:e,elementRect:o,limiterRect:i,viewportRect:n}){const r=[],s=o.getArea();for(const a of t){const t=tc(a,e,o);if(!t)continue;const[l,c]=t;let d=0,h=0;if(i)if(n){const t=i.getIntersection(n);t&&(d=t.getIntersectionArea(c))}else d=i.getIntersectionArea(c);n&&(h=n.getIntersectionArea(c));const u={positionName:l,positionRect:c,limiterIntersectArea:d,viewportIntersectArea:h};if(d===s)return[u];r.push(u)}return r}(t,e);if(i){const t=ec(r.filter(({viewportIntersectArea:t})=>t===n),n);if(t)return t}return ec(r,n)}(o,{targetRect:a,elementRect:s,limiterRect:i&&new Zr(i).getVisible(),viewportRect:n&&new Zr(tr.window)});[c,l]=t||tc(o[0],a,s)}else[c,l]=tc(o[0],a,s);let d=oc(l);return r&&(d=function({left:t,top:e},o){const i=oc(new Zr(o)),n=Qr(o);return t-=i.left,e-=i.top,t+=o.scrollLeft,e+=o.scrollTop,t-=n.left,e-=n.top,{left:t,top:e}}(d,r)),{left:d.left,top:d.top,name:c}}function tc(t,e,o){const i=t(e,o);if(!i)return null;const{left:n,top:r,name:s}=i;return[s,o.clone().moveTo(n,r)]}function ec(t,e){let o,i,n=0;for(const{positionName:r,positionRect:s,limiterIntersectArea:a,viewportIntersectArea:l}of t){if(a===e)return[r,s];const t=l**2+a**2;t>n&&(n=t,o=s,i=r)}return o?[i,o]:null}function oc({left:t,top:e}){const{scrollX:o,scrollY:i}=tr.window;return{left:t+o,top:e+i}}function ic(t){return e=>e+t}Co(Xl,cr),Co(Xl,Wi);o(18);const nc=ic("px"),rc=tr.document.body;class sc extends Xl{constructor(t){super(t);const e=this.bindTemplate;this.set("top",0),this.set("left",0),this.set("position","arrow_nw"),this.set("isVisible",!1),this.set("withArrow",!0),this.set("class"),this.content=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-balloon-panel",e.to("position",t=>"ck-balloon-panel_"+t),e.if("isVisible","ck-balloon-panel_visible"),e.if("withArrow","ck-balloon-panel_with-arrow"),e.to("class")],style:{top:e.to("top",nc),left:e.to("left",nc)}},children:this.content})}show(){this.isVisible=!0}hide(){this.isVisible=!1}attachTo(t){this.show();const e=sc.defaultPositions,o=Object.assign({},{element:this.element,positions:[e.southArrowNorth,e.southArrowNorthMiddleWest,e.southArrowNorthMiddleEast,e.southArrowNorthWest,e.southArrowNorthEast,e.northArrowSouth,e.northArrowSouthMiddleWest,e.northArrowSouthMiddleEast,e.northArrowSouthWest,e.northArrowSouthEast],limiter:rc,fitInViewport:!0},t),i=sc._getOptimalPosition(o),n=parseInt(i.left),r=parseInt(i.top),s=i.name;Object.assign(this,{top:r,left:n,position:s})}pin(t){this.unpin(),this._pinWhenIsVisibleCallback=()=>{this.isVisible?this._startPinning(t):this._stopPinning()},this._startPinning(t),this.listenTo(this,"change:isVisible",this._pinWhenIsVisibleCallback)}unpin(){this._pinWhenIsVisibleCallback&&(this._stopPinning(),this.stopListening(this,"change:isVisible",this._pinWhenIsVisibleCallback),this._pinWhenIsVisibleCallback=null,this.hide())}_startPinning(t){this.attachTo(t);const e=ac(t.target),o=t.limiter?ac(t.limiter):rc;this.listenTo(tr.document,"scroll",(i,n)=>{const r=n.target,s=e&&r.contains(e),a=o&&r.contains(o);!s&&!a&&e&&o||this.attachTo(t)},{useCapture:!0}),this.listenTo(tr.window,"resize",()=>{this.attachTo(t)})}_stopPinning(){this.stopListening(tr.document,"scroll"),this.stopListening(tr.window,"resize")}}function ac(t){return io(t)?t:Yr(t)?t.commonAncestorContainer:"function"==typeof t?ac(t()):null}function lc(t,e){return t.top-e.height-sc.arrowVerticalOffset}function cc(t){return t.bottom+sc.arrowVerticalOffset}sc.arrowHorizontalOffset=25,sc.arrowVerticalOffset=10,sc._getOptimalPosition=Zl,sc.defaultPositions={northWestArrowSouthWest:(t,e)=>({top:lc(t,e),left:t.left-sc.arrowHorizontalOffset,name:"arrow_sw"}),northWestArrowSouthMiddleWest:(t,e)=>({top:lc(t,e),left:t.left-.25*e.width-sc.arrowHorizontalOffset,name:"arrow_smw"}),northWestArrowSouth:(t,e)=>({top:lc(t,e),left:t.left-e.width/2,name:"arrow_s"}),northWestArrowSouthMiddleEast:(t,e)=>({top:lc(t,e),left:t.left-.75*e.width+sc.arrowHorizontalOffset,name:"arrow_sme"}),northWestArrowSouthEast:(t,e)=>({top:lc(t,e),left:t.left-e.width+sc.arrowHorizontalOffset,name:"arrow_se"}),northArrowSouthWest:(t,e)=>({top:lc(t,e),left:t.left+t.width/2-sc.arrowHorizontalOffset,name:"arrow_sw"}),northArrowSouthMiddleWest:(t,e)=>({top:lc(t,e),left:t.left+t.width/2-.25*e.width-sc.arrowHorizontalOffset,name:"arrow_smw"}),northArrowSouth:(t,e)=>({top:lc(t,e),left:t.left+t.width/2-e.width/2,name:"arrow_s"}),northArrowSouthMiddleEast:(t,e)=>({top:lc(t,e),left:t.left+t.width/2-.75*e.width+sc.arrowHorizontalOffset,name:"arrow_sme"}),northArrowSouthEast:(t,e)=>({top:lc(t,e),left:t.left+t.width/2-e.width+sc.arrowHorizontalOffset,name:"arrow_se"}),northEastArrowSouthWest:(t,e)=>({top:lc(t,e),left:t.right-sc.arrowHorizontalOffset,name:"arrow_sw"}),northEastArrowSouthMiddleWest:(t,e)=>({top:lc(t,e),left:t.right-.25*e.width-sc.arrowHorizontalOffset,name:"arrow_smw"}),northEastArrowSouth:(t,e)=>({top:lc(t,e),left:t.right-e.width/2,name:"arrow_s"}),northEastArrowSouthMiddleEast:(t,e)=>({top:lc(t,e),left:t.right-.75*e.width+sc.arrowHorizontalOffset,name:"arrow_sme"}),northEastArrowSouthEast:(t,e)=>({top:lc(t,e),left:t.right-e.width+sc.arrowHorizontalOffset,name:"arrow_se"}),southWestArrowNorthWest:(t,e)=>({top:cc(t),left:t.left-sc.arrowHorizontalOffset,name:"arrow_nw"}),southWestArrowNorthMiddleWest:(t,e)=>({top:cc(t),left:t.left-.25*e.width-sc.arrowHorizontalOffset,name:"arrow_nmw"}),southWestArrowNorth:(t,e)=>({top:cc(t),left:t.left-e.width/2,name:"arrow_n"}),southWestArrowNorthMiddleEast:(t,e)=>({top:cc(t),left:t.left-.75*e.width+sc.arrowHorizontalOffset,name:"arrow_nme"}),southWestArrowNorthEast:(t,e)=>({top:cc(t),left:t.left-e.width+sc.arrowHorizontalOffset,name:"arrow_ne"}),southArrowNorthWest:(t,e)=>({top:cc(t),left:t.left+t.width/2-sc.arrowHorizontalOffset,name:"arrow_nw"}),southArrowNorthMiddleWest:(t,e)=>({top:cc(t),left:t.left+t.width/2-.25*e.width-sc.arrowHorizontalOffset,name:"arrow_nmw"}),southArrowNorth:(t,e)=>({top:cc(t),left:t.left+t.width/2-e.width/2,name:"arrow_n"}),southArrowNorthMiddleEast:(t,e)=>({top:cc(t),left:t.left+t.width/2-.75*e.width+sc.arrowHorizontalOffset,name:"arrow_nme"}),southArrowNorthEast:(t,e)=>({top:cc(t),left:t.left+t.width/2-e.width+sc.arrowHorizontalOffset,name:"arrow_ne"}),southEastArrowNorthWest:(t,e)=>({top:cc(t),left:t.right-sc.arrowHorizontalOffset,name:"arrow_nw"}),southEastArrowNorthMiddleWest:(t,e)=>({top:cc(t),left:t.right-.25*e.width-sc.arrowHorizontalOffset,name:"arrow_nmw"}),southEastArrowNorth:(t,e)=>({top:cc(t),left:t.right-e.width/2,name:"arrow_n"}),southEastArrowNorthMiddleEast:(t,e)=>({top:cc(t),left:t.right-.75*e.width+sc.arrowHorizontalOffset,name:"arrow_nme"}),southEastArrowNorthEast:(t,e)=>({top:cc(t),left:t.right-e.width+sc.arrowHorizontalOffset,name:"arrow_ne"})};o(20);class dc extends Xl{constructor(){super();const t=this.bindTemplate;this.set("content",""),this.set("viewBox","0 0 20 20"),this.set("fillColor",""),this.setTemplate({tag:"svg",ns:"http://www.w3.org/2000/svg",attributes:{class:["ck","ck-icon"],viewBox:t.to("viewBox")}})}render(){super.render(),this._updateXMLContent(),this._colorFillPaths(),this.on("change:content",()=>{this._updateXMLContent(),this._colorFillPaths()}),this.on("change:fillColor",()=>{this._colorFillPaths()})}_updateXMLContent(){if(this.content){const t=(new DOMParser).parseFromString(this.content.trim(),"image/svg+xml").querySelector("svg"),e=t.getAttribute("viewBox");for(e&&(this.viewBox=e),this.element.innerHTML="";t.childNodes.length>0;)this.element.appendChild(t.childNodes[0])}}_colorFillPaths(){this.fillColor&&this.element.querySelectorAll(".ck-icon__fill").forEach(t=>{t.style.fill=this.fillColor})}}o(22);class hc extends Xl{constructor(t){super(t),this.set("text",""),this.set("position","s");const e=this.bindTemplate;this.setTemplate({tag:"span",attributes:{class:["ck","ck-tooltip",e.to("position",t=>"ck-tooltip_"+t),e.if("text","ck-hidden",t=>!t.trim())]},children:[{tag:"span",attributes:{class:["ck","ck-tooltip__text"]},children:[{text:e.to("text")}]}]})}}o(24);class uc extends Xl{constructor(t){super(t);const e=this.bindTemplate,o=ho();this.set("class"),this.set("labelStyle"),this.set("icon"),this.set("isEnabled",!0),this.set("isOn",!1),this.set("isVisible",!0),this.set("isToggleable",!1),this.set("keystroke"),this.set("label"),this.set("tabindex",-1),this.set("tooltip"),this.set("tooltipPosition","s"),this.set("type","button"),this.set("withText",!1),this.set("withKeystroke",!1),this.children=this.createCollection(),this.tooltipView=this._createTooltipView(),this.labelView=this._createLabelView(o),this.iconView=new dc,this.iconView.extendTemplate({attributes:{class:"ck-button__icon"}}),this.keystrokeView=this._createKeystrokeView(),this.bind("_tooltipString").to(this,"tooltip",this,"label",this,"keystroke",this._getTooltipString.bind(this)),this.setTemplate({tag:"button",attributes:{class:["ck","ck-button",e.to("class"),e.if("isEnabled","ck-disabled",t=>!t),e.if("isVisible","ck-hidden",t=>!t),e.to("isOn",t=>t?"ck-on":"ck-off"),e.if("withText","ck-button_with-text"),e.if("withKeystroke","ck-button_with-keystroke")],type:e.to("type",t=>t||"button"),tabindex:e.to("tabindex"),"aria-labelledby":"ck-editor__aria-label_"+o,"aria-disabled":e.if("isEnabled",!0,t=>!t),"aria-pressed":e.to("isOn",t=>!!this.isToggleable&&String(t))},children:this.children,on:{mousedown:e.to(t=>{t.preventDefault()}),click:e.to(t=>{this.isEnabled?this.fire("execute"):t.preventDefault()})}})}render(){super.render(),this.icon&&(this.iconView.bind("content").to(this,"icon"),this.children.add(this.iconView)),this.children.add(this.tooltipView),this.children.add(this.labelView),this.withKeystroke&&this.children.add(this.keystrokeView)}focus(){this.element.focus()}_createTooltipView(){const t=new hc;return t.bind("text").to(this,"_tooltipString"),t.bind("position").to(this,"tooltipPosition"),t}_createLabelView(t){const e=new Xl,o=this.bindTemplate;return e.setTemplate({tag:"span",attributes:{class:["ck","ck-button__label"],style:o.to("labelStyle"),id:"ck-editor__aria-label_"+t},children:[{text:this.bindTemplate.to("label")}]}),e}_createKeystrokeView(){const t=new Xl;return t.setTemplate({tag:"span",attributes:{class:["ck","ck-button__keystroke"]},children:[{text:this.bindTemplate.to("keystroke",t=>kn(t))}]}),t}_getTooltipString(t,e,o){return t?"string"==typeof t?t:(o&&(o=kn(o)),t instanceof Function?t(e,o):`${e}${o?` (${o})`:""}`):""}}class gc{constructor(){this.set("isFocused",!1),this.set("focusedElement",null),this._elements=new Set,this._nextEventLoopTimeout=null}add(t){if(this._elements.has(t))throw new go.b("focusTracker-add-element-already-exist",this);this.listenTo(t,"focus",()=>this._focus(t),{useCapture:!0}),this.listenTo(t,"blur",()=>this._blur(),{useCapture:!0}),this._elements.add(t)}remove(t){t===this.focusedElement&&this._blur(t),this._elements.has(t)&&(this.stopListening(t),this._elements.delete(t))}destroy(){this.stopListening()}_focus(t){clearTimeout(this._nextEventLoopTimeout),this.focusedElement=t,this.isFocused=!0}_blur(){clearTimeout(this._nextEventLoopTimeout),this._nextEventLoopTimeout=setTimeout(()=>{this.focusedElement=null,this.isFocused=!1},0)}}Co(gc,cr),Co(gc,Wi);o(26),o(28);const mc=ic("px");class fc extends Rl{static get pluginName(){return"ContextualBalloon"}constructor(t){super(t),this.positionLimiter=()=>{const t=this.editor.editing.view,e=t.document.selection.editableElement;return e?t.domConverter.mapViewToDom(e.root):null},this.set("visibleView",null),this.view=new sc(t.locale),t.ui.view.body.add(this.view),t.ui.focusTracker.add(this.view.element),this._viewToStack=new Map,this._idToStack=new Map,this.set("_numberOfStacks",0),this.set("_singleViewMode",!1),this._rotatorView=this._createRotatorView(),this._fakePanelsView=this._createFakePanelsView()}hasView(t){return Array.from(this._viewToStack.keys()).includes(t)}add(t){if(this.hasView(t.view))throw new go.b("contextualballoon-add-view-exist: Cannot add configuration of the same view twice.",[this,t]);const e=t.stackId||"main";if(!this._idToStack.has(e))return this._idToStack.set(e,new Map([[t.view,t]])),this._viewToStack.set(t.view,this._idToStack.get(e)),this._numberOfStacks=this._idToStack.size,void(this._visibleStack&&!t.singleViewMode||this.showStack(e));const o=this._idToStack.get(e);t.singleViewMode&&this.showStack(e),o.set(t.view,t),this._viewToStack.set(t.view,o),o===this._visibleStack&&this._showView(t)}remove(t){if(!this.hasView(t))throw new go.b("contextualballoon-remove-view-not-exist: Cannot remove the configuration of a non-existent view.",[this,t]);const e=this._viewToStack.get(t);this._singleViewMode&&this.visibleView===t&&(this._singleViewMode=!1),this.visibleView===t&&(1===e.size?this._idToStack.size>1?this._showNextStack():(this.view.hide(),this.visibleView=null,this._rotatorView.hideView()):this._showView(Array.from(e.values())[e.size-2])),1===e.size?(this._idToStack.delete(this._getStackId(e)),this._numberOfStacks=this._idToStack.size):e.delete(t),this._viewToStack.delete(t)}updatePosition(t){t&&(this._visibleStack.get(this.visibleView).position=t),this.view.pin(this._getBalloonPosition()),this._fakePanelsView.updatePosition()}showStack(t){this.visibleStack=t;const e=this._idToStack.get(t);if(!e)throw new go.b("contextualballoon-showstack-stack-not-exist: Cannot show a stack that does not exist.",this);this._visibleStack!==e&&this._showView(Array.from(e.values()).pop())}get _visibleStack(){return this._viewToStack.get(this.visibleView)}_getStackId(t){return Array.from(this._idToStack.entries()).find(e=>e[1]===t)[0]}_showNextStack(){const t=Array.from(this._idToStack.values());let e=t.indexOf(this._visibleStack)+1;t[e]||(e=0),this.showStack(this._getStackId(t[e]))}_showPrevStack(){const t=Array.from(this._idToStack.values());let e=t.indexOf(this._visibleStack)-1;t[e]||(e=t.length-1),this.showStack(this._getStackId(t[e]))}_createRotatorView(){const t=new pc(this.editor.locale),e=this.editor.locale.t;return this.view.content.add(t),t.bind("isNavigationVisible").to(this,"_numberOfStacks",this,"_singleViewMode",(t,e)=>!e&&t>1),t.on("change:isNavigationVisible",()=>this.updatePosition(),{priority:"low"}),t.bind("counter").to(this,"visibleView",this,"_numberOfStacks",(t,o)=>{if(o<2)return"";const i=Array.from(this._idToStack.values()).indexOf(this._visibleStack)+1;return e("%0 of %1",[i,o])}),t.buttonNextView.on("execute",()=>{t.focusTracker.isFocused&&this.editor.editing.view.focus(),this._showNextStack()}),t.buttonPrevView.on("execute",()=>{t.focusTracker.isFocused&&this.editor.editing.view.focus(),this._showPrevStack()}),t}_createFakePanelsView(){const t=new bc(this.editor.locale,this.view);return t.bind("numberOfPanels").to(this,"_numberOfStacks",this,"_singleViewMode",(t,e)=>!e&&t>=2?Math.min(t-1,2):0),t.listenTo(this.view,"change:top",()=>t.updatePosition()),t.listenTo(this.view,"change:left",()=>t.updatePosition()),this.editor.ui.view.body.add(t),t}_showView({view:t,balloonClassName:e="",withArrow:o=!0,singleViewMode:i=!1}){this.view.class=e,this.view.withArrow=o,this._rotatorView.showView(t),this.visibleView=t,this.view.pin(this._getBalloonPosition()),this._fakePanelsView.updatePosition(),i&&(this._singleViewMode=!0)}_getBalloonPosition(){let t=Array.from(this._visibleStack.values()).pop().position;return t&&!t.limiter&&(t=Object.assign({},t,{limiter:this.positionLimiter})),t}}class pc extends Xl{constructor(t){super(t);const e=t.t,o=this.bindTemplate;this.set("isNavigationVisible",!0),this.focusTracker=new gc,this.buttonPrevView=this._createButtonView(e("Previous"),''),this.buttonNextView=this._createButtonView(e("Next"),''),this.content=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-balloon-rotator"],"z-index":"-1"},children:[{tag:"div",attributes:{class:["ck-balloon-rotator__navigation",o.to("isNavigationVisible",t=>t?"":"ck-hidden")]},children:[this.buttonPrevView,{tag:"span",attributes:{class:["ck-balloon-rotator__counter"]},children:[{text:o.to("counter")}]},this.buttonNextView]},{tag:"div",attributes:{class:"ck-balloon-rotator__content"},children:this.content}]})}render(){super.render(),this.focusTracker.add(this.element)}showView(t){this.hideView(),this.content.add(t)}hideView(){this.content.clear()}_createButtonView(t,e){const o=new uc(this.locale);return o.set({label:t,icon:e,tooltip:!0}),o}}class bc extends Xl{constructor(t,e){super(t);const o=this.bindTemplate;this.set("top",0),this.set("left",0),this.set("height",0),this.set("width",0),this.set("numberOfPanels",0),this.content=this.createCollection(),this._balloonPanelView=e,this.setTemplate({tag:"div",attributes:{class:["ck-fake-panel",o.to("numberOfPanels",t=>t?"":"ck-hidden")],style:{top:o.to("top",mc),left:o.to("left",mc),width:o.to("width",mc),height:o.to("height",mc)}},children:this.content}),this.on("change:numberOfPanels",(t,e,o,i)=>{o>i?this._addPanels(o-i):this._removePanels(i-o),this.updatePosition()})}_addPanels(t){for(;t--;){const t=new Xl;t.setTemplate({tag:"div"}),this.content.add(t),this.registerChild(t)}}_removePanels(t){for(;t--;){const t=this.content.last;this.content.remove(t),this.deregisterChild(t),t.destroy()}}updatePosition(){if(this.numberOfPanels){const{top:t,left:e}=this._balloonPanelView,{width:o,height:i}=new Zr(this._balloonPanelView.element);Object.assign(this,{top:t,left:e,width:o,height:i})}}}class wc{constructor(t){if(Object.assign(this,t),t.actions&&t.keystrokeHandler)for(const e in t.actions){let o=t.actions[e];"string"==typeof o&&(o=[o]);for(const i of o)t.keystrokeHandler.set(i,(t,o)=>{this[e](),o()})}}get first(){return this.focusables.find(kc)||null}get last(){return this.focusables.filter(kc).slice(-1)[0]||null}get next(){return this._getFocusableItem(1)}get previous(){return this._getFocusableItem(-1)}get current(){let t=null;return null===this.focusTracker.focusedElement?null:(this.focusables.find((e,o)=>{const i=e.element===this.focusTracker.focusedElement;return i&&(t=o),i}),t)}focusFirst(){this._focus(this.first)}focusLast(){this._focus(this.last)}focusNext(){this._focus(this.next)}focusPrevious(){this._focus(this.previous)}_focus(t){t&&t.focus()}_getFocusableItem(t){const e=this.current,o=this.focusables.length;if(!o)return null;if(null===e)return this[1===t?"first":"last"];let i=(e+o+t)%o;do{const e=this.focusables.get(i);if(kc(e))return e;i=(i+o+t)%o}while(i!==e);return null}}function kc(t){return!(!t.focus||"none"==tr.window.getComputedStyle(t.element).display)}class _c extends Xl{constructor(t){super(t),this.setTemplate({tag:"span",attributes:{class:["ck","ck-toolbar__separator"]}})}}class vc{constructor(t,e){vc._observerInstance||vc._createObserver(),this._element=t,this._callback=e,vc._addElementCallback(t,e),vc._observerInstance.observe(t)}destroy(){vc._deleteElementCallback(this._element,this._callback)}static _addElementCallback(t,e){vc._elementCallbacks||(vc._elementCallbacks=new Map);let o=vc._elementCallbacks.get(t);o||(o=new Set,vc._elementCallbacks.set(t,o)),o.add(e)}static _deleteElementCallback(t,e){const o=vc._getElementCallbacks(t);o&&(o.delete(e),o.size||(vc._elementCallbacks.delete(t),vc._observerInstance.unobserve(t))),vc._elementCallbacks&&!vc._elementCallbacks.size&&(vc._observerInstance=null,vc._elementCallbacks=null)}static _getElementCallbacks(t){return vc._elementCallbacks?vc._elementCallbacks.get(t):null}static _createObserver(){let t;t="function"==typeof tr.window.ResizeObserver?tr.window.ResizeObserver:yc,vc._observerInstance=new t(t=>{for(const e of t){if(!e.target.offsetParent)continue;const t=vc._getElementCallbacks(e.target);if(t)for(const o of t)o(e)}})}}vc._observerInstance=null,vc._elementCallbacks=null;class yc{constructor(t){this._callback=t,this._elements=new Set,this._previousRects=new Map,this._periodicCheckTimeout=null}observe(t){this._elements.add(t),this._checkElementRectsAndExecuteCallback(),1===this._elements.size&&this._startPeriodicCheck()}unobserve(t){this._elements.delete(t),this._previousRects.delete(t),this._elements.size||this._stopPeriodicCheck()}_startPeriodicCheck(){const t=()=>{this._checkElementRectsAndExecuteCallback(),this._periodicCheckTimeout=setTimeout(t,100)};this.listenTo(tr.window,"resize",()=>{this._checkElementRectsAndExecuteCallback()}),this._periodicCheckTimeout=setTimeout(t,100)}_stopPeriodicCheck(){clearTimeout(this._periodicCheckTimeout),this.stopListening(),this._previousRects.clear()}_checkElementRectsAndExecuteCallback(){const t=[];for(const e of this._elements)this._hasRectChanged(e)&&t.push({target:e,contentRect:this._previousRects.get(e)});t.length&&this._callback(t)}_hasRectChanged(t){if(!t.ownerDocument.body.contains(t))return!1;const e=new Zr(t),o=this._previousRects.get(t),i=!o||!o.isEqual(e);return this._previousRects.set(t,e),i}}Co(yc,cr);class xc extends Xl{constructor(t){super(t);const e=this.bindTemplate;this.set("isVisible",!1),this.set("position","se"),this.children=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-reset","ck-dropdown__panel",e.to("position",t=>"ck-dropdown__panel_"+t),e.if("isVisible","ck-dropdown__panel-visible")]},children:this.children,on:{selectstart:e.to(t=>t.preventDefault())}})}focus(){this.children.length&&this.children.first.focus()}focusLast(){if(this.children.length){const t=this.children.last;"function"==typeof t.focusLast?t.focusLast():t.focus()}}}o(30);class Cc extends Xl{constructor(t,e,o){super(t);const i=this.bindTemplate;this.buttonView=e,this.panelView=o,this.set("isOpen",!1),this.set("isEnabled",!0),this.set("class"),this.set("id"),this.set("panelPosition","auto"),this.keystrokes=new Al,this.setTemplate({tag:"div",attributes:{class:["ck","ck-dropdown",i.to("class"),i.if("isEnabled","ck-disabled",t=>!t)],id:i.to("id"),"aria-describedby":i.to("ariaDescribedById")},children:[e,o]}),e.extendTemplate({attributes:{class:["ck-dropdown__button"]}})}render(){super.render(),this.listenTo(this.buttonView,"open",()=>{this.isOpen=!this.isOpen}),this.panelView.bind("isVisible").to(this,"isOpen"),this.on("change:isOpen",()=>{this.isOpen&&("auto"===this.panelPosition?this.panelView.position=Cc._getOptimalPosition({element:this.panelView.element,target:this.buttonView.element,fitInViewport:!0,positions:this._panelPositions}).name:this.panelView.position=this.panelPosition)}),this.keystrokes.listenTo(this.element);const t=(t,e)=>{this.isOpen&&(this.buttonView.focus(),this.isOpen=!1,e())};this.keystrokes.set("arrowdown",(t,e)=>{this.buttonView.isEnabled&&!this.isOpen&&(this.isOpen=!0,e())}),this.keystrokes.set("arrowright",(t,e)=>{this.isOpen&&e()}),this.keystrokes.set("arrowleft",t),this.keystrokes.set("esc",t)}focus(){this.buttonView.focus()}get _panelPositions(){const{southEast:t,southWest:e,northEast:o,northWest:i}=Cc.defaultPanelPositions;return"ltr"===this.locale.uiLanguageDirection?[t,e,o,i]:[e,t,i,o]}}Cc.defaultPanelPositions={southEast:t=>({top:t.bottom,left:t.left,name:"se"}),southWest:(t,e)=>({top:t.bottom,left:t.left-e.width+t.width,name:"sw"}),northEast:(t,e)=>({top:t.top-e.height,left:t.left,name:"ne"}),northWest:(t,e)=>({top:t.bottom-e.height,left:t.left-e.width+t.width,name:"nw"})},Cc._getOptimalPosition=Zl;var Ac='';class Tc extends uc{constructor(t){super(t),this.arrowView=this._createArrowView(),this.extendTemplate({attributes:{"aria-haspopup":!0}}),this.delegate("execute").to(this,"open")}render(){super.render(),this.children.add(this.arrowView)}_createArrowView(){const t=new dc;return t.content=Ac,t.extendTemplate({attributes:{class:"ck-dropdown__arrow"}}),t}}o(32);class Pc extends Xl{constructor(){super(),this.items=this.createCollection(),this.focusTracker=new gc,this.keystrokes=new Al,this._focusCycler=new wc({focusables:this.items,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"arrowup",focusNext:"arrowdown"}}),this.setTemplate({tag:"ul",attributes:{class:["ck","ck-reset","ck-list"]},children:this.items})}render(){super.render();for(const t of this.items)this.focusTracker.add(t.element);this.items.on("add",(t,e)=>{this.focusTracker.add(e.element)}),this.items.on("remove",(t,e)=>{this.focusTracker.remove(e.element)}),this.keystrokes.listenTo(this.element)}focus(){this._focusCycler.focusFirst()}focusLast(){this._focusCycler.focusLast()}}class Sc extends Xl{constructor(t){super(t),this.children=this.createCollection(),this.setTemplate({tag:"li",attributes:{class:["ck","ck-list__item"]},children:this.children})}focus(){this.children.first.focus()}}class Ec extends Xl{constructor(t){super(t),this.setTemplate({tag:"li",attributes:{class:["ck","ck-list__separator"]}})}}o(34);class Rc extends uc{constructor(t){super(t),this.isToggleable=!0,this.toggleSwitchView=this._createToggleView(),this.extendTemplate({attributes:{class:"ck-switchbutton"}})}render(){super.render(),this.children.add(this.toggleSwitchView)}_createToggleView(){const t=new Xl;return t.setTemplate({tag:"span",attributes:{class:["ck","ck-button__toggle"]},children:[{tag:"span",attributes:{class:["ck","ck-button__toggle__inner"]}}]}),t}}function Ic({emitter:t,activator:e,callback:o,contextElements:i}){t.listenTo(document,"mousedown",(t,{target:n})=>{if(e()){for(const t of i)if(t.contains(n))return;o()}})}o(36),o(38);function Vc(t,e=Tc){const o=new e(t),i=new xc(t),n=new Cc(t,o,i);return o.bind("isEnabled").to(n),o instanceof Tc?o.bind("isOn").to(n,"isOpen"):o.arrowView.bind("isOn").to(n,"isOpen"),function(t){(function(t){t.on("render",()=>{Ic({emitter:t,activator:()=>t.isOpen,callback:()=>{t.isOpen=!1},contextElements:[t.element]})})})(t),function(t){t.on("execute",e=>{e.source instanceof Rc||(t.isOpen=!1)})}(t),function(t){t.keystrokes.set("arrowdown",(e,o)=>{t.isOpen&&(t.panelView.focus(),o())}),t.keystrokes.set("arrowup",(e,o)=>{t.isOpen&&(t.panelView.focusLast(),o())})}(t)}(n),n}function Oc(t,e){const o=t.locale,i=t.listView=new Pc(o);i.items.bindTo(e).using(({type:t,model:e})=>{if("separator"===t)return new Ec(o);if("button"===t||"switchbutton"===t){const i=new Sc(o);let n;return n="button"===t?new uc(o):new Rc(o),n.bind(...Object.keys(e)).to(e),n.delegate("execute").to(i),i.children.add(n),i}}),t.panelView.children.add(i),i.items.delegate("execute").to(t)}o(40);class Mc extends Xl{constructor(t,e){super(t);const o=this.bindTemplate,i=this.t;var n;this.options=e||{},this.set("ariaLabel",i("Editor toolbar")),this.set("maxWidth","auto"),this.items=this.createCollection(),this.focusTracker=new gc,this.keystrokes=new Al,this.set("class"),this.set("isCompact",!1),this.itemsView=new Nc(t),this.children=this.createCollection(),this.children.add(this.itemsView),this.focusables=this.createCollection(),this._focusCycler=new wc({focusables:this.focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:["arrowleft","arrowup"],focusNext:["arrowright","arrowdown"]}}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-toolbar",o.to("class"),o.if("isCompact","ck-toolbar_compact")],role:"toolbar","aria-label":o.to("ariaLabel"),style:{maxWidth:o.to("maxWidth")}},children:this.children,on:{mousedown:(n=this,n.bindTemplate.to(t=>{t.target===n.element&&t.preventDefault()}))}}),this._behavior=this.options.shouldGroupWhenFull?new zc(this):new Bc(this)}render(){super.render();for(const t of this.items)this.focusTracker.add(t.element);this.items.on("add",(t,e)=>{this.focusTracker.add(e.element)}),this.items.on("remove",(t,e)=>{this.focusTracker.remove(e.element)}),this.keystrokes.listenTo(this.element),this._behavior.render(this)}destroy(){return this._behavior.destroy(),super.destroy()}focus(){this._focusCycler.focusFirst()}focusLast(){this._focusCycler.focusLast()}fillFromConfig(t,e){t.map(t=>{"|"==t?this.items.add(new _c):e.has(t)?this.items.add(e.create(t)):console.warn(Object(go.a)("toolbarview-item-unavailable: The requested toolbar item is unavailable."),{name:t})})}}class Nc extends Xl{constructor(t){super(t),this.children=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-toolbar__items"]},children:this.children})}}class Bc{constructor(t){const e=t.bindTemplate;t.set("isVertical",!1),t.itemsView.children.bindTo(t.items).using(t=>t),t.focusables.bindTo(t.items).using(t=>t),t.extendTemplate({attributes:{class:[e.if("isVertical","ck-toolbar_vertical")]}})}render(){}destroy(){}}class zc{constructor(t){this.viewChildren=t.children,this.viewFocusables=t.focusables,this.viewItemsView=t.itemsView,this.viewFocusTracker=t.focusTracker,this.viewLocale=t.locale,this.ungroupedItems=t.createCollection(),this.groupedItems=t.createCollection(),this.groupedItemsDropdown=this._createGroupedItemsDropdown(),this.resizeObserver=null,this.cachedPadding=null,this.shouldUpdateGroupingOnNextResize=!1,t.itemsView.children.bindTo(this.ungroupedItems).using(t=>t),this.ungroupedItems.on("add",this._updateFocusCycleableItems.bind(this)),this.ungroupedItems.on("remove",this._updateFocusCycleableItems.bind(this)),t.children.on("add",this._updateFocusCycleableItems.bind(this)),t.children.on("remove",this._updateFocusCycleableItems.bind(this)),t.items.on("add",(t,e,o)=>{o>this.ungroupedItems.length?this.groupedItems.add(e,o-this.ungroupedItems.length):this.ungroupedItems.add(e,o),this._updateGrouping()}),t.items.on("remove",(t,e,o)=>{o>this.ungroupedItems.length?this.groupedItems.remove(e):this.ungroupedItems.remove(e),this._updateGrouping()}),t.extendTemplate({attributes:{class:["ck-toolbar_grouping"]}})}render(t){this.viewElement=t.element,this._enableGroupingOnResize(),this._enableGroupingOnMaxWidthChange(t)}destroy(){this.groupedItemsDropdown.destroy(),this.resizeObserver.destroy()}_updateGrouping(){if(!this.viewElement.ownerDocument.body.contains(this.viewElement))return;if(!this.viewElement.offsetParent)return void(this.shouldUpdateGroupingOnNextResize=!0);let t;for(;this._areItemsOverflowing;)this._groupLastItem(),t=!0;if(!t&&this.groupedItems.length){for(;this.groupedItems.length&&!this._areItemsOverflowing;)this._ungroupFirstItem();this._areItemsOverflowing&&this._groupLastItem()}}get _areItemsOverflowing(){if(!this.ungroupedItems.length)return!1;const t=this.viewElement,e=this.viewLocale.uiLanguageDirection,o=new Zr(t.lastChild),i=new Zr(t);if(!this.cachedPadding){const o=tr.window.getComputedStyle(t),i="ltr"===e?"paddingRight":"paddingLeft";this.cachedPadding=Number.parseInt(o[i])}return"ltr"===e?o.right>i.right-this.cachedPadding:o.left{t&&t===e.contentRect.width&&!this.shouldUpdateGroupingOnNextResize||(this.shouldUpdateGroupingOnNextResize=!1,this._updateGrouping(),t=e.contentRect.width)}),this._updateGrouping()}_enableGroupingOnMaxWidthChange(t){t.on("change:maxWidth",()=>{this._updateGrouping()})}_groupLastItem(){this.groupedItems.length||(this.viewChildren.add(new _c),this.viewChildren.add(this.groupedItemsDropdown),this.viewFocusTracker.add(this.groupedItemsDropdown.element)),this.groupedItems.add(this.ungroupedItems.remove(this.ungroupedItems.last),0)}_ungroupFirstItem(){this.ungroupedItems.add(this.groupedItems.remove(this.groupedItems.first)),this.groupedItems.length||(this.viewChildren.remove(this.groupedItemsDropdown),this.viewChildren.remove(this.viewChildren.last),this.viewFocusTracker.remove(this.groupedItemsDropdown.element))}_createGroupedItemsDropdown(){const t=this.viewLocale,e=t.t,o=Vc(t);return o.class="ck-toolbar__grouped-dropdown",o.panelPosition="ltr"===t.uiLanguageDirection?"sw":"se",function(t,e){const o=t.locale,i=o.t,n=t.toolbarView=new Mc(o);n.set("ariaLabel",i("Dropdown toolbar")),t.extendTemplate({attributes:{class:["ck-toolbar-dropdown"]}}),e.map(t=>n.items.add(t)),t.panelView.children.add(n),n.items.delegate("execute").to(t)}(o,[]),o.buttonView.set({label:e("Show more items"),tooltip:!0,icon:''}),o.toolbarView.items.bindTo(this.groupedItems).using(t=>t),o}_updateFocusCycleableItems(){this.viewFocusables.clear(),this.ungroupedItems.map(t=>{this.viewFocusables.add(t)}),this.groupedItems.length&&this.viewFocusables.add(this.groupedItemsDropdown)}}function Fc(t){return Array.isArray(t)?{items:t}:t?Object.assign({items:[]},t):{items:[]}}const Dc=ic("px");class Lc extends Rl{static get pluginName(){return"BalloonToolbar"}static get requires(){return[fc]}constructor(t){super(t),this._balloonConfig=Fc(t.config.get("balloonToolbar")),this.toolbarView=this._createToolbarView(),this.focusTracker=new gc,t.ui.once("ready",()=>{this.focusTracker.add(t.ui.getEditableElement()),this.focusTracker.add(this.toolbarView.element)}),this._resizeObserver=null,this._balloon=t.plugins.get(fc),this._fireSelectionChangeDebounced=qr(()=>this.fire("_selectionChangeDebounced"),200),this.decorate("show")}init(){const t=this.editor,e=t.model.document.selection;this.listenTo(this.focusTracker,"change:isFocused",(t,e,o)=>{const i=this._balloon.visibleView===this.toolbarView;!o&&i?this.hide():o&&this.show()}),this.listenTo(e,"change:range",(t,o)=>{(o.directChange||e.isCollapsed)&&this.hide(),this._fireSelectionChangeDebounced()}),this.listenTo(this,"_selectionChangeDebounced",()=>{this.editor.editing.view.document.isFocused&&this.show()}),this._balloonConfig.shouldNotGroupWhenFull||this.listenTo(t,"ready",()=>{const e=t.ui.view.editable.element;this._resizeObserver=new vc(e,()=>{this.toolbarView.maxWidth=Dc(.9*new Zr(e).width)})})}afterInit(){const t=this.editor.ui.componentFactory;this.toolbarView.fillFromConfig(this._balloonConfig.items,t)}_createToolbarView(){const t=!this._balloonConfig.shouldNotGroupWhenFull,e=new Mc(this.editor.locale,{shouldGroupWhenFull:t});return e.extendTemplate({attributes:{class:["ck-toolbar_floating"]}}),e.render(),e}show(){const t=this.editor;this._balloon.hasView(this.toolbarView)||t.model.document.selection.isCollapsed||Array.from(this.toolbarView.items).every(t=>void 0!==t.isEnabled&&!t.isEnabled)||(this.listenTo(this.editor.ui,"update",()=>{this._balloon.updatePosition(this._getBalloonPositionData())}),this._balloon.add({view:this.toolbarView,position:this._getBalloonPositionData(),balloonClassName:"ck-toolbar-container"}))}hide(){this._balloon.hasView(this.toolbarView)&&(this.stopListening(this.editor.ui,"update"),this._balloon.remove(this.toolbarView))}_getBalloonPositionData(){const t=this.editor.editing.view,e=t.document,o=e.selection,i=e.selection.isBackward;return{target:()=>{const e=i?o.getFirstRange():o.getLastRange(),n=Zr.getDomRangeRects(t.domConverter.viewRangeToDom(e));return i?n[0]:(n.length>1&&0===n[n.length-1].width&&n.pop(),n[n.length-1])},positions:jc(i)}}destroy(){super.destroy(),this.stopListening(),this._fireSelectionChangeDebounced.cancel(),this.toolbarView.destroy(),this.focusTracker.destroy(),this._resizeObserver&&this._resizeObserver.destroy()}}function jc(t){const e=sc.defaultPositions;return t?[e.northWestArrowSouth,e.northWestArrowSouthWest,e.northWestArrowSouthEast,e.northWestArrowSouthMiddleEast,e.northWestArrowSouthMiddleWest,e.southWestArrowNorth,e.southWestArrowNorthWest,e.southWestArrowNorthEast,e.southWestArrowNorthMiddleWest,e.southWestArrowNorthMiddleEast]:[e.southEastArrowNorth,e.southEastArrowNorthEast,e.southEastArrowNorthWest,e.southEastArrowNorthMiddleEast,e.southEastArrowNorthMiddleWest,e.northEastArrowSouth,e.northEastArrowSouthEast,e.northEastArrowSouthWest,e.northEastArrowSouthMiddleEast,e.northEastArrowSouthMiddleWest]}class Hc{constructor(t){this.editor=t,this._components=new Map}*names(){for(const t of this._components.values())yield t.originalName}add(t,e){if(this.has(t))throw new go.b("componentfactory-item-exists: The item already exists in the component factory.",this,{name:t});this._components.set(Wc(t),{callback:e,originalName:t})}create(t){if(!this.has(t))throw new go.b("componentfactory-item-missing: The required component is not registered in the factory.",this,{name:t});return this._components.get(Wc(t)).callback(this.editor.locale)}has(t){return this._components.has(Wc(t))}}function Wc(t){return String(t).toLowerCase()}class qc{constructor(t){this.editor=t,this.componentFactory=new Hc(t),this.focusTracker=new gc,this._editableElementsMap=new Map,this.listenTo(t.editing.view.document,"layoutChanged",()=>this.update())}get element(){return null}update(){this.fire("update")}destroy(){this.stopListening(),this.focusTracker.destroy();for(const t of this._editableElementsMap.values())t.ckeditorInstance=null;this._editableElementsMap=new Map}setEditableElement(t,e){this._editableElementsMap.set(t,e),e.ckeditorInstance||(e.ckeditorInstance=this.editor)}getEditableElement(t="main"){return this._editableElementsMap.get(t)}getEditableElementsNames(){return this._editableElementsMap.keys()}get _editableElements(){return console.warn("editor-ui-deprecated-editable-elements: The EditorUI#_editableElements property has been deprecated and will be removed in the near future.",{editorUI:this}),this._editableElementsMap}}Co(qc,po);o(42);const Uc=new WeakMap;function $c(t){const{view:e,element:o,text:i,isDirectHost:n=!0}=t,r=e.document;Uc.has(r)||(Uc.set(r,new Map),r.registerPostFixer(t=>Kc(r,t))),Uc.get(r).set(o,{text:i,isDirectHost:n}),e.change(t=>Kc(r,t))}function Gc(t,e){return!!e.hasClass("ck-placeholder")&&(t.removeClass("ck-placeholder",e),!0)}function Kc(t,e){const o=Uc.get(t);let i=!1;for(const[t,n]of o)Jc(e,t,n)&&(i=!0);return i}function Jc(t,e,o){const{text:i,isDirectHost:n}=o,r=n?e:function(t){if(1===t.childCount){const e=t.getChild(0);if(e.is("element")&&!e.is("uiElement"))return e}return null}(e);let s=!1;return!!r&&(o.hostElement=r,r.getAttribute("data-placeholder")!==i&&(t.setAttribute("data-placeholder",i,r),s=!0),!function(t){if(!t.isAttached())return!1;const e=!Array.from(t.getChildren()).some(t=>!t.is("uiElement")),o=t.document;if(!o.isFocused&&e)return!0;const i=o.selection.anchor;return!(!e||!i||i.parent===t)}(r)?Gc(t,r)&&(s=!0):function(t,e){return!e.hasClass("ck-placeholder")&&(t.addClass("ck-placeholder",e),!0)}(t,r)&&(s=!0),s)}class Yc extends qc{constructor(t,e){super(t),this.view=e}get element(){return this.view.editable.element}init(){const t=this.editor,e=this.view,o=t.plugins.get("BalloonToolbar"),i=t.editing.view,n=e.editable,r=i.document.getRoot();n.name=r.rootName,e.render();const s=n.element;this.setEditableElement(n.name,s),this.focusTracker.add(s),n.bind("isFocused").to(this.focusTracker),i.attachDomRoot(s),function({origin:t,originKeystrokeHandler:e,originFocusTracker:o,toolbar:i,beforeFocus:n,afterBlur:r}){o.add(i.element),e.set("Alt+F10",(t,e)=>{o.isFocused&&!i.focusTracker.isFocused&&(n&&n(),i.focus(),e())}),i.keystrokes.set("Esc",(e,o)=>{i.focusTracker.isFocused&&(t.focus(),r&&r(),o())})}({origin:i,originFocusTracker:this.focusTracker,originKeystrokeHandler:t.keystrokes,toolbar:o.toolbarView,beforeFocus(){o.show()},afterBlur(){o.hide()}}),this._initPlaceholder(),this.fire("ready")}destroy(){const t=this.view;this.editor.editing.view.detachDomRoot(t.editable.name),t.destroy(),super.destroy()}_initPlaceholder(){const t=this.editor,e=t.editing.view,o=e.document.getRoot(),i=t.sourceElement,n=t.config.get("placeholder")||i&&"textarea"===i.tagName.toLowerCase()&&i.getAttribute("placeholder");n&&$c({view:e,element:o,text:n,isDirectHost:!1})}}var Qc=function(t){return"string"==typeof t||!Bt(t)&&p(t)&&"[object String]"==g(t)};function Xc(t,e,o={},i=[]){const n=o&&o.xmlns,r=n?t.createElementNS(n,e):t.createElement(e);for(const t in o)r.setAttribute(t,o[t]);!Qc(i)&&xo(i)||(i=[i]);for(let e of i)Qc(e)&&(e=t.createTextNode(e)),r.appendChild(e);return r}class Zc extends Vl{constructor(t,e=[]){super(e),this.locale=t}attachToDom(){this._bodyCollectionContainer=new Ol({tag:"div",attributes:{class:["ck","ck-reset_all","ck-body","ck-rounded-corners"],dir:this.locale.uiLanguageDirection},children:this}).render();let t=document.querySelector(".ck-body-wrapper");t||(t=Xc(document,"div",{class:"ck-body-wrapper"}),document.body.appendChild(t)),t.appendChild(this._bodyCollectionContainer)}detachFromDom(){super.destroy(),this._bodyCollectionContainer&&this._bodyCollectionContainer.remove();const t=document.querySelector(".ck-body-wrapper");t&&0==t.childElementCount&&t.remove()}}o(44);class td extends Xl{constructor(t){super(t),this.body=new Zc(t)}render(){super.render(),this.body.attachToDom()}destroy(){return this.body.detachFromDom(),super.destroy()}}class ed extends Xl{constructor(t,e,o){super(t),this.setTemplate({tag:"div",attributes:{class:["ck","ck-content","ck-editor__editable","ck-rounded-corners"],lang:t.contentLanguage,dir:t.contentLanguageDirection}}),this.name=null,this.set("isFocused",!1),this._editableElement=o,this._hasExternalElement=!!this._editableElement,this._editingView=e}render(){super.render(),this._hasExternalElement?this.template.apply(this.element=this._editableElement):this._editableElement=this.element,this.on("change:isFocused",()=>this._updateIsFocusedClasses()),this._updateIsFocusedClasses()}destroy(){this._hasExternalElement&&this.template.revert(this._editableElement),super.destroy()}_updateIsFocusedClasses(){const t=this._editingView;function e(e){t.change(o=>{const i=t.document.getRoot(e.name);o.addClass(e.isFocused?"ck-focused":"ck-blurred",i),o.removeClass(e.isFocused?"ck-blurred":"ck-focused",i)})}t.isRenderingInProgress?function o(i){t.once("change:isRenderingInProgress",(t,n,r)=>{r?o(i):e(i)})}(this):e(this)}}class od extends ed{constructor(t,e,o){super(t,e,o),this.extendTemplate({attributes:{role:"textbox",class:"ck-editor__editable_inline"}})}render(){super.render();const t=this._editingView,e=this.t;t.change(o=>{const i=t.document.getRoot(this.name);o.setAttribute("aria-label",e("Rich Text Editor, %0",[this.name]),i)})}}class id extends td{constructor(t,e,o){super(t),this.editable=new od(t,e,o)}render(){super.render(),this.registerChild(this.editable)}}function nd(t,e){t instanceof HTMLTextAreaElement&&(t.value=e),t.innerHTML=e}var rd={setData(t){this.data.set(t)},getData(t){return this.data.get(t)}};var sd={updateSourceElement(){if(!this.sourceElement)throw new go.b("editor-missing-sourceelement: Cannot update the source element of a detached editor.",this);nd(this.sourceElement,this.data.get())}};class ad extends Pl{constructor(t,e){super(e),io(t)&&(this.sourceElement=t,function(t){const e=t.sourceElement;if(e){if(e.ckeditorInstance)throw new go.b("editor-source-element-already-used: The DOM element cannot be used to create multiple editor instances.",t);e.ckeditorInstance=t,t.once("destroy",()=>{delete e.ckeditorInstance})}}(this));const o=this.config.get("plugins");o.push(Lc),this.config.set("plugins",o),this.config.define("balloonToolbar",this.config.get("toolbar")),this.data.processor=new El(this.data.viewDocument),this.model.document.createRoot();const i=new id(this.locale,this.editing.view,this.sourceElement);this.ui=new Yc(this,i),function(t){if(!D(t.updateSourceElement))throw new go.b("attachtoform-missing-elementapi-interface: Editor passed to attachToForm() must implement ElementApi.",t);const e=t.sourceElement;if(e&&"textarea"===e.tagName.toLowerCase()&&e.form){let o;const i=e.form,n=()=>t.updateSourceElement();D(i.submit)&&(o=i.submit,i.submit=()=>{n(),o.apply(i)}),i.addEventListener("submit",n),t.on("destroy",()=>{i.removeEventListener("submit",n),o&&(i.submit=o)})}}(this)}destroy(){const t=this.getData();return this.ui.destroy(),super.destroy().then(()=>{this.sourceElement&&nd(this.sourceElement,t)})}static create(t,e={}){return new Promise(o=>{const i=io(t);if(i&&"TEXTAREA"===t.tagName)throw new go.b("editor-wrong-element: This type of editor cannot be initialized inside