@ckeditor/ckeditor5-widget 43.1.0-alpha.0 → 43.1.0-alpha.2
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/index.js +13 -3
- package/dist/index.js.map +1 -1
- package/package.json +7 -7
- package/src/widget.js +14 -3
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["index.js","../src/highlightstack.ts","../src/utils.ts","../src/widgettypearound/utils.ts","../src/widgettypearound/widgettypearound.ts","../src/verticalnavigation.ts","../src/widget.ts","../src/widgettoolbarrepository.ts","../src/widgetresize/resizerstate.ts","../src/widgetresize/sizeview.ts","../src/widgetresize/resizer.ts","../src/widgetresize.ts"],"names":["HighlightStack","EmitterMixin","_stack","add","descriptor","writer","stack","oldTop","_insertDescriptor","newTop","compareDescriptors","fire","oldDescriptor","newDescriptor","remove","id","_removeDescriptor","index","findIndex","item","splice","i","shouldABeBeforeB","a","b","priority","classesToString","classes","Array","isArray","sort","join","WIDGET_CLASS_NAME","WIDGET_SELECTED_CLASS_NAME","isWidget","node","is","getCustomProperty","toWidget","element","options","CKEditorError","setAttribute","addClass","setCustomProperty","getFillerOffset","label","setLabel","hasSelectionHandle","addSelectionHandle","setHighlightHandling","addHighlight","toArray","attributes","key","removeHighlight","removeClass","removeAttribute","on","evt","data","addHighlightCallback","removeHighlightCallback","labelOrCreator","widgetLabel","push","getLabel","reduce","prev","current","toWidgetEditable","editable","isReadOnly","property","findOptimalInsertionRange","selection","model","selectedElement","getSelectedElement","typeAroundFakeCaretPosition","getTypeAroundFakeCaretPosition","createRange","createPositionAt","schema","viewToModelPositionOutsideModelElement","viewElementMatcher","mapper","viewPosition","viewParent","findMappedViewAncestor","modelParent","toModelElement","modelPosition","isAtStart","widgetElement","selectionHandle","createUIElement","class","domDocument","domElement","toDomElement","icon","IconView","set","dragHandleIcon","render","appendChild","insert","calculateResizeHostAncestorWidth","domResizeHost","getElementComputedWidth","width","paddingLeft","paddingRight","ownerDocument","defaultView","getComputedStyle","parseFloat","domResizeHostParent","parentElement","parentWidth","ancestorLevelLimit","currentLevel","checkedElement","isNaN","calculateResizeHostPercentageWidth","resizeHostRect","Rect","TYPE_AROUND_SELECTION_ATTRIBUTE","isTypeAroundWidget","viewElement","modelElement","isInline","getClosestTypeAroundDomButton","closest","getTypeAroundButtonPosition","classList","contains","getClosestWidgetViewElement","domConverter","widgetDomElement","mapDomToView","getAttribute","POSSIBLE_INSERTION_POSITIONS","RETURN_ARROW_ICON_ELEMENT","DOMParser","parseFromString","returnIcon","firstChild","PLUGIN_DISABLED_EDITING_ROOT_CLASS","WidgetTypeAround","Plugin","_currentFakeCaretModelElement","pluginName","requires","Enter","Delete","editor","editingView","editing","view","isEnabled","change","root","document","roots","removeSelectionAttribute","_enableTypeAroundUIInjection","_enableInsertingParagraphsOnButtonClick","_enableInsertingParagraphsOnEnterKeypress","_enableInsertingParagraphsOnTypingKeystroke","_enableTypeAroundFakeCaretActivationUsingKeyboardArrows","_enableDeleteIntegration","_enableInsertContentIntegration","_enableInsertObjectIntegration","_enableDeleteContentIntegration","destroy","_insertParagraph","widgetModelElement","position","attributesToCopy","getAttributesWithProperty","execute","focus","scrollToTheSelection","_listenToIfEnabled","emitter","event","callback","listenTo","args","modelSelection","selectedModelElement","t","locale","buttonTitles","before","after","downcastDispatcher","conversionApi","toViewElement","injectUIIntoWidget","domEventData","_handleArrowKeyPress","context","directChange","selectedViewElement","map","positionToWidgetCssClass","ui","focusTracker","name","isFocused","keyCode","isForward","isForwardArrowKeyCode","contentLanguageDirection","shouldStopAndPreventDefault","_handleArrowKeyPressOnSelectedWidget","isCollapsed","_handleArrowKeyPressWhenSelectionNextToAWidget","shiftKey","_handleArrowKeyPressWhenNonCollapsedSelection","preventDefault","stop","isLeavingWidget","setSelectionAttribute","widgetPlugin","plugins","get","modelElementNextToSelection","_getObjectElementNextToSelection","viewElementNextToSelection","_setSelectionOverElement","selectedModelNode","getLastPosition","nodeBefore","getFirstPosition","nodeAfter","selectedViewNode","setSelection","button","domTarget","buttonPosition","widgetViewElement","eventPhase","wasHandled","_insertParagraphAccordingToFakeCaretPosition","isSoft","viewDocument","env","isAndroid","direction","selectedModelWidget","isFakeCaretBefore","isDeleteForward","shouldDeleteEntireWidget","createSelection","range","getNearestSelectionRange","probe","start","modifySelection","isEqual","deepestEmptyRangeAncestor","getDeepestEmptyElementAncestor","parent","deleteContent","doNotAutoparagraph","documentSelection","content","selectable","result","insertContent","findOptimalPosition","viewWriter","typeAroundWrapper","wrapperDomElement","injectButtons","injectFakeCaret","buttonTemplate","Template","tag","title","children","importNode","caretTemplate","deepestEmptyAncestor","ancestor","getAncestors","parentFirst","childCount","isLimit","verticalNavigationHandler","arrowUpPressed","keyCodes","arrowup","arrowDownPressed","arrowdown","expandSelection","selectionWillShrink","findTextRangeFromSelection","isSingleLineRange","newPosition","end","newSelection","anchor","setFocus","stopPropagation","startPosition","endPosition","getNearestNonInlineLimit","lastRangePosition","getNearestTextPosition","firstRangePosition","createRangeIn","walkerValueType","previousPosition","type","getWalker","isBlock","checkChild","nextPosition","modelRange","isAtEnd","viewRange","toViewRange","domRange","viewRangeToDom","rects","getDomRangeRects","boundaryVerticalPosition","rect","undefined","Math","round","bottom","top","max","isBackward","Widget","_previouslySelected","Set","consumable","consume","createRangeOn","fake","_clearPreviouslySelectedWidgets","viewSelection","lastMarked","getRanges","value","isChild","addObserver","MouseObserver","_onMousedown","_handleSelectionChangeOnArrowKeyPress","_preventDefaultOnArrowKeyPress","_handleDelete","_selectFirstNestedEditable","_selectAncestorWidget","keystroke","esc","accessibility","addKeystrokeInfoGroup","keystrokes","eventInfo","target","domEvent","detail","_selectBlockContent","editableOrWidgetElement","findClosestEditableOrWidgetAncestor","clickTargetFromPoint","getElementFromMouseEvent","findTextBlockAncestor","nextTextBlock","findNextTextBlock","createPositionAfter","objectElement","getLocalizedArrowKeyCodeDirection","isVerticalNavigation","isObject","newRange","firstPosition","lastPosition","firstSelectedNode","lastSelectedNode","objectElementNextToSelection","modelDocument","canEditAt","previousNode","isEmpty","nodeToRemove","forward","widget","clear","getFirstRange","getItems","positionParent","positionParentElement","findAncestor","currentElement","getRangeFromMouseEvent","domRangeToView","viewNode","from","includes","includeSelf","treeWalker","TreeWalker","WidgetToolbarRepository","_toolbarDefinitions","Map","_balloon","ContextualBalloon","has","balloonToolbar","isWidgetSelected","_updateToolbarsVisibility","toolbarConfig","values","register","toolbarId","ariaLabel","items","getRelatedElement","balloonClassName","length","logWarning","toolbarView","ToolbarView","toolbarDefinition","itemsConfig","initialized","addToolbar","isContextual","beforeFocus","relatedElement","_showToolbar","afterBlur","_hideToolbar","maxRelatedElementDepth","deepestRelatedElement","deepestToolbarDefinition","definition","_isToolbarInBalloon","_isToolbarVisible","relatedElementDepth","stopListening","repositionContextualBalloon","fillFromConfig","componentFactory","getBalloonPositionData","toolbar","visibleView","hasView","balloon","updatePosition","defaultPositions","BalloonPanelView","mapViewToDom","positions","northArrowSouth","northArrowSouthWest","northArrowSouthEast","southArrowNorth","southArrowNorthWest","southArrowNorthEast","viewportStickyNorth","ResizeState","ObservableMixin","constructor","_options","_referenceCoordinates","originalWidth","_originalWidth","originalHeight","_originalHeight","originalWidthPercents","_originalWidthPercents","aspectRatio","_aspectRatio","domResizeHandle","domHandleHost","clientRect","activeHandlePosition","getHandlePosition","getAbsoluteBoundaryPoint","getOppositePosition","height","widthStyle","style","match","update","newSize","proposedWidth","proposedHeight","proposedWidthPercents","widthPercents","proposedHandleHostWidth","handleHostWidth","proposedHandleHostHeight","handleHostHeight","resizerPosition","elementRect","positionParts","split","ret","x","right","left","y","scrollX","scrollY","getResizerHandleClass","domHandle","resizerPositions","parts","replacements","SizeView","View","bind","bindTemplate","setTemplate","to","display","if","visible","text","_bindToState","resizeState","unit","unbind","_isVisible","Resizer","_viewResizerWrapper","isSelected","decorate","state","_cleanup","_state","that","viewResizerWrapper","_appendHandles","_appendSizeUI","isVisible","hide","show","redraw","begin","_sizeView","_initialViewWidth","getStyle","_getHandleHost","_getResizeHost","updateSize","_proposeNewSize","newWidth","setStyle","domHandleHostRect","domResizeHostRect","newValue","onCommit","cancel","handleHostRect","domWrapper","_domResizerWrapper","existsInDom","widgetWrapper","handleHost","resizerWrapper","currentDimensions","newDimensions","isSameNode","offsetWidth","offsetHeight","offsetLeft","offsetTop","compareArrays","containsHandle","isResizeHandle","_dismiss","currentCoordinates","extractCoordinates","isCentered","enlargement","endsWith","abs","dominant","min","getResizeHost","getHandleHost","currentPosition","getResizerClass","pageX","pageY","WidgetResize","_resizers","_observer","_redrawSelectedResizerThrottled","global","window","DomEmitterMixin","_mouseDownListener","_mouseMoveListener","_mouseUpListener","throttle","redrawSelectedResizer","resizer","isAttached","delete","getResizerByViewElement","select","deselect","selectedResizer","attachTo","attach","widgetToolbarRepository","forceDisabled","clearForceDisabled","_getResizerByHandle","resizeHandle","_activeResizer","commit"],"mappings":"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AAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACV,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,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","file":"index.js.map","sourcesContent":["import { Plugin } from '@ckeditor/ckeditor5-core/dist/index.js';\nimport { MouseObserver, TreeWalker } from '@ckeditor/ckeditor5-engine/dist/index.js';\nimport { Delete } from '@ckeditor/ckeditor5-typing/dist/index.js';\nimport { EmitterMixin, CKEditorError, Rect, toArray, isForwardArrowKeyCode, env, keyCodes, getLocalizedArrowKeyCodeDirection, getRangeFromMouseEvent, logWarning, ObservableMixin, compareArrays, global, DomEmitterMixin } from '@ckeditor/ckeditor5-utils/dist/index.js';\nimport { IconView, Template, ContextualBalloon, ToolbarView, BalloonPanelView, View } from '@ckeditor/ckeditor5-ui/dist/index.js';\nimport { Enter } from '@ckeditor/ckeditor5-enter/dist/index.js';\nimport { throttle } from 'lodash-es';\n\n/**\n * Class used to handle the correct order of highlights on elements.\n *\n * When different highlights are applied to same element the correct order should be preserved:\n *\n * * highlight with highest priority should be applied,\n * * if two highlights have same priority - sort by CSS class provided in\n * {@link module:engine/conversion/downcasthelpers~HighlightDescriptor}.\n *\n * This way, highlight will be applied with the same rules it is applied on texts.\n */ class HighlightStack extends /* #__PURE__ */ EmitterMixin() {\n _stack = [];\n /**\n\t * Adds highlight descriptor to the stack.\n\t *\n\t * @fires change:top\n\t */ add(descriptor, writer) {\n const stack = this._stack;\n // Save top descriptor and insert new one. If top is changed - fire event.\n const oldTop = stack[0];\n this._insertDescriptor(descriptor);\n const newTop = stack[0];\n // When new object is at the top and stores different information.\n if (oldTop !== newTop && !compareDescriptors(oldTop, newTop)) {\n this.fire('change:top', {\n oldDescriptor: oldTop,\n newDescriptor: newTop,\n writer\n });\n }\n }\n /**\n\t * Removes highlight descriptor from the stack.\n\t *\n\t * @fires change:top\n\t * @param id Id of the descriptor to remove.\n\t */ remove(id, writer) {\n const stack = this._stack;\n const oldTop = stack[0];\n this._removeDescriptor(id);\n const newTop = stack[0];\n // When new object is at the top and stores different information.\n if (oldTop !== newTop && !compareDescriptors(oldTop, newTop)) {\n this.fire('change:top', {\n oldDescriptor: oldTop,\n newDescriptor: newTop,\n writer\n });\n }\n }\n /**\n\t * Inserts a given descriptor in correct place in the stack. It also takes care about updating information\n\t * when descriptor with same id is already present.\n\t */ _insertDescriptor(descriptor) {\n const stack = this._stack;\n const index = stack.findIndex((item)=>item.id === descriptor.id);\n // Inserting exact same descriptor - do nothing.\n if (compareDescriptors(descriptor, stack[index])) {\n return;\n }\n // If descriptor with same id but with different information is on the stack - remove it.\n if (index > -1) {\n stack.splice(index, 1);\n }\n // Find correct place to insert descriptor in the stack.\n // It has different information (for example priority) so it must be re-inserted in correct place.\n let i = 0;\n while(stack[i] && shouldABeBeforeB(stack[i], descriptor)){\n i++;\n }\n stack.splice(i, 0, descriptor);\n }\n /**\n\t * Removes descriptor with given id from the stack.\n\t *\n\t * @param id Descriptor's id.\n\t */ _removeDescriptor(id) {\n const stack = this._stack;\n const index = stack.findIndex((item)=>item.id === id);\n // If descriptor with same id is on the list - remove it.\n if (index > -1) {\n stack.splice(index, 1);\n }\n }\n}\n/**\n * Compares two descriptors by checking their priority and class list.\n *\n * @returns Returns true if both descriptors are defined and have same priority and classes.\n */ function compareDescriptors(a, b) {\n return a && b && a.priority == b.priority && classesToString(a.classes) == classesToString(b.classes);\n}\n/**\n * Checks whenever first descriptor should be placed in the stack before second one.\n */ function shouldABeBeforeB(a, b) {\n if (a.priority > b.priority) {\n return true;\n } else if (a.priority < b.priority) {\n return false;\n }\n // When priorities are equal and names are different - use classes to compare.\n return classesToString(a.classes) > classesToString(b.classes);\n}\n/**\n * Converts CSS classes passed with {@link module:engine/conversion/downcasthelpers~HighlightDescriptor} to\n * sorted string.\n */ function classesToString(classes) {\n return Array.isArray(classes) ? classes.sort().join(',') : classes;\n}\n\nvar dragHandleIcon = \"<svg viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M4 0v1H1v3H0V.5A.5.5 0 0 1 .5 0H4zm8 0h3.5a.5.5 0 0 1 .5.5V4h-1V1h-3V0zM4 16H.5a.5.5 0 0 1-.5-.5V12h1v3h3v1zm8 0v-1h3v-3h1v3.5a.5.5 0 0 1-.5.5H12z\\\"/><path fill-opacity=\\\".256\\\" d=\\\"M1 1h14v14H1z\\\"/><g class=\\\"ck-icon__selected-indicator\\\"><path d=\\\"M7 0h2v1H7V0zM0 7h1v2H0V7zm15 0h1v2h-1V7zm-8 8h2v1H7v-1z\\\"/><path fill-opacity=\\\".254\\\" d=\\\"M1 1h14v14H1z\\\"/></g></svg>\";\n\n/**\n * CSS class added to each widget element.\n */ const WIDGET_CLASS_NAME = 'ck-widget';\n/**\n * CSS class added to currently selected widget element.\n */ const WIDGET_SELECTED_CLASS_NAME = 'ck-widget_selected';\n/**\n * Returns `true` if given {@link module:engine/view/node~Node} is an {@link module:engine/view/element~Element} and a widget.\n */ function isWidget(node) {\n if (!node.is('element')) {\n return false;\n }\n return !!node.getCustomProperty('widget');\n}\n/**\n * Converts the given {@link module:engine/view/element~Element} to a widget in the following way:\n *\n * * sets the `contenteditable` attribute to `\"false\"`,\n * * adds the `ck-widget` CSS class,\n * * adds a custom {@link module:engine/view/element~Element#getFillerOffset `getFillerOffset()`} method returning `null`,\n * * adds a custom property allowing to recognize widget elements by using {@link ~isWidget `isWidget()`},\n * * implements the {@link ~setHighlightHandling view highlight on widgets}.\n *\n * This function needs to be used in conjunction with\n * {@link module:engine/conversion/downcasthelpers~DowncastHelpers downcast conversion helpers}\n * like {@link module:engine/conversion/downcasthelpers~DowncastHelpers#elementToElement `elementToElement()`}.\n * Moreover, typically you will want to use `toWidget()` only for `editingDowncast`, while keeping the `dataDowncast` clean.\n *\n * For example, in order to convert a `<widget>` model element to `<div class=\"widget\">` in the view, you can define\n * such converters:\n *\n * ```ts\n * editor.conversion.for( 'editingDowncast' )\n * \t.elementToElement( {\n * \t\tmodel: 'widget',\n * \t\tview: ( modelItem, { writer } ) => {\n * \t\t\tconst div = writer.createContainerElement( 'div', { class: 'widget' } );\n *\n * \t\t\treturn toWidget( div, writer, { label: 'some widget' } );\n * \t\t}\n * \t} );\n *\n * editor.conversion.for( 'dataDowncast' )\n * \t.elementToElement( {\n * \t\tmodel: 'widget',\n * \t\tview: ( modelItem, { writer } ) => {\n * \t\t\treturn writer.createContainerElement( 'div', { class: 'widget' } );\n * \t\t}\n * \t} );\n * ```\n *\n * See the full source code of the widget (with a nested editable) schema definition and converters in\n * [this sample](https://github.com/ckeditor/ckeditor5-widget/blob/master/tests/manual/widget-with-nestededitable.js).\n *\n * @param options Additional options.\n * @param options.label Element's label provided to the {@link ~setLabel} function. It can be passed as\n * a plain string or a function returning a string. It represents the widget for assistive technologies (like screen readers).\n * @param options.hasSelectionHandle If `true`, the widget will have a selection handle added.\n * @returns Returns the same element.\n */ function toWidget(element, writer, options = {}) {\n if (!element.is('containerElement')) {\n /**\n\t\t * The element passed to `toWidget()` must be a {@link module:engine/view/containerelement~ContainerElement}\n\t\t * instance.\n\t\t *\n\t\t * @error widget-to-widget-wrong-element-type\n\t\t * @param element The view element passed to `toWidget()`.\n\t\t */ throw new CKEditorError('widget-to-widget-wrong-element-type', null, {\n element\n });\n }\n writer.setAttribute('contenteditable', 'false', element);\n writer.addClass(WIDGET_CLASS_NAME, element);\n writer.setCustomProperty('widget', true, element);\n element.getFillerOffset = getFillerOffset;\n writer.setCustomProperty('widgetLabel', [], element);\n if (options.label) {\n setLabel(element, options.label);\n }\n if (options.hasSelectionHandle) {\n addSelectionHandle(element, writer);\n }\n setHighlightHandling(element, writer);\n return element;\n}\n/**\n * Default handler for adding a highlight on a widget.\n * It adds CSS class and attributes basing on the given highlight descriptor.\n */ function addHighlight(element, descriptor, writer) {\n if (descriptor.classes) {\n writer.addClass(toArray(descriptor.classes), element);\n }\n if (descriptor.attributes) {\n for(const key in descriptor.attributes){\n writer.setAttribute(key, descriptor.attributes[key], element);\n }\n }\n}\n/**\n * Default handler for removing a highlight from a widget.\n * It removes CSS class and attributes basing on the given highlight descriptor.\n */ function removeHighlight(element, descriptor, writer) {\n if (descriptor.classes) {\n writer.removeClass(toArray(descriptor.classes), element);\n }\n if (descriptor.attributes) {\n for(const key in descriptor.attributes){\n writer.removeAttribute(key, element);\n }\n }\n}\n/**\n * Sets highlight handling methods. Uses {@link module:widget/highlightstack~HighlightStack} to\n * properly determine which highlight descriptor should be used at given time.\n */ function setHighlightHandling(element, writer, add = addHighlight, remove = removeHighlight) {\n const stack = new HighlightStack();\n stack.on('change:top', (evt, data)=>{\n if (data.oldDescriptor) {\n remove(element, data.oldDescriptor, data.writer);\n }\n if (data.newDescriptor) {\n add(element, data.newDescriptor, data.writer);\n }\n });\n const addHighlightCallback = (element, descriptor, writer)=>stack.add(descriptor, writer);\n const removeHighlightCallback = (element, id, writer)=>stack.remove(id, writer);\n writer.setCustomProperty('addHighlight', addHighlightCallback, element);\n writer.setCustomProperty('removeHighlight', removeHighlightCallback, element);\n}\n/**\n * Sets label for given element.\n * It can be passed as a plain string or a function returning a string. Function will be called each time label is retrieved by\n * {@link ~getLabel `getLabel()`}.\n */ function setLabel(element, labelOrCreator) {\n const widgetLabel = element.getCustomProperty('widgetLabel');\n widgetLabel.push(labelOrCreator);\n}\n/**\n * Returns the label of the provided element.\n */ function getLabel(element) {\n const widgetLabel = element.getCustomProperty('widgetLabel');\n return widgetLabel.reduce((prev, current)=>{\n if (typeof current === 'function') {\n return prev ? prev + '. ' + current() : current();\n } else {\n return prev ? prev + '. ' + current : current;\n }\n }, '');\n}\n/**\n * Adds functionality to the provided {@link module:engine/view/editableelement~EditableElement} to act as a widget's editable:\n *\n * * sets the `contenteditable` attribute to `true` when {@link module:engine/view/editableelement~EditableElement#isReadOnly} is `false`,\n * otherwise sets it to `false`,\n * * adds the `ck-editor__editable` and `ck-editor__nested-editable` CSS classes,\n * * adds the `ck-editor__nested-editable_focused` CSS class when the editable is focused and removes it when it is blurred.\n * * implements the {@link ~setHighlightHandling view highlight on widget's editable}.\n *\n * Similarly to {@link ~toWidget `toWidget()`} this function should be used in `editingDowncast` only and it is usually\n * used together with {@link module:engine/conversion/downcasthelpers~DowncastHelpers#elementToElement `elementToElement()`}.\n *\n * For example, in order to convert a `<nested>` model element to `<div class=\"nested\">` in the view, you can define\n * such converters:\n *\n * ```ts\n * editor.conversion.for( 'editingDowncast' )\n * \t.elementToElement( {\n * \t\tmodel: 'nested',\n * \t\tview: ( modelItem, { writer } ) => {\n * \t\t\tconst div = writer.createEditableElement( 'div', { class: 'nested' } );\n *\n * \t\t\treturn toWidgetEditable( nested, writer, { label: 'label for editable' } );\n * \t\t}\n * \t} );\n *\n * editor.conversion.for( 'dataDowncast' )\n * \t.elementToElement( {\n * \t\tmodel: 'nested',\n * \t\tview: ( modelItem, { writer } ) => {\n * \t\t\treturn writer.createContainerElement( 'div', { class: 'nested' } );\n * \t\t}\n * \t} );\n * ```\n *\n * See the full source code of the widget (with nested editable) schema definition and converters in\n * [this sample](https://github.com/ckeditor/ckeditor5-widget/blob/master/tests/manual/widget-with-nestededitable.js).\n *\n * @param options Additional options.\n * @param options.label Editable's label used by assistive technologies (e.g. screen readers).\n * @returns Returns the same element that was provided in the `editable` parameter\n */ function toWidgetEditable(editable, writer, options = {}) {\n writer.addClass([\n 'ck-editor__editable',\n 'ck-editor__nested-editable'\n ], editable);\n writer.setAttribute('role', 'textbox', editable);\n writer.setAttribute('tabindex', '-1', editable);\n if (options.label) {\n writer.setAttribute('aria-label', options.label, editable);\n }\n // Set initial contenteditable value.\n writer.setAttribute('contenteditable', editable.isReadOnly ? 'false' : 'true', editable);\n // Bind the contenteditable property to element#isReadOnly.\n editable.on('change:isReadOnly', (evt, property, is)=>{\n writer.setAttribute('contenteditable', is ? 'false' : 'true', editable);\n });\n editable.on('change:isFocused', (evt, property, is)=>{\n if (is) {\n writer.addClass('ck-editor__nested-editable_focused', editable);\n } else {\n writer.removeClass('ck-editor__nested-editable_focused', editable);\n }\n });\n setHighlightHandling(editable, writer);\n return editable;\n}\n/**\n * Returns a model range which is optimal (in terms of UX) for inserting a widget block.\n *\n * For instance, if a selection is in the middle of a paragraph, the collapsed range before this paragraph\n * will be returned so that it is not split. If the selection is at the end of a paragraph,\n * the collapsed range after this paragraph will be returned.\n *\n * Note: If the selection is placed in an empty block, the range in that block will be returned. If that range\n * is then passed to {@link module:engine/model/model~Model#insertContent}, the block will be fully replaced\n * by the inserted widget block.\n *\n * @param selection The selection based on which the insertion position should be calculated.\n * @param model Model instance.\n * @returns The optimal range.\n */ function findOptimalInsertionRange(selection, model) {\n const selectedElement = selection.getSelectedElement();\n if (selectedElement) {\n const typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition(selection);\n // If the WidgetTypeAround \"fake caret\" is displayed, use its position for the insertion\n // to provide the most predictable UX (https://github.com/ckeditor/ckeditor5/issues/7438).\n if (typeAroundFakeCaretPosition) {\n return model.createRange(model.createPositionAt(selectedElement, typeAroundFakeCaretPosition));\n }\n }\n return model.schema.findOptimalInsertionRange(selection);\n}\n/**\n * A util to be used in order to map view positions to correct model positions when implementing a widget\n * which renders non-empty view element for an empty model element.\n *\n * For example:\n *\n * ```\n * // Model:\n * <placeholder type=\"name\"></placeholder>\n *\n * // View:\n * <span class=\"placeholder\">name</span>\n * ```\n *\n * In such case, view positions inside `<span>` cannot be correctly mapped to the model (because the model element is empty).\n * To handle mapping positions inside `<span class=\"placeholder\">` to the model use this util as follows:\n *\n * ```ts\n * editor.editing.mapper.on(\n * \t'viewToModelPosition',\n * \tviewToModelPositionOutsideModelElement( model, viewElement => viewElement.hasClass( 'placeholder' ) )\n * );\n * ```\n *\n * The callback will try to map the view offset of selection to an expected model position.\n *\n * 1. When the position is at the end (or in the middle) of the inline widget:\n *\n * ```\n * // View:\n * <p>foo <span class=\"placeholder\">name|</span> bar</p>\n *\n * // Model:\n * <paragraph>foo <placeholder type=\"name\"></placeholder>| bar</paragraph>\n * ```\n *\n * 2. When the position is at the beginning of the inline widget:\n *\n * ```\n * // View:\n * <p>foo <span class=\"placeholder\">|name</span> bar</p>\n *\n * // Model:\n * <paragraph>foo |<placeholder type=\"name\"></placeholder> bar</paragraph>\n * ```\n *\n * @param model Model instance on which the callback operates.\n * @param viewElementMatcher Function that is passed a view element and should return `true` if the custom mapping\n * should be applied to the given view element.\n */ function viewToModelPositionOutsideModelElement(model, viewElementMatcher) {\n return (evt, data)=>{\n const { mapper, viewPosition } = data;\n const viewParent = mapper.findMappedViewAncestor(viewPosition);\n if (!viewElementMatcher(viewParent)) {\n return;\n }\n const modelParent = mapper.toModelElement(viewParent);\n data.modelPosition = model.createPositionAt(modelParent, viewPosition.isAtStart ? 'before' : 'after');\n };\n}\n/**\n * Default filler offset function applied to all widget elements.\n */ function getFillerOffset() {\n return null;\n}\n/**\n * Adds a drag handle to the widget.\n */ function addSelectionHandle(widgetElement, writer) {\n const selectionHandle = writer.createUIElement('div', {\n class: 'ck ck-widget__selection-handle'\n }, function(domDocument) {\n const domElement = this.toDomElement(domDocument);\n // Use the IconView from the ui library.\n const icon = new IconView();\n icon.set('content', dragHandleIcon);\n // Render the icon view right away to append its #element to the selectionHandle DOM element.\n icon.render();\n domElement.appendChild(icon.element);\n return domElement;\n });\n // Append the selection handle into the widget wrapper.\n writer.insert(writer.createPositionAt(widgetElement, 0), selectionHandle);\n writer.addClass([\n 'ck-widget_with-selection-handle'\n ], widgetElement);\n}\n/**\n * Starting from a DOM resize host element (an element that receives dimensions as a result of resizing),\n * this helper returns the width of the found ancestor element.\n *\n *\t* It searches up to 5 levels of ancestors only.\n *\n * @param domResizeHost Resize host DOM element that receives dimensions as a result of resizing.\n * @returns Width of ancestor element in pixels or 0 if no ancestor with a computed width has been found.\n */ function calculateResizeHostAncestorWidth(domResizeHost) {\n const getElementComputedWidth = (element)=>{\n const { width, paddingLeft, paddingRight } = element.ownerDocument.defaultView.getComputedStyle(element);\n return parseFloat(width) - (parseFloat(paddingLeft) || 0) - (parseFloat(paddingRight) || 0);\n };\n const domResizeHostParent = domResizeHost.parentElement;\n if (!domResizeHostParent) {\n return 0;\n }\n // Need to use computed style as it properly excludes parent's paddings from the returned value.\n let parentWidth = getElementComputedWidth(domResizeHostParent);\n // Sometimes parent width cannot be accessed. If that happens we should go up in the elements tree\n // and try to get width from next ancestor.\n // https://github.com/ckeditor/ckeditor5/issues/10776\n const ancestorLevelLimit = 5;\n let currentLevel = 0;\n let checkedElement = domResizeHostParent;\n while(isNaN(parentWidth)){\n checkedElement = checkedElement.parentElement;\n if (++currentLevel > ancestorLevelLimit) {\n return 0;\n }\n parentWidth = getElementComputedWidth(checkedElement);\n }\n return parentWidth;\n}\n/**\n * Calculates a relative width of a `domResizeHost` compared to its ancestor in percents.\n *\n * @param domResizeHost Resize host DOM element.\n * @returns Percentage value between 0 and 100.\n */ function calculateResizeHostPercentageWidth(domResizeHost, resizeHostRect = new Rect(domResizeHost)) {\n const parentWidth = calculateResizeHostAncestorWidth(domResizeHost);\n if (!parentWidth) {\n return 0;\n }\n return resizeHostRect.width / parentWidth * 100;\n}\n\n/**\n * The name of the type around model selection attribute responsible for\n * displaying a fake caret next to a selected widget.\n */ const TYPE_AROUND_SELECTION_ATTRIBUTE = 'widget-type-around';\n/**\n * Checks if an element is a widget that qualifies to get the widget type around UI.\n */ function isTypeAroundWidget(viewElement, modelElement, schema) {\n return !!viewElement && isWidget(viewElement) && !schema.isInline(modelElement);\n}\n/**\n * For the passed HTML element, this helper finds the closest widget type around button ancestor.\n */ function getClosestTypeAroundDomButton(domElement) {\n return domElement.closest('.ck-widget__type-around__button');\n}\n/**\n * For the passed widget type around button element, this helper determines at which position\n * the paragraph would be inserted into the content if, for instance, the button was\n * clicked by the user.\n *\n * @returns The position of the button.\n */ function getTypeAroundButtonPosition(domElement) {\n return domElement.classList.contains('ck-widget__type-around__button_before') ? 'before' : 'after';\n}\n/**\n * For the passed HTML element, this helper returns the closest view widget ancestor.\n */ function getClosestWidgetViewElement(domElement, domConverter) {\n const widgetDomElement = domElement.closest('.ck-widget');\n return domConverter.mapDomToView(widgetDomElement);\n}\n/**\n * For the passed selection instance, it returns the position of the fake caret displayed next to a widget.\n *\n * **Note**: If the fake caret is not currently displayed, `null` is returned.\n *\n * @returns The position of the fake caret or `null` when none is present.\n */ function getTypeAroundFakeCaretPosition(selection) {\n return selection.getAttribute(TYPE_AROUND_SELECTION_ATTRIBUTE);\n}\n\nvar returnIcon = \"<svg viewBox=\\\"0 0 10 8\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M9.055.263v3.972h-6.77M1 4.216l2-2.038m-2 2 2 2.038\\\"/></svg>\";\n\nconst POSSIBLE_INSERTION_POSITIONS = [\n 'before',\n 'after'\n];\n// Do the SVG parsing once and then clone the result <svg> DOM element for each new button.\nconst RETURN_ARROW_ICON_ELEMENT = new DOMParser().parseFromString(returnIcon, 'image/svg+xml').firstChild;\nconst PLUGIN_DISABLED_EDITING_ROOT_CLASS = 'ck-widget__type-around_disabled';\n/**\n * A plugin that allows users to type around widgets where normally it is impossible to place the caret due\n * to limitations of web browsers. These \"tight spots\" occur, for instance, before (or after) a widget being\n * the first (or last) child of its parent or between two block widgets.\n *\n * This plugin extends the {@link module:widget/widget~Widget `Widget`} plugin and injects the user interface\n * with two buttons into each widget instance in the editor. Each of the buttons can be clicked by the\n * user if the widget is next to the \"tight spot\". Once clicked, a paragraph is created with the selection anchored\n * in it so that users can type (or insert content, paste, etc.) straight away.\n */ class WidgetTypeAround extends Plugin {\n /**\n\t * A reference to the model widget element that has the fake caret active\n\t * on either side of it. It is later used to remove CSS classes associated with the fake caret\n\t * when the widget no longer needs it.\n\t */ _currentFakeCaretModelElement = null;\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'WidgetTypeAround';\n }\n /**\n\t * @inheritDoc\n\t */ static get requires() {\n return [\n Enter,\n Delete\n ];\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const editor = this.editor;\n const editingView = editor.editing.view;\n // Set a CSS class on the view editing root when the plugin is disabled so all the buttons\n // and lines visually disappear. All the interactions are disabled in individual plugin methods.\n this.on('change:isEnabled', (evt, data, isEnabled)=>{\n editingView.change((writer)=>{\n for (const root of editingView.document.roots){\n if (isEnabled) {\n writer.removeClass(PLUGIN_DISABLED_EDITING_ROOT_CLASS, root);\n } else {\n writer.addClass(PLUGIN_DISABLED_EDITING_ROOT_CLASS, root);\n }\n }\n });\n if (!isEnabled) {\n editor.model.change((writer)=>{\n writer.removeSelectionAttribute(TYPE_AROUND_SELECTION_ATTRIBUTE);\n });\n }\n });\n this._enableTypeAroundUIInjection();\n this._enableInsertingParagraphsOnButtonClick();\n this._enableInsertingParagraphsOnEnterKeypress();\n this._enableInsertingParagraphsOnTypingKeystroke();\n this._enableTypeAroundFakeCaretActivationUsingKeyboardArrows();\n this._enableDeleteIntegration();\n this._enableInsertContentIntegration();\n this._enableInsertObjectIntegration();\n this._enableDeleteContentIntegration();\n }\n /**\n\t * @inheritDoc\n\t */ destroy() {\n super.destroy();\n this._currentFakeCaretModelElement = null;\n }\n /**\n\t * Inserts a new paragraph next to a widget element with the selection anchored in it.\n\t *\n\t * **Note**: This method is heavily user-oriented and will both focus the editing view and scroll\n\t * the viewport to the selection in the inserted paragraph.\n\t *\n\t * @param widgetModelElement The model widget element next to which a paragraph is inserted.\n\t * @param position The position where the paragraph is inserted. Either `'before'` or `'after'` the widget.\n\t */ _insertParagraph(widgetModelElement, position) {\n const editor = this.editor;\n const editingView = editor.editing.view;\n const attributesToCopy = editor.model.schema.getAttributesWithProperty(widgetModelElement, 'copyOnReplace', true);\n editor.execute('insertParagraph', {\n position: editor.model.createPositionAt(widgetModelElement, position),\n attributes: attributesToCopy\n });\n editingView.focus();\n editingView.scrollToTheSelection();\n }\n /**\n\t * A wrapper for the {@link module:utils/emittermixin~Emitter#listenTo} method that executes the callbacks only\n\t * when the plugin {@link #isEnabled is enabled}.\n\t *\n\t * @param emitter The object that fires the event.\n\t * @param event The name of the event.\n\t * @param callback The function to be called on event.\n\t * @param options Additional options.\n\t * @param options.priority The priority of this event callback. The higher the priority value the sooner\n\t * the callback will be fired. Events having the same priority are called in the order they were added.\n\t */ _listenToIfEnabled(emitter, event, callback, options) {\n this.listenTo(emitter, event, (...args)=>{\n // Do not respond if the plugin is disabled.\n if (this.isEnabled) {\n callback(...args);\n }\n }, options);\n }\n /**\n\t * Similar to {@link #_insertParagraph}, this method inserts a paragraph except that it\n\t * does not expect a position. Instead, it performs the insertion next to a selected widget\n\t * according to the `widget-type-around` model selection attribute value (fake caret position).\n\t *\n\t * Because this method requires the `widget-type-around` attribute to be set,\n\t * the insertion can only happen when the widget's fake caret is active (e.g. activated\n\t * using the keyboard).\n\t *\n\t * @returns Returns `true` when the paragraph was inserted (the attribute was present) and `false` otherwise.\n\t */ _insertParagraphAccordingToFakeCaretPosition() {\n const editor = this.editor;\n const model = editor.model;\n const modelSelection = model.document.selection;\n const typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition(modelSelection);\n if (!typeAroundFakeCaretPosition) {\n return false;\n }\n // @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n // @if CK_DEBUG_TYPING // \tconsole.info( '%c[WidgetTypeAround]%c Fake caret -> insert paragraph',\n // @if CK_DEBUG_TYPING // \t\t'font-weight: bold; color: green', ''\n // @if CK_DEBUG_TYPING // \t);\n // @if CK_DEBUG_TYPING // }\n const selectedModelElement = modelSelection.getSelectedElement();\n this._insertParagraph(selectedModelElement, typeAroundFakeCaretPosition);\n return true;\n }\n /**\n\t * Creates a listener in the editing conversion pipeline that injects the widget type around\n\t * UI into every single widget instance created in the editor.\n\t *\n\t * The UI is delivered as a {@link module:engine/view/uielement~UIElement}\n\t * wrapper which renders DOM buttons that users can use to insert paragraphs.\n\t */ _enableTypeAroundUIInjection() {\n const editor = this.editor;\n const schema = editor.model.schema;\n const t = editor.locale.t;\n const buttonTitles = {\n before: t('Insert paragraph before block'),\n after: t('Insert paragraph after block')\n };\n editor.editing.downcastDispatcher.on('insert', (evt, data, conversionApi)=>{\n const viewElement = conversionApi.mapper.toViewElement(data.item);\n if (!viewElement) {\n return;\n }\n // Filter out non-widgets and inline widgets.\n if (isTypeAroundWidget(viewElement, data.item, schema)) {\n injectUIIntoWidget(conversionApi.writer, buttonTitles, viewElement);\n const widgetLabel = viewElement.getCustomProperty('widgetLabel');\n widgetLabel.push(()=>{\n return this.isEnabled ? t('Press Enter to type after or press Shift + Enter to type before the widget') : '';\n });\n }\n }, {\n priority: 'low'\n });\n }\n /**\n\t * Brings support for the fake caret that appears when either:\n\t *\n\t * * the selection moves to a widget from a position next to it using arrow keys,\n\t * * the arrow key is pressed when the widget is already selected.\n\t *\n\t * The fake caret lets the user know that they can start typing or just press\n\t * <kbd>Enter</kbd> to insert a paragraph at the position next to a widget as suggested by the fake caret.\n\t *\n\t * The fake caret disappears when the user changes the selection or the editor\n\t * gets blurred.\n\t *\n\t * The whole idea is as follows:\n\t *\n\t * 1. A user does one of the 2 scenarios described at the beginning.\n\t * 2. The \"keydown\" listener is executed and the decision is made whether to show or hide the fake caret.\n\t * 3. If it should show up, the `widget-type-around` model selection attribute is set indicating\n\t * on which side of the widget it should appear.\n\t * 4. The selection dispatcher reacts to the selection attribute and sets CSS classes responsible for the\n\t * fake caret on the view widget.\n\t * 5. If the fake caret should disappear, the selection attribute is removed and the dispatcher\n\t * does the CSS class clean-up in the view.\n\t * 6. Additionally, `change:range` and `FocusTracker#isFocused` listeners also remove the selection\n\t * attribute (the former also removes widget CSS classes).\n\t */ _enableTypeAroundFakeCaretActivationUsingKeyboardArrows() {\n const editor = this.editor;\n const model = editor.model;\n const modelSelection = model.document.selection;\n const schema = model.schema;\n const editingView = editor.editing.view;\n // This is the main listener responsible for the fake caret.\n // Note: The priority must precede the default Widget class keydown handler (\"high\").\n this._listenToIfEnabled(editingView.document, 'arrowKey', (evt, domEventData)=>{\n this._handleArrowKeyPress(evt, domEventData);\n }, {\n context: [\n isWidget,\n '$text'\n ],\n priority: 'high'\n });\n // This listener makes sure the widget type around selection attribute will be gone from the model\n // selection as soon as the model range changes. This attribute only makes sense when a widget is selected\n // (and the \"fake horizontal caret\" is visible) so whenever the range changes (e.g. selection moved somewhere else),\n // let's get rid of the attribute so that the selection downcast dispatcher isn't even bothered.\n this._listenToIfEnabled(modelSelection, 'change:range', (evt, data)=>{\n // Do not reset the selection attribute when the change was indirect.\n if (!data.directChange) {\n return;\n }\n // Get rid of the widget type around attribute of the selection on every change:range.\n // If the range changes, it means for sure, the user is no longer in the active (\"fake horizontal caret\") mode.\n editor.model.change((writer)=>{\n writer.removeSelectionAttribute(TYPE_AROUND_SELECTION_ATTRIBUTE);\n });\n });\n // Get rid of the widget type around attribute of the selection on every document change\n // that makes widget not selected any more (i.e. widget was removed).\n this._listenToIfEnabled(model.document, 'change:data', ()=>{\n const selectedModelElement = modelSelection.getSelectedElement();\n if (selectedModelElement) {\n const selectedViewElement = editor.editing.mapper.toViewElement(selectedModelElement);\n if (isTypeAroundWidget(selectedViewElement, selectedModelElement, schema)) {\n return;\n }\n }\n editor.model.change((writer)=>{\n writer.removeSelectionAttribute(TYPE_AROUND_SELECTION_ATTRIBUTE);\n });\n });\n // React to changes of the model selection attribute made by the arrow keys listener.\n // If the block widget is selected and the attribute changes, downcast the attribute to special\n // CSS classes associated with the active (\"fake horizontal caret\") mode of the widget.\n this._listenToIfEnabled(editor.editing.downcastDispatcher, 'selection', (evt, data, conversionApi)=>{\n const writer = conversionApi.writer;\n if (this._currentFakeCaretModelElement) {\n const selectedViewElement = conversionApi.mapper.toViewElement(this._currentFakeCaretModelElement);\n if (selectedViewElement) {\n // Get rid of CSS classes associated with the active (\"fake horizontal caret\") mode from the view widget.\n writer.removeClass(POSSIBLE_INSERTION_POSITIONS.map(positionToWidgetCssClass), selectedViewElement);\n this._currentFakeCaretModelElement = null;\n }\n }\n const selectedModelElement = data.selection.getSelectedElement();\n if (!selectedModelElement) {\n return;\n }\n const selectedViewElement = conversionApi.mapper.toViewElement(selectedModelElement);\n if (!isTypeAroundWidget(selectedViewElement, selectedModelElement, schema)) {\n return;\n }\n const typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition(data.selection);\n if (!typeAroundFakeCaretPosition) {\n return;\n }\n writer.addClass(positionToWidgetCssClass(typeAroundFakeCaretPosition), selectedViewElement);\n // Remember the view widget that got the \"fake-caret\" CSS class. This class should be removed ASAP when the\n // selection changes\n this._currentFakeCaretModelElement = selectedModelElement;\n });\n this._listenToIfEnabled(editor.ui.focusTracker, 'change:isFocused', (evt, name, isFocused)=>{\n if (!isFocused) {\n editor.model.change((writer)=>{\n writer.removeSelectionAttribute(TYPE_AROUND_SELECTION_ATTRIBUTE);\n });\n }\n });\n function positionToWidgetCssClass(position) {\n return `ck-widget_type-around_show-fake-caret_${position}`;\n }\n }\n /**\n\t * A listener executed on each \"keydown\" in the view document, a part of\n\t * {@link #_enableTypeAroundFakeCaretActivationUsingKeyboardArrows}.\n\t *\n\t * It decides whether the arrow keypress should activate the fake caret or not (also whether it should\n\t * be deactivated).\n\t *\n\t * The fake caret activation is done by setting the `widget-type-around` model selection attribute\n\t * in this listener, and stopping and preventing the event that would normally be handled by the widget\n\t * plugin that is responsible for the regular keyboard navigation near/across all widgets (that\n\t * includes inline widgets, which are ignored by the widget type around plugin).\n\t */ _handleArrowKeyPress(evt, domEventData) {\n const editor = this.editor;\n const model = editor.model;\n const modelSelection = model.document.selection;\n const schema = model.schema;\n const editingView = editor.editing.view;\n const keyCode = domEventData.keyCode;\n const isForward = isForwardArrowKeyCode(keyCode, editor.locale.contentLanguageDirection);\n const selectedViewElement = editingView.document.selection.getSelectedElement();\n const selectedModelElement = editor.editing.mapper.toModelElement(selectedViewElement);\n let shouldStopAndPreventDefault;\n // Handle keyboard navigation when a type-around-compatible widget is currently selected.\n if (isTypeAroundWidget(selectedViewElement, selectedModelElement, schema)) {\n shouldStopAndPreventDefault = this._handleArrowKeyPressOnSelectedWidget(isForward);\n } else if (modelSelection.isCollapsed) {\n shouldStopAndPreventDefault = this._handleArrowKeyPressWhenSelectionNextToAWidget(isForward);\n } else if (!domEventData.shiftKey) {\n shouldStopAndPreventDefault = this._handleArrowKeyPressWhenNonCollapsedSelection(isForward);\n }\n if (shouldStopAndPreventDefault) {\n domEventData.preventDefault();\n evt.stop();\n }\n }\n /**\n\t * Handles the keyboard navigation on \"keydown\" when a widget is currently selected and activates or deactivates\n\t * the fake caret for that widget, depending on the current value of the `widget-type-around` model\n\t * selection attribute and the direction of the pressed arrow key.\n\t *\n\t * @param isForward `true` when the pressed arrow key was responsible for the forward model selection movement\n\t * as in {@link module:utils/keyboard~isForwardArrowKeyCode}.\n\t * @returns Returns `true` when the keypress was handled and no other keydown listener of the editor should\n\t * process the event any further. Returns `false` otherwise.\n\t */ _handleArrowKeyPressOnSelectedWidget(isForward) {\n const editor = this.editor;\n const model = editor.model;\n const modelSelection = model.document.selection;\n const typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition(modelSelection);\n return model.change((writer)=>{\n // If the fake caret is displayed...\n if (typeAroundFakeCaretPosition) {\n const isLeavingWidget = typeAroundFakeCaretPosition === (isForward ? 'after' : 'before');\n // If the keyboard arrow works against the value of the selection attribute...\n // then remove the selection attribute but prevent default DOM actions\n // and do not let the Widget plugin listener move the selection. This brings\n // the widget back to the state, for instance, like if was selected using the mouse.\n //\n // **Note**: If leaving the widget when the fake caret is active, then the default\n // Widget handler will change the selection and, in turn, this will automatically discard\n // the selection attribute.\n if (!isLeavingWidget) {\n writer.removeSelectionAttribute(TYPE_AROUND_SELECTION_ATTRIBUTE);\n return true;\n }\n } else {\n writer.setSelectionAttribute(TYPE_AROUND_SELECTION_ATTRIBUTE, isForward ? 'after' : 'before');\n return true;\n }\n return false;\n });\n }\n /**\n\t * Handles the keyboard navigation on \"keydown\" when **no** widget is selected but the selection is **directly** next\n\t * to one and upon the fake caret should become active for this widget upon arrow keypress\n\t * (AKA entering/selecting the widget).\n\t *\n\t * **Note**: This code mirrors the implementation from the widget plugin but also adds the selection attribute.\n\t * Unfortunately, there is no safe way to let the widget plugin do the selection part first and then just set the\n\t * selection attribute here in the widget type around plugin. This is why this code must duplicate some from the widget plugin.\n\t *\n\t * @param isForward `true` when the pressed arrow key was responsible for the forward model selection movement\n\t * as in {@link module:utils/keyboard~isForwardArrowKeyCode}.\n\t * @returns Returns `true` when the keypress was handled and no other keydown listener of the editor should\n\t * process the event any further. Returns `false` otherwise.\n\t */ _handleArrowKeyPressWhenSelectionNextToAWidget(isForward) {\n const editor = this.editor;\n const model = editor.model;\n const schema = model.schema;\n const widgetPlugin = editor.plugins.get('Widget');\n // This is the widget the selection is about to be set on.\n const modelElementNextToSelection = widgetPlugin._getObjectElementNextToSelection(isForward);\n const viewElementNextToSelection = editor.editing.mapper.toViewElement(modelElementNextToSelection);\n if (isTypeAroundWidget(viewElementNextToSelection, modelElementNextToSelection, schema)) {\n model.change((writer)=>{\n widgetPlugin._setSelectionOverElement(modelElementNextToSelection);\n writer.setSelectionAttribute(TYPE_AROUND_SELECTION_ATTRIBUTE, isForward ? 'before' : 'after');\n });\n // The change() block above does the same job as the Widget plugin. The event can\n // be safely canceled.\n return true;\n }\n return false;\n }\n /**\n\t * Handles the keyboard navigation on \"keydown\" when a widget is currently selected (together with some other content)\n\t * and the widget is the first or last element in the selection. It activates or deactivates the fake caret for that widget.\n\t *\n\t * @param isForward `true` when the pressed arrow key was responsible for the forward model selection movement\n\t * as in {@link module:utils/keyboard~isForwardArrowKeyCode}.\n\t * @returns Returns `true` when the keypress was handled and no other keydown listener of the editor should\n\t * process the event any further. Returns `false` otherwise.\n\t */ _handleArrowKeyPressWhenNonCollapsedSelection(isForward) {\n const editor = this.editor;\n const model = editor.model;\n const schema = model.schema;\n const mapper = editor.editing.mapper;\n const modelSelection = model.document.selection;\n const selectedModelNode = isForward ? modelSelection.getLastPosition().nodeBefore : modelSelection.getFirstPosition().nodeAfter;\n const selectedViewNode = mapper.toViewElement(selectedModelNode);\n // There is a widget at the collapse position so collapse the selection to the fake caret on it.\n if (isTypeAroundWidget(selectedViewNode, selectedModelNode, schema)) {\n model.change((writer)=>{\n writer.setSelection(selectedModelNode, 'on');\n writer.setSelectionAttribute(TYPE_AROUND_SELECTION_ATTRIBUTE, isForward ? 'after' : 'before');\n });\n return true;\n }\n return false;\n }\n /**\n\t * Registers a `mousedown` listener for the view document which intercepts events\n\t * coming from the widget type around UI, which happens when a user clicks one of the buttons\n\t * that insert a paragraph next to a widget.\n\t */ _enableInsertingParagraphsOnButtonClick() {\n const editor = this.editor;\n const editingView = editor.editing.view;\n this._listenToIfEnabled(editingView.document, 'mousedown', (evt, domEventData)=>{\n const button = getClosestTypeAroundDomButton(domEventData.domTarget);\n if (!button) {\n return;\n }\n const buttonPosition = getTypeAroundButtonPosition(button);\n const widgetViewElement = getClosestWidgetViewElement(button, editingView.domConverter);\n const widgetModelElement = editor.editing.mapper.toModelElement(widgetViewElement);\n this._insertParagraph(widgetModelElement, buttonPosition);\n domEventData.preventDefault();\n evt.stop();\n });\n }\n /**\n\t * Creates the <kbd>Enter</kbd> key listener on the view document that allows the user to insert a paragraph\n\t * near the widget when either:\n\t *\n\t * * The fake caret was first activated using the arrow keys,\n\t * * The entire widget is selected in the model.\n\t *\n\t * In the first case, the new paragraph is inserted according to the `widget-type-around` selection\n\t * attribute (see {@link #_handleArrowKeyPress}).\n\t *\n\t * In the second case, the new paragraph is inserted based on whether a soft (<kbd>Shift</kbd>+<kbd>Enter</kbd>) keystroke\n\t * was pressed or not.\n\t */ _enableInsertingParagraphsOnEnterKeypress() {\n const editor = this.editor;\n const selection = editor.model.document.selection;\n const editingView = editor.editing.view;\n this._listenToIfEnabled(editingView.document, 'enter', (evt, domEventData)=>{\n // This event could be triggered from inside the widget but we are interested\n // only when the widget is selected itself.\n if (evt.eventPhase != 'atTarget') {\n return;\n }\n const selectedModelElement = selection.getSelectedElement();\n const selectedViewElement = editor.editing.mapper.toViewElement(selectedModelElement);\n const schema = editor.model.schema;\n let wasHandled;\n // First check if the widget is selected and there's a type around selection attribute associated\n // with the fake caret that would tell where to insert a new paragraph.\n if (this._insertParagraphAccordingToFakeCaretPosition()) {\n wasHandled = true;\n } else if (isTypeAroundWidget(selectedViewElement, selectedModelElement, schema)) {\n this._insertParagraph(selectedModelElement, domEventData.isSoft ? 'before' : 'after');\n wasHandled = true;\n }\n if (wasHandled) {\n domEventData.preventDefault();\n evt.stop();\n }\n }, {\n context: isWidget\n });\n }\n /**\n\t * Similar to the {@link #_enableInsertingParagraphsOnEnterKeypress}, it allows the user\n\t * to insert a paragraph next to a widget when the fake caret was activated using arrow\n\t * keys but it responds to typing instead of <kbd>Enter</kbd>.\n\t *\n\t * Listener enabled by this method will insert a new paragraph according to the `widget-type-around`\n\t * model selection attribute as the user simply starts typing, which creates the impression that the fake caret\n\t * behaves like a real one rendered by the browser (AKA your text appears where the caret was).\n\t *\n\t * **Note**: At the moment this listener creates 2 undo steps: one for the `insertParagraph` command\n\t * and another one for actual typing. It is not a disaster but this may need to be fixed\n\t * sooner or later.\n\t */ _enableInsertingParagraphsOnTypingKeystroke() {\n const editor = this.editor;\n const viewDocument = editor.editing.view.document;\n // Note: The priority must precede the default Input plugin insertText handler.\n this._listenToIfEnabled(viewDocument, 'insertText', (evt, data)=>{\n if (this._insertParagraphAccordingToFakeCaretPosition()) {\n // The view selection in the event data contains the widget. If the new paragraph\n // was inserted, modify the view selection passed along with the insertText event\n // so the default event handler in the Input plugin starts typing inside the paragraph.\n // Otherwise, the typing would be over the widget.\n data.selection = viewDocument.selection;\n }\n }, {\n priority: 'high'\n });\n if (env.isAndroid) {\n // On Android with English keyboard, the composition starts just by putting caret\n // at the word end or by selecting a table column. This is not a real composition started.\n // Trigger delete content on first composition key pressed.\n this._listenToIfEnabled(viewDocument, 'keydown', (evt, data)=>{\n if (data.keyCode == 229) {\n this._insertParagraphAccordingToFakeCaretPosition();\n }\n });\n } else {\n // Note: The priority must precede the default Input plugin compositionstart handler (to call it before delete content).\n this._listenToIfEnabled(viewDocument, 'compositionstart', ()=>{\n this._insertParagraphAccordingToFakeCaretPosition();\n }, {\n priority: 'high'\n });\n }\n }\n /**\n\t * It creates a \"delete\" event listener on the view document to handle cases when the <kbd>Delete</kbd> or <kbd>Backspace</kbd>\n\t * is pressed and the fake caret is currently active.\n\t *\n\t * The fake caret should create an illusion of a real browser caret so that when it appears before or after\n\t * a widget, pressing <kbd>Delete</kbd> or <kbd>Backspace</kbd> should remove a widget or delete the content\n\t * before or after a widget (depending on the content surrounding the widget).\n\t */ _enableDeleteIntegration() {\n const editor = this.editor;\n const editingView = editor.editing.view;\n const model = editor.model;\n const schema = model.schema;\n this._listenToIfEnabled(editingView.document, 'delete', (evt, domEventData)=>{\n // This event could be triggered from inside the widget but we are interested\n // only when the widget is selected itself.\n if (evt.eventPhase != 'atTarget') {\n return;\n }\n const typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition(model.document.selection);\n // This listener handles only these cases when the fake caret is active.\n if (!typeAroundFakeCaretPosition) {\n return;\n }\n const direction = domEventData.direction;\n const selectedModelWidget = model.document.selection.getSelectedElement();\n const isFakeCaretBefore = typeAroundFakeCaretPosition === 'before';\n const isDeleteForward = direction == 'forward';\n const shouldDeleteEntireWidget = isFakeCaretBefore === isDeleteForward;\n if (shouldDeleteEntireWidget) {\n editor.execute('delete', {\n selection: model.createSelection(selectedModelWidget, 'on')\n });\n } else {\n const range = schema.getNearestSelectionRange(model.createPositionAt(selectedModelWidget, typeAroundFakeCaretPosition), direction);\n // If there is somewhere to move selection to, then there will be something to delete.\n if (range) {\n // If the range is NOT collapsed, then we know that the range contains an object (see getNearestSelectionRange() docs).\n if (!range.isCollapsed) {\n model.change((writer)=>{\n writer.setSelection(range);\n editor.execute(isDeleteForward ? 'deleteForward' : 'delete');\n });\n } else {\n const probe = model.createSelection(range.start);\n model.modifySelection(probe, {\n direction\n });\n // If the range is collapsed, let's see if a non-collapsed range exists that can could be deleted.\n // If such range exists, use the editor command because it it safe for collaboration (it merges where it can).\n if (!probe.focus.isEqual(range.start)) {\n model.change((writer)=>{\n writer.setSelection(range);\n editor.execute(isDeleteForward ? 'deleteForward' : 'delete');\n });\n } else {\n const deepestEmptyRangeAncestor = getDeepestEmptyElementAncestor(schema, range.start.parent);\n model.deleteContent(model.createSelection(deepestEmptyRangeAncestor, 'on'), {\n doNotAutoparagraph: true\n });\n }\n }\n }\n }\n // If some content was deleted, don't let the handler from the Widget plugin kick in.\n // If nothing was deleted, then the default handler will have nothing to do anyway.\n domEventData.preventDefault();\n evt.stop();\n }, {\n context: isWidget\n });\n }\n /**\n\t * Attaches the {@link module:engine/model/model~Model#event:insertContent} event listener that, for instance, allows the user to paste\n\t * content near a widget when the fake caret is first activated using the arrow keys.\n\t *\n\t * The content is inserted according to the `widget-type-around` selection attribute (see {@link #_handleArrowKeyPress}).\n\t */ _enableInsertContentIntegration() {\n const editor = this.editor;\n const model = this.editor.model;\n const documentSelection = model.document.selection;\n this._listenToIfEnabled(editor.model, 'insertContent', (evt, [content, selectable])=>{\n if (selectable && !selectable.is('documentSelection')) {\n return;\n }\n const typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition(documentSelection);\n if (!typeAroundFakeCaretPosition) {\n return;\n }\n evt.stop();\n return model.change((writer)=>{\n const selectedElement = documentSelection.getSelectedElement();\n const position = model.createPositionAt(selectedElement, typeAroundFakeCaretPosition);\n const selection = writer.createSelection(position);\n const result = model.insertContent(content, selection);\n writer.setSelection(selection);\n return result;\n });\n }, {\n priority: 'high'\n });\n }\n /**\n\t * Attaches the {@link module:engine/model/model~Model#event:insertObject} event listener that modifies the\n\t * `options.findOptimalPosition`parameter to position of fake caret in relation to selected element\n\t * to reflect user's intent of desired insertion position.\n\t *\n\t * The object is inserted according to the `widget-type-around` selection attribute (see {@link #_handleArrowKeyPress}).\n\t */ _enableInsertObjectIntegration() {\n const editor = this.editor;\n const model = this.editor.model;\n const documentSelection = model.document.selection;\n this._listenToIfEnabled(editor.model, 'insertObject', (evt, args)=>{\n const [, selectable, options = {}] = args;\n if (selectable && !selectable.is('documentSelection')) {\n return;\n }\n const typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition(documentSelection);\n if (!typeAroundFakeCaretPosition) {\n return;\n }\n options.findOptimalPosition = typeAroundFakeCaretPosition;\n args[3] = options;\n }, {\n priority: 'high'\n });\n }\n /**\n\t * Attaches the {@link module:engine/model/model~Model#event:deleteContent} event listener to block the event when the fake\n\t * caret is active.\n\t *\n\t * This is required for cases that trigger {@link module:engine/model/model~Model#deleteContent `model.deleteContent()`}\n\t * before calling {@link module:engine/model/model~Model#insertContent `model.insertContent()`} like, for instance,\n\t * plain text pasting.\n\t */ _enableDeleteContentIntegration() {\n const editor = this.editor;\n const model = this.editor.model;\n const documentSelection = model.document.selection;\n this._listenToIfEnabled(editor.model, 'deleteContent', (evt, [selection])=>{\n if (selection && !selection.is('documentSelection')) {\n return;\n }\n const typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition(documentSelection);\n // Disable removing the selection content while pasting plain text.\n if (typeAroundFakeCaretPosition) {\n evt.stop();\n }\n }, {\n priority: 'high'\n });\n }\n}\n/**\n * Injects the type around UI into a view widget instance.\n */ function injectUIIntoWidget(viewWriter, buttonTitles, widgetViewElement) {\n const typeAroundWrapper = viewWriter.createUIElement('div', {\n class: 'ck ck-reset_all ck-widget__type-around'\n }, function(domDocument) {\n const wrapperDomElement = this.toDomElement(domDocument);\n injectButtons(wrapperDomElement, buttonTitles);\n injectFakeCaret(wrapperDomElement);\n return wrapperDomElement;\n });\n // Inject the type around wrapper into the widget's wrapper.\n viewWriter.insert(viewWriter.createPositionAt(widgetViewElement, 'end'), typeAroundWrapper);\n}\n/**\n * FYI: Not using the IconView class because each instance would need to be destroyed to avoid memory leaks\n * and it's pretty hard to figure out when a view (widget) is gone for good so it's cheaper to use raw\n * <svg> here.\n */ function injectButtons(wrapperDomElement, buttonTitles) {\n for (const position of POSSIBLE_INSERTION_POSITIONS){\n const buttonTemplate = new Template({\n tag: 'div',\n attributes: {\n class: [\n 'ck',\n 'ck-widget__type-around__button',\n `ck-widget__type-around__button_${position}`\n ],\n title: buttonTitles[position],\n 'aria-hidden': 'true'\n },\n children: [\n wrapperDomElement.ownerDocument.importNode(RETURN_ARROW_ICON_ELEMENT, true)\n ]\n });\n wrapperDomElement.appendChild(buttonTemplate.render());\n }\n}\nfunction injectFakeCaret(wrapperDomElement) {\n const caretTemplate = new Template({\n tag: 'div',\n attributes: {\n class: [\n 'ck',\n 'ck-widget__type-around__fake-caret'\n ]\n }\n });\n wrapperDomElement.appendChild(caretTemplate.render());\n}\n/**\n * Returns the ancestor of an element closest to the root which is empty. For instance,\n * for `<baz>`:\n *\n * ```\n * <foo>abc<bar><baz></baz></bar></foo>\n * ```\n *\n * it returns `<bar>`.\n */ function getDeepestEmptyElementAncestor(schema, element) {\n let deepestEmptyAncestor = element;\n for (const ancestor of element.getAncestors({\n parentFirst: true\n })){\n if (ancestor.childCount > 1 || schema.isLimit(ancestor)) {\n break;\n }\n deepestEmptyAncestor = ancestor;\n }\n return deepestEmptyAncestor;\n}\n\n/**\n * Returns 'keydown' handler for up/down arrow keys that modifies the caret movement if it's in a text line next to an object.\n *\n * @param editing The editing controller.\n */ function verticalNavigationHandler(editing) {\n const model = editing.model;\n return (evt, data)=>{\n const arrowUpPressed = data.keyCode == keyCodes.arrowup;\n const arrowDownPressed = data.keyCode == keyCodes.arrowdown;\n const expandSelection = data.shiftKey;\n const selection = model.document.selection;\n if (!arrowUpPressed && !arrowDownPressed) {\n return;\n }\n const isForward = arrowDownPressed;\n // Navigation is in the opposite direction than the selection direction so this is shrinking of the selection.\n // Selection for sure will not approach any object.\n if (expandSelection && selectionWillShrink(selection, isForward)) {\n return;\n }\n // Find a range between selection and closest limit element.\n const range = findTextRangeFromSelection(editing, selection, isForward);\n // There is no selection position inside the limit element.\n if (!range) {\n return;\n }\n // If already at the edge of a limit element.\n if (range.isCollapsed) {\n // A collapsed selection at limit edge - nothing more to do.\n if (selection.isCollapsed) {\n return;\n } else if (expandSelection) {\n return;\n }\n }\n // If the range is a single line (there is no word wrapping) then move the selection to the position closest to the limit element.\n //\n // We can't move the selection directly to the isObject element (eg. table cell) because of dual position at the end/beginning\n // of wrapped line (it's at the same time at the end of one line and at the start of the next line).\n if (range.isCollapsed || isSingleLineRange(editing, range, isForward)) {\n model.change((writer)=>{\n const newPosition = isForward ? range.end : range.start;\n if (expandSelection) {\n const newSelection = model.createSelection(selection.anchor);\n newSelection.setFocus(newPosition);\n writer.setSelection(newSelection);\n } else {\n writer.setSelection(newPosition);\n }\n });\n evt.stop();\n data.preventDefault();\n data.stopPropagation();\n }\n };\n}\n/**\n * Finds the range between selection and closest limit element (in the direction of navigation).\n * The position next to limit element is adjusted to the closest allowed `$text` position.\n *\n * Returns `null` if, according to the schema, the resulting range cannot contain a `$text` element.\n *\n * @param editing The editing controller.\n * @param selection The current selection.\n * @param isForward The expected navigation direction.\n */ function findTextRangeFromSelection(editing, selection, isForward) {\n const model = editing.model;\n if (isForward) {\n const startPosition = selection.isCollapsed ? selection.focus : selection.getLastPosition();\n const endPosition = getNearestNonInlineLimit(model, startPosition, 'forward');\n // There is no limit element, browser should handle this.\n if (!endPosition) {\n return null;\n }\n const range = model.createRange(startPosition, endPosition);\n const lastRangePosition = getNearestTextPosition(model.schema, range, 'backward');\n if (lastRangePosition) {\n return model.createRange(startPosition, lastRangePosition);\n }\n return null;\n } else {\n const endPosition = selection.isCollapsed ? selection.focus : selection.getFirstPosition();\n const startPosition = getNearestNonInlineLimit(model, endPosition, 'backward');\n // There is no limit element, browser should handle this.\n if (!startPosition) {\n return null;\n }\n const range = model.createRange(startPosition, endPosition);\n const firstRangePosition = getNearestTextPosition(model.schema, range, 'forward');\n if (firstRangePosition) {\n return model.createRange(firstRangePosition, endPosition);\n }\n return null;\n }\n}\n/**\n * Finds the limit element position that is closest to startPosition.\n *\n * @param direction Search direction.\n */ function getNearestNonInlineLimit(model, startPosition, direction) {\n const schema = model.schema;\n const range = model.createRangeIn(startPosition.root);\n const walkerValueType = direction == 'forward' ? 'elementStart' : 'elementEnd';\n for (const { previousPosition, item, type } of range.getWalker({\n startPosition,\n direction\n })){\n if (schema.isLimit(item) && !schema.isInline(item)) {\n return previousPosition;\n }\n // Stop looking for isLimit element if the next element is a block element (it is for sure not single line).\n if (type == walkerValueType && schema.isBlock(item)) {\n return null;\n }\n }\n return null;\n}\n/**\n * Basing on the provided range, finds the first or last (depending on `direction`) position inside the range\n * that can contain `$text` (according to schema).\n *\n * @param schema The schema.\n * @param range The range to find the position in.\n * @param direction Search direction.\n * @returns The nearest selection position.\n *\n */ function getNearestTextPosition(schema, range, direction) {\n const position = direction == 'backward' ? range.end : range.start;\n if (schema.checkChild(position, '$text')) {\n return position;\n }\n for (const { nextPosition } of range.getWalker({\n direction\n })){\n if (schema.checkChild(nextPosition, '$text')) {\n return nextPosition;\n }\n }\n return null;\n}\n/**\n * Checks if the DOM range corresponding to the provided model range renders as a single line by analyzing DOMRects\n * (verifying if they visually wrap content to the next line).\n *\n * @param editing The editing controller.\n * @param modelRange The current table cell content range.\n * @param isForward The expected navigation direction.\n */ function isSingleLineRange(editing, modelRange, isForward) {\n const model = editing.model;\n const domConverter = editing.view.domConverter;\n // Wrapped lines contain exactly the same position at the end of current line\n // and at the beginning of next line. That position's client rect is at the end\n // of current line. In case of caret at first position of the last line that 'dual'\n // position would be detected as it's not the last line.\n if (isForward) {\n const probe = model.createSelection(modelRange.start);\n model.modifySelection(probe);\n // If the new position is at the end of the container then we can't use this position\n // because it would provide incorrect result for eg caption of image and selection\n // just before end of it. Also in this case there is no \"dual\" position.\n if (!probe.focus.isAtEnd && !modelRange.start.isEqual(probe.focus)) {\n modelRange = model.createRange(probe.focus, modelRange.end);\n }\n }\n const viewRange = editing.mapper.toViewRange(modelRange);\n const domRange = domConverter.viewRangeToDom(viewRange);\n const rects = Rect.getDomRangeRects(domRange);\n let boundaryVerticalPosition;\n for (const rect of rects){\n if (boundaryVerticalPosition === undefined) {\n boundaryVerticalPosition = Math.round(rect.bottom);\n continue;\n }\n // Let's check if this rect is in new line.\n if (Math.round(rect.top) >= boundaryVerticalPosition) {\n return false;\n }\n boundaryVerticalPosition = Math.max(boundaryVerticalPosition, Math.round(rect.bottom));\n }\n return true;\n}\nfunction selectionWillShrink(selection, isForward) {\n return !selection.isCollapsed && selection.isBackward == isForward;\n}\n\n/**\n * The widget plugin. It enables base support for widgets.\n *\n * See {@glink api/widget package page} for more details and documentation.\n *\n * This plugin enables multiple behaviors required by widgets:\n *\n * * The model to view selection converter for the editing pipeline (it handles widget custom selection rendering).\n * If a converted selection wraps around a widget element, that selection is marked as\n * {@link module:engine/view/selection~Selection#isFake fake}. Additionally, the `ck-widget_selected` CSS class\n * is added to indicate that widget has been selected.\n * * The mouse and keyboard events handling on and around widget elements.\n */ class Widget extends Plugin {\n /**\n\t * Holds previously selected widgets.\n\t */ _previouslySelected = new Set();\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'Widget';\n }\n /**\n\t * @inheritDoc\n\t */ static get requires() {\n return [\n WidgetTypeAround,\n Delete\n ];\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const editor = this.editor;\n const view = editor.editing.view;\n const viewDocument = view.document;\n const t = editor.t;\n // Model to view selection converter.\n // Converts selection placed over widget element to fake selection.\n //\n // By default, the selection is downcasted by the engine to surround the attribute element, even though its only\n // child is an inline widget. A similar thing also happens when a collapsed marker is rendered as a UI element\n // next to an inline widget: the view selection contains both the widget and the marker.\n //\n // This prevents creating a correct fake selection when this inline widget is selected. Normalize the selection\n // in these cases based on the model:\n //\n //\t\t[<attributeElement><inlineWidget /></attributeElement>] -> <attributeElement>[<inlineWidget />]</attributeElement>\n //\t\t[<uiElement></uiElement><inlineWidget />] -> <uiElement></uiElement>[<inlineWidget />]\n //\n // Thanks to this:\n //\n // * fake selection can be set correctly,\n // * any logic depending on (View)Selection#getSelectedElement() also works OK.\n //\n // See https://github.com/ckeditor/ckeditor5/issues/9524.\n this.editor.editing.downcastDispatcher.on('selection', (evt, data, conversionApi)=>{\n const viewWriter = conversionApi.writer;\n const modelSelection = data.selection;\n // The collapsed selection can't contain any widget.\n if (modelSelection.isCollapsed) {\n return;\n }\n const selectedModelElement = modelSelection.getSelectedElement();\n if (!selectedModelElement) {\n return;\n }\n const selectedViewElement = editor.editing.mapper.toViewElement(selectedModelElement);\n if (!isWidget(selectedViewElement)) {\n return;\n }\n if (!conversionApi.consumable.consume(modelSelection, 'selection')) {\n return;\n }\n viewWriter.setSelection(viewWriter.createRangeOn(selectedViewElement), {\n fake: true,\n label: getLabel(selectedViewElement)\n });\n });\n // Mark all widgets inside the selection with the css class.\n // This handler is registered at the 'low' priority so it's triggered after the real selection conversion.\n this.editor.editing.downcastDispatcher.on('selection', (evt, data, conversionApi)=>{\n // Remove selected class from previously selected widgets.\n this._clearPreviouslySelectedWidgets(conversionApi.writer);\n const viewWriter = conversionApi.writer;\n const viewSelection = viewWriter.document.selection;\n let lastMarked = null;\n for (const range of viewSelection.getRanges()){\n // Note: There could be multiple selected widgets in a range but no fake selection.\n // All of them must be marked as selected, for instance [<widget></widget><widget></widget>]\n for (const value of range){\n const node = value.item;\n // Do not mark nested widgets in selected one. See: #4594\n if (isWidget(node) && !isChild(node, lastMarked)) {\n viewWriter.addClass(WIDGET_SELECTED_CLASS_NAME, node);\n this._previouslySelected.add(node);\n lastMarked = node;\n }\n }\n }\n }, {\n priority: 'low'\n });\n // If mouse down is pressed on widget - create selection over whole widget.\n view.addObserver(MouseObserver);\n this.listenTo(viewDocument, 'mousedown', (...args)=>this._onMousedown(...args));\n // There are two keydown listeners working on different priorities. This allows other\n // features such as WidgetTypeAround or TableKeyboard to attach their listeners in between\n // and customize the behavior even further in different content/selection scenarios.\n //\n // * The first listener handles changing the selection on arrow key press\n // if the widget is selected or if the selection is next to a widget and the widget\n // should become selected upon the arrow key press.\n //\n // * The second (late) listener makes sure the default browser action on arrow key press is\n // prevented when a widget is selected. This prevents the selection from being moved\n // from a fake selection container.\n this.listenTo(viewDocument, 'arrowKey', (...args)=>{\n this._handleSelectionChangeOnArrowKeyPress(...args);\n }, {\n context: [\n isWidget,\n '$text'\n ]\n });\n this.listenTo(viewDocument, 'arrowKey', (...args)=>{\n this._preventDefaultOnArrowKeyPress(...args);\n }, {\n context: '$root'\n });\n this.listenTo(viewDocument, 'arrowKey', verticalNavigationHandler(this.editor.editing), {\n context: '$text'\n });\n // Handle custom delete behaviour.\n this.listenTo(viewDocument, 'delete', (evt, data)=>{\n if (this._handleDelete(data.direction == 'forward')) {\n data.preventDefault();\n evt.stop();\n }\n }, {\n context: '$root'\n });\n // Handle Tab key while a widget is selected.\n this.listenTo(viewDocument, 'tab', (evt, data)=>{\n // This event could be triggered from inside the widget, but we are interested\n // only when the widget is selected itself.\n if (evt.eventPhase != 'atTarget') {\n return;\n }\n if (data.shiftKey) {\n return;\n }\n if (this._selectFirstNestedEditable()) {\n data.preventDefault();\n evt.stop();\n }\n }, {\n context: isWidget,\n priority: 'low'\n });\n // Handle Shift+Tab key while caret inside a widget editable.\n this.listenTo(viewDocument, 'tab', (evt, data)=>{\n if (!data.shiftKey) {\n return;\n }\n if (this._selectAncestorWidget()) {\n data.preventDefault();\n evt.stop();\n }\n }, {\n priority: 'low'\n });\n // Handle Esc key while inside a nested editable.\n this.listenTo(viewDocument, 'keydown', (evt, data)=>{\n if (data.keystroke != keyCodes.esc) {\n return;\n }\n if (this._selectAncestorWidget()) {\n data.preventDefault();\n evt.stop();\n }\n }, {\n priority: 'low'\n });\n // Add the information about the keystrokes to the accessibility database.\n editor.accessibility.addKeystrokeInfoGroup({\n id: 'widget',\n label: t('Keystrokes that can be used when a widget is selected (for example: image, table, etc.)'),\n keystrokes: [\n {\n label: t('Move focus from an editable area back to the parent widget'),\n keystroke: 'Esc'\n },\n {\n label: t('Insert a new paragraph directly after a widget'),\n keystroke: 'Enter'\n },\n {\n label: t('Insert a new paragraph directly before a widget'),\n keystroke: 'Shift+Enter'\n },\n {\n label: t('Move the caret to allow typing directly before a widget'),\n keystroke: [\n [\n 'arrowup'\n ],\n [\n 'arrowleft'\n ]\n ]\n },\n {\n label: t('Move the caret to allow typing directly after a widget'),\n keystroke: [\n [\n 'arrowdown'\n ],\n [\n 'arrowright'\n ]\n ]\n }\n ]\n });\n }\n /**\n\t * Handles {@link module:engine/view/document~Document#event:mousedown mousedown} events on widget elements.\n\t */ _onMousedown(eventInfo, domEventData) {\n const editor = this.editor;\n const view = editor.editing.view;\n const viewDocument = view.document;\n let element = domEventData.target;\n // If triple click should select entire paragraph.\n if (domEventData.domEvent.detail >= 3) {\n if (this._selectBlockContent(element)) {\n domEventData.preventDefault();\n }\n return;\n }\n // If target is not a widget element - check if one of the ancestors is.\n if (!isWidget(element)) {\n const editableOrWidgetElement = findClosestEditableOrWidgetAncestor(element);\n if (!editableOrWidgetElement) {\n return;\n }\n if (isWidget(editableOrWidgetElement)) {\n element = editableOrWidgetElement;\n } else {\n // Pick view range from the point where the mouse was clicked.\n const clickTargetFromPoint = getElementFromMouseEvent(view, domEventData);\n if (clickTargetFromPoint && isWidget(clickTargetFromPoint)) {\n element = clickTargetFromPoint;\n } else {\n return;\n }\n }\n }\n // On Android selection would jump to the first table cell, on other devices\n // we can't block it (and don't need to) because of drag and drop support.\n if (env.isAndroid) {\n domEventData.preventDefault();\n }\n // Focus editor if is not focused already.\n if (!viewDocument.isFocused) {\n view.focus();\n }\n // Create model selection over widget.\n const modelElement = editor.editing.mapper.toModelElement(element);\n this._setSelectionOverElement(modelElement);\n }\n /**\n\t * Selects entire block content, e.g. on triple click it selects entire paragraph.\n\t */ _selectBlockContent(element) {\n const editor = this.editor;\n const model = editor.model;\n const mapper = editor.editing.mapper;\n const schema = model.schema;\n const viewElement = mapper.findMappedViewAncestor(this.editor.editing.view.createPositionAt(element, 0));\n const modelElement = findTextBlockAncestor(mapper.toModelElement(viewElement), model.schema);\n if (!modelElement) {\n return false;\n }\n model.change((writer)=>{\n const nextTextBlock = !schema.isLimit(modelElement) ? findNextTextBlock(writer.createPositionAfter(modelElement), schema) : null;\n const start = writer.createPositionAt(modelElement, 0);\n const end = nextTextBlock ? writer.createPositionAt(nextTextBlock, 0) : writer.createPositionAt(modelElement, 'end');\n writer.setSelection(writer.createRange(start, end));\n });\n return true;\n }\n /**\n\t * Handles {@link module:engine/view/document~Document#event:keydown keydown} events and changes\n\t * the model selection when:\n\t *\n\t * * arrow key is pressed when the widget is selected,\n\t * * the selection is next to a widget and the widget should become selected upon the arrow key press.\n\t *\n\t * See {@link #_preventDefaultOnArrowKeyPress}.\n\t */ _handleSelectionChangeOnArrowKeyPress(eventInfo, domEventData) {\n const keyCode = domEventData.keyCode;\n const model = this.editor.model;\n const schema = model.schema;\n const modelSelection = model.document.selection;\n const objectElement = modelSelection.getSelectedElement();\n const direction = getLocalizedArrowKeyCodeDirection(keyCode, this.editor.locale.contentLanguageDirection);\n const isForward = direction == 'down' || direction == 'right';\n const isVerticalNavigation = direction == 'up' || direction == 'down';\n // If object element is selected.\n if (objectElement && schema.isObject(objectElement)) {\n const position = isForward ? modelSelection.getLastPosition() : modelSelection.getFirstPosition();\n const newRange = schema.getNearestSelectionRange(position, isForward ? 'forward' : 'backward');\n if (newRange) {\n model.change((writer)=>{\n writer.setSelection(newRange);\n });\n domEventData.preventDefault();\n eventInfo.stop();\n }\n return;\n }\n // Handle collapsing of the selection when there is any widget on the edge of selection.\n // This is needed because browsers have problems with collapsing such selection.\n if (!modelSelection.isCollapsed && !domEventData.shiftKey) {\n const firstPosition = modelSelection.getFirstPosition();\n const lastPosition = modelSelection.getLastPosition();\n const firstSelectedNode = firstPosition.nodeAfter;\n const lastSelectedNode = lastPosition.nodeBefore;\n if (firstSelectedNode && schema.isObject(firstSelectedNode) || lastSelectedNode && schema.isObject(lastSelectedNode)) {\n model.change((writer)=>{\n writer.setSelection(isForward ? lastPosition : firstPosition);\n });\n domEventData.preventDefault();\n eventInfo.stop();\n }\n return;\n }\n // Return if not collapsed.\n if (!modelSelection.isCollapsed) {\n return;\n }\n // If selection is next to object element.\n const objectElementNextToSelection = this._getObjectElementNextToSelection(isForward);\n if (objectElementNextToSelection && schema.isObject(objectElementNextToSelection)) {\n // Do not select an inline widget while handling up/down arrow.\n if (schema.isInline(objectElementNextToSelection) && isVerticalNavigation) {\n return;\n }\n this._setSelectionOverElement(objectElementNextToSelection);\n domEventData.preventDefault();\n eventInfo.stop();\n }\n }\n /**\n\t * Handles {@link module:engine/view/document~Document#event:keydown keydown} events and prevents\n\t * the default browser behavior to make sure the fake selection is not being moved from a fake selection\n\t * container.\n\t *\n\t * See {@link #_handleSelectionChangeOnArrowKeyPress}.\n\t */ _preventDefaultOnArrowKeyPress(eventInfo, domEventData) {\n const model = this.editor.model;\n const schema = model.schema;\n const objectElement = model.document.selection.getSelectedElement();\n // If object element is selected.\n if (objectElement && schema.isObject(objectElement)) {\n domEventData.preventDefault();\n eventInfo.stop();\n }\n }\n /**\n\t * Handles delete keys: backspace and delete.\n\t *\n\t * @param isForward Set to true if delete was performed in forward direction.\n\t * @returns Returns `true` if keys were handled correctly.\n\t */ _handleDelete(isForward) {\n const modelDocument = this.editor.model.document;\n const modelSelection = modelDocument.selection;\n // Do nothing when the read only mode is enabled.\n if (!this.editor.model.canEditAt(modelSelection)) {\n return;\n }\n // Do nothing on non-collapsed selection.\n if (!modelSelection.isCollapsed) {\n return;\n }\n const objectElement = this._getObjectElementNextToSelection(isForward);\n if (objectElement) {\n this.editor.model.change((writer)=>{\n let previousNode = modelSelection.anchor.parent;\n // Remove previous element if empty.\n while(previousNode.isEmpty){\n const nodeToRemove = previousNode;\n previousNode = nodeToRemove.parent;\n writer.remove(nodeToRemove);\n }\n this._setSelectionOverElement(objectElement);\n });\n return true;\n }\n }\n /**\n\t * Sets {@link module:engine/model/selection~Selection document's selection} over given element.\n\t *\n\t * @internal\n\t */ _setSelectionOverElement(element) {\n this.editor.model.change((writer)=>{\n writer.setSelection(writer.createRangeOn(element));\n });\n }\n /**\n\t * Checks if {@link module:engine/model/element~Element element} placed next to the current\n\t * {@link module:engine/model/selection~Selection model selection} exists and is marked in\n\t * {@link module:engine/model/schema~Schema schema} as `object`.\n\t *\n\t * @internal\n\t * @param forward Direction of checking.\n\t */ _getObjectElementNextToSelection(forward) {\n const model = this.editor.model;\n const schema = model.schema;\n const modelSelection = model.document.selection;\n // Clone current selection to use it as a probe. We must leave default selection as it is so it can return\n // to its current state after undo.\n const probe = model.createSelection(modelSelection);\n model.modifySelection(probe, {\n direction: forward ? 'forward' : 'backward'\n });\n // The selection didn't change so there is nothing there.\n if (probe.isEqual(modelSelection)) {\n return null;\n }\n const objectElement = forward ? probe.focus.nodeBefore : probe.focus.nodeAfter;\n if (!!objectElement && schema.isObject(objectElement)) {\n return objectElement;\n }\n return null;\n }\n /**\n\t * Removes CSS class from previously selected widgets.\n\t */ _clearPreviouslySelectedWidgets(writer) {\n for (const widget of this._previouslySelected){\n writer.removeClass(WIDGET_SELECTED_CLASS_NAME, widget);\n }\n this._previouslySelected.clear();\n }\n /**\n\t * Moves the document selection into the first nested editable.\n\t */ _selectFirstNestedEditable() {\n const editor = this.editor;\n const view = this.editor.editing.view;\n const viewDocument = view.document;\n for (const item of viewDocument.selection.getFirstRange().getItems()){\n if (item.is('editableElement')) {\n const modelElement = editor.editing.mapper.toModelElement(item);\n /* istanbul ignore next -- @preserve */ if (!modelElement) {\n continue;\n }\n const position = editor.model.createPositionAt(modelElement, 0);\n const newRange = editor.model.schema.getNearestSelectionRange(position, 'forward');\n editor.model.change((writer)=>{\n writer.setSelection(newRange);\n });\n return true;\n }\n }\n return false;\n }\n /**\n\t * Updates the document selection so that it selects first ancestor widget.\n\t */ _selectAncestorWidget() {\n const editor = this.editor;\n const mapper = editor.editing.mapper;\n const selection = editor.editing.view.document.selection;\n const positionParent = selection.getFirstPosition().parent;\n const positionParentElement = positionParent.is('$text') ? positionParent.parent : positionParent;\n const viewElement = positionParentElement.findAncestor(isWidget);\n if (!viewElement) {\n return false;\n }\n const modelElement = mapper.toModelElement(viewElement);\n /* istanbul ignore next -- @preserve */ if (!modelElement) {\n return false;\n }\n editor.model.change((writer)=>{\n writer.setSelection(modelElement, 'on');\n });\n return true;\n }\n}\n/**\n * Finds the closest ancestor element that is either an editable element or a widget.\n *\n * @param element The element from which to start searching.\n * @returns The closest ancestor element that is either an editable element or a widget, or null if none is found.\n */ function findClosestEditableOrWidgetAncestor(element) {\n let currentElement = element;\n while(currentElement){\n if (currentElement.is('editableElement') || isWidget(currentElement)) {\n return currentElement;\n }\n currentElement = currentElement.parent;\n }\n return null;\n}\n/**\n * Retrieves the ViewElement associated with a mouse event in the editing view.\n *\n * @param view The editing view.\n * @param domEventData The DOM event data containing the mouse event.\n * @returns The ViewElement associated with the mouse event, or null if not found.\n */ function getElementFromMouseEvent(view, domEventData) {\n const domRange = getRangeFromMouseEvent(domEventData.domEvent);\n if (!domRange) {\n return null;\n }\n const viewRange = view.domConverter.domRangeToView(domRange);\n if (!viewRange) {\n return null;\n }\n const viewPosition = viewRange.start;\n if (!viewPosition.parent) {\n return null;\n }\n // Click after a widget tend to return position at the end of the editable element\n // so use the node before it if range is at the end of a parent.\n const viewNode = viewPosition.parent.is('editableElement') && viewPosition.isAtEnd && viewPosition.nodeBefore || viewPosition.parent;\n if (viewNode.is('$text')) {\n return viewNode.parent;\n }\n return viewNode;\n}\n/**\n * Checks whether the specified `element` is a child of the `parent` element.\n *\n * @param element An element to check.\n * @param parent A parent for the element.\n */ function isChild(element, parent) {\n if (!parent) {\n return false;\n }\n return Array.from(element.getAncestors()).includes(parent);\n}\n/**\n * Returns nearest text block ancestor.\n */ function findTextBlockAncestor(modelElement, schema) {\n for (const element of modelElement.getAncestors({\n includeSelf: true,\n parentFirst: true\n })){\n if (schema.checkChild(element, '$text')) {\n return element;\n }\n // Do not go beyond nested editable.\n if (schema.isLimit(element) && !schema.isObject(element)) {\n break;\n }\n }\n return null;\n}\n/**\n * Returns next text block where could put selection.\n */ function findNextTextBlock(position, schema) {\n const treeWalker = new TreeWalker({\n startPosition: position\n });\n for (const { item } of treeWalker){\n if (schema.isLimit(item) || !item.is('element')) {\n return null;\n }\n if (schema.checkChild(item, '$text')) {\n return item;\n }\n }\n return null;\n}\n\n/**\n * Widget toolbar repository plugin. A central point for registering widget toolbars. This plugin handles the whole\n * toolbar rendering process and exposes a concise API.\n *\n * To add a toolbar for your widget use the {@link ~WidgetToolbarRepository#register `WidgetToolbarRepository#register()`} method.\n *\n * The following example comes from the {@link module:image/imagetoolbar~ImageToolbar} plugin:\n *\n * ```ts\n * class ImageToolbar extends Plugin {\n * \tstatic get requires() {\n * \t\treturn [ WidgetToolbarRepository ];\n * \t}\n *\n * \tafterInit() {\n * \t\tconst editor = this.editor;\n * \t\tconst widgetToolbarRepository = editor.plugins.get( WidgetToolbarRepository );\n *\n * \t\twidgetToolbarRepository.register( 'image', {\n * \t\t\titems: editor.config.get( 'image.toolbar' ),\n * \t\t\tgetRelatedElement: getClosestSelectedImageWidget\n * \t\t} );\n * \t}\n * }\n * ```\n */ class WidgetToolbarRepository extends Plugin {\n /**\n\t * A map of toolbar definitions.\n\t */ _toolbarDefinitions = new Map();\n _balloon;\n /**\n\t * @inheritDoc\n\t */ static get requires() {\n return [\n ContextualBalloon\n ];\n }\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'WidgetToolbarRepository';\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const editor = this.editor;\n // Disables the default balloon toolbar for all widgets.\n if (editor.plugins.has('BalloonToolbar')) {\n const balloonToolbar = editor.plugins.get('BalloonToolbar');\n this.listenTo(balloonToolbar, 'show', (evt)=>{\n if (isWidgetSelected(editor.editing.view.document.selection)) {\n evt.stop();\n }\n }, {\n priority: 'high'\n });\n }\n this._balloon = this.editor.plugins.get('ContextualBalloon');\n this.on('change:isEnabled', ()=>{\n this._updateToolbarsVisibility();\n });\n this.listenTo(editor.ui, 'update', ()=>{\n this._updateToolbarsVisibility();\n });\n // UI#update is not fired after focus is back in editor, we need to check if balloon panel should be visible.\n this.listenTo(editor.ui.focusTracker, 'change:isFocused', ()=>{\n this._updateToolbarsVisibility();\n }, {\n priority: 'low'\n });\n }\n destroy() {\n super.destroy();\n for (const toolbarConfig of this._toolbarDefinitions.values()){\n toolbarConfig.view.destroy();\n }\n }\n /**\n\t * Registers toolbar in the WidgetToolbarRepository. It renders it in the `ContextualBalloon` based on the value of the invoked\n\t * `getRelatedElement` function. Toolbar items are gathered from `items` array.\n\t * The balloon's CSS class is by default `ck-toolbar-container` and may be override with the `balloonClassName` option.\n\t *\n\t * Note: This method should be called in the {@link module:core/plugin~PluginInterface#afterInit `Plugin#afterInit()`}\n\t * callback (or later) to make sure that the given toolbar items were already registered by other plugins.\n\t *\n\t * @param toolbarId An id for the toolbar. Used to\n\t * @param options.ariaLabel Label used by assistive technologies to describe this toolbar element.\n\t * @param options.items Array of toolbar items.\n\t * @param options.getRelatedElement Callback which returns an element the toolbar should be attached to.\n\t * @param options.balloonClassName CSS class for the widget balloon.\n\t */ register(toolbarId, { ariaLabel, items, getRelatedElement, balloonClassName = 'ck-toolbar-container' }) {\n // Trying to register a toolbar without any item.\n if (!items.length) {\n /**\n\t\t\t * When {@link module:widget/widgettoolbarrepository~WidgetToolbarRepository#register registering} a new widget toolbar, you\n\t\t\t * need to provide a non-empty array with the items that will be inserted into the toolbar.\n\t\t\t *\n\t\t\t * If you see this error when integrating the editor, you likely forgot to configure one of the widget toolbars.\n\t\t\t *\n\t\t\t * See for instance:\n\t\t\t *\n\t\t\t * * {@link module:table/tableconfig~TableConfig#contentToolbar `config.table.contentToolbar`}\n\t\t\t * * {@link module:image/imageconfig~ImageConfig#toolbar `config.image.toolbar`}\n\t\t\t *\n\t\t\t * @error widget-toolbar-no-items\n\t\t\t * @param toolbarId The id of the toolbar that has not been configured correctly.\n\t\t\t */ logWarning('widget-toolbar-no-items', {\n toolbarId\n });\n return;\n }\n const editor = this.editor;\n const t = editor.t;\n const toolbarView = new ToolbarView(editor.locale);\n toolbarView.ariaLabel = ariaLabel || t('Widget toolbar');\n if (this._toolbarDefinitions.has(toolbarId)) {\n /**\n\t\t\t * Toolbar with the given id was already added.\n\t\t\t *\n\t\t\t * @error widget-toolbar-duplicated\n\t\t\t * @param toolbarId Toolbar id.\n\t\t\t */ throw new CKEditorError('widget-toolbar-duplicated', this, {\n toolbarId\n });\n }\n const toolbarDefinition = {\n view: toolbarView,\n getRelatedElement,\n balloonClassName,\n itemsConfig: items,\n initialized: false\n };\n // Register the toolbar so it becomes available for Alt+F10 and Esc navigation.\n editor.ui.addToolbar(toolbarView, {\n isContextual: true,\n beforeFocus: ()=>{\n const relatedElement = getRelatedElement(editor.editing.view.document.selection);\n if (relatedElement) {\n this._showToolbar(toolbarDefinition, relatedElement);\n }\n },\n afterBlur: ()=>{\n this._hideToolbar(toolbarDefinition);\n }\n });\n this._toolbarDefinitions.set(toolbarId, toolbarDefinition);\n }\n /**\n\t * Iterates over stored toolbars and makes them visible or hidden.\n\t */ _updateToolbarsVisibility() {\n let maxRelatedElementDepth = 0;\n let deepestRelatedElement = null;\n let deepestToolbarDefinition = null;\n for (const definition of this._toolbarDefinitions.values()){\n const relatedElement = definition.getRelatedElement(this.editor.editing.view.document.selection);\n if (!this.isEnabled || !relatedElement) {\n if (this._isToolbarInBalloon(definition)) {\n this._hideToolbar(definition);\n }\n } else if (!this.editor.ui.focusTracker.isFocused) {\n if (this._isToolbarVisible(definition)) {\n this._hideToolbar(definition);\n }\n } else {\n const relatedElementDepth = relatedElement.getAncestors().length;\n // Many toolbars can express willingness to be displayed but they do not know about\n // each other. Figure out which toolbar is deepest in the view tree to decide which\n // should be displayed. For instance, if a selected image is inside a table cell, display\n // the ImageToolbar rather than the TableToolbar (#60).\n if (relatedElementDepth > maxRelatedElementDepth) {\n maxRelatedElementDepth = relatedElementDepth;\n deepestRelatedElement = relatedElement;\n deepestToolbarDefinition = definition;\n }\n }\n }\n if (deepestToolbarDefinition) {\n this._showToolbar(deepestToolbarDefinition, deepestRelatedElement);\n }\n }\n /**\n\t * Hides the given toolbar.\n\t */ _hideToolbar(toolbarDefinition) {\n this._balloon.remove(toolbarDefinition.view);\n this.stopListening(this._balloon, 'change:visibleView');\n }\n /**\n\t * Shows up the toolbar if the toolbar is not visible.\n\t * Otherwise, repositions the toolbar's balloon when toolbar's view is the most top view in balloon stack.\n\t *\n\t * It might happen here that the toolbar's view is under another view. Then do nothing as the other toolbar view\n\t * should be still visible after the {@link module:ui/editorui/editorui~EditorUI#event:update}.\n\t */ _showToolbar(toolbarDefinition, relatedElement) {\n if (this._isToolbarVisible(toolbarDefinition)) {\n repositionContextualBalloon(this.editor, relatedElement);\n } else if (!this._isToolbarInBalloon(toolbarDefinition)) {\n if (!toolbarDefinition.initialized) {\n toolbarDefinition.initialized = true;\n toolbarDefinition.view.fillFromConfig(toolbarDefinition.itemsConfig, this.editor.ui.componentFactory);\n }\n this._balloon.add({\n view: toolbarDefinition.view,\n position: getBalloonPositionData(this.editor, relatedElement),\n balloonClassName: toolbarDefinition.balloonClassName\n });\n // Update toolbar position each time stack with toolbar view is switched to visible.\n // This is in a case target element has changed when toolbar was in invisible stack\n // e.g. target image was wrapped by a block quote.\n // See https://github.com/ckeditor/ckeditor5-widget/issues/92.\n this.listenTo(this._balloon, 'change:visibleView', ()=>{\n for (const definition of this._toolbarDefinitions.values()){\n if (this._isToolbarVisible(definition)) {\n const relatedElement = definition.getRelatedElement(this.editor.editing.view.document.selection);\n repositionContextualBalloon(this.editor, relatedElement);\n }\n }\n });\n }\n }\n _isToolbarVisible(toolbar) {\n return this._balloon.visibleView === toolbar.view;\n }\n _isToolbarInBalloon(toolbar) {\n return this._balloon.hasView(toolbar.view);\n }\n}\nfunction repositionContextualBalloon(editor, relatedElement) {\n const balloon = editor.plugins.get('ContextualBalloon');\n const position = getBalloonPositionData(editor, relatedElement);\n balloon.updatePosition(position);\n}\nfunction getBalloonPositionData(editor, relatedElement) {\n const editingView = editor.editing.view;\n const defaultPositions = BalloonPanelView.defaultPositions;\n return {\n target: editingView.domConverter.mapViewToDom(relatedElement),\n positions: [\n defaultPositions.northArrowSouth,\n defaultPositions.northArrowSouthWest,\n defaultPositions.northArrowSouthEast,\n defaultPositions.southArrowNorth,\n defaultPositions.southArrowNorthWest,\n defaultPositions.southArrowNorthEast,\n defaultPositions.viewportStickyNorth\n ]\n };\n}\nfunction isWidgetSelected(selection) {\n const viewElement = selection.getSelectedElement();\n return !!(viewElement && isWidget(viewElement));\n}\n\n/**\n * Stores the internal state of a single resizable object.\n */ class ResizeState extends /* #__PURE__ */ ObservableMixin() {\n /**\n\t * The reference point of the resizer where the dragging started. It is used to measure the distance the user cursor\n\t * traveled, so how much the image should be enlarged.\n\t * This information is only known after the DOM was rendered, so it will be updated later.\n\t *\n\t * @internal\n\t */ _referenceCoordinates;\n /**\n\t * Resizer options.\n\t */ _options;\n /**\n\t * The original width (pixels) of the resized object when the resize process was started.\n\t *\n\t * @readonly\n\t */ _originalWidth;\n /**\n\t * The original height (pixels) of the resized object when the resize process was started.\n\t *\n\t * @readonly\n\t */ _originalHeight;\n /**\n\t * The original width (percents) of the resized object when the resize process was started.\n\t *\n\t * @readonly\n\t */ _originalWidthPercents;\n /**\n\t * A width to height ratio of the resized image.\n\t *\n\t * @readonly\n\t */ _aspectRatio;\n /**\n\t * @param options Resizer options.\n\t */ constructor(options){\n super();\n this.set('activeHandlePosition', null);\n this.set('proposedWidthPercents', null);\n this.set('proposedWidth', null);\n this.set('proposedHeight', null);\n this.set('proposedHandleHostWidth', null);\n this.set('proposedHandleHostHeight', null);\n this._options = options;\n this._referenceCoordinates = null;\n }\n /**\n\t * The original width (pixels) of the resized object when the resize process was started.\n\t */ get originalWidth() {\n return this._originalWidth;\n }\n /**\n\t * The original height (pixels) of the resized object when the resize process was started.\n\t */ get originalHeight() {\n return this._originalHeight;\n }\n /**\n\t * The original width (percents) of the resized object when the resize process was started.\n\t */ get originalWidthPercents() {\n return this._originalWidthPercents;\n }\n /**\n\t * A width to height ratio of the resized image.\n\t */ get aspectRatio() {\n return this._aspectRatio;\n }\n /**\n\t *\n\t * @param domResizeHandle The handle used to calculate the reference point.\n\t */ begin(domResizeHandle, domHandleHost, domResizeHost) {\n const clientRect = new Rect(domHandleHost);\n this.activeHandlePosition = getHandlePosition(domResizeHandle);\n this._referenceCoordinates = getAbsoluteBoundaryPoint(domHandleHost, getOppositePosition(this.activeHandlePosition));\n this._originalWidth = clientRect.width;\n this._originalHeight = clientRect.height;\n this._aspectRatio = clientRect.width / clientRect.height;\n const widthStyle = domResizeHost.style.width;\n if (widthStyle && widthStyle.match(/^\\d+(\\.\\d*)?%$/)) {\n this._originalWidthPercents = parseFloat(widthStyle);\n } else {\n this._originalWidthPercents = calculateResizeHostPercentageWidth(domResizeHost, clientRect);\n }\n }\n update(newSize) {\n this.proposedWidth = newSize.width;\n this.proposedHeight = newSize.height;\n this.proposedWidthPercents = newSize.widthPercents;\n this.proposedHandleHostWidth = newSize.handleHostWidth;\n this.proposedHandleHostHeight = newSize.handleHostHeight;\n }\n}\n/**\n * Returns coordinates of the top-left corner of an element, relative to the document's top-left corner.\n *\n * @param resizerPosition The position of the resize handle, e.g. `\"top-left\"`, `\"bottom-right\"`.\n */ function getAbsoluteBoundaryPoint(element, resizerPosition) {\n const elementRect = new Rect(element);\n const positionParts = resizerPosition.split('-');\n const ret = {\n x: positionParts[1] == 'right' ? elementRect.right : elementRect.left,\n y: positionParts[0] == 'bottom' ? elementRect.bottom : elementRect.top\n };\n ret.x += element.ownerDocument.defaultView.scrollX;\n ret.y += element.ownerDocument.defaultView.scrollY;\n return ret;\n}\n/**\n * @param resizerPosition The expected resizer position, like `\"top-left\"`, `\"bottom-right\"`.\n * @returns A prefixed HTML class name for the resizer element.\n */ function getResizerHandleClass(resizerPosition) {\n return `ck-widget__resizer__handle-${resizerPosition}`;\n}\n/**\n * Determines the position of a given resize handle.\n *\n * @param domHandle Handle used to calculate the reference point.\n * @returns Returns a string like `\"top-left\"` or `undefined` if not matched.\n */ function getHandlePosition(domHandle) {\n const resizerPositions = [\n 'top-left',\n 'top-right',\n 'bottom-right',\n 'bottom-left'\n ];\n for (const position of resizerPositions){\n if (domHandle.classList.contains(getResizerHandleClass(position))) {\n return position;\n }\n }\n}\n/**\n * @param position Like `\"top-left\"`.\n * @returns Inverted `position`, e.g. it returns `\"bottom-right\"` if `\"top-left\"` was given as `position`.\n */ function getOppositePosition(position) {\n const parts = position.split('-');\n const replacements = {\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left'\n };\n return `${replacements[parts[0]]}-${replacements[parts[1]]}`;\n}\n\n/**\n * A view displaying the proposed new element size during the resizing.\n */ class SizeView extends View {\n constructor(){\n super();\n const bind = this.bindTemplate;\n this.setTemplate({\n tag: 'div',\n attributes: {\n class: [\n 'ck',\n 'ck-size-view',\n bind.to('_viewPosition', (value)=>value ? `ck-orientation-${value}` : '')\n ],\n style: {\n display: bind.if('_isVisible', 'none', (visible)=>!visible)\n }\n },\n children: [\n {\n text: bind.to('_label')\n }\n ]\n });\n }\n /**\n\t * A method used for binding the `SizeView` instance properties to the `ResizeState` instance observable properties.\n\t *\n\t * @internal\n\t * @param options An object defining the resizer options, used for setting the proper size label.\n\t * @param resizeState The `ResizeState` class instance, used for keeping the `SizeView` state up to date.\n\t */ _bindToState(options, resizeState) {\n this.bind('_isVisible').to(resizeState, 'proposedWidth', resizeState, 'proposedHeight', (width, height)=>width !== null && height !== null);\n this.bind('_label').to(resizeState, 'proposedHandleHostWidth', resizeState, 'proposedHandleHostHeight', resizeState, 'proposedWidthPercents', (width, height, widthPercents)=>{\n if (options.unit === 'px') {\n return `${width}×${height}`;\n } else {\n return `${widthPercents}%`;\n }\n });\n this.bind('_viewPosition').to(resizeState, 'activeHandlePosition', resizeState, 'proposedHandleHostWidth', resizeState, 'proposedHandleHostHeight', // If the widget is too small to contain the size label, display the label above.\n (position, width, height)=>width < 50 || height < 50 ? 'above-center' : position);\n }\n /**\n\t * A method used for cleaning up. It removes the bindings and hides the view.\n\t *\n\t * @internal\n\t */ _dismiss() {\n this.unbind();\n this._isVisible = false;\n }\n}\n\n/**\n * Represents a resizer for a single resizable object.\n */ class Resizer extends /* #__PURE__ */ ObservableMixin() {\n /**\n\t * Stores the state of the resizable host geometry, such as the original width, the currently proposed height, etc.\n\t *\n\t * Note that a new state is created for each resize transaction.\n\t */ _state;\n /**\n\t * A view displaying the proposed new element size during the resizing.\n\t */ _sizeView;\n /**\n\t * Options passed to the {@link #constructor}.\n\t */ _options;\n /**\n\t * A wrapper that is controlled by the resizer. This is usually a widget element.\n\t */ _viewResizerWrapper = null;\n /**\n\t * The width of the resized {@link module:widget/widgetresize~ResizerOptions#viewElement viewElement} before the resizing started.\n\t */ _initialViewWidth;\n /**\n\t * @param options Resizer options.\n\t */ constructor(options){\n super();\n this._options = options;\n this.set('isEnabled', true);\n this.set('isSelected', false);\n this.bind('isVisible').to(this, 'isEnabled', this, 'isSelected', (isEnabled, isSelected)=>isEnabled && isSelected);\n this.decorate('begin');\n this.decorate('cancel');\n this.decorate('commit');\n this.decorate('updateSize');\n this.on('commit', (event)=>{\n // State might not be initialized yet. In this case, prevent further handling and make sure that the resizer is\n // cleaned up (#5195).\n if (!this.state.proposedWidth && !this.state.proposedWidthPercents) {\n this._cleanup();\n event.stop();\n }\n }, {\n priority: 'high'\n });\n }\n /**\n\t * Stores the state of the resizable host geometry, such as the original width, the currently proposed height, etc.\n\t *\n\t * Note that a new state is created for each resize transaction.\n\t */ get state() {\n return this._state;\n }\n /**\n\t * Makes resizer visible in the UI.\n\t */ show() {\n const editingView = this._options.editor.editing.view;\n editingView.change((writer)=>{\n writer.removeClass('ck-hidden', this._viewResizerWrapper);\n });\n }\n /**\n\t * Hides resizer in the UI.\n\t */ hide() {\n const editingView = this._options.editor.editing.view;\n editingView.change((writer)=>{\n writer.addClass('ck-hidden', this._viewResizerWrapper);\n });\n }\n /**\n\t * Attaches the resizer to the DOM.\n\t */ attach() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const that = this;\n const widgetElement = this._options.viewElement;\n const editingView = this._options.editor.editing.view;\n editingView.change((writer)=>{\n const viewResizerWrapper = writer.createUIElement('div', {\n class: 'ck ck-reset_all ck-widget__resizer'\n }, function(domDocument) {\n const domElement = this.toDomElement(domDocument);\n that._appendHandles(domElement);\n that._appendSizeUI(domElement);\n return domElement;\n });\n // Append the resizer wrapper to the widget's wrapper.\n writer.insert(writer.createPositionAt(widgetElement, 'end'), viewResizerWrapper);\n writer.addClass('ck-widget_with-resizer', widgetElement);\n this._viewResizerWrapper = viewResizerWrapper;\n if (!this.isVisible) {\n this.hide();\n }\n });\n this.on('change:isVisible', ()=>{\n if (this.isVisible) {\n this.show();\n this.redraw();\n } else {\n this.hide();\n }\n });\n }\n /**\n\t * Starts the resizing process.\n\t *\n\t * Creates a new {@link #state} for the current process.\n\t *\n\t * @fires begin\n\t * @param domResizeHandle Clicked handle.\n\t */ begin(domResizeHandle) {\n this._state = new ResizeState(this._options);\n this._sizeView._bindToState(this._options, this.state);\n this._initialViewWidth = this._options.viewElement.getStyle('width');\n this.state.begin(domResizeHandle, this._getHandleHost(), this._getResizeHost());\n }\n /**\n\t * Updates the proposed size based on `domEventData`.\n\t *\n\t * @fires updateSize\n\t */ updateSize(domEventData) {\n const newSize = this._proposeNewSize(domEventData);\n const editingView = this._options.editor.editing.view;\n editingView.change((writer)=>{\n const unit = this._options.unit || '%';\n const newWidth = (unit === '%' ? newSize.widthPercents : newSize.width) + unit;\n writer.setStyle('width', newWidth, this._options.viewElement);\n });\n // Get an actual image width, and:\n // * reflect this size to the resize wrapper\n // * apply this **real** size to the state\n const domHandleHost = this._getHandleHost();\n const domHandleHostRect = new Rect(domHandleHost);\n const handleHostWidth = Math.round(domHandleHostRect.width);\n const handleHostHeight = Math.round(domHandleHostRect.height);\n // Handle max-width limitation.\n const domResizeHostRect = new Rect(domHandleHost);\n newSize.width = Math.round(domResizeHostRect.width);\n newSize.height = Math.round(domResizeHostRect.height);\n this.redraw(domHandleHostRect);\n this.state.update({\n ...newSize,\n handleHostWidth,\n handleHostHeight\n });\n }\n /**\n\t * Applies the geometry proposed with the resizer.\n\t *\n\t * @fires commit\n\t */ commit() {\n const unit = this._options.unit || '%';\n const newValue = (unit === '%' ? this.state.proposedWidthPercents : this.state.proposedWidth) + unit;\n // Both cleanup and onCommit callback are very likely to make view changes. Ensure that it is made in a single step.\n this._options.editor.editing.view.change(()=>{\n this._cleanup();\n this._options.onCommit(newValue);\n });\n }\n /**\n\t * Cancels and rejects the proposed resize dimensions, hiding the UI.\n\t *\n\t * @fires cancel\n\t */ cancel() {\n this._cleanup();\n }\n /**\n\t * Destroys the resizer.\n\t */ destroy() {\n this.cancel();\n }\n /**\n\t * Redraws the resizer.\n\t *\n\t * @param handleHostRect Handle host rectangle might be given to improve performance.\n\t */ redraw(handleHostRect) {\n const domWrapper = this._domResizerWrapper;\n // Refresh only if resizer exists in the DOM.\n if (!existsInDom(domWrapper)) {\n return;\n }\n const widgetWrapper = domWrapper.parentElement;\n const handleHost = this._getHandleHost();\n const resizerWrapper = this._viewResizerWrapper;\n const currentDimensions = [\n resizerWrapper.getStyle('width'),\n resizerWrapper.getStyle('height'),\n resizerWrapper.getStyle('left'),\n resizerWrapper.getStyle('top')\n ];\n let newDimensions;\n if (widgetWrapper.isSameNode(handleHost)) {\n const clientRect = handleHostRect || new Rect(handleHost);\n newDimensions = [\n clientRect.width + 'px',\n clientRect.height + 'px',\n undefined,\n undefined\n ];\n } else {\n newDimensions = [\n handleHost.offsetWidth + 'px',\n handleHost.offsetHeight + 'px',\n handleHost.offsetLeft + 'px',\n handleHost.offsetTop + 'px'\n ];\n }\n // Make changes to the view only if the resizer should actually get new dimensions.\n // Otherwise, if View#change() was always called, this would cause EditorUI#update\n // loops because the WidgetResize plugin listens to EditorUI#update and updates\n // the resizer.\n // https://github.com/ckeditor/ckeditor5/issues/7633\n if (compareArrays(currentDimensions, newDimensions) !== 'same') {\n this._options.editor.editing.view.change((writer)=>{\n writer.setStyle({\n width: newDimensions[0],\n height: newDimensions[1],\n left: newDimensions[2],\n top: newDimensions[3]\n }, resizerWrapper);\n });\n }\n }\n containsHandle(domElement) {\n return this._domResizerWrapper.contains(domElement);\n }\n static isResizeHandle(domElement) {\n return domElement.classList.contains('ck-widget__resizer__handle');\n }\n /**\n\t * Cleans up the context state.\n\t */ _cleanup() {\n this._sizeView._dismiss();\n const editingView = this._options.editor.editing.view;\n editingView.change((writer)=>{\n writer.setStyle('width', this._initialViewWidth, this._options.viewElement);\n });\n }\n /**\n\t * Calculates the proposed size as the resize handles are dragged.\n\t *\n\t * @param domEventData Event data that caused the size update request. It should be used to calculate the proposed size.\n\t */ _proposeNewSize(domEventData) {\n const state = this.state;\n const currentCoordinates = extractCoordinates(domEventData);\n const isCentered = this._options.isCentered ? this._options.isCentered(this) : true;\n // Enlargement defines how much the resize host has changed in a given axis. Naturally it could be a negative number\n // meaning that it has been shrunk.\n //\n // +----------------+--+\n // | | |\n // | img | |\n // | /handle host | |\n // +----------------+ | ^\n // | | | - enlarge y\n // +-------------------+ v\n // \t\t\t\t\t<-->\n // \t\t\t\t\t enlarge x\n const enlargement = {\n x: state._referenceCoordinates.x - (currentCoordinates.x + state.originalWidth),\n y: currentCoordinates.y - state.originalHeight - state._referenceCoordinates.y\n };\n if (isCentered && state.activeHandlePosition.endsWith('-right')) {\n enlargement.x = currentCoordinates.x - (state._referenceCoordinates.x + state.originalWidth);\n }\n // Objects needs to be resized twice as much in horizontal axis if centered, since enlargement is counted from\n // one resized corner to your cursor. It needs to be duplicated to compensate for the other side too.\n if (isCentered) {\n enlargement.x *= 2;\n }\n // const resizeHost = this._getResizeHost();\n // The size proposed by the user. It does not consider the aspect ratio.\n let width = Math.abs(state.originalWidth + enlargement.x);\n let height = Math.abs(state.originalHeight + enlargement.y);\n // Dominant determination must take the ratio into account.\n const dominant = width / state.aspectRatio > height ? 'width' : 'height';\n if (dominant == 'width') {\n height = width / state.aspectRatio;\n } else {\n width = height * state.aspectRatio;\n }\n return {\n width: Math.round(width),\n height: Math.round(height),\n widthPercents: Math.min(Math.round(state.originalWidthPercents / state.originalWidth * width * 100) / 100, 100)\n };\n }\n /**\n\t * Obtains the resize host.\n\t *\n\t * Resize host is an object that receives dimensions which are the result of resizing.\n\t */ _getResizeHost() {\n const widgetWrapper = this._domResizerWrapper.parentElement;\n return this._options.getResizeHost(widgetWrapper);\n }\n /**\n\t * Obtains the handle host.\n\t *\n\t * Handle host is an object that the handles are aligned to.\n\t *\n\t * Handle host will not always be an entire widget itself. Take an image as an example. The image widget\n\t * contains an image and a caption. Only the image should be surrounded with handles.\n\t */ _getHandleHost() {\n const widgetWrapper = this._domResizerWrapper.parentElement;\n return this._options.getHandleHost(widgetWrapper);\n }\n /**\n\t * DOM container of the entire resize UI.\n\t *\n\t * Note that this property will have a value only after the element bound with the resizer is rendered\n\t * (otherwise `null`).\n\t */ get _domResizerWrapper() {\n return this._options.editor.editing.view.domConverter.mapViewToDom(this._viewResizerWrapper);\n }\n /**\n\t * Renders the resize handles in the DOM.\n\t *\n\t * @param domElement The resizer wrapper.\n\t */ _appendHandles(domElement) {\n const resizerPositions = [\n 'top-left',\n 'top-right',\n 'bottom-right',\n 'bottom-left'\n ];\n for (const currentPosition of resizerPositions){\n domElement.appendChild(new Template({\n tag: 'div',\n attributes: {\n class: `ck-widget__resizer__handle ${getResizerClass(currentPosition)}`\n }\n }).render());\n }\n }\n /**\n\t * Sets up the {@link #_sizeView} property and adds it to the passed `domElement`.\n\t */ _appendSizeUI(domElement) {\n this._sizeView = new SizeView();\n // Make sure icon#element is rendered before passing to appendChild().\n this._sizeView.render();\n domElement.appendChild(this._sizeView.element);\n }\n}\n/**\n * @param resizerPosition Expected resizer position like `\"top-left\"`, `\"bottom-right\"`.\n * @returns A prefixed HTML class name for the resizer element\n */ function getResizerClass(resizerPosition) {\n return `ck-widget__resizer__handle-${resizerPosition}`;\n}\nfunction extractCoordinates(event) {\n return {\n x: event.pageX,\n y: event.pageY\n };\n}\nfunction existsInDom(element) {\n return element && element.ownerDocument && element.ownerDocument.contains(element);\n}\n\n/**\n * The widget resize feature plugin.\n *\n * Use the {@link module:widget/widgetresize~WidgetResize#attachTo} method to create a resizer for the specified widget.\n */ class WidgetResize extends Plugin {\n /**\n\t * A map of resizers created using this plugin instance.\n\t */ _resizers = new Map();\n _observer;\n _redrawSelectedResizerThrottled;\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'WidgetResize';\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const editing = this.editor.editing;\n const domDocument = global.window.document;\n this.set('selectedResizer', null);\n this.set('_activeResizer', null);\n editing.view.addObserver(MouseObserver);\n this._observer = new (DomEmitterMixin())();\n this.listenTo(editing.view.document, 'mousedown', this._mouseDownListener.bind(this), {\n priority: 'high'\n });\n this._observer.listenTo(domDocument, 'mousemove', this._mouseMoveListener.bind(this));\n this._observer.listenTo(domDocument, 'mouseup', this._mouseUpListener.bind(this));\n this._redrawSelectedResizerThrottled = throttle(()=>this.redrawSelectedResizer(), 200);\n // Redrawing on any change of the UI of the editor (including content changes).\n this.editor.ui.on('update', this._redrawSelectedResizerThrottled);\n // Remove view widget-resizer mappings for widgets that have been removed from the document.\n // https://github.com/ckeditor/ckeditor5/issues/10156\n // https://github.com/ckeditor/ckeditor5/issues/10266\n this.editor.model.document.on('change', ()=>{\n for (const [viewElement, resizer] of this._resizers){\n if (!viewElement.isAttached()) {\n this._resizers.delete(viewElement);\n resizer.destroy();\n }\n }\n }, {\n priority: 'lowest'\n });\n // Resizers need to be redrawn upon window resize, because new window might shrink resize host.\n this._observer.listenTo(global.window, 'resize', this._redrawSelectedResizerThrottled);\n const viewSelection = this.editor.editing.view.document.selection;\n viewSelection.on('change', ()=>{\n const selectedElement = viewSelection.getSelectedElement();\n const resizer = this.getResizerByViewElement(selectedElement) || null;\n if (resizer) {\n this.select(resizer);\n } else {\n this.deselect();\n }\n });\n }\n /**\n\t * Redraws the selected resizer if there is any selected resizer and if it is visible.\n\t */ redrawSelectedResizer() {\n if (this.selectedResizer && this.selectedResizer.isVisible) {\n this.selectedResizer.redraw();\n }\n }\n /**\n\t * @inheritDoc\n\t */ destroy() {\n super.destroy();\n this._observer.stopListening();\n for (const resizer of this._resizers.values()){\n resizer.destroy();\n }\n this._redrawSelectedResizerThrottled.cancel();\n }\n /**\n\t * Marks resizer as selected.\n\t */ select(resizer) {\n this.deselect();\n this.selectedResizer = resizer;\n this.selectedResizer.isSelected = true;\n }\n /**\n\t * Deselects currently set resizer.\n\t */ deselect() {\n if (this.selectedResizer) {\n this.selectedResizer.isSelected = false;\n }\n this.selectedResizer = null;\n }\n /**\n\t * @param options Resizer options.\n\t */ attachTo(options) {\n const resizer = new Resizer(options);\n const plugins = this.editor.plugins;\n resizer.attach();\n if (plugins.has('WidgetToolbarRepository')) {\n // Hiding widget toolbar to improve the performance\n // (https://github.com/ckeditor/ckeditor5-widget/pull/112#issuecomment-564528765).\n const widgetToolbarRepository = plugins.get('WidgetToolbarRepository');\n resizer.on('begin', ()=>{\n widgetToolbarRepository.forceDisabled('resize');\n }, {\n priority: 'lowest'\n });\n resizer.on('cancel', ()=>{\n widgetToolbarRepository.clearForceDisabled('resize');\n }, {\n priority: 'highest'\n });\n resizer.on('commit', ()=>{\n widgetToolbarRepository.clearForceDisabled('resize');\n }, {\n priority: 'highest'\n });\n }\n this._resizers.set(options.viewElement, resizer);\n const viewSelection = this.editor.editing.view.document.selection;\n const selectedElement = viewSelection.getSelectedElement();\n // If the element the resizer is created for is currently focused, it should become visible.\n if (this.getResizerByViewElement(selectedElement) == resizer) {\n this.select(resizer);\n }\n return resizer;\n }\n /**\n\t * Returns a resizer created for a given view element (widget element).\n\t *\n\t * @param viewElement View element associated with the resizer.\n\t */ getResizerByViewElement(viewElement) {\n return this._resizers.get(viewElement);\n }\n /**\n\t * Returns a resizer that contains a given resize handle.\n\t */ _getResizerByHandle(domResizeHandle) {\n for (const resizer of this._resizers.values()){\n if (resizer.containsHandle(domResizeHandle)) {\n return resizer;\n }\n }\n }\n /**\n\t * @param domEventData Native DOM event.\n\t */ _mouseDownListener(event, domEventData) {\n const resizeHandle = domEventData.domTarget;\n if (!Resizer.isResizeHandle(resizeHandle)) {\n return;\n }\n this._activeResizer = this._getResizerByHandle(resizeHandle) || null;\n if (this._activeResizer) {\n this._activeResizer.begin(resizeHandle);\n // Do not call other events when resizing. See: #6755.\n event.stop();\n domEventData.preventDefault();\n }\n }\n /**\n\t * @param domEventData Native DOM event.\n\t */ _mouseMoveListener(event, domEventData) {\n if (this._activeResizer) {\n this._activeResizer.updateSize(domEventData);\n }\n }\n _mouseUpListener() {\n if (this._activeResizer) {\n this._activeResizer.commit();\n this._activeResizer = null;\n }\n }\n}\n\nexport { WIDGET_CLASS_NAME, WIDGET_SELECTED_CLASS_NAME, Widget, WidgetResize, WidgetToolbarRepository, WidgetTypeAround, calculateResizeHostAncestorWidth, calculateResizeHostPercentageWidth, findOptimalInsertionRange, getLabel, isWidget, setHighlightHandling, setLabel, toWidget, toWidgetEditable, viewToModelPositionOutsideModelElement };\n//# sourceMappingURL=index.js.map\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/highlightstack\n */\n\nimport { EmitterMixin, type ArrayOrItem } from '@ckeditor/ckeditor5-utils';\n\nimport type { DowncastWriter, HighlightDescriptor } from '@ckeditor/ckeditor5-engine';\n\n/**\n * Class used to handle the correct order of highlights on elements.\n *\n * When different highlights are applied to same element the correct order should be preserved:\n *\n * * highlight with highest priority should be applied,\n * * if two highlights have same priority - sort by CSS class provided in\n * {@link module:engine/conversion/downcasthelpers~HighlightDescriptor}.\n *\n * This way, highlight will be applied with the same rules it is applied on texts.\n */\nexport default class HighlightStack extends /* #__PURE__ */ EmitterMixin() {\n\tprivate readonly _stack: Array<HighlightDescriptor> = [];\n\n\t/**\n\t * Adds highlight descriptor to the stack.\n\t *\n\t * @fires change:top\n\t */\n\tpublic add( descriptor: HighlightDescriptor, writer: DowncastWriter ): void {\n\t\tconst stack = this._stack;\n\n\t\t// Save top descriptor and insert new one. If top is changed - fire event.\n\t\tconst oldTop = stack[ 0 ];\n\t\tthis._insertDescriptor( descriptor );\n\t\tconst newTop = stack[ 0 ];\n\n\t\t// When new object is at the top and stores different information.\n\t\tif ( oldTop !== newTop && !compareDescriptors( oldTop, newTop ) ) {\n\t\t\tthis.fire<HighlightStackChangeEvent>( 'change:top', {\n\t\t\t\toldDescriptor: oldTop,\n\t\t\t\tnewDescriptor: newTop,\n\t\t\t\twriter\n\t\t\t} );\n\t\t}\n\t}\n\n\t/**\n\t * Removes highlight descriptor from the stack.\n\t *\n\t * @fires change:top\n\t * @param id Id of the descriptor to remove.\n\t */\n\tpublic remove( id: string, writer: DowncastWriter ): void {\n\t\tconst stack = this._stack;\n\n\t\tconst oldTop = stack[ 0 ];\n\t\tthis._removeDescriptor( id );\n\t\tconst newTop = stack[ 0 ];\n\n\t\t// When new object is at the top and stores different information.\n\t\tif ( oldTop !== newTop && !compareDescriptors( oldTop, newTop ) ) {\n\t\t\tthis.fire<HighlightStackChangeEvent>( 'change:top', {\n\t\t\t\toldDescriptor: oldTop,\n\t\t\t\tnewDescriptor: newTop,\n\t\t\t\twriter\n\t\t\t} );\n\t\t}\n\t}\n\n\t/**\n\t * Inserts a given descriptor in correct place in the stack. It also takes care about updating information\n\t * when descriptor with same id is already present.\n\t */\n\tprivate _insertDescriptor( descriptor: HighlightDescriptor ) {\n\t\tconst stack = this._stack;\n\t\tconst index = stack.findIndex( item => item.id === descriptor.id );\n\n\t\t// Inserting exact same descriptor - do nothing.\n\t\tif ( compareDescriptors( descriptor, stack[ index ] ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If descriptor with same id but with different information is on the stack - remove it.\n\t\tif ( index > -1 ) {\n\t\t\tstack.splice( index, 1 );\n\t\t}\n\n\t\t// Find correct place to insert descriptor in the stack.\n\t\t// It has different information (for example priority) so it must be re-inserted in correct place.\n\t\tlet i = 0;\n\n\t\twhile ( stack[ i ] && shouldABeBeforeB( stack[ i ], descriptor ) ) {\n\t\t\ti++;\n\t\t}\n\n\t\tstack.splice( i, 0, descriptor );\n\t}\n\n\t/**\n\t * Removes descriptor with given id from the stack.\n\t *\n\t * @param id Descriptor's id.\n\t */\n\tprivate _removeDescriptor( id: string ) {\n\t\tconst stack = this._stack;\n\t\tconst index = stack.findIndex( item => item.id === id );\n\n\t\t// If descriptor with same id is on the list - remove it.\n\t\tif ( index > -1 ) {\n\t\t\tstack.splice( index, 1 );\n\t\t}\n\t}\n}\n\n/**\n * Compares two descriptors by checking their priority and class list.\n *\n * @returns Returns true if both descriptors are defined and have same priority and classes.\n */\nfunction compareDescriptors( a: HighlightDescriptor, b: HighlightDescriptor ) {\n\treturn a && b && a.priority == b.priority && classesToString( a.classes ) == classesToString( b.classes );\n}\n\n/**\n * Checks whenever first descriptor should be placed in the stack before second one.\n */\nfunction shouldABeBeforeB( a: HighlightDescriptor, b: HighlightDescriptor ) {\n\tif ( a.priority! > b.priority! ) {\n\t\treturn true;\n\t} else if ( a.priority! < b.priority! ) {\n\t\treturn false;\n\t}\n\n\t// When priorities are equal and names are different - use classes to compare.\n\treturn classesToString( a.classes ) > classesToString( b.classes );\n}\n\n/**\n * Converts CSS classes passed with {@link module:engine/conversion/downcasthelpers~HighlightDescriptor} to\n * sorted string.\n */\nfunction classesToString( classes: ArrayOrItem<string> ) {\n\treturn Array.isArray( classes ) ? classes.sort().join( ',' ) : classes;\n}\n\n/**\n * Fired when top element on {@link module:widget/highlightstack~HighlightStack} has been changed\n *\n * @eventName ~HighlightStack#change:top\n */\nexport type HighlightStackChangeEvent = {\n\tname: 'change' | 'change:top';\n\targs: [ HighlightStackChangeEventData ];\n};\n\n/**\n * Additional information about the change.\n */\nexport type HighlightStackChangeEventData = {\n\n\t/**\n\t * Old highlight descriptor. It will be `undefined` when first descriptor is added to the stack.\n\t */\n\toldDescriptor: HighlightDescriptor;\n\n\t/**\n\t * New highlight descriptor. It will be `undefined` when last descriptor is removed from the stack.\n\t */\n\tnewDescriptor: HighlightDescriptor;\n\n\t/**\n\t * View writer that can be used to modify element.\n\t */\n\twriter: DowncastWriter;\n};\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/utils\n */\n\nimport {\n\tRect,\n\tCKEditorError,\n\ttoArray,\n\ttype ObservableChangeEvent,\n\ttype GetCallback\n} from '@ckeditor/ckeditor5-utils';\n\nimport {\n\ttype AddHighlightCallback,\n\ttype HighlightDescriptor,\n\ttype RemoveHighlightCallback,\n\ttype MapperViewToModelPositionEvent,\n\ttype DocumentSelection,\n\ttype DowncastWriter,\n\ttype Model,\n\ttype Range,\n\ttype Selection,\n\ttype ViewContainerElement,\n\ttype ViewEditableElement,\n\ttype ViewElement,\n\ttype ViewTypeCheckable\n} from '@ckeditor/ckeditor5-engine';\n\nimport { IconView } from '@ckeditor/ckeditor5-ui';\n\nimport HighlightStack, { type HighlightStackChangeEvent } from './highlightstack.js';\nimport { getTypeAroundFakeCaretPosition } from './widgettypearound/utils.js';\n\nimport dragHandleIcon from '../theme/icons/drag-handle.svg';\n\n/**\n * CSS class added to each widget element.\n */\nexport const WIDGET_CLASS_NAME = 'ck-widget';\n\n/**\n * CSS class added to currently selected widget element.\n */\nexport const WIDGET_SELECTED_CLASS_NAME = 'ck-widget_selected';\n\n/**\n * Returns `true` if given {@link module:engine/view/node~Node} is an {@link module:engine/view/element~Element} and a widget.\n */\nexport function isWidget( node: ViewTypeCheckable ): boolean {\n\tif ( !node.is( 'element' ) ) {\n\t\treturn false;\n\t}\n\n\treturn !!node.getCustomProperty( 'widget' );\n}\n\n/**\n * Converts the given {@link module:engine/view/element~Element} to a widget in the following way:\n *\n * * sets the `contenteditable` attribute to `\"false\"`,\n * * adds the `ck-widget` CSS class,\n * * adds a custom {@link module:engine/view/element~Element#getFillerOffset `getFillerOffset()`} method returning `null`,\n * * adds a custom property allowing to recognize widget elements by using {@link ~isWidget `isWidget()`},\n * * implements the {@link ~setHighlightHandling view highlight on widgets}.\n *\n * This function needs to be used in conjunction with\n * {@link module:engine/conversion/downcasthelpers~DowncastHelpers downcast conversion helpers}\n * like {@link module:engine/conversion/downcasthelpers~DowncastHelpers#elementToElement `elementToElement()`}.\n * Moreover, typically you will want to use `toWidget()` only for `editingDowncast`, while keeping the `dataDowncast` clean.\n *\n * For example, in order to convert a `<widget>` model element to `<div class=\"widget\">` in the view, you can define\n * such converters:\n *\n * ```ts\n * editor.conversion.for( 'editingDowncast' )\n * \t.elementToElement( {\n * \t\tmodel: 'widget',\n * \t\tview: ( modelItem, { writer } ) => {\n * \t\t\tconst div = writer.createContainerElement( 'div', { class: 'widget' } );\n *\n * \t\t\treturn toWidget( div, writer, { label: 'some widget' } );\n * \t\t}\n * \t} );\n *\n * editor.conversion.for( 'dataDowncast' )\n * \t.elementToElement( {\n * \t\tmodel: 'widget',\n * \t\tview: ( modelItem, { writer } ) => {\n * \t\t\treturn writer.createContainerElement( 'div', { class: 'widget' } );\n * \t\t}\n * \t} );\n * ```\n *\n * See the full source code of the widget (with a nested editable) schema definition and converters in\n * [this sample](https://github.com/ckeditor/ckeditor5-widget/blob/master/tests/manual/widget-with-nestededitable.js).\n *\n * @param options Additional options.\n * @param options.label Element's label provided to the {@link ~setLabel} function. It can be passed as\n * a plain string or a function returning a string. It represents the widget for assistive technologies (like screen readers).\n * @param options.hasSelectionHandle If `true`, the widget will have a selection handle added.\n * @returns Returns the same element.\n */\nexport function toWidget(\n\telement: ViewElement,\n\twriter: DowncastWriter,\n\toptions: {\n\t\tlabel?: string | ( () => string );\n\t\thasSelectionHandle?: boolean;\n\t} = {}\n): ViewElement {\n\tif ( !element.is( 'containerElement' ) ) {\n\t\t/**\n\t\t * The element passed to `toWidget()` must be a {@link module:engine/view/containerelement~ContainerElement}\n\t\t * instance.\n\t\t *\n\t\t * @error widget-to-widget-wrong-element-type\n\t\t * @param element The view element passed to `toWidget()`.\n\t\t */\n\t\tthrow new CKEditorError(\n\t\t\t'widget-to-widget-wrong-element-type',\n\t\t\tnull,\n\t\t\t{ element }\n\t\t);\n\t}\n\n\twriter.setAttribute( 'contenteditable', 'false', element );\n\n\twriter.addClass( WIDGET_CLASS_NAME, element );\n\twriter.setCustomProperty( 'widget', true, element );\n\telement.getFillerOffset = getFillerOffset;\n\n\twriter.setCustomProperty( 'widgetLabel', [], element );\n\n\tif ( options.label ) {\n\t\tsetLabel( element, options.label );\n\t}\n\n\tif ( options.hasSelectionHandle ) {\n\t\taddSelectionHandle( element, writer );\n\t}\n\n\tsetHighlightHandling( element, writer );\n\n\treturn element;\n}\n\n/**\n * Default handler for adding a highlight on a widget.\n * It adds CSS class and attributes basing on the given highlight descriptor.\n */\nfunction addHighlight( element: ViewElement, descriptor: HighlightDescriptor, writer: DowncastWriter ) {\n\tif ( descriptor.classes ) {\n\t\twriter.addClass( toArray( descriptor.classes ), element );\n\t}\n\n\tif ( descriptor.attributes ) {\n\t\tfor ( const key in descriptor.attributes ) {\n\t\t\twriter.setAttribute( key, descriptor.attributes[ key ], element );\n\t\t}\n\t}\n}\n\n/**\n * Default handler for removing a highlight from a widget.\n * It removes CSS class and attributes basing on the given highlight descriptor.\n */\nfunction removeHighlight( element: ViewElement, descriptor: HighlightDescriptor, writer: DowncastWriter ) {\n\tif ( descriptor.classes ) {\n\t\twriter.removeClass( toArray( descriptor.classes ), element );\n\t}\n\n\tif ( descriptor.attributes ) {\n\t\tfor ( const key in descriptor.attributes ) {\n\t\t\twriter.removeAttribute( key, element );\n\t\t}\n\t}\n}\n\n/**\n * Sets highlight handling methods. Uses {@link module:widget/highlightstack~HighlightStack} to\n * properly determine which highlight descriptor should be used at given time.\n */\nexport function setHighlightHandling(\n\telement: ViewElement,\n\twriter: DowncastWriter,\n\tadd: ( element: ViewElement, descriptor: HighlightDescriptor, writer: DowncastWriter ) => void = addHighlight,\n\tremove: ( element: ViewElement, descriptor: HighlightDescriptor, writer: DowncastWriter ) => void = removeHighlight\n): void {\n\tconst stack = new HighlightStack();\n\n\tstack.on<HighlightStackChangeEvent>( 'change:top', ( evt, data ) => {\n\t\tif ( data.oldDescriptor ) {\n\t\t\tremove( element, data.oldDescriptor, data.writer );\n\t\t}\n\n\t\tif ( data.newDescriptor ) {\n\t\t\tadd( element, data.newDescriptor, data.writer );\n\t\t}\n\t} );\n\n\tconst addHighlightCallback: AddHighlightCallback = ( element, descriptor, writer ) => stack.add( descriptor, writer );\n\tconst removeHighlightCallback: RemoveHighlightCallback = ( element, id, writer ) => stack.remove( id, writer );\n\n\twriter.setCustomProperty( 'addHighlight', addHighlightCallback, element );\n\twriter.setCustomProperty( 'removeHighlight', removeHighlightCallback, element );\n}\n\n/**\n * Sets label for given element.\n * It can be passed as a plain string or a function returning a string. Function will be called each time label is retrieved by\n * {@link ~getLabel `getLabel()`}.\n */\nexport function setLabel( element: ViewElement, labelOrCreator: string | ( () => string ) ): void {\n\tconst widgetLabel = element.getCustomProperty( 'widgetLabel' ) as Array<string | ( () => string )>;\n\n\twidgetLabel.push( labelOrCreator );\n}\n\n/**\n * Returns the label of the provided element.\n */\nexport function getLabel( element: ViewElement ): string {\n\tconst widgetLabel = element.getCustomProperty( 'widgetLabel' ) as Array<string | ( () => string )>;\n\n\treturn widgetLabel.reduce( ( prev: string, current: string | ( () => string ) ) => {\n\t\tif ( typeof current === 'function' ) {\n\t\t\treturn prev ? prev + '. ' + current() : current();\n\t\t} else {\n\t\t\treturn prev ? prev + '. ' + current : current;\n\t\t}\n\t}, '' );\n}\n\n/**\n * Adds functionality to the provided {@link module:engine/view/editableelement~EditableElement} to act as a widget's editable:\n *\n * * sets the `contenteditable` attribute to `true` when {@link module:engine/view/editableelement~EditableElement#isReadOnly} is `false`,\n * otherwise sets it to `false`,\n * * adds the `ck-editor__editable` and `ck-editor__nested-editable` CSS classes,\n * * adds the `ck-editor__nested-editable_focused` CSS class when the editable is focused and removes it when it is blurred.\n * * implements the {@link ~setHighlightHandling view highlight on widget's editable}.\n *\n * Similarly to {@link ~toWidget `toWidget()`} this function should be used in `editingDowncast` only and it is usually\n * used together with {@link module:engine/conversion/downcasthelpers~DowncastHelpers#elementToElement `elementToElement()`}.\n *\n * For example, in order to convert a `<nested>` model element to `<div class=\"nested\">` in the view, you can define\n * such converters:\n *\n * ```ts\n * editor.conversion.for( 'editingDowncast' )\n * \t.elementToElement( {\n * \t\tmodel: 'nested',\n * \t\tview: ( modelItem, { writer } ) => {\n * \t\t\tconst div = writer.createEditableElement( 'div', { class: 'nested' } );\n *\n * \t\t\treturn toWidgetEditable( nested, writer, { label: 'label for editable' } );\n * \t\t}\n * \t} );\n *\n * editor.conversion.for( 'dataDowncast' )\n * \t.elementToElement( {\n * \t\tmodel: 'nested',\n * \t\tview: ( modelItem, { writer } ) => {\n * \t\t\treturn writer.createContainerElement( 'div', { class: 'nested' } );\n * \t\t}\n * \t} );\n * ```\n *\n * See the full source code of the widget (with nested editable) schema definition and converters in\n * [this sample](https://github.com/ckeditor/ckeditor5-widget/blob/master/tests/manual/widget-with-nestededitable.js).\n *\n * @param options Additional options.\n * @param options.label Editable's label used by assistive technologies (e.g. screen readers).\n * @returns Returns the same element that was provided in the `editable` parameter\n */\nexport function toWidgetEditable(\n\teditable: ViewEditableElement,\n\twriter: DowncastWriter,\n\toptions: {\n\t\tlabel?: string;\n\t} = {}\n): ViewEditableElement {\n\twriter.addClass( [ 'ck-editor__editable', 'ck-editor__nested-editable' ], editable );\n\n\twriter.setAttribute( 'role', 'textbox', editable );\n\twriter.setAttribute( 'tabindex', '-1', editable );\n\n\tif ( options.label ) {\n\t\twriter.setAttribute( 'aria-label', options.label, editable );\n\t}\n\n\t// Set initial contenteditable value.\n\twriter.setAttribute( 'contenteditable', editable.isReadOnly ? 'false' : 'true', editable );\n\n\t// Bind the contenteditable property to element#isReadOnly.\n\teditable.on<ObservableChangeEvent<boolean>>( 'change:isReadOnly', ( evt, property, is ) => {\n\t\twriter.setAttribute( 'contenteditable', is ? 'false' : 'true', editable );\n\t} );\n\n\teditable.on<ObservableChangeEvent<boolean>>( 'change:isFocused', ( evt, property, is ) => {\n\t\tif ( is ) {\n\t\t\twriter.addClass( 'ck-editor__nested-editable_focused', editable );\n\t\t} else {\n\t\t\twriter.removeClass( 'ck-editor__nested-editable_focused', editable );\n\t\t}\n\t} );\n\n\tsetHighlightHandling( editable, writer );\n\n\treturn editable;\n}\n\n/**\n * Returns a model range which is optimal (in terms of UX) for inserting a widget block.\n *\n * For instance, if a selection is in the middle of a paragraph, the collapsed range before this paragraph\n * will be returned so that it is not split. If the selection is at the end of a paragraph,\n * the collapsed range after this paragraph will be returned.\n *\n * Note: If the selection is placed in an empty block, the range in that block will be returned. If that range\n * is then passed to {@link module:engine/model/model~Model#insertContent}, the block will be fully replaced\n * by the inserted widget block.\n *\n * @param selection The selection based on which the insertion position should be calculated.\n * @param model Model instance.\n * @returns The optimal range.\n */\nexport function findOptimalInsertionRange(\n\tselection: Selection | DocumentSelection,\n\tmodel: Model\n): Range {\n\tconst selectedElement = selection.getSelectedElement();\n\n\tif ( selectedElement ) {\n\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( selection );\n\n\t\t// If the WidgetTypeAround \"fake caret\" is displayed, use its position for the insertion\n\t\t// to provide the most predictable UX (https://github.com/ckeditor/ckeditor5/issues/7438).\n\t\tif ( typeAroundFakeCaretPosition ) {\n\t\t\treturn model.createRange( model.createPositionAt( selectedElement, typeAroundFakeCaretPosition ) );\n\t\t}\n\t}\n\n\treturn model.schema.findOptimalInsertionRange( selection );\n}\n\n/**\n * A util to be used in order to map view positions to correct model positions when implementing a widget\n * which renders non-empty view element for an empty model element.\n *\n * For example:\n *\n * ```\n * // Model:\n * <placeholder type=\"name\"></placeholder>\n *\n * // View:\n * <span class=\"placeholder\">name</span>\n * ```\n *\n * In such case, view positions inside `<span>` cannot be correctly mapped to the model (because the model element is empty).\n * To handle mapping positions inside `<span class=\"placeholder\">` to the model use this util as follows:\n *\n * ```ts\n * editor.editing.mapper.on(\n * \t'viewToModelPosition',\n * \tviewToModelPositionOutsideModelElement( model, viewElement => viewElement.hasClass( 'placeholder' ) )\n * );\n * ```\n *\n * The callback will try to map the view offset of selection to an expected model position.\n *\n * 1. When the position is at the end (or in the middle) of the inline widget:\n *\n * ```\n * // View:\n * <p>foo <span class=\"placeholder\">name|</span> bar</p>\n *\n * // Model:\n * <paragraph>foo <placeholder type=\"name\"></placeholder>| bar</paragraph>\n * ```\n *\n * 2. When the position is at the beginning of the inline widget:\n *\n * ```\n * // View:\n * <p>foo <span class=\"placeholder\">|name</span> bar</p>\n *\n * // Model:\n * <paragraph>foo |<placeholder type=\"name\"></placeholder> bar</paragraph>\n * ```\n *\n * @param model Model instance on which the callback operates.\n * @param viewElementMatcher Function that is passed a view element and should return `true` if the custom mapping\n * should be applied to the given view element.\n */\nexport function viewToModelPositionOutsideModelElement(\n\tmodel: Model,\n\tviewElementMatcher: ( element: ViewElement ) => boolean\n): GetCallback<MapperViewToModelPositionEvent> {\n\treturn ( evt, data ) => {\n\t\tconst { mapper, viewPosition } = data;\n\n\t\tconst viewParent = mapper.findMappedViewAncestor( viewPosition );\n\n\t\tif ( !viewElementMatcher( viewParent ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst modelParent = mapper.toModelElement( viewParent );\n\n\t\tdata.modelPosition = model.createPositionAt( modelParent!, viewPosition.isAtStart ? 'before' : 'after' );\n\t};\n}\n\n/**\n * Default filler offset function applied to all widget elements.\n */\nfunction getFillerOffset() {\n\treturn null;\n}\n\n/**\n * Adds a drag handle to the widget.\n */\nfunction addSelectionHandle( widgetElement: ViewContainerElement, writer: DowncastWriter ) {\n\tconst selectionHandle = writer.createUIElement( 'div', { class: 'ck ck-widget__selection-handle' }, function( domDocument ) {\n\t\tconst domElement = this.toDomElement( domDocument );\n\n\t\t// Use the IconView from the ui library.\n\t\tconst icon = new IconView();\n\t\ticon.set( 'content', dragHandleIcon );\n\n\t\t// Render the icon view right away to append its #element to the selectionHandle DOM element.\n\t\ticon.render();\n\n\t\tdomElement.appendChild( icon.element! );\n\n\t\treturn domElement;\n\t} );\n\n\t// Append the selection handle into the widget wrapper.\n\twriter.insert( writer.createPositionAt( widgetElement, 0 ), selectionHandle );\n\twriter.addClass( [ 'ck-widget_with-selection-handle' ], widgetElement );\n}\n\n/**\n * Starting from a DOM resize host element (an element that receives dimensions as a result of resizing),\n * this helper returns the width of the found ancestor element.\n *\n *\t* It searches up to 5 levels of ancestors only.\n *\n * @param domResizeHost Resize host DOM element that receives dimensions as a result of resizing.\n * @returns Width of ancestor element in pixels or 0 if no ancestor with a computed width has been found.\n */\nexport function calculateResizeHostAncestorWidth( domResizeHost: HTMLElement ): number {\n\tconst getElementComputedWidth = ( element: HTMLElement ) => {\n\t\tconst { width, paddingLeft, paddingRight } = element.ownerDocument.defaultView!.getComputedStyle( element! );\n\n\t\treturn parseFloat( width ) - ( parseFloat( paddingLeft ) || 0 ) - ( parseFloat( paddingRight ) || 0 );\n\t};\n\n\tconst domResizeHostParent = domResizeHost.parentElement;\n\n\tif ( !domResizeHostParent ) {\n\t\treturn 0;\n\t}\n\n\t// Need to use computed style as it properly excludes parent's paddings from the returned value.\n\tlet parentWidth = getElementComputedWidth( domResizeHostParent! );\n\n\t// Sometimes parent width cannot be accessed. If that happens we should go up in the elements tree\n\t// and try to get width from next ancestor.\n\t// https://github.com/ckeditor/ckeditor5/issues/10776\n\tconst ancestorLevelLimit = 5;\n\tlet currentLevel = 0;\n\n\tlet checkedElement = domResizeHostParent!;\n\n\twhile ( isNaN( parentWidth ) ) {\n\t\tcheckedElement = checkedElement.parentElement!;\n\n\t\tif ( ++currentLevel > ancestorLevelLimit ) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tparentWidth = getElementComputedWidth( checkedElement );\n\t}\n\n\treturn parentWidth;\n}\n\n/**\n * Calculates a relative width of a `domResizeHost` compared to its ancestor in percents.\n *\n * @param domResizeHost Resize host DOM element.\n * @returns Percentage value between 0 and 100.\n */\nexport function calculateResizeHostPercentageWidth(\n\tdomResizeHost: HTMLElement,\n\tresizeHostRect: Rect = new Rect( domResizeHost )\n): number {\n\tconst parentWidth = calculateResizeHostAncestorWidth( domResizeHost );\n\n\tif ( !parentWidth ) {\n\t\treturn 0;\n\t}\n\n\treturn resizeHostRect.width / parentWidth * 100;\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/widgettypearound/utils\n */\n\nimport { isWidget } from '../utils.js';\n\nimport type {\n\tDocumentSelection,\n\tDomConverter,\n\tElement,\n\tSchema,\n\tSelection,\n\tViewElement\n} from '@ckeditor/ckeditor5-engine';\n\n/**\n * The name of the type around model selection attribute responsible for\n * displaying a fake caret next to a selected widget.\n */\nexport const TYPE_AROUND_SELECTION_ATTRIBUTE = 'widget-type-around';\n\n/**\n * Checks if an element is a widget that qualifies to get the widget type around UI.\n */\nexport function isTypeAroundWidget( viewElement: ViewElement | undefined, modelElement: Element, schema: Schema ): boolean {\n\treturn !!viewElement && isWidget( viewElement ) && !schema.isInline( modelElement );\n}\n\n/**\n * For the passed HTML element, this helper finds the closest widget type around button ancestor.\n */\nexport function getClosestTypeAroundDomButton( domElement: HTMLElement ): HTMLElement | null {\n\treturn domElement.closest( '.ck-widget__type-around__button' );\n}\n\n/**\n * For the passed widget type around button element, this helper determines at which position\n * the paragraph would be inserted into the content if, for instance, the button was\n * clicked by the user.\n *\n * @returns The position of the button.\n */\nexport function getTypeAroundButtonPosition( domElement: HTMLElement ): 'before' | 'after' {\n\treturn domElement.classList.contains( 'ck-widget__type-around__button_before' ) ? 'before' : 'after';\n}\n\n/**\n * For the passed HTML element, this helper returns the closest view widget ancestor.\n */\nexport function getClosestWidgetViewElement( domElement: HTMLElement, domConverter: DomConverter ): ViewElement {\n\tconst widgetDomElement = domElement.closest( '.ck-widget' );\n\n\treturn domConverter.mapDomToView( widgetDomElement as any ) as ViewElement;\n}\n\n/**\n * For the passed selection instance, it returns the position of the fake caret displayed next to a widget.\n *\n * **Note**: If the fake caret is not currently displayed, `null` is returned.\n *\n * @returns The position of the fake caret or `null` when none is present.\n */\nexport function getTypeAroundFakeCaretPosition( selection: Selection | DocumentSelection ): 'before' | 'after' | null {\n\treturn selection.getAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE ) as any;\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* global DOMParser */\n\n/**\n * @module widget/widgettypearound/widgettypearound\n */\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\n\nimport { Template } from '@ckeditor/ckeditor5-ui';\n\nimport {\n\tEnter,\n\ttype ViewDocumentEnterEvent\n} from '@ckeditor/ckeditor5-enter';\n\nimport {\n\tDelete,\n\ttype ViewDocumentDeleteEvent,\n\ttype ViewDocumentInsertTextEvent\n} from '@ckeditor/ckeditor5-typing';\n\nimport {\n\tenv,\n\tisForwardArrowKeyCode,\n\ttype BaseEvent,\n\ttype Emitter,\n\ttype GetCallback,\n\ttype GetCallbackOptions,\n\ttype ObservableChangeEvent,\n\ttype KeystrokeInfo\n} from '@ckeditor/ckeditor5-utils';\n\nimport type {\n\tBubblingEventInfo,\n\tDocumentChangeEvent,\n\tDomEventData,\n\tDowncastInsertEvent,\n\tDowncastSelectionEvent,\n\tDowncastWriter,\n\tElement,\n\tSchema,\n\tSelectionChangeRangeEvent,\n\tViewDocumentArrowKeyEvent,\n\tViewDocumentCompositionStartEvent,\n\tViewDocumentKeyDownEvent,\n\tViewDocumentMouseDownEvent,\n\tViewElement,\n\tModelDeleteContentEvent,\n\tModelInsertContentEvent,\n\tModelInsertObjectEvent\n} from '@ckeditor/ckeditor5-engine';\n\nimport {\n\tisTypeAroundWidget,\n\tgetClosestTypeAroundDomButton,\n\tgetTypeAroundButtonPosition,\n\tgetClosestWidgetViewElement,\n\tgetTypeAroundFakeCaretPosition,\n\tTYPE_AROUND_SELECTION_ATTRIBUTE\n} from './utils.js';\n\nimport { isWidget } from '../utils.js';\nimport type Widget from '../widget.js';\n\nimport returnIcon from '../../theme/icons/return-arrow.svg';\n\nimport '../../theme/widgettypearound.css';\n\nconst POSSIBLE_INSERTION_POSITIONS = [ 'before', 'after' ] as const;\n\n// Do the SVG parsing once and then clone the result <svg> DOM element for each new button.\nconst RETURN_ARROW_ICON_ELEMENT = new DOMParser().parseFromString( returnIcon, 'image/svg+xml' ).firstChild!;\n\nconst PLUGIN_DISABLED_EDITING_ROOT_CLASS = 'ck-widget__type-around_disabled';\n\n/**\n * A plugin that allows users to type around widgets where normally it is impossible to place the caret due\n * to limitations of web browsers. These \"tight spots\" occur, for instance, before (or after) a widget being\n * the first (or last) child of its parent or between two block widgets.\n *\n * This plugin extends the {@link module:widget/widget~Widget `Widget`} plugin and injects the user interface\n * with two buttons into each widget instance in the editor. Each of the buttons can be clicked by the\n * user if the widget is next to the \"tight spot\". Once clicked, a paragraph is created with the selection anchored\n * in it so that users can type (or insert content, paste, etc.) straight away.\n */\nexport default class WidgetTypeAround extends Plugin {\n\t/**\n\t * A reference to the model widget element that has the fake caret active\n\t * on either side of it. It is later used to remove CSS classes associated with the fake caret\n\t * when the widget no longer needs it.\n\t */\n\tprivate _currentFakeCaretModelElement: Element | null = null;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'WidgetTypeAround' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ Enter, Delete ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst editingView = editor.editing.view;\n\n\t\t// Set a CSS class on the view editing root when the plugin is disabled so all the buttons\n\t\t// and lines visually disappear. All the interactions are disabled in individual plugin methods.\n\t\tthis.on<ObservableChangeEvent<boolean>>( 'change:isEnabled', ( evt, data, isEnabled ) => {\n\t\t\teditingView.change( writer => {\n\t\t\t\tfor ( const root of editingView.document.roots ) {\n\t\t\t\t\tif ( isEnabled ) {\n\t\t\t\t\t\twriter.removeClass( PLUGIN_DISABLED_EDITING_ROOT_CLASS, root );\n\t\t\t\t\t} else {\n\t\t\t\t\t\twriter.addClass( PLUGIN_DISABLED_EDITING_ROOT_CLASS, root );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tif ( !isEnabled ) {\n\t\t\t\teditor.model.change( writer => {\n\t\t\t\t\twriter.removeSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE );\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\tthis._enableTypeAroundUIInjection();\n\t\tthis._enableInsertingParagraphsOnButtonClick();\n\t\tthis._enableInsertingParagraphsOnEnterKeypress();\n\t\tthis._enableInsertingParagraphsOnTypingKeystroke();\n\t\tthis._enableTypeAroundFakeCaretActivationUsingKeyboardArrows();\n\t\tthis._enableDeleteIntegration();\n\t\tthis._enableInsertContentIntegration();\n\t\tthis._enableInsertObjectIntegration();\n\t\tthis._enableDeleteContentIntegration();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis._currentFakeCaretModelElement = null;\n\t}\n\n\t/**\n\t * Inserts a new paragraph next to a widget element with the selection anchored in it.\n\t *\n\t * **Note**: This method is heavily user-oriented and will both focus the editing view and scroll\n\t * the viewport to the selection in the inserted paragraph.\n\t *\n\t * @param widgetModelElement The model widget element next to which a paragraph is inserted.\n\t * @param position The position where the paragraph is inserted. Either `'before'` or `'after'` the widget.\n\t */\n\tprivate _insertParagraph( widgetModelElement: Element, position: 'before' | 'after' ) {\n\t\tconst editor = this.editor;\n\t\tconst editingView = editor.editing.view;\n\n\t\tconst attributesToCopy = editor.model.schema.getAttributesWithProperty( widgetModelElement, 'copyOnReplace', true );\n\n\t\teditor.execute( 'insertParagraph', {\n\t\t\tposition: editor.model.createPositionAt( widgetModelElement, position ),\n\t\t\tattributes: attributesToCopy\n\t\t} );\n\n\t\teditingView.focus();\n\t\teditingView.scrollToTheSelection();\n\t}\n\n\t/**\n\t * A wrapper for the {@link module:utils/emittermixin~Emitter#listenTo} method that executes the callbacks only\n\t * when the plugin {@link #isEnabled is enabled}.\n\t *\n\t * @param emitter The object that fires the event.\n\t * @param event The name of the event.\n\t * @param callback The function to be called on event.\n\t * @param options Additional options.\n\t * @param options.priority The priority of this event callback. The higher the priority value the sooner\n\t * the callback will be fired. Events having the same priority are called in the order they were added.\n\t */\n\tprivate _listenToIfEnabled<TEvent extends BaseEvent>(\n\t\temitter: Emitter,\n\t\tevent: TEvent[ 'name' ],\n\t\tcallback: OmitThisParameter<GetCallback<TEvent>>,\n\t\toptions?: GetCallbackOptions<TEvent>\n\t): void {\n\t\tthis.listenTo( emitter, event, ( ...args ) => {\n\t\t\t// Do not respond if the plugin is disabled.\n\t\t\tif ( this.isEnabled ) {\n\t\t\t\tcallback( ...args );\n\t\t\t}\n\t\t}, options );\n\t}\n\n\t/**\n\t * Similar to {@link #_insertParagraph}, this method inserts a paragraph except that it\n\t * does not expect a position. Instead, it performs the insertion next to a selected widget\n\t * according to the `widget-type-around` model selection attribute value (fake caret position).\n\t *\n\t * Because this method requires the `widget-type-around` attribute to be set,\n\t * the insertion can only happen when the widget's fake caret is active (e.g. activated\n\t * using the keyboard).\n\t *\n\t * @returns Returns `true` when the paragraph was inserted (the attribute was present) and `false` otherwise.\n\t */\n\tprivate _insertParagraphAccordingToFakeCaretPosition() {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst modelSelection = model.document.selection;\n\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( modelSelection );\n\n\t\tif ( !typeAroundFakeCaretPosition ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t// @if CK_DEBUG_TYPING // \tconsole.info( '%c[WidgetTypeAround]%c Fake caret -> insert paragraph',\n\t\t// @if CK_DEBUG_TYPING // \t\t'font-weight: bold; color: green', ''\n\t\t// @if CK_DEBUG_TYPING // \t);\n\t\t// @if CK_DEBUG_TYPING // }\n\n\t\tconst selectedModelElement = modelSelection.getSelectedElement()!;\n\n\t\tthis._insertParagraph( selectedModelElement, typeAroundFakeCaretPosition );\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Creates a listener in the editing conversion pipeline that injects the widget type around\n\t * UI into every single widget instance created in the editor.\n\t *\n\t * The UI is delivered as a {@link module:engine/view/uielement~UIElement}\n\t * wrapper which renders DOM buttons that users can use to insert paragraphs.\n\t */\n\tprivate _enableTypeAroundUIInjection() {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\t\tconst t = editor.locale.t;\n\t\tconst buttonTitles = {\n\t\t\tbefore: t( 'Insert paragraph before block' ),\n\t\t\tafter: t( 'Insert paragraph after block' )\n\t\t};\n\n\t\teditor.editing.downcastDispatcher.on<DowncastInsertEvent<Element>>( 'insert', ( evt, data, conversionApi ) => {\n\t\t\tconst viewElement = conversionApi.mapper.toViewElement( data.item );\n\n\t\t\tif ( !viewElement ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Filter out non-widgets and inline widgets.\n\t\t\tif ( isTypeAroundWidget( viewElement, data.item, schema ) ) {\n\t\t\t\tinjectUIIntoWidget( conversionApi.writer, buttonTitles, viewElement! );\n\n\t\t\t\tconst widgetLabel = viewElement.getCustomProperty( 'widgetLabel' ) as Array<string | ( () => string )>;\n\n\t\t\t\twidgetLabel.push( () => {\n\t\t\t\t\treturn this.isEnabled ? t( 'Press Enter to type after or press Shift + Enter to type before the widget' ) : '';\n\t\t\t\t} );\n\t\t\t}\n\t\t}, { priority: 'low' } );\n\t}\n\n\t/**\n\t * Brings support for the fake caret that appears when either:\n\t *\n\t * * the selection moves to a widget from a position next to it using arrow keys,\n\t * * the arrow key is pressed when the widget is already selected.\n\t *\n\t * The fake caret lets the user know that they can start typing or just press\n\t * <kbd>Enter</kbd> to insert a paragraph at the position next to a widget as suggested by the fake caret.\n\t *\n\t * The fake caret disappears when the user changes the selection or the editor\n\t * gets blurred.\n\t *\n\t * The whole idea is as follows:\n\t *\n\t * 1. A user does one of the 2 scenarios described at the beginning.\n\t * 2. The \"keydown\" listener is executed and the decision is made whether to show or hide the fake caret.\n\t * 3. If it should show up, the `widget-type-around` model selection attribute is set indicating\n\t * on which side of the widget it should appear.\n\t * 4. The selection dispatcher reacts to the selection attribute and sets CSS classes responsible for the\n\t * fake caret on the view widget.\n\t * 5. If the fake caret should disappear, the selection attribute is removed and the dispatcher\n\t * does the CSS class clean-up in the view.\n\t * 6. Additionally, `change:range` and `FocusTracker#isFocused` listeners also remove the selection\n\t * attribute (the former also removes widget CSS classes).\n\t */\n\tprivate _enableTypeAroundFakeCaretActivationUsingKeyboardArrows() {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst modelSelection = model.document.selection;\n\t\tconst schema = model.schema;\n\t\tconst editingView = editor.editing.view;\n\n\t\t// This is the main listener responsible for the fake caret.\n\t\t// Note: The priority must precede the default Widget class keydown handler (\"high\").\n\t\tthis._listenToIfEnabled<ViewDocumentArrowKeyEvent>( editingView.document, 'arrowKey', ( evt, domEventData ) => {\n\t\t\tthis._handleArrowKeyPress( evt, domEventData );\n\t\t}, { context: [ isWidget, '$text' ], priority: 'high' } );\n\n\t\t// This listener makes sure the widget type around selection attribute will be gone from the model\n\t\t// selection as soon as the model range changes. This attribute only makes sense when a widget is selected\n\t\t// (and the \"fake horizontal caret\" is visible) so whenever the range changes (e.g. selection moved somewhere else),\n\t\t// let's get rid of the attribute so that the selection downcast dispatcher isn't even bothered.\n\t\tthis._listenToIfEnabled<SelectionChangeRangeEvent>( modelSelection, 'change:range', ( evt, data ) => {\n\t\t\t// Do not reset the selection attribute when the change was indirect.\n\t\t\tif ( !data.directChange ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Get rid of the widget type around attribute of the selection on every change:range.\n\t\t\t// If the range changes, it means for sure, the user is no longer in the active (\"fake horizontal caret\") mode.\n\t\t\teditor.model.change( writer => {\n\t\t\t\twriter.removeSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE );\n\t\t\t} );\n\t\t} );\n\n\t\t// Get rid of the widget type around attribute of the selection on every document change\n\t\t// that makes widget not selected any more (i.e. widget was removed).\n\t\tthis._listenToIfEnabled<DocumentChangeEvent>( model.document, 'change:data', () => {\n\t\t\tconst selectedModelElement = modelSelection.getSelectedElement();\n\n\t\t\tif ( selectedModelElement ) {\n\t\t\t\tconst selectedViewElement = editor.editing.mapper.toViewElement( selectedModelElement );\n\n\t\t\t\tif ( isTypeAroundWidget( selectedViewElement, selectedModelElement, schema ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\teditor.model.change( writer => {\n\t\t\t\twriter.removeSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE );\n\t\t\t} );\n\t\t} );\n\n\t\t// React to changes of the model selection attribute made by the arrow keys listener.\n\t\t// If the block widget is selected and the attribute changes, downcast the attribute to special\n\t\t// CSS classes associated with the active (\"fake horizontal caret\") mode of the widget.\n\t\tthis._listenToIfEnabled<DowncastSelectionEvent>( editor.editing.downcastDispatcher, 'selection', ( evt, data, conversionApi ) => {\n\t\t\tconst writer = conversionApi.writer;\n\n\t\t\tif ( this._currentFakeCaretModelElement ) {\n\t\t\t\tconst selectedViewElement = conversionApi.mapper.toViewElement( this._currentFakeCaretModelElement );\n\n\t\t\t\tif ( selectedViewElement ) {\n\t\t\t\t\t// Get rid of CSS classes associated with the active (\"fake horizontal caret\") mode from the view widget.\n\t\t\t\t\twriter.removeClass( POSSIBLE_INSERTION_POSITIONS.map( positionToWidgetCssClass ), selectedViewElement );\n\n\t\t\t\t\tthis._currentFakeCaretModelElement = null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst selectedModelElement = data.selection.getSelectedElement();\n\n\t\t\tif ( !selectedModelElement ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst selectedViewElement = conversionApi.mapper.toViewElement( selectedModelElement );\n\n\t\t\tif ( !isTypeAroundWidget( selectedViewElement, selectedModelElement, schema ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( data.selection );\n\n\t\t\tif ( !typeAroundFakeCaretPosition ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\twriter.addClass( positionToWidgetCssClass( typeAroundFakeCaretPosition ), selectedViewElement! );\n\n\t\t\t// Remember the view widget that got the \"fake-caret\" CSS class. This class should be removed ASAP when the\n\t\t\t// selection changes\n\t\t\tthis._currentFakeCaretModelElement = selectedModelElement;\n\t\t} );\n\n\t\tthis._listenToIfEnabled<ObservableChangeEvent<boolean>>( editor.ui.focusTracker, 'change:isFocused', ( evt, name, isFocused ) => {\n\t\t\tif ( !isFocused ) {\n\t\t\t\teditor.model.change( writer => {\n\t\t\t\t\twriter.removeSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE );\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\tfunction positionToWidgetCssClass( position: 'before' | 'after' ) {\n\t\t\treturn `ck-widget_type-around_show-fake-caret_${ position }`;\n\t\t}\n\t}\n\n\t/**\n\t * A listener executed on each \"keydown\" in the view document, a part of\n\t * {@link #_enableTypeAroundFakeCaretActivationUsingKeyboardArrows}.\n\t *\n\t * It decides whether the arrow keypress should activate the fake caret or not (also whether it should\n\t * be deactivated).\n\t *\n\t * The fake caret activation is done by setting the `widget-type-around` model selection attribute\n\t * in this listener, and stopping and preventing the event that would normally be handled by the widget\n\t * plugin that is responsible for the regular keyboard navigation near/across all widgets (that\n\t * includes inline widgets, which are ignored by the widget type around plugin).\n\t */\n\tprivate _handleArrowKeyPress( evt: BubblingEventInfo<'arrowKey'>, domEventData: DomEventData & KeystrokeInfo ) {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst modelSelection = model.document.selection;\n\t\tconst schema = model.schema;\n\t\tconst editingView = editor.editing.view;\n\n\t\tconst keyCode = domEventData.keyCode;\n\t\tconst isForward = isForwardArrowKeyCode( keyCode, editor.locale.contentLanguageDirection );\n\t\tconst selectedViewElement = editingView.document.selection.getSelectedElement()!;\n\t\tconst selectedModelElement = editor.editing.mapper.toModelElement( selectedViewElement )!;\n\t\tlet shouldStopAndPreventDefault;\n\n\t\t// Handle keyboard navigation when a type-around-compatible widget is currently selected.\n\t\tif ( isTypeAroundWidget( selectedViewElement, selectedModelElement, schema ) ) {\n\t\t\tshouldStopAndPreventDefault = this._handleArrowKeyPressOnSelectedWidget( isForward );\n\t\t}\n\t\t// Handle keyboard arrow navigation when the selection is next to a type-around-compatible widget\n\t\t// and the widget is about to be selected.\n\t\telse if ( modelSelection.isCollapsed ) {\n\t\t\tshouldStopAndPreventDefault = this._handleArrowKeyPressWhenSelectionNextToAWidget( isForward );\n\t\t}\n\t\t// Handle collapsing a non-collapsed selection that is wider than on a single widget.\n\t\telse if ( !domEventData.shiftKey ) {\n\t\t\tshouldStopAndPreventDefault = this._handleArrowKeyPressWhenNonCollapsedSelection( isForward );\n\t\t}\n\n\t\tif ( shouldStopAndPreventDefault ) {\n\t\t\tdomEventData.preventDefault();\n\t\t\tevt.stop();\n\t\t}\n\t}\n\n\t/**\n\t * Handles the keyboard navigation on \"keydown\" when a widget is currently selected and activates or deactivates\n\t * the fake caret for that widget, depending on the current value of the `widget-type-around` model\n\t * selection attribute and the direction of the pressed arrow key.\n\t *\n\t * @param isForward `true` when the pressed arrow key was responsible for the forward model selection movement\n\t * as in {@link module:utils/keyboard~isForwardArrowKeyCode}.\n\t * @returns Returns `true` when the keypress was handled and no other keydown listener of the editor should\n\t * process the event any further. Returns `false` otherwise.\n\t */\n\tprivate _handleArrowKeyPressOnSelectedWidget( isForward: boolean ) {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst modelSelection = model.document.selection;\n\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( modelSelection );\n\n\t\treturn model.change( writer => {\n\t\t\t// If the fake caret is displayed...\n\t\t\tif ( typeAroundFakeCaretPosition ) {\n\t\t\t\tconst isLeavingWidget = typeAroundFakeCaretPosition === ( isForward ? 'after' : 'before' );\n\n\t\t\t\t// If the keyboard arrow works against the value of the selection attribute...\n\t\t\t\t// then remove the selection attribute but prevent default DOM actions\n\t\t\t\t// and do not let the Widget plugin listener move the selection. This brings\n\t\t\t\t// the widget back to the state, for instance, like if was selected using the mouse.\n\t\t\t\t//\n\t\t\t\t// **Note**: If leaving the widget when the fake caret is active, then the default\n\t\t\t\t// Widget handler will change the selection and, in turn, this will automatically discard\n\t\t\t\t// the selection attribute.\n\t\t\t\tif ( !isLeavingWidget ) {\n\t\t\t\t\twriter.removeSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE );\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If the fake caret wasn't displayed, let's set it now according to the direction of the arrow\n\t\t\t// key press. This also means we cannot let the Widget plugin listener move the selection.\n\t\t\telse {\n\t\t\t\twriter.setSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE, isForward ? 'after' : 'before' );\n\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t} );\n\t}\n\n\t/**\n\t * Handles the keyboard navigation on \"keydown\" when **no** widget is selected but the selection is **directly** next\n\t * to one and upon the fake caret should become active for this widget upon arrow keypress\n\t * (AKA entering/selecting the widget).\n\t *\n\t * **Note**: This code mirrors the implementation from the widget plugin but also adds the selection attribute.\n\t * Unfortunately, there is no safe way to let the widget plugin do the selection part first and then just set the\n\t * selection attribute here in the widget type around plugin. This is why this code must duplicate some from the widget plugin.\n\t *\n\t * @param isForward `true` when the pressed arrow key was responsible for the forward model selection movement\n\t * as in {@link module:utils/keyboard~isForwardArrowKeyCode}.\n\t * @returns Returns `true` when the keypress was handled and no other keydown listener of the editor should\n\t * process the event any further. Returns `false` otherwise.\n\t */\n\tprivate _handleArrowKeyPressWhenSelectionNextToAWidget( isForward: boolean ) {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst schema = model.schema;\n\t\tconst widgetPlugin: Widget = editor.plugins.get( 'Widget' );\n\n\t\t// This is the widget the selection is about to be set on.\n\t\tconst modelElementNextToSelection = widgetPlugin._getObjectElementNextToSelection( isForward )!;\n\t\tconst viewElementNextToSelection = editor.editing.mapper.toViewElement( modelElementNextToSelection );\n\n\t\tif ( isTypeAroundWidget( viewElementNextToSelection, modelElementNextToSelection, schema ) ) {\n\t\t\tmodel.change( writer => {\n\t\t\t\twidgetPlugin._setSelectionOverElement( modelElementNextToSelection );\n\t\t\t\twriter.setSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE, isForward ? 'before' : 'after' );\n\t\t\t} );\n\n\t\t\t// The change() block above does the same job as the Widget plugin. The event can\n\t\t\t// be safely canceled.\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Handles the keyboard navigation on \"keydown\" when a widget is currently selected (together with some other content)\n\t * and the widget is the first or last element in the selection. It activates or deactivates the fake caret for that widget.\n\t *\n\t * @param isForward `true` when the pressed arrow key was responsible for the forward model selection movement\n\t * as in {@link module:utils/keyboard~isForwardArrowKeyCode}.\n\t * @returns Returns `true` when the keypress was handled and no other keydown listener of the editor should\n\t * process the event any further. Returns `false` otherwise.\n\t */\n\tprivate _handleArrowKeyPressWhenNonCollapsedSelection( isForward: boolean ) {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst schema = model.schema;\n\t\tconst mapper = editor.editing.mapper;\n\t\tconst modelSelection = model.document.selection;\n\n\t\tconst selectedModelNode = isForward ?\n\t\t\tmodelSelection.getLastPosition()!.nodeBefore :\n\t\t\tmodelSelection.getFirstPosition()!.nodeAfter;\n\n\t\tconst selectedViewNode = mapper.toViewElement( selectedModelNode as any );\n\n\t\t// There is a widget at the collapse position so collapse the selection to the fake caret on it.\n\t\tif ( isTypeAroundWidget( selectedViewNode, selectedModelNode as any, schema ) ) {\n\t\t\tmodel.change( writer => {\n\t\t\t\twriter.setSelection( selectedModelNode!, 'on' );\n\t\t\t\twriter.setSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE, isForward ? 'after' : 'before' );\n\t\t\t} );\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Registers a `mousedown` listener for the view document which intercepts events\n\t * coming from the widget type around UI, which happens when a user clicks one of the buttons\n\t * that insert a paragraph next to a widget.\n\t */\n\tprivate _enableInsertingParagraphsOnButtonClick() {\n\t\tconst editor = this.editor;\n\t\tconst editingView = editor.editing.view;\n\n\t\tthis._listenToIfEnabled<ViewDocumentMouseDownEvent>( editingView.document, 'mousedown', ( evt, domEventData ) => {\n\t\t\tconst button = getClosestTypeAroundDomButton( domEventData.domTarget );\n\n\t\t\tif ( !button ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst buttonPosition = getTypeAroundButtonPosition( button );\n\t\t\tconst widgetViewElement = getClosestWidgetViewElement( button, editingView.domConverter );\n\t\t\tconst widgetModelElement = editor.editing.mapper.toModelElement( widgetViewElement );\n\n\t\t\tthis._insertParagraph( widgetModelElement!, buttonPosition );\n\n\t\t\tdomEventData.preventDefault();\n\t\t\tevt.stop();\n\t\t} );\n\t}\n\n\t/**\n\t * Creates the <kbd>Enter</kbd> key listener on the view document that allows the user to insert a paragraph\n\t * near the widget when either:\n\t *\n\t * * The fake caret was first activated using the arrow keys,\n\t * * The entire widget is selected in the model.\n\t *\n\t * In the first case, the new paragraph is inserted according to the `widget-type-around` selection\n\t * attribute (see {@link #_handleArrowKeyPress}).\n\t *\n\t * In the second case, the new paragraph is inserted based on whether a soft (<kbd>Shift</kbd>+<kbd>Enter</kbd>) keystroke\n\t * was pressed or not.\n\t */\n\tprivate _enableInsertingParagraphsOnEnterKeypress() {\n\t\tconst editor = this.editor;\n\t\tconst selection = editor.model.document.selection;\n\t\tconst editingView = editor.editing.view;\n\n\t\tthis._listenToIfEnabled<ViewDocumentEnterEvent>( editingView.document, 'enter', ( evt, domEventData ) => {\n\t\t\t// This event could be triggered from inside the widget but we are interested\n\t\t\t// only when the widget is selected itself.\n\t\t\tif ( evt.eventPhase != 'atTarget' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst selectedModelElement = selection.getSelectedElement()!;\n\t\t\tconst selectedViewElement = editor.editing.mapper.toViewElement( selectedModelElement );\n\n\t\t\tconst schema = editor.model.schema;\n\t\t\tlet wasHandled;\n\n\t\t\t// First check if the widget is selected and there's a type around selection attribute associated\n\t\t\t// with the fake caret that would tell where to insert a new paragraph.\n\t\t\tif ( this._insertParagraphAccordingToFakeCaretPosition() ) {\n\t\t\t\twasHandled = true;\n\t\t\t}\n\t\t\t// Then, if there is no selection attribute associated with the fake caret, check if the widget\n\t\t\t// simply is selected and create a new paragraph according to the keystroke (Shift+)Enter.\n\t\t\telse if ( isTypeAroundWidget( selectedViewElement, selectedModelElement, schema ) ) {\n\t\t\t\tthis._insertParagraph( selectedModelElement, domEventData.isSoft ? 'before' : 'after' );\n\n\t\t\t\twasHandled = true;\n\t\t\t}\n\n\t\t\tif ( wasHandled ) {\n\t\t\t\tdomEventData.preventDefault();\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { context: isWidget } );\n\t}\n\n\t/**\n\t * Similar to the {@link #_enableInsertingParagraphsOnEnterKeypress}, it allows the user\n\t * to insert a paragraph next to a widget when the fake caret was activated using arrow\n\t * keys but it responds to typing instead of <kbd>Enter</kbd>.\n\t *\n\t * Listener enabled by this method will insert a new paragraph according to the `widget-type-around`\n\t * model selection attribute as the user simply starts typing, which creates the impression that the fake caret\n\t * behaves like a real one rendered by the browser (AKA your text appears where the caret was).\n\t *\n\t * **Note**: At the moment this listener creates 2 undo steps: one for the `insertParagraph` command\n\t * and another one for actual typing. It is not a disaster but this may need to be fixed\n\t * sooner or later.\n\t */\n\tprivate _enableInsertingParagraphsOnTypingKeystroke() {\n\t\tconst editor = this.editor;\n\t\tconst viewDocument = editor.editing.view.document;\n\n\t\t// Note: The priority must precede the default Input plugin insertText handler.\n\t\tthis._listenToIfEnabled<ViewDocumentInsertTextEvent>( viewDocument, 'insertText', ( evt, data ) => {\n\t\t\tif ( this._insertParagraphAccordingToFakeCaretPosition() ) {\n\t\t\t\t// The view selection in the event data contains the widget. If the new paragraph\n\t\t\t\t// was inserted, modify the view selection passed along with the insertText event\n\t\t\t\t// so the default event handler in the Input plugin starts typing inside the paragraph.\n\t\t\t\t// Otherwise, the typing would be over the widget.\n\t\t\t\tdata.selection = viewDocument.selection;\n\t\t\t}\n\t\t}, { priority: 'high' } );\n\n\t\tif ( env.isAndroid ) {\n\t\t\t// On Android with English keyboard, the composition starts just by putting caret\n\t\t\t// at the word end or by selecting a table column. This is not a real composition started.\n\t\t\t// Trigger delete content on first composition key pressed.\n\t\t\tthis._listenToIfEnabled<ViewDocumentKeyDownEvent>( viewDocument, 'keydown', ( evt, data ) => {\n\t\t\t\tif ( data.keyCode == 229 ) {\n\t\t\t\t\tthis._insertParagraphAccordingToFakeCaretPosition();\n\t\t\t\t}\n\t\t\t} );\n\t\t} else {\n\t\t\t// Note: The priority must precede the default Input plugin compositionstart handler (to call it before delete content).\n\t\t\tthis._listenToIfEnabled<ViewDocumentCompositionStartEvent>( viewDocument, 'compositionstart', () => {\n\t\t\t\tthis._insertParagraphAccordingToFakeCaretPosition();\n\t\t\t}, { priority: 'high' } );\n\t\t}\n\t}\n\n\t/**\n\t * It creates a \"delete\" event listener on the view document to handle cases when the <kbd>Delete</kbd> or <kbd>Backspace</kbd>\n\t * is pressed and the fake caret is currently active.\n\t *\n\t * The fake caret should create an illusion of a real browser caret so that when it appears before or after\n\t * a widget, pressing <kbd>Delete</kbd> or <kbd>Backspace</kbd> should remove a widget or delete the content\n\t * before or after a widget (depending on the content surrounding the widget).\n\t */\n\tprivate _enableDeleteIntegration() {\n\t\tconst editor = this.editor;\n\t\tconst editingView = editor.editing.view;\n\t\tconst model = editor.model;\n\t\tconst schema = model.schema;\n\n\t\tthis._listenToIfEnabled<ViewDocumentDeleteEvent>( editingView.document, 'delete', ( evt, domEventData ) => {\n\t\t\t// This event could be triggered from inside the widget but we are interested\n\t\t\t// only when the widget is selected itself.\n\t\t\tif ( evt.eventPhase != 'atTarget' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( model.document.selection );\n\n\t\t\t// This listener handles only these cases when the fake caret is active.\n\t\t\tif ( !typeAroundFakeCaretPosition ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst direction = domEventData.direction;\n\t\t\tconst selectedModelWidget = model.document.selection.getSelectedElement();\n\n\t\t\tconst isFakeCaretBefore = typeAroundFakeCaretPosition === 'before';\n\t\t\tconst isDeleteForward = direction == 'forward';\n\t\t\tconst shouldDeleteEntireWidget = isFakeCaretBefore === isDeleteForward;\n\n\t\t\tif ( shouldDeleteEntireWidget ) {\n\t\t\t\teditor.execute( 'delete', {\n\t\t\t\t\tselection: model.createSelection( selectedModelWidget!, 'on' )\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\tconst range = schema.getNearestSelectionRange(\n\t\t\t\t\tmodel.createPositionAt( selectedModelWidget!, typeAroundFakeCaretPosition ),\n\t\t\t\t\tdirection\n\t\t\t\t);\n\n\t\t\t\t// If there is somewhere to move selection to, then there will be something to delete.\n\t\t\t\tif ( range ) {\n\t\t\t\t\t// If the range is NOT collapsed, then we know that the range contains an object (see getNearestSelectionRange() docs).\n\t\t\t\t\tif ( !range.isCollapsed ) {\n\t\t\t\t\t\tmodel.change( writer => {\n\t\t\t\t\t\t\twriter.setSelection( range );\n\t\t\t\t\t\t\teditor.execute( isDeleteForward ? 'deleteForward' : 'delete' );\n\t\t\t\t\t\t} );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst probe = model.createSelection( range.start );\n\t\t\t\t\t\tmodel.modifySelection( probe, { direction } );\n\n\t\t\t\t\t\t// If the range is collapsed, let's see if a non-collapsed range exists that can could be deleted.\n\t\t\t\t\t\t// If such range exists, use the editor command because it it safe for collaboration (it merges where it can).\n\t\t\t\t\t\tif ( !probe.focus!.isEqual( range.start ) ) {\n\t\t\t\t\t\t\tmodel.change( writer => {\n\t\t\t\t\t\t\t\twriter.setSelection( range );\n\t\t\t\t\t\t\t\teditor.execute( isDeleteForward ? 'deleteForward' : 'delete' );\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// If there is no non-collapsed range to be deleted then we are sure that there is an empty element\n\t\t\t\t\t\t// next to a widget that should be removed. \"delete\" and \"deleteForward\" commands cannot get rid of it\n\t\t\t\t\t\t// so calling Model#deleteContent here manually.\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tconst deepestEmptyRangeAncestor = getDeepestEmptyElementAncestor( schema, range.start.parent as Element );\n\n\t\t\t\t\t\t\tmodel.deleteContent( model.createSelection( deepestEmptyRangeAncestor, 'on' ), {\n\t\t\t\t\t\t\t\tdoNotAutoparagraph: true\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If some content was deleted, don't let the handler from the Widget plugin kick in.\n\t\t\t// If nothing was deleted, then the default handler will have nothing to do anyway.\n\t\t\tdomEventData.preventDefault();\n\t\t\tevt.stop();\n\t\t}, { context: isWidget } );\n\t}\n\n\t/**\n\t * Attaches the {@link module:engine/model/model~Model#event:insertContent} event listener that, for instance, allows the user to paste\n\t * content near a widget when the fake caret is first activated using the arrow keys.\n\t *\n\t * The content is inserted according to the `widget-type-around` selection attribute (see {@link #_handleArrowKeyPress}).\n\t */\n\tprivate _enableInsertContentIntegration() {\n\t\tconst editor = this.editor;\n\t\tconst model = this.editor.model;\n\t\tconst documentSelection = model.document.selection;\n\n\t\tthis._listenToIfEnabled<ModelInsertContentEvent>( editor.model, 'insertContent', ( evt, [ content, selectable ] ) => {\n\t\t\tif ( selectable && !( selectable as any ).is( 'documentSelection' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( documentSelection );\n\n\t\t\tif ( !typeAroundFakeCaretPosition ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tevt.stop();\n\n\t\t\treturn model.change( writer => {\n\t\t\t\tconst selectedElement = documentSelection.getSelectedElement();\n\t\t\t\tconst position = model.createPositionAt( selectedElement!, typeAroundFakeCaretPosition );\n\t\t\t\tconst selection = writer.createSelection( position );\n\n\t\t\t\tconst result = model.insertContent( content, selection );\n\n\t\t\t\twriter.setSelection( selection );\n\n\t\t\t\treturn result;\n\t\t\t} );\n\t\t}, { priority: 'high' } );\n\t}\n\n\t/**\n\t * Attaches the {@link module:engine/model/model~Model#event:insertObject} event listener that modifies the\n\t * `options.findOptimalPosition`parameter to position of fake caret in relation to selected element\n\t * to reflect user's intent of desired insertion position.\n\t *\n\t * The object is inserted according to the `widget-type-around` selection attribute (see {@link #_handleArrowKeyPress}).\n\t */\n\tprivate _enableInsertObjectIntegration() {\n\t\tconst editor = this.editor;\n\t\tconst model = this.editor.model;\n\t\tconst documentSelection = model.document.selection;\n\n\t\tthis._listenToIfEnabled<ModelInsertObjectEvent>( editor.model, 'insertObject', ( evt, args ) => {\n\t\t\tconst [ , selectable, options = {} ] = args;\n\n\t\t\tif ( selectable && !( selectable as any ).is( 'documentSelection' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( documentSelection );\n\n\t\t\tif ( !typeAroundFakeCaretPosition ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\toptions.findOptimalPosition = typeAroundFakeCaretPosition;\n\t\t\targs[ 3 ] = options;\n\t\t}, { priority: 'high' } );\n\t}\n\n\t/**\n\t * Attaches the {@link module:engine/model/model~Model#event:deleteContent} event listener to block the event when the fake\n\t * caret is active.\n\t *\n\t * This is required for cases that trigger {@link module:engine/model/model~Model#deleteContent `model.deleteContent()`}\n\t * before calling {@link module:engine/model/model~Model#insertContent `model.insertContent()`} like, for instance,\n\t * plain text pasting.\n\t */\n\tprivate _enableDeleteContentIntegration() {\n\t\tconst editor = this.editor;\n\t\tconst model = this.editor.model;\n\t\tconst documentSelection = model.document.selection;\n\n\t\tthis._listenToIfEnabled<ModelDeleteContentEvent>( editor.model, 'deleteContent', ( evt, [ selection ] ) => {\n\t\t\tif ( selection && !selection.is( 'documentSelection' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( documentSelection );\n\n\t\t\t// Disable removing the selection content while pasting plain text.\n\t\t\tif ( typeAroundFakeCaretPosition ) {\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { priority: 'high' } );\n\t}\n}\n\n/**\n * Injects the type around UI into a view widget instance.\n */\nfunction injectUIIntoWidget(\n\tviewWriter: DowncastWriter,\n\tbuttonTitles: { before: string; after: string },\n\twidgetViewElement: ViewElement ) {\n\tconst typeAroundWrapper = viewWriter.createUIElement( 'div', {\n\t\tclass: 'ck ck-reset_all ck-widget__type-around'\n\t}, function( domDocument ) {\n\t\tconst wrapperDomElement = this.toDomElement( domDocument );\n\n\t\tinjectButtons( wrapperDomElement, buttonTitles );\n\t\tinjectFakeCaret( wrapperDomElement );\n\n\t\treturn wrapperDomElement;\n\t} );\n\n\t// Inject the type around wrapper into the widget's wrapper.\n\tviewWriter.insert( viewWriter.createPositionAt( widgetViewElement, 'end' ), typeAroundWrapper );\n}\n\n/**\n * FYI: Not using the IconView class because each instance would need to be destroyed to avoid memory leaks\n * and it's pretty hard to figure out when a view (widget) is gone for good so it's cheaper to use raw\n * <svg> here.\n */\nfunction injectButtons( wrapperDomElement: HTMLElement, buttonTitles: { before: string; after: string } ) {\n\tfor ( const position of POSSIBLE_INSERTION_POSITIONS ) {\n\t\tconst buttonTemplate = new Template( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-widget__type-around__button',\n\t\t\t\t\t`ck-widget__type-around__button_${ position }`\n\t\t\t\t],\n\t\t\t\ttitle: buttonTitles[ position ],\n\t\t\t\t'aria-hidden': 'true'\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\twrapperDomElement.ownerDocument.importNode( RETURN_ARROW_ICON_ELEMENT, true )\n\t\t\t]\n\t\t} );\n\n\t\twrapperDomElement.appendChild( buttonTemplate.render() );\n\t}\n}\n\nfunction injectFakeCaret( wrapperDomElement: HTMLElement ) {\n\tconst caretTemplate = new Template( {\n\t\ttag: 'div',\n\t\tattributes: {\n\t\t\tclass: [\n\t\t\t\t'ck',\n\t\t\t\t'ck-widget__type-around__fake-caret'\n\t\t\t]\n\t\t}\n\t} );\n\n\twrapperDomElement.appendChild( caretTemplate.render() );\n}\n\n/**\n * Returns the ancestor of an element closest to the root which is empty. For instance,\n * for `<baz>`:\n *\n * ```\n * <foo>abc<bar><baz></baz></bar></foo>\n * ```\n *\n * it returns `<bar>`.\n */\nfunction getDeepestEmptyElementAncestor( schema: Schema, element: Element ) {\n\tlet deepestEmptyAncestor = element;\n\n\tfor ( const ancestor of element.getAncestors( { parentFirst: true } ) ) {\n\t\tif ( ( ancestor as any ).childCount > 1 || schema.isLimit( ancestor ) ) {\n\t\t\tbreak;\n\t\t}\n\n\t\tdeepestEmptyAncestor = ancestor as Element;\n\t}\n\n\treturn deepestEmptyAncestor;\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/verticalnavigation\n */\n\nimport {\n\tkeyCodes,\n\tRect,\n\ttype GetCallback\n} from '@ckeditor/ckeditor5-utils';\n\nimport type {\n\tDocumentSelection,\n\tEditingController,\n\tModel,\n\tPosition,\n\tRange,\n\tSchema,\n\tSelection,\n\tViewDocumentArrowKeyEvent\n} from '@ckeditor/ckeditor5-engine';\n\n/**\n * Returns 'keydown' handler for up/down arrow keys that modifies the caret movement if it's in a text line next to an object.\n *\n * @param editing The editing controller.\n */\nexport default function verticalNavigationHandler(\n\tediting: EditingController\n): GetCallback<ViewDocumentArrowKeyEvent> {\n\tconst model = editing.model;\n\n\treturn ( evt, data ) => {\n\t\tconst arrowUpPressed = data.keyCode == keyCodes.arrowup;\n\t\tconst arrowDownPressed = data.keyCode == keyCodes.arrowdown;\n\t\tconst expandSelection = data.shiftKey;\n\t\tconst selection = model.document.selection;\n\n\t\tif ( !arrowUpPressed && !arrowDownPressed ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst isForward = arrowDownPressed;\n\n\t\t// Navigation is in the opposite direction than the selection direction so this is shrinking of the selection.\n\t\t// Selection for sure will not approach any object.\n\t\tif ( expandSelection && selectionWillShrink( selection, isForward ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Find a range between selection and closest limit element.\n\t\tconst range = findTextRangeFromSelection( editing, selection, isForward );\n\n\t\t// There is no selection position inside the limit element.\n\t\tif ( !range ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If already at the edge of a limit element.\n\t\tif ( range.isCollapsed ) {\n\t\t\t// A collapsed selection at limit edge - nothing more to do.\n\t\t\tif ( selection.isCollapsed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// A non collapsed selection is at the limit edge while expanding the selection - let others do their stuff.\n\t\t\telse if ( expandSelection ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// If the range is a single line (there is no word wrapping) then move the selection to the position closest to the limit element.\n\t\t//\n\t\t// We can't move the selection directly to the isObject element (eg. table cell) because of dual position at the end/beginning\n\t\t// of wrapped line (it's at the same time at the end of one line and at the start of the next line).\n\t\tif ( range.isCollapsed || isSingleLineRange( editing, range, isForward ) ) {\n\t\t\tmodel.change( writer => {\n\t\t\t\tconst newPosition = isForward ? range.end : range.start;\n\n\t\t\t\tif ( expandSelection ) {\n\t\t\t\t\tconst newSelection = model.createSelection( selection.anchor );\n\t\t\t\t\tnewSelection.setFocus( newPosition );\n\n\t\t\t\t\twriter.setSelection( newSelection );\n\t\t\t\t} else {\n\t\t\t\t\twriter.setSelection( newPosition );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tevt.stop();\n\t\t\tdata.preventDefault();\n\t\t\tdata.stopPropagation();\n\t\t}\n\t};\n}\n\n/**\n * Finds the range between selection and closest limit element (in the direction of navigation).\n * The position next to limit element is adjusted to the closest allowed `$text` position.\n *\n * Returns `null` if, according to the schema, the resulting range cannot contain a `$text` element.\n *\n * @param editing The editing controller.\n * @param selection The current selection.\n * @param isForward The expected navigation direction.\n */\nfunction findTextRangeFromSelection( editing: EditingController, selection: Selection | DocumentSelection, isForward: boolean ) {\n\tconst model = editing.model;\n\n\tif ( isForward ) {\n\t\tconst startPosition = selection.isCollapsed ? selection.focus! : selection.getLastPosition()!;\n\t\tconst endPosition = getNearestNonInlineLimit( model, startPosition, 'forward' );\n\n\t\t// There is no limit element, browser should handle this.\n\t\tif ( !endPosition ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst range = model.createRange( startPosition, endPosition );\n\t\tconst lastRangePosition = getNearestTextPosition( model.schema, range, 'backward' );\n\n\t\tif ( lastRangePosition ) {\n\t\t\treturn model.createRange( startPosition, lastRangePosition );\n\t\t}\n\n\t\treturn null;\n\t} else {\n\t\tconst endPosition = selection.isCollapsed ? selection.focus! : selection.getFirstPosition()!;\n\t\tconst startPosition = getNearestNonInlineLimit( model, endPosition, 'backward' );\n\n\t\t// There is no limit element, browser should handle this.\n\t\tif ( !startPosition ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst range = model.createRange( startPosition, endPosition );\n\t\tconst firstRangePosition = getNearestTextPosition( model.schema, range, 'forward' );\n\n\t\tif ( firstRangePosition ) {\n\t\t\treturn model.createRange( firstRangePosition, endPosition );\n\t\t}\n\n\t\treturn null;\n\t}\n}\n\n/**\n * Finds the limit element position that is closest to startPosition.\n *\n * @param direction Search direction.\n */\nfunction getNearestNonInlineLimit( model: Model, startPosition: Position, direction: 'forward' | 'backward' ) {\n\tconst schema = model.schema;\n\tconst range = model.createRangeIn( startPosition.root );\n\n\tconst walkerValueType = direction == 'forward' ? 'elementStart' : 'elementEnd';\n\n\tfor ( const { previousPosition, item, type } of range.getWalker( { startPosition, direction } ) ) {\n\t\tif ( schema.isLimit( item ) && !schema.isInline( item ) ) {\n\t\t\treturn previousPosition;\n\t\t}\n\n\t\t// Stop looking for isLimit element if the next element is a block element (it is for sure not single line).\n\t\tif ( type == walkerValueType && schema.isBlock( item ) ) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\treturn null;\n}\n\n/**\n * Basing on the provided range, finds the first or last (depending on `direction`) position inside the range\n * that can contain `$text` (according to schema).\n *\n * @param schema The schema.\n * @param range The range to find the position in.\n * @param direction Search direction.\n * @returns The nearest selection position.\n *\n */\nfunction getNearestTextPosition( schema: Schema, range: Range, direction: 'forward' | 'backward' ) {\n\tconst position = direction == 'backward' ? range.end : range.start;\n\n\tif ( schema.checkChild( position, '$text' ) ) {\n\t\treturn position;\n\t}\n\n\tfor ( const { nextPosition } of range.getWalker( { direction } ) ) {\n\t\tif ( schema.checkChild( nextPosition, '$text' ) ) {\n\t\t\treturn nextPosition;\n\t\t}\n\t}\n\n\treturn null;\n}\n\n/**\n * Checks if the DOM range corresponding to the provided model range renders as a single line by analyzing DOMRects\n * (verifying if they visually wrap content to the next line).\n *\n * @param editing The editing controller.\n * @param modelRange The current table cell content range.\n * @param isForward The expected navigation direction.\n */\nfunction isSingleLineRange( editing: EditingController, modelRange: Range, isForward: boolean ) {\n\tconst model = editing.model;\n\tconst domConverter = editing.view.domConverter;\n\n\t// Wrapped lines contain exactly the same position at the end of current line\n\t// and at the beginning of next line. That position's client rect is at the end\n\t// of current line. In case of caret at first position of the last line that 'dual'\n\t// position would be detected as it's not the last line.\n\tif ( isForward ) {\n\t\tconst probe = model.createSelection( modelRange.start );\n\n\t\tmodel.modifySelection( probe );\n\n\t\t// If the new position is at the end of the container then we can't use this position\n\t\t// because it would provide incorrect result for eg caption of image and selection\n\t\t// just before end of it. Also in this case there is no \"dual\" position.\n\t\tif ( !probe.focus!.isAtEnd && !modelRange.start.isEqual( probe.focus! ) ) {\n\t\t\tmodelRange = model.createRange( probe.focus!, modelRange.end );\n\t\t}\n\t}\n\n\tconst viewRange = editing.mapper.toViewRange( modelRange );\n\tconst domRange = domConverter.viewRangeToDom( viewRange );\n\tconst rects = Rect.getDomRangeRects( domRange );\n\n\tlet boundaryVerticalPosition;\n\n\tfor ( const rect of rects ) {\n\t\tif ( boundaryVerticalPosition === undefined ) {\n\t\t\tboundaryVerticalPosition = Math.round( rect.bottom );\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Let's check if this rect is in new line.\n\t\tif ( Math.round( rect.top ) >= boundaryVerticalPosition ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tboundaryVerticalPosition = Math.max( boundaryVerticalPosition, Math.round( rect.bottom ) );\n\t}\n\n\treturn true;\n}\n\nfunction selectionWillShrink( selection: DocumentSelection, isForward: boolean ) {\n\treturn !selection.isCollapsed && selection.isBackward == isForward;\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/widget\n */\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\n\nimport {\n\tMouseObserver,\n\tTreeWalker,\n\ttype DomEventData,\n\ttype DowncastSelectionEvent,\n\ttype DowncastWriter,\n\ttype Element,\n\ttype Node,\n\ttype ViewDocumentArrowKeyEvent,\n\ttype ViewDocumentMouseDownEvent,\n\ttype ViewElement,\n\ttype Schema,\n\ttype Position,\n\ttype EditingView,\n\ttype ViewDocumentTabEvent,\n\ttype ViewDocumentKeyDownEvent\n} from '@ckeditor/ckeditor5-engine';\n\nimport { Delete, type ViewDocumentDeleteEvent } from '@ckeditor/ckeditor5-typing';\n\nimport {\n\tenv,\n\tkeyCodes,\n\tgetLocalizedArrowKeyCodeDirection,\n\tgetRangeFromMouseEvent,\n\ttype EventInfo,\n\ttype KeystrokeInfo\n} from '@ckeditor/ckeditor5-utils';\n\nimport WidgetTypeAround from './widgettypearound/widgettypearound.js';\nimport verticalNavigationHandler from './verticalnavigation.js';\nimport { getLabel, isWidget, WIDGET_SELECTED_CLASS_NAME } from './utils.js';\n\nimport '../theme/widget.css';\n\n/**\n * The widget plugin. It enables base support for widgets.\n *\n * See {@glink api/widget package page} for more details and documentation.\n *\n * This plugin enables multiple behaviors required by widgets:\n *\n * * The model to view selection converter for the editing pipeline (it handles widget custom selection rendering).\n * If a converted selection wraps around a widget element, that selection is marked as\n * {@link module:engine/view/selection~Selection#isFake fake}. Additionally, the `ck-widget_selected` CSS class\n * is added to indicate that widget has been selected.\n * * The mouse and keyboard events handling on and around widget elements.\n */\nexport default class Widget extends Plugin {\n\t/**\n\t * Holds previously selected widgets.\n\t */\n\tprivate _previouslySelected = new Set<ViewElement>();\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Widget' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ WidgetTypeAround, Delete ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst view = editor.editing.view;\n\t\tconst viewDocument = view.document;\n\t\tconst t = editor.t;\n\n\t\t// Model to view selection converter.\n\t\t// Converts selection placed over widget element to fake selection.\n\t\t//\n\t\t// By default, the selection is downcasted by the engine to surround the attribute element, even though its only\n\t\t// child is an inline widget. A similar thing also happens when a collapsed marker is rendered as a UI element\n\t\t// next to an inline widget: the view selection contains both the widget and the marker.\n\t\t//\n\t\t// This prevents creating a correct fake selection when this inline widget is selected. Normalize the selection\n\t\t// in these cases based on the model:\n\t\t//\n\t\t//\t\t[<attributeElement><inlineWidget /></attributeElement>] -> <attributeElement>[<inlineWidget />]</attributeElement>\n\t\t//\t\t[<uiElement></uiElement><inlineWidget />] -> <uiElement></uiElement>[<inlineWidget />]\n\t\t//\n\t\t// Thanks to this:\n\t\t//\n\t\t// * fake selection can be set correctly,\n\t\t// * any logic depending on (View)Selection#getSelectedElement() also works OK.\n\t\t//\n\t\t// See https://github.com/ckeditor/ckeditor5/issues/9524.\n\t\tthis.editor.editing.downcastDispatcher.on<DowncastSelectionEvent>( 'selection', ( evt, data, conversionApi ) => {\n\t\t\tconst viewWriter = conversionApi.writer;\n\t\t\tconst modelSelection = data.selection;\n\n\t\t\t// The collapsed selection can't contain any widget.\n\t\t\tif ( modelSelection.isCollapsed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst selectedModelElement = modelSelection.getSelectedElement();\n\n\t\t\tif ( !selectedModelElement ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst selectedViewElement = editor.editing.mapper.toViewElement( selectedModelElement )!;\n\n\t\t\tif ( !isWidget( selectedViewElement ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( !conversionApi.consumable.consume( modelSelection, 'selection' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tviewWriter.setSelection( viewWriter.createRangeOn( selectedViewElement ), {\n\t\t\t\tfake: true,\n\t\t\t\tlabel: getLabel( selectedViewElement )\n\t\t\t} );\n\t\t} );\n\n\t\t// Mark all widgets inside the selection with the css class.\n\t\t// This handler is registered at the 'low' priority so it's triggered after the real selection conversion.\n\t\tthis.editor.editing.downcastDispatcher.on<DowncastSelectionEvent>( 'selection', ( evt, data, conversionApi ) => {\n\t\t\t// Remove selected class from previously selected widgets.\n\t\t\tthis._clearPreviouslySelectedWidgets( conversionApi.writer );\n\n\t\t\tconst viewWriter = conversionApi.writer;\n\t\t\tconst viewSelection = viewWriter.document.selection;\n\n\t\t\tlet lastMarked = null;\n\n\t\t\tfor ( const range of viewSelection.getRanges() ) {\n\t\t\t\t// Note: There could be multiple selected widgets in a range but no fake selection.\n\t\t\t\t// All of them must be marked as selected, for instance [<widget></widget><widget></widget>]\n\t\t\t\tfor ( const value of range ) {\n\t\t\t\t\tconst node = value.item as ViewElement;\n\t\t\t\t\t// Do not mark nested widgets in selected one. See: #4594\n\t\t\t\t\tif ( isWidget( node ) && !isChild( node, lastMarked ) ) {\n\t\t\t\t\t\tviewWriter.addClass( WIDGET_SELECTED_CLASS_NAME, node );\n\t\t\t\t\t\tthis._previouslySelected.add( node );\n\t\t\t\t\t\tlastMarked = node;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}, { priority: 'low' } );\n\n\t\t// If mouse down is pressed on widget - create selection over whole widget.\n\t\tview.addObserver( MouseObserver );\n\t\tthis.listenTo<ViewDocumentMouseDownEvent>( viewDocument, 'mousedown', ( ...args ) => this._onMousedown( ...args ) );\n\n\t\t// There are two keydown listeners working on different priorities. This allows other\n\t\t// features such as WidgetTypeAround or TableKeyboard to attach their listeners in between\n\t\t// and customize the behavior even further in different content/selection scenarios.\n\t\t//\n\t\t// * The first listener handles changing the selection on arrow key press\n\t\t// if the widget is selected or if the selection is next to a widget and the widget\n\t\t// should become selected upon the arrow key press.\n\t\t//\n\t\t// * The second (late) listener makes sure the default browser action on arrow key press is\n\t\t// prevented when a widget is selected. This prevents the selection from being moved\n\t\t// from a fake selection container.\n\t\tthis.listenTo<ViewDocumentArrowKeyEvent>( viewDocument, 'arrowKey', ( ...args ) => {\n\t\t\tthis._handleSelectionChangeOnArrowKeyPress( ...args );\n\t\t}, { context: [ isWidget, '$text' ] } );\n\n\t\tthis.listenTo<ViewDocumentArrowKeyEvent>( viewDocument, 'arrowKey', ( ...args ) => {\n\t\t\tthis._preventDefaultOnArrowKeyPress( ...args );\n\t\t}, { context: '$root' } );\n\n\t\tthis.listenTo<ViewDocumentArrowKeyEvent>(\n\t\t\tviewDocument,\n\t\t\t'arrowKey',\n\t\t\tverticalNavigationHandler( this.editor.editing ),\n\t\t\t{ context: '$text' }\n\t\t);\n\n\t\t// Handle custom delete behaviour.\n\t\tthis.listenTo<ViewDocumentDeleteEvent>( viewDocument, 'delete', ( evt, data ) => {\n\t\t\tif ( this._handleDelete( data.direction == 'forward' ) ) {\n\t\t\t\tdata.preventDefault();\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { context: '$root' } );\n\n\t\t// Handle Tab key while a widget is selected.\n\t\tthis.listenTo<ViewDocumentTabEvent>( viewDocument, 'tab', ( evt, data ) => {\n\t\t\t// This event could be triggered from inside the widget, but we are interested\n\t\t\t// only when the widget is selected itself.\n\t\t\tif ( evt.eventPhase != 'atTarget' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( data.shiftKey ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this._selectFirstNestedEditable() ) {\n\t\t\t\tdata.preventDefault();\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { context: isWidget, priority: 'low' } );\n\n\t\t// Handle Shift+Tab key while caret inside a widget editable.\n\t\tthis.listenTo<ViewDocumentTabEvent>( viewDocument, 'tab', ( evt, data ) => {\n\t\t\tif ( !data.shiftKey ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this._selectAncestorWidget() ) {\n\t\t\t\tdata.preventDefault();\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { priority: 'low' } );\n\n\t\t// Handle Esc key while inside a nested editable.\n\t\tthis.listenTo<ViewDocumentKeyDownEvent>( viewDocument, 'keydown', ( evt, data ) => {\n\t\t\tif ( data.keystroke != keyCodes.esc ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this._selectAncestorWidget() ) {\n\t\t\t\tdata.preventDefault();\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { priority: 'low' } );\n\n\t\t// Add the information about the keystrokes to the accessibility database.\n\t\teditor.accessibility.addKeystrokeInfoGroup( {\n\t\t\tid: 'widget',\n\t\t\tlabel: t( 'Keystrokes that can be used when a widget is selected (for example: image, table, etc.)' ),\n\t\t\tkeystrokes: [\n\t\t\t\t{\n\t\t\t\t\tlabel: t( 'Move focus from an editable area back to the parent widget' ),\n\t\t\t\t\tkeystroke: 'Esc'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: t( 'Insert a new paragraph directly after a widget' ),\n\t\t\t\t\tkeystroke: 'Enter'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: t( 'Insert a new paragraph directly before a widget' ),\n\t\t\t\t\tkeystroke: 'Shift+Enter'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: t( 'Move the caret to allow typing directly before a widget' ),\n\t\t\t\t\tkeystroke: [ [ 'arrowup' ], [ 'arrowleft' ] ]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: t( 'Move the caret to allow typing directly after a widget' ),\n\t\t\t\t\tkeystroke: [ [ 'arrowdown' ], [ 'arrowright' ] ]\n\t\t\t\t}\n\t\t\t]\n\t\t} );\n\t}\n\n\t/**\n\t * Handles {@link module:engine/view/document~Document#event:mousedown mousedown} events on widget elements.\n\t */\n\tprivate _onMousedown( eventInfo: EventInfo, domEventData: DomEventData<MouseEvent> ) {\n\t\tconst editor = this.editor;\n\t\tconst view = editor.editing.view;\n\t\tconst viewDocument = view.document;\n\t\tlet element: ViewElement | null = domEventData.target;\n\n\t\t// If triple click should select entire paragraph.\n\t\tif ( domEventData.domEvent.detail >= 3 ) {\n\t\t\tif ( this._selectBlockContent( element ) ) {\n\t\t\t\tdomEventData.preventDefault();\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// If target is not a widget element - check if one of the ancestors is.\n\t\tif ( !isWidget( element ) ) {\n\t\t\tconst editableOrWidgetElement = findClosestEditableOrWidgetAncestor( element );\n\n\t\t\tif ( !editableOrWidgetElement ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isWidget( editableOrWidgetElement ) ) {\n\t\t\t\telement = editableOrWidgetElement;\n\t\t\t} else {\n\t\t\t\t// Pick view range from the point where the mouse was clicked.\n\t\t\t\tconst clickTargetFromPoint = getElementFromMouseEvent( view, domEventData );\n\n\t\t\t\tif ( clickTargetFromPoint && isWidget( clickTargetFromPoint ) ) {\n\t\t\t\t\telement = clickTargetFromPoint;\n\t\t\t\t} else {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// On Android selection would jump to the first table cell, on other devices\n\t\t// we can't block it (and don't need to) because of drag and drop support.\n\t\tif ( env.isAndroid ) {\n\t\t\tdomEventData.preventDefault();\n\t\t}\n\n\t\t// Focus editor if is not focused already.\n\t\tif ( !viewDocument.isFocused ) {\n\t\t\tview.focus();\n\t\t}\n\n\t\t// Create model selection over widget.\n\t\tconst modelElement = editor.editing.mapper.toModelElement( element );\n\n\t\tthis._setSelectionOverElement( modelElement! );\n\t}\n\n\t/**\n\t * Selects entire block content, e.g. on triple click it selects entire paragraph.\n\t */\n\tprivate _selectBlockContent( element: ViewElement ): boolean {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst mapper = editor.editing.mapper;\n\t\tconst schema = model.schema;\n\n\t\tconst viewElement = mapper.findMappedViewAncestor( this.editor.editing.view.createPositionAt( element, 0 ) );\n\t\tconst modelElement = findTextBlockAncestor( mapper.toModelElement( viewElement )!, model.schema );\n\n\t\tif ( !modelElement ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tmodel.change( writer => {\n\t\t\tconst nextTextBlock = !schema.isLimit( modelElement ) ?\n\t\t\t\tfindNextTextBlock( writer.createPositionAfter( modelElement ), schema ) :\n\t\t\t\tnull;\n\n\t\t\tconst start = writer.createPositionAt( modelElement, 0 );\n\t\t\tconst end = nextTextBlock ?\n\t\t\t\twriter.createPositionAt( nextTextBlock, 0 ) :\n\t\t\t\twriter.createPositionAt( modelElement, 'end' );\n\n\t\t\twriter.setSelection( writer.createRange( start, end ) );\n\t\t} );\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Handles {@link module:engine/view/document~Document#event:keydown keydown} events and changes\n\t * the model selection when:\n\t *\n\t * * arrow key is pressed when the widget is selected,\n\t * * the selection is next to a widget and the widget should become selected upon the arrow key press.\n\t *\n\t * See {@link #_preventDefaultOnArrowKeyPress}.\n\t */\n\tprivate _handleSelectionChangeOnArrowKeyPress( eventInfo: EventInfo, domEventData: DomEventData & KeystrokeInfo ) {\n\t\tconst keyCode = domEventData.keyCode;\n\n\t\tconst model = this.editor.model;\n\t\tconst schema = model.schema;\n\t\tconst modelSelection = model.document.selection;\n\t\tconst objectElement = modelSelection.getSelectedElement();\n\t\tconst direction = getLocalizedArrowKeyCodeDirection( keyCode, this.editor.locale.contentLanguageDirection );\n\t\tconst isForward = direction == 'down' || direction == 'right';\n\t\tconst isVerticalNavigation = direction == 'up' || direction == 'down';\n\n\t\t// If object element is selected.\n\t\tif ( objectElement && schema.isObject( objectElement ) ) {\n\t\t\tconst position = isForward ? modelSelection.getLastPosition() : modelSelection.getFirstPosition();\n\t\t\tconst newRange = schema.getNearestSelectionRange( position!, isForward ? 'forward' : 'backward' );\n\n\t\t\tif ( newRange ) {\n\t\t\t\tmodel.change( writer => {\n\t\t\t\t\twriter.setSelection( newRange );\n\t\t\t\t} );\n\n\t\t\t\tdomEventData.preventDefault();\n\t\t\t\teventInfo.stop();\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Handle collapsing of the selection when there is any widget on the edge of selection.\n\t\t// This is needed because browsers have problems with collapsing such selection.\n\t\tif ( !modelSelection.isCollapsed && !domEventData.shiftKey ) {\n\t\t\tconst firstPosition = modelSelection.getFirstPosition();\n\t\t\tconst lastPosition = modelSelection.getLastPosition();\n\n\t\t\tconst firstSelectedNode = firstPosition!.nodeAfter;\n\t\t\tconst lastSelectedNode = lastPosition!.nodeBefore;\n\n\t\t\tif ( firstSelectedNode && schema.isObject( firstSelectedNode ) || lastSelectedNode && schema.isObject( lastSelectedNode ) ) {\n\t\t\t\tmodel.change( writer => {\n\t\t\t\t\twriter.setSelection( isForward ? lastPosition : firstPosition );\n\t\t\t\t} );\n\n\t\t\t\tdomEventData.preventDefault();\n\t\t\t\teventInfo.stop();\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Return if not collapsed.\n\t\tif ( !modelSelection.isCollapsed ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If selection is next to object element.\n\n\t\tconst objectElementNextToSelection = this._getObjectElementNextToSelection( isForward );\n\n\t\tif ( objectElementNextToSelection && schema.isObject( objectElementNextToSelection ) ) {\n\t\t\t// Do not select an inline widget while handling up/down arrow.\n\t\t\tif ( schema.isInline( objectElementNextToSelection ) && isVerticalNavigation ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._setSelectionOverElement( objectElementNextToSelection );\n\n\t\t\tdomEventData.preventDefault();\n\t\t\teventInfo.stop();\n\t\t}\n\t}\n\n\t/**\n\t * Handles {@link module:engine/view/document~Document#event:keydown keydown} events and prevents\n\t * the default browser behavior to make sure the fake selection is not being moved from a fake selection\n\t * container.\n\t *\n\t * See {@link #_handleSelectionChangeOnArrowKeyPress}.\n\t */\n\tprivate _preventDefaultOnArrowKeyPress( eventInfo: EventInfo, domEventData: DomEventData ) {\n\t\tconst model = this.editor.model;\n\t\tconst schema = model.schema;\n\t\tconst objectElement = model.document.selection.getSelectedElement();\n\n\t\t// If object element is selected.\n\t\tif ( objectElement && schema.isObject( objectElement ) ) {\n\t\t\tdomEventData.preventDefault();\n\t\t\teventInfo.stop();\n\t\t}\n\t}\n\n\t/**\n\t * Handles delete keys: backspace and delete.\n\t *\n\t * @param isForward Set to true if delete was performed in forward direction.\n\t * @returns Returns `true` if keys were handled correctly.\n\t */\n\tprivate _handleDelete( isForward: boolean ) {\n\t\tconst modelDocument = this.editor.model.document;\n\t\tconst modelSelection = modelDocument.selection;\n\n\t\t// Do nothing when the read only mode is enabled.\n\t\tif ( !this.editor.model.canEditAt( modelSelection ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Do nothing on non-collapsed selection.\n\t\tif ( !modelSelection.isCollapsed ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst objectElement = this._getObjectElementNextToSelection( isForward );\n\n\t\tif ( objectElement ) {\n\t\t\tthis.editor.model.change( writer => {\n\t\t\t\tlet previousNode = modelSelection.anchor!.parent;\n\n\t\t\t\t// Remove previous element if empty.\n\t\t\t\twhile ( previousNode.isEmpty ) {\n\t\t\t\t\tconst nodeToRemove = previousNode;\n\t\t\t\t\tpreviousNode = nodeToRemove.parent!;\n\n\t\t\t\t\twriter.remove( nodeToRemove as Element );\n\t\t\t\t}\n\n\t\t\t\tthis._setSelectionOverElement( objectElement );\n\t\t\t} );\n\n\t\t\treturn true;\n\t\t}\n\t}\n\n\t/**\n\t * Sets {@link module:engine/model/selection~Selection document's selection} over given element.\n\t *\n\t * @internal\n\t */\n\tpublic _setSelectionOverElement( element: Node ): void {\n\t\tthis.editor.model.change( writer => {\n\t\t\twriter.setSelection( writer.createRangeOn( element ) );\n\t\t} );\n\t}\n\n\t/**\n\t * Checks if {@link module:engine/model/element~Element element} placed next to the current\n\t * {@link module:engine/model/selection~Selection model selection} exists and is marked in\n\t * {@link module:engine/model/schema~Schema schema} as `object`.\n\t *\n\t * @internal\n\t * @param forward Direction of checking.\n\t */\n\tpublic _getObjectElementNextToSelection( forward: boolean ): Element | null {\n\t\tconst model = this.editor.model;\n\t\tconst schema = model.schema;\n\t\tconst modelSelection = model.document.selection;\n\n\t\t// Clone current selection to use it as a probe. We must leave default selection as it is so it can return\n\t\t// to its current state after undo.\n\t\tconst probe = model.createSelection( modelSelection );\n\t\tmodel.modifySelection( probe, { direction: forward ? 'forward' : 'backward' } );\n\n\t\t// The selection didn't change so there is nothing there.\n\t\tif ( probe.isEqual( modelSelection ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst objectElement = forward ? probe.focus!.nodeBefore : probe.focus!.nodeAfter;\n\n\t\tif ( !!objectElement && schema.isObject( objectElement ) ) {\n\t\t\treturn objectElement as Element;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Removes CSS class from previously selected widgets.\n\t */\n\tprivate _clearPreviouslySelectedWidgets( writer: DowncastWriter ) {\n\t\tfor ( const widget of this._previouslySelected ) {\n\t\t\twriter.removeClass( WIDGET_SELECTED_CLASS_NAME, widget );\n\t\t}\n\n\t\tthis._previouslySelected.clear();\n\t}\n\n\t/**\n\t * Moves the document selection into the first nested editable.\n\t */\n\tprivate _selectFirstNestedEditable(): boolean {\n\t\tconst editor = this.editor;\n\t\tconst view = this.editor.editing.view;\n\t\tconst viewDocument = view.document;\n\n\t\tfor ( const item of viewDocument.selection.getFirstRange()!.getItems() ) {\n\t\t\tif ( item.is( 'editableElement' ) ) {\n\t\t\t\tconst modelElement = editor.editing.mapper.toModelElement( item );\n\n\t\t\t\t/* istanbul ignore next -- @preserve */\n\t\t\t\tif ( !modelElement ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst position = editor.model.createPositionAt( modelElement, 0 );\n\t\t\t\tconst newRange = editor.model.schema.getNearestSelectionRange( position, 'forward' );\n\n\t\t\t\teditor.model.change( writer => {\n\t\t\t\t\twriter.setSelection( newRange );\n\t\t\t\t} );\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Updates the document selection so that it selects first ancestor widget.\n\t */\n\tprivate _selectAncestorWidget(): boolean {\n\t\tconst editor = this.editor;\n\t\tconst mapper = editor.editing.mapper;\n\t\tconst selection = editor.editing.view.document.selection;\n\n\t\tconst positionParent = selection.getFirstPosition()!.parent;\n\n\t\tconst positionParentElement = positionParent.is( '$text' ) ?\n\t\t\tpositionParent.parent as ViewElement :\n\t\t\tpositionParent as ViewElement;\n\n\t\tconst viewElement = positionParentElement.findAncestor( isWidget );\n\n\t\tif ( !viewElement ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst modelElement = mapper.toModelElement( viewElement );\n\n\t\t/* istanbul ignore next -- @preserve */\n\t\tif ( !modelElement ) {\n\t\t\treturn false;\n\t\t}\n\n\t\teditor.model.change( writer => {\n\t\t\twriter.setSelection( modelElement, 'on' );\n\t\t} );\n\n\t\treturn true;\n\t}\n}\n\n/**\n * Finds the closest ancestor element that is either an editable element or a widget.\n *\n * @param element The element from which to start searching.\n * @returns The closest ancestor element that is either an editable element or a widget, or null if none is found.\n */\nfunction findClosestEditableOrWidgetAncestor( element: ViewElement ): ViewElement | null {\n\tlet currentElement: ViewElement | null = element;\n\n\twhile ( currentElement ) {\n\t\tif ( currentElement.is( 'editableElement' ) || isWidget( currentElement ) ) {\n\t\t\treturn currentElement;\n\t\t}\n\n\t\tcurrentElement = currentElement.parent as ViewElement | null;\n\t}\n\n\treturn null;\n}\n\n/**\n * Retrieves the ViewElement associated with a mouse event in the editing view.\n *\n * @param view The editing view.\n * @param domEventData The DOM event data containing the mouse event.\n * @returns The ViewElement associated with the mouse event, or null if not found.\n */\nfunction getElementFromMouseEvent( view: EditingView, domEventData: DomEventData<MouseEvent> ): ViewElement | null {\n\tconst domRange = getRangeFromMouseEvent( domEventData.domEvent );\n\n\tif ( !domRange ) {\n\t\treturn null;\n\t}\n\n\tconst viewRange = view.domConverter.domRangeToView( domRange );\n\n\tif ( !viewRange ) {\n\t\treturn null;\n\t}\n\n\tconst viewPosition = viewRange.start;\n\n\tif ( !viewPosition.parent ) {\n\t\treturn null;\n\t}\n\n\t// Click after a widget tend to return position at the end of the editable element\n\t// so use the node before it if range is at the end of a parent.\n\tconst viewNode = viewPosition.parent.is( 'editableElement' ) && viewPosition.isAtEnd && viewPosition.nodeBefore || viewPosition.parent;\n\n\tif ( viewNode.is( '$text' ) ) {\n\t\treturn viewNode.parent as ViewElement;\n\t}\n\n\treturn viewNode as ViewElement;\n}\n\n/**\n * Checks whether the specified `element` is a child of the `parent` element.\n *\n * @param element An element to check.\n * @param parent A parent for the element.\n */\nfunction isChild( element: ViewElement, parent: ViewElement | null ) {\n\tif ( !parent ) {\n\t\treturn false;\n\t}\n\n\treturn Array.from( element.getAncestors() ).includes( parent );\n}\n\n/**\n * Returns nearest text block ancestor.\n */\nfunction findTextBlockAncestor( modelElement: Element, schema: Schema ): Element | null {\n\tfor ( const element of modelElement.getAncestors( { includeSelf: true, parentFirst: true } ) ) {\n\t\tif ( schema.checkChild( element as Element, '$text' ) ) {\n\t\t\treturn element as Element;\n\t\t}\n\n\t\t// Do not go beyond nested editable.\n\t\tif ( schema.isLimit( element ) && !schema.isObject( element ) ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn null;\n}\n\n/**\n * Returns next text block where could put selection.\n */\nfunction findNextTextBlock( position: Position, schema: Schema ): Element | null {\n\tconst treeWalker = new TreeWalker( { startPosition: position } );\n\n\tfor ( const { item } of treeWalker ) {\n\t\tif ( schema.isLimit( item ) || !item.is( 'element' ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( schema.checkChild( item, '$text' ) ) {\n\t\t\treturn item;\n\t\t}\n\t}\n\n\treturn null;\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/widgettoolbarrepository\n */\n\nimport {\n\tPlugin,\n\ttype Editor,\n\ttype ToolbarConfigItem\n} from '@ckeditor/ckeditor5-core';\n\nimport type { ViewDocumentSelection, ViewElement } from '@ckeditor/ckeditor5-engine';\n\nimport {\n\tBalloonPanelView,\n\tContextualBalloon,\n\tToolbarView,\n\ttype BalloonToolbar,\n\ttype BalloonToolbarShowEvent,\n\ttype EditorUIUpdateEvent\n} from '@ckeditor/ckeditor5-ui';\n\nimport {\n\tCKEditorError,\n\tlogWarning,\n\ttype ObservableChangeEvent,\n\ttype RectSource\n} from '@ckeditor/ckeditor5-utils';\n\nimport { isWidget } from './utils.js';\n\n/**\n * Widget toolbar repository plugin. A central point for registering widget toolbars. This plugin handles the whole\n * toolbar rendering process and exposes a concise API.\n *\n * To add a toolbar for your widget use the {@link ~WidgetToolbarRepository#register `WidgetToolbarRepository#register()`} method.\n *\n * The following example comes from the {@link module:image/imagetoolbar~ImageToolbar} plugin:\n *\n * ```ts\n * class ImageToolbar extends Plugin {\n * \tstatic get requires() {\n * \t\treturn [ WidgetToolbarRepository ];\n * \t}\n *\n * \tafterInit() {\n * \t\tconst editor = this.editor;\n * \t\tconst widgetToolbarRepository = editor.plugins.get( WidgetToolbarRepository );\n *\n * \t\twidgetToolbarRepository.register( 'image', {\n * \t\t\titems: editor.config.get( 'image.toolbar' ),\n * \t\t\tgetRelatedElement: getClosestSelectedImageWidget\n * \t\t} );\n * \t}\n * }\n * ```\n */\nexport default class WidgetToolbarRepository extends Plugin {\n\t/**\n\t * A map of toolbar definitions.\n\t */\n\tprivate _toolbarDefinitions = new Map<string, WidgetRepositoryToolbarDefinition>();\n\n\tprivate _balloon!: ContextualBalloon;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ContextualBalloon ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'WidgetToolbarRepository' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\n\t\t// Disables the default balloon toolbar for all widgets.\n\t\tif ( editor.plugins.has( 'BalloonToolbar' ) ) {\n\t\t\tconst balloonToolbar: BalloonToolbar = editor.plugins.get( 'BalloonToolbar' );\n\n\t\t\tthis.listenTo<BalloonToolbarShowEvent>( balloonToolbar, 'show', evt => {\n\t\t\t\tif ( isWidgetSelected( editor.editing.view.document.selection ) ) {\n\t\t\t\t\tevt.stop();\n\t\t\t\t}\n\t\t\t}, { priority: 'high' } );\n\t\t}\n\n\t\tthis._balloon = this.editor.plugins.get( 'ContextualBalloon' );\n\n\t\tthis.on<ObservableChangeEvent>( 'change:isEnabled', () => {\n\t\t\tthis._updateToolbarsVisibility();\n\t\t} );\n\n\t\tthis.listenTo<EditorUIUpdateEvent>( editor.ui, 'update', () => {\n\t\t\tthis._updateToolbarsVisibility();\n\t\t} );\n\n\t\t// UI#update is not fired after focus is back in editor, we need to check if balloon panel should be visible.\n\t\tthis.listenTo<ObservableChangeEvent>( editor.ui.focusTracker, 'change:isFocused', () => {\n\t\t\tthis._updateToolbarsVisibility();\n\t\t}, { priority: 'low' } );\n\t}\n\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tfor ( const toolbarConfig of this._toolbarDefinitions.values() ) {\n\t\t\ttoolbarConfig.view.destroy();\n\t\t}\n\t}\n\n\t/**\n\t * Registers toolbar in the WidgetToolbarRepository. It renders it in the `ContextualBalloon` based on the value of the invoked\n\t * `getRelatedElement` function. Toolbar items are gathered from `items` array.\n\t * The balloon's CSS class is by default `ck-toolbar-container` and may be override with the `balloonClassName` option.\n\t *\n\t * Note: This method should be called in the {@link module:core/plugin~PluginInterface#afterInit `Plugin#afterInit()`}\n\t * callback (or later) to make sure that the given toolbar items were already registered by other plugins.\n\t *\n\t * @param toolbarId An id for the toolbar. Used to\n\t * @param options.ariaLabel Label used by assistive technologies to describe this toolbar element.\n\t * @param options.items Array of toolbar items.\n\t * @param options.getRelatedElement Callback which returns an element the toolbar should be attached to.\n\t * @param options.balloonClassName CSS class for the widget balloon.\n\t */\n\tpublic register(\n\t\ttoolbarId: string,\n\t\t{ ariaLabel, items, getRelatedElement, balloonClassName = 'ck-toolbar-container' }: {\n\t\t\tariaLabel?: string;\n\t\t\titems: Array<ToolbarConfigItem>;\n\t\t\tgetRelatedElement: ( selection: ViewDocumentSelection ) => ( ViewElement | null );\n\t\t\tballoonClassName?: string;\n\t\t}\n\t): void {\n\t\t// Trying to register a toolbar without any item.\n\t\tif ( !items.length ) {\n\t\t\t/**\n\t\t\t * When {@link module:widget/widgettoolbarrepository~WidgetToolbarRepository#register registering} a new widget toolbar, you\n\t\t\t * need to provide a non-empty array with the items that will be inserted into the toolbar.\n\t\t\t *\n\t\t\t * If you see this error when integrating the editor, you likely forgot to configure one of the widget toolbars.\n\t\t\t *\n\t\t\t * See for instance:\n\t\t\t *\n\t\t\t * * {@link module:table/tableconfig~TableConfig#contentToolbar `config.table.contentToolbar`}\n\t\t\t * * {@link module:image/imageconfig~ImageConfig#toolbar `config.image.toolbar`}\n\t\t\t *\n\t\t\t * @error widget-toolbar-no-items\n\t\t\t * @param toolbarId The id of the toolbar that has not been configured correctly.\n\t\t\t */\n\t\t\tlogWarning( 'widget-toolbar-no-items', { toolbarId } );\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst toolbarView = new ToolbarView( editor.locale );\n\n\t\ttoolbarView.ariaLabel = ariaLabel || t( 'Widget toolbar' );\n\n\t\tif ( this._toolbarDefinitions.has( toolbarId ) ) {\n\t\t\t/**\n\t\t\t * Toolbar with the given id was already added.\n\t\t\t *\n\t\t\t * @error widget-toolbar-duplicated\n\t\t\t * @param toolbarId Toolbar id.\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'widget-toolbar-duplicated', this, { toolbarId } );\n\t\t}\n\n\t\tconst toolbarDefinition = {\n\t\t\tview: toolbarView,\n\t\t\tgetRelatedElement,\n\t\t\tballoonClassName,\n\t\t\titemsConfig: items,\n\t\t\tinitialized: false\n\t\t};\n\n\t\t// Register the toolbar so it becomes available for Alt+F10 and Esc navigation.\n\t\teditor.ui.addToolbar( toolbarView, {\n\t\t\tisContextual: true,\n\t\t\tbeforeFocus: () => {\n\t\t\t\tconst relatedElement = getRelatedElement( editor.editing.view.document.selection );\n\n\t\t\t\tif ( relatedElement ) {\n\t\t\t\t\tthis._showToolbar( toolbarDefinition, relatedElement );\n\t\t\t\t}\n\t\t\t},\n\t\t\tafterBlur: () => {\n\t\t\t\tthis._hideToolbar( toolbarDefinition );\n\t\t\t}\n\t\t} );\n\n\t\tthis._toolbarDefinitions.set( toolbarId, toolbarDefinition );\n\t}\n\n\t/**\n\t * Iterates over stored toolbars and makes them visible or hidden.\n\t */\n\tprivate _updateToolbarsVisibility() {\n\t\tlet maxRelatedElementDepth = 0;\n\t\tlet deepestRelatedElement = null;\n\t\tlet deepestToolbarDefinition = null;\n\n\t\tfor ( const definition of this._toolbarDefinitions.values() ) {\n\t\t\tconst relatedElement = definition.getRelatedElement( this.editor.editing.view.document.selection );\n\n\t\t\tif ( !this.isEnabled || !relatedElement ) {\n\t\t\t\tif ( this._isToolbarInBalloon( definition ) ) {\n\t\t\t\t\tthis._hideToolbar( definition );\n\t\t\t\t}\n\t\t\t} else if ( !this.editor.ui.focusTracker.isFocused ) {\n\t\t\t\tif ( this._isToolbarVisible( definition ) ) {\n\t\t\t\t\tthis._hideToolbar( definition );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst relatedElementDepth = relatedElement.getAncestors().length;\n\n\t\t\t\t// Many toolbars can express willingness to be displayed but they do not know about\n\t\t\t\t// each other. Figure out which toolbar is deepest in the view tree to decide which\n\t\t\t\t// should be displayed. For instance, if a selected image is inside a table cell, display\n\t\t\t\t// the ImageToolbar rather than the TableToolbar (#60).\n\t\t\t\tif ( relatedElementDepth > maxRelatedElementDepth ) {\n\t\t\t\t\tmaxRelatedElementDepth = relatedElementDepth;\n\t\t\t\t\tdeepestRelatedElement = relatedElement;\n\t\t\t\t\tdeepestToolbarDefinition = definition;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( deepestToolbarDefinition ) {\n\t\t\tthis._showToolbar( deepestToolbarDefinition, deepestRelatedElement! );\n\t\t}\n\t}\n\n\t/**\n\t * Hides the given toolbar.\n\t */\n\tprivate _hideToolbar( toolbarDefinition: WidgetRepositoryToolbarDefinition ) {\n\t\tthis._balloon.remove( toolbarDefinition.view );\n\t\tthis.stopListening( this._balloon, 'change:visibleView' );\n\t}\n\n\t/**\n\t * Shows up the toolbar if the toolbar is not visible.\n\t * Otherwise, repositions the toolbar's balloon when toolbar's view is the most top view in balloon stack.\n\t *\n\t * It might happen here that the toolbar's view is under another view. Then do nothing as the other toolbar view\n\t * should be still visible after the {@link module:ui/editorui/editorui~EditorUI#event:update}.\n\t */\n\tprivate _showToolbar( toolbarDefinition: WidgetRepositoryToolbarDefinition, relatedElement: ViewElement ) {\n\t\tif ( this._isToolbarVisible( toolbarDefinition ) ) {\n\t\t\trepositionContextualBalloon( this.editor, relatedElement );\n\t\t} else if ( !this._isToolbarInBalloon( toolbarDefinition ) ) {\n\t\t\tif ( !toolbarDefinition.initialized ) {\n\t\t\t\ttoolbarDefinition.initialized = true;\n\t\t\t\ttoolbarDefinition.view.fillFromConfig( toolbarDefinition.itemsConfig, this.editor.ui.componentFactory );\n\t\t\t}\n\n\t\t\tthis._balloon.add( {\n\t\t\t\tview: toolbarDefinition.view,\n\t\t\t\tposition: getBalloonPositionData( this.editor, relatedElement ),\n\t\t\t\tballoonClassName: toolbarDefinition.balloonClassName\n\t\t\t} );\n\n\t\t\t// Update toolbar position each time stack with toolbar view is switched to visible.\n\t\t\t// This is in a case target element has changed when toolbar was in invisible stack\n\t\t\t// e.g. target image was wrapped by a block quote.\n\t\t\t// See https://github.com/ckeditor/ckeditor5-widget/issues/92.\n\t\t\tthis.listenTo<ObservableChangeEvent>( this._balloon, 'change:visibleView', () => {\n\t\t\t\tfor ( const definition of this._toolbarDefinitions.values() ) {\n\t\t\t\t\tif ( this._isToolbarVisible( definition ) ) {\n\t\t\t\t\t\tconst relatedElement = definition.getRelatedElement( this.editor.editing.view.document.selection );\n\t\t\t\t\t\trepositionContextualBalloon( this.editor, relatedElement! );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t}\n\n\tprivate _isToolbarVisible( toolbar: WidgetRepositoryToolbarDefinition ) {\n\t\treturn this._balloon.visibleView === toolbar.view;\n\t}\n\n\tprivate _isToolbarInBalloon( toolbar: WidgetRepositoryToolbarDefinition ) {\n\t\treturn this._balloon.hasView( toolbar.view );\n\t}\n}\n\nfunction repositionContextualBalloon( editor: Editor, relatedElement: ViewElement ) {\n\tconst balloon: ContextualBalloon = editor.plugins.get( 'ContextualBalloon' );\n\tconst position = getBalloonPositionData( editor, relatedElement );\n\n\tballoon.updatePosition( position );\n}\n\nfunction getBalloonPositionData( editor: Editor, relatedElement: ViewElement ) {\n\tconst editingView = editor.editing.view;\n\tconst defaultPositions = BalloonPanelView.defaultPositions;\n\n\treturn {\n\t\ttarget: editingView.domConverter.mapViewToDom( relatedElement ) as RectSource | undefined,\n\t\tpositions: [\n\t\t\tdefaultPositions.northArrowSouth,\n\t\t\tdefaultPositions.northArrowSouthWest,\n\t\t\tdefaultPositions.northArrowSouthEast,\n\t\t\tdefaultPositions.southArrowNorth,\n\t\t\tdefaultPositions.southArrowNorthWest,\n\t\t\tdefaultPositions.southArrowNorthEast,\n\t\t\tdefaultPositions.viewportStickyNorth\n\t\t]\n\t};\n}\n\nfunction isWidgetSelected( selection: ViewDocumentSelection ) {\n\tconst viewElement = selection.getSelectedElement();\n\n\treturn !!( viewElement && isWidget( viewElement ) );\n}\n\n/**\n * The toolbar definition object used by the toolbar repository to manage toolbars.\n * It contains information necessary to display the toolbar in the\n * {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon contextual balloon} and\n * update it during its life (display) cycle.\n */\ninterface WidgetRepositoryToolbarDefinition {\n\n\t/**\n\t * The UI view of the toolbar.\n\t */\n\tview: ToolbarView;\n\n\t/**\n\t * A function that returns an engine {@link module:engine/view/view~View}\n\t * element the toolbar is to be attached to. For instance, an image widget or a table widget (or `null` when\n\t * there is no such element). The function accepts an instance of {@link module:engine/view/selection~Selection}.\n\t */\n\tgetRelatedElement: ( selection: ViewDocumentSelection ) => ViewElement | null | undefined;\n\n\t/**\n\t * CSS class for the widget balloon when a toolbar is displayed.\n\t */\n\tballoonClassName: string;\n\n\titemsConfig: Array<ToolbarConfigItem>;\n\n\tinitialized: boolean;\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/widgetresize/resizerstate\n */\n\nimport { ObservableMixin, Rect } from '@ckeditor/ckeditor5-utils';\n\nimport type { ResizerOptions } from '../widgetresize.js';\nimport { calculateResizeHostPercentageWidth } from '../utils.js';\n\n/**\n * Stores the internal state of a single resizable object.\n */\nexport default class ResizeState extends /* #__PURE__ */ ObservableMixin() {\n\t/**\n\t * The position of the handle that initiated the resizing. E.g. `\"top-left\"`, `\"bottom-right\"` etc. or `null`\n\t * if unknown.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public activeHandlePosition: string | null;\n\n\t/**\n\t * The width (percents) proposed, but not committed yet, in the current resize process.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public proposedWidthPercents: number | null;\n\n\t/**\n\t * The width (pixels) proposed, but not committed yet, in the current resize process.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public proposedWidth: number | null;\n\n\t/**\n\t * The height (pixels) proposed, but not committed yet, in the current resize process.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public proposedHeight: number | null;\n\n\t/**\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public proposedHandleHostWidth: number | null;\n\n\t/**\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public proposedHandleHostHeight: number | null;\n\n\t/**\n\t * The reference point of the resizer where the dragging started. It is used to measure the distance the user cursor\n\t * traveled, so how much the image should be enlarged.\n\t * This information is only known after the DOM was rendered, so it will be updated later.\n\t *\n\t * @internal\n\t */\n\tpublic _referenceCoordinates: { x: number; y: number } | null;\n\n\t/**\n\t * Resizer options.\n\t */\n\tprivate readonly _options: ResizerOptions;\n\n\t/**\n\t * The original width (pixels) of the resized object when the resize process was started.\n\t *\n\t * @readonly\n\t */\n\tprivate _originalWidth?: number;\n\n\t/**\n\t * The original height (pixels) of the resized object when the resize process was started.\n\t *\n\t * @readonly\n\t */\n\tprivate _originalHeight?: number;\n\n\t/**\n\t * The original width (percents) of the resized object when the resize process was started.\n\t *\n\t * @readonly\n\t */\n\tprivate _originalWidthPercents?: number;\n\n\t/**\n\t * A width to height ratio of the resized image.\n\t *\n\t * @readonly\n\t */\n\tprivate _aspectRatio?: number;\n\n\t/**\n\t * @param options Resizer options.\n\t */\n\tconstructor( options: ResizerOptions ) {\n\t\tsuper();\n\n\t\tthis.set( 'activeHandlePosition', null );\n\t\tthis.set( 'proposedWidthPercents', null );\n\t\tthis.set( 'proposedWidth', null );\n\t\tthis.set( 'proposedHeight', null );\n\t\tthis.set( 'proposedHandleHostWidth', null );\n\t\tthis.set( 'proposedHandleHostHeight', null );\n\n\t\tthis._options = options;\n\t\tthis._referenceCoordinates = null;\n\t}\n\n\t/**\n\t * The original width (pixels) of the resized object when the resize process was started.\n\t */\n\tpublic get originalWidth(): number | undefined {\n\t\treturn this._originalWidth;\n\t}\n\n\t/**\n\t * The original height (pixels) of the resized object when the resize process was started.\n\t */\n\tpublic get originalHeight(): number | undefined {\n\t\treturn this._originalHeight;\n\t}\n\n\t/**\n\t * The original width (percents) of the resized object when the resize process was started.\n\t */\n\tpublic get originalWidthPercents(): number | undefined {\n\t\treturn this._originalWidthPercents;\n\t}\n\n\t/**\n\t * A width to height ratio of the resized image.\n\t */\n\tpublic get aspectRatio(): number | undefined {\n\t\treturn this._aspectRatio;\n\t}\n\n\t/**\n\t *\n\t * @param domResizeHandle The handle used to calculate the reference point.\n\t */\n\tpublic begin( domResizeHandle: HTMLElement, domHandleHost: HTMLElement, domResizeHost: HTMLElement ): void {\n\t\tconst clientRect = new Rect( domHandleHost );\n\n\t\tthis.activeHandlePosition = getHandlePosition( domResizeHandle )!;\n\n\t\tthis._referenceCoordinates = getAbsoluteBoundaryPoint( domHandleHost, getOppositePosition( this.activeHandlePosition ) );\n\n\t\tthis._originalWidth = clientRect.width;\n\t\tthis._originalHeight = clientRect.height;\n\n\t\tthis._aspectRatio = clientRect.width / clientRect.height;\n\n\t\tconst widthStyle = domResizeHost.style.width;\n\n\t\tif ( widthStyle && widthStyle.match( /^\\d+(\\.\\d*)?%$/ ) ) {\n\t\t\tthis._originalWidthPercents = parseFloat( widthStyle );\n\t\t} else {\n\t\t\tthis._originalWidthPercents = calculateResizeHostPercentageWidth( domResizeHost, clientRect );\n\t\t}\n\t}\n\n\tpublic update( newSize: {\n\t\twidth: number;\n\t\theight: number;\n\t\twidthPercents: number;\n\t\thandleHostWidth: number;\n\t\thandleHostHeight: number;\n\t} ): void {\n\t\tthis.proposedWidth = newSize.width;\n\t\tthis.proposedHeight = newSize.height;\n\t\tthis.proposedWidthPercents = newSize.widthPercents;\n\n\t\tthis.proposedHandleHostWidth = newSize.handleHostWidth;\n\t\tthis.proposedHandleHostHeight = newSize.handleHostHeight;\n\t}\n}\n\n/**\n * Returns coordinates of the top-left corner of an element, relative to the document's top-left corner.\n *\n * @param resizerPosition The position of the resize handle, e.g. `\"top-left\"`, `\"bottom-right\"`.\n */\nfunction getAbsoluteBoundaryPoint( element: HTMLElement, resizerPosition: string ) {\n\tconst elementRect = new Rect( element );\n\tconst positionParts = resizerPosition.split( '-' );\n\tconst ret = {\n\t\tx: positionParts[ 1 ] == 'right' ? elementRect.right : elementRect.left,\n\t\ty: positionParts[ 0 ] == 'bottom' ? elementRect.bottom : elementRect.top\n\t};\n\n\tret.x += element.ownerDocument.defaultView!.scrollX;\n\tret.y += element.ownerDocument.defaultView!.scrollY;\n\n\treturn ret;\n}\n\n/**\n * @param resizerPosition The expected resizer position, like `\"top-left\"`, `\"bottom-right\"`.\n * @returns A prefixed HTML class name for the resizer element.\n */\nfunction getResizerHandleClass( resizerPosition: string ) {\n\treturn `ck-widget__resizer__handle-${ resizerPosition }`;\n}\n\n/**\n * Determines the position of a given resize handle.\n *\n * @param domHandle Handle used to calculate the reference point.\n * @returns Returns a string like `\"top-left\"` or `undefined` if not matched.\n */\nfunction getHandlePosition( domHandle: HTMLElement ) {\n\tconst resizerPositions = [ 'top-left', 'top-right', 'bottom-right', 'bottom-left' ];\n\n\tfor ( const position of resizerPositions ) {\n\t\tif ( domHandle.classList.contains( getResizerHandleClass( position ) ) ) {\n\t\t\treturn position;\n\t\t}\n\t}\n}\n\n/**\n * @param position Like `\"top-left\"`.\n * @returns Inverted `position`, e.g. it returns `\"bottom-right\"` if `\"top-left\"` was given as `position`.\n */\nfunction getOppositePosition( position: string ) {\n\tconst parts = position.split( '-' );\n\tconst replacements: Record<string, string> = {\n\t\ttop: 'bottom',\n\t\tbottom: 'top',\n\t\tleft: 'right',\n\t\tright: 'left'\n\t};\n\n\treturn `${ replacements[ parts[ 0 ] ] }-${ replacements[ parts[ 1 ] ] }`;\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/widgetresize/sizeview\n */\n\nimport { View } from '@ckeditor/ckeditor5-ui';\nimport type { ResizerOptions } from '../widgetresize.js';\nimport type ResizeState from './resizerstate.js';\n\n/**\n * A view displaying the proposed new element size during the resizing.\n */\nexport default class SizeView extends View {\n\t/**\n\t * The visibility of the view defined based on the existence of the host proposed dimensions.\n\t *\n\t * @internal\n\t * @observable\n\t * @readonly\n\t */\n\tdeclare public _isVisible: boolean;\n\n\t/**\n\t * The text that will be displayed in the `SizeView` child.\n\t * It can be formatted as the pixel values (e.g. 10x20) or the percentage value (e.g. 10%).\n\t *\n\t * @internal\n\t * @observable\n\t * @readonly\n\t */\n\tdeclare public _label: string;\n\n\t/**\n\t * The position of the view defined based on the host size and active handle position.\n\t *\n\t * @internal\n\t * @observable\n\t * @readonly\n\t */\n\tdeclare public _viewPosition: string;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tconst bind = this.bindTemplate;\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-size-view',\n\t\t\t\t\tbind.to( '_viewPosition', value => value ? `ck-orientation-${ value }` : '' )\n\t\t\t\t],\n\t\t\t\tstyle: {\n\t\t\t\t\tdisplay: bind.if( '_isVisible', 'none', visible => !visible )\n\t\t\t\t}\n\t\t\t},\n\t\t\tchildren: [ {\n\t\t\t\ttext: bind.to( '_label' )\n\t\t\t} ]\n\t\t} );\n\t}\n\n\t/**\n\t * A method used for binding the `SizeView` instance properties to the `ResizeState` instance observable properties.\n\t *\n\t * @internal\n\t * @param options An object defining the resizer options, used for setting the proper size label.\n\t * @param resizeState The `ResizeState` class instance, used for keeping the `SizeView` state up to date.\n\t */\n\tpublic _bindToState( options: ResizerOptions, resizeState: ResizeState ): void {\n\t\tthis.bind( '_isVisible' ).to( resizeState, 'proposedWidth', resizeState, 'proposedHeight', ( width, height ) =>\n\t\t\twidth !== null && height !== null );\n\n\t\tthis.bind( '_label' ).to(\n\t\t\tresizeState, 'proposedHandleHostWidth',\n\t\t\tresizeState, 'proposedHandleHostHeight',\n\t\t\tresizeState, 'proposedWidthPercents',\n\t\t\t( width, height, widthPercents ) => {\n\t\t\t\tif ( options.unit === 'px' ) {\n\t\t\t\t\treturn `${ width }×${ height }`;\n\t\t\t\t} else {\n\t\t\t\t\treturn `${ widthPercents }%`;\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\tthis.bind( '_viewPosition' ).to(\n\t\t\tresizeState, 'activeHandlePosition',\n\t\t\tresizeState, 'proposedHandleHostWidth',\n\t\t\tresizeState, 'proposedHandleHostHeight',\n\t\t\t// If the widget is too small to contain the size label, display the label above.\n\t\t\t( position, width, height ) => width! < 50 || height! < 50 ? 'above-center' : position!\n\t\t);\n\t}\n\n\t/**\n\t * A method used for cleaning up. It removes the bindings and hides the view.\n\t *\n\t * @internal\n\t */\n\tpublic _dismiss(): void {\n\t\tthis.unbind();\n\t\tthis._isVisible = false;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/widgetresize/resizer\n */\n\nimport { Template } from '@ckeditor/ckeditor5-ui';\nimport {\n\tRect,\n\tObservableMixin,\n\tcompareArrays,\n\ttype ObservableChangeEvent,\n\ttype DecoratedMethodEvent\n} from '@ckeditor/ckeditor5-utils';\n\nimport ResizeState from './resizerstate.js';\nimport SizeView from './sizeview.js';\n\nimport type { ResizerOptions } from '../widgetresize.js';\nimport type { ViewElement } from '@ckeditor/ckeditor5-engine';\n\n/**\n * Represents a resizer for a single resizable object.\n */\nexport default class Resizer extends /* #__PURE__ */ ObservableMixin() {\n\t/**\n\t * Flag that indicates whether resizer can be used.\n\t *\n\t * @observable\n\t */\n\tdeclare public isEnabled: boolean;\n\n\t/**\n\t * Flag that indicates that resizer is currently focused.\n\t *\n\t * @observable\n\t */\n\tdeclare public isSelected: boolean;\n\n\t/**\n\t * Flag that indicates whether resizer is rendered (visible on the screen).\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public isVisible: boolean;\n\n\t/**\n\t * Stores the state of the resizable host geometry, such as the original width, the currently proposed height, etc.\n\t *\n\t * Note that a new state is created for each resize transaction.\n\t */\n\tprivate _state!: ResizeState;\n\n\t/**\n\t * A view displaying the proposed new element size during the resizing.\n\t */\n\tprivate _sizeView!: SizeView;\n\n\t/**\n\t * Options passed to the {@link #constructor}.\n\t */\n\tprivate _options: ResizerOptions;\n\n\t/**\n\t * A wrapper that is controlled by the resizer. This is usually a widget element.\n\t */\n\tprivate _viewResizerWrapper: ViewElement | null = null;\n\n\t/**\n\t * The width of the resized {@link module:widget/widgetresize~ResizerOptions#viewElement viewElement} before the resizing started.\n\t */\n\tprivate _initialViewWidth: string | undefined;\n\n\t/**\n\t * @param options Resizer options.\n\t */\n\tconstructor( options: ResizerOptions ) {\n\t\tsuper();\n\n\t\tthis._options = options;\n\n\t\tthis.set( 'isEnabled', true );\n\t\tthis.set( 'isSelected', false );\n\n\t\tthis.bind( 'isVisible' ).to( this, 'isEnabled', this, 'isSelected', ( isEnabled, isSelected ) => isEnabled && isSelected );\n\n\t\tthis.decorate( 'begin' );\n\t\tthis.decorate( 'cancel' );\n\t\tthis.decorate( 'commit' );\n\t\tthis.decorate( 'updateSize' );\n\n\t\tthis.on( 'commit', event => {\n\t\t\t// State might not be initialized yet. In this case, prevent further handling and make sure that the resizer is\n\t\t\t// cleaned up (#5195).\n\t\t\tif ( !this.state.proposedWidth && !this.state.proposedWidthPercents ) {\n\t\t\t\tthis._cleanup();\n\t\t\t\tevent.stop();\n\t\t\t}\n\t\t}, { priority: 'high' } );\n\t}\n\n\t/**\n\t * Stores the state of the resizable host geometry, such as the original width, the currently proposed height, etc.\n\t *\n\t * Note that a new state is created for each resize transaction.\n\t */\n\tpublic get state(): ResizeState {\n\t\treturn this._state;\n\t}\n\n\t/**\n\t * Makes resizer visible in the UI.\n\t */\n\tpublic show(): void {\n\t\tconst editingView = this._options.editor.editing.view;\n\n\t\teditingView.change( writer => {\n\t\t\twriter.removeClass( 'ck-hidden', this._viewResizerWrapper! );\n\t\t} );\n\t}\n\n\t/**\n\t * Hides resizer in the UI.\n\t */\n\tpublic hide(): void {\n\t\tconst editingView = this._options.editor.editing.view;\n\n\t\teditingView.change( writer => {\n\t\t\twriter.addClass( 'ck-hidden', this._viewResizerWrapper! );\n\t\t} );\n\t}\n\n\t/**\n\t * Attaches the resizer to the DOM.\n\t */\n\tpublic attach(): void {\n\t\t// eslint-disable-next-line @typescript-eslint/no-this-alias\n\t\tconst that = this;\n\t\tconst widgetElement = this._options.viewElement;\n\t\tconst editingView = this._options.editor.editing.view;\n\n\t\teditingView.change( writer => {\n\t\t\tconst viewResizerWrapper = writer.createUIElement( 'div', {\n\t\t\t\tclass: 'ck ck-reset_all ck-widget__resizer'\n\t\t\t}, function( domDocument ) {\n\t\t\t\tconst domElement = this.toDomElement( domDocument );\n\n\t\t\t\tthat._appendHandles( domElement );\n\t\t\t\tthat._appendSizeUI( domElement );\n\n\t\t\t\treturn domElement;\n\t\t\t} );\n\n\t\t\t// Append the resizer wrapper to the widget's wrapper.\n\t\t\twriter.insert( writer.createPositionAt( widgetElement, 'end' ), viewResizerWrapper );\n\t\t\twriter.addClass( 'ck-widget_with-resizer', widgetElement );\n\n\t\t\tthis._viewResizerWrapper = viewResizerWrapper;\n\n\t\t\tif ( !this.isVisible ) {\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t} );\n\n\t\tthis.on<ObservableChangeEvent>( 'change:isVisible', () => {\n\t\t\tif ( this.isVisible ) {\n\t\t\t\tthis.show();\n\t\t\t\tthis.redraw();\n\t\t\t} else {\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Starts the resizing process.\n\t *\n\t * Creates a new {@link #state} for the current process.\n\t *\n\t * @fires begin\n\t * @param domResizeHandle Clicked handle.\n\t */\n\tpublic begin( domResizeHandle: HTMLElement ): void {\n\t\tthis._state = new ResizeState( this._options );\n\n\t\tthis._sizeView._bindToState( this._options, this.state );\n\n\t\tthis._initialViewWidth = this._options.viewElement.getStyle( 'width' );\n\n\t\tthis.state.begin( domResizeHandle, this._getHandleHost(), this._getResizeHost() );\n\t}\n\n\t/**\n\t * Updates the proposed size based on `domEventData`.\n\t *\n\t * @fires updateSize\n\t */\n\tpublic updateSize( domEventData: MouseEvent ): void {\n\t\tconst newSize = this._proposeNewSize( domEventData );\n\t\tconst editingView = this._options.editor.editing.view;\n\n\t\teditingView.change( writer => {\n\t\t\tconst unit = this._options.unit || '%';\n\t\t\tconst newWidth = ( unit === '%' ? newSize.widthPercents : newSize.width ) + unit;\n\n\t\t\twriter.setStyle( 'width', newWidth, this._options.viewElement );\n\t\t} );\n\n\t\t// Get an actual image width, and:\n\t\t// * reflect this size to the resize wrapper\n\t\t// * apply this **real** size to the state\n\t\tconst domHandleHost = this._getHandleHost();\n\t\tconst domHandleHostRect = new Rect( domHandleHost );\n\n\t\tconst handleHostWidth = Math.round( domHandleHostRect.width );\n\t\tconst handleHostHeight = Math.round( domHandleHostRect.height );\n\n\t\t// Handle max-width limitation.\n\t\tconst domResizeHostRect = new Rect( domHandleHost );\n\n\t\tnewSize.width = Math.round( domResizeHostRect.width );\n\t\tnewSize.height = Math.round( domResizeHostRect.height );\n\n\t\tthis.redraw( domHandleHostRect );\n\n\t\tthis.state.update( {\n\t\t\t...newSize,\n\t\t\thandleHostWidth,\n\t\t\thandleHostHeight\n\t\t} );\n\t}\n\n\t/**\n\t * Applies the geometry proposed with the resizer.\n\t *\n\t * @fires commit\n\t */\n\tpublic commit(): void {\n\t\tconst unit = this._options.unit || '%';\n\t\tconst newValue = ( unit === '%' ? this.state.proposedWidthPercents : this.state.proposedWidth ) + unit;\n\n\t\t// Both cleanup and onCommit callback are very likely to make view changes. Ensure that it is made in a single step.\n\t\tthis._options.editor.editing.view.change( () => {\n\t\t\tthis._cleanup();\n\t\t\tthis._options.onCommit( newValue );\n\t\t} );\n\t}\n\n\t/**\n\t * Cancels and rejects the proposed resize dimensions, hiding the UI.\n\t *\n\t * @fires cancel\n\t */\n\tpublic cancel(): void {\n\t\tthis._cleanup();\n\t}\n\n\t/**\n\t * Destroys the resizer.\n\t */\n\tpublic destroy(): void {\n\t\tthis.cancel();\n\t}\n\n\t/**\n\t * Redraws the resizer.\n\t *\n\t * @param handleHostRect Handle host rectangle might be given to improve performance.\n\t */\n\tpublic redraw( handleHostRect?: Rect ): void {\n\t\tconst domWrapper = this._domResizerWrapper;\n\n\t\t// Refresh only if resizer exists in the DOM.\n\t\tif ( !existsInDom( domWrapper ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst widgetWrapper = domWrapper!.parentElement;\n\t\tconst handleHost = this._getHandleHost();\n\t\tconst resizerWrapper = this._viewResizerWrapper!;\n\t\tconst currentDimensions = [\n\t\t\tresizerWrapper.getStyle( 'width' ),\n\t\t\tresizerWrapper.getStyle( 'height' ),\n\t\t\tresizerWrapper.getStyle( 'left' ),\n\t\t\tresizerWrapper.getStyle( 'top' )\n\t\t];\n\t\tlet newDimensions: Array<string | undefined>;\n\n\t\tif ( widgetWrapper!.isSameNode( handleHost ) ) {\n\t\t\tconst clientRect = handleHostRect || new Rect( handleHost );\n\n\t\t\tnewDimensions = [\n\t\t\t\tclientRect.width + 'px',\n\t\t\t\tclientRect.height + 'px',\n\t\t\t\tundefined,\n\t\t\t\tundefined\n\t\t\t];\n\t\t}\n\t\t// In case a resizing host is not a widget wrapper, we need to compensate\n\t\t// for any additional offsets the resize host might have. E.g. wrapper padding\n\t\t// or simply another editable. By doing that the border and resizers are shown\n\t\t// only around the resize host.\n\t\telse {\n\t\t\tnewDimensions = [\n\t\t\t\thandleHost.offsetWidth + 'px',\n\t\t\t\thandleHost.offsetHeight + 'px',\n\t\t\t\thandleHost.offsetLeft + 'px',\n\t\t\t\thandleHost.offsetTop + 'px'\n\t\t\t];\n\t\t}\n\n\t\t// Make changes to the view only if the resizer should actually get new dimensions.\n\t\t// Otherwise, if View#change() was always called, this would cause EditorUI#update\n\t\t// loops because the WidgetResize plugin listens to EditorUI#update and updates\n\t\t// the resizer.\n\t\t// https://github.com/ckeditor/ckeditor5/issues/7633\n\t\tif ( compareArrays( currentDimensions, newDimensions ) !== 'same' ) {\n\t\t\tthis._options.editor.editing.view.change( writer => {\n\t\t\t\twriter.setStyle( {\n\t\t\t\t\twidth: newDimensions[ 0 ]!,\n\t\t\t\t\theight: newDimensions[ 1 ]!,\n\t\t\t\t\tleft: newDimensions[ 2 ]!,\n\t\t\t\t\ttop: newDimensions[ 3 ]!\n\t\t\t\t}, resizerWrapper );\n\t\t\t} );\n\t\t}\n\t}\n\n\tpublic containsHandle( domElement: HTMLElement ): boolean {\n\t\treturn this._domResizerWrapper!.contains( domElement );\n\t}\n\n\tpublic static isResizeHandle( domElement: HTMLElement ): boolean {\n\t\treturn domElement.classList.contains( 'ck-widget__resizer__handle' );\n\t}\n\n\t/**\n\t * Cleans up the context state.\n\t */\n\tprivate _cleanup(): void {\n\t\tthis._sizeView._dismiss();\n\n\t\tconst editingView = this._options.editor.editing.view;\n\n\t\teditingView.change( writer => {\n\t\t\twriter.setStyle( 'width', this._initialViewWidth!, this._options.viewElement );\n\t\t} );\n\t}\n\n\t/**\n\t * Calculates the proposed size as the resize handles are dragged.\n\t *\n\t * @param domEventData Event data that caused the size update request. It should be used to calculate the proposed size.\n\t */\n\tprivate _proposeNewSize( domEventData: MouseEvent ): { width: number; height: number; widthPercents: number } {\n\t\tconst state = this.state;\n\t\tconst currentCoordinates = extractCoordinates( domEventData );\n\t\tconst isCentered = this._options.isCentered ? this._options.isCentered( this ) : true;\n\n\t\t// Enlargement defines how much the resize host has changed in a given axis. Naturally it could be a negative number\n\t\t// meaning that it has been shrunk.\n\t\t//\n\t\t// +----------------+--+\n\t\t// | | |\n\t\t// | img | |\n\t\t// | /handle host | |\n\t\t// +----------------+ | ^\n\t\t// | | | - enlarge y\n\t\t// +-------------------+ v\n\t\t// \t\t\t\t\t<-->\n\t\t// \t\t\t\t\t enlarge x\n\t\tconst enlargement = {\n\t\t\tx: state._referenceCoordinates!.x - ( currentCoordinates.x + state.originalWidth! ),\n\t\t\ty: ( currentCoordinates.y - state.originalHeight! ) - state._referenceCoordinates!.y\n\t\t};\n\n\t\tif ( isCentered && state.activeHandlePosition!.endsWith( '-right' ) ) {\n\t\t\tenlargement.x = currentCoordinates.x - ( state._referenceCoordinates!.x + state.originalWidth! );\n\t\t}\n\n\t\t// Objects needs to be resized twice as much in horizontal axis if centered, since enlargement is counted from\n\t\t// one resized corner to your cursor. It needs to be duplicated to compensate for the other side too.\n\t\tif ( isCentered ) {\n\t\t\tenlargement.x *= 2;\n\t\t}\n\n\t\t// const resizeHost = this._getResizeHost();\n\n\t\t// The size proposed by the user. It does not consider the aspect ratio.\n\t\tlet width = Math.abs( state.originalWidth! + enlargement.x );\n\t\tlet height = Math.abs( state.originalHeight! + enlargement.y );\n\n\t\t// Dominant determination must take the ratio into account.\n\t\tconst dominant = width / state.aspectRatio! > height ? 'width' : 'height';\n\n\t\tif ( dominant == 'width' ) {\n\t\t\theight = width / state.aspectRatio!;\n\t\t} else {\n\t\t\twidth = height * state.aspectRatio!;\n\t\t}\n\n\t\treturn {\n\t\t\twidth: Math.round( width ),\n\t\t\theight: Math.round( height ),\n\t\t\twidthPercents: Math.min( Math.round( state.originalWidthPercents! / state.originalWidth! * width * 100 ) / 100, 100 )\n\t\t};\n\t}\n\n\t/**\n\t * Obtains the resize host.\n\t *\n\t * Resize host is an object that receives dimensions which are the result of resizing.\n\t */\n\tprivate _getResizeHost(): HTMLElement {\n\t\tconst widgetWrapper = this._domResizerWrapper!.parentElement;\n\n\t\treturn this._options.getResizeHost( widgetWrapper! );\n\t}\n\n\t/**\n\t * Obtains the handle host.\n\t *\n\t * Handle host is an object that the handles are aligned to.\n\t *\n\t * Handle host will not always be an entire widget itself. Take an image as an example. The image widget\n\t * contains an image and a caption. Only the image should be surrounded with handles.\n\t */\n\tprivate _getHandleHost(): HTMLElement {\n\t\tconst widgetWrapper = this._domResizerWrapper!.parentElement;\n\n\t\treturn this._options.getHandleHost( widgetWrapper! );\n\t}\n\n\t/**\n\t * DOM container of the entire resize UI.\n\t *\n\t * Note that this property will have a value only after the element bound with the resizer is rendered\n\t * (otherwise `null`).\n\t */\n\tprivate get _domResizerWrapper(): HTMLElement | null {\n\t\treturn this._options.editor.editing.view.domConverter.mapViewToDom( this._viewResizerWrapper! ) as any;\n\t}\n\n\t/**\n\t * Renders the resize handles in the DOM.\n\t *\n\t * @param domElement The resizer wrapper.\n\t */\n\tprivate _appendHandles( domElement: HTMLElement ) {\n\t\tconst resizerPositions = [ 'top-left', 'top-right', 'bottom-right', 'bottom-left' ];\n\n\t\tfor ( const currentPosition of resizerPositions ) {\n\t\t\tdomElement.appendChild( ( new Template( {\n\t\t\t\ttag: 'div',\n\t\t\t\tattributes: {\n\t\t\t\t\tclass: `ck-widget__resizer__handle ${ getResizerClass( currentPosition ) }`\n\t\t\t\t}\n\t\t\t} ).render() ) );\n\t\t}\n\t}\n\n\t/**\n\t * Sets up the {@link #_sizeView} property and adds it to the passed `domElement`.\n\t */\n\tprivate _appendSizeUI( domElement: HTMLElement ) {\n\t\tthis._sizeView = new SizeView();\n\n\t\t// Make sure icon#element is rendered before passing to appendChild().\n\t\tthis._sizeView.render();\n\n\t\tdomElement.appendChild( this._sizeView.element! );\n\t}\n}\n\n/**\n * @eventName ~Resizer#begin\n */\nexport type ResizerBeginEvent = DecoratedMethodEvent<Resizer, 'begin'>;\n\n/**\n * @eventName ~Resizer#cancel\n */\nexport type ResizerCancelEvent = DecoratedMethodEvent<Resizer, 'cancel'>;\n\n/**\n * @eventName ~Resizer#commit\n */\nexport type ResizerCommitEvent = DecoratedMethodEvent<Resizer, 'commit'>;\n\n/**\n * @eventName ~Resizer#updateSize\n */\nexport type ResizerUpdateSizeEvent = DecoratedMethodEvent<Resizer, 'updateSize'>;\n\n/**\n * @param resizerPosition Expected resizer position like `\"top-left\"`, `\"bottom-right\"`.\n * @returns A prefixed HTML class name for the resizer element\n */\nfunction getResizerClass( resizerPosition: string ) {\n\treturn `ck-widget__resizer__handle-${ resizerPosition }`;\n}\n\nfunction extractCoordinates( event: MouseEvent ) {\n\treturn {\n\t\tx: event.pageX,\n\t\ty: event.pageY\n\t};\n}\n\nfunction existsInDom( element: Node | DocumentFragment | undefined | null ) {\n\treturn element && element.ownerDocument && element.ownerDocument.contains( element );\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/widgetresize\n */\n\nimport Resizer, {\n\ttype ResizerBeginEvent,\n\ttype ResizerCancelEvent,\n\ttype ResizerCommitEvent\n} from './widgetresize/resizer.js';\n\nimport type WidgetToolbarRepository from './widgettoolbarrepository.js';\n\nimport {\n\tPlugin,\n\ttype Editor\n} from '@ckeditor/ckeditor5-core';\n\nimport {\n\tMouseObserver,\n\ttype DocumentChangeEvent,\n\ttype DomEventData,\n\ttype Element,\n\ttype ViewContainerElement,\n\ttype ViewDocumentMouseDownEvent,\n\ttype ViewSelectionChangeEvent\n} from '@ckeditor/ckeditor5-engine';\n\nimport type { EditorUIUpdateEvent } from '@ckeditor/ckeditor5-ui';\n\nimport {\n\tDomEmitterMixin,\n\tglobal,\n\ttype DomEmitter,\n\ttype EventInfo\n} from '@ckeditor/ckeditor5-utils';\n\nimport { throttle, type DebouncedFunc } from 'lodash-es';\n\nimport '../theme/widgetresize.css';\n\n/**\n * The widget resize feature plugin.\n *\n * Use the {@link module:widget/widgetresize~WidgetResize#attachTo} method to create a resizer for the specified widget.\n */\nexport default class WidgetResize extends Plugin {\n\t/**\n\t * The currently selected resizer.\n\t *\n\t * @observable\n\t */\n\tdeclare public selectedResizer: Resizer | null;\n\n\t/**\n\t * References an active resizer.\n\t *\n\t * Active resizer means a resizer which handle is actively used by the end user.\n\t *\n\t * @internal\n\t * @observable\n\t */\n\tdeclare public _activeResizer: Resizer | null;\n\n\t/**\n\t * A map of resizers created using this plugin instance.\n\t */\n\tprivate _resizers = new Map<ViewContainerElement, Resizer>();\n\n\tprivate _observer!: DomEmitter;\n\n\tprivate _redrawSelectedResizerThrottled!: DebouncedFunc<() => void>;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'WidgetResize' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editing = this.editor.editing;\n\t\tconst domDocument = global.window.document;\n\n\t\tthis.set( 'selectedResizer', null );\n\t\tthis.set( '_activeResizer', null );\n\n\t\tediting.view.addObserver( MouseObserver );\n\n\t\tthis._observer = new ( DomEmitterMixin() )();\n\n\t\tthis.listenTo<ViewDocumentMouseDownEvent>(\n\t\t\tediting.view.document,\n\t\t\t'mousedown',\n\t\t\tthis._mouseDownListener.bind( this ),\n\t\t\t{ priority: 'high' }\n\t\t);\n\n\t\tthis._observer.listenTo( domDocument, 'mousemove', this._mouseMoveListener.bind( this ) );\n\t\tthis._observer.listenTo( domDocument, 'mouseup', this._mouseUpListener.bind( this ) );\n\n\t\tthis._redrawSelectedResizerThrottled = throttle( () => this.redrawSelectedResizer(), 200 );\n\n\t\t// Redrawing on any change of the UI of the editor (including content changes).\n\t\tthis.editor.ui.on<EditorUIUpdateEvent>( 'update', this._redrawSelectedResizerThrottled );\n\n\t\t// Remove view widget-resizer mappings for widgets that have been removed from the document.\n\t\t// https://github.com/ckeditor/ckeditor5/issues/10156\n\t\t// https://github.com/ckeditor/ckeditor5/issues/10266\n\t\tthis.editor.model.document.on<DocumentChangeEvent>( 'change', () => {\n\t\t\tfor ( const [ viewElement, resizer ] of this._resizers ) {\n\t\t\t\tif ( !viewElement.isAttached() ) {\n\t\t\t\t\tthis._resizers.delete( viewElement );\n\t\t\t\t\tresizer.destroy();\n\t\t\t\t}\n\t\t\t}\n\t\t}, { priority: 'lowest' } );\n\n\t\t// Resizers need to be redrawn upon window resize, because new window might shrink resize host.\n\t\tthis._observer.listenTo( global.window, 'resize', this._redrawSelectedResizerThrottled );\n\n\t\tconst viewSelection = this.editor.editing.view.document.selection;\n\n\t\tviewSelection.on<ViewSelectionChangeEvent>( 'change', () => {\n\t\t\tconst selectedElement = viewSelection.getSelectedElement() as ViewContainerElement;\n\n\t\t\tconst resizer = this.getResizerByViewElement( selectedElement ) || null;\n\t\t\tif ( resizer ) {\n\t\t\t\tthis.select( resizer );\n\t\t\t} else {\n\t\t\t\tthis.deselect();\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Redraws the selected resizer if there is any selected resizer and if it is visible.\n\t */\n\tpublic redrawSelectedResizer(): void {\n\t\tif ( this.selectedResizer && this.selectedResizer.isVisible ) {\n\t\t\tthis.selectedResizer.redraw();\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis._observer.stopListening();\n\n\t\tfor ( const resizer of this._resizers.values() ) {\n\t\t\tresizer.destroy();\n\t\t}\n\n\t\tthis._redrawSelectedResizerThrottled.cancel();\n\t}\n\n\t/**\n\t * Marks resizer as selected.\n\t */\n\tpublic select( resizer: Resizer ): void {\n\t\tthis.deselect();\n\t\tthis.selectedResizer = resizer;\n\t\tthis.selectedResizer.isSelected = true;\n\t}\n\n\t/**\n\t * Deselects currently set resizer.\n\t */\n\tpublic deselect(): void {\n\t\tif ( this.selectedResizer ) {\n\t\t\tthis.selectedResizer.isSelected = false;\n\t\t}\n\n\t\tthis.selectedResizer = null;\n\t}\n\n\t/**\n\t * @param options Resizer options.\n\t */\n\tpublic attachTo( options: ResizerOptions ): Resizer {\n\t\tconst resizer = new Resizer( options );\n\t\tconst plugins = this.editor.plugins;\n\n\t\tresizer.attach();\n\n\t\tif ( plugins.has( 'WidgetToolbarRepository' ) ) {\n\t\t\t// Hiding widget toolbar to improve the performance\n\t\t\t// (https://github.com/ckeditor/ckeditor5-widget/pull/112#issuecomment-564528765).\n\t\t\tconst widgetToolbarRepository: WidgetToolbarRepository = plugins.get( 'WidgetToolbarRepository' );\n\n\t\t\tresizer.on<ResizerBeginEvent>( 'begin', () => {\n\t\t\t\twidgetToolbarRepository.forceDisabled( 'resize' );\n\t\t\t}, { priority: 'lowest' } );\n\n\t\t\tresizer.on<ResizerCancelEvent>( 'cancel', () => {\n\t\t\t\twidgetToolbarRepository.clearForceDisabled( 'resize' );\n\t\t\t}, { priority: 'highest' } );\n\n\t\t\tresizer.on<ResizerCommitEvent>( 'commit', () => {\n\t\t\t\twidgetToolbarRepository.clearForceDisabled( 'resize' );\n\t\t\t}, { priority: 'highest' } );\n\t\t}\n\n\t\tthis._resizers.set( options.viewElement, resizer );\n\n\t\tconst viewSelection = this.editor.editing.view.document.selection;\n\t\tconst selectedElement = viewSelection.getSelectedElement() as ViewContainerElement;\n\n\t\t// If the element the resizer is created for is currently focused, it should become visible.\n\t\tif ( this.getResizerByViewElement( selectedElement ) == resizer ) {\n\t\t\tthis.select( resizer );\n\t\t}\n\n\t\treturn resizer;\n\t}\n\n\t/**\n\t * Returns a resizer created for a given view element (widget element).\n\t *\n\t * @param viewElement View element associated with the resizer.\n\t */\n\tpublic getResizerByViewElement( viewElement: ViewContainerElement ): Resizer | undefined {\n\t\treturn this._resizers.get( viewElement );\n\t}\n\n\t/**\n\t * Returns a resizer that contains a given resize handle.\n\t */\n\tprivate _getResizerByHandle( domResizeHandle: HTMLElement ): Resizer | undefined {\n\t\tfor ( const resizer of this._resizers.values() ) {\n\t\t\tif ( resizer.containsHandle( domResizeHandle ) ) {\n\t\t\t\treturn resizer;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @param domEventData Native DOM event.\n\t */\n\tprivate _mouseDownListener( event: EventInfo, domEventData: DomEventData ) {\n\t\tconst resizeHandle = domEventData.domTarget;\n\n\t\tif ( !Resizer.isResizeHandle( resizeHandle ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._activeResizer = this._getResizerByHandle( resizeHandle ) || null;\n\n\t\tif ( this._activeResizer ) {\n\t\t\tthis._activeResizer.begin( resizeHandle );\n\n\t\t\t// Do not call other events when resizing. See: #6755.\n\t\t\tevent.stop();\n\t\t\tdomEventData.preventDefault();\n\t\t}\n\t}\n\n\t/**\n\t * @param domEventData Native DOM event.\n\t */\n\tprivate _mouseMoveListener( event: unknown, domEventData: MouseEvent ) {\n\t\tif ( this._activeResizer ) {\n\t\t\tthis._activeResizer.updateSize( domEventData );\n\t\t}\n\t}\n\n\tprivate _mouseUpListener(): void {\n\t\tif ( this._activeResizer ) {\n\t\t\tthis._activeResizer.commit();\n\t\t\tthis._activeResizer = null;\n\t\t}\n\t}\n}\n\n/**\n * Interface describing a resizer. It allows to specify the resizing host, custom logic for calculating aspect ratio, etc.\n */\nexport interface ResizerOptions {\n\n\t/**\n\t * Editor instance associated with the resizer.\n\t */\n\teditor: Editor;\n\n\tmodelElement: Element;\n\n\t/**\n\t * A view of an element to be resized. Typically it's the main widget's view instance.\n\t */\n\tviewElement: ViewContainerElement;\n\n\tunit?: 'px' | '%';\n\n\t/**\n\t * A callback to be executed once the resizing process is done.\n\t *\n\t * It receives a `Number` (`newValue`) as a parameter.\n\t *\n\t * For example, {@link module:image/imageresize~ImageResize} uses it to execute the resize image command\n\t * which puts the new value into the model.\n\t *\n\t * ```ts\n\t * {\n\t *\teditor,\n\t *\tmodelElement: data.item,\n\t *\tviewElement: widget,\n\t *\n\t *\tonCommit( newValue ) {\n\t *\t\teditor.execute( 'resizeImage', { width: newValue } );\n\t *\t}\n\t * };\n\t * ```\n\t */\n\tonCommit: ( newValue: string ) => void;\n\n\tgetResizeHost: ( widgetWrapper: HTMLElement ) => HTMLElement;\n\n\tgetHandleHost: ( widgetWrapper: HTMLElement ) => HTMLElement;\n\n\tisCentered?: ( resizer: Resizer ) => boolean;\n}\n"]}
|
1
|
+
{"version":3,"sources":["index.js","../src/highlightstack.ts","../src/utils.ts","../src/widgettypearound/utils.ts","../src/widgettypearound/widgettypearound.ts","../src/verticalnavigation.ts","../src/widget.ts","../src/widgettoolbarrepository.ts","../src/widgetresize/resizerstate.ts","../src/widgetresize/sizeview.ts","../src/widgetresize/resizer.ts","../src/widgetresize.ts"],"names":["HighlightStack","EmitterMixin","_stack","add","descriptor","writer","stack","oldTop","_insertDescriptor","newTop","compareDescriptors","fire","oldDescriptor","newDescriptor","remove","id","_removeDescriptor","index","findIndex","item","splice","i","shouldABeBeforeB","a","b","priority","classesToString","classes","Array","isArray","sort","join","WIDGET_CLASS_NAME","WIDGET_SELECTED_CLASS_NAME","isWidget","node","is","getCustomProperty","toWidget","element","options","CKEditorError","setAttribute","addClass","setCustomProperty","getFillerOffset","label","setLabel","hasSelectionHandle","addSelectionHandle","setHighlightHandling","addHighlight","toArray","attributes","key","removeHighlight","removeClass","removeAttribute","on","evt","data","addHighlightCallback","removeHighlightCallback","labelOrCreator","widgetLabel","push","getLabel","reduce","prev","current","toWidgetEditable","editable","isReadOnly","property","findOptimalInsertionRange","selection","model","selectedElement","getSelectedElement","typeAroundFakeCaretPosition","getTypeAroundFakeCaretPosition","createRange","createPositionAt","schema","viewToModelPositionOutsideModelElement","viewElementMatcher","mapper","viewPosition","viewParent","findMappedViewAncestor","modelParent","toModelElement","modelPosition","isAtStart","widgetElement","selectionHandle","createUIElement","class","domDocument","domElement","toDomElement","icon","IconView","set","dragHandleIcon","render","appendChild","insert","calculateResizeHostAncestorWidth","domResizeHost","getElementComputedWidth","width","paddingLeft","paddingRight","ownerDocument","defaultView","getComputedStyle","parseFloat","domResizeHostParent","parentElement","parentWidth","ancestorLevelLimit","currentLevel","checkedElement","isNaN","calculateResizeHostPercentageWidth","resizeHostRect","Rect","TYPE_AROUND_SELECTION_ATTRIBUTE","isTypeAroundWidget","viewElement","modelElement","isInline","getClosestTypeAroundDomButton","closest","getTypeAroundButtonPosition","classList","contains","getClosestWidgetViewElement","domConverter","widgetDomElement","mapDomToView","getAttribute","POSSIBLE_INSERTION_POSITIONS","RETURN_ARROW_ICON_ELEMENT","DOMParser","parseFromString","returnIcon","firstChild","PLUGIN_DISABLED_EDITING_ROOT_CLASS","WidgetTypeAround","Plugin","_currentFakeCaretModelElement","pluginName","requires","Enter","Delete","editor","editingView","editing","view","isEnabled","change","root","document","roots","removeSelectionAttribute","_enableTypeAroundUIInjection","_enableInsertingParagraphsOnButtonClick","_enableInsertingParagraphsOnEnterKeypress","_enableInsertingParagraphsOnTypingKeystroke","_enableTypeAroundFakeCaretActivationUsingKeyboardArrows","_enableDeleteIntegration","_enableInsertContentIntegration","_enableInsertObjectIntegration","_enableDeleteContentIntegration","destroy","_insertParagraph","widgetModelElement","position","attributesToCopy","getAttributesWithProperty","execute","focus","scrollToTheSelection","_listenToIfEnabled","emitter","event","callback","listenTo","args","modelSelection","selectedModelElement","t","locale","buttonTitles","before","after","downcastDispatcher","conversionApi","toViewElement","injectUIIntoWidget","domEventData","_handleArrowKeyPress","context","directChange","selectedViewElement","map","positionToWidgetCssClass","ui","focusTracker","name","isFocused","keyCode","isForward","isForwardArrowKeyCode","contentLanguageDirection","shouldStopAndPreventDefault","_handleArrowKeyPressOnSelectedWidget","isCollapsed","_handleArrowKeyPressWhenSelectionNextToAWidget","shiftKey","_handleArrowKeyPressWhenNonCollapsedSelection","preventDefault","stop","isLeavingWidget","setSelectionAttribute","widgetPlugin","plugins","get","modelElementNextToSelection","_getObjectElementNextToSelection","viewElementNextToSelection","_setSelectionOverElement","selectedModelNode","getLastPosition","nodeBefore","getFirstPosition","nodeAfter","selectedViewNode","setSelection","button","domTarget","buttonPosition","widgetViewElement","eventPhase","wasHandled","_insertParagraphAccordingToFakeCaretPosition","isSoft","viewDocument","env","isAndroid","direction","selectedModelWidget","isFakeCaretBefore","isDeleteForward","shouldDeleteEntireWidget","createSelection","range","getNearestSelectionRange","probe","start","modifySelection","isEqual","deepestEmptyRangeAncestor","getDeepestEmptyElementAncestor","parent","deleteContent","doNotAutoparagraph","documentSelection","content","selectable","result","insertContent","findOptimalPosition","viewWriter","typeAroundWrapper","wrapperDomElement","injectButtons","injectFakeCaret","buttonTemplate","Template","tag","title","children","importNode","caretTemplate","deepestEmptyAncestor","ancestor","getAncestors","parentFirst","childCount","isLimit","verticalNavigationHandler","arrowUpPressed","keyCodes","arrowup","arrowDownPressed","arrowdown","expandSelection","selectionWillShrink","findTextRangeFromSelection","isSingleLineRange","newPosition","end","newSelection","anchor","setFocus","stopPropagation","startPosition","endPosition","getNearestNonInlineLimit","lastRangePosition","getNearestTextPosition","firstRangePosition","createRangeIn","walkerValueType","previousPosition","type","getWalker","isBlock","checkChild","nextPosition","modelRange","isAtEnd","viewRange","toViewRange","domRange","viewRangeToDom","rects","getDomRangeRects","boundaryVerticalPosition","rect","undefined","Math","round","bottom","top","max","isBackward","Widget","_previouslySelected","Set","consumable","consume","createRangeOn","fake","_clearPreviouslySelectedWidgets","viewSelection","lastMarked","getRanges","value","isChild","addObserver","MouseObserver","_onMousedown","_handleSelectionChangeOnArrowKeyPress","_preventDefaultOnArrowKeyPress","_handleDelete","_selectFirstNestedEditable","_selectAncestorWidget","keystroke","esc","accessibility","addKeystrokeInfoGroup","keystrokes","eventInfo","target","domEvent","detail","_selectBlockContent","editableOrWidgetElement","findClosestEditableOrWidgetAncestor","clickTargetFromPoint","getElementFromMouseEvent","findTextBlockAncestor","nextTextBlock","findNextTextBlock","createPositionAfter","objectElement","getLocalizedArrowKeyCodeDirection","isVerticalNavigation","isObject","newRange","firstPosition","lastPosition","firstSelectedNode","lastSelectedNode","objectElementNextToSelection","modelDocument","canEditAt","previousNode","isEmpty","nodeToRemove","forward","widget","clear","getFirstRange","getItems","positionParent","positionParentElement","findAncestor","currentElement","getRangeFromMouseEvent","domRangeToView","viewNode","from","includes","includeSelf","treeWalker","TreeWalker","WidgetToolbarRepository","_toolbarDefinitions","Map","_balloon","ContextualBalloon","has","balloonToolbar","isWidgetSelected","_updateToolbarsVisibility","toolbarConfig","values","register","toolbarId","ariaLabel","items","getRelatedElement","balloonClassName","length","logWarning","toolbarView","ToolbarView","toolbarDefinition","itemsConfig","initialized","addToolbar","isContextual","beforeFocus","relatedElement","_showToolbar","afterBlur","_hideToolbar","maxRelatedElementDepth","deepestRelatedElement","deepestToolbarDefinition","definition","_isToolbarInBalloon","_isToolbarVisible","relatedElementDepth","stopListening","repositionContextualBalloon","fillFromConfig","componentFactory","getBalloonPositionData","toolbar","visibleView","hasView","balloon","updatePosition","defaultPositions","BalloonPanelView","mapViewToDom","positions","northArrowSouth","northArrowSouthWest","northArrowSouthEast","southArrowNorth","southArrowNorthWest","southArrowNorthEast","viewportStickyNorth","ResizeState","ObservableMixin","constructor","_options","_referenceCoordinates","originalWidth","_originalWidth","originalHeight","_originalHeight","originalWidthPercents","_originalWidthPercents","aspectRatio","_aspectRatio","domResizeHandle","domHandleHost","clientRect","activeHandlePosition","getHandlePosition","getAbsoluteBoundaryPoint","getOppositePosition","height","widthStyle","style","match","update","newSize","proposedWidth","proposedHeight","proposedWidthPercents","widthPercents","proposedHandleHostWidth","handleHostWidth","proposedHandleHostHeight","handleHostHeight","resizerPosition","elementRect","positionParts","split","ret","x","right","left","y","scrollX","scrollY","getResizerHandleClass","domHandle","resizerPositions","parts","replacements","SizeView","View","bind","bindTemplate","setTemplate","to","display","if","visible","text","_bindToState","resizeState","unit","unbind","_isVisible","Resizer","_viewResizerWrapper","isSelected","decorate","state","_cleanup","_state","that","viewResizerWrapper","_appendHandles","_appendSizeUI","isVisible","hide","show","redraw","begin","_sizeView","_initialViewWidth","getStyle","_getHandleHost","_getResizeHost","updateSize","_proposeNewSize","newWidth","setStyle","domHandleHostRect","domResizeHostRect","newValue","onCommit","cancel","handleHostRect","domWrapper","_domResizerWrapper","existsInDom","widgetWrapper","handleHost","resizerWrapper","currentDimensions","newDimensions","isSameNode","offsetWidth","offsetHeight","offsetLeft","offsetTop","compareArrays","containsHandle","isResizeHandle","_dismiss","currentCoordinates","extractCoordinates","isCentered","enlargement","endsWith","abs","dominant","min","getResizeHost","getHandleHost","currentPosition","getResizerClass","pageX","pageY","WidgetResize","_resizers","_observer","_redrawSelectedResizerThrottled","global","window","DomEmitterMixin","_mouseDownListener","_mouseMoveListener","_mouseUpListener","throttle","redrawSelectedResizer","resizer","isAttached","delete","getResizerByViewElement","select","deselect","selectedResizer","attachTo","attach","widgetToolbarRepository","forceDisabled","clearForceDisabled","_getResizerByHandle","resizeHandle","_activeResizer","commit"],"mappings":"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","file":"index.js.map","sourcesContent":["import { Plugin } from '@ckeditor/ckeditor5-core/dist/index.js';\nimport { MouseObserver, TreeWalker } from '@ckeditor/ckeditor5-engine/dist/index.js';\nimport { Delete } from '@ckeditor/ckeditor5-typing/dist/index.js';\nimport { EmitterMixin, CKEditorError, Rect, toArray, isForwardArrowKeyCode, env, keyCodes, getLocalizedArrowKeyCodeDirection, getRangeFromMouseEvent, logWarning, ObservableMixin, compareArrays, global, DomEmitterMixin } from '@ckeditor/ckeditor5-utils/dist/index.js';\nimport { IconView, Template, ContextualBalloon, ToolbarView, BalloonPanelView, View } from '@ckeditor/ckeditor5-ui/dist/index.js';\nimport { Enter } from '@ckeditor/ckeditor5-enter/dist/index.js';\nimport { throttle } from 'lodash-es';\n\n/**\n * Class used to handle the correct order of highlights on elements.\n *\n * When different highlights are applied to same element the correct order should be preserved:\n *\n * * highlight with highest priority should be applied,\n * * if two highlights have same priority - sort by CSS class provided in\n * {@link module:engine/conversion/downcasthelpers~HighlightDescriptor}.\n *\n * This way, highlight will be applied with the same rules it is applied on texts.\n */ class HighlightStack extends /* #__PURE__ */ EmitterMixin() {\n _stack = [];\n /**\n\t * Adds highlight descriptor to the stack.\n\t *\n\t * @fires change:top\n\t */ add(descriptor, writer) {\n const stack = this._stack;\n // Save top descriptor and insert new one. If top is changed - fire event.\n const oldTop = stack[0];\n this._insertDescriptor(descriptor);\n const newTop = stack[0];\n // When new object is at the top and stores different information.\n if (oldTop !== newTop && !compareDescriptors(oldTop, newTop)) {\n this.fire('change:top', {\n oldDescriptor: oldTop,\n newDescriptor: newTop,\n writer\n });\n }\n }\n /**\n\t * Removes highlight descriptor from the stack.\n\t *\n\t * @fires change:top\n\t * @param id Id of the descriptor to remove.\n\t */ remove(id, writer) {\n const stack = this._stack;\n const oldTop = stack[0];\n this._removeDescriptor(id);\n const newTop = stack[0];\n // When new object is at the top and stores different information.\n if (oldTop !== newTop && !compareDescriptors(oldTop, newTop)) {\n this.fire('change:top', {\n oldDescriptor: oldTop,\n newDescriptor: newTop,\n writer\n });\n }\n }\n /**\n\t * Inserts a given descriptor in correct place in the stack. It also takes care about updating information\n\t * when descriptor with same id is already present.\n\t */ _insertDescriptor(descriptor) {\n const stack = this._stack;\n const index = stack.findIndex((item)=>item.id === descriptor.id);\n // Inserting exact same descriptor - do nothing.\n if (compareDescriptors(descriptor, stack[index])) {\n return;\n }\n // If descriptor with same id but with different information is on the stack - remove it.\n if (index > -1) {\n stack.splice(index, 1);\n }\n // Find correct place to insert descriptor in the stack.\n // It has different information (for example priority) so it must be re-inserted in correct place.\n let i = 0;\n while(stack[i] && shouldABeBeforeB(stack[i], descriptor)){\n i++;\n }\n stack.splice(i, 0, descriptor);\n }\n /**\n\t * Removes descriptor with given id from the stack.\n\t *\n\t * @param id Descriptor's id.\n\t */ _removeDescriptor(id) {\n const stack = this._stack;\n const index = stack.findIndex((item)=>item.id === id);\n // If descriptor with same id is on the list - remove it.\n if (index > -1) {\n stack.splice(index, 1);\n }\n }\n}\n/**\n * Compares two descriptors by checking their priority and class list.\n *\n * @returns Returns true if both descriptors are defined and have same priority and classes.\n */ function compareDescriptors(a, b) {\n return a && b && a.priority == b.priority && classesToString(a.classes) == classesToString(b.classes);\n}\n/**\n * Checks whenever first descriptor should be placed in the stack before second one.\n */ function shouldABeBeforeB(a, b) {\n if (a.priority > b.priority) {\n return true;\n } else if (a.priority < b.priority) {\n return false;\n }\n // When priorities are equal and names are different - use classes to compare.\n return classesToString(a.classes) > classesToString(b.classes);\n}\n/**\n * Converts CSS classes passed with {@link module:engine/conversion/downcasthelpers~HighlightDescriptor} to\n * sorted string.\n */ function classesToString(classes) {\n return Array.isArray(classes) ? classes.sort().join(',') : classes;\n}\n\nvar dragHandleIcon = \"<svg viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M4 0v1H1v3H0V.5A.5.5 0 0 1 .5 0H4zm8 0h3.5a.5.5 0 0 1 .5.5V4h-1V1h-3V0zM4 16H.5a.5.5 0 0 1-.5-.5V12h1v3h3v1zm8 0v-1h3v-3h1v3.5a.5.5 0 0 1-.5.5H12z\\\"/><path fill-opacity=\\\".256\\\" d=\\\"M1 1h14v14H1z\\\"/><g class=\\\"ck-icon__selected-indicator\\\"><path d=\\\"M7 0h2v1H7V0zM0 7h1v2H0V7zm15 0h1v2h-1V7zm-8 8h2v1H7v-1z\\\"/><path fill-opacity=\\\".254\\\" d=\\\"M1 1h14v14H1z\\\"/></g></svg>\";\n\n/**\n * CSS class added to each widget element.\n */ const WIDGET_CLASS_NAME = 'ck-widget';\n/**\n * CSS class added to currently selected widget element.\n */ const WIDGET_SELECTED_CLASS_NAME = 'ck-widget_selected';\n/**\n * Returns `true` if given {@link module:engine/view/node~Node} is an {@link module:engine/view/element~Element} and a widget.\n */ function isWidget(node) {\n if (!node.is('element')) {\n return false;\n }\n return !!node.getCustomProperty('widget');\n}\n/**\n * Converts the given {@link module:engine/view/element~Element} to a widget in the following way:\n *\n * * sets the `contenteditable` attribute to `\"false\"`,\n * * adds the `ck-widget` CSS class,\n * * adds a custom {@link module:engine/view/element~Element#getFillerOffset `getFillerOffset()`} method returning `null`,\n * * adds a custom property allowing to recognize widget elements by using {@link ~isWidget `isWidget()`},\n * * implements the {@link ~setHighlightHandling view highlight on widgets}.\n *\n * This function needs to be used in conjunction with\n * {@link module:engine/conversion/downcasthelpers~DowncastHelpers downcast conversion helpers}\n * like {@link module:engine/conversion/downcasthelpers~DowncastHelpers#elementToElement `elementToElement()`}.\n * Moreover, typically you will want to use `toWidget()` only for `editingDowncast`, while keeping the `dataDowncast` clean.\n *\n * For example, in order to convert a `<widget>` model element to `<div class=\"widget\">` in the view, you can define\n * such converters:\n *\n * ```ts\n * editor.conversion.for( 'editingDowncast' )\n * \t.elementToElement( {\n * \t\tmodel: 'widget',\n * \t\tview: ( modelItem, { writer } ) => {\n * \t\t\tconst div = writer.createContainerElement( 'div', { class: 'widget' } );\n *\n * \t\t\treturn toWidget( div, writer, { label: 'some widget' } );\n * \t\t}\n * \t} );\n *\n * editor.conversion.for( 'dataDowncast' )\n * \t.elementToElement( {\n * \t\tmodel: 'widget',\n * \t\tview: ( modelItem, { writer } ) => {\n * \t\t\treturn writer.createContainerElement( 'div', { class: 'widget' } );\n * \t\t}\n * \t} );\n * ```\n *\n * See the full source code of the widget (with a nested editable) schema definition and converters in\n * [this sample](https://github.com/ckeditor/ckeditor5-widget/blob/master/tests/manual/widget-with-nestededitable.js).\n *\n * @param options Additional options.\n * @param options.label Element's label provided to the {@link ~setLabel} function. It can be passed as\n * a plain string or a function returning a string. It represents the widget for assistive technologies (like screen readers).\n * @param options.hasSelectionHandle If `true`, the widget will have a selection handle added.\n * @returns Returns the same element.\n */ function toWidget(element, writer, options = {}) {\n if (!element.is('containerElement')) {\n /**\n\t\t * The element passed to `toWidget()` must be a {@link module:engine/view/containerelement~ContainerElement}\n\t\t * instance.\n\t\t *\n\t\t * @error widget-to-widget-wrong-element-type\n\t\t * @param element The view element passed to `toWidget()`.\n\t\t */ throw new CKEditorError('widget-to-widget-wrong-element-type', null, {\n element\n });\n }\n writer.setAttribute('contenteditable', 'false', element);\n writer.addClass(WIDGET_CLASS_NAME, element);\n writer.setCustomProperty('widget', true, element);\n element.getFillerOffset = getFillerOffset;\n writer.setCustomProperty('widgetLabel', [], element);\n if (options.label) {\n setLabel(element, options.label);\n }\n if (options.hasSelectionHandle) {\n addSelectionHandle(element, writer);\n }\n setHighlightHandling(element, writer);\n return element;\n}\n/**\n * Default handler for adding a highlight on a widget.\n * It adds CSS class and attributes basing on the given highlight descriptor.\n */ function addHighlight(element, descriptor, writer) {\n if (descriptor.classes) {\n writer.addClass(toArray(descriptor.classes), element);\n }\n if (descriptor.attributes) {\n for(const key in descriptor.attributes){\n writer.setAttribute(key, descriptor.attributes[key], element);\n }\n }\n}\n/**\n * Default handler for removing a highlight from a widget.\n * It removes CSS class and attributes basing on the given highlight descriptor.\n */ function removeHighlight(element, descriptor, writer) {\n if (descriptor.classes) {\n writer.removeClass(toArray(descriptor.classes), element);\n }\n if (descriptor.attributes) {\n for(const key in descriptor.attributes){\n writer.removeAttribute(key, element);\n }\n }\n}\n/**\n * Sets highlight handling methods. Uses {@link module:widget/highlightstack~HighlightStack} to\n * properly determine which highlight descriptor should be used at given time.\n */ function setHighlightHandling(element, writer, add = addHighlight, remove = removeHighlight) {\n const stack = new HighlightStack();\n stack.on('change:top', (evt, data)=>{\n if (data.oldDescriptor) {\n remove(element, data.oldDescriptor, data.writer);\n }\n if (data.newDescriptor) {\n add(element, data.newDescriptor, data.writer);\n }\n });\n const addHighlightCallback = (element, descriptor, writer)=>stack.add(descriptor, writer);\n const removeHighlightCallback = (element, id, writer)=>stack.remove(id, writer);\n writer.setCustomProperty('addHighlight', addHighlightCallback, element);\n writer.setCustomProperty('removeHighlight', removeHighlightCallback, element);\n}\n/**\n * Sets label for given element.\n * It can be passed as a plain string or a function returning a string. Function will be called each time label is retrieved by\n * {@link ~getLabel `getLabel()`}.\n */ function setLabel(element, labelOrCreator) {\n const widgetLabel = element.getCustomProperty('widgetLabel');\n widgetLabel.push(labelOrCreator);\n}\n/**\n * Returns the label of the provided element.\n */ function getLabel(element) {\n const widgetLabel = element.getCustomProperty('widgetLabel');\n return widgetLabel.reduce((prev, current)=>{\n if (typeof current === 'function') {\n return prev ? prev + '. ' + current() : current();\n } else {\n return prev ? prev + '. ' + current : current;\n }\n }, '');\n}\n/**\n * Adds functionality to the provided {@link module:engine/view/editableelement~EditableElement} to act as a widget's editable:\n *\n * * sets the `contenteditable` attribute to `true` when {@link module:engine/view/editableelement~EditableElement#isReadOnly} is `false`,\n * otherwise sets it to `false`,\n * * adds the `ck-editor__editable` and `ck-editor__nested-editable` CSS classes,\n * * adds the `ck-editor__nested-editable_focused` CSS class when the editable is focused and removes it when it is blurred.\n * * implements the {@link ~setHighlightHandling view highlight on widget's editable}.\n *\n * Similarly to {@link ~toWidget `toWidget()`} this function should be used in `editingDowncast` only and it is usually\n * used together with {@link module:engine/conversion/downcasthelpers~DowncastHelpers#elementToElement `elementToElement()`}.\n *\n * For example, in order to convert a `<nested>` model element to `<div class=\"nested\">` in the view, you can define\n * such converters:\n *\n * ```ts\n * editor.conversion.for( 'editingDowncast' )\n * \t.elementToElement( {\n * \t\tmodel: 'nested',\n * \t\tview: ( modelItem, { writer } ) => {\n * \t\t\tconst div = writer.createEditableElement( 'div', { class: 'nested' } );\n *\n * \t\t\treturn toWidgetEditable( nested, writer, { label: 'label for editable' } );\n * \t\t}\n * \t} );\n *\n * editor.conversion.for( 'dataDowncast' )\n * \t.elementToElement( {\n * \t\tmodel: 'nested',\n * \t\tview: ( modelItem, { writer } ) => {\n * \t\t\treturn writer.createContainerElement( 'div', { class: 'nested' } );\n * \t\t}\n * \t} );\n * ```\n *\n * See the full source code of the widget (with nested editable) schema definition and converters in\n * [this sample](https://github.com/ckeditor/ckeditor5-widget/blob/master/tests/manual/widget-with-nestededitable.js).\n *\n * @param options Additional options.\n * @param options.label Editable's label used by assistive technologies (e.g. screen readers).\n * @returns Returns the same element that was provided in the `editable` parameter\n */ function toWidgetEditable(editable, writer, options = {}) {\n writer.addClass([\n 'ck-editor__editable',\n 'ck-editor__nested-editable'\n ], editable);\n writer.setAttribute('role', 'textbox', editable);\n writer.setAttribute('tabindex', '-1', editable);\n if (options.label) {\n writer.setAttribute('aria-label', options.label, editable);\n }\n // Set initial contenteditable value.\n writer.setAttribute('contenteditable', editable.isReadOnly ? 'false' : 'true', editable);\n // Bind the contenteditable property to element#isReadOnly.\n editable.on('change:isReadOnly', (evt, property, is)=>{\n writer.setAttribute('contenteditable', is ? 'false' : 'true', editable);\n });\n editable.on('change:isFocused', (evt, property, is)=>{\n if (is) {\n writer.addClass('ck-editor__nested-editable_focused', editable);\n } else {\n writer.removeClass('ck-editor__nested-editable_focused', editable);\n }\n });\n setHighlightHandling(editable, writer);\n return editable;\n}\n/**\n * Returns a model range which is optimal (in terms of UX) for inserting a widget block.\n *\n * For instance, if a selection is in the middle of a paragraph, the collapsed range before this paragraph\n * will be returned so that it is not split. If the selection is at the end of a paragraph,\n * the collapsed range after this paragraph will be returned.\n *\n * Note: If the selection is placed in an empty block, the range in that block will be returned. If that range\n * is then passed to {@link module:engine/model/model~Model#insertContent}, the block will be fully replaced\n * by the inserted widget block.\n *\n * @param selection The selection based on which the insertion position should be calculated.\n * @param model Model instance.\n * @returns The optimal range.\n */ function findOptimalInsertionRange(selection, model) {\n const selectedElement = selection.getSelectedElement();\n if (selectedElement) {\n const typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition(selection);\n // If the WidgetTypeAround \"fake caret\" is displayed, use its position for the insertion\n // to provide the most predictable UX (https://github.com/ckeditor/ckeditor5/issues/7438).\n if (typeAroundFakeCaretPosition) {\n return model.createRange(model.createPositionAt(selectedElement, typeAroundFakeCaretPosition));\n }\n }\n return model.schema.findOptimalInsertionRange(selection);\n}\n/**\n * A util to be used in order to map view positions to correct model positions when implementing a widget\n * which renders non-empty view element for an empty model element.\n *\n * For example:\n *\n * ```\n * // Model:\n * <placeholder type=\"name\"></placeholder>\n *\n * // View:\n * <span class=\"placeholder\">name</span>\n * ```\n *\n * In such case, view positions inside `<span>` cannot be correctly mapped to the model (because the model element is empty).\n * To handle mapping positions inside `<span class=\"placeholder\">` to the model use this util as follows:\n *\n * ```ts\n * editor.editing.mapper.on(\n * \t'viewToModelPosition',\n * \tviewToModelPositionOutsideModelElement( model, viewElement => viewElement.hasClass( 'placeholder' ) )\n * );\n * ```\n *\n * The callback will try to map the view offset of selection to an expected model position.\n *\n * 1. When the position is at the end (or in the middle) of the inline widget:\n *\n * ```\n * // View:\n * <p>foo <span class=\"placeholder\">name|</span> bar</p>\n *\n * // Model:\n * <paragraph>foo <placeholder type=\"name\"></placeholder>| bar</paragraph>\n * ```\n *\n * 2. When the position is at the beginning of the inline widget:\n *\n * ```\n * // View:\n * <p>foo <span class=\"placeholder\">|name</span> bar</p>\n *\n * // Model:\n * <paragraph>foo |<placeholder type=\"name\"></placeholder> bar</paragraph>\n * ```\n *\n * @param model Model instance on which the callback operates.\n * @param viewElementMatcher Function that is passed a view element and should return `true` if the custom mapping\n * should be applied to the given view element.\n */ function viewToModelPositionOutsideModelElement(model, viewElementMatcher) {\n return (evt, data)=>{\n const { mapper, viewPosition } = data;\n const viewParent = mapper.findMappedViewAncestor(viewPosition);\n if (!viewElementMatcher(viewParent)) {\n return;\n }\n const modelParent = mapper.toModelElement(viewParent);\n data.modelPosition = model.createPositionAt(modelParent, viewPosition.isAtStart ? 'before' : 'after');\n };\n}\n/**\n * Default filler offset function applied to all widget elements.\n */ function getFillerOffset() {\n return null;\n}\n/**\n * Adds a drag handle to the widget.\n */ function addSelectionHandle(widgetElement, writer) {\n const selectionHandle = writer.createUIElement('div', {\n class: 'ck ck-widget__selection-handle'\n }, function(domDocument) {\n const domElement = this.toDomElement(domDocument);\n // Use the IconView from the ui library.\n const icon = new IconView();\n icon.set('content', dragHandleIcon);\n // Render the icon view right away to append its #element to the selectionHandle DOM element.\n icon.render();\n domElement.appendChild(icon.element);\n return domElement;\n });\n // Append the selection handle into the widget wrapper.\n writer.insert(writer.createPositionAt(widgetElement, 0), selectionHandle);\n writer.addClass([\n 'ck-widget_with-selection-handle'\n ], widgetElement);\n}\n/**\n * Starting from a DOM resize host element (an element that receives dimensions as a result of resizing),\n * this helper returns the width of the found ancestor element.\n *\n *\t* It searches up to 5 levels of ancestors only.\n *\n * @param domResizeHost Resize host DOM element that receives dimensions as a result of resizing.\n * @returns Width of ancestor element in pixels or 0 if no ancestor with a computed width has been found.\n */ function calculateResizeHostAncestorWidth(domResizeHost) {\n const getElementComputedWidth = (element)=>{\n const { width, paddingLeft, paddingRight } = element.ownerDocument.defaultView.getComputedStyle(element);\n return parseFloat(width) - (parseFloat(paddingLeft) || 0) - (parseFloat(paddingRight) || 0);\n };\n const domResizeHostParent = domResizeHost.parentElement;\n if (!domResizeHostParent) {\n return 0;\n }\n // Need to use computed style as it properly excludes parent's paddings from the returned value.\n let parentWidth = getElementComputedWidth(domResizeHostParent);\n // Sometimes parent width cannot be accessed. If that happens we should go up in the elements tree\n // and try to get width from next ancestor.\n // https://github.com/ckeditor/ckeditor5/issues/10776\n const ancestorLevelLimit = 5;\n let currentLevel = 0;\n let checkedElement = domResizeHostParent;\n while(isNaN(parentWidth)){\n checkedElement = checkedElement.parentElement;\n if (++currentLevel > ancestorLevelLimit) {\n return 0;\n }\n parentWidth = getElementComputedWidth(checkedElement);\n }\n return parentWidth;\n}\n/**\n * Calculates a relative width of a `domResizeHost` compared to its ancestor in percents.\n *\n * @param domResizeHost Resize host DOM element.\n * @returns Percentage value between 0 and 100.\n */ function calculateResizeHostPercentageWidth(domResizeHost, resizeHostRect = new Rect(domResizeHost)) {\n const parentWidth = calculateResizeHostAncestorWidth(domResizeHost);\n if (!parentWidth) {\n return 0;\n }\n return resizeHostRect.width / parentWidth * 100;\n}\n\n/**\n * The name of the type around model selection attribute responsible for\n * displaying a fake caret next to a selected widget.\n */ const TYPE_AROUND_SELECTION_ATTRIBUTE = 'widget-type-around';\n/**\n * Checks if an element is a widget that qualifies to get the widget type around UI.\n */ function isTypeAroundWidget(viewElement, modelElement, schema) {\n return !!viewElement && isWidget(viewElement) && !schema.isInline(modelElement);\n}\n/**\n * For the passed HTML element, this helper finds the closest widget type around button ancestor.\n */ function getClosestTypeAroundDomButton(domElement) {\n return domElement.closest('.ck-widget__type-around__button');\n}\n/**\n * For the passed widget type around button element, this helper determines at which position\n * the paragraph would be inserted into the content if, for instance, the button was\n * clicked by the user.\n *\n * @returns The position of the button.\n */ function getTypeAroundButtonPosition(domElement) {\n return domElement.classList.contains('ck-widget__type-around__button_before') ? 'before' : 'after';\n}\n/**\n * For the passed HTML element, this helper returns the closest view widget ancestor.\n */ function getClosestWidgetViewElement(domElement, domConverter) {\n const widgetDomElement = domElement.closest('.ck-widget');\n return domConverter.mapDomToView(widgetDomElement);\n}\n/**\n * For the passed selection instance, it returns the position of the fake caret displayed next to a widget.\n *\n * **Note**: If the fake caret is not currently displayed, `null` is returned.\n *\n * @returns The position of the fake caret or `null` when none is present.\n */ function getTypeAroundFakeCaretPosition(selection) {\n return selection.getAttribute(TYPE_AROUND_SELECTION_ATTRIBUTE);\n}\n\nvar returnIcon = \"<svg viewBox=\\\"0 0 10 8\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M9.055.263v3.972h-6.77M1 4.216l2-2.038m-2 2 2 2.038\\\"/></svg>\";\n\nconst POSSIBLE_INSERTION_POSITIONS = [\n 'before',\n 'after'\n];\n// Do the SVG parsing once and then clone the result <svg> DOM element for each new button.\nconst RETURN_ARROW_ICON_ELEMENT = new DOMParser().parseFromString(returnIcon, 'image/svg+xml').firstChild;\nconst PLUGIN_DISABLED_EDITING_ROOT_CLASS = 'ck-widget__type-around_disabled';\n/**\n * A plugin that allows users to type around widgets where normally it is impossible to place the caret due\n * to limitations of web browsers. These \"tight spots\" occur, for instance, before (or after) a widget being\n * the first (or last) child of its parent or between two block widgets.\n *\n * This plugin extends the {@link module:widget/widget~Widget `Widget`} plugin and injects the user interface\n * with two buttons into each widget instance in the editor. Each of the buttons can be clicked by the\n * user if the widget is next to the \"tight spot\". Once clicked, a paragraph is created with the selection anchored\n * in it so that users can type (or insert content, paste, etc.) straight away.\n */ class WidgetTypeAround extends Plugin {\n /**\n\t * A reference to the model widget element that has the fake caret active\n\t * on either side of it. It is later used to remove CSS classes associated with the fake caret\n\t * when the widget no longer needs it.\n\t */ _currentFakeCaretModelElement = null;\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'WidgetTypeAround';\n }\n /**\n\t * @inheritDoc\n\t */ static get requires() {\n return [\n Enter,\n Delete\n ];\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const editor = this.editor;\n const editingView = editor.editing.view;\n // Set a CSS class on the view editing root when the plugin is disabled so all the buttons\n // and lines visually disappear. All the interactions are disabled in individual plugin methods.\n this.on('change:isEnabled', (evt, data, isEnabled)=>{\n editingView.change((writer)=>{\n for (const root of editingView.document.roots){\n if (isEnabled) {\n writer.removeClass(PLUGIN_DISABLED_EDITING_ROOT_CLASS, root);\n } else {\n writer.addClass(PLUGIN_DISABLED_EDITING_ROOT_CLASS, root);\n }\n }\n });\n if (!isEnabled) {\n editor.model.change((writer)=>{\n writer.removeSelectionAttribute(TYPE_AROUND_SELECTION_ATTRIBUTE);\n });\n }\n });\n this._enableTypeAroundUIInjection();\n this._enableInsertingParagraphsOnButtonClick();\n this._enableInsertingParagraphsOnEnterKeypress();\n this._enableInsertingParagraphsOnTypingKeystroke();\n this._enableTypeAroundFakeCaretActivationUsingKeyboardArrows();\n this._enableDeleteIntegration();\n this._enableInsertContentIntegration();\n this._enableInsertObjectIntegration();\n this._enableDeleteContentIntegration();\n }\n /**\n\t * @inheritDoc\n\t */ destroy() {\n super.destroy();\n this._currentFakeCaretModelElement = null;\n }\n /**\n\t * Inserts a new paragraph next to a widget element with the selection anchored in it.\n\t *\n\t * **Note**: This method is heavily user-oriented and will both focus the editing view and scroll\n\t * the viewport to the selection in the inserted paragraph.\n\t *\n\t * @param widgetModelElement The model widget element next to which a paragraph is inserted.\n\t * @param position The position where the paragraph is inserted. Either `'before'` or `'after'` the widget.\n\t */ _insertParagraph(widgetModelElement, position) {\n const editor = this.editor;\n const editingView = editor.editing.view;\n const attributesToCopy = editor.model.schema.getAttributesWithProperty(widgetModelElement, 'copyOnReplace', true);\n editor.execute('insertParagraph', {\n position: editor.model.createPositionAt(widgetModelElement, position),\n attributes: attributesToCopy\n });\n editingView.focus();\n editingView.scrollToTheSelection();\n }\n /**\n\t * A wrapper for the {@link module:utils/emittermixin~Emitter#listenTo} method that executes the callbacks only\n\t * when the plugin {@link #isEnabled is enabled}.\n\t *\n\t * @param emitter The object that fires the event.\n\t * @param event The name of the event.\n\t * @param callback The function to be called on event.\n\t * @param options Additional options.\n\t * @param options.priority The priority of this event callback. The higher the priority value the sooner\n\t * the callback will be fired. Events having the same priority are called in the order they were added.\n\t */ _listenToIfEnabled(emitter, event, callback, options) {\n this.listenTo(emitter, event, (...args)=>{\n // Do not respond if the plugin is disabled.\n if (this.isEnabled) {\n callback(...args);\n }\n }, options);\n }\n /**\n\t * Similar to {@link #_insertParagraph}, this method inserts a paragraph except that it\n\t * does not expect a position. Instead, it performs the insertion next to a selected widget\n\t * according to the `widget-type-around` model selection attribute value (fake caret position).\n\t *\n\t * Because this method requires the `widget-type-around` attribute to be set,\n\t * the insertion can only happen when the widget's fake caret is active (e.g. activated\n\t * using the keyboard).\n\t *\n\t * @returns Returns `true` when the paragraph was inserted (the attribute was present) and `false` otherwise.\n\t */ _insertParagraphAccordingToFakeCaretPosition() {\n const editor = this.editor;\n const model = editor.model;\n const modelSelection = model.document.selection;\n const typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition(modelSelection);\n if (!typeAroundFakeCaretPosition) {\n return false;\n }\n // @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n // @if CK_DEBUG_TYPING // \tconsole.info( '%c[WidgetTypeAround]%c Fake caret -> insert paragraph',\n // @if CK_DEBUG_TYPING // \t\t'font-weight: bold; color: green', ''\n // @if CK_DEBUG_TYPING // \t);\n // @if CK_DEBUG_TYPING // }\n const selectedModelElement = modelSelection.getSelectedElement();\n this._insertParagraph(selectedModelElement, typeAroundFakeCaretPosition);\n return true;\n }\n /**\n\t * Creates a listener in the editing conversion pipeline that injects the widget type around\n\t * UI into every single widget instance created in the editor.\n\t *\n\t * The UI is delivered as a {@link module:engine/view/uielement~UIElement}\n\t * wrapper which renders DOM buttons that users can use to insert paragraphs.\n\t */ _enableTypeAroundUIInjection() {\n const editor = this.editor;\n const schema = editor.model.schema;\n const t = editor.locale.t;\n const buttonTitles = {\n before: t('Insert paragraph before block'),\n after: t('Insert paragraph after block')\n };\n editor.editing.downcastDispatcher.on('insert', (evt, data, conversionApi)=>{\n const viewElement = conversionApi.mapper.toViewElement(data.item);\n if (!viewElement) {\n return;\n }\n // Filter out non-widgets and inline widgets.\n if (isTypeAroundWidget(viewElement, data.item, schema)) {\n injectUIIntoWidget(conversionApi.writer, buttonTitles, viewElement);\n const widgetLabel = viewElement.getCustomProperty('widgetLabel');\n widgetLabel.push(()=>{\n return this.isEnabled ? t('Press Enter to type after or press Shift + Enter to type before the widget') : '';\n });\n }\n }, {\n priority: 'low'\n });\n }\n /**\n\t * Brings support for the fake caret that appears when either:\n\t *\n\t * * the selection moves to a widget from a position next to it using arrow keys,\n\t * * the arrow key is pressed when the widget is already selected.\n\t *\n\t * The fake caret lets the user know that they can start typing or just press\n\t * <kbd>Enter</kbd> to insert a paragraph at the position next to a widget as suggested by the fake caret.\n\t *\n\t * The fake caret disappears when the user changes the selection or the editor\n\t * gets blurred.\n\t *\n\t * The whole idea is as follows:\n\t *\n\t * 1. A user does one of the 2 scenarios described at the beginning.\n\t * 2. The \"keydown\" listener is executed and the decision is made whether to show or hide the fake caret.\n\t * 3. If it should show up, the `widget-type-around` model selection attribute is set indicating\n\t * on which side of the widget it should appear.\n\t * 4. The selection dispatcher reacts to the selection attribute and sets CSS classes responsible for the\n\t * fake caret on the view widget.\n\t * 5. If the fake caret should disappear, the selection attribute is removed and the dispatcher\n\t * does the CSS class clean-up in the view.\n\t * 6. Additionally, `change:range` and `FocusTracker#isFocused` listeners also remove the selection\n\t * attribute (the former also removes widget CSS classes).\n\t */ _enableTypeAroundFakeCaretActivationUsingKeyboardArrows() {\n const editor = this.editor;\n const model = editor.model;\n const modelSelection = model.document.selection;\n const schema = model.schema;\n const editingView = editor.editing.view;\n // This is the main listener responsible for the fake caret.\n // Note: The priority must precede the default Widget class keydown handler (\"high\").\n this._listenToIfEnabled(editingView.document, 'arrowKey', (evt, domEventData)=>{\n this._handleArrowKeyPress(evt, domEventData);\n }, {\n context: [\n isWidget,\n '$text'\n ],\n priority: 'high'\n });\n // This listener makes sure the widget type around selection attribute will be gone from the model\n // selection as soon as the model range changes. This attribute only makes sense when a widget is selected\n // (and the \"fake horizontal caret\" is visible) so whenever the range changes (e.g. selection moved somewhere else),\n // let's get rid of the attribute so that the selection downcast dispatcher isn't even bothered.\n this._listenToIfEnabled(modelSelection, 'change:range', (evt, data)=>{\n // Do not reset the selection attribute when the change was indirect.\n if (!data.directChange) {\n return;\n }\n // Get rid of the widget type around attribute of the selection on every change:range.\n // If the range changes, it means for sure, the user is no longer in the active (\"fake horizontal caret\") mode.\n editor.model.change((writer)=>{\n writer.removeSelectionAttribute(TYPE_AROUND_SELECTION_ATTRIBUTE);\n });\n });\n // Get rid of the widget type around attribute of the selection on every document change\n // that makes widget not selected any more (i.e. widget was removed).\n this._listenToIfEnabled(model.document, 'change:data', ()=>{\n const selectedModelElement = modelSelection.getSelectedElement();\n if (selectedModelElement) {\n const selectedViewElement = editor.editing.mapper.toViewElement(selectedModelElement);\n if (isTypeAroundWidget(selectedViewElement, selectedModelElement, schema)) {\n return;\n }\n }\n editor.model.change((writer)=>{\n writer.removeSelectionAttribute(TYPE_AROUND_SELECTION_ATTRIBUTE);\n });\n });\n // React to changes of the model selection attribute made by the arrow keys listener.\n // If the block widget is selected and the attribute changes, downcast the attribute to special\n // CSS classes associated with the active (\"fake horizontal caret\") mode of the widget.\n this._listenToIfEnabled(editor.editing.downcastDispatcher, 'selection', (evt, data, conversionApi)=>{\n const writer = conversionApi.writer;\n if (this._currentFakeCaretModelElement) {\n const selectedViewElement = conversionApi.mapper.toViewElement(this._currentFakeCaretModelElement);\n if (selectedViewElement) {\n // Get rid of CSS classes associated with the active (\"fake horizontal caret\") mode from the view widget.\n writer.removeClass(POSSIBLE_INSERTION_POSITIONS.map(positionToWidgetCssClass), selectedViewElement);\n this._currentFakeCaretModelElement = null;\n }\n }\n const selectedModelElement = data.selection.getSelectedElement();\n if (!selectedModelElement) {\n return;\n }\n const selectedViewElement = conversionApi.mapper.toViewElement(selectedModelElement);\n if (!isTypeAroundWidget(selectedViewElement, selectedModelElement, schema)) {\n return;\n }\n const typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition(data.selection);\n if (!typeAroundFakeCaretPosition) {\n return;\n }\n writer.addClass(positionToWidgetCssClass(typeAroundFakeCaretPosition), selectedViewElement);\n // Remember the view widget that got the \"fake-caret\" CSS class. This class should be removed ASAP when the\n // selection changes\n this._currentFakeCaretModelElement = selectedModelElement;\n });\n this._listenToIfEnabled(editor.ui.focusTracker, 'change:isFocused', (evt, name, isFocused)=>{\n if (!isFocused) {\n editor.model.change((writer)=>{\n writer.removeSelectionAttribute(TYPE_AROUND_SELECTION_ATTRIBUTE);\n });\n }\n });\n function positionToWidgetCssClass(position) {\n return `ck-widget_type-around_show-fake-caret_${position}`;\n }\n }\n /**\n\t * A listener executed on each \"keydown\" in the view document, a part of\n\t * {@link #_enableTypeAroundFakeCaretActivationUsingKeyboardArrows}.\n\t *\n\t * It decides whether the arrow keypress should activate the fake caret or not (also whether it should\n\t * be deactivated).\n\t *\n\t * The fake caret activation is done by setting the `widget-type-around` model selection attribute\n\t * in this listener, and stopping and preventing the event that would normally be handled by the widget\n\t * plugin that is responsible for the regular keyboard navigation near/across all widgets (that\n\t * includes inline widgets, which are ignored by the widget type around plugin).\n\t */ _handleArrowKeyPress(evt, domEventData) {\n const editor = this.editor;\n const model = editor.model;\n const modelSelection = model.document.selection;\n const schema = model.schema;\n const editingView = editor.editing.view;\n const keyCode = domEventData.keyCode;\n const isForward = isForwardArrowKeyCode(keyCode, editor.locale.contentLanguageDirection);\n const selectedViewElement = editingView.document.selection.getSelectedElement();\n const selectedModelElement = editor.editing.mapper.toModelElement(selectedViewElement);\n let shouldStopAndPreventDefault;\n // Handle keyboard navigation when a type-around-compatible widget is currently selected.\n if (isTypeAroundWidget(selectedViewElement, selectedModelElement, schema)) {\n shouldStopAndPreventDefault = this._handleArrowKeyPressOnSelectedWidget(isForward);\n } else if (modelSelection.isCollapsed) {\n shouldStopAndPreventDefault = this._handleArrowKeyPressWhenSelectionNextToAWidget(isForward);\n } else if (!domEventData.shiftKey) {\n shouldStopAndPreventDefault = this._handleArrowKeyPressWhenNonCollapsedSelection(isForward);\n }\n if (shouldStopAndPreventDefault) {\n domEventData.preventDefault();\n evt.stop();\n }\n }\n /**\n\t * Handles the keyboard navigation on \"keydown\" when a widget is currently selected and activates or deactivates\n\t * the fake caret for that widget, depending on the current value of the `widget-type-around` model\n\t * selection attribute and the direction of the pressed arrow key.\n\t *\n\t * @param isForward `true` when the pressed arrow key was responsible for the forward model selection movement\n\t * as in {@link module:utils/keyboard~isForwardArrowKeyCode}.\n\t * @returns Returns `true` when the keypress was handled and no other keydown listener of the editor should\n\t * process the event any further. Returns `false` otherwise.\n\t */ _handleArrowKeyPressOnSelectedWidget(isForward) {\n const editor = this.editor;\n const model = editor.model;\n const modelSelection = model.document.selection;\n const typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition(modelSelection);\n return model.change((writer)=>{\n // If the fake caret is displayed...\n if (typeAroundFakeCaretPosition) {\n const isLeavingWidget = typeAroundFakeCaretPosition === (isForward ? 'after' : 'before');\n // If the keyboard arrow works against the value of the selection attribute...\n // then remove the selection attribute but prevent default DOM actions\n // and do not let the Widget plugin listener move the selection. This brings\n // the widget back to the state, for instance, like if was selected using the mouse.\n //\n // **Note**: If leaving the widget when the fake caret is active, then the default\n // Widget handler will change the selection and, in turn, this will automatically discard\n // the selection attribute.\n if (!isLeavingWidget) {\n writer.removeSelectionAttribute(TYPE_AROUND_SELECTION_ATTRIBUTE);\n return true;\n }\n } else {\n writer.setSelectionAttribute(TYPE_AROUND_SELECTION_ATTRIBUTE, isForward ? 'after' : 'before');\n return true;\n }\n return false;\n });\n }\n /**\n\t * Handles the keyboard navigation on \"keydown\" when **no** widget is selected but the selection is **directly** next\n\t * to one and upon the fake caret should become active for this widget upon arrow keypress\n\t * (AKA entering/selecting the widget).\n\t *\n\t * **Note**: This code mirrors the implementation from the widget plugin but also adds the selection attribute.\n\t * Unfortunately, there is no safe way to let the widget plugin do the selection part first and then just set the\n\t * selection attribute here in the widget type around plugin. This is why this code must duplicate some from the widget plugin.\n\t *\n\t * @param isForward `true` when the pressed arrow key was responsible for the forward model selection movement\n\t * as in {@link module:utils/keyboard~isForwardArrowKeyCode}.\n\t * @returns Returns `true` when the keypress was handled and no other keydown listener of the editor should\n\t * process the event any further. Returns `false` otherwise.\n\t */ _handleArrowKeyPressWhenSelectionNextToAWidget(isForward) {\n const editor = this.editor;\n const model = editor.model;\n const schema = model.schema;\n const widgetPlugin = editor.plugins.get('Widget');\n // This is the widget the selection is about to be set on.\n const modelElementNextToSelection = widgetPlugin._getObjectElementNextToSelection(isForward);\n const viewElementNextToSelection = editor.editing.mapper.toViewElement(modelElementNextToSelection);\n if (isTypeAroundWidget(viewElementNextToSelection, modelElementNextToSelection, schema)) {\n model.change((writer)=>{\n widgetPlugin._setSelectionOverElement(modelElementNextToSelection);\n writer.setSelectionAttribute(TYPE_AROUND_SELECTION_ATTRIBUTE, isForward ? 'before' : 'after');\n });\n // The change() block above does the same job as the Widget plugin. The event can\n // be safely canceled.\n return true;\n }\n return false;\n }\n /**\n\t * Handles the keyboard navigation on \"keydown\" when a widget is currently selected (together with some other content)\n\t * and the widget is the first or last element in the selection. It activates or deactivates the fake caret for that widget.\n\t *\n\t * @param isForward `true` when the pressed arrow key was responsible for the forward model selection movement\n\t * as in {@link module:utils/keyboard~isForwardArrowKeyCode}.\n\t * @returns Returns `true` when the keypress was handled and no other keydown listener of the editor should\n\t * process the event any further. Returns `false` otherwise.\n\t */ _handleArrowKeyPressWhenNonCollapsedSelection(isForward) {\n const editor = this.editor;\n const model = editor.model;\n const schema = model.schema;\n const mapper = editor.editing.mapper;\n const modelSelection = model.document.selection;\n const selectedModelNode = isForward ? modelSelection.getLastPosition().nodeBefore : modelSelection.getFirstPosition().nodeAfter;\n const selectedViewNode = mapper.toViewElement(selectedModelNode);\n // There is a widget at the collapse position so collapse the selection to the fake caret on it.\n if (isTypeAroundWidget(selectedViewNode, selectedModelNode, schema)) {\n model.change((writer)=>{\n writer.setSelection(selectedModelNode, 'on');\n writer.setSelectionAttribute(TYPE_AROUND_SELECTION_ATTRIBUTE, isForward ? 'after' : 'before');\n });\n return true;\n }\n return false;\n }\n /**\n\t * Registers a `mousedown` listener for the view document which intercepts events\n\t * coming from the widget type around UI, which happens when a user clicks one of the buttons\n\t * that insert a paragraph next to a widget.\n\t */ _enableInsertingParagraphsOnButtonClick() {\n const editor = this.editor;\n const editingView = editor.editing.view;\n this._listenToIfEnabled(editingView.document, 'mousedown', (evt, domEventData)=>{\n const button = getClosestTypeAroundDomButton(domEventData.domTarget);\n if (!button) {\n return;\n }\n const buttonPosition = getTypeAroundButtonPosition(button);\n const widgetViewElement = getClosestWidgetViewElement(button, editingView.domConverter);\n const widgetModelElement = editor.editing.mapper.toModelElement(widgetViewElement);\n this._insertParagraph(widgetModelElement, buttonPosition);\n domEventData.preventDefault();\n evt.stop();\n });\n }\n /**\n\t * Creates the <kbd>Enter</kbd> key listener on the view document that allows the user to insert a paragraph\n\t * near the widget when either:\n\t *\n\t * * The fake caret was first activated using the arrow keys,\n\t * * The entire widget is selected in the model.\n\t *\n\t * In the first case, the new paragraph is inserted according to the `widget-type-around` selection\n\t * attribute (see {@link #_handleArrowKeyPress}).\n\t *\n\t * In the second case, the new paragraph is inserted based on whether a soft (<kbd>Shift</kbd>+<kbd>Enter</kbd>) keystroke\n\t * was pressed or not.\n\t */ _enableInsertingParagraphsOnEnterKeypress() {\n const editor = this.editor;\n const selection = editor.model.document.selection;\n const editingView = editor.editing.view;\n this._listenToIfEnabled(editingView.document, 'enter', (evt, domEventData)=>{\n // This event could be triggered from inside the widget but we are interested\n // only when the widget is selected itself.\n if (evt.eventPhase != 'atTarget') {\n return;\n }\n const selectedModelElement = selection.getSelectedElement();\n const selectedViewElement = editor.editing.mapper.toViewElement(selectedModelElement);\n const schema = editor.model.schema;\n let wasHandled;\n // First check if the widget is selected and there's a type around selection attribute associated\n // with the fake caret that would tell where to insert a new paragraph.\n if (this._insertParagraphAccordingToFakeCaretPosition()) {\n wasHandled = true;\n } else if (isTypeAroundWidget(selectedViewElement, selectedModelElement, schema)) {\n this._insertParagraph(selectedModelElement, domEventData.isSoft ? 'before' : 'after');\n wasHandled = true;\n }\n if (wasHandled) {\n domEventData.preventDefault();\n evt.stop();\n }\n }, {\n context: isWidget\n });\n }\n /**\n\t * Similar to the {@link #_enableInsertingParagraphsOnEnterKeypress}, it allows the user\n\t * to insert a paragraph next to a widget when the fake caret was activated using arrow\n\t * keys but it responds to typing instead of <kbd>Enter</kbd>.\n\t *\n\t * Listener enabled by this method will insert a new paragraph according to the `widget-type-around`\n\t * model selection attribute as the user simply starts typing, which creates the impression that the fake caret\n\t * behaves like a real one rendered by the browser (AKA your text appears where the caret was).\n\t *\n\t * **Note**: At the moment this listener creates 2 undo steps: one for the `insertParagraph` command\n\t * and another one for actual typing. It is not a disaster but this may need to be fixed\n\t * sooner or later.\n\t */ _enableInsertingParagraphsOnTypingKeystroke() {\n const editor = this.editor;\n const viewDocument = editor.editing.view.document;\n // Note: The priority must precede the default Input plugin insertText handler.\n this._listenToIfEnabled(viewDocument, 'insertText', (evt, data)=>{\n if (this._insertParagraphAccordingToFakeCaretPosition()) {\n // The view selection in the event data contains the widget. If the new paragraph\n // was inserted, modify the view selection passed along with the insertText event\n // so the default event handler in the Input plugin starts typing inside the paragraph.\n // Otherwise, the typing would be over the widget.\n data.selection = viewDocument.selection;\n }\n }, {\n priority: 'high'\n });\n if (env.isAndroid) {\n // On Android with English keyboard, the composition starts just by putting caret\n // at the word end or by selecting a table column. This is not a real composition started.\n // Trigger delete content on first composition key pressed.\n this._listenToIfEnabled(viewDocument, 'keydown', (evt, data)=>{\n if (data.keyCode == 229) {\n this._insertParagraphAccordingToFakeCaretPosition();\n }\n });\n } else {\n // Note: The priority must precede the default Input plugin compositionstart handler (to call it before delete content).\n this._listenToIfEnabled(viewDocument, 'compositionstart', ()=>{\n this._insertParagraphAccordingToFakeCaretPosition();\n }, {\n priority: 'high'\n });\n }\n }\n /**\n\t * It creates a \"delete\" event listener on the view document to handle cases when the <kbd>Delete</kbd> or <kbd>Backspace</kbd>\n\t * is pressed and the fake caret is currently active.\n\t *\n\t * The fake caret should create an illusion of a real browser caret so that when it appears before or after\n\t * a widget, pressing <kbd>Delete</kbd> or <kbd>Backspace</kbd> should remove a widget or delete the content\n\t * before or after a widget (depending on the content surrounding the widget).\n\t */ _enableDeleteIntegration() {\n const editor = this.editor;\n const editingView = editor.editing.view;\n const model = editor.model;\n const schema = model.schema;\n this._listenToIfEnabled(editingView.document, 'delete', (evt, domEventData)=>{\n // This event could be triggered from inside the widget but we are interested\n // only when the widget is selected itself.\n if (evt.eventPhase != 'atTarget') {\n return;\n }\n const typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition(model.document.selection);\n // This listener handles only these cases when the fake caret is active.\n if (!typeAroundFakeCaretPosition) {\n return;\n }\n const direction = domEventData.direction;\n const selectedModelWidget = model.document.selection.getSelectedElement();\n const isFakeCaretBefore = typeAroundFakeCaretPosition === 'before';\n const isDeleteForward = direction == 'forward';\n const shouldDeleteEntireWidget = isFakeCaretBefore === isDeleteForward;\n if (shouldDeleteEntireWidget) {\n editor.execute('delete', {\n selection: model.createSelection(selectedModelWidget, 'on')\n });\n } else {\n const range = schema.getNearestSelectionRange(model.createPositionAt(selectedModelWidget, typeAroundFakeCaretPosition), direction);\n // If there is somewhere to move selection to, then there will be something to delete.\n if (range) {\n // If the range is NOT collapsed, then we know that the range contains an object (see getNearestSelectionRange() docs).\n if (!range.isCollapsed) {\n model.change((writer)=>{\n writer.setSelection(range);\n editor.execute(isDeleteForward ? 'deleteForward' : 'delete');\n });\n } else {\n const probe = model.createSelection(range.start);\n model.modifySelection(probe, {\n direction\n });\n // If the range is collapsed, let's see if a non-collapsed range exists that can could be deleted.\n // If such range exists, use the editor command because it it safe for collaboration (it merges where it can).\n if (!probe.focus.isEqual(range.start)) {\n model.change((writer)=>{\n writer.setSelection(range);\n editor.execute(isDeleteForward ? 'deleteForward' : 'delete');\n });\n } else {\n const deepestEmptyRangeAncestor = getDeepestEmptyElementAncestor(schema, range.start.parent);\n model.deleteContent(model.createSelection(deepestEmptyRangeAncestor, 'on'), {\n doNotAutoparagraph: true\n });\n }\n }\n }\n }\n // If some content was deleted, don't let the handler from the Widget plugin kick in.\n // If nothing was deleted, then the default handler will have nothing to do anyway.\n domEventData.preventDefault();\n evt.stop();\n }, {\n context: isWidget\n });\n }\n /**\n\t * Attaches the {@link module:engine/model/model~Model#event:insertContent} event listener that, for instance, allows the user to paste\n\t * content near a widget when the fake caret is first activated using the arrow keys.\n\t *\n\t * The content is inserted according to the `widget-type-around` selection attribute (see {@link #_handleArrowKeyPress}).\n\t */ _enableInsertContentIntegration() {\n const editor = this.editor;\n const model = this.editor.model;\n const documentSelection = model.document.selection;\n this._listenToIfEnabled(editor.model, 'insertContent', (evt, [content, selectable])=>{\n if (selectable && !selectable.is('documentSelection')) {\n return;\n }\n const typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition(documentSelection);\n if (!typeAroundFakeCaretPosition) {\n return;\n }\n evt.stop();\n return model.change((writer)=>{\n const selectedElement = documentSelection.getSelectedElement();\n const position = model.createPositionAt(selectedElement, typeAroundFakeCaretPosition);\n const selection = writer.createSelection(position);\n const result = model.insertContent(content, selection);\n writer.setSelection(selection);\n return result;\n });\n }, {\n priority: 'high'\n });\n }\n /**\n\t * Attaches the {@link module:engine/model/model~Model#event:insertObject} event listener that modifies the\n\t * `options.findOptimalPosition`parameter to position of fake caret in relation to selected element\n\t * to reflect user's intent of desired insertion position.\n\t *\n\t * The object is inserted according to the `widget-type-around` selection attribute (see {@link #_handleArrowKeyPress}).\n\t */ _enableInsertObjectIntegration() {\n const editor = this.editor;\n const model = this.editor.model;\n const documentSelection = model.document.selection;\n this._listenToIfEnabled(editor.model, 'insertObject', (evt, args)=>{\n const [, selectable, options = {}] = args;\n if (selectable && !selectable.is('documentSelection')) {\n return;\n }\n const typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition(documentSelection);\n if (!typeAroundFakeCaretPosition) {\n return;\n }\n options.findOptimalPosition = typeAroundFakeCaretPosition;\n args[3] = options;\n }, {\n priority: 'high'\n });\n }\n /**\n\t * Attaches the {@link module:engine/model/model~Model#event:deleteContent} event listener to block the event when the fake\n\t * caret is active.\n\t *\n\t * This is required for cases that trigger {@link module:engine/model/model~Model#deleteContent `model.deleteContent()`}\n\t * before calling {@link module:engine/model/model~Model#insertContent `model.insertContent()`} like, for instance,\n\t * plain text pasting.\n\t */ _enableDeleteContentIntegration() {\n const editor = this.editor;\n const model = this.editor.model;\n const documentSelection = model.document.selection;\n this._listenToIfEnabled(editor.model, 'deleteContent', (evt, [selection])=>{\n if (selection && !selection.is('documentSelection')) {\n return;\n }\n const typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition(documentSelection);\n // Disable removing the selection content while pasting plain text.\n if (typeAroundFakeCaretPosition) {\n evt.stop();\n }\n }, {\n priority: 'high'\n });\n }\n}\n/**\n * Injects the type around UI into a view widget instance.\n */ function injectUIIntoWidget(viewWriter, buttonTitles, widgetViewElement) {\n const typeAroundWrapper = viewWriter.createUIElement('div', {\n class: 'ck ck-reset_all ck-widget__type-around'\n }, function(domDocument) {\n const wrapperDomElement = this.toDomElement(domDocument);\n injectButtons(wrapperDomElement, buttonTitles);\n injectFakeCaret(wrapperDomElement);\n return wrapperDomElement;\n });\n // Inject the type around wrapper into the widget's wrapper.\n viewWriter.insert(viewWriter.createPositionAt(widgetViewElement, 'end'), typeAroundWrapper);\n}\n/**\n * FYI: Not using the IconView class because each instance would need to be destroyed to avoid memory leaks\n * and it's pretty hard to figure out when a view (widget) is gone for good so it's cheaper to use raw\n * <svg> here.\n */ function injectButtons(wrapperDomElement, buttonTitles) {\n for (const position of POSSIBLE_INSERTION_POSITIONS){\n const buttonTemplate = new Template({\n tag: 'div',\n attributes: {\n class: [\n 'ck',\n 'ck-widget__type-around__button',\n `ck-widget__type-around__button_${position}`\n ],\n title: buttonTitles[position],\n 'aria-hidden': 'true'\n },\n children: [\n wrapperDomElement.ownerDocument.importNode(RETURN_ARROW_ICON_ELEMENT, true)\n ]\n });\n wrapperDomElement.appendChild(buttonTemplate.render());\n }\n}\nfunction injectFakeCaret(wrapperDomElement) {\n const caretTemplate = new Template({\n tag: 'div',\n attributes: {\n class: [\n 'ck',\n 'ck-widget__type-around__fake-caret'\n ]\n }\n });\n wrapperDomElement.appendChild(caretTemplate.render());\n}\n/**\n * Returns the ancestor of an element closest to the root which is empty. For instance,\n * for `<baz>`:\n *\n * ```\n * <foo>abc<bar><baz></baz></bar></foo>\n * ```\n *\n * it returns `<bar>`.\n */ function getDeepestEmptyElementAncestor(schema, element) {\n let deepestEmptyAncestor = element;\n for (const ancestor of element.getAncestors({\n parentFirst: true\n })){\n if (ancestor.childCount > 1 || schema.isLimit(ancestor)) {\n break;\n }\n deepestEmptyAncestor = ancestor;\n }\n return deepestEmptyAncestor;\n}\n\n/**\n * Returns 'keydown' handler for up/down arrow keys that modifies the caret movement if it's in a text line next to an object.\n *\n * @param editing The editing controller.\n */ function verticalNavigationHandler(editing) {\n const model = editing.model;\n return (evt, data)=>{\n const arrowUpPressed = data.keyCode == keyCodes.arrowup;\n const arrowDownPressed = data.keyCode == keyCodes.arrowdown;\n const expandSelection = data.shiftKey;\n const selection = model.document.selection;\n if (!arrowUpPressed && !arrowDownPressed) {\n return;\n }\n const isForward = arrowDownPressed;\n // Navigation is in the opposite direction than the selection direction so this is shrinking of the selection.\n // Selection for sure will not approach any object.\n if (expandSelection && selectionWillShrink(selection, isForward)) {\n return;\n }\n // Find a range between selection and closest limit element.\n const range = findTextRangeFromSelection(editing, selection, isForward);\n // There is no selection position inside the limit element.\n if (!range) {\n return;\n }\n // If already at the edge of a limit element.\n if (range.isCollapsed) {\n // A collapsed selection at limit edge - nothing more to do.\n if (selection.isCollapsed) {\n return;\n } else if (expandSelection) {\n return;\n }\n }\n // If the range is a single line (there is no word wrapping) then move the selection to the position closest to the limit element.\n //\n // We can't move the selection directly to the isObject element (eg. table cell) because of dual position at the end/beginning\n // of wrapped line (it's at the same time at the end of one line and at the start of the next line).\n if (range.isCollapsed || isSingleLineRange(editing, range, isForward)) {\n model.change((writer)=>{\n const newPosition = isForward ? range.end : range.start;\n if (expandSelection) {\n const newSelection = model.createSelection(selection.anchor);\n newSelection.setFocus(newPosition);\n writer.setSelection(newSelection);\n } else {\n writer.setSelection(newPosition);\n }\n });\n evt.stop();\n data.preventDefault();\n data.stopPropagation();\n }\n };\n}\n/**\n * Finds the range between selection and closest limit element (in the direction of navigation).\n * The position next to limit element is adjusted to the closest allowed `$text` position.\n *\n * Returns `null` if, according to the schema, the resulting range cannot contain a `$text` element.\n *\n * @param editing The editing controller.\n * @param selection The current selection.\n * @param isForward The expected navigation direction.\n */ function findTextRangeFromSelection(editing, selection, isForward) {\n const model = editing.model;\n if (isForward) {\n const startPosition = selection.isCollapsed ? selection.focus : selection.getLastPosition();\n const endPosition = getNearestNonInlineLimit(model, startPosition, 'forward');\n // There is no limit element, browser should handle this.\n if (!endPosition) {\n return null;\n }\n const range = model.createRange(startPosition, endPosition);\n const lastRangePosition = getNearestTextPosition(model.schema, range, 'backward');\n if (lastRangePosition) {\n return model.createRange(startPosition, lastRangePosition);\n }\n return null;\n } else {\n const endPosition = selection.isCollapsed ? selection.focus : selection.getFirstPosition();\n const startPosition = getNearestNonInlineLimit(model, endPosition, 'backward');\n // There is no limit element, browser should handle this.\n if (!startPosition) {\n return null;\n }\n const range = model.createRange(startPosition, endPosition);\n const firstRangePosition = getNearestTextPosition(model.schema, range, 'forward');\n if (firstRangePosition) {\n return model.createRange(firstRangePosition, endPosition);\n }\n return null;\n }\n}\n/**\n * Finds the limit element position that is closest to startPosition.\n *\n * @param direction Search direction.\n */ function getNearestNonInlineLimit(model, startPosition, direction) {\n const schema = model.schema;\n const range = model.createRangeIn(startPosition.root);\n const walkerValueType = direction == 'forward' ? 'elementStart' : 'elementEnd';\n for (const { previousPosition, item, type } of range.getWalker({\n startPosition,\n direction\n })){\n if (schema.isLimit(item) && !schema.isInline(item)) {\n return previousPosition;\n }\n // Stop looking for isLimit element if the next element is a block element (it is for sure not single line).\n if (type == walkerValueType && schema.isBlock(item)) {\n return null;\n }\n }\n return null;\n}\n/**\n * Basing on the provided range, finds the first or last (depending on `direction`) position inside the range\n * that can contain `$text` (according to schema).\n *\n * @param schema The schema.\n * @param range The range to find the position in.\n * @param direction Search direction.\n * @returns The nearest selection position.\n *\n */ function getNearestTextPosition(schema, range, direction) {\n const position = direction == 'backward' ? range.end : range.start;\n if (schema.checkChild(position, '$text')) {\n return position;\n }\n for (const { nextPosition } of range.getWalker({\n direction\n })){\n if (schema.checkChild(nextPosition, '$text')) {\n return nextPosition;\n }\n }\n return null;\n}\n/**\n * Checks if the DOM range corresponding to the provided model range renders as a single line by analyzing DOMRects\n * (verifying if they visually wrap content to the next line).\n *\n * @param editing The editing controller.\n * @param modelRange The current table cell content range.\n * @param isForward The expected navigation direction.\n */ function isSingleLineRange(editing, modelRange, isForward) {\n const model = editing.model;\n const domConverter = editing.view.domConverter;\n // Wrapped lines contain exactly the same position at the end of current line\n // and at the beginning of next line. That position's client rect is at the end\n // of current line. In case of caret at first position of the last line that 'dual'\n // position would be detected as it's not the last line.\n if (isForward) {\n const probe = model.createSelection(modelRange.start);\n model.modifySelection(probe);\n // If the new position is at the end of the container then we can't use this position\n // because it would provide incorrect result for eg caption of image and selection\n // just before end of it. Also in this case there is no \"dual\" position.\n if (!probe.focus.isAtEnd && !modelRange.start.isEqual(probe.focus)) {\n modelRange = model.createRange(probe.focus, modelRange.end);\n }\n }\n const viewRange = editing.mapper.toViewRange(modelRange);\n const domRange = domConverter.viewRangeToDom(viewRange);\n const rects = Rect.getDomRangeRects(domRange);\n let boundaryVerticalPosition;\n for (const rect of rects){\n if (boundaryVerticalPosition === undefined) {\n boundaryVerticalPosition = Math.round(rect.bottom);\n continue;\n }\n // Let's check if this rect is in new line.\n if (Math.round(rect.top) >= boundaryVerticalPosition) {\n return false;\n }\n boundaryVerticalPosition = Math.max(boundaryVerticalPosition, Math.round(rect.bottom));\n }\n return true;\n}\nfunction selectionWillShrink(selection, isForward) {\n return !selection.isCollapsed && selection.isBackward == isForward;\n}\n\n/**\n * The widget plugin. It enables base support for widgets.\n *\n * See {@glink api/widget package page} for more details and documentation.\n *\n * This plugin enables multiple behaviors required by widgets:\n *\n * * The model to view selection converter for the editing pipeline (it handles widget custom selection rendering).\n * If a converted selection wraps around a widget element, that selection is marked as\n * {@link module:engine/view/selection~Selection#isFake fake}. Additionally, the `ck-widget_selected` CSS class\n * is added to indicate that widget has been selected.\n * * The mouse and keyboard events handling on and around widget elements.\n */ class Widget extends Plugin {\n /**\n\t * Holds previously selected widgets.\n\t */ _previouslySelected = new Set();\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'Widget';\n }\n /**\n\t * @inheritDoc\n\t */ static get requires() {\n return [\n WidgetTypeAround,\n Delete\n ];\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const editor = this.editor;\n const view = editor.editing.view;\n const viewDocument = view.document;\n const t = editor.t;\n // Model to view selection converter.\n // Converts selection placed over widget element to fake selection.\n //\n // By default, the selection is downcasted by the engine to surround the attribute element, even though its only\n // child is an inline widget. A similar thing also happens when a collapsed marker is rendered as a UI element\n // next to an inline widget: the view selection contains both the widget and the marker.\n //\n // This prevents creating a correct fake selection when this inline widget is selected. Normalize the selection\n // in these cases based on the model:\n //\n //\t\t[<attributeElement><inlineWidget /></attributeElement>] -> <attributeElement>[<inlineWidget />]</attributeElement>\n //\t\t[<uiElement></uiElement><inlineWidget />] -> <uiElement></uiElement>[<inlineWidget />]\n //\n // Thanks to this:\n //\n // * fake selection can be set correctly,\n // * any logic depending on (View)Selection#getSelectedElement() also works OK.\n //\n // See https://github.com/ckeditor/ckeditor5/issues/9524.\n this.editor.editing.downcastDispatcher.on('selection', (evt, data, conversionApi)=>{\n const viewWriter = conversionApi.writer;\n const modelSelection = data.selection;\n // The collapsed selection can't contain any widget.\n if (modelSelection.isCollapsed) {\n return;\n }\n const selectedModelElement = modelSelection.getSelectedElement();\n if (!selectedModelElement) {\n return;\n }\n const selectedViewElement = editor.editing.mapper.toViewElement(selectedModelElement);\n if (!isWidget(selectedViewElement)) {\n return;\n }\n if (!conversionApi.consumable.consume(modelSelection, 'selection')) {\n return;\n }\n viewWriter.setSelection(viewWriter.createRangeOn(selectedViewElement), {\n fake: true,\n label: getLabel(selectedViewElement)\n });\n });\n // Mark all widgets inside the selection with the css class.\n // This handler is registered at the 'low' priority so it's triggered after the real selection conversion.\n this.editor.editing.downcastDispatcher.on('selection', (evt, data, conversionApi)=>{\n // Remove selected class from previously selected widgets.\n this._clearPreviouslySelectedWidgets(conversionApi.writer);\n const viewWriter = conversionApi.writer;\n const viewSelection = viewWriter.document.selection;\n let lastMarked = null;\n for (const range of viewSelection.getRanges()){\n // Note: There could be multiple selected widgets in a range but no fake selection.\n // All of them must be marked as selected, for instance [<widget></widget><widget></widget>]\n for (const value of range){\n const node = value.item;\n // Do not mark nested widgets in selected one. See: #4594\n if (isWidget(node) && !isChild(node, lastMarked)) {\n viewWriter.addClass(WIDGET_SELECTED_CLASS_NAME, node);\n this._previouslySelected.add(node);\n lastMarked = node;\n }\n }\n }\n }, {\n priority: 'low'\n });\n // If mouse down is pressed on widget - create selection over whole widget.\n view.addObserver(MouseObserver);\n this.listenTo(viewDocument, 'mousedown', (...args)=>this._onMousedown(...args));\n // There are two keydown listeners working on different priorities. This allows other\n // features such as WidgetTypeAround or TableKeyboard to attach their listeners in between\n // and customize the behavior even further in different content/selection scenarios.\n //\n // * The first listener handles changing the selection on arrow key press\n // if the widget is selected or if the selection is next to a widget and the widget\n // should become selected upon the arrow key press.\n //\n // * The second (late) listener makes sure the default browser action on arrow key press is\n // prevented when a widget is selected. This prevents the selection from being moved\n // from a fake selection container.\n this.listenTo(viewDocument, 'arrowKey', (...args)=>{\n this._handleSelectionChangeOnArrowKeyPress(...args);\n }, {\n context: [\n isWidget,\n '$text'\n ]\n });\n this.listenTo(viewDocument, 'arrowKey', (...args)=>{\n this._preventDefaultOnArrowKeyPress(...args);\n }, {\n context: '$root'\n });\n this.listenTo(viewDocument, 'arrowKey', verticalNavigationHandler(this.editor.editing), {\n context: '$text'\n });\n // Handle custom delete behaviour.\n this.listenTo(viewDocument, 'delete', (evt, data)=>{\n if (this._handleDelete(data.direction == 'forward')) {\n data.preventDefault();\n evt.stop();\n }\n }, {\n context: '$root'\n });\n // Handle Tab key while a widget is selected.\n this.listenTo(viewDocument, 'tab', (evt, data)=>{\n // This event could be triggered from inside the widget, but we are interested\n // only when the widget is selected itself.\n if (evt.eventPhase != 'atTarget') {\n return;\n }\n if (data.shiftKey) {\n return;\n }\n if (this._selectFirstNestedEditable()) {\n data.preventDefault();\n evt.stop();\n }\n }, {\n context: isWidget,\n priority: 'low'\n });\n // Handle Shift+Tab key while caret inside a widget editable.\n this.listenTo(viewDocument, 'tab', (evt, data)=>{\n if (!data.shiftKey) {\n return;\n }\n if (this._selectAncestorWidget()) {\n data.preventDefault();\n evt.stop();\n }\n }, {\n priority: 'low'\n });\n // Handle Esc key while inside a nested editable.\n this.listenTo(viewDocument, 'keydown', (evt, data)=>{\n if (data.keystroke != keyCodes.esc) {\n return;\n }\n if (this._selectAncestorWidget()) {\n data.preventDefault();\n evt.stop();\n }\n }, {\n priority: 'low'\n });\n // Add the information about the keystrokes to the accessibility database.\n editor.accessibility.addKeystrokeInfoGroup({\n id: 'widget',\n label: t('Keystrokes that can be used when a widget is selected (for example: image, table, etc.)'),\n keystrokes: [\n {\n label: t('Move focus from an editable area back to the parent widget'),\n keystroke: 'Esc'\n },\n {\n label: t('Insert a new paragraph directly after a widget'),\n keystroke: 'Enter'\n },\n {\n label: t('Insert a new paragraph directly before a widget'),\n keystroke: 'Shift+Enter'\n },\n {\n label: t('Move the caret to allow typing directly before a widget'),\n keystroke: [\n [\n 'arrowup'\n ],\n [\n 'arrowleft'\n ]\n ]\n },\n {\n label: t('Move the caret to allow typing directly after a widget'),\n keystroke: [\n [\n 'arrowdown'\n ],\n [\n 'arrowright'\n ]\n ]\n }\n ]\n });\n }\n /**\n\t * Handles {@link module:engine/view/document~Document#event:mousedown mousedown} events on widget elements.\n\t */ _onMousedown(eventInfo, domEventData) {\n const editor = this.editor;\n const view = editor.editing.view;\n const viewDocument = view.document;\n let element = domEventData.target;\n // If triple click should select entire paragraph.\n if (domEventData.domEvent.detail >= 3) {\n if (this._selectBlockContent(element)) {\n domEventData.preventDefault();\n }\n return;\n }\n // If target is not a widget element - check if one of the ancestors is.\n if (!isWidget(element)) {\n const editableOrWidgetElement = findClosestEditableOrWidgetAncestor(element);\n if (!editableOrWidgetElement) {\n return;\n }\n if (isWidget(editableOrWidgetElement)) {\n element = editableOrWidgetElement;\n } else {\n // Pick view range from the point where the mouse was clicked.\n const clickTargetFromPoint = getElementFromMouseEvent(view, domEventData);\n if (clickTargetFromPoint && isWidget(clickTargetFromPoint)) {\n element = clickTargetFromPoint;\n } else {\n return;\n }\n }\n }\n // On Android selection would jump to the first table cell, on other devices\n // we can't block it (and don't need to) because of drag and drop support.\n if (env.isAndroid) {\n domEventData.preventDefault();\n }\n // Focus editor if is not focused already.\n if (!viewDocument.isFocused) {\n view.focus();\n }\n // Create model selection over widget.\n const modelElement = editor.editing.mapper.toModelElement(element);\n this._setSelectionOverElement(modelElement);\n }\n /**\n\t * Selects entire block content, e.g. on triple click it selects entire paragraph.\n\t */ _selectBlockContent(element) {\n const editor = this.editor;\n const model = editor.model;\n const mapper = editor.editing.mapper;\n const schema = model.schema;\n const viewElement = mapper.findMappedViewAncestor(this.editor.editing.view.createPositionAt(element, 0));\n const modelElement = findTextBlockAncestor(mapper.toModelElement(viewElement), model.schema);\n if (!modelElement) {\n return false;\n }\n model.change((writer)=>{\n const nextTextBlock = !schema.isLimit(modelElement) ? findNextTextBlock(writer.createPositionAfter(modelElement), schema) : null;\n const start = writer.createPositionAt(modelElement, 0);\n const end = nextTextBlock ? writer.createPositionAt(nextTextBlock, 0) : writer.createPositionAt(modelElement, 'end');\n writer.setSelection(writer.createRange(start, end));\n });\n return true;\n }\n /**\n\t * Handles {@link module:engine/view/document~Document#event:keydown keydown} events and changes\n\t * the model selection when:\n\t *\n\t * * arrow key is pressed when the widget is selected,\n\t * * the selection is next to a widget and the widget should become selected upon the arrow key press.\n\t *\n\t * See {@link #_preventDefaultOnArrowKeyPress}.\n\t */ _handleSelectionChangeOnArrowKeyPress(eventInfo, domEventData) {\n const keyCode = domEventData.keyCode;\n const model = this.editor.model;\n const schema = model.schema;\n const modelSelection = model.document.selection;\n const objectElement = modelSelection.getSelectedElement();\n const direction = getLocalizedArrowKeyCodeDirection(keyCode, this.editor.locale.contentLanguageDirection);\n const isForward = direction == 'down' || direction == 'right';\n const isVerticalNavigation = direction == 'up' || direction == 'down';\n // If object element is selected.\n if (objectElement && schema.isObject(objectElement)) {\n const position = isForward ? modelSelection.getLastPosition() : modelSelection.getFirstPosition();\n const newRange = schema.getNearestSelectionRange(position, isForward ? 'forward' : 'backward');\n if (newRange) {\n model.change((writer)=>{\n writer.setSelection(newRange);\n });\n domEventData.preventDefault();\n eventInfo.stop();\n }\n return;\n }\n // Handle collapsing of the selection when there is any widget on the edge of selection.\n // This is needed because browsers have problems with collapsing such selection.\n if (!modelSelection.isCollapsed && !domEventData.shiftKey) {\n const firstPosition = modelSelection.getFirstPosition();\n const lastPosition = modelSelection.getLastPosition();\n const firstSelectedNode = firstPosition.nodeAfter;\n const lastSelectedNode = lastPosition.nodeBefore;\n if (firstSelectedNode && schema.isObject(firstSelectedNode) || lastSelectedNode && schema.isObject(lastSelectedNode)) {\n model.change((writer)=>{\n writer.setSelection(isForward ? lastPosition : firstPosition);\n });\n domEventData.preventDefault();\n eventInfo.stop();\n }\n return;\n }\n // Return if not collapsed.\n if (!modelSelection.isCollapsed) {\n return;\n }\n // If selection is next to object element.\n const objectElementNextToSelection = this._getObjectElementNextToSelection(isForward);\n if (objectElementNextToSelection && schema.isObject(objectElementNextToSelection)) {\n // Do not select an inline widget while handling up/down arrow.\n if (schema.isInline(objectElementNextToSelection) && isVerticalNavigation) {\n return;\n }\n this._setSelectionOverElement(objectElementNextToSelection);\n domEventData.preventDefault();\n eventInfo.stop();\n }\n }\n /**\n\t * Handles {@link module:engine/view/document~Document#event:keydown keydown} events and prevents\n\t * the default browser behavior to make sure the fake selection is not being moved from a fake selection\n\t * container.\n\t *\n\t * See {@link #_handleSelectionChangeOnArrowKeyPress}.\n\t */ _preventDefaultOnArrowKeyPress(eventInfo, domEventData) {\n const model = this.editor.model;\n const schema = model.schema;\n const objectElement = model.document.selection.getSelectedElement();\n // If object element is selected.\n if (objectElement && schema.isObject(objectElement)) {\n domEventData.preventDefault();\n eventInfo.stop();\n }\n }\n /**\n\t * Handles delete keys: backspace and delete.\n\t *\n\t * @param isForward Set to true if delete was performed in forward direction.\n\t * @returns Returns `true` if keys were handled correctly.\n\t */ _handleDelete(isForward) {\n const modelDocument = this.editor.model.document;\n const modelSelection = modelDocument.selection;\n // Do nothing when the read only mode is enabled.\n if (!this.editor.model.canEditAt(modelSelection)) {\n return;\n }\n // Do nothing on non-collapsed selection.\n if (!modelSelection.isCollapsed) {\n return;\n }\n const objectElement = this._getObjectElementNextToSelection(isForward);\n if (objectElement) {\n this.editor.model.change((writer)=>{\n let previousNode = modelSelection.anchor.parent;\n // Remove previous element if empty.\n while(previousNode.isEmpty){\n const nodeToRemove = previousNode;\n previousNode = nodeToRemove.parent;\n writer.remove(nodeToRemove);\n }\n this._setSelectionOverElement(objectElement);\n });\n return true;\n }\n }\n /**\n\t * Sets {@link module:engine/model/selection~Selection document's selection} over given element.\n\t *\n\t * @internal\n\t */ _setSelectionOverElement(element) {\n this.editor.model.change((writer)=>{\n writer.setSelection(writer.createRangeOn(element));\n });\n }\n /**\n\t * Checks if {@link module:engine/model/element~Element element} placed next to the current\n\t * {@link module:engine/model/selection~Selection model selection} exists and is marked in\n\t * {@link module:engine/model/schema~Schema schema} as `object`.\n\t *\n\t * @internal\n\t * @param forward Direction of checking.\n\t */ _getObjectElementNextToSelection(forward) {\n const model = this.editor.model;\n const schema = model.schema;\n const modelSelection = model.document.selection;\n // Clone current selection to use it as a probe. We must leave default selection as it is so it can return\n // to its current state after undo.\n const probe = model.createSelection(modelSelection);\n model.modifySelection(probe, {\n direction: forward ? 'forward' : 'backward'\n });\n // The selection didn't change so there is nothing there.\n if (probe.isEqual(modelSelection)) {\n return null;\n }\n const objectElement = forward ? probe.focus.nodeBefore : probe.focus.nodeAfter;\n if (!!objectElement && schema.isObject(objectElement)) {\n return objectElement;\n }\n return null;\n }\n /**\n\t * Removes CSS class from previously selected widgets.\n\t */ _clearPreviouslySelectedWidgets(writer) {\n for (const widget of this._previouslySelected){\n writer.removeClass(WIDGET_SELECTED_CLASS_NAME, widget);\n }\n this._previouslySelected.clear();\n }\n /**\n\t * Moves the document selection into the first nested editable.\n\t */ _selectFirstNestedEditable() {\n const editor = this.editor;\n const view = this.editor.editing.view;\n const viewDocument = view.document;\n for (const item of viewDocument.selection.getFirstRange().getItems()){\n if (item.is('editableElement')) {\n const modelElement = editor.editing.mapper.toModelElement(item);\n /* istanbul ignore next -- @preserve */ if (!modelElement) {\n continue;\n }\n const position = editor.model.createPositionAt(modelElement, 0);\n const newRange = editor.model.schema.getNearestSelectionRange(position, 'forward');\n editor.model.change((writer)=>{\n writer.setSelection(newRange);\n });\n return true;\n }\n }\n return false;\n }\n /**\n\t * Updates the document selection so that it selects first ancestor widget.\n\t */ _selectAncestorWidget() {\n const editor = this.editor;\n const mapper = editor.editing.mapper;\n const selection = editor.editing.view.document.selection;\n const positionParent = selection.getFirstPosition().parent;\n const positionParentElement = positionParent.is('$text') ? positionParent.parent : positionParent;\n const viewElement = positionParentElement.findAncestor(isWidget);\n if (!viewElement) {\n return false;\n }\n const modelElement = mapper.toModelElement(viewElement);\n /* istanbul ignore next -- @preserve */ if (!modelElement) {\n return false;\n }\n editor.model.change((writer)=>{\n writer.setSelection(modelElement, 'on');\n });\n return true;\n }\n}\n/**\n * Finds the closest ancestor element that is either an editable element or a widget.\n *\n * @param element The element from which to start searching.\n * @returns The closest ancestor element that is either an editable element or a widget, or null if none is found.\n */ function findClosestEditableOrWidgetAncestor(element) {\n let currentElement = element;\n while(currentElement){\n if (currentElement.is('editableElement') || isWidget(currentElement)) {\n return currentElement;\n }\n currentElement = currentElement.parent;\n }\n return null;\n}\n/**\n * Retrieves the ViewElement associated with a mouse event in the editing view.\n *\n * @param view The editing view.\n * @param domEventData The DOM event data containing the mouse event.\n * @returns The ViewElement associated with the mouse event, or null if not found.\n */ function getElementFromMouseEvent(view, domEventData) {\n const domRange = getRangeFromMouseEvent(domEventData.domEvent);\n if (!domRange) {\n return null;\n }\n const viewRange = view.domConverter.domRangeToView(domRange);\n if (!viewRange) {\n return null;\n }\n const viewPosition = viewRange.start;\n if (!viewPosition.parent) {\n return null;\n }\n let viewNode = viewPosition.parent;\n if (viewPosition.parent.is('editableElement')) {\n if (viewPosition.isAtEnd && viewPosition.nodeBefore) {\n // Click after a widget tend to return position at the end of the editable element\n // so use the node before it if range is at the end of a parent.\n viewNode = viewPosition.nodeBefore;\n } else if (viewPosition.isAtStart && viewPosition.nodeAfter) {\n // Click before a widget tend to return position at the start of the editable element\n // so use the node after it if range is at the start of a parent.\n // See more: https://github.com/ckeditor/ckeditor5/issues/16992\n viewNode = viewPosition.nodeAfter;\n }\n }\n if (viewNode.is('$text')) {\n return viewNode.parent;\n }\n return viewNode;\n}\n/**\n * Checks whether the specified `element` is a child of the `parent` element.\n *\n * @param element An element to check.\n * @param parent A parent for the element.\n */ function isChild(element, parent) {\n if (!parent) {\n return false;\n }\n return Array.from(element.getAncestors()).includes(parent);\n}\n/**\n * Returns nearest text block ancestor.\n */ function findTextBlockAncestor(modelElement, schema) {\n for (const element of modelElement.getAncestors({\n includeSelf: true,\n parentFirst: true\n })){\n if (schema.checkChild(element, '$text')) {\n return element;\n }\n // Do not go beyond nested editable.\n if (schema.isLimit(element) && !schema.isObject(element)) {\n break;\n }\n }\n return null;\n}\n/**\n * Returns next text block where could put selection.\n */ function findNextTextBlock(position, schema) {\n const treeWalker = new TreeWalker({\n startPosition: position\n });\n for (const { item } of treeWalker){\n if (schema.isLimit(item) || !item.is('element')) {\n return null;\n }\n if (schema.checkChild(item, '$text')) {\n return item;\n }\n }\n return null;\n}\n\n/**\n * Widget toolbar repository plugin. A central point for registering widget toolbars. This plugin handles the whole\n * toolbar rendering process and exposes a concise API.\n *\n * To add a toolbar for your widget use the {@link ~WidgetToolbarRepository#register `WidgetToolbarRepository#register()`} method.\n *\n * The following example comes from the {@link module:image/imagetoolbar~ImageToolbar} plugin:\n *\n * ```ts\n * class ImageToolbar extends Plugin {\n * \tstatic get requires() {\n * \t\treturn [ WidgetToolbarRepository ];\n * \t}\n *\n * \tafterInit() {\n * \t\tconst editor = this.editor;\n * \t\tconst widgetToolbarRepository = editor.plugins.get( WidgetToolbarRepository );\n *\n * \t\twidgetToolbarRepository.register( 'image', {\n * \t\t\titems: editor.config.get( 'image.toolbar' ),\n * \t\t\tgetRelatedElement: getClosestSelectedImageWidget\n * \t\t} );\n * \t}\n * }\n * ```\n */ class WidgetToolbarRepository extends Plugin {\n /**\n\t * A map of toolbar definitions.\n\t */ _toolbarDefinitions = new Map();\n _balloon;\n /**\n\t * @inheritDoc\n\t */ static get requires() {\n return [\n ContextualBalloon\n ];\n }\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'WidgetToolbarRepository';\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const editor = this.editor;\n // Disables the default balloon toolbar for all widgets.\n if (editor.plugins.has('BalloonToolbar')) {\n const balloonToolbar = editor.plugins.get('BalloonToolbar');\n this.listenTo(balloonToolbar, 'show', (evt)=>{\n if (isWidgetSelected(editor.editing.view.document.selection)) {\n evt.stop();\n }\n }, {\n priority: 'high'\n });\n }\n this._balloon = this.editor.plugins.get('ContextualBalloon');\n this.on('change:isEnabled', ()=>{\n this._updateToolbarsVisibility();\n });\n this.listenTo(editor.ui, 'update', ()=>{\n this._updateToolbarsVisibility();\n });\n // UI#update is not fired after focus is back in editor, we need to check if balloon panel should be visible.\n this.listenTo(editor.ui.focusTracker, 'change:isFocused', ()=>{\n this._updateToolbarsVisibility();\n }, {\n priority: 'low'\n });\n }\n destroy() {\n super.destroy();\n for (const toolbarConfig of this._toolbarDefinitions.values()){\n toolbarConfig.view.destroy();\n }\n }\n /**\n\t * Registers toolbar in the WidgetToolbarRepository. It renders it in the `ContextualBalloon` based on the value of the invoked\n\t * `getRelatedElement` function. Toolbar items are gathered from `items` array.\n\t * The balloon's CSS class is by default `ck-toolbar-container` and may be override with the `balloonClassName` option.\n\t *\n\t * Note: This method should be called in the {@link module:core/plugin~PluginInterface#afterInit `Plugin#afterInit()`}\n\t * callback (or later) to make sure that the given toolbar items were already registered by other plugins.\n\t *\n\t * @param toolbarId An id for the toolbar. Used to\n\t * @param options.ariaLabel Label used by assistive technologies to describe this toolbar element.\n\t * @param options.items Array of toolbar items.\n\t * @param options.getRelatedElement Callback which returns an element the toolbar should be attached to.\n\t * @param options.balloonClassName CSS class for the widget balloon.\n\t */ register(toolbarId, { ariaLabel, items, getRelatedElement, balloonClassName = 'ck-toolbar-container' }) {\n // Trying to register a toolbar without any item.\n if (!items.length) {\n /**\n\t\t\t * When {@link module:widget/widgettoolbarrepository~WidgetToolbarRepository#register registering} a new widget toolbar, you\n\t\t\t * need to provide a non-empty array with the items that will be inserted into the toolbar.\n\t\t\t *\n\t\t\t * If you see this error when integrating the editor, you likely forgot to configure one of the widget toolbars.\n\t\t\t *\n\t\t\t * See for instance:\n\t\t\t *\n\t\t\t * * {@link module:table/tableconfig~TableConfig#contentToolbar `config.table.contentToolbar`}\n\t\t\t * * {@link module:image/imageconfig~ImageConfig#toolbar `config.image.toolbar`}\n\t\t\t *\n\t\t\t * @error widget-toolbar-no-items\n\t\t\t * @param toolbarId The id of the toolbar that has not been configured correctly.\n\t\t\t */ logWarning('widget-toolbar-no-items', {\n toolbarId\n });\n return;\n }\n const editor = this.editor;\n const t = editor.t;\n const toolbarView = new ToolbarView(editor.locale);\n toolbarView.ariaLabel = ariaLabel || t('Widget toolbar');\n if (this._toolbarDefinitions.has(toolbarId)) {\n /**\n\t\t\t * Toolbar with the given id was already added.\n\t\t\t *\n\t\t\t * @error widget-toolbar-duplicated\n\t\t\t * @param toolbarId Toolbar id.\n\t\t\t */ throw new CKEditorError('widget-toolbar-duplicated', this, {\n toolbarId\n });\n }\n const toolbarDefinition = {\n view: toolbarView,\n getRelatedElement,\n balloonClassName,\n itemsConfig: items,\n initialized: false\n };\n // Register the toolbar so it becomes available for Alt+F10 and Esc navigation.\n editor.ui.addToolbar(toolbarView, {\n isContextual: true,\n beforeFocus: ()=>{\n const relatedElement = getRelatedElement(editor.editing.view.document.selection);\n if (relatedElement) {\n this._showToolbar(toolbarDefinition, relatedElement);\n }\n },\n afterBlur: ()=>{\n this._hideToolbar(toolbarDefinition);\n }\n });\n this._toolbarDefinitions.set(toolbarId, toolbarDefinition);\n }\n /**\n\t * Iterates over stored toolbars and makes them visible or hidden.\n\t */ _updateToolbarsVisibility() {\n let maxRelatedElementDepth = 0;\n let deepestRelatedElement = null;\n let deepestToolbarDefinition = null;\n for (const definition of this._toolbarDefinitions.values()){\n const relatedElement = definition.getRelatedElement(this.editor.editing.view.document.selection);\n if (!this.isEnabled || !relatedElement) {\n if (this._isToolbarInBalloon(definition)) {\n this._hideToolbar(definition);\n }\n } else if (!this.editor.ui.focusTracker.isFocused) {\n if (this._isToolbarVisible(definition)) {\n this._hideToolbar(definition);\n }\n } else {\n const relatedElementDepth = relatedElement.getAncestors().length;\n // Many toolbars can express willingness to be displayed but they do not know about\n // each other. Figure out which toolbar is deepest in the view tree to decide which\n // should be displayed. For instance, if a selected image is inside a table cell, display\n // the ImageToolbar rather than the TableToolbar (#60).\n if (relatedElementDepth > maxRelatedElementDepth) {\n maxRelatedElementDepth = relatedElementDepth;\n deepestRelatedElement = relatedElement;\n deepestToolbarDefinition = definition;\n }\n }\n }\n if (deepestToolbarDefinition) {\n this._showToolbar(deepestToolbarDefinition, deepestRelatedElement);\n }\n }\n /**\n\t * Hides the given toolbar.\n\t */ _hideToolbar(toolbarDefinition) {\n this._balloon.remove(toolbarDefinition.view);\n this.stopListening(this._balloon, 'change:visibleView');\n }\n /**\n\t * Shows up the toolbar if the toolbar is not visible.\n\t * Otherwise, repositions the toolbar's balloon when toolbar's view is the most top view in balloon stack.\n\t *\n\t * It might happen here that the toolbar's view is under another view. Then do nothing as the other toolbar view\n\t * should be still visible after the {@link module:ui/editorui/editorui~EditorUI#event:update}.\n\t */ _showToolbar(toolbarDefinition, relatedElement) {\n if (this._isToolbarVisible(toolbarDefinition)) {\n repositionContextualBalloon(this.editor, relatedElement);\n } else if (!this._isToolbarInBalloon(toolbarDefinition)) {\n if (!toolbarDefinition.initialized) {\n toolbarDefinition.initialized = true;\n toolbarDefinition.view.fillFromConfig(toolbarDefinition.itemsConfig, this.editor.ui.componentFactory);\n }\n this._balloon.add({\n view: toolbarDefinition.view,\n position: getBalloonPositionData(this.editor, relatedElement),\n balloonClassName: toolbarDefinition.balloonClassName\n });\n // Update toolbar position each time stack with toolbar view is switched to visible.\n // This is in a case target element has changed when toolbar was in invisible stack\n // e.g. target image was wrapped by a block quote.\n // See https://github.com/ckeditor/ckeditor5-widget/issues/92.\n this.listenTo(this._balloon, 'change:visibleView', ()=>{\n for (const definition of this._toolbarDefinitions.values()){\n if (this._isToolbarVisible(definition)) {\n const relatedElement = definition.getRelatedElement(this.editor.editing.view.document.selection);\n repositionContextualBalloon(this.editor, relatedElement);\n }\n }\n });\n }\n }\n _isToolbarVisible(toolbar) {\n return this._balloon.visibleView === toolbar.view;\n }\n _isToolbarInBalloon(toolbar) {\n return this._balloon.hasView(toolbar.view);\n }\n}\nfunction repositionContextualBalloon(editor, relatedElement) {\n const balloon = editor.plugins.get('ContextualBalloon');\n const position = getBalloonPositionData(editor, relatedElement);\n balloon.updatePosition(position);\n}\nfunction getBalloonPositionData(editor, relatedElement) {\n const editingView = editor.editing.view;\n const defaultPositions = BalloonPanelView.defaultPositions;\n return {\n target: editingView.domConverter.mapViewToDom(relatedElement),\n positions: [\n defaultPositions.northArrowSouth,\n defaultPositions.northArrowSouthWest,\n defaultPositions.northArrowSouthEast,\n defaultPositions.southArrowNorth,\n defaultPositions.southArrowNorthWest,\n defaultPositions.southArrowNorthEast,\n defaultPositions.viewportStickyNorth\n ]\n };\n}\nfunction isWidgetSelected(selection) {\n const viewElement = selection.getSelectedElement();\n return !!(viewElement && isWidget(viewElement));\n}\n\n/**\n * Stores the internal state of a single resizable object.\n */ class ResizeState extends /* #__PURE__ */ ObservableMixin() {\n /**\n\t * The reference point of the resizer where the dragging started. It is used to measure the distance the user cursor\n\t * traveled, so how much the image should be enlarged.\n\t * This information is only known after the DOM was rendered, so it will be updated later.\n\t *\n\t * @internal\n\t */ _referenceCoordinates;\n /**\n\t * Resizer options.\n\t */ _options;\n /**\n\t * The original width (pixels) of the resized object when the resize process was started.\n\t *\n\t * @readonly\n\t */ _originalWidth;\n /**\n\t * The original height (pixels) of the resized object when the resize process was started.\n\t *\n\t * @readonly\n\t */ _originalHeight;\n /**\n\t * The original width (percents) of the resized object when the resize process was started.\n\t *\n\t * @readonly\n\t */ _originalWidthPercents;\n /**\n\t * A width to height ratio of the resized image.\n\t *\n\t * @readonly\n\t */ _aspectRatio;\n /**\n\t * @param options Resizer options.\n\t */ constructor(options){\n super();\n this.set('activeHandlePosition', null);\n this.set('proposedWidthPercents', null);\n this.set('proposedWidth', null);\n this.set('proposedHeight', null);\n this.set('proposedHandleHostWidth', null);\n this.set('proposedHandleHostHeight', null);\n this._options = options;\n this._referenceCoordinates = null;\n }\n /**\n\t * The original width (pixels) of the resized object when the resize process was started.\n\t */ get originalWidth() {\n return this._originalWidth;\n }\n /**\n\t * The original height (pixels) of the resized object when the resize process was started.\n\t */ get originalHeight() {\n return this._originalHeight;\n }\n /**\n\t * The original width (percents) of the resized object when the resize process was started.\n\t */ get originalWidthPercents() {\n return this._originalWidthPercents;\n }\n /**\n\t * A width to height ratio of the resized image.\n\t */ get aspectRatio() {\n return this._aspectRatio;\n }\n /**\n\t *\n\t * @param domResizeHandle The handle used to calculate the reference point.\n\t */ begin(domResizeHandle, domHandleHost, domResizeHost) {\n const clientRect = new Rect(domHandleHost);\n this.activeHandlePosition = getHandlePosition(domResizeHandle);\n this._referenceCoordinates = getAbsoluteBoundaryPoint(domHandleHost, getOppositePosition(this.activeHandlePosition));\n this._originalWidth = clientRect.width;\n this._originalHeight = clientRect.height;\n this._aspectRatio = clientRect.width / clientRect.height;\n const widthStyle = domResizeHost.style.width;\n if (widthStyle && widthStyle.match(/^\\d+(\\.\\d*)?%$/)) {\n this._originalWidthPercents = parseFloat(widthStyle);\n } else {\n this._originalWidthPercents = calculateResizeHostPercentageWidth(domResizeHost, clientRect);\n }\n }\n update(newSize) {\n this.proposedWidth = newSize.width;\n this.proposedHeight = newSize.height;\n this.proposedWidthPercents = newSize.widthPercents;\n this.proposedHandleHostWidth = newSize.handleHostWidth;\n this.proposedHandleHostHeight = newSize.handleHostHeight;\n }\n}\n/**\n * Returns coordinates of the top-left corner of an element, relative to the document's top-left corner.\n *\n * @param resizerPosition The position of the resize handle, e.g. `\"top-left\"`, `\"bottom-right\"`.\n */ function getAbsoluteBoundaryPoint(element, resizerPosition) {\n const elementRect = new Rect(element);\n const positionParts = resizerPosition.split('-');\n const ret = {\n x: positionParts[1] == 'right' ? elementRect.right : elementRect.left,\n y: positionParts[0] == 'bottom' ? elementRect.bottom : elementRect.top\n };\n ret.x += element.ownerDocument.defaultView.scrollX;\n ret.y += element.ownerDocument.defaultView.scrollY;\n return ret;\n}\n/**\n * @param resizerPosition The expected resizer position, like `\"top-left\"`, `\"bottom-right\"`.\n * @returns A prefixed HTML class name for the resizer element.\n */ function getResizerHandleClass(resizerPosition) {\n return `ck-widget__resizer__handle-${resizerPosition}`;\n}\n/**\n * Determines the position of a given resize handle.\n *\n * @param domHandle Handle used to calculate the reference point.\n * @returns Returns a string like `\"top-left\"` or `undefined` if not matched.\n */ function getHandlePosition(domHandle) {\n const resizerPositions = [\n 'top-left',\n 'top-right',\n 'bottom-right',\n 'bottom-left'\n ];\n for (const position of resizerPositions){\n if (domHandle.classList.contains(getResizerHandleClass(position))) {\n return position;\n }\n }\n}\n/**\n * @param position Like `\"top-left\"`.\n * @returns Inverted `position`, e.g. it returns `\"bottom-right\"` if `\"top-left\"` was given as `position`.\n */ function getOppositePosition(position) {\n const parts = position.split('-');\n const replacements = {\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left'\n };\n return `${replacements[parts[0]]}-${replacements[parts[1]]}`;\n}\n\n/**\n * A view displaying the proposed new element size during the resizing.\n */ class SizeView extends View {\n constructor(){\n super();\n const bind = this.bindTemplate;\n this.setTemplate({\n tag: 'div',\n attributes: {\n class: [\n 'ck',\n 'ck-size-view',\n bind.to('_viewPosition', (value)=>value ? `ck-orientation-${value}` : '')\n ],\n style: {\n display: bind.if('_isVisible', 'none', (visible)=>!visible)\n }\n },\n children: [\n {\n text: bind.to('_label')\n }\n ]\n });\n }\n /**\n\t * A method used for binding the `SizeView` instance properties to the `ResizeState` instance observable properties.\n\t *\n\t * @internal\n\t * @param options An object defining the resizer options, used for setting the proper size label.\n\t * @param resizeState The `ResizeState` class instance, used for keeping the `SizeView` state up to date.\n\t */ _bindToState(options, resizeState) {\n this.bind('_isVisible').to(resizeState, 'proposedWidth', resizeState, 'proposedHeight', (width, height)=>width !== null && height !== null);\n this.bind('_label').to(resizeState, 'proposedHandleHostWidth', resizeState, 'proposedHandleHostHeight', resizeState, 'proposedWidthPercents', (width, height, widthPercents)=>{\n if (options.unit === 'px') {\n return `${width}×${height}`;\n } else {\n return `${widthPercents}%`;\n }\n });\n this.bind('_viewPosition').to(resizeState, 'activeHandlePosition', resizeState, 'proposedHandleHostWidth', resizeState, 'proposedHandleHostHeight', // If the widget is too small to contain the size label, display the label above.\n (position, width, height)=>width < 50 || height < 50 ? 'above-center' : position);\n }\n /**\n\t * A method used for cleaning up. It removes the bindings and hides the view.\n\t *\n\t * @internal\n\t */ _dismiss() {\n this.unbind();\n this._isVisible = false;\n }\n}\n\n/**\n * Represents a resizer for a single resizable object.\n */ class Resizer extends /* #__PURE__ */ ObservableMixin() {\n /**\n\t * Stores the state of the resizable host geometry, such as the original width, the currently proposed height, etc.\n\t *\n\t * Note that a new state is created for each resize transaction.\n\t */ _state;\n /**\n\t * A view displaying the proposed new element size during the resizing.\n\t */ _sizeView;\n /**\n\t * Options passed to the {@link #constructor}.\n\t */ _options;\n /**\n\t * A wrapper that is controlled by the resizer. This is usually a widget element.\n\t */ _viewResizerWrapper = null;\n /**\n\t * The width of the resized {@link module:widget/widgetresize~ResizerOptions#viewElement viewElement} before the resizing started.\n\t */ _initialViewWidth;\n /**\n\t * @param options Resizer options.\n\t */ constructor(options){\n super();\n this._options = options;\n this.set('isEnabled', true);\n this.set('isSelected', false);\n this.bind('isVisible').to(this, 'isEnabled', this, 'isSelected', (isEnabled, isSelected)=>isEnabled && isSelected);\n this.decorate('begin');\n this.decorate('cancel');\n this.decorate('commit');\n this.decorate('updateSize');\n this.on('commit', (event)=>{\n // State might not be initialized yet. In this case, prevent further handling and make sure that the resizer is\n // cleaned up (#5195).\n if (!this.state.proposedWidth && !this.state.proposedWidthPercents) {\n this._cleanup();\n event.stop();\n }\n }, {\n priority: 'high'\n });\n }\n /**\n\t * Stores the state of the resizable host geometry, such as the original width, the currently proposed height, etc.\n\t *\n\t * Note that a new state is created for each resize transaction.\n\t */ get state() {\n return this._state;\n }\n /**\n\t * Makes resizer visible in the UI.\n\t */ show() {\n const editingView = this._options.editor.editing.view;\n editingView.change((writer)=>{\n writer.removeClass('ck-hidden', this._viewResizerWrapper);\n });\n }\n /**\n\t * Hides resizer in the UI.\n\t */ hide() {\n const editingView = this._options.editor.editing.view;\n editingView.change((writer)=>{\n writer.addClass('ck-hidden', this._viewResizerWrapper);\n });\n }\n /**\n\t * Attaches the resizer to the DOM.\n\t */ attach() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const that = this;\n const widgetElement = this._options.viewElement;\n const editingView = this._options.editor.editing.view;\n editingView.change((writer)=>{\n const viewResizerWrapper = writer.createUIElement('div', {\n class: 'ck ck-reset_all ck-widget__resizer'\n }, function(domDocument) {\n const domElement = this.toDomElement(domDocument);\n that._appendHandles(domElement);\n that._appendSizeUI(domElement);\n return domElement;\n });\n // Append the resizer wrapper to the widget's wrapper.\n writer.insert(writer.createPositionAt(widgetElement, 'end'), viewResizerWrapper);\n writer.addClass('ck-widget_with-resizer', widgetElement);\n this._viewResizerWrapper = viewResizerWrapper;\n if (!this.isVisible) {\n this.hide();\n }\n });\n this.on('change:isVisible', ()=>{\n if (this.isVisible) {\n this.show();\n this.redraw();\n } else {\n this.hide();\n }\n });\n }\n /**\n\t * Starts the resizing process.\n\t *\n\t * Creates a new {@link #state} for the current process.\n\t *\n\t * @fires begin\n\t * @param domResizeHandle Clicked handle.\n\t */ begin(domResizeHandle) {\n this._state = new ResizeState(this._options);\n this._sizeView._bindToState(this._options, this.state);\n this._initialViewWidth = this._options.viewElement.getStyle('width');\n this.state.begin(domResizeHandle, this._getHandleHost(), this._getResizeHost());\n }\n /**\n\t * Updates the proposed size based on `domEventData`.\n\t *\n\t * @fires updateSize\n\t */ updateSize(domEventData) {\n const newSize = this._proposeNewSize(domEventData);\n const editingView = this._options.editor.editing.view;\n editingView.change((writer)=>{\n const unit = this._options.unit || '%';\n const newWidth = (unit === '%' ? newSize.widthPercents : newSize.width) + unit;\n writer.setStyle('width', newWidth, this._options.viewElement);\n });\n // Get an actual image width, and:\n // * reflect this size to the resize wrapper\n // * apply this **real** size to the state\n const domHandleHost = this._getHandleHost();\n const domHandleHostRect = new Rect(domHandleHost);\n const handleHostWidth = Math.round(domHandleHostRect.width);\n const handleHostHeight = Math.round(domHandleHostRect.height);\n // Handle max-width limitation.\n const domResizeHostRect = new Rect(domHandleHost);\n newSize.width = Math.round(domResizeHostRect.width);\n newSize.height = Math.round(domResizeHostRect.height);\n this.redraw(domHandleHostRect);\n this.state.update({\n ...newSize,\n handleHostWidth,\n handleHostHeight\n });\n }\n /**\n\t * Applies the geometry proposed with the resizer.\n\t *\n\t * @fires commit\n\t */ commit() {\n const unit = this._options.unit || '%';\n const newValue = (unit === '%' ? this.state.proposedWidthPercents : this.state.proposedWidth) + unit;\n // Both cleanup and onCommit callback are very likely to make view changes. Ensure that it is made in a single step.\n this._options.editor.editing.view.change(()=>{\n this._cleanup();\n this._options.onCommit(newValue);\n });\n }\n /**\n\t * Cancels and rejects the proposed resize dimensions, hiding the UI.\n\t *\n\t * @fires cancel\n\t */ cancel() {\n this._cleanup();\n }\n /**\n\t * Destroys the resizer.\n\t */ destroy() {\n this.cancel();\n }\n /**\n\t * Redraws the resizer.\n\t *\n\t * @param handleHostRect Handle host rectangle might be given to improve performance.\n\t */ redraw(handleHostRect) {\n const domWrapper = this._domResizerWrapper;\n // Refresh only if resizer exists in the DOM.\n if (!existsInDom(domWrapper)) {\n return;\n }\n const widgetWrapper = domWrapper.parentElement;\n const handleHost = this._getHandleHost();\n const resizerWrapper = this._viewResizerWrapper;\n const currentDimensions = [\n resizerWrapper.getStyle('width'),\n resizerWrapper.getStyle('height'),\n resizerWrapper.getStyle('left'),\n resizerWrapper.getStyle('top')\n ];\n let newDimensions;\n if (widgetWrapper.isSameNode(handleHost)) {\n const clientRect = handleHostRect || new Rect(handleHost);\n newDimensions = [\n clientRect.width + 'px',\n clientRect.height + 'px',\n undefined,\n undefined\n ];\n } else {\n newDimensions = [\n handleHost.offsetWidth + 'px',\n handleHost.offsetHeight + 'px',\n handleHost.offsetLeft + 'px',\n handleHost.offsetTop + 'px'\n ];\n }\n // Make changes to the view only if the resizer should actually get new dimensions.\n // Otherwise, if View#change() was always called, this would cause EditorUI#update\n // loops because the WidgetResize plugin listens to EditorUI#update and updates\n // the resizer.\n // https://github.com/ckeditor/ckeditor5/issues/7633\n if (compareArrays(currentDimensions, newDimensions) !== 'same') {\n this._options.editor.editing.view.change((writer)=>{\n writer.setStyle({\n width: newDimensions[0],\n height: newDimensions[1],\n left: newDimensions[2],\n top: newDimensions[3]\n }, resizerWrapper);\n });\n }\n }\n containsHandle(domElement) {\n return this._domResizerWrapper.contains(domElement);\n }\n static isResizeHandle(domElement) {\n return domElement.classList.contains('ck-widget__resizer__handle');\n }\n /**\n\t * Cleans up the context state.\n\t */ _cleanup() {\n this._sizeView._dismiss();\n const editingView = this._options.editor.editing.view;\n editingView.change((writer)=>{\n writer.setStyle('width', this._initialViewWidth, this._options.viewElement);\n });\n }\n /**\n\t * Calculates the proposed size as the resize handles are dragged.\n\t *\n\t * @param domEventData Event data that caused the size update request. It should be used to calculate the proposed size.\n\t */ _proposeNewSize(domEventData) {\n const state = this.state;\n const currentCoordinates = extractCoordinates(domEventData);\n const isCentered = this._options.isCentered ? this._options.isCentered(this) : true;\n // Enlargement defines how much the resize host has changed in a given axis. Naturally it could be a negative number\n // meaning that it has been shrunk.\n //\n // +----------------+--+\n // | | |\n // | img | |\n // | /handle host | |\n // +----------------+ | ^\n // | | | - enlarge y\n // +-------------------+ v\n // \t\t\t\t\t<-->\n // \t\t\t\t\t enlarge x\n const enlargement = {\n x: state._referenceCoordinates.x - (currentCoordinates.x + state.originalWidth),\n y: currentCoordinates.y - state.originalHeight - state._referenceCoordinates.y\n };\n if (isCentered && state.activeHandlePosition.endsWith('-right')) {\n enlargement.x = currentCoordinates.x - (state._referenceCoordinates.x + state.originalWidth);\n }\n // Objects needs to be resized twice as much in horizontal axis if centered, since enlargement is counted from\n // one resized corner to your cursor. It needs to be duplicated to compensate for the other side too.\n if (isCentered) {\n enlargement.x *= 2;\n }\n // const resizeHost = this._getResizeHost();\n // The size proposed by the user. It does not consider the aspect ratio.\n let width = Math.abs(state.originalWidth + enlargement.x);\n let height = Math.abs(state.originalHeight + enlargement.y);\n // Dominant determination must take the ratio into account.\n const dominant = width / state.aspectRatio > height ? 'width' : 'height';\n if (dominant == 'width') {\n height = width / state.aspectRatio;\n } else {\n width = height * state.aspectRatio;\n }\n return {\n width: Math.round(width),\n height: Math.round(height),\n widthPercents: Math.min(Math.round(state.originalWidthPercents / state.originalWidth * width * 100) / 100, 100)\n };\n }\n /**\n\t * Obtains the resize host.\n\t *\n\t * Resize host is an object that receives dimensions which are the result of resizing.\n\t */ _getResizeHost() {\n const widgetWrapper = this._domResizerWrapper.parentElement;\n return this._options.getResizeHost(widgetWrapper);\n }\n /**\n\t * Obtains the handle host.\n\t *\n\t * Handle host is an object that the handles are aligned to.\n\t *\n\t * Handle host will not always be an entire widget itself. Take an image as an example. The image widget\n\t * contains an image and a caption. Only the image should be surrounded with handles.\n\t */ _getHandleHost() {\n const widgetWrapper = this._domResizerWrapper.parentElement;\n return this._options.getHandleHost(widgetWrapper);\n }\n /**\n\t * DOM container of the entire resize UI.\n\t *\n\t * Note that this property will have a value only after the element bound with the resizer is rendered\n\t * (otherwise `null`).\n\t */ get _domResizerWrapper() {\n return this._options.editor.editing.view.domConverter.mapViewToDom(this._viewResizerWrapper);\n }\n /**\n\t * Renders the resize handles in the DOM.\n\t *\n\t * @param domElement The resizer wrapper.\n\t */ _appendHandles(domElement) {\n const resizerPositions = [\n 'top-left',\n 'top-right',\n 'bottom-right',\n 'bottom-left'\n ];\n for (const currentPosition of resizerPositions){\n domElement.appendChild(new Template({\n tag: 'div',\n attributes: {\n class: `ck-widget__resizer__handle ${getResizerClass(currentPosition)}`\n }\n }).render());\n }\n }\n /**\n\t * Sets up the {@link #_sizeView} property and adds it to the passed `domElement`.\n\t */ _appendSizeUI(domElement) {\n this._sizeView = new SizeView();\n // Make sure icon#element is rendered before passing to appendChild().\n this._sizeView.render();\n domElement.appendChild(this._sizeView.element);\n }\n}\n/**\n * @param resizerPosition Expected resizer position like `\"top-left\"`, `\"bottom-right\"`.\n * @returns A prefixed HTML class name for the resizer element\n */ function getResizerClass(resizerPosition) {\n return `ck-widget__resizer__handle-${resizerPosition}`;\n}\nfunction extractCoordinates(event) {\n return {\n x: event.pageX,\n y: event.pageY\n };\n}\nfunction existsInDom(element) {\n return element && element.ownerDocument && element.ownerDocument.contains(element);\n}\n\n/**\n * The widget resize feature plugin.\n *\n * Use the {@link module:widget/widgetresize~WidgetResize#attachTo} method to create a resizer for the specified widget.\n */ class WidgetResize extends Plugin {\n /**\n\t * A map of resizers created using this plugin instance.\n\t */ _resizers = new Map();\n _observer;\n _redrawSelectedResizerThrottled;\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'WidgetResize';\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const editing = this.editor.editing;\n const domDocument = global.window.document;\n this.set('selectedResizer', null);\n this.set('_activeResizer', null);\n editing.view.addObserver(MouseObserver);\n this._observer = new (DomEmitterMixin())();\n this.listenTo(editing.view.document, 'mousedown', this._mouseDownListener.bind(this), {\n priority: 'high'\n });\n this._observer.listenTo(domDocument, 'mousemove', this._mouseMoveListener.bind(this));\n this._observer.listenTo(domDocument, 'mouseup', this._mouseUpListener.bind(this));\n this._redrawSelectedResizerThrottled = throttle(()=>this.redrawSelectedResizer(), 200);\n // Redrawing on any change of the UI of the editor (including content changes).\n this.editor.ui.on('update', this._redrawSelectedResizerThrottled);\n // Remove view widget-resizer mappings for widgets that have been removed from the document.\n // https://github.com/ckeditor/ckeditor5/issues/10156\n // https://github.com/ckeditor/ckeditor5/issues/10266\n this.editor.model.document.on('change', ()=>{\n for (const [viewElement, resizer] of this._resizers){\n if (!viewElement.isAttached()) {\n this._resizers.delete(viewElement);\n resizer.destroy();\n }\n }\n }, {\n priority: 'lowest'\n });\n // Resizers need to be redrawn upon window resize, because new window might shrink resize host.\n this._observer.listenTo(global.window, 'resize', this._redrawSelectedResizerThrottled);\n const viewSelection = this.editor.editing.view.document.selection;\n viewSelection.on('change', ()=>{\n const selectedElement = viewSelection.getSelectedElement();\n const resizer = this.getResizerByViewElement(selectedElement) || null;\n if (resizer) {\n this.select(resizer);\n } else {\n this.deselect();\n }\n });\n }\n /**\n\t * Redraws the selected resizer if there is any selected resizer and if it is visible.\n\t */ redrawSelectedResizer() {\n if (this.selectedResizer && this.selectedResizer.isVisible) {\n this.selectedResizer.redraw();\n }\n }\n /**\n\t * @inheritDoc\n\t */ destroy() {\n super.destroy();\n this._observer.stopListening();\n for (const resizer of this._resizers.values()){\n resizer.destroy();\n }\n this._redrawSelectedResizerThrottled.cancel();\n }\n /**\n\t * Marks resizer as selected.\n\t */ select(resizer) {\n this.deselect();\n this.selectedResizer = resizer;\n this.selectedResizer.isSelected = true;\n }\n /**\n\t * Deselects currently set resizer.\n\t */ deselect() {\n if (this.selectedResizer) {\n this.selectedResizer.isSelected = false;\n }\n this.selectedResizer = null;\n }\n /**\n\t * @param options Resizer options.\n\t */ attachTo(options) {\n const resizer = new Resizer(options);\n const plugins = this.editor.plugins;\n resizer.attach();\n if (plugins.has('WidgetToolbarRepository')) {\n // Hiding widget toolbar to improve the performance\n // (https://github.com/ckeditor/ckeditor5-widget/pull/112#issuecomment-564528765).\n const widgetToolbarRepository = plugins.get('WidgetToolbarRepository');\n resizer.on('begin', ()=>{\n widgetToolbarRepository.forceDisabled('resize');\n }, {\n priority: 'lowest'\n });\n resizer.on('cancel', ()=>{\n widgetToolbarRepository.clearForceDisabled('resize');\n }, {\n priority: 'highest'\n });\n resizer.on('commit', ()=>{\n widgetToolbarRepository.clearForceDisabled('resize');\n }, {\n priority: 'highest'\n });\n }\n this._resizers.set(options.viewElement, resizer);\n const viewSelection = this.editor.editing.view.document.selection;\n const selectedElement = viewSelection.getSelectedElement();\n // If the element the resizer is created for is currently focused, it should become visible.\n if (this.getResizerByViewElement(selectedElement) == resizer) {\n this.select(resizer);\n }\n return resizer;\n }\n /**\n\t * Returns a resizer created for a given view element (widget element).\n\t *\n\t * @param viewElement View element associated with the resizer.\n\t */ getResizerByViewElement(viewElement) {\n return this._resizers.get(viewElement);\n }\n /**\n\t * Returns a resizer that contains a given resize handle.\n\t */ _getResizerByHandle(domResizeHandle) {\n for (const resizer of this._resizers.values()){\n if (resizer.containsHandle(domResizeHandle)) {\n return resizer;\n }\n }\n }\n /**\n\t * @param domEventData Native DOM event.\n\t */ _mouseDownListener(event, domEventData) {\n const resizeHandle = domEventData.domTarget;\n if (!Resizer.isResizeHandle(resizeHandle)) {\n return;\n }\n this._activeResizer = this._getResizerByHandle(resizeHandle) || null;\n if (this._activeResizer) {\n this._activeResizer.begin(resizeHandle);\n // Do not call other events when resizing. See: #6755.\n event.stop();\n domEventData.preventDefault();\n }\n }\n /**\n\t * @param domEventData Native DOM event.\n\t */ _mouseMoveListener(event, domEventData) {\n if (this._activeResizer) {\n this._activeResizer.updateSize(domEventData);\n }\n }\n _mouseUpListener() {\n if (this._activeResizer) {\n this._activeResizer.commit();\n this._activeResizer = null;\n }\n }\n}\n\nexport { WIDGET_CLASS_NAME, WIDGET_SELECTED_CLASS_NAME, Widget, WidgetResize, WidgetToolbarRepository, WidgetTypeAround, calculateResizeHostAncestorWidth, calculateResizeHostPercentageWidth, findOptimalInsertionRange, getLabel, isWidget, setHighlightHandling, setLabel, toWidget, toWidgetEditable, viewToModelPositionOutsideModelElement };\n//# sourceMappingURL=index.js.map\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/highlightstack\n */\n\nimport { EmitterMixin, type ArrayOrItem } from '@ckeditor/ckeditor5-utils';\n\nimport type { DowncastWriter, HighlightDescriptor } from '@ckeditor/ckeditor5-engine';\n\n/**\n * Class used to handle the correct order of highlights on elements.\n *\n * When different highlights are applied to same element the correct order should be preserved:\n *\n * * highlight with highest priority should be applied,\n * * if two highlights have same priority - sort by CSS class provided in\n * {@link module:engine/conversion/downcasthelpers~HighlightDescriptor}.\n *\n * This way, highlight will be applied with the same rules it is applied on texts.\n */\nexport default class HighlightStack extends /* #__PURE__ */ EmitterMixin() {\n\tprivate readonly _stack: Array<HighlightDescriptor> = [];\n\n\t/**\n\t * Adds highlight descriptor to the stack.\n\t *\n\t * @fires change:top\n\t */\n\tpublic add( descriptor: HighlightDescriptor, writer: DowncastWriter ): void {\n\t\tconst stack = this._stack;\n\n\t\t// Save top descriptor and insert new one. If top is changed - fire event.\n\t\tconst oldTop = stack[ 0 ];\n\t\tthis._insertDescriptor( descriptor );\n\t\tconst newTop = stack[ 0 ];\n\n\t\t// When new object is at the top and stores different information.\n\t\tif ( oldTop !== newTop && !compareDescriptors( oldTop, newTop ) ) {\n\t\t\tthis.fire<HighlightStackChangeEvent>( 'change:top', {\n\t\t\t\toldDescriptor: oldTop,\n\t\t\t\tnewDescriptor: newTop,\n\t\t\t\twriter\n\t\t\t} );\n\t\t}\n\t}\n\n\t/**\n\t * Removes highlight descriptor from the stack.\n\t *\n\t * @fires change:top\n\t * @param id Id of the descriptor to remove.\n\t */\n\tpublic remove( id: string, writer: DowncastWriter ): void {\n\t\tconst stack = this._stack;\n\n\t\tconst oldTop = stack[ 0 ];\n\t\tthis._removeDescriptor( id );\n\t\tconst newTop = stack[ 0 ];\n\n\t\t// When new object is at the top and stores different information.\n\t\tif ( oldTop !== newTop && !compareDescriptors( oldTop, newTop ) ) {\n\t\t\tthis.fire<HighlightStackChangeEvent>( 'change:top', {\n\t\t\t\toldDescriptor: oldTop,\n\t\t\t\tnewDescriptor: newTop,\n\t\t\t\twriter\n\t\t\t} );\n\t\t}\n\t}\n\n\t/**\n\t * Inserts a given descriptor in correct place in the stack. It also takes care about updating information\n\t * when descriptor with same id is already present.\n\t */\n\tprivate _insertDescriptor( descriptor: HighlightDescriptor ) {\n\t\tconst stack = this._stack;\n\t\tconst index = stack.findIndex( item => item.id === descriptor.id );\n\n\t\t// Inserting exact same descriptor - do nothing.\n\t\tif ( compareDescriptors( descriptor, stack[ index ] ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If descriptor with same id but with different information is on the stack - remove it.\n\t\tif ( index > -1 ) {\n\t\t\tstack.splice( index, 1 );\n\t\t}\n\n\t\t// Find correct place to insert descriptor in the stack.\n\t\t// It has different information (for example priority) so it must be re-inserted in correct place.\n\t\tlet i = 0;\n\n\t\twhile ( stack[ i ] && shouldABeBeforeB( stack[ i ], descriptor ) ) {\n\t\t\ti++;\n\t\t}\n\n\t\tstack.splice( i, 0, descriptor );\n\t}\n\n\t/**\n\t * Removes descriptor with given id from the stack.\n\t *\n\t * @param id Descriptor's id.\n\t */\n\tprivate _removeDescriptor( id: string ) {\n\t\tconst stack = this._stack;\n\t\tconst index = stack.findIndex( item => item.id === id );\n\n\t\t// If descriptor with same id is on the list - remove it.\n\t\tif ( index > -1 ) {\n\t\t\tstack.splice( index, 1 );\n\t\t}\n\t}\n}\n\n/**\n * Compares two descriptors by checking their priority and class list.\n *\n * @returns Returns true if both descriptors are defined and have same priority and classes.\n */\nfunction compareDescriptors( a: HighlightDescriptor, b: HighlightDescriptor ) {\n\treturn a && b && a.priority == b.priority && classesToString( a.classes ) == classesToString( b.classes );\n}\n\n/**\n * Checks whenever first descriptor should be placed in the stack before second one.\n */\nfunction shouldABeBeforeB( a: HighlightDescriptor, b: HighlightDescriptor ) {\n\tif ( a.priority! > b.priority! ) {\n\t\treturn true;\n\t} else if ( a.priority! < b.priority! ) {\n\t\treturn false;\n\t}\n\n\t// When priorities are equal and names are different - use classes to compare.\n\treturn classesToString( a.classes ) > classesToString( b.classes );\n}\n\n/**\n * Converts CSS classes passed with {@link module:engine/conversion/downcasthelpers~HighlightDescriptor} to\n * sorted string.\n */\nfunction classesToString( classes: ArrayOrItem<string> ) {\n\treturn Array.isArray( classes ) ? classes.sort().join( ',' ) : classes;\n}\n\n/**\n * Fired when top element on {@link module:widget/highlightstack~HighlightStack} has been changed\n *\n * @eventName ~HighlightStack#change:top\n */\nexport type HighlightStackChangeEvent = {\n\tname: 'change' | 'change:top';\n\targs: [ HighlightStackChangeEventData ];\n};\n\n/**\n * Additional information about the change.\n */\nexport type HighlightStackChangeEventData = {\n\n\t/**\n\t * Old highlight descriptor. It will be `undefined` when first descriptor is added to the stack.\n\t */\n\toldDescriptor: HighlightDescriptor;\n\n\t/**\n\t * New highlight descriptor. It will be `undefined` when last descriptor is removed from the stack.\n\t */\n\tnewDescriptor: HighlightDescriptor;\n\n\t/**\n\t * View writer that can be used to modify element.\n\t */\n\twriter: DowncastWriter;\n};\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/utils\n */\n\nimport {\n\tRect,\n\tCKEditorError,\n\ttoArray,\n\ttype ObservableChangeEvent,\n\ttype GetCallback\n} from '@ckeditor/ckeditor5-utils';\n\nimport {\n\ttype AddHighlightCallback,\n\ttype HighlightDescriptor,\n\ttype RemoveHighlightCallback,\n\ttype MapperViewToModelPositionEvent,\n\ttype DocumentSelection,\n\ttype DowncastWriter,\n\ttype Model,\n\ttype Range,\n\ttype Selection,\n\ttype ViewContainerElement,\n\ttype ViewEditableElement,\n\ttype ViewElement,\n\ttype ViewTypeCheckable\n} from '@ckeditor/ckeditor5-engine';\n\nimport { IconView } from '@ckeditor/ckeditor5-ui';\n\nimport HighlightStack, { type HighlightStackChangeEvent } from './highlightstack.js';\nimport { getTypeAroundFakeCaretPosition } from './widgettypearound/utils.js';\n\nimport dragHandleIcon from '../theme/icons/drag-handle.svg';\n\n/**\n * CSS class added to each widget element.\n */\nexport const WIDGET_CLASS_NAME = 'ck-widget';\n\n/**\n * CSS class added to currently selected widget element.\n */\nexport const WIDGET_SELECTED_CLASS_NAME = 'ck-widget_selected';\n\n/**\n * Returns `true` if given {@link module:engine/view/node~Node} is an {@link module:engine/view/element~Element} and a widget.\n */\nexport function isWidget( node: ViewTypeCheckable ): boolean {\n\tif ( !node.is( 'element' ) ) {\n\t\treturn false;\n\t}\n\n\treturn !!node.getCustomProperty( 'widget' );\n}\n\n/**\n * Converts the given {@link module:engine/view/element~Element} to a widget in the following way:\n *\n * * sets the `contenteditable` attribute to `\"false\"`,\n * * adds the `ck-widget` CSS class,\n * * adds a custom {@link module:engine/view/element~Element#getFillerOffset `getFillerOffset()`} method returning `null`,\n * * adds a custom property allowing to recognize widget elements by using {@link ~isWidget `isWidget()`},\n * * implements the {@link ~setHighlightHandling view highlight on widgets}.\n *\n * This function needs to be used in conjunction with\n * {@link module:engine/conversion/downcasthelpers~DowncastHelpers downcast conversion helpers}\n * like {@link module:engine/conversion/downcasthelpers~DowncastHelpers#elementToElement `elementToElement()`}.\n * Moreover, typically you will want to use `toWidget()` only for `editingDowncast`, while keeping the `dataDowncast` clean.\n *\n * For example, in order to convert a `<widget>` model element to `<div class=\"widget\">` in the view, you can define\n * such converters:\n *\n * ```ts\n * editor.conversion.for( 'editingDowncast' )\n * \t.elementToElement( {\n * \t\tmodel: 'widget',\n * \t\tview: ( modelItem, { writer } ) => {\n * \t\t\tconst div = writer.createContainerElement( 'div', { class: 'widget' } );\n *\n * \t\t\treturn toWidget( div, writer, { label: 'some widget' } );\n * \t\t}\n * \t} );\n *\n * editor.conversion.for( 'dataDowncast' )\n * \t.elementToElement( {\n * \t\tmodel: 'widget',\n * \t\tview: ( modelItem, { writer } ) => {\n * \t\t\treturn writer.createContainerElement( 'div', { class: 'widget' } );\n * \t\t}\n * \t} );\n * ```\n *\n * See the full source code of the widget (with a nested editable) schema definition and converters in\n * [this sample](https://github.com/ckeditor/ckeditor5-widget/blob/master/tests/manual/widget-with-nestededitable.js).\n *\n * @param options Additional options.\n * @param options.label Element's label provided to the {@link ~setLabel} function. It can be passed as\n * a plain string or a function returning a string. It represents the widget for assistive technologies (like screen readers).\n * @param options.hasSelectionHandle If `true`, the widget will have a selection handle added.\n * @returns Returns the same element.\n */\nexport function toWidget(\n\telement: ViewElement,\n\twriter: DowncastWriter,\n\toptions: {\n\t\tlabel?: string | ( () => string );\n\t\thasSelectionHandle?: boolean;\n\t} = {}\n): ViewElement {\n\tif ( !element.is( 'containerElement' ) ) {\n\t\t/**\n\t\t * The element passed to `toWidget()` must be a {@link module:engine/view/containerelement~ContainerElement}\n\t\t * instance.\n\t\t *\n\t\t * @error widget-to-widget-wrong-element-type\n\t\t * @param element The view element passed to `toWidget()`.\n\t\t */\n\t\tthrow new CKEditorError(\n\t\t\t'widget-to-widget-wrong-element-type',\n\t\t\tnull,\n\t\t\t{ element }\n\t\t);\n\t}\n\n\twriter.setAttribute( 'contenteditable', 'false', element );\n\n\twriter.addClass( WIDGET_CLASS_NAME, element );\n\twriter.setCustomProperty( 'widget', true, element );\n\telement.getFillerOffset = getFillerOffset;\n\n\twriter.setCustomProperty( 'widgetLabel', [], element );\n\n\tif ( options.label ) {\n\t\tsetLabel( element, options.label );\n\t}\n\n\tif ( options.hasSelectionHandle ) {\n\t\taddSelectionHandle( element, writer );\n\t}\n\n\tsetHighlightHandling( element, writer );\n\n\treturn element;\n}\n\n/**\n * Default handler for adding a highlight on a widget.\n * It adds CSS class and attributes basing on the given highlight descriptor.\n */\nfunction addHighlight( element: ViewElement, descriptor: HighlightDescriptor, writer: DowncastWriter ) {\n\tif ( descriptor.classes ) {\n\t\twriter.addClass( toArray( descriptor.classes ), element );\n\t}\n\n\tif ( descriptor.attributes ) {\n\t\tfor ( const key in descriptor.attributes ) {\n\t\t\twriter.setAttribute( key, descriptor.attributes[ key ], element );\n\t\t}\n\t}\n}\n\n/**\n * Default handler for removing a highlight from a widget.\n * It removes CSS class and attributes basing on the given highlight descriptor.\n */\nfunction removeHighlight( element: ViewElement, descriptor: HighlightDescriptor, writer: DowncastWriter ) {\n\tif ( descriptor.classes ) {\n\t\twriter.removeClass( toArray( descriptor.classes ), element );\n\t}\n\n\tif ( descriptor.attributes ) {\n\t\tfor ( const key in descriptor.attributes ) {\n\t\t\twriter.removeAttribute( key, element );\n\t\t}\n\t}\n}\n\n/**\n * Sets highlight handling methods. Uses {@link module:widget/highlightstack~HighlightStack} to\n * properly determine which highlight descriptor should be used at given time.\n */\nexport function setHighlightHandling(\n\telement: ViewElement,\n\twriter: DowncastWriter,\n\tadd: ( element: ViewElement, descriptor: HighlightDescriptor, writer: DowncastWriter ) => void = addHighlight,\n\tremove: ( element: ViewElement, descriptor: HighlightDescriptor, writer: DowncastWriter ) => void = removeHighlight\n): void {\n\tconst stack = new HighlightStack();\n\n\tstack.on<HighlightStackChangeEvent>( 'change:top', ( evt, data ) => {\n\t\tif ( data.oldDescriptor ) {\n\t\t\tremove( element, data.oldDescriptor, data.writer );\n\t\t}\n\n\t\tif ( data.newDescriptor ) {\n\t\t\tadd( element, data.newDescriptor, data.writer );\n\t\t}\n\t} );\n\n\tconst addHighlightCallback: AddHighlightCallback = ( element, descriptor, writer ) => stack.add( descriptor, writer );\n\tconst removeHighlightCallback: RemoveHighlightCallback = ( element, id, writer ) => stack.remove( id, writer );\n\n\twriter.setCustomProperty( 'addHighlight', addHighlightCallback, element );\n\twriter.setCustomProperty( 'removeHighlight', removeHighlightCallback, element );\n}\n\n/**\n * Sets label for given element.\n * It can be passed as a plain string or a function returning a string. Function will be called each time label is retrieved by\n * {@link ~getLabel `getLabel()`}.\n */\nexport function setLabel( element: ViewElement, labelOrCreator: string | ( () => string ) ): void {\n\tconst widgetLabel = element.getCustomProperty( 'widgetLabel' ) as Array<string | ( () => string )>;\n\n\twidgetLabel.push( labelOrCreator );\n}\n\n/**\n * Returns the label of the provided element.\n */\nexport function getLabel( element: ViewElement ): string {\n\tconst widgetLabel = element.getCustomProperty( 'widgetLabel' ) as Array<string | ( () => string )>;\n\n\treturn widgetLabel.reduce( ( prev: string, current: string | ( () => string ) ) => {\n\t\tif ( typeof current === 'function' ) {\n\t\t\treturn prev ? prev + '. ' + current() : current();\n\t\t} else {\n\t\t\treturn prev ? prev + '. ' + current : current;\n\t\t}\n\t}, '' );\n}\n\n/**\n * Adds functionality to the provided {@link module:engine/view/editableelement~EditableElement} to act as a widget's editable:\n *\n * * sets the `contenteditable` attribute to `true` when {@link module:engine/view/editableelement~EditableElement#isReadOnly} is `false`,\n * otherwise sets it to `false`,\n * * adds the `ck-editor__editable` and `ck-editor__nested-editable` CSS classes,\n * * adds the `ck-editor__nested-editable_focused` CSS class when the editable is focused and removes it when it is blurred.\n * * implements the {@link ~setHighlightHandling view highlight on widget's editable}.\n *\n * Similarly to {@link ~toWidget `toWidget()`} this function should be used in `editingDowncast` only and it is usually\n * used together with {@link module:engine/conversion/downcasthelpers~DowncastHelpers#elementToElement `elementToElement()`}.\n *\n * For example, in order to convert a `<nested>` model element to `<div class=\"nested\">` in the view, you can define\n * such converters:\n *\n * ```ts\n * editor.conversion.for( 'editingDowncast' )\n * \t.elementToElement( {\n * \t\tmodel: 'nested',\n * \t\tview: ( modelItem, { writer } ) => {\n * \t\t\tconst div = writer.createEditableElement( 'div', { class: 'nested' } );\n *\n * \t\t\treturn toWidgetEditable( nested, writer, { label: 'label for editable' } );\n * \t\t}\n * \t} );\n *\n * editor.conversion.for( 'dataDowncast' )\n * \t.elementToElement( {\n * \t\tmodel: 'nested',\n * \t\tview: ( modelItem, { writer } ) => {\n * \t\t\treturn writer.createContainerElement( 'div', { class: 'nested' } );\n * \t\t}\n * \t} );\n * ```\n *\n * See the full source code of the widget (with nested editable) schema definition and converters in\n * [this sample](https://github.com/ckeditor/ckeditor5-widget/blob/master/tests/manual/widget-with-nestededitable.js).\n *\n * @param options Additional options.\n * @param options.label Editable's label used by assistive technologies (e.g. screen readers).\n * @returns Returns the same element that was provided in the `editable` parameter\n */\nexport function toWidgetEditable(\n\teditable: ViewEditableElement,\n\twriter: DowncastWriter,\n\toptions: {\n\t\tlabel?: string;\n\t} = {}\n): ViewEditableElement {\n\twriter.addClass( [ 'ck-editor__editable', 'ck-editor__nested-editable' ], editable );\n\n\twriter.setAttribute( 'role', 'textbox', editable );\n\twriter.setAttribute( 'tabindex', '-1', editable );\n\n\tif ( options.label ) {\n\t\twriter.setAttribute( 'aria-label', options.label, editable );\n\t}\n\n\t// Set initial contenteditable value.\n\twriter.setAttribute( 'contenteditable', editable.isReadOnly ? 'false' : 'true', editable );\n\n\t// Bind the contenteditable property to element#isReadOnly.\n\teditable.on<ObservableChangeEvent<boolean>>( 'change:isReadOnly', ( evt, property, is ) => {\n\t\twriter.setAttribute( 'contenteditable', is ? 'false' : 'true', editable );\n\t} );\n\n\teditable.on<ObservableChangeEvent<boolean>>( 'change:isFocused', ( evt, property, is ) => {\n\t\tif ( is ) {\n\t\t\twriter.addClass( 'ck-editor__nested-editable_focused', editable );\n\t\t} else {\n\t\t\twriter.removeClass( 'ck-editor__nested-editable_focused', editable );\n\t\t}\n\t} );\n\n\tsetHighlightHandling( editable, writer );\n\n\treturn editable;\n}\n\n/**\n * Returns a model range which is optimal (in terms of UX) for inserting a widget block.\n *\n * For instance, if a selection is in the middle of a paragraph, the collapsed range before this paragraph\n * will be returned so that it is not split. If the selection is at the end of a paragraph,\n * the collapsed range after this paragraph will be returned.\n *\n * Note: If the selection is placed in an empty block, the range in that block will be returned. If that range\n * is then passed to {@link module:engine/model/model~Model#insertContent}, the block will be fully replaced\n * by the inserted widget block.\n *\n * @param selection The selection based on which the insertion position should be calculated.\n * @param model Model instance.\n * @returns The optimal range.\n */\nexport function findOptimalInsertionRange(\n\tselection: Selection | DocumentSelection,\n\tmodel: Model\n): Range {\n\tconst selectedElement = selection.getSelectedElement();\n\n\tif ( selectedElement ) {\n\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( selection );\n\n\t\t// If the WidgetTypeAround \"fake caret\" is displayed, use its position for the insertion\n\t\t// to provide the most predictable UX (https://github.com/ckeditor/ckeditor5/issues/7438).\n\t\tif ( typeAroundFakeCaretPosition ) {\n\t\t\treturn model.createRange( model.createPositionAt( selectedElement, typeAroundFakeCaretPosition ) );\n\t\t}\n\t}\n\n\treturn model.schema.findOptimalInsertionRange( selection );\n}\n\n/**\n * A util to be used in order to map view positions to correct model positions when implementing a widget\n * which renders non-empty view element for an empty model element.\n *\n * For example:\n *\n * ```\n * // Model:\n * <placeholder type=\"name\"></placeholder>\n *\n * // View:\n * <span class=\"placeholder\">name</span>\n * ```\n *\n * In such case, view positions inside `<span>` cannot be correctly mapped to the model (because the model element is empty).\n * To handle mapping positions inside `<span class=\"placeholder\">` to the model use this util as follows:\n *\n * ```ts\n * editor.editing.mapper.on(\n * \t'viewToModelPosition',\n * \tviewToModelPositionOutsideModelElement( model, viewElement => viewElement.hasClass( 'placeholder' ) )\n * );\n * ```\n *\n * The callback will try to map the view offset of selection to an expected model position.\n *\n * 1. When the position is at the end (or in the middle) of the inline widget:\n *\n * ```\n * // View:\n * <p>foo <span class=\"placeholder\">name|</span> bar</p>\n *\n * // Model:\n * <paragraph>foo <placeholder type=\"name\"></placeholder>| bar</paragraph>\n * ```\n *\n * 2. When the position is at the beginning of the inline widget:\n *\n * ```\n * // View:\n * <p>foo <span class=\"placeholder\">|name</span> bar</p>\n *\n * // Model:\n * <paragraph>foo |<placeholder type=\"name\"></placeholder> bar</paragraph>\n * ```\n *\n * @param model Model instance on which the callback operates.\n * @param viewElementMatcher Function that is passed a view element and should return `true` if the custom mapping\n * should be applied to the given view element.\n */\nexport function viewToModelPositionOutsideModelElement(\n\tmodel: Model,\n\tviewElementMatcher: ( element: ViewElement ) => boolean\n): GetCallback<MapperViewToModelPositionEvent> {\n\treturn ( evt, data ) => {\n\t\tconst { mapper, viewPosition } = data;\n\n\t\tconst viewParent = mapper.findMappedViewAncestor( viewPosition );\n\n\t\tif ( !viewElementMatcher( viewParent ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst modelParent = mapper.toModelElement( viewParent );\n\n\t\tdata.modelPosition = model.createPositionAt( modelParent!, viewPosition.isAtStart ? 'before' : 'after' );\n\t};\n}\n\n/**\n * Default filler offset function applied to all widget elements.\n */\nfunction getFillerOffset() {\n\treturn null;\n}\n\n/**\n * Adds a drag handle to the widget.\n */\nfunction addSelectionHandle( widgetElement: ViewContainerElement, writer: DowncastWriter ) {\n\tconst selectionHandle = writer.createUIElement( 'div', { class: 'ck ck-widget__selection-handle' }, function( domDocument ) {\n\t\tconst domElement = this.toDomElement( domDocument );\n\n\t\t// Use the IconView from the ui library.\n\t\tconst icon = new IconView();\n\t\ticon.set( 'content', dragHandleIcon );\n\n\t\t// Render the icon view right away to append its #element to the selectionHandle DOM element.\n\t\ticon.render();\n\n\t\tdomElement.appendChild( icon.element! );\n\n\t\treturn domElement;\n\t} );\n\n\t// Append the selection handle into the widget wrapper.\n\twriter.insert( writer.createPositionAt( widgetElement, 0 ), selectionHandle );\n\twriter.addClass( [ 'ck-widget_with-selection-handle' ], widgetElement );\n}\n\n/**\n * Starting from a DOM resize host element (an element that receives dimensions as a result of resizing),\n * this helper returns the width of the found ancestor element.\n *\n *\t* It searches up to 5 levels of ancestors only.\n *\n * @param domResizeHost Resize host DOM element that receives dimensions as a result of resizing.\n * @returns Width of ancestor element in pixels or 0 if no ancestor with a computed width has been found.\n */\nexport function calculateResizeHostAncestorWidth( domResizeHost: HTMLElement ): number {\n\tconst getElementComputedWidth = ( element: HTMLElement ) => {\n\t\tconst { width, paddingLeft, paddingRight } = element.ownerDocument.defaultView!.getComputedStyle( element! );\n\n\t\treturn parseFloat( width ) - ( parseFloat( paddingLeft ) || 0 ) - ( parseFloat( paddingRight ) || 0 );\n\t};\n\n\tconst domResizeHostParent = domResizeHost.parentElement;\n\n\tif ( !domResizeHostParent ) {\n\t\treturn 0;\n\t}\n\n\t// Need to use computed style as it properly excludes parent's paddings from the returned value.\n\tlet parentWidth = getElementComputedWidth( domResizeHostParent! );\n\n\t// Sometimes parent width cannot be accessed. If that happens we should go up in the elements tree\n\t// and try to get width from next ancestor.\n\t// https://github.com/ckeditor/ckeditor5/issues/10776\n\tconst ancestorLevelLimit = 5;\n\tlet currentLevel = 0;\n\n\tlet checkedElement = domResizeHostParent!;\n\n\twhile ( isNaN( parentWidth ) ) {\n\t\tcheckedElement = checkedElement.parentElement!;\n\n\t\tif ( ++currentLevel > ancestorLevelLimit ) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tparentWidth = getElementComputedWidth( checkedElement );\n\t}\n\n\treturn parentWidth;\n}\n\n/**\n * Calculates a relative width of a `domResizeHost` compared to its ancestor in percents.\n *\n * @param domResizeHost Resize host DOM element.\n * @returns Percentage value between 0 and 100.\n */\nexport function calculateResizeHostPercentageWidth(\n\tdomResizeHost: HTMLElement,\n\tresizeHostRect: Rect = new Rect( domResizeHost )\n): number {\n\tconst parentWidth = calculateResizeHostAncestorWidth( domResizeHost );\n\n\tif ( !parentWidth ) {\n\t\treturn 0;\n\t}\n\n\treturn resizeHostRect.width / parentWidth * 100;\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/widgettypearound/utils\n */\n\nimport { isWidget } from '../utils.js';\n\nimport type {\n\tDocumentSelection,\n\tDomConverter,\n\tElement,\n\tSchema,\n\tSelection,\n\tViewElement\n} from '@ckeditor/ckeditor5-engine';\n\n/**\n * The name of the type around model selection attribute responsible for\n * displaying a fake caret next to a selected widget.\n */\nexport const TYPE_AROUND_SELECTION_ATTRIBUTE = 'widget-type-around';\n\n/**\n * Checks if an element is a widget that qualifies to get the widget type around UI.\n */\nexport function isTypeAroundWidget( viewElement: ViewElement | undefined, modelElement: Element, schema: Schema ): boolean {\n\treturn !!viewElement && isWidget( viewElement ) && !schema.isInline( modelElement );\n}\n\n/**\n * For the passed HTML element, this helper finds the closest widget type around button ancestor.\n */\nexport function getClosestTypeAroundDomButton( domElement: HTMLElement ): HTMLElement | null {\n\treturn domElement.closest( '.ck-widget__type-around__button' );\n}\n\n/**\n * For the passed widget type around button element, this helper determines at which position\n * the paragraph would be inserted into the content if, for instance, the button was\n * clicked by the user.\n *\n * @returns The position of the button.\n */\nexport function getTypeAroundButtonPosition( domElement: HTMLElement ): 'before' | 'after' {\n\treturn domElement.classList.contains( 'ck-widget__type-around__button_before' ) ? 'before' : 'after';\n}\n\n/**\n * For the passed HTML element, this helper returns the closest view widget ancestor.\n */\nexport function getClosestWidgetViewElement( domElement: HTMLElement, domConverter: DomConverter ): ViewElement {\n\tconst widgetDomElement = domElement.closest( '.ck-widget' );\n\n\treturn domConverter.mapDomToView( widgetDomElement as any ) as ViewElement;\n}\n\n/**\n * For the passed selection instance, it returns the position of the fake caret displayed next to a widget.\n *\n * **Note**: If the fake caret is not currently displayed, `null` is returned.\n *\n * @returns The position of the fake caret or `null` when none is present.\n */\nexport function getTypeAroundFakeCaretPosition( selection: Selection | DocumentSelection ): 'before' | 'after' | null {\n\treturn selection.getAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE ) as any;\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* global DOMParser */\n\n/**\n * @module widget/widgettypearound/widgettypearound\n */\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\n\nimport { Template } from '@ckeditor/ckeditor5-ui';\n\nimport {\n\tEnter,\n\ttype ViewDocumentEnterEvent\n} from '@ckeditor/ckeditor5-enter';\n\nimport {\n\tDelete,\n\ttype ViewDocumentDeleteEvent,\n\ttype ViewDocumentInsertTextEvent\n} from '@ckeditor/ckeditor5-typing';\n\nimport {\n\tenv,\n\tisForwardArrowKeyCode,\n\ttype BaseEvent,\n\ttype Emitter,\n\ttype GetCallback,\n\ttype GetCallbackOptions,\n\ttype ObservableChangeEvent,\n\ttype KeystrokeInfo\n} from '@ckeditor/ckeditor5-utils';\n\nimport type {\n\tBubblingEventInfo,\n\tDocumentChangeEvent,\n\tDomEventData,\n\tDowncastInsertEvent,\n\tDowncastSelectionEvent,\n\tDowncastWriter,\n\tElement,\n\tSchema,\n\tSelectionChangeRangeEvent,\n\tViewDocumentArrowKeyEvent,\n\tViewDocumentCompositionStartEvent,\n\tViewDocumentKeyDownEvent,\n\tViewDocumentMouseDownEvent,\n\tViewElement,\n\tModelDeleteContentEvent,\n\tModelInsertContentEvent,\n\tModelInsertObjectEvent\n} from '@ckeditor/ckeditor5-engine';\n\nimport {\n\tisTypeAroundWidget,\n\tgetClosestTypeAroundDomButton,\n\tgetTypeAroundButtonPosition,\n\tgetClosestWidgetViewElement,\n\tgetTypeAroundFakeCaretPosition,\n\tTYPE_AROUND_SELECTION_ATTRIBUTE\n} from './utils.js';\n\nimport { isWidget } from '../utils.js';\nimport type Widget from '../widget.js';\n\nimport returnIcon from '../../theme/icons/return-arrow.svg';\n\nimport '../../theme/widgettypearound.css';\n\nconst POSSIBLE_INSERTION_POSITIONS = [ 'before', 'after' ] as const;\n\n// Do the SVG parsing once and then clone the result <svg> DOM element for each new button.\nconst RETURN_ARROW_ICON_ELEMENT = new DOMParser().parseFromString( returnIcon, 'image/svg+xml' ).firstChild!;\n\nconst PLUGIN_DISABLED_EDITING_ROOT_CLASS = 'ck-widget__type-around_disabled';\n\n/**\n * A plugin that allows users to type around widgets where normally it is impossible to place the caret due\n * to limitations of web browsers. These \"tight spots\" occur, for instance, before (or after) a widget being\n * the first (or last) child of its parent or between two block widgets.\n *\n * This plugin extends the {@link module:widget/widget~Widget `Widget`} plugin and injects the user interface\n * with two buttons into each widget instance in the editor. Each of the buttons can be clicked by the\n * user if the widget is next to the \"tight spot\". Once clicked, a paragraph is created with the selection anchored\n * in it so that users can type (or insert content, paste, etc.) straight away.\n */\nexport default class WidgetTypeAround extends Plugin {\n\t/**\n\t * A reference to the model widget element that has the fake caret active\n\t * on either side of it. It is later used to remove CSS classes associated with the fake caret\n\t * when the widget no longer needs it.\n\t */\n\tprivate _currentFakeCaretModelElement: Element | null = null;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'WidgetTypeAround' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ Enter, Delete ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst editingView = editor.editing.view;\n\n\t\t// Set a CSS class on the view editing root when the plugin is disabled so all the buttons\n\t\t// and lines visually disappear. All the interactions are disabled in individual plugin methods.\n\t\tthis.on<ObservableChangeEvent<boolean>>( 'change:isEnabled', ( evt, data, isEnabled ) => {\n\t\t\teditingView.change( writer => {\n\t\t\t\tfor ( const root of editingView.document.roots ) {\n\t\t\t\t\tif ( isEnabled ) {\n\t\t\t\t\t\twriter.removeClass( PLUGIN_DISABLED_EDITING_ROOT_CLASS, root );\n\t\t\t\t\t} else {\n\t\t\t\t\t\twriter.addClass( PLUGIN_DISABLED_EDITING_ROOT_CLASS, root );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tif ( !isEnabled ) {\n\t\t\t\teditor.model.change( writer => {\n\t\t\t\t\twriter.removeSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE );\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\tthis._enableTypeAroundUIInjection();\n\t\tthis._enableInsertingParagraphsOnButtonClick();\n\t\tthis._enableInsertingParagraphsOnEnterKeypress();\n\t\tthis._enableInsertingParagraphsOnTypingKeystroke();\n\t\tthis._enableTypeAroundFakeCaretActivationUsingKeyboardArrows();\n\t\tthis._enableDeleteIntegration();\n\t\tthis._enableInsertContentIntegration();\n\t\tthis._enableInsertObjectIntegration();\n\t\tthis._enableDeleteContentIntegration();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis._currentFakeCaretModelElement = null;\n\t}\n\n\t/**\n\t * Inserts a new paragraph next to a widget element with the selection anchored in it.\n\t *\n\t * **Note**: This method is heavily user-oriented and will both focus the editing view and scroll\n\t * the viewport to the selection in the inserted paragraph.\n\t *\n\t * @param widgetModelElement The model widget element next to which a paragraph is inserted.\n\t * @param position The position where the paragraph is inserted. Either `'before'` or `'after'` the widget.\n\t */\n\tprivate _insertParagraph( widgetModelElement: Element, position: 'before' | 'after' ) {\n\t\tconst editor = this.editor;\n\t\tconst editingView = editor.editing.view;\n\n\t\tconst attributesToCopy = editor.model.schema.getAttributesWithProperty( widgetModelElement, 'copyOnReplace', true );\n\n\t\teditor.execute( 'insertParagraph', {\n\t\t\tposition: editor.model.createPositionAt( widgetModelElement, position ),\n\t\t\tattributes: attributesToCopy\n\t\t} );\n\n\t\teditingView.focus();\n\t\teditingView.scrollToTheSelection();\n\t}\n\n\t/**\n\t * A wrapper for the {@link module:utils/emittermixin~Emitter#listenTo} method that executes the callbacks only\n\t * when the plugin {@link #isEnabled is enabled}.\n\t *\n\t * @param emitter The object that fires the event.\n\t * @param event The name of the event.\n\t * @param callback The function to be called on event.\n\t * @param options Additional options.\n\t * @param options.priority The priority of this event callback. The higher the priority value the sooner\n\t * the callback will be fired. Events having the same priority are called in the order they were added.\n\t */\n\tprivate _listenToIfEnabled<TEvent extends BaseEvent>(\n\t\temitter: Emitter,\n\t\tevent: TEvent[ 'name' ],\n\t\tcallback: OmitThisParameter<GetCallback<TEvent>>,\n\t\toptions?: GetCallbackOptions<TEvent>\n\t): void {\n\t\tthis.listenTo( emitter, event, ( ...args ) => {\n\t\t\t// Do not respond if the plugin is disabled.\n\t\t\tif ( this.isEnabled ) {\n\t\t\t\tcallback( ...args );\n\t\t\t}\n\t\t}, options );\n\t}\n\n\t/**\n\t * Similar to {@link #_insertParagraph}, this method inserts a paragraph except that it\n\t * does not expect a position. Instead, it performs the insertion next to a selected widget\n\t * according to the `widget-type-around` model selection attribute value (fake caret position).\n\t *\n\t * Because this method requires the `widget-type-around` attribute to be set,\n\t * the insertion can only happen when the widget's fake caret is active (e.g. activated\n\t * using the keyboard).\n\t *\n\t * @returns Returns `true` when the paragraph was inserted (the attribute was present) and `false` otherwise.\n\t */\n\tprivate _insertParagraphAccordingToFakeCaretPosition() {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst modelSelection = model.document.selection;\n\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( modelSelection );\n\n\t\tif ( !typeAroundFakeCaretPosition ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t// @if CK_DEBUG_TYPING // \tconsole.info( '%c[WidgetTypeAround]%c Fake caret -> insert paragraph',\n\t\t// @if CK_DEBUG_TYPING // \t\t'font-weight: bold; color: green', ''\n\t\t// @if CK_DEBUG_TYPING // \t);\n\t\t// @if CK_DEBUG_TYPING // }\n\n\t\tconst selectedModelElement = modelSelection.getSelectedElement()!;\n\n\t\tthis._insertParagraph( selectedModelElement, typeAroundFakeCaretPosition );\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Creates a listener in the editing conversion pipeline that injects the widget type around\n\t * UI into every single widget instance created in the editor.\n\t *\n\t * The UI is delivered as a {@link module:engine/view/uielement~UIElement}\n\t * wrapper which renders DOM buttons that users can use to insert paragraphs.\n\t */\n\tprivate _enableTypeAroundUIInjection() {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\t\tconst t = editor.locale.t;\n\t\tconst buttonTitles = {\n\t\t\tbefore: t( 'Insert paragraph before block' ),\n\t\t\tafter: t( 'Insert paragraph after block' )\n\t\t};\n\n\t\teditor.editing.downcastDispatcher.on<DowncastInsertEvent<Element>>( 'insert', ( evt, data, conversionApi ) => {\n\t\t\tconst viewElement = conversionApi.mapper.toViewElement( data.item );\n\n\t\t\tif ( !viewElement ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Filter out non-widgets and inline widgets.\n\t\t\tif ( isTypeAroundWidget( viewElement, data.item, schema ) ) {\n\t\t\t\tinjectUIIntoWidget( conversionApi.writer, buttonTitles, viewElement! );\n\n\t\t\t\tconst widgetLabel = viewElement.getCustomProperty( 'widgetLabel' ) as Array<string | ( () => string )>;\n\n\t\t\t\twidgetLabel.push( () => {\n\t\t\t\t\treturn this.isEnabled ? t( 'Press Enter to type after or press Shift + Enter to type before the widget' ) : '';\n\t\t\t\t} );\n\t\t\t}\n\t\t}, { priority: 'low' } );\n\t}\n\n\t/**\n\t * Brings support for the fake caret that appears when either:\n\t *\n\t * * the selection moves to a widget from a position next to it using arrow keys,\n\t * * the arrow key is pressed when the widget is already selected.\n\t *\n\t * The fake caret lets the user know that they can start typing or just press\n\t * <kbd>Enter</kbd> to insert a paragraph at the position next to a widget as suggested by the fake caret.\n\t *\n\t * The fake caret disappears when the user changes the selection or the editor\n\t * gets blurred.\n\t *\n\t * The whole idea is as follows:\n\t *\n\t * 1. A user does one of the 2 scenarios described at the beginning.\n\t * 2. The \"keydown\" listener is executed and the decision is made whether to show or hide the fake caret.\n\t * 3. If it should show up, the `widget-type-around` model selection attribute is set indicating\n\t * on which side of the widget it should appear.\n\t * 4. The selection dispatcher reacts to the selection attribute and sets CSS classes responsible for the\n\t * fake caret on the view widget.\n\t * 5. If the fake caret should disappear, the selection attribute is removed and the dispatcher\n\t * does the CSS class clean-up in the view.\n\t * 6. Additionally, `change:range` and `FocusTracker#isFocused` listeners also remove the selection\n\t * attribute (the former also removes widget CSS classes).\n\t */\n\tprivate _enableTypeAroundFakeCaretActivationUsingKeyboardArrows() {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst modelSelection = model.document.selection;\n\t\tconst schema = model.schema;\n\t\tconst editingView = editor.editing.view;\n\n\t\t// This is the main listener responsible for the fake caret.\n\t\t// Note: The priority must precede the default Widget class keydown handler (\"high\").\n\t\tthis._listenToIfEnabled<ViewDocumentArrowKeyEvent>( editingView.document, 'arrowKey', ( evt, domEventData ) => {\n\t\t\tthis._handleArrowKeyPress( evt, domEventData );\n\t\t}, { context: [ isWidget, '$text' ], priority: 'high' } );\n\n\t\t// This listener makes sure the widget type around selection attribute will be gone from the model\n\t\t// selection as soon as the model range changes. This attribute only makes sense when a widget is selected\n\t\t// (and the \"fake horizontal caret\" is visible) so whenever the range changes (e.g. selection moved somewhere else),\n\t\t// let's get rid of the attribute so that the selection downcast dispatcher isn't even bothered.\n\t\tthis._listenToIfEnabled<SelectionChangeRangeEvent>( modelSelection, 'change:range', ( evt, data ) => {\n\t\t\t// Do not reset the selection attribute when the change was indirect.\n\t\t\tif ( !data.directChange ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Get rid of the widget type around attribute of the selection on every change:range.\n\t\t\t// If the range changes, it means for sure, the user is no longer in the active (\"fake horizontal caret\") mode.\n\t\t\teditor.model.change( writer => {\n\t\t\t\twriter.removeSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE );\n\t\t\t} );\n\t\t} );\n\n\t\t// Get rid of the widget type around attribute of the selection on every document change\n\t\t// that makes widget not selected any more (i.e. widget was removed).\n\t\tthis._listenToIfEnabled<DocumentChangeEvent>( model.document, 'change:data', () => {\n\t\t\tconst selectedModelElement = modelSelection.getSelectedElement();\n\n\t\t\tif ( selectedModelElement ) {\n\t\t\t\tconst selectedViewElement = editor.editing.mapper.toViewElement( selectedModelElement );\n\n\t\t\t\tif ( isTypeAroundWidget( selectedViewElement, selectedModelElement, schema ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\teditor.model.change( writer => {\n\t\t\t\twriter.removeSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE );\n\t\t\t} );\n\t\t} );\n\n\t\t// React to changes of the model selection attribute made by the arrow keys listener.\n\t\t// If the block widget is selected and the attribute changes, downcast the attribute to special\n\t\t// CSS classes associated with the active (\"fake horizontal caret\") mode of the widget.\n\t\tthis._listenToIfEnabled<DowncastSelectionEvent>( editor.editing.downcastDispatcher, 'selection', ( evt, data, conversionApi ) => {\n\t\t\tconst writer = conversionApi.writer;\n\n\t\t\tif ( this._currentFakeCaretModelElement ) {\n\t\t\t\tconst selectedViewElement = conversionApi.mapper.toViewElement( this._currentFakeCaretModelElement );\n\n\t\t\t\tif ( selectedViewElement ) {\n\t\t\t\t\t// Get rid of CSS classes associated with the active (\"fake horizontal caret\") mode from the view widget.\n\t\t\t\t\twriter.removeClass( POSSIBLE_INSERTION_POSITIONS.map( positionToWidgetCssClass ), selectedViewElement );\n\n\t\t\t\t\tthis._currentFakeCaretModelElement = null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst selectedModelElement = data.selection.getSelectedElement();\n\n\t\t\tif ( !selectedModelElement ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst selectedViewElement = conversionApi.mapper.toViewElement( selectedModelElement );\n\n\t\t\tif ( !isTypeAroundWidget( selectedViewElement, selectedModelElement, schema ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( data.selection );\n\n\t\t\tif ( !typeAroundFakeCaretPosition ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\twriter.addClass( positionToWidgetCssClass( typeAroundFakeCaretPosition ), selectedViewElement! );\n\n\t\t\t// Remember the view widget that got the \"fake-caret\" CSS class. This class should be removed ASAP when the\n\t\t\t// selection changes\n\t\t\tthis._currentFakeCaretModelElement = selectedModelElement;\n\t\t} );\n\n\t\tthis._listenToIfEnabled<ObservableChangeEvent<boolean>>( editor.ui.focusTracker, 'change:isFocused', ( evt, name, isFocused ) => {\n\t\t\tif ( !isFocused ) {\n\t\t\t\teditor.model.change( writer => {\n\t\t\t\t\twriter.removeSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE );\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\tfunction positionToWidgetCssClass( position: 'before' | 'after' ) {\n\t\t\treturn `ck-widget_type-around_show-fake-caret_${ position }`;\n\t\t}\n\t}\n\n\t/**\n\t * A listener executed on each \"keydown\" in the view document, a part of\n\t * {@link #_enableTypeAroundFakeCaretActivationUsingKeyboardArrows}.\n\t *\n\t * It decides whether the arrow keypress should activate the fake caret or not (also whether it should\n\t * be deactivated).\n\t *\n\t * The fake caret activation is done by setting the `widget-type-around` model selection attribute\n\t * in this listener, and stopping and preventing the event that would normally be handled by the widget\n\t * plugin that is responsible for the regular keyboard navigation near/across all widgets (that\n\t * includes inline widgets, which are ignored by the widget type around plugin).\n\t */\n\tprivate _handleArrowKeyPress( evt: BubblingEventInfo<'arrowKey'>, domEventData: DomEventData & KeystrokeInfo ) {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst modelSelection = model.document.selection;\n\t\tconst schema = model.schema;\n\t\tconst editingView = editor.editing.view;\n\n\t\tconst keyCode = domEventData.keyCode;\n\t\tconst isForward = isForwardArrowKeyCode( keyCode, editor.locale.contentLanguageDirection );\n\t\tconst selectedViewElement = editingView.document.selection.getSelectedElement()!;\n\t\tconst selectedModelElement = editor.editing.mapper.toModelElement( selectedViewElement )!;\n\t\tlet shouldStopAndPreventDefault;\n\n\t\t// Handle keyboard navigation when a type-around-compatible widget is currently selected.\n\t\tif ( isTypeAroundWidget( selectedViewElement, selectedModelElement, schema ) ) {\n\t\t\tshouldStopAndPreventDefault = this._handleArrowKeyPressOnSelectedWidget( isForward );\n\t\t}\n\t\t// Handle keyboard arrow navigation when the selection is next to a type-around-compatible widget\n\t\t// and the widget is about to be selected.\n\t\telse if ( modelSelection.isCollapsed ) {\n\t\t\tshouldStopAndPreventDefault = this._handleArrowKeyPressWhenSelectionNextToAWidget( isForward );\n\t\t}\n\t\t// Handle collapsing a non-collapsed selection that is wider than on a single widget.\n\t\telse if ( !domEventData.shiftKey ) {\n\t\t\tshouldStopAndPreventDefault = this._handleArrowKeyPressWhenNonCollapsedSelection( isForward );\n\t\t}\n\n\t\tif ( shouldStopAndPreventDefault ) {\n\t\t\tdomEventData.preventDefault();\n\t\t\tevt.stop();\n\t\t}\n\t}\n\n\t/**\n\t * Handles the keyboard navigation on \"keydown\" when a widget is currently selected and activates or deactivates\n\t * the fake caret for that widget, depending on the current value of the `widget-type-around` model\n\t * selection attribute and the direction of the pressed arrow key.\n\t *\n\t * @param isForward `true` when the pressed arrow key was responsible for the forward model selection movement\n\t * as in {@link module:utils/keyboard~isForwardArrowKeyCode}.\n\t * @returns Returns `true` when the keypress was handled and no other keydown listener of the editor should\n\t * process the event any further. Returns `false` otherwise.\n\t */\n\tprivate _handleArrowKeyPressOnSelectedWidget( isForward: boolean ) {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst modelSelection = model.document.selection;\n\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( modelSelection );\n\n\t\treturn model.change( writer => {\n\t\t\t// If the fake caret is displayed...\n\t\t\tif ( typeAroundFakeCaretPosition ) {\n\t\t\t\tconst isLeavingWidget = typeAroundFakeCaretPosition === ( isForward ? 'after' : 'before' );\n\n\t\t\t\t// If the keyboard arrow works against the value of the selection attribute...\n\t\t\t\t// then remove the selection attribute but prevent default DOM actions\n\t\t\t\t// and do not let the Widget plugin listener move the selection. This brings\n\t\t\t\t// the widget back to the state, for instance, like if was selected using the mouse.\n\t\t\t\t//\n\t\t\t\t// **Note**: If leaving the widget when the fake caret is active, then the default\n\t\t\t\t// Widget handler will change the selection and, in turn, this will automatically discard\n\t\t\t\t// the selection attribute.\n\t\t\t\tif ( !isLeavingWidget ) {\n\t\t\t\t\twriter.removeSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE );\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If the fake caret wasn't displayed, let's set it now according to the direction of the arrow\n\t\t\t// key press. This also means we cannot let the Widget plugin listener move the selection.\n\t\t\telse {\n\t\t\t\twriter.setSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE, isForward ? 'after' : 'before' );\n\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t} );\n\t}\n\n\t/**\n\t * Handles the keyboard navigation on \"keydown\" when **no** widget is selected but the selection is **directly** next\n\t * to one and upon the fake caret should become active for this widget upon arrow keypress\n\t * (AKA entering/selecting the widget).\n\t *\n\t * **Note**: This code mirrors the implementation from the widget plugin but also adds the selection attribute.\n\t * Unfortunately, there is no safe way to let the widget plugin do the selection part first and then just set the\n\t * selection attribute here in the widget type around plugin. This is why this code must duplicate some from the widget plugin.\n\t *\n\t * @param isForward `true` when the pressed arrow key was responsible for the forward model selection movement\n\t * as in {@link module:utils/keyboard~isForwardArrowKeyCode}.\n\t * @returns Returns `true` when the keypress was handled and no other keydown listener of the editor should\n\t * process the event any further. Returns `false` otherwise.\n\t */\n\tprivate _handleArrowKeyPressWhenSelectionNextToAWidget( isForward: boolean ) {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst schema = model.schema;\n\t\tconst widgetPlugin: Widget = editor.plugins.get( 'Widget' );\n\n\t\t// This is the widget the selection is about to be set on.\n\t\tconst modelElementNextToSelection = widgetPlugin._getObjectElementNextToSelection( isForward )!;\n\t\tconst viewElementNextToSelection = editor.editing.mapper.toViewElement( modelElementNextToSelection );\n\n\t\tif ( isTypeAroundWidget( viewElementNextToSelection, modelElementNextToSelection, schema ) ) {\n\t\t\tmodel.change( writer => {\n\t\t\t\twidgetPlugin._setSelectionOverElement( modelElementNextToSelection );\n\t\t\t\twriter.setSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE, isForward ? 'before' : 'after' );\n\t\t\t} );\n\n\t\t\t// The change() block above does the same job as the Widget plugin. The event can\n\t\t\t// be safely canceled.\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Handles the keyboard navigation on \"keydown\" when a widget is currently selected (together with some other content)\n\t * and the widget is the first or last element in the selection. It activates or deactivates the fake caret for that widget.\n\t *\n\t * @param isForward `true` when the pressed arrow key was responsible for the forward model selection movement\n\t * as in {@link module:utils/keyboard~isForwardArrowKeyCode}.\n\t * @returns Returns `true` when the keypress was handled and no other keydown listener of the editor should\n\t * process the event any further. Returns `false` otherwise.\n\t */\n\tprivate _handleArrowKeyPressWhenNonCollapsedSelection( isForward: boolean ) {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst schema = model.schema;\n\t\tconst mapper = editor.editing.mapper;\n\t\tconst modelSelection = model.document.selection;\n\n\t\tconst selectedModelNode = isForward ?\n\t\t\tmodelSelection.getLastPosition()!.nodeBefore :\n\t\t\tmodelSelection.getFirstPosition()!.nodeAfter;\n\n\t\tconst selectedViewNode = mapper.toViewElement( selectedModelNode as any );\n\n\t\t// There is a widget at the collapse position so collapse the selection to the fake caret on it.\n\t\tif ( isTypeAroundWidget( selectedViewNode, selectedModelNode as any, schema ) ) {\n\t\t\tmodel.change( writer => {\n\t\t\t\twriter.setSelection( selectedModelNode!, 'on' );\n\t\t\t\twriter.setSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE, isForward ? 'after' : 'before' );\n\t\t\t} );\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Registers a `mousedown` listener for the view document which intercepts events\n\t * coming from the widget type around UI, which happens when a user clicks one of the buttons\n\t * that insert a paragraph next to a widget.\n\t */\n\tprivate _enableInsertingParagraphsOnButtonClick() {\n\t\tconst editor = this.editor;\n\t\tconst editingView = editor.editing.view;\n\n\t\tthis._listenToIfEnabled<ViewDocumentMouseDownEvent>( editingView.document, 'mousedown', ( evt, domEventData ) => {\n\t\t\tconst button = getClosestTypeAroundDomButton( domEventData.domTarget );\n\n\t\t\tif ( !button ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst buttonPosition = getTypeAroundButtonPosition( button );\n\t\t\tconst widgetViewElement = getClosestWidgetViewElement( button, editingView.domConverter );\n\t\t\tconst widgetModelElement = editor.editing.mapper.toModelElement( widgetViewElement );\n\n\t\t\tthis._insertParagraph( widgetModelElement!, buttonPosition );\n\n\t\t\tdomEventData.preventDefault();\n\t\t\tevt.stop();\n\t\t} );\n\t}\n\n\t/**\n\t * Creates the <kbd>Enter</kbd> key listener on the view document that allows the user to insert a paragraph\n\t * near the widget when either:\n\t *\n\t * * The fake caret was first activated using the arrow keys,\n\t * * The entire widget is selected in the model.\n\t *\n\t * In the first case, the new paragraph is inserted according to the `widget-type-around` selection\n\t * attribute (see {@link #_handleArrowKeyPress}).\n\t *\n\t * In the second case, the new paragraph is inserted based on whether a soft (<kbd>Shift</kbd>+<kbd>Enter</kbd>) keystroke\n\t * was pressed or not.\n\t */\n\tprivate _enableInsertingParagraphsOnEnterKeypress() {\n\t\tconst editor = this.editor;\n\t\tconst selection = editor.model.document.selection;\n\t\tconst editingView = editor.editing.view;\n\n\t\tthis._listenToIfEnabled<ViewDocumentEnterEvent>( editingView.document, 'enter', ( evt, domEventData ) => {\n\t\t\t// This event could be triggered from inside the widget but we are interested\n\t\t\t// only when the widget is selected itself.\n\t\t\tif ( evt.eventPhase != 'atTarget' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst selectedModelElement = selection.getSelectedElement()!;\n\t\t\tconst selectedViewElement = editor.editing.mapper.toViewElement( selectedModelElement );\n\n\t\t\tconst schema = editor.model.schema;\n\t\t\tlet wasHandled;\n\n\t\t\t// First check if the widget is selected and there's a type around selection attribute associated\n\t\t\t// with the fake caret that would tell where to insert a new paragraph.\n\t\t\tif ( this._insertParagraphAccordingToFakeCaretPosition() ) {\n\t\t\t\twasHandled = true;\n\t\t\t}\n\t\t\t// Then, if there is no selection attribute associated with the fake caret, check if the widget\n\t\t\t// simply is selected and create a new paragraph according to the keystroke (Shift+)Enter.\n\t\t\telse if ( isTypeAroundWidget( selectedViewElement, selectedModelElement, schema ) ) {\n\t\t\t\tthis._insertParagraph( selectedModelElement, domEventData.isSoft ? 'before' : 'after' );\n\n\t\t\t\twasHandled = true;\n\t\t\t}\n\n\t\t\tif ( wasHandled ) {\n\t\t\t\tdomEventData.preventDefault();\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { context: isWidget } );\n\t}\n\n\t/**\n\t * Similar to the {@link #_enableInsertingParagraphsOnEnterKeypress}, it allows the user\n\t * to insert a paragraph next to a widget when the fake caret was activated using arrow\n\t * keys but it responds to typing instead of <kbd>Enter</kbd>.\n\t *\n\t * Listener enabled by this method will insert a new paragraph according to the `widget-type-around`\n\t * model selection attribute as the user simply starts typing, which creates the impression that the fake caret\n\t * behaves like a real one rendered by the browser (AKA your text appears where the caret was).\n\t *\n\t * **Note**: At the moment this listener creates 2 undo steps: one for the `insertParagraph` command\n\t * and another one for actual typing. It is not a disaster but this may need to be fixed\n\t * sooner or later.\n\t */\n\tprivate _enableInsertingParagraphsOnTypingKeystroke() {\n\t\tconst editor = this.editor;\n\t\tconst viewDocument = editor.editing.view.document;\n\n\t\t// Note: The priority must precede the default Input plugin insertText handler.\n\t\tthis._listenToIfEnabled<ViewDocumentInsertTextEvent>( viewDocument, 'insertText', ( evt, data ) => {\n\t\t\tif ( this._insertParagraphAccordingToFakeCaretPosition() ) {\n\t\t\t\t// The view selection in the event data contains the widget. If the new paragraph\n\t\t\t\t// was inserted, modify the view selection passed along with the insertText event\n\t\t\t\t// so the default event handler in the Input plugin starts typing inside the paragraph.\n\t\t\t\t// Otherwise, the typing would be over the widget.\n\t\t\t\tdata.selection = viewDocument.selection;\n\t\t\t}\n\t\t}, { priority: 'high' } );\n\n\t\tif ( env.isAndroid ) {\n\t\t\t// On Android with English keyboard, the composition starts just by putting caret\n\t\t\t// at the word end or by selecting a table column. This is not a real composition started.\n\t\t\t// Trigger delete content on first composition key pressed.\n\t\t\tthis._listenToIfEnabled<ViewDocumentKeyDownEvent>( viewDocument, 'keydown', ( evt, data ) => {\n\t\t\t\tif ( data.keyCode == 229 ) {\n\t\t\t\t\tthis._insertParagraphAccordingToFakeCaretPosition();\n\t\t\t\t}\n\t\t\t} );\n\t\t} else {\n\t\t\t// Note: The priority must precede the default Input plugin compositionstart handler (to call it before delete content).\n\t\t\tthis._listenToIfEnabled<ViewDocumentCompositionStartEvent>( viewDocument, 'compositionstart', () => {\n\t\t\t\tthis._insertParagraphAccordingToFakeCaretPosition();\n\t\t\t}, { priority: 'high' } );\n\t\t}\n\t}\n\n\t/**\n\t * It creates a \"delete\" event listener on the view document to handle cases when the <kbd>Delete</kbd> or <kbd>Backspace</kbd>\n\t * is pressed and the fake caret is currently active.\n\t *\n\t * The fake caret should create an illusion of a real browser caret so that when it appears before or after\n\t * a widget, pressing <kbd>Delete</kbd> or <kbd>Backspace</kbd> should remove a widget or delete the content\n\t * before or after a widget (depending on the content surrounding the widget).\n\t */\n\tprivate _enableDeleteIntegration() {\n\t\tconst editor = this.editor;\n\t\tconst editingView = editor.editing.view;\n\t\tconst model = editor.model;\n\t\tconst schema = model.schema;\n\n\t\tthis._listenToIfEnabled<ViewDocumentDeleteEvent>( editingView.document, 'delete', ( evt, domEventData ) => {\n\t\t\t// This event could be triggered from inside the widget but we are interested\n\t\t\t// only when the widget is selected itself.\n\t\t\tif ( evt.eventPhase != 'atTarget' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( model.document.selection );\n\n\t\t\t// This listener handles only these cases when the fake caret is active.\n\t\t\tif ( !typeAroundFakeCaretPosition ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst direction = domEventData.direction;\n\t\t\tconst selectedModelWidget = model.document.selection.getSelectedElement();\n\n\t\t\tconst isFakeCaretBefore = typeAroundFakeCaretPosition === 'before';\n\t\t\tconst isDeleteForward = direction == 'forward';\n\t\t\tconst shouldDeleteEntireWidget = isFakeCaretBefore === isDeleteForward;\n\n\t\t\tif ( shouldDeleteEntireWidget ) {\n\t\t\t\teditor.execute( 'delete', {\n\t\t\t\t\tselection: model.createSelection( selectedModelWidget!, 'on' )\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\tconst range = schema.getNearestSelectionRange(\n\t\t\t\t\tmodel.createPositionAt( selectedModelWidget!, typeAroundFakeCaretPosition ),\n\t\t\t\t\tdirection\n\t\t\t\t);\n\n\t\t\t\t// If there is somewhere to move selection to, then there will be something to delete.\n\t\t\t\tif ( range ) {\n\t\t\t\t\t// If the range is NOT collapsed, then we know that the range contains an object (see getNearestSelectionRange() docs).\n\t\t\t\t\tif ( !range.isCollapsed ) {\n\t\t\t\t\t\tmodel.change( writer => {\n\t\t\t\t\t\t\twriter.setSelection( range );\n\t\t\t\t\t\t\teditor.execute( isDeleteForward ? 'deleteForward' : 'delete' );\n\t\t\t\t\t\t} );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst probe = model.createSelection( range.start );\n\t\t\t\t\t\tmodel.modifySelection( probe, { direction } );\n\n\t\t\t\t\t\t// If the range is collapsed, let's see if a non-collapsed range exists that can could be deleted.\n\t\t\t\t\t\t// If such range exists, use the editor command because it it safe for collaboration (it merges where it can).\n\t\t\t\t\t\tif ( !probe.focus!.isEqual( range.start ) ) {\n\t\t\t\t\t\t\tmodel.change( writer => {\n\t\t\t\t\t\t\t\twriter.setSelection( range );\n\t\t\t\t\t\t\t\teditor.execute( isDeleteForward ? 'deleteForward' : 'delete' );\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// If there is no non-collapsed range to be deleted then we are sure that there is an empty element\n\t\t\t\t\t\t// next to a widget that should be removed. \"delete\" and \"deleteForward\" commands cannot get rid of it\n\t\t\t\t\t\t// so calling Model#deleteContent here manually.\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tconst deepestEmptyRangeAncestor = getDeepestEmptyElementAncestor( schema, range.start.parent as Element );\n\n\t\t\t\t\t\t\tmodel.deleteContent( model.createSelection( deepestEmptyRangeAncestor, 'on' ), {\n\t\t\t\t\t\t\t\tdoNotAutoparagraph: true\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If some content was deleted, don't let the handler from the Widget plugin kick in.\n\t\t\t// If nothing was deleted, then the default handler will have nothing to do anyway.\n\t\t\tdomEventData.preventDefault();\n\t\t\tevt.stop();\n\t\t}, { context: isWidget } );\n\t}\n\n\t/**\n\t * Attaches the {@link module:engine/model/model~Model#event:insertContent} event listener that, for instance, allows the user to paste\n\t * content near a widget when the fake caret is first activated using the arrow keys.\n\t *\n\t * The content is inserted according to the `widget-type-around` selection attribute (see {@link #_handleArrowKeyPress}).\n\t */\n\tprivate _enableInsertContentIntegration() {\n\t\tconst editor = this.editor;\n\t\tconst model = this.editor.model;\n\t\tconst documentSelection = model.document.selection;\n\n\t\tthis._listenToIfEnabled<ModelInsertContentEvent>( editor.model, 'insertContent', ( evt, [ content, selectable ] ) => {\n\t\t\tif ( selectable && !( selectable as any ).is( 'documentSelection' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( documentSelection );\n\n\t\t\tif ( !typeAroundFakeCaretPosition ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tevt.stop();\n\n\t\t\treturn model.change( writer => {\n\t\t\t\tconst selectedElement = documentSelection.getSelectedElement();\n\t\t\t\tconst position = model.createPositionAt( selectedElement!, typeAroundFakeCaretPosition );\n\t\t\t\tconst selection = writer.createSelection( position );\n\n\t\t\t\tconst result = model.insertContent( content, selection );\n\n\t\t\t\twriter.setSelection( selection );\n\n\t\t\t\treturn result;\n\t\t\t} );\n\t\t}, { priority: 'high' } );\n\t}\n\n\t/**\n\t * Attaches the {@link module:engine/model/model~Model#event:insertObject} event listener that modifies the\n\t * `options.findOptimalPosition`parameter to position of fake caret in relation to selected element\n\t * to reflect user's intent of desired insertion position.\n\t *\n\t * The object is inserted according to the `widget-type-around` selection attribute (see {@link #_handleArrowKeyPress}).\n\t */\n\tprivate _enableInsertObjectIntegration() {\n\t\tconst editor = this.editor;\n\t\tconst model = this.editor.model;\n\t\tconst documentSelection = model.document.selection;\n\n\t\tthis._listenToIfEnabled<ModelInsertObjectEvent>( editor.model, 'insertObject', ( evt, args ) => {\n\t\t\tconst [ , selectable, options = {} ] = args;\n\n\t\t\tif ( selectable && !( selectable as any ).is( 'documentSelection' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( documentSelection );\n\n\t\t\tif ( !typeAroundFakeCaretPosition ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\toptions.findOptimalPosition = typeAroundFakeCaretPosition;\n\t\t\targs[ 3 ] = options;\n\t\t}, { priority: 'high' } );\n\t}\n\n\t/**\n\t * Attaches the {@link module:engine/model/model~Model#event:deleteContent} event listener to block the event when the fake\n\t * caret is active.\n\t *\n\t * This is required for cases that trigger {@link module:engine/model/model~Model#deleteContent `model.deleteContent()`}\n\t * before calling {@link module:engine/model/model~Model#insertContent `model.insertContent()`} like, for instance,\n\t * plain text pasting.\n\t */\n\tprivate _enableDeleteContentIntegration() {\n\t\tconst editor = this.editor;\n\t\tconst model = this.editor.model;\n\t\tconst documentSelection = model.document.selection;\n\n\t\tthis._listenToIfEnabled<ModelDeleteContentEvent>( editor.model, 'deleteContent', ( evt, [ selection ] ) => {\n\t\t\tif ( selection && !selection.is( 'documentSelection' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( documentSelection );\n\n\t\t\t// Disable removing the selection content while pasting plain text.\n\t\t\tif ( typeAroundFakeCaretPosition ) {\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { priority: 'high' } );\n\t}\n}\n\n/**\n * Injects the type around UI into a view widget instance.\n */\nfunction injectUIIntoWidget(\n\tviewWriter: DowncastWriter,\n\tbuttonTitles: { before: string; after: string },\n\twidgetViewElement: ViewElement ) {\n\tconst typeAroundWrapper = viewWriter.createUIElement( 'div', {\n\t\tclass: 'ck ck-reset_all ck-widget__type-around'\n\t}, function( domDocument ) {\n\t\tconst wrapperDomElement = this.toDomElement( domDocument );\n\n\t\tinjectButtons( wrapperDomElement, buttonTitles );\n\t\tinjectFakeCaret( wrapperDomElement );\n\n\t\treturn wrapperDomElement;\n\t} );\n\n\t// Inject the type around wrapper into the widget's wrapper.\n\tviewWriter.insert( viewWriter.createPositionAt( widgetViewElement, 'end' ), typeAroundWrapper );\n}\n\n/**\n * FYI: Not using the IconView class because each instance would need to be destroyed to avoid memory leaks\n * and it's pretty hard to figure out when a view (widget) is gone for good so it's cheaper to use raw\n * <svg> here.\n */\nfunction injectButtons( wrapperDomElement: HTMLElement, buttonTitles: { before: string; after: string } ) {\n\tfor ( const position of POSSIBLE_INSERTION_POSITIONS ) {\n\t\tconst buttonTemplate = new Template( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-widget__type-around__button',\n\t\t\t\t\t`ck-widget__type-around__button_${ position }`\n\t\t\t\t],\n\t\t\t\ttitle: buttonTitles[ position ],\n\t\t\t\t'aria-hidden': 'true'\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\twrapperDomElement.ownerDocument.importNode( RETURN_ARROW_ICON_ELEMENT, true )\n\t\t\t]\n\t\t} );\n\n\t\twrapperDomElement.appendChild( buttonTemplate.render() );\n\t}\n}\n\nfunction injectFakeCaret( wrapperDomElement: HTMLElement ) {\n\tconst caretTemplate = new Template( {\n\t\ttag: 'div',\n\t\tattributes: {\n\t\t\tclass: [\n\t\t\t\t'ck',\n\t\t\t\t'ck-widget__type-around__fake-caret'\n\t\t\t]\n\t\t}\n\t} );\n\n\twrapperDomElement.appendChild( caretTemplate.render() );\n}\n\n/**\n * Returns the ancestor of an element closest to the root which is empty. For instance,\n * for `<baz>`:\n *\n * ```\n * <foo>abc<bar><baz></baz></bar></foo>\n * ```\n *\n * it returns `<bar>`.\n */\nfunction getDeepestEmptyElementAncestor( schema: Schema, element: Element ) {\n\tlet deepestEmptyAncestor = element;\n\n\tfor ( const ancestor of element.getAncestors( { parentFirst: true } ) ) {\n\t\tif ( ( ancestor as any ).childCount > 1 || schema.isLimit( ancestor ) ) {\n\t\t\tbreak;\n\t\t}\n\n\t\tdeepestEmptyAncestor = ancestor as Element;\n\t}\n\n\treturn deepestEmptyAncestor;\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/verticalnavigation\n */\n\nimport {\n\tkeyCodes,\n\tRect,\n\ttype GetCallback\n} from '@ckeditor/ckeditor5-utils';\n\nimport type {\n\tDocumentSelection,\n\tEditingController,\n\tModel,\n\tPosition,\n\tRange,\n\tSchema,\n\tSelection,\n\tViewDocumentArrowKeyEvent\n} from '@ckeditor/ckeditor5-engine';\n\n/**\n * Returns 'keydown' handler for up/down arrow keys that modifies the caret movement if it's in a text line next to an object.\n *\n * @param editing The editing controller.\n */\nexport default function verticalNavigationHandler(\n\tediting: EditingController\n): GetCallback<ViewDocumentArrowKeyEvent> {\n\tconst model = editing.model;\n\n\treturn ( evt, data ) => {\n\t\tconst arrowUpPressed = data.keyCode == keyCodes.arrowup;\n\t\tconst arrowDownPressed = data.keyCode == keyCodes.arrowdown;\n\t\tconst expandSelection = data.shiftKey;\n\t\tconst selection = model.document.selection;\n\n\t\tif ( !arrowUpPressed && !arrowDownPressed ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst isForward = arrowDownPressed;\n\n\t\t// Navigation is in the opposite direction than the selection direction so this is shrinking of the selection.\n\t\t// Selection for sure will not approach any object.\n\t\tif ( expandSelection && selectionWillShrink( selection, isForward ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Find a range between selection and closest limit element.\n\t\tconst range = findTextRangeFromSelection( editing, selection, isForward );\n\n\t\t// There is no selection position inside the limit element.\n\t\tif ( !range ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If already at the edge of a limit element.\n\t\tif ( range.isCollapsed ) {\n\t\t\t// A collapsed selection at limit edge - nothing more to do.\n\t\t\tif ( selection.isCollapsed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// A non collapsed selection is at the limit edge while expanding the selection - let others do their stuff.\n\t\t\telse if ( expandSelection ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// If the range is a single line (there is no word wrapping) then move the selection to the position closest to the limit element.\n\t\t//\n\t\t// We can't move the selection directly to the isObject element (eg. table cell) because of dual position at the end/beginning\n\t\t// of wrapped line (it's at the same time at the end of one line and at the start of the next line).\n\t\tif ( range.isCollapsed || isSingleLineRange( editing, range, isForward ) ) {\n\t\t\tmodel.change( writer => {\n\t\t\t\tconst newPosition = isForward ? range.end : range.start;\n\n\t\t\t\tif ( expandSelection ) {\n\t\t\t\t\tconst newSelection = model.createSelection( selection.anchor );\n\t\t\t\t\tnewSelection.setFocus( newPosition );\n\n\t\t\t\t\twriter.setSelection( newSelection );\n\t\t\t\t} else {\n\t\t\t\t\twriter.setSelection( newPosition );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tevt.stop();\n\t\t\tdata.preventDefault();\n\t\t\tdata.stopPropagation();\n\t\t}\n\t};\n}\n\n/**\n * Finds the range between selection and closest limit element (in the direction of navigation).\n * The position next to limit element is adjusted to the closest allowed `$text` position.\n *\n * Returns `null` if, according to the schema, the resulting range cannot contain a `$text` element.\n *\n * @param editing The editing controller.\n * @param selection The current selection.\n * @param isForward The expected navigation direction.\n */\nfunction findTextRangeFromSelection( editing: EditingController, selection: Selection | DocumentSelection, isForward: boolean ) {\n\tconst model = editing.model;\n\n\tif ( isForward ) {\n\t\tconst startPosition = selection.isCollapsed ? selection.focus! : selection.getLastPosition()!;\n\t\tconst endPosition = getNearestNonInlineLimit( model, startPosition, 'forward' );\n\n\t\t// There is no limit element, browser should handle this.\n\t\tif ( !endPosition ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst range = model.createRange( startPosition, endPosition );\n\t\tconst lastRangePosition = getNearestTextPosition( model.schema, range, 'backward' );\n\n\t\tif ( lastRangePosition ) {\n\t\t\treturn model.createRange( startPosition, lastRangePosition );\n\t\t}\n\n\t\treturn null;\n\t} else {\n\t\tconst endPosition = selection.isCollapsed ? selection.focus! : selection.getFirstPosition()!;\n\t\tconst startPosition = getNearestNonInlineLimit( model, endPosition, 'backward' );\n\n\t\t// There is no limit element, browser should handle this.\n\t\tif ( !startPosition ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst range = model.createRange( startPosition, endPosition );\n\t\tconst firstRangePosition = getNearestTextPosition( model.schema, range, 'forward' );\n\n\t\tif ( firstRangePosition ) {\n\t\t\treturn model.createRange( firstRangePosition, endPosition );\n\t\t}\n\n\t\treturn null;\n\t}\n}\n\n/**\n * Finds the limit element position that is closest to startPosition.\n *\n * @param direction Search direction.\n */\nfunction getNearestNonInlineLimit( model: Model, startPosition: Position, direction: 'forward' | 'backward' ) {\n\tconst schema = model.schema;\n\tconst range = model.createRangeIn( startPosition.root );\n\n\tconst walkerValueType = direction == 'forward' ? 'elementStart' : 'elementEnd';\n\n\tfor ( const { previousPosition, item, type } of range.getWalker( { startPosition, direction } ) ) {\n\t\tif ( schema.isLimit( item ) && !schema.isInline( item ) ) {\n\t\t\treturn previousPosition;\n\t\t}\n\n\t\t// Stop looking for isLimit element if the next element is a block element (it is for sure not single line).\n\t\tif ( type == walkerValueType && schema.isBlock( item ) ) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\treturn null;\n}\n\n/**\n * Basing on the provided range, finds the first or last (depending on `direction`) position inside the range\n * that can contain `$text` (according to schema).\n *\n * @param schema The schema.\n * @param range The range to find the position in.\n * @param direction Search direction.\n * @returns The nearest selection position.\n *\n */\nfunction getNearestTextPosition( schema: Schema, range: Range, direction: 'forward' | 'backward' ) {\n\tconst position = direction == 'backward' ? range.end : range.start;\n\n\tif ( schema.checkChild( position, '$text' ) ) {\n\t\treturn position;\n\t}\n\n\tfor ( const { nextPosition } of range.getWalker( { direction } ) ) {\n\t\tif ( schema.checkChild( nextPosition, '$text' ) ) {\n\t\t\treturn nextPosition;\n\t\t}\n\t}\n\n\treturn null;\n}\n\n/**\n * Checks if the DOM range corresponding to the provided model range renders as a single line by analyzing DOMRects\n * (verifying if they visually wrap content to the next line).\n *\n * @param editing The editing controller.\n * @param modelRange The current table cell content range.\n * @param isForward The expected navigation direction.\n */\nfunction isSingleLineRange( editing: EditingController, modelRange: Range, isForward: boolean ) {\n\tconst model = editing.model;\n\tconst domConverter = editing.view.domConverter;\n\n\t// Wrapped lines contain exactly the same position at the end of current line\n\t// and at the beginning of next line. That position's client rect is at the end\n\t// of current line. In case of caret at first position of the last line that 'dual'\n\t// position would be detected as it's not the last line.\n\tif ( isForward ) {\n\t\tconst probe = model.createSelection( modelRange.start );\n\n\t\tmodel.modifySelection( probe );\n\n\t\t// If the new position is at the end of the container then we can't use this position\n\t\t// because it would provide incorrect result for eg caption of image and selection\n\t\t// just before end of it. Also in this case there is no \"dual\" position.\n\t\tif ( !probe.focus!.isAtEnd && !modelRange.start.isEqual( probe.focus! ) ) {\n\t\t\tmodelRange = model.createRange( probe.focus!, modelRange.end );\n\t\t}\n\t}\n\n\tconst viewRange = editing.mapper.toViewRange( modelRange );\n\tconst domRange = domConverter.viewRangeToDom( viewRange );\n\tconst rects = Rect.getDomRangeRects( domRange );\n\n\tlet boundaryVerticalPosition;\n\n\tfor ( const rect of rects ) {\n\t\tif ( boundaryVerticalPosition === undefined ) {\n\t\t\tboundaryVerticalPosition = Math.round( rect.bottom );\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Let's check if this rect is in new line.\n\t\tif ( Math.round( rect.top ) >= boundaryVerticalPosition ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tboundaryVerticalPosition = Math.max( boundaryVerticalPosition, Math.round( rect.bottom ) );\n\t}\n\n\treturn true;\n}\n\nfunction selectionWillShrink( selection: DocumentSelection, isForward: boolean ) {\n\treturn !selection.isCollapsed && selection.isBackward == isForward;\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/widget\n */\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\n\nimport {\n\tMouseObserver,\n\tTreeWalker,\n\ttype DomEventData,\n\ttype DowncastSelectionEvent,\n\ttype DowncastWriter,\n\ttype Element,\n\ttype Node,\n\ttype ViewDocumentArrowKeyEvent,\n\ttype ViewDocumentMouseDownEvent,\n\ttype ViewElement,\n\ttype Schema,\n\ttype Position,\n\ttype EditingView,\n\ttype ViewDocumentTabEvent,\n\ttype ViewDocumentKeyDownEvent\n} from '@ckeditor/ckeditor5-engine';\n\nimport { Delete, type ViewDocumentDeleteEvent } from '@ckeditor/ckeditor5-typing';\n\nimport {\n\tenv,\n\tkeyCodes,\n\tgetLocalizedArrowKeyCodeDirection,\n\tgetRangeFromMouseEvent,\n\ttype EventInfo,\n\ttype KeystrokeInfo\n} from '@ckeditor/ckeditor5-utils';\n\nimport WidgetTypeAround from './widgettypearound/widgettypearound.js';\nimport verticalNavigationHandler from './verticalnavigation.js';\nimport { getLabel, isWidget, WIDGET_SELECTED_CLASS_NAME } from './utils.js';\n\nimport '../theme/widget.css';\n\n/**\n * The widget plugin. It enables base support for widgets.\n *\n * See {@glink api/widget package page} for more details and documentation.\n *\n * This plugin enables multiple behaviors required by widgets:\n *\n * * The model to view selection converter for the editing pipeline (it handles widget custom selection rendering).\n * If a converted selection wraps around a widget element, that selection is marked as\n * {@link module:engine/view/selection~Selection#isFake fake}. Additionally, the `ck-widget_selected` CSS class\n * is added to indicate that widget has been selected.\n * * The mouse and keyboard events handling on and around widget elements.\n */\nexport default class Widget extends Plugin {\n\t/**\n\t * Holds previously selected widgets.\n\t */\n\tprivate _previouslySelected = new Set<ViewElement>();\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Widget' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ WidgetTypeAround, Delete ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst view = editor.editing.view;\n\t\tconst viewDocument = view.document;\n\t\tconst t = editor.t;\n\n\t\t// Model to view selection converter.\n\t\t// Converts selection placed over widget element to fake selection.\n\t\t//\n\t\t// By default, the selection is downcasted by the engine to surround the attribute element, even though its only\n\t\t// child is an inline widget. A similar thing also happens when a collapsed marker is rendered as a UI element\n\t\t// next to an inline widget: the view selection contains both the widget and the marker.\n\t\t//\n\t\t// This prevents creating a correct fake selection when this inline widget is selected. Normalize the selection\n\t\t// in these cases based on the model:\n\t\t//\n\t\t//\t\t[<attributeElement><inlineWidget /></attributeElement>] -> <attributeElement>[<inlineWidget />]</attributeElement>\n\t\t//\t\t[<uiElement></uiElement><inlineWidget />] -> <uiElement></uiElement>[<inlineWidget />]\n\t\t//\n\t\t// Thanks to this:\n\t\t//\n\t\t// * fake selection can be set correctly,\n\t\t// * any logic depending on (View)Selection#getSelectedElement() also works OK.\n\t\t//\n\t\t// See https://github.com/ckeditor/ckeditor5/issues/9524.\n\t\tthis.editor.editing.downcastDispatcher.on<DowncastSelectionEvent>( 'selection', ( evt, data, conversionApi ) => {\n\t\t\tconst viewWriter = conversionApi.writer;\n\t\t\tconst modelSelection = data.selection;\n\n\t\t\t// The collapsed selection can't contain any widget.\n\t\t\tif ( modelSelection.isCollapsed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst selectedModelElement = modelSelection.getSelectedElement();\n\n\t\t\tif ( !selectedModelElement ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst selectedViewElement = editor.editing.mapper.toViewElement( selectedModelElement )!;\n\n\t\t\tif ( !isWidget( selectedViewElement ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( !conversionApi.consumable.consume( modelSelection, 'selection' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tviewWriter.setSelection( viewWriter.createRangeOn( selectedViewElement ), {\n\t\t\t\tfake: true,\n\t\t\t\tlabel: getLabel( selectedViewElement )\n\t\t\t} );\n\t\t} );\n\n\t\t// Mark all widgets inside the selection with the css class.\n\t\t// This handler is registered at the 'low' priority so it's triggered after the real selection conversion.\n\t\tthis.editor.editing.downcastDispatcher.on<DowncastSelectionEvent>( 'selection', ( evt, data, conversionApi ) => {\n\t\t\t// Remove selected class from previously selected widgets.\n\t\t\tthis._clearPreviouslySelectedWidgets( conversionApi.writer );\n\n\t\t\tconst viewWriter = conversionApi.writer;\n\t\t\tconst viewSelection = viewWriter.document.selection;\n\n\t\t\tlet lastMarked = null;\n\n\t\t\tfor ( const range of viewSelection.getRanges() ) {\n\t\t\t\t// Note: There could be multiple selected widgets in a range but no fake selection.\n\t\t\t\t// All of them must be marked as selected, for instance [<widget></widget><widget></widget>]\n\t\t\t\tfor ( const value of range ) {\n\t\t\t\t\tconst node = value.item as ViewElement;\n\t\t\t\t\t// Do not mark nested widgets in selected one. See: #4594\n\t\t\t\t\tif ( isWidget( node ) && !isChild( node, lastMarked ) ) {\n\t\t\t\t\t\tviewWriter.addClass( WIDGET_SELECTED_CLASS_NAME, node );\n\t\t\t\t\t\tthis._previouslySelected.add( node );\n\t\t\t\t\t\tlastMarked = node;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}, { priority: 'low' } );\n\n\t\t// If mouse down is pressed on widget - create selection over whole widget.\n\t\tview.addObserver( MouseObserver );\n\t\tthis.listenTo<ViewDocumentMouseDownEvent>( viewDocument, 'mousedown', ( ...args ) => this._onMousedown( ...args ) );\n\n\t\t// There are two keydown listeners working on different priorities. This allows other\n\t\t// features such as WidgetTypeAround or TableKeyboard to attach their listeners in between\n\t\t// and customize the behavior even further in different content/selection scenarios.\n\t\t//\n\t\t// * The first listener handles changing the selection on arrow key press\n\t\t// if the widget is selected or if the selection is next to a widget and the widget\n\t\t// should become selected upon the arrow key press.\n\t\t//\n\t\t// * The second (late) listener makes sure the default browser action on arrow key press is\n\t\t// prevented when a widget is selected. This prevents the selection from being moved\n\t\t// from a fake selection container.\n\t\tthis.listenTo<ViewDocumentArrowKeyEvent>( viewDocument, 'arrowKey', ( ...args ) => {\n\t\t\tthis._handleSelectionChangeOnArrowKeyPress( ...args );\n\t\t}, { context: [ isWidget, '$text' ] } );\n\n\t\tthis.listenTo<ViewDocumentArrowKeyEvent>( viewDocument, 'arrowKey', ( ...args ) => {\n\t\t\tthis._preventDefaultOnArrowKeyPress( ...args );\n\t\t}, { context: '$root' } );\n\n\t\tthis.listenTo<ViewDocumentArrowKeyEvent>(\n\t\t\tviewDocument,\n\t\t\t'arrowKey',\n\t\t\tverticalNavigationHandler( this.editor.editing ),\n\t\t\t{ context: '$text' }\n\t\t);\n\n\t\t// Handle custom delete behaviour.\n\t\tthis.listenTo<ViewDocumentDeleteEvent>( viewDocument, 'delete', ( evt, data ) => {\n\t\t\tif ( this._handleDelete( data.direction == 'forward' ) ) {\n\t\t\t\tdata.preventDefault();\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { context: '$root' } );\n\n\t\t// Handle Tab key while a widget is selected.\n\t\tthis.listenTo<ViewDocumentTabEvent>( viewDocument, 'tab', ( evt, data ) => {\n\t\t\t// This event could be triggered from inside the widget, but we are interested\n\t\t\t// only when the widget is selected itself.\n\t\t\tif ( evt.eventPhase != 'atTarget' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( data.shiftKey ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this._selectFirstNestedEditable() ) {\n\t\t\t\tdata.preventDefault();\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { context: isWidget, priority: 'low' } );\n\n\t\t// Handle Shift+Tab key while caret inside a widget editable.\n\t\tthis.listenTo<ViewDocumentTabEvent>( viewDocument, 'tab', ( evt, data ) => {\n\t\t\tif ( !data.shiftKey ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this._selectAncestorWidget() ) {\n\t\t\t\tdata.preventDefault();\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { priority: 'low' } );\n\n\t\t// Handle Esc key while inside a nested editable.\n\t\tthis.listenTo<ViewDocumentKeyDownEvent>( viewDocument, 'keydown', ( evt, data ) => {\n\t\t\tif ( data.keystroke != keyCodes.esc ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this._selectAncestorWidget() ) {\n\t\t\t\tdata.preventDefault();\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { priority: 'low' } );\n\n\t\t// Add the information about the keystrokes to the accessibility database.\n\t\teditor.accessibility.addKeystrokeInfoGroup( {\n\t\t\tid: 'widget',\n\t\t\tlabel: t( 'Keystrokes that can be used when a widget is selected (for example: image, table, etc.)' ),\n\t\t\tkeystrokes: [\n\t\t\t\t{\n\t\t\t\t\tlabel: t( 'Move focus from an editable area back to the parent widget' ),\n\t\t\t\t\tkeystroke: 'Esc'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: t( 'Insert a new paragraph directly after a widget' ),\n\t\t\t\t\tkeystroke: 'Enter'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: t( 'Insert a new paragraph directly before a widget' ),\n\t\t\t\t\tkeystroke: 'Shift+Enter'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: t( 'Move the caret to allow typing directly before a widget' ),\n\t\t\t\t\tkeystroke: [ [ 'arrowup' ], [ 'arrowleft' ] ]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: t( 'Move the caret to allow typing directly after a widget' ),\n\t\t\t\t\tkeystroke: [ [ 'arrowdown' ], [ 'arrowright' ] ]\n\t\t\t\t}\n\t\t\t]\n\t\t} );\n\t}\n\n\t/**\n\t * Handles {@link module:engine/view/document~Document#event:mousedown mousedown} events on widget elements.\n\t */\n\tprivate _onMousedown( eventInfo: EventInfo, domEventData: DomEventData<MouseEvent> ) {\n\t\tconst editor = this.editor;\n\t\tconst view = editor.editing.view;\n\t\tconst viewDocument = view.document;\n\t\tlet element: ViewElement | null = domEventData.target;\n\n\t\t// If triple click should select entire paragraph.\n\t\tif ( domEventData.domEvent.detail >= 3 ) {\n\t\t\tif ( this._selectBlockContent( element ) ) {\n\t\t\t\tdomEventData.preventDefault();\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// If target is not a widget element - check if one of the ancestors is.\n\t\tif ( !isWidget( element ) ) {\n\t\t\tconst editableOrWidgetElement = findClosestEditableOrWidgetAncestor( element );\n\n\t\t\tif ( !editableOrWidgetElement ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isWidget( editableOrWidgetElement ) ) {\n\t\t\t\telement = editableOrWidgetElement;\n\t\t\t} else {\n\t\t\t\t// Pick view range from the point where the mouse was clicked.\n\t\t\t\tconst clickTargetFromPoint = getElementFromMouseEvent( view, domEventData );\n\n\t\t\t\tif ( clickTargetFromPoint && isWidget( clickTargetFromPoint ) ) {\n\t\t\t\t\telement = clickTargetFromPoint;\n\t\t\t\t} else {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// On Android selection would jump to the first table cell, on other devices\n\t\t// we can't block it (and don't need to) because of drag and drop support.\n\t\tif ( env.isAndroid ) {\n\t\t\tdomEventData.preventDefault();\n\t\t}\n\n\t\t// Focus editor if is not focused already.\n\t\tif ( !viewDocument.isFocused ) {\n\t\t\tview.focus();\n\t\t}\n\n\t\t// Create model selection over widget.\n\t\tconst modelElement = editor.editing.mapper.toModelElement( element );\n\n\t\tthis._setSelectionOverElement( modelElement! );\n\t}\n\n\t/**\n\t * Selects entire block content, e.g. on triple click it selects entire paragraph.\n\t */\n\tprivate _selectBlockContent( element: ViewElement ): boolean {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst mapper = editor.editing.mapper;\n\t\tconst schema = model.schema;\n\n\t\tconst viewElement = mapper.findMappedViewAncestor( this.editor.editing.view.createPositionAt( element, 0 ) );\n\t\tconst modelElement = findTextBlockAncestor( mapper.toModelElement( viewElement )!, model.schema );\n\n\t\tif ( !modelElement ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tmodel.change( writer => {\n\t\t\tconst nextTextBlock = !schema.isLimit( modelElement ) ?\n\t\t\t\tfindNextTextBlock( writer.createPositionAfter( modelElement ), schema ) :\n\t\t\t\tnull;\n\n\t\t\tconst start = writer.createPositionAt( modelElement, 0 );\n\t\t\tconst end = nextTextBlock ?\n\t\t\t\twriter.createPositionAt( nextTextBlock, 0 ) :\n\t\t\t\twriter.createPositionAt( modelElement, 'end' );\n\n\t\t\twriter.setSelection( writer.createRange( start, end ) );\n\t\t} );\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Handles {@link module:engine/view/document~Document#event:keydown keydown} events and changes\n\t * the model selection when:\n\t *\n\t * * arrow key is pressed when the widget is selected,\n\t * * the selection is next to a widget and the widget should become selected upon the arrow key press.\n\t *\n\t * See {@link #_preventDefaultOnArrowKeyPress}.\n\t */\n\tprivate _handleSelectionChangeOnArrowKeyPress( eventInfo: EventInfo, domEventData: DomEventData & KeystrokeInfo ) {\n\t\tconst keyCode = domEventData.keyCode;\n\n\t\tconst model = this.editor.model;\n\t\tconst schema = model.schema;\n\t\tconst modelSelection = model.document.selection;\n\t\tconst objectElement = modelSelection.getSelectedElement();\n\t\tconst direction = getLocalizedArrowKeyCodeDirection( keyCode, this.editor.locale.contentLanguageDirection );\n\t\tconst isForward = direction == 'down' || direction == 'right';\n\t\tconst isVerticalNavigation = direction == 'up' || direction == 'down';\n\n\t\t// If object element is selected.\n\t\tif ( objectElement && schema.isObject( objectElement ) ) {\n\t\t\tconst position = isForward ? modelSelection.getLastPosition() : modelSelection.getFirstPosition();\n\t\t\tconst newRange = schema.getNearestSelectionRange( position!, isForward ? 'forward' : 'backward' );\n\n\t\t\tif ( newRange ) {\n\t\t\t\tmodel.change( writer => {\n\t\t\t\t\twriter.setSelection( newRange );\n\t\t\t\t} );\n\n\t\t\t\tdomEventData.preventDefault();\n\t\t\t\teventInfo.stop();\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Handle collapsing of the selection when there is any widget on the edge of selection.\n\t\t// This is needed because browsers have problems with collapsing such selection.\n\t\tif ( !modelSelection.isCollapsed && !domEventData.shiftKey ) {\n\t\t\tconst firstPosition = modelSelection.getFirstPosition();\n\t\t\tconst lastPosition = modelSelection.getLastPosition();\n\n\t\t\tconst firstSelectedNode = firstPosition!.nodeAfter;\n\t\t\tconst lastSelectedNode = lastPosition!.nodeBefore;\n\n\t\t\tif ( firstSelectedNode && schema.isObject( firstSelectedNode ) || lastSelectedNode && schema.isObject( lastSelectedNode ) ) {\n\t\t\t\tmodel.change( writer => {\n\t\t\t\t\twriter.setSelection( isForward ? lastPosition : firstPosition );\n\t\t\t\t} );\n\n\t\t\t\tdomEventData.preventDefault();\n\t\t\t\teventInfo.stop();\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Return if not collapsed.\n\t\tif ( !modelSelection.isCollapsed ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If selection is next to object element.\n\n\t\tconst objectElementNextToSelection = this._getObjectElementNextToSelection( isForward );\n\n\t\tif ( objectElementNextToSelection && schema.isObject( objectElementNextToSelection ) ) {\n\t\t\t// Do not select an inline widget while handling up/down arrow.\n\t\t\tif ( schema.isInline( objectElementNextToSelection ) && isVerticalNavigation ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._setSelectionOverElement( objectElementNextToSelection );\n\n\t\t\tdomEventData.preventDefault();\n\t\t\teventInfo.stop();\n\t\t}\n\t}\n\n\t/**\n\t * Handles {@link module:engine/view/document~Document#event:keydown keydown} events and prevents\n\t * the default browser behavior to make sure the fake selection is not being moved from a fake selection\n\t * container.\n\t *\n\t * See {@link #_handleSelectionChangeOnArrowKeyPress}.\n\t */\n\tprivate _preventDefaultOnArrowKeyPress( eventInfo: EventInfo, domEventData: DomEventData ) {\n\t\tconst model = this.editor.model;\n\t\tconst schema = model.schema;\n\t\tconst objectElement = model.document.selection.getSelectedElement();\n\n\t\t// If object element is selected.\n\t\tif ( objectElement && schema.isObject( objectElement ) ) {\n\t\t\tdomEventData.preventDefault();\n\t\t\teventInfo.stop();\n\t\t}\n\t}\n\n\t/**\n\t * Handles delete keys: backspace and delete.\n\t *\n\t * @param isForward Set to true if delete was performed in forward direction.\n\t * @returns Returns `true` if keys were handled correctly.\n\t */\n\tprivate _handleDelete( isForward: boolean ) {\n\t\tconst modelDocument = this.editor.model.document;\n\t\tconst modelSelection = modelDocument.selection;\n\n\t\t// Do nothing when the read only mode is enabled.\n\t\tif ( !this.editor.model.canEditAt( modelSelection ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Do nothing on non-collapsed selection.\n\t\tif ( !modelSelection.isCollapsed ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst objectElement = this._getObjectElementNextToSelection( isForward );\n\n\t\tif ( objectElement ) {\n\t\t\tthis.editor.model.change( writer => {\n\t\t\t\tlet previousNode = modelSelection.anchor!.parent;\n\n\t\t\t\t// Remove previous element if empty.\n\t\t\t\twhile ( previousNode.isEmpty ) {\n\t\t\t\t\tconst nodeToRemove = previousNode;\n\t\t\t\t\tpreviousNode = nodeToRemove.parent!;\n\n\t\t\t\t\twriter.remove( nodeToRemove as Element );\n\t\t\t\t}\n\n\t\t\t\tthis._setSelectionOverElement( objectElement );\n\t\t\t} );\n\n\t\t\treturn true;\n\t\t}\n\t}\n\n\t/**\n\t * Sets {@link module:engine/model/selection~Selection document's selection} over given element.\n\t *\n\t * @internal\n\t */\n\tpublic _setSelectionOverElement( element: Node ): void {\n\t\tthis.editor.model.change( writer => {\n\t\t\twriter.setSelection( writer.createRangeOn( element ) );\n\t\t} );\n\t}\n\n\t/**\n\t * Checks if {@link module:engine/model/element~Element element} placed next to the current\n\t * {@link module:engine/model/selection~Selection model selection} exists and is marked in\n\t * {@link module:engine/model/schema~Schema schema} as `object`.\n\t *\n\t * @internal\n\t * @param forward Direction of checking.\n\t */\n\tpublic _getObjectElementNextToSelection( forward: boolean ): Element | null {\n\t\tconst model = this.editor.model;\n\t\tconst schema = model.schema;\n\t\tconst modelSelection = model.document.selection;\n\n\t\t// Clone current selection to use it as a probe. We must leave default selection as it is so it can return\n\t\t// to its current state after undo.\n\t\tconst probe = model.createSelection( modelSelection );\n\t\tmodel.modifySelection( probe, { direction: forward ? 'forward' : 'backward' } );\n\n\t\t// The selection didn't change so there is nothing there.\n\t\tif ( probe.isEqual( modelSelection ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst objectElement = forward ? probe.focus!.nodeBefore : probe.focus!.nodeAfter;\n\n\t\tif ( !!objectElement && schema.isObject( objectElement ) ) {\n\t\t\treturn objectElement as Element;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Removes CSS class from previously selected widgets.\n\t */\n\tprivate _clearPreviouslySelectedWidgets( writer: DowncastWriter ) {\n\t\tfor ( const widget of this._previouslySelected ) {\n\t\t\twriter.removeClass( WIDGET_SELECTED_CLASS_NAME, widget );\n\t\t}\n\n\t\tthis._previouslySelected.clear();\n\t}\n\n\t/**\n\t * Moves the document selection into the first nested editable.\n\t */\n\tprivate _selectFirstNestedEditable(): boolean {\n\t\tconst editor = this.editor;\n\t\tconst view = this.editor.editing.view;\n\t\tconst viewDocument = view.document;\n\n\t\tfor ( const item of viewDocument.selection.getFirstRange()!.getItems() ) {\n\t\t\tif ( item.is( 'editableElement' ) ) {\n\t\t\t\tconst modelElement = editor.editing.mapper.toModelElement( item );\n\n\t\t\t\t/* istanbul ignore next -- @preserve */\n\t\t\t\tif ( !modelElement ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst position = editor.model.createPositionAt( modelElement, 0 );\n\t\t\t\tconst newRange = editor.model.schema.getNearestSelectionRange( position, 'forward' );\n\n\t\t\t\teditor.model.change( writer => {\n\t\t\t\t\twriter.setSelection( newRange );\n\t\t\t\t} );\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Updates the document selection so that it selects first ancestor widget.\n\t */\n\tprivate _selectAncestorWidget(): boolean {\n\t\tconst editor = this.editor;\n\t\tconst mapper = editor.editing.mapper;\n\t\tconst selection = editor.editing.view.document.selection;\n\n\t\tconst positionParent = selection.getFirstPosition()!.parent;\n\n\t\tconst positionParentElement = positionParent.is( '$text' ) ?\n\t\t\tpositionParent.parent as ViewElement :\n\t\t\tpositionParent as ViewElement;\n\n\t\tconst viewElement = positionParentElement.findAncestor( isWidget );\n\n\t\tif ( !viewElement ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst modelElement = mapper.toModelElement( viewElement );\n\n\t\t/* istanbul ignore next -- @preserve */\n\t\tif ( !modelElement ) {\n\t\t\treturn false;\n\t\t}\n\n\t\teditor.model.change( writer => {\n\t\t\twriter.setSelection( modelElement, 'on' );\n\t\t} );\n\n\t\treturn true;\n\t}\n}\n\n/**\n * Finds the closest ancestor element that is either an editable element or a widget.\n *\n * @param element The element from which to start searching.\n * @returns The closest ancestor element that is either an editable element or a widget, or null if none is found.\n */\nfunction findClosestEditableOrWidgetAncestor( element: ViewElement ): ViewElement | null {\n\tlet currentElement: ViewElement | null = element;\n\n\twhile ( currentElement ) {\n\t\tif ( currentElement.is( 'editableElement' ) || isWidget( currentElement ) ) {\n\t\t\treturn currentElement;\n\t\t}\n\n\t\tcurrentElement = currentElement.parent as ViewElement | null;\n\t}\n\n\treturn null;\n}\n\n/**\n * Retrieves the ViewElement associated with a mouse event in the editing view.\n *\n * @param view The editing view.\n * @param domEventData The DOM event data containing the mouse event.\n * @returns The ViewElement associated with the mouse event, or null if not found.\n */\nfunction getElementFromMouseEvent( view: EditingView, domEventData: DomEventData<MouseEvent> ): ViewElement | null {\n\tconst domRange = getRangeFromMouseEvent( domEventData.domEvent );\n\n\tif ( !domRange ) {\n\t\treturn null;\n\t}\n\n\tconst viewRange = view.domConverter.domRangeToView( domRange );\n\n\tif ( !viewRange ) {\n\t\treturn null;\n\t}\n\n\tconst viewPosition = viewRange.start;\n\n\tif ( !viewPosition.parent ) {\n\t\treturn null;\n\t}\n\n\tlet viewNode = viewPosition.parent;\n\n\tif ( viewPosition.parent.is( 'editableElement' ) ) {\n\t\tif ( viewPosition.isAtEnd && viewPosition.nodeBefore ) {\n\t\t\t// Click after a widget tend to return position at the end of the editable element\n\t\t\t// so use the node before it if range is at the end of a parent.\n\t\t\tviewNode = viewPosition.nodeBefore as ViewElement;\n\t\t} else if ( viewPosition.isAtStart && viewPosition.nodeAfter ) {\n\t\t\t// Click before a widget tend to return position at the start of the editable element\n\t\t\t// so use the node after it if range is at the start of a parent.\n\t\t\t// See more: https://github.com/ckeditor/ckeditor5/issues/16992\n\t\t\tviewNode = viewPosition.nodeAfter as ViewElement;\n\t\t}\n\t}\n\n\tif ( viewNode.is( '$text' ) ) {\n\t\treturn viewNode.parent as ViewElement;\n\t}\n\n\treturn viewNode as ViewElement;\n}\n\n/**\n * Checks whether the specified `element` is a child of the `parent` element.\n *\n * @param element An element to check.\n * @param parent A parent for the element.\n */\nfunction isChild( element: ViewElement, parent: ViewElement | null ) {\n\tif ( !parent ) {\n\t\treturn false;\n\t}\n\n\treturn Array.from( element.getAncestors() ).includes( parent );\n}\n\n/**\n * Returns nearest text block ancestor.\n */\nfunction findTextBlockAncestor( modelElement: Element, schema: Schema ): Element | null {\n\tfor ( const element of modelElement.getAncestors( { includeSelf: true, parentFirst: true } ) ) {\n\t\tif ( schema.checkChild( element as Element, '$text' ) ) {\n\t\t\treturn element as Element;\n\t\t}\n\n\t\t// Do not go beyond nested editable.\n\t\tif ( schema.isLimit( element ) && !schema.isObject( element ) ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn null;\n}\n\n/**\n * Returns next text block where could put selection.\n */\nfunction findNextTextBlock( position: Position, schema: Schema ): Element | null {\n\tconst treeWalker = new TreeWalker( { startPosition: position } );\n\n\tfor ( const { item } of treeWalker ) {\n\t\tif ( schema.isLimit( item ) || !item.is( 'element' ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( schema.checkChild( item, '$text' ) ) {\n\t\t\treturn item;\n\t\t}\n\t}\n\n\treturn null;\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/widgettoolbarrepository\n */\n\nimport {\n\tPlugin,\n\ttype Editor,\n\ttype ToolbarConfigItem\n} from '@ckeditor/ckeditor5-core';\n\nimport type { ViewDocumentSelection, ViewElement } from '@ckeditor/ckeditor5-engine';\n\nimport {\n\tBalloonPanelView,\n\tContextualBalloon,\n\tToolbarView,\n\ttype BalloonToolbar,\n\ttype BalloonToolbarShowEvent,\n\ttype EditorUIUpdateEvent\n} from '@ckeditor/ckeditor5-ui';\n\nimport {\n\tCKEditorError,\n\tlogWarning,\n\ttype ObservableChangeEvent,\n\ttype RectSource\n} from '@ckeditor/ckeditor5-utils';\n\nimport { isWidget } from './utils.js';\n\n/**\n * Widget toolbar repository plugin. A central point for registering widget toolbars. This plugin handles the whole\n * toolbar rendering process and exposes a concise API.\n *\n * To add a toolbar for your widget use the {@link ~WidgetToolbarRepository#register `WidgetToolbarRepository#register()`} method.\n *\n * The following example comes from the {@link module:image/imagetoolbar~ImageToolbar} plugin:\n *\n * ```ts\n * class ImageToolbar extends Plugin {\n * \tstatic get requires() {\n * \t\treturn [ WidgetToolbarRepository ];\n * \t}\n *\n * \tafterInit() {\n * \t\tconst editor = this.editor;\n * \t\tconst widgetToolbarRepository = editor.plugins.get( WidgetToolbarRepository );\n *\n * \t\twidgetToolbarRepository.register( 'image', {\n * \t\t\titems: editor.config.get( 'image.toolbar' ),\n * \t\t\tgetRelatedElement: getClosestSelectedImageWidget\n * \t\t} );\n * \t}\n * }\n * ```\n */\nexport default class WidgetToolbarRepository extends Plugin {\n\t/**\n\t * A map of toolbar definitions.\n\t */\n\tprivate _toolbarDefinitions = new Map<string, WidgetRepositoryToolbarDefinition>();\n\n\tprivate _balloon!: ContextualBalloon;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ContextualBalloon ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'WidgetToolbarRepository' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\n\t\t// Disables the default balloon toolbar for all widgets.\n\t\tif ( editor.plugins.has( 'BalloonToolbar' ) ) {\n\t\t\tconst balloonToolbar: BalloonToolbar = editor.plugins.get( 'BalloonToolbar' );\n\n\t\t\tthis.listenTo<BalloonToolbarShowEvent>( balloonToolbar, 'show', evt => {\n\t\t\t\tif ( isWidgetSelected( editor.editing.view.document.selection ) ) {\n\t\t\t\t\tevt.stop();\n\t\t\t\t}\n\t\t\t}, { priority: 'high' } );\n\t\t}\n\n\t\tthis._balloon = this.editor.plugins.get( 'ContextualBalloon' );\n\n\t\tthis.on<ObservableChangeEvent>( 'change:isEnabled', () => {\n\t\t\tthis._updateToolbarsVisibility();\n\t\t} );\n\n\t\tthis.listenTo<EditorUIUpdateEvent>( editor.ui, 'update', () => {\n\t\t\tthis._updateToolbarsVisibility();\n\t\t} );\n\n\t\t// UI#update is not fired after focus is back in editor, we need to check if balloon panel should be visible.\n\t\tthis.listenTo<ObservableChangeEvent>( editor.ui.focusTracker, 'change:isFocused', () => {\n\t\t\tthis._updateToolbarsVisibility();\n\t\t}, { priority: 'low' } );\n\t}\n\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tfor ( const toolbarConfig of this._toolbarDefinitions.values() ) {\n\t\t\ttoolbarConfig.view.destroy();\n\t\t}\n\t}\n\n\t/**\n\t * Registers toolbar in the WidgetToolbarRepository. It renders it in the `ContextualBalloon` based on the value of the invoked\n\t * `getRelatedElement` function. Toolbar items are gathered from `items` array.\n\t * The balloon's CSS class is by default `ck-toolbar-container` and may be override with the `balloonClassName` option.\n\t *\n\t * Note: This method should be called in the {@link module:core/plugin~PluginInterface#afterInit `Plugin#afterInit()`}\n\t * callback (or later) to make sure that the given toolbar items were already registered by other plugins.\n\t *\n\t * @param toolbarId An id for the toolbar. Used to\n\t * @param options.ariaLabel Label used by assistive technologies to describe this toolbar element.\n\t * @param options.items Array of toolbar items.\n\t * @param options.getRelatedElement Callback which returns an element the toolbar should be attached to.\n\t * @param options.balloonClassName CSS class for the widget balloon.\n\t */\n\tpublic register(\n\t\ttoolbarId: string,\n\t\t{ ariaLabel, items, getRelatedElement, balloonClassName = 'ck-toolbar-container' }: {\n\t\t\tariaLabel?: string;\n\t\t\titems: Array<ToolbarConfigItem>;\n\t\t\tgetRelatedElement: ( selection: ViewDocumentSelection ) => ( ViewElement | null );\n\t\t\tballoonClassName?: string;\n\t\t}\n\t): void {\n\t\t// Trying to register a toolbar without any item.\n\t\tif ( !items.length ) {\n\t\t\t/**\n\t\t\t * When {@link module:widget/widgettoolbarrepository~WidgetToolbarRepository#register registering} a new widget toolbar, you\n\t\t\t * need to provide a non-empty array with the items that will be inserted into the toolbar.\n\t\t\t *\n\t\t\t * If you see this error when integrating the editor, you likely forgot to configure one of the widget toolbars.\n\t\t\t *\n\t\t\t * See for instance:\n\t\t\t *\n\t\t\t * * {@link module:table/tableconfig~TableConfig#contentToolbar `config.table.contentToolbar`}\n\t\t\t * * {@link module:image/imageconfig~ImageConfig#toolbar `config.image.toolbar`}\n\t\t\t *\n\t\t\t * @error widget-toolbar-no-items\n\t\t\t * @param toolbarId The id of the toolbar that has not been configured correctly.\n\t\t\t */\n\t\t\tlogWarning( 'widget-toolbar-no-items', { toolbarId } );\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst toolbarView = new ToolbarView( editor.locale );\n\n\t\ttoolbarView.ariaLabel = ariaLabel || t( 'Widget toolbar' );\n\n\t\tif ( this._toolbarDefinitions.has( toolbarId ) ) {\n\t\t\t/**\n\t\t\t * Toolbar with the given id was already added.\n\t\t\t *\n\t\t\t * @error widget-toolbar-duplicated\n\t\t\t * @param toolbarId Toolbar id.\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'widget-toolbar-duplicated', this, { toolbarId } );\n\t\t}\n\n\t\tconst toolbarDefinition = {\n\t\t\tview: toolbarView,\n\t\t\tgetRelatedElement,\n\t\t\tballoonClassName,\n\t\t\titemsConfig: items,\n\t\t\tinitialized: false\n\t\t};\n\n\t\t// Register the toolbar so it becomes available for Alt+F10 and Esc navigation.\n\t\teditor.ui.addToolbar( toolbarView, {\n\t\t\tisContextual: true,\n\t\t\tbeforeFocus: () => {\n\t\t\t\tconst relatedElement = getRelatedElement( editor.editing.view.document.selection );\n\n\t\t\t\tif ( relatedElement ) {\n\t\t\t\t\tthis._showToolbar( toolbarDefinition, relatedElement );\n\t\t\t\t}\n\t\t\t},\n\t\t\tafterBlur: () => {\n\t\t\t\tthis._hideToolbar( toolbarDefinition );\n\t\t\t}\n\t\t} );\n\n\t\tthis._toolbarDefinitions.set( toolbarId, toolbarDefinition );\n\t}\n\n\t/**\n\t * Iterates over stored toolbars and makes them visible or hidden.\n\t */\n\tprivate _updateToolbarsVisibility() {\n\t\tlet maxRelatedElementDepth = 0;\n\t\tlet deepestRelatedElement = null;\n\t\tlet deepestToolbarDefinition = null;\n\n\t\tfor ( const definition of this._toolbarDefinitions.values() ) {\n\t\t\tconst relatedElement = definition.getRelatedElement( this.editor.editing.view.document.selection );\n\n\t\t\tif ( !this.isEnabled || !relatedElement ) {\n\t\t\t\tif ( this._isToolbarInBalloon( definition ) ) {\n\t\t\t\t\tthis._hideToolbar( definition );\n\t\t\t\t}\n\t\t\t} else if ( !this.editor.ui.focusTracker.isFocused ) {\n\t\t\t\tif ( this._isToolbarVisible( definition ) ) {\n\t\t\t\t\tthis._hideToolbar( definition );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst relatedElementDepth = relatedElement.getAncestors().length;\n\n\t\t\t\t// Many toolbars can express willingness to be displayed but they do not know about\n\t\t\t\t// each other. Figure out which toolbar is deepest in the view tree to decide which\n\t\t\t\t// should be displayed. For instance, if a selected image is inside a table cell, display\n\t\t\t\t// the ImageToolbar rather than the TableToolbar (#60).\n\t\t\t\tif ( relatedElementDepth > maxRelatedElementDepth ) {\n\t\t\t\t\tmaxRelatedElementDepth = relatedElementDepth;\n\t\t\t\t\tdeepestRelatedElement = relatedElement;\n\t\t\t\t\tdeepestToolbarDefinition = definition;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( deepestToolbarDefinition ) {\n\t\t\tthis._showToolbar( deepestToolbarDefinition, deepestRelatedElement! );\n\t\t}\n\t}\n\n\t/**\n\t * Hides the given toolbar.\n\t */\n\tprivate _hideToolbar( toolbarDefinition: WidgetRepositoryToolbarDefinition ) {\n\t\tthis._balloon.remove( toolbarDefinition.view );\n\t\tthis.stopListening( this._balloon, 'change:visibleView' );\n\t}\n\n\t/**\n\t * Shows up the toolbar if the toolbar is not visible.\n\t * Otherwise, repositions the toolbar's balloon when toolbar's view is the most top view in balloon stack.\n\t *\n\t * It might happen here that the toolbar's view is under another view. Then do nothing as the other toolbar view\n\t * should be still visible after the {@link module:ui/editorui/editorui~EditorUI#event:update}.\n\t */\n\tprivate _showToolbar( toolbarDefinition: WidgetRepositoryToolbarDefinition, relatedElement: ViewElement ) {\n\t\tif ( this._isToolbarVisible( toolbarDefinition ) ) {\n\t\t\trepositionContextualBalloon( this.editor, relatedElement );\n\t\t} else if ( !this._isToolbarInBalloon( toolbarDefinition ) ) {\n\t\t\tif ( !toolbarDefinition.initialized ) {\n\t\t\t\ttoolbarDefinition.initialized = true;\n\t\t\t\ttoolbarDefinition.view.fillFromConfig( toolbarDefinition.itemsConfig, this.editor.ui.componentFactory );\n\t\t\t}\n\n\t\t\tthis._balloon.add( {\n\t\t\t\tview: toolbarDefinition.view,\n\t\t\t\tposition: getBalloonPositionData( this.editor, relatedElement ),\n\t\t\t\tballoonClassName: toolbarDefinition.balloonClassName\n\t\t\t} );\n\n\t\t\t// Update toolbar position each time stack with toolbar view is switched to visible.\n\t\t\t// This is in a case target element has changed when toolbar was in invisible stack\n\t\t\t// e.g. target image was wrapped by a block quote.\n\t\t\t// See https://github.com/ckeditor/ckeditor5-widget/issues/92.\n\t\t\tthis.listenTo<ObservableChangeEvent>( this._balloon, 'change:visibleView', () => {\n\t\t\t\tfor ( const definition of this._toolbarDefinitions.values() ) {\n\t\t\t\t\tif ( this._isToolbarVisible( definition ) ) {\n\t\t\t\t\t\tconst relatedElement = definition.getRelatedElement( this.editor.editing.view.document.selection );\n\t\t\t\t\t\trepositionContextualBalloon( this.editor, relatedElement! );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t}\n\n\tprivate _isToolbarVisible( toolbar: WidgetRepositoryToolbarDefinition ) {\n\t\treturn this._balloon.visibleView === toolbar.view;\n\t}\n\n\tprivate _isToolbarInBalloon( toolbar: WidgetRepositoryToolbarDefinition ) {\n\t\treturn this._balloon.hasView( toolbar.view );\n\t}\n}\n\nfunction repositionContextualBalloon( editor: Editor, relatedElement: ViewElement ) {\n\tconst balloon: ContextualBalloon = editor.plugins.get( 'ContextualBalloon' );\n\tconst position = getBalloonPositionData( editor, relatedElement );\n\n\tballoon.updatePosition( position );\n}\n\nfunction getBalloonPositionData( editor: Editor, relatedElement: ViewElement ) {\n\tconst editingView = editor.editing.view;\n\tconst defaultPositions = BalloonPanelView.defaultPositions;\n\n\treturn {\n\t\ttarget: editingView.domConverter.mapViewToDom( relatedElement ) as RectSource | undefined,\n\t\tpositions: [\n\t\t\tdefaultPositions.northArrowSouth,\n\t\t\tdefaultPositions.northArrowSouthWest,\n\t\t\tdefaultPositions.northArrowSouthEast,\n\t\t\tdefaultPositions.southArrowNorth,\n\t\t\tdefaultPositions.southArrowNorthWest,\n\t\t\tdefaultPositions.southArrowNorthEast,\n\t\t\tdefaultPositions.viewportStickyNorth\n\t\t]\n\t};\n}\n\nfunction isWidgetSelected( selection: ViewDocumentSelection ) {\n\tconst viewElement = selection.getSelectedElement();\n\n\treturn !!( viewElement && isWidget( viewElement ) );\n}\n\n/**\n * The toolbar definition object used by the toolbar repository to manage toolbars.\n * It contains information necessary to display the toolbar in the\n * {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon contextual balloon} and\n * update it during its life (display) cycle.\n */\ninterface WidgetRepositoryToolbarDefinition {\n\n\t/**\n\t * The UI view of the toolbar.\n\t */\n\tview: ToolbarView;\n\n\t/**\n\t * A function that returns an engine {@link module:engine/view/view~View}\n\t * element the toolbar is to be attached to. For instance, an image widget or a table widget (or `null` when\n\t * there is no such element). The function accepts an instance of {@link module:engine/view/selection~Selection}.\n\t */\n\tgetRelatedElement: ( selection: ViewDocumentSelection ) => ViewElement | null | undefined;\n\n\t/**\n\t * CSS class for the widget balloon when a toolbar is displayed.\n\t */\n\tballoonClassName: string;\n\n\titemsConfig: Array<ToolbarConfigItem>;\n\n\tinitialized: boolean;\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/widgetresize/resizerstate\n */\n\nimport { ObservableMixin, Rect } from '@ckeditor/ckeditor5-utils';\n\nimport type { ResizerOptions } from '../widgetresize.js';\nimport { calculateResizeHostPercentageWidth } from '../utils.js';\n\n/**\n * Stores the internal state of a single resizable object.\n */\nexport default class ResizeState extends /* #__PURE__ */ ObservableMixin() {\n\t/**\n\t * The position of the handle that initiated the resizing. E.g. `\"top-left\"`, `\"bottom-right\"` etc. or `null`\n\t * if unknown.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public activeHandlePosition: string | null;\n\n\t/**\n\t * The width (percents) proposed, but not committed yet, in the current resize process.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public proposedWidthPercents: number | null;\n\n\t/**\n\t * The width (pixels) proposed, but not committed yet, in the current resize process.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public proposedWidth: number | null;\n\n\t/**\n\t * The height (pixels) proposed, but not committed yet, in the current resize process.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public proposedHeight: number | null;\n\n\t/**\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public proposedHandleHostWidth: number | null;\n\n\t/**\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public proposedHandleHostHeight: number | null;\n\n\t/**\n\t * The reference point of the resizer where the dragging started. It is used to measure the distance the user cursor\n\t * traveled, so how much the image should be enlarged.\n\t * This information is only known after the DOM was rendered, so it will be updated later.\n\t *\n\t * @internal\n\t */\n\tpublic _referenceCoordinates: { x: number; y: number } | null;\n\n\t/**\n\t * Resizer options.\n\t */\n\tprivate readonly _options: ResizerOptions;\n\n\t/**\n\t * The original width (pixels) of the resized object when the resize process was started.\n\t *\n\t * @readonly\n\t */\n\tprivate _originalWidth?: number;\n\n\t/**\n\t * The original height (pixels) of the resized object when the resize process was started.\n\t *\n\t * @readonly\n\t */\n\tprivate _originalHeight?: number;\n\n\t/**\n\t * The original width (percents) of the resized object when the resize process was started.\n\t *\n\t * @readonly\n\t */\n\tprivate _originalWidthPercents?: number;\n\n\t/**\n\t * A width to height ratio of the resized image.\n\t *\n\t * @readonly\n\t */\n\tprivate _aspectRatio?: number;\n\n\t/**\n\t * @param options Resizer options.\n\t */\n\tconstructor( options: ResizerOptions ) {\n\t\tsuper();\n\n\t\tthis.set( 'activeHandlePosition', null );\n\t\tthis.set( 'proposedWidthPercents', null );\n\t\tthis.set( 'proposedWidth', null );\n\t\tthis.set( 'proposedHeight', null );\n\t\tthis.set( 'proposedHandleHostWidth', null );\n\t\tthis.set( 'proposedHandleHostHeight', null );\n\n\t\tthis._options = options;\n\t\tthis._referenceCoordinates = null;\n\t}\n\n\t/**\n\t * The original width (pixels) of the resized object when the resize process was started.\n\t */\n\tpublic get originalWidth(): number | undefined {\n\t\treturn this._originalWidth;\n\t}\n\n\t/**\n\t * The original height (pixels) of the resized object when the resize process was started.\n\t */\n\tpublic get originalHeight(): number | undefined {\n\t\treturn this._originalHeight;\n\t}\n\n\t/**\n\t * The original width (percents) of the resized object when the resize process was started.\n\t */\n\tpublic get originalWidthPercents(): number | undefined {\n\t\treturn this._originalWidthPercents;\n\t}\n\n\t/**\n\t * A width to height ratio of the resized image.\n\t */\n\tpublic get aspectRatio(): number | undefined {\n\t\treturn this._aspectRatio;\n\t}\n\n\t/**\n\t *\n\t * @param domResizeHandle The handle used to calculate the reference point.\n\t */\n\tpublic begin( domResizeHandle: HTMLElement, domHandleHost: HTMLElement, domResizeHost: HTMLElement ): void {\n\t\tconst clientRect = new Rect( domHandleHost );\n\n\t\tthis.activeHandlePosition = getHandlePosition( domResizeHandle )!;\n\n\t\tthis._referenceCoordinates = getAbsoluteBoundaryPoint( domHandleHost, getOppositePosition( this.activeHandlePosition ) );\n\n\t\tthis._originalWidth = clientRect.width;\n\t\tthis._originalHeight = clientRect.height;\n\n\t\tthis._aspectRatio = clientRect.width / clientRect.height;\n\n\t\tconst widthStyle = domResizeHost.style.width;\n\n\t\tif ( widthStyle && widthStyle.match( /^\\d+(\\.\\d*)?%$/ ) ) {\n\t\t\tthis._originalWidthPercents = parseFloat( widthStyle );\n\t\t} else {\n\t\t\tthis._originalWidthPercents = calculateResizeHostPercentageWidth( domResizeHost, clientRect );\n\t\t}\n\t}\n\n\tpublic update( newSize: {\n\t\twidth: number;\n\t\theight: number;\n\t\twidthPercents: number;\n\t\thandleHostWidth: number;\n\t\thandleHostHeight: number;\n\t} ): void {\n\t\tthis.proposedWidth = newSize.width;\n\t\tthis.proposedHeight = newSize.height;\n\t\tthis.proposedWidthPercents = newSize.widthPercents;\n\n\t\tthis.proposedHandleHostWidth = newSize.handleHostWidth;\n\t\tthis.proposedHandleHostHeight = newSize.handleHostHeight;\n\t}\n}\n\n/**\n * Returns coordinates of the top-left corner of an element, relative to the document's top-left corner.\n *\n * @param resizerPosition The position of the resize handle, e.g. `\"top-left\"`, `\"bottom-right\"`.\n */\nfunction getAbsoluteBoundaryPoint( element: HTMLElement, resizerPosition: string ) {\n\tconst elementRect = new Rect( element );\n\tconst positionParts = resizerPosition.split( '-' );\n\tconst ret = {\n\t\tx: positionParts[ 1 ] == 'right' ? elementRect.right : elementRect.left,\n\t\ty: positionParts[ 0 ] == 'bottom' ? elementRect.bottom : elementRect.top\n\t};\n\n\tret.x += element.ownerDocument.defaultView!.scrollX;\n\tret.y += element.ownerDocument.defaultView!.scrollY;\n\n\treturn ret;\n}\n\n/**\n * @param resizerPosition The expected resizer position, like `\"top-left\"`, `\"bottom-right\"`.\n * @returns A prefixed HTML class name for the resizer element.\n */\nfunction getResizerHandleClass( resizerPosition: string ) {\n\treturn `ck-widget__resizer__handle-${ resizerPosition }`;\n}\n\n/**\n * Determines the position of a given resize handle.\n *\n * @param domHandle Handle used to calculate the reference point.\n * @returns Returns a string like `\"top-left\"` or `undefined` if not matched.\n */\nfunction getHandlePosition( domHandle: HTMLElement ) {\n\tconst resizerPositions = [ 'top-left', 'top-right', 'bottom-right', 'bottom-left' ];\n\n\tfor ( const position of resizerPositions ) {\n\t\tif ( domHandle.classList.contains( getResizerHandleClass( position ) ) ) {\n\t\t\treturn position;\n\t\t}\n\t}\n}\n\n/**\n * @param position Like `\"top-left\"`.\n * @returns Inverted `position`, e.g. it returns `\"bottom-right\"` if `\"top-left\"` was given as `position`.\n */\nfunction getOppositePosition( position: string ) {\n\tconst parts = position.split( '-' );\n\tconst replacements: Record<string, string> = {\n\t\ttop: 'bottom',\n\t\tbottom: 'top',\n\t\tleft: 'right',\n\t\tright: 'left'\n\t};\n\n\treturn `${ replacements[ parts[ 0 ] ] }-${ replacements[ parts[ 1 ] ] }`;\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/widgetresize/sizeview\n */\n\nimport { View } from '@ckeditor/ckeditor5-ui';\nimport type { ResizerOptions } from '../widgetresize.js';\nimport type ResizeState from './resizerstate.js';\n\n/**\n * A view displaying the proposed new element size during the resizing.\n */\nexport default class SizeView extends View {\n\t/**\n\t * The visibility of the view defined based on the existence of the host proposed dimensions.\n\t *\n\t * @internal\n\t * @observable\n\t * @readonly\n\t */\n\tdeclare public _isVisible: boolean;\n\n\t/**\n\t * The text that will be displayed in the `SizeView` child.\n\t * It can be formatted as the pixel values (e.g. 10x20) or the percentage value (e.g. 10%).\n\t *\n\t * @internal\n\t * @observable\n\t * @readonly\n\t */\n\tdeclare public _label: string;\n\n\t/**\n\t * The position of the view defined based on the host size and active handle position.\n\t *\n\t * @internal\n\t * @observable\n\t * @readonly\n\t */\n\tdeclare public _viewPosition: string;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tconst bind = this.bindTemplate;\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-size-view',\n\t\t\t\t\tbind.to( '_viewPosition', value => value ? `ck-orientation-${ value }` : '' )\n\t\t\t\t],\n\t\t\t\tstyle: {\n\t\t\t\t\tdisplay: bind.if( '_isVisible', 'none', visible => !visible )\n\t\t\t\t}\n\t\t\t},\n\t\t\tchildren: [ {\n\t\t\t\ttext: bind.to( '_label' )\n\t\t\t} ]\n\t\t} );\n\t}\n\n\t/**\n\t * A method used for binding the `SizeView` instance properties to the `ResizeState` instance observable properties.\n\t *\n\t * @internal\n\t * @param options An object defining the resizer options, used for setting the proper size label.\n\t * @param resizeState The `ResizeState` class instance, used for keeping the `SizeView` state up to date.\n\t */\n\tpublic _bindToState( options: ResizerOptions, resizeState: ResizeState ): void {\n\t\tthis.bind( '_isVisible' ).to( resizeState, 'proposedWidth', resizeState, 'proposedHeight', ( width, height ) =>\n\t\t\twidth !== null && height !== null );\n\n\t\tthis.bind( '_label' ).to(\n\t\t\tresizeState, 'proposedHandleHostWidth',\n\t\t\tresizeState, 'proposedHandleHostHeight',\n\t\t\tresizeState, 'proposedWidthPercents',\n\t\t\t( width, height, widthPercents ) => {\n\t\t\t\tif ( options.unit === 'px' ) {\n\t\t\t\t\treturn `${ width }×${ height }`;\n\t\t\t\t} else {\n\t\t\t\t\treturn `${ widthPercents }%`;\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\tthis.bind( '_viewPosition' ).to(\n\t\t\tresizeState, 'activeHandlePosition',\n\t\t\tresizeState, 'proposedHandleHostWidth',\n\t\t\tresizeState, 'proposedHandleHostHeight',\n\t\t\t// If the widget is too small to contain the size label, display the label above.\n\t\t\t( position, width, height ) => width! < 50 || height! < 50 ? 'above-center' : position!\n\t\t);\n\t}\n\n\t/**\n\t * A method used for cleaning up. It removes the bindings and hides the view.\n\t *\n\t * @internal\n\t */\n\tpublic _dismiss(): void {\n\t\tthis.unbind();\n\t\tthis._isVisible = false;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/widgetresize/resizer\n */\n\nimport { Template } from '@ckeditor/ckeditor5-ui';\nimport {\n\tRect,\n\tObservableMixin,\n\tcompareArrays,\n\ttype ObservableChangeEvent,\n\ttype DecoratedMethodEvent\n} from '@ckeditor/ckeditor5-utils';\n\nimport ResizeState from './resizerstate.js';\nimport SizeView from './sizeview.js';\n\nimport type { ResizerOptions } from '../widgetresize.js';\nimport type { ViewElement } from '@ckeditor/ckeditor5-engine';\n\n/**\n * Represents a resizer for a single resizable object.\n */\nexport default class Resizer extends /* #__PURE__ */ ObservableMixin() {\n\t/**\n\t * Flag that indicates whether resizer can be used.\n\t *\n\t * @observable\n\t */\n\tdeclare public isEnabled: boolean;\n\n\t/**\n\t * Flag that indicates that resizer is currently focused.\n\t *\n\t * @observable\n\t */\n\tdeclare public isSelected: boolean;\n\n\t/**\n\t * Flag that indicates whether resizer is rendered (visible on the screen).\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public isVisible: boolean;\n\n\t/**\n\t * Stores the state of the resizable host geometry, such as the original width, the currently proposed height, etc.\n\t *\n\t * Note that a new state is created for each resize transaction.\n\t */\n\tprivate _state!: ResizeState;\n\n\t/**\n\t * A view displaying the proposed new element size during the resizing.\n\t */\n\tprivate _sizeView!: SizeView;\n\n\t/**\n\t * Options passed to the {@link #constructor}.\n\t */\n\tprivate _options: ResizerOptions;\n\n\t/**\n\t * A wrapper that is controlled by the resizer. This is usually a widget element.\n\t */\n\tprivate _viewResizerWrapper: ViewElement | null = null;\n\n\t/**\n\t * The width of the resized {@link module:widget/widgetresize~ResizerOptions#viewElement viewElement} before the resizing started.\n\t */\n\tprivate _initialViewWidth: string | undefined;\n\n\t/**\n\t * @param options Resizer options.\n\t */\n\tconstructor( options: ResizerOptions ) {\n\t\tsuper();\n\n\t\tthis._options = options;\n\n\t\tthis.set( 'isEnabled', true );\n\t\tthis.set( 'isSelected', false );\n\n\t\tthis.bind( 'isVisible' ).to( this, 'isEnabled', this, 'isSelected', ( isEnabled, isSelected ) => isEnabled && isSelected );\n\n\t\tthis.decorate( 'begin' );\n\t\tthis.decorate( 'cancel' );\n\t\tthis.decorate( 'commit' );\n\t\tthis.decorate( 'updateSize' );\n\n\t\tthis.on( 'commit', event => {\n\t\t\t// State might not be initialized yet. In this case, prevent further handling and make sure that the resizer is\n\t\t\t// cleaned up (#5195).\n\t\t\tif ( !this.state.proposedWidth && !this.state.proposedWidthPercents ) {\n\t\t\t\tthis._cleanup();\n\t\t\t\tevent.stop();\n\t\t\t}\n\t\t}, { priority: 'high' } );\n\t}\n\n\t/**\n\t * Stores the state of the resizable host geometry, such as the original width, the currently proposed height, etc.\n\t *\n\t * Note that a new state is created for each resize transaction.\n\t */\n\tpublic get state(): ResizeState {\n\t\treturn this._state;\n\t}\n\n\t/**\n\t * Makes resizer visible in the UI.\n\t */\n\tpublic show(): void {\n\t\tconst editingView = this._options.editor.editing.view;\n\n\t\teditingView.change( writer => {\n\t\t\twriter.removeClass( 'ck-hidden', this._viewResizerWrapper! );\n\t\t} );\n\t}\n\n\t/**\n\t * Hides resizer in the UI.\n\t */\n\tpublic hide(): void {\n\t\tconst editingView = this._options.editor.editing.view;\n\n\t\teditingView.change( writer => {\n\t\t\twriter.addClass( 'ck-hidden', this._viewResizerWrapper! );\n\t\t} );\n\t}\n\n\t/**\n\t * Attaches the resizer to the DOM.\n\t */\n\tpublic attach(): void {\n\t\t// eslint-disable-next-line @typescript-eslint/no-this-alias\n\t\tconst that = this;\n\t\tconst widgetElement = this._options.viewElement;\n\t\tconst editingView = this._options.editor.editing.view;\n\n\t\teditingView.change( writer => {\n\t\t\tconst viewResizerWrapper = writer.createUIElement( 'div', {\n\t\t\t\tclass: 'ck ck-reset_all ck-widget__resizer'\n\t\t\t}, function( domDocument ) {\n\t\t\t\tconst domElement = this.toDomElement( domDocument );\n\n\t\t\t\tthat._appendHandles( domElement );\n\t\t\t\tthat._appendSizeUI( domElement );\n\n\t\t\t\treturn domElement;\n\t\t\t} );\n\n\t\t\t// Append the resizer wrapper to the widget's wrapper.\n\t\t\twriter.insert( writer.createPositionAt( widgetElement, 'end' ), viewResizerWrapper );\n\t\t\twriter.addClass( 'ck-widget_with-resizer', widgetElement );\n\n\t\t\tthis._viewResizerWrapper = viewResizerWrapper;\n\n\t\t\tif ( !this.isVisible ) {\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t} );\n\n\t\tthis.on<ObservableChangeEvent>( 'change:isVisible', () => {\n\t\t\tif ( this.isVisible ) {\n\t\t\t\tthis.show();\n\t\t\t\tthis.redraw();\n\t\t\t} else {\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Starts the resizing process.\n\t *\n\t * Creates a new {@link #state} for the current process.\n\t *\n\t * @fires begin\n\t * @param domResizeHandle Clicked handle.\n\t */\n\tpublic begin( domResizeHandle: HTMLElement ): void {\n\t\tthis._state = new ResizeState( this._options );\n\n\t\tthis._sizeView._bindToState( this._options, this.state );\n\n\t\tthis._initialViewWidth = this._options.viewElement.getStyle( 'width' );\n\n\t\tthis.state.begin( domResizeHandle, this._getHandleHost(), this._getResizeHost() );\n\t}\n\n\t/**\n\t * Updates the proposed size based on `domEventData`.\n\t *\n\t * @fires updateSize\n\t */\n\tpublic updateSize( domEventData: MouseEvent ): void {\n\t\tconst newSize = this._proposeNewSize( domEventData );\n\t\tconst editingView = this._options.editor.editing.view;\n\n\t\teditingView.change( writer => {\n\t\t\tconst unit = this._options.unit || '%';\n\t\t\tconst newWidth = ( unit === '%' ? newSize.widthPercents : newSize.width ) + unit;\n\n\t\t\twriter.setStyle( 'width', newWidth, this._options.viewElement );\n\t\t} );\n\n\t\t// Get an actual image width, and:\n\t\t// * reflect this size to the resize wrapper\n\t\t// * apply this **real** size to the state\n\t\tconst domHandleHost = this._getHandleHost();\n\t\tconst domHandleHostRect = new Rect( domHandleHost );\n\n\t\tconst handleHostWidth = Math.round( domHandleHostRect.width );\n\t\tconst handleHostHeight = Math.round( domHandleHostRect.height );\n\n\t\t// Handle max-width limitation.\n\t\tconst domResizeHostRect = new Rect( domHandleHost );\n\n\t\tnewSize.width = Math.round( domResizeHostRect.width );\n\t\tnewSize.height = Math.round( domResizeHostRect.height );\n\n\t\tthis.redraw( domHandleHostRect );\n\n\t\tthis.state.update( {\n\t\t\t...newSize,\n\t\t\thandleHostWidth,\n\t\t\thandleHostHeight\n\t\t} );\n\t}\n\n\t/**\n\t * Applies the geometry proposed with the resizer.\n\t *\n\t * @fires commit\n\t */\n\tpublic commit(): void {\n\t\tconst unit = this._options.unit || '%';\n\t\tconst newValue = ( unit === '%' ? this.state.proposedWidthPercents : this.state.proposedWidth ) + unit;\n\n\t\t// Both cleanup and onCommit callback are very likely to make view changes. Ensure that it is made in a single step.\n\t\tthis._options.editor.editing.view.change( () => {\n\t\t\tthis._cleanup();\n\t\t\tthis._options.onCommit( newValue );\n\t\t} );\n\t}\n\n\t/**\n\t * Cancels and rejects the proposed resize dimensions, hiding the UI.\n\t *\n\t * @fires cancel\n\t */\n\tpublic cancel(): void {\n\t\tthis._cleanup();\n\t}\n\n\t/**\n\t * Destroys the resizer.\n\t */\n\tpublic destroy(): void {\n\t\tthis.cancel();\n\t}\n\n\t/**\n\t * Redraws the resizer.\n\t *\n\t * @param handleHostRect Handle host rectangle might be given to improve performance.\n\t */\n\tpublic redraw( handleHostRect?: Rect ): void {\n\t\tconst domWrapper = this._domResizerWrapper;\n\n\t\t// Refresh only if resizer exists in the DOM.\n\t\tif ( !existsInDom( domWrapper ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst widgetWrapper = domWrapper!.parentElement;\n\t\tconst handleHost = this._getHandleHost();\n\t\tconst resizerWrapper = this._viewResizerWrapper!;\n\t\tconst currentDimensions = [\n\t\t\tresizerWrapper.getStyle( 'width' ),\n\t\t\tresizerWrapper.getStyle( 'height' ),\n\t\t\tresizerWrapper.getStyle( 'left' ),\n\t\t\tresizerWrapper.getStyle( 'top' )\n\t\t];\n\t\tlet newDimensions: Array<string | undefined>;\n\n\t\tif ( widgetWrapper!.isSameNode( handleHost ) ) {\n\t\t\tconst clientRect = handleHostRect || new Rect( handleHost );\n\n\t\t\tnewDimensions = [\n\t\t\t\tclientRect.width + 'px',\n\t\t\t\tclientRect.height + 'px',\n\t\t\t\tundefined,\n\t\t\t\tundefined\n\t\t\t];\n\t\t}\n\t\t// In case a resizing host is not a widget wrapper, we need to compensate\n\t\t// for any additional offsets the resize host might have. E.g. wrapper padding\n\t\t// or simply another editable. By doing that the border and resizers are shown\n\t\t// only around the resize host.\n\t\telse {\n\t\t\tnewDimensions = [\n\t\t\t\thandleHost.offsetWidth + 'px',\n\t\t\t\thandleHost.offsetHeight + 'px',\n\t\t\t\thandleHost.offsetLeft + 'px',\n\t\t\t\thandleHost.offsetTop + 'px'\n\t\t\t];\n\t\t}\n\n\t\t// Make changes to the view only if the resizer should actually get new dimensions.\n\t\t// Otherwise, if View#change() was always called, this would cause EditorUI#update\n\t\t// loops because the WidgetResize plugin listens to EditorUI#update and updates\n\t\t// the resizer.\n\t\t// https://github.com/ckeditor/ckeditor5/issues/7633\n\t\tif ( compareArrays( currentDimensions, newDimensions ) !== 'same' ) {\n\t\t\tthis._options.editor.editing.view.change( writer => {\n\t\t\t\twriter.setStyle( {\n\t\t\t\t\twidth: newDimensions[ 0 ]!,\n\t\t\t\t\theight: newDimensions[ 1 ]!,\n\t\t\t\t\tleft: newDimensions[ 2 ]!,\n\t\t\t\t\ttop: newDimensions[ 3 ]!\n\t\t\t\t}, resizerWrapper );\n\t\t\t} );\n\t\t}\n\t}\n\n\tpublic containsHandle( domElement: HTMLElement ): boolean {\n\t\treturn this._domResizerWrapper!.contains( domElement );\n\t}\n\n\tpublic static isResizeHandle( domElement: HTMLElement ): boolean {\n\t\treturn domElement.classList.contains( 'ck-widget__resizer__handle' );\n\t}\n\n\t/**\n\t * Cleans up the context state.\n\t */\n\tprivate _cleanup(): void {\n\t\tthis._sizeView._dismiss();\n\n\t\tconst editingView = this._options.editor.editing.view;\n\n\t\teditingView.change( writer => {\n\t\t\twriter.setStyle( 'width', this._initialViewWidth!, this._options.viewElement );\n\t\t} );\n\t}\n\n\t/**\n\t * Calculates the proposed size as the resize handles are dragged.\n\t *\n\t * @param domEventData Event data that caused the size update request. It should be used to calculate the proposed size.\n\t */\n\tprivate _proposeNewSize( domEventData: MouseEvent ): { width: number; height: number; widthPercents: number } {\n\t\tconst state = this.state;\n\t\tconst currentCoordinates = extractCoordinates( domEventData );\n\t\tconst isCentered = this._options.isCentered ? this._options.isCentered( this ) : true;\n\n\t\t// Enlargement defines how much the resize host has changed in a given axis. Naturally it could be a negative number\n\t\t// meaning that it has been shrunk.\n\t\t//\n\t\t// +----------------+--+\n\t\t// | | |\n\t\t// | img | |\n\t\t// | /handle host | |\n\t\t// +----------------+ | ^\n\t\t// | | | - enlarge y\n\t\t// +-------------------+ v\n\t\t// \t\t\t\t\t<-->\n\t\t// \t\t\t\t\t enlarge x\n\t\tconst enlargement = {\n\t\t\tx: state._referenceCoordinates!.x - ( currentCoordinates.x + state.originalWidth! ),\n\t\t\ty: ( currentCoordinates.y - state.originalHeight! ) - state._referenceCoordinates!.y\n\t\t};\n\n\t\tif ( isCentered && state.activeHandlePosition!.endsWith( '-right' ) ) {\n\t\t\tenlargement.x = currentCoordinates.x - ( state._referenceCoordinates!.x + state.originalWidth! );\n\t\t}\n\n\t\t// Objects needs to be resized twice as much in horizontal axis if centered, since enlargement is counted from\n\t\t// one resized corner to your cursor. It needs to be duplicated to compensate for the other side too.\n\t\tif ( isCentered ) {\n\t\t\tenlargement.x *= 2;\n\t\t}\n\n\t\t// const resizeHost = this._getResizeHost();\n\n\t\t// The size proposed by the user. It does not consider the aspect ratio.\n\t\tlet width = Math.abs( state.originalWidth! + enlargement.x );\n\t\tlet height = Math.abs( state.originalHeight! + enlargement.y );\n\n\t\t// Dominant determination must take the ratio into account.\n\t\tconst dominant = width / state.aspectRatio! > height ? 'width' : 'height';\n\n\t\tif ( dominant == 'width' ) {\n\t\t\theight = width / state.aspectRatio!;\n\t\t} else {\n\t\t\twidth = height * state.aspectRatio!;\n\t\t}\n\n\t\treturn {\n\t\t\twidth: Math.round( width ),\n\t\t\theight: Math.round( height ),\n\t\t\twidthPercents: Math.min( Math.round( state.originalWidthPercents! / state.originalWidth! * width * 100 ) / 100, 100 )\n\t\t};\n\t}\n\n\t/**\n\t * Obtains the resize host.\n\t *\n\t * Resize host is an object that receives dimensions which are the result of resizing.\n\t */\n\tprivate _getResizeHost(): HTMLElement {\n\t\tconst widgetWrapper = this._domResizerWrapper!.parentElement;\n\n\t\treturn this._options.getResizeHost( widgetWrapper! );\n\t}\n\n\t/**\n\t * Obtains the handle host.\n\t *\n\t * Handle host is an object that the handles are aligned to.\n\t *\n\t * Handle host will not always be an entire widget itself. Take an image as an example. The image widget\n\t * contains an image and a caption. Only the image should be surrounded with handles.\n\t */\n\tprivate _getHandleHost(): HTMLElement {\n\t\tconst widgetWrapper = this._domResizerWrapper!.parentElement;\n\n\t\treturn this._options.getHandleHost( widgetWrapper! );\n\t}\n\n\t/**\n\t * DOM container of the entire resize UI.\n\t *\n\t * Note that this property will have a value only after the element bound with the resizer is rendered\n\t * (otherwise `null`).\n\t */\n\tprivate get _domResizerWrapper(): HTMLElement | null {\n\t\treturn this._options.editor.editing.view.domConverter.mapViewToDom( this._viewResizerWrapper! ) as any;\n\t}\n\n\t/**\n\t * Renders the resize handles in the DOM.\n\t *\n\t * @param domElement The resizer wrapper.\n\t */\n\tprivate _appendHandles( domElement: HTMLElement ) {\n\t\tconst resizerPositions = [ 'top-left', 'top-right', 'bottom-right', 'bottom-left' ];\n\n\t\tfor ( const currentPosition of resizerPositions ) {\n\t\t\tdomElement.appendChild( ( new Template( {\n\t\t\t\ttag: 'div',\n\t\t\t\tattributes: {\n\t\t\t\t\tclass: `ck-widget__resizer__handle ${ getResizerClass( currentPosition ) }`\n\t\t\t\t}\n\t\t\t} ).render() ) );\n\t\t}\n\t}\n\n\t/**\n\t * Sets up the {@link #_sizeView} property and adds it to the passed `domElement`.\n\t */\n\tprivate _appendSizeUI( domElement: HTMLElement ) {\n\t\tthis._sizeView = new SizeView();\n\n\t\t// Make sure icon#element is rendered before passing to appendChild().\n\t\tthis._sizeView.render();\n\n\t\tdomElement.appendChild( this._sizeView.element! );\n\t}\n}\n\n/**\n * @eventName ~Resizer#begin\n */\nexport type ResizerBeginEvent = DecoratedMethodEvent<Resizer, 'begin'>;\n\n/**\n * @eventName ~Resizer#cancel\n */\nexport type ResizerCancelEvent = DecoratedMethodEvent<Resizer, 'cancel'>;\n\n/**\n * @eventName ~Resizer#commit\n */\nexport type ResizerCommitEvent = DecoratedMethodEvent<Resizer, 'commit'>;\n\n/**\n * @eventName ~Resizer#updateSize\n */\nexport type ResizerUpdateSizeEvent = DecoratedMethodEvent<Resizer, 'updateSize'>;\n\n/**\n * @param resizerPosition Expected resizer position like `\"top-left\"`, `\"bottom-right\"`.\n * @returns A prefixed HTML class name for the resizer element\n */\nfunction getResizerClass( resizerPosition: string ) {\n\treturn `ck-widget__resizer__handle-${ resizerPosition }`;\n}\n\nfunction extractCoordinates( event: MouseEvent ) {\n\treturn {\n\t\tx: event.pageX,\n\t\ty: event.pageY\n\t};\n}\n\nfunction existsInDom( element: Node | DocumentFragment | undefined | null ) {\n\treturn element && element.ownerDocument && element.ownerDocument.contains( element );\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/widgetresize\n */\n\nimport Resizer, {\n\ttype ResizerBeginEvent,\n\ttype ResizerCancelEvent,\n\ttype ResizerCommitEvent\n} from './widgetresize/resizer.js';\n\nimport type WidgetToolbarRepository from './widgettoolbarrepository.js';\n\nimport {\n\tPlugin,\n\ttype Editor\n} from '@ckeditor/ckeditor5-core';\n\nimport {\n\tMouseObserver,\n\ttype DocumentChangeEvent,\n\ttype DomEventData,\n\ttype Element,\n\ttype ViewContainerElement,\n\ttype ViewDocumentMouseDownEvent,\n\ttype ViewSelectionChangeEvent\n} from '@ckeditor/ckeditor5-engine';\n\nimport type { EditorUIUpdateEvent } from '@ckeditor/ckeditor5-ui';\n\nimport {\n\tDomEmitterMixin,\n\tglobal,\n\ttype DomEmitter,\n\ttype EventInfo\n} from '@ckeditor/ckeditor5-utils';\n\nimport { throttle, type DebouncedFunc } from 'lodash-es';\n\nimport '../theme/widgetresize.css';\n\n/**\n * The widget resize feature plugin.\n *\n * Use the {@link module:widget/widgetresize~WidgetResize#attachTo} method to create a resizer for the specified widget.\n */\nexport default class WidgetResize extends Plugin {\n\t/**\n\t * The currently selected resizer.\n\t *\n\t * @observable\n\t */\n\tdeclare public selectedResizer: Resizer | null;\n\n\t/**\n\t * References an active resizer.\n\t *\n\t * Active resizer means a resizer which handle is actively used by the end user.\n\t *\n\t * @internal\n\t * @observable\n\t */\n\tdeclare public _activeResizer: Resizer | null;\n\n\t/**\n\t * A map of resizers created using this plugin instance.\n\t */\n\tprivate _resizers = new Map<ViewContainerElement, Resizer>();\n\n\tprivate _observer!: DomEmitter;\n\n\tprivate _redrawSelectedResizerThrottled!: DebouncedFunc<() => void>;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'WidgetResize' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editing = this.editor.editing;\n\t\tconst domDocument = global.window.document;\n\n\t\tthis.set( 'selectedResizer', null );\n\t\tthis.set( '_activeResizer', null );\n\n\t\tediting.view.addObserver( MouseObserver );\n\n\t\tthis._observer = new ( DomEmitterMixin() )();\n\n\t\tthis.listenTo<ViewDocumentMouseDownEvent>(\n\t\t\tediting.view.document,\n\t\t\t'mousedown',\n\t\t\tthis._mouseDownListener.bind( this ),\n\t\t\t{ priority: 'high' }\n\t\t);\n\n\t\tthis._observer.listenTo( domDocument, 'mousemove', this._mouseMoveListener.bind( this ) );\n\t\tthis._observer.listenTo( domDocument, 'mouseup', this._mouseUpListener.bind( this ) );\n\n\t\tthis._redrawSelectedResizerThrottled = throttle( () => this.redrawSelectedResizer(), 200 );\n\n\t\t// Redrawing on any change of the UI of the editor (including content changes).\n\t\tthis.editor.ui.on<EditorUIUpdateEvent>( 'update', this._redrawSelectedResizerThrottled );\n\n\t\t// Remove view widget-resizer mappings for widgets that have been removed from the document.\n\t\t// https://github.com/ckeditor/ckeditor5/issues/10156\n\t\t// https://github.com/ckeditor/ckeditor5/issues/10266\n\t\tthis.editor.model.document.on<DocumentChangeEvent>( 'change', () => {\n\t\t\tfor ( const [ viewElement, resizer ] of this._resizers ) {\n\t\t\t\tif ( !viewElement.isAttached() ) {\n\t\t\t\t\tthis._resizers.delete( viewElement );\n\t\t\t\t\tresizer.destroy();\n\t\t\t\t}\n\t\t\t}\n\t\t}, { priority: 'lowest' } );\n\n\t\t// Resizers need to be redrawn upon window resize, because new window might shrink resize host.\n\t\tthis._observer.listenTo( global.window, 'resize', this._redrawSelectedResizerThrottled );\n\n\t\tconst viewSelection = this.editor.editing.view.document.selection;\n\n\t\tviewSelection.on<ViewSelectionChangeEvent>( 'change', () => {\n\t\t\tconst selectedElement = viewSelection.getSelectedElement() as ViewContainerElement;\n\n\t\t\tconst resizer = this.getResizerByViewElement( selectedElement ) || null;\n\t\t\tif ( resizer ) {\n\t\t\t\tthis.select( resizer );\n\t\t\t} else {\n\t\t\t\tthis.deselect();\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Redraws the selected resizer if there is any selected resizer and if it is visible.\n\t */\n\tpublic redrawSelectedResizer(): void {\n\t\tif ( this.selectedResizer && this.selectedResizer.isVisible ) {\n\t\t\tthis.selectedResizer.redraw();\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis._observer.stopListening();\n\n\t\tfor ( const resizer of this._resizers.values() ) {\n\t\t\tresizer.destroy();\n\t\t}\n\n\t\tthis._redrawSelectedResizerThrottled.cancel();\n\t}\n\n\t/**\n\t * Marks resizer as selected.\n\t */\n\tpublic select( resizer: Resizer ): void {\n\t\tthis.deselect();\n\t\tthis.selectedResizer = resizer;\n\t\tthis.selectedResizer.isSelected = true;\n\t}\n\n\t/**\n\t * Deselects currently set resizer.\n\t */\n\tpublic deselect(): void {\n\t\tif ( this.selectedResizer ) {\n\t\t\tthis.selectedResizer.isSelected = false;\n\t\t}\n\n\t\tthis.selectedResizer = null;\n\t}\n\n\t/**\n\t * @param options Resizer options.\n\t */\n\tpublic attachTo( options: ResizerOptions ): Resizer {\n\t\tconst resizer = new Resizer( options );\n\t\tconst plugins = this.editor.plugins;\n\n\t\tresizer.attach();\n\n\t\tif ( plugins.has( 'WidgetToolbarRepository' ) ) {\n\t\t\t// Hiding widget toolbar to improve the performance\n\t\t\t// (https://github.com/ckeditor/ckeditor5-widget/pull/112#issuecomment-564528765).\n\t\t\tconst widgetToolbarRepository: WidgetToolbarRepository = plugins.get( 'WidgetToolbarRepository' );\n\n\t\t\tresizer.on<ResizerBeginEvent>( 'begin', () => {\n\t\t\t\twidgetToolbarRepository.forceDisabled( 'resize' );\n\t\t\t}, { priority: 'lowest' } );\n\n\t\t\tresizer.on<ResizerCancelEvent>( 'cancel', () => {\n\t\t\t\twidgetToolbarRepository.clearForceDisabled( 'resize' );\n\t\t\t}, { priority: 'highest' } );\n\n\t\t\tresizer.on<ResizerCommitEvent>( 'commit', () => {\n\t\t\t\twidgetToolbarRepository.clearForceDisabled( 'resize' );\n\t\t\t}, { priority: 'highest' } );\n\t\t}\n\n\t\tthis._resizers.set( options.viewElement, resizer );\n\n\t\tconst viewSelection = this.editor.editing.view.document.selection;\n\t\tconst selectedElement = viewSelection.getSelectedElement() as ViewContainerElement;\n\n\t\t// If the element the resizer is created for is currently focused, it should become visible.\n\t\tif ( this.getResizerByViewElement( selectedElement ) == resizer ) {\n\t\t\tthis.select( resizer );\n\t\t}\n\n\t\treturn resizer;\n\t}\n\n\t/**\n\t * Returns a resizer created for a given view element (widget element).\n\t *\n\t * @param viewElement View element associated with the resizer.\n\t */\n\tpublic getResizerByViewElement( viewElement: ViewContainerElement ): Resizer | undefined {\n\t\treturn this._resizers.get( viewElement );\n\t}\n\n\t/**\n\t * Returns a resizer that contains a given resize handle.\n\t */\n\tprivate _getResizerByHandle( domResizeHandle: HTMLElement ): Resizer | undefined {\n\t\tfor ( const resizer of this._resizers.values() ) {\n\t\t\tif ( resizer.containsHandle( domResizeHandle ) ) {\n\t\t\t\treturn resizer;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @param domEventData Native DOM event.\n\t */\n\tprivate _mouseDownListener( event: EventInfo, domEventData: DomEventData ) {\n\t\tconst resizeHandle = domEventData.domTarget;\n\n\t\tif ( !Resizer.isResizeHandle( resizeHandle ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._activeResizer = this._getResizerByHandle( resizeHandle ) || null;\n\n\t\tif ( this._activeResizer ) {\n\t\t\tthis._activeResizer.begin( resizeHandle );\n\n\t\t\t// Do not call other events when resizing. See: #6755.\n\t\t\tevent.stop();\n\t\t\tdomEventData.preventDefault();\n\t\t}\n\t}\n\n\t/**\n\t * @param domEventData Native DOM event.\n\t */\n\tprivate _mouseMoveListener( event: unknown, domEventData: MouseEvent ) {\n\t\tif ( this._activeResizer ) {\n\t\t\tthis._activeResizer.updateSize( domEventData );\n\t\t}\n\t}\n\n\tprivate _mouseUpListener(): void {\n\t\tif ( this._activeResizer ) {\n\t\t\tthis._activeResizer.commit();\n\t\t\tthis._activeResizer = null;\n\t\t}\n\t}\n}\n\n/**\n * Interface describing a resizer. It allows to specify the resizing host, custom logic for calculating aspect ratio, etc.\n */\nexport interface ResizerOptions {\n\n\t/**\n\t * Editor instance associated with the resizer.\n\t */\n\teditor: Editor;\n\n\tmodelElement: Element;\n\n\t/**\n\t * A view of an element to be resized. Typically it's the main widget's view instance.\n\t */\n\tviewElement: ViewContainerElement;\n\n\tunit?: 'px' | '%';\n\n\t/**\n\t * A callback to be executed once the resizing process is done.\n\t *\n\t * It receives a `Number` (`newValue`) as a parameter.\n\t *\n\t * For example, {@link module:image/imageresize~ImageResize} uses it to execute the resize image command\n\t * which puts the new value into the model.\n\t *\n\t * ```ts\n\t * {\n\t *\teditor,\n\t *\tmodelElement: data.item,\n\t *\tviewElement: widget,\n\t *\n\t *\tonCommit( newValue ) {\n\t *\t\teditor.execute( 'resizeImage', { width: newValue } );\n\t *\t}\n\t * };\n\t * ```\n\t */\n\tonCommit: ( newValue: string ) => void;\n\n\tgetResizeHost: ( widgetWrapper: HTMLElement ) => HTMLElement;\n\n\tgetHandleHost: ( widgetWrapper: HTMLElement ) => HTMLElement;\n\n\tisCentered?: ( resizer: Resizer ) => boolean;\n}\n"]}
|