@ckeditor/ckeditor5-widget 41.4.1 → 42.0.0-alpha.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (168) hide show
  1. package/README.md +6 -0
  2. package/dist/index.js +581 -479
  3. package/dist/index.js.map +1 -1
  4. package/dist/translations/ar.js +1 -1
  5. package/dist/translations/ar.umd.js +1 -1
  6. package/dist/translations/az.js +1 -1
  7. package/dist/translations/az.umd.js +1 -1
  8. package/dist/translations/bg.js +1 -1
  9. package/dist/translations/bg.umd.js +1 -1
  10. package/dist/translations/bn.js +1 -1
  11. package/dist/translations/bn.umd.js +1 -1
  12. package/dist/translations/ca.js +1 -1
  13. package/dist/translations/ca.umd.js +1 -1
  14. package/dist/translations/cs.js +1 -1
  15. package/dist/translations/cs.umd.js +1 -1
  16. package/dist/translations/da.js +1 -1
  17. package/dist/translations/da.umd.js +1 -1
  18. package/dist/translations/de-ch.js +1 -1
  19. package/dist/translations/de-ch.umd.js +1 -1
  20. package/dist/translations/de.js +1 -1
  21. package/dist/translations/de.umd.js +1 -1
  22. package/dist/translations/el.js +1 -1
  23. package/dist/translations/el.umd.js +1 -1
  24. package/dist/translations/en-au.js +1 -1
  25. package/dist/translations/en-au.umd.js +1 -1
  26. package/dist/translations/en.js +1 -1
  27. package/dist/translations/en.umd.js +1 -1
  28. package/dist/translations/es.js +1 -1
  29. package/dist/translations/es.umd.js +1 -1
  30. package/dist/translations/et.js +1 -1
  31. package/dist/translations/et.umd.js +1 -1
  32. package/dist/translations/fa.js +1 -1
  33. package/dist/translations/fa.umd.js +1 -1
  34. package/dist/translations/fi.js +1 -1
  35. package/dist/translations/fi.umd.js +1 -1
  36. package/dist/translations/fr.js +1 -1
  37. package/dist/translations/fr.umd.js +1 -1
  38. package/dist/translations/gl.js +1 -1
  39. package/dist/translations/gl.umd.js +1 -1
  40. package/dist/translations/he.js +1 -1
  41. package/dist/translations/he.umd.js +1 -1
  42. package/dist/translations/hi.js +1 -1
  43. package/dist/translations/hi.umd.js +1 -1
  44. package/dist/translations/hr.js +1 -1
  45. package/dist/translations/hr.umd.js +1 -1
  46. package/dist/translations/hu.js +1 -1
  47. package/dist/translations/hu.umd.js +1 -1
  48. package/dist/translations/id.js +1 -1
  49. package/dist/translations/id.umd.js +1 -1
  50. package/dist/translations/it.js +1 -1
  51. package/dist/translations/it.umd.js +1 -1
  52. package/dist/translations/ja.js +1 -1
  53. package/dist/translations/ja.umd.js +1 -1
  54. package/dist/translations/ko.js +1 -1
  55. package/dist/translations/ko.umd.js +1 -1
  56. package/dist/translations/ku.js +1 -1
  57. package/dist/translations/ku.umd.js +1 -1
  58. package/dist/translations/lt.js +1 -1
  59. package/dist/translations/lt.umd.js +1 -1
  60. package/dist/translations/lv.js +1 -1
  61. package/dist/translations/lv.umd.js +1 -1
  62. package/dist/translations/ms.js +1 -1
  63. package/dist/translations/ms.umd.js +1 -1
  64. package/dist/translations/nl.js +1 -1
  65. package/dist/translations/nl.umd.js +1 -1
  66. package/dist/translations/no.js +1 -1
  67. package/dist/translations/no.umd.js +1 -1
  68. package/dist/translations/pl.js +1 -1
  69. package/dist/translations/pl.umd.js +1 -1
  70. package/dist/translations/pt-br.js +1 -1
  71. package/dist/translations/pt-br.umd.js +1 -1
  72. package/dist/translations/pt.js +1 -1
  73. package/dist/translations/pt.umd.js +1 -1
  74. package/dist/translations/ro.js +1 -1
  75. package/dist/translations/ro.umd.js +1 -1
  76. package/dist/translations/ru.js +1 -1
  77. package/dist/translations/ru.umd.js +1 -1
  78. package/dist/translations/sk.js +1 -1
  79. package/dist/translations/sk.umd.js +1 -1
  80. package/dist/translations/sq.js +1 -1
  81. package/dist/translations/sq.umd.js +1 -1
  82. package/dist/translations/sr-latn.js +1 -1
  83. package/dist/translations/sr-latn.umd.js +1 -1
  84. package/dist/translations/sr.js +1 -1
  85. package/dist/translations/sr.umd.js +1 -1
  86. package/dist/translations/sv.js +1 -1
  87. package/dist/translations/sv.umd.js +1 -1
  88. package/dist/translations/th.js +1 -1
  89. package/dist/translations/th.umd.js +1 -1
  90. package/dist/translations/tk.js +1 -1
  91. package/dist/translations/tk.umd.js +1 -1
  92. package/dist/translations/tr.js +1 -1
  93. package/dist/translations/tr.umd.js +1 -1
  94. package/dist/translations/uk.js +1 -1
  95. package/dist/translations/uk.umd.js +1 -1
  96. package/dist/translations/ur.js +1 -1
  97. package/dist/translations/ur.umd.js +1 -1
  98. package/dist/translations/uz.js +1 -1
  99. package/dist/translations/uz.umd.js +1 -1
  100. package/dist/translations/vi.js +1 -1
  101. package/dist/translations/vi.umd.js +1 -1
  102. package/dist/translations/zh-cn.js +1 -1
  103. package/dist/translations/zh-cn.umd.js +1 -1
  104. package/dist/translations/zh.js +1 -1
  105. package/dist/translations/zh.umd.js +1 -1
  106. package/dist/types/highlightstack.d.ts +1 -1
  107. package/dist/types/widgetresize/resizer.d.ts +1 -1
  108. package/dist/types/widgetresize/resizerstate.d.ts +1 -1
  109. package/lang/contexts.json +2 -1
  110. package/lang/translations/ar.po +4 -0
  111. package/lang/translations/az.po +4 -0
  112. package/lang/translations/bg.po +4 -0
  113. package/lang/translations/bn.po +4 -0
  114. package/lang/translations/ca.po +4 -0
  115. package/lang/translations/cs.po +4 -0
  116. package/lang/translations/da.po +4 -0
  117. package/lang/translations/de-ch.po +4 -0
  118. package/lang/translations/de.po +4 -0
  119. package/lang/translations/el.po +4 -0
  120. package/lang/translations/en-au.po +4 -0
  121. package/lang/translations/en.po +4 -0
  122. package/lang/translations/es.po +4 -0
  123. package/lang/translations/et.po +4 -0
  124. package/lang/translations/fa.po +4 -0
  125. package/lang/translations/fi.po +4 -0
  126. package/lang/translations/fr.po +4 -0
  127. package/lang/translations/gl.po +4 -0
  128. package/lang/translations/he.po +4 -0
  129. package/lang/translations/hi.po +4 -0
  130. package/lang/translations/hr.po +4 -0
  131. package/lang/translations/hu.po +4 -0
  132. package/lang/translations/id.po +4 -0
  133. package/lang/translations/it.po +4 -0
  134. package/lang/translations/ja.po +4 -0
  135. package/lang/translations/ko.po +4 -0
  136. package/lang/translations/ku.po +4 -0
  137. package/lang/translations/lt.po +4 -0
  138. package/lang/translations/lv.po +4 -0
  139. package/lang/translations/ms.po +4 -0
  140. package/lang/translations/nl.po +4 -0
  141. package/lang/translations/no.po +4 -0
  142. package/lang/translations/pl.po +4 -0
  143. package/lang/translations/pt-br.po +4 -0
  144. package/lang/translations/pt.po +4 -0
  145. package/lang/translations/ro.po +4 -0
  146. package/lang/translations/ru.po +4 -0
  147. package/lang/translations/sk.po +4 -0
  148. package/lang/translations/sq.po +4 -0
  149. package/lang/translations/sr-latn.po +4 -0
  150. package/lang/translations/sr.po +4 -0
  151. package/lang/translations/sv.po +4 -0
  152. package/lang/translations/th.po +4 -0
  153. package/lang/translations/tk.po +4 -0
  154. package/lang/translations/tr.po +4 -0
  155. package/lang/translations/uk.po +4 -0
  156. package/lang/translations/ur.po +4 -0
  157. package/lang/translations/uz.po +4 -0
  158. package/lang/translations/vi.po +4 -0
  159. package/lang/translations/zh-cn.po +4 -0
  160. package/lang/translations/zh.po +4 -0
  161. package/package.json +7 -7
  162. package/src/highlightstack.d.ts +1 -1
  163. package/src/highlightstack.js +1 -1
  164. package/src/widget.js +4 -0
  165. package/src/widgetresize/resizer.d.ts +1 -1
  166. package/src/widgetresize/resizer.js +1 -1
  167. package/src/widgetresize/resizerstate.d.ts +1 -1
  168. package/src/widgetresize/resizerstate.js +1 -1
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","add","descriptor","writer","stack","_stack","oldTop","_insertDescriptor","newTop","compareDescriptors","fire","oldDescriptor","newDescriptor","remove","id","_removeDescriptor","index","findIndex","item","splice","i","shouldABeBeforeB","constructor","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","pluginName","requires","Enter","Delete","init","editor","editingView","editing","view","isEnabled","change","root","document","roots","removeSelectionAttribute","_enableTypeAroundUIInjection","_enableInsertingParagraphsOnButtonClick","_enableInsertingParagraphsOnEnterKeypress","_enableInsertingParagraphsOnTypingKeystroke","_enableTypeAroundFakeCaretActivationUsingKeyboardArrows","_enableDeleteIntegration","_enableInsertContentIntegration","_enableInsertObjectIntegration","_enableDeleteContentIntegration","destroy","_currentFakeCaretModelElement","_insertParagraph","widgetModelElement","position","attributesToCopy","getAttributesWithProperty","execute","focus","scrollToTheSelection","_listenToIfEnabled","emitter","event","callback","listenTo","args","_insertParagraphAccordingToFakeCaretPosition","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","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","consumable","consume","createRangeOn","fake","_clearPreviouslySelectedWidgets","viewSelection","lastMarked","getRanges","value","isChild","_previouslySelected","addObserver","MouseObserver","_onMousedown","_handleSelectionChangeOnArrowKeyPress","_preventDefaultOnArrowKeyPress","_handleDelete","_selectFirstNestedEditable","_selectAncestorWidget","keystroke","esc","accessibility","addKeystrokeInfoGroup","keystrokes","eventInfo","target","domEvent","detail","_selectBlockContent","isInsideNestedEditable","findAncestor","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","Set","currentElement","from","includes","includeSelf","treeWalker","TreeWalker","WidgetToolbarRepository","ContextualBalloon","has","balloonToolbar","isWidgetSelected","_balloon","_updateToolbarsVisibility","toolbarConfig","_toolbarDefinitions","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","Map","balloon","updatePosition","defaultPositions","BalloonPanelView","mapViewToDom","positions","northArrowSouth","northArrowSouthWest","northArrowSouthEast","southArrowNorth","southArrowNorthWest","southArrowNorthEast","viewportStickyNorth","ResizeState","ObservableMixin","originalWidth","_originalWidth","originalHeight","_originalHeight","originalWidthPercents","_originalWidthPercents","aspectRatio","_aspectRatio","begin","domResizeHandle","domHandleHost","clientRect","activeHandlePosition","getHandlePosition","_referenceCoordinates","getAbsoluteBoundaryPoint","getOppositePosition","height","widthStyle","style","match","update","newSize","proposedWidth","proposedHeight","proposedWidthPercents","widthPercents","proposedHandleHostWidth","handleHostWidth","proposedHandleHostHeight","handleHostHeight","_options","resizerPosition","elementRect","positionParts","split","ret","x","right","left","y","scrollX","scrollY","getResizerHandleClass","domHandle","resizerPositions","parts","replacements","SizeView","View","_bindToState","resizeState","bind","to","unit","_dismiss","unbind","_isVisible","bindTemplate","setTemplate","display","if","visible","text","Resizer","state","_state","show","_viewResizerWrapper","hide","attach","that","viewResizerWrapper","_appendHandles","_appendSizeUI","isVisible","redraw","_sizeView","_initialViewWidth","getStyle","_getHandleHost","_getResizeHost","updateSize","_proposeNewSize","newWidth","setStyle","domHandleHostRect","domResizeHostRect","commit","newValue","_cleanup","onCommit","cancel","handleHostRect","domWrapper","_domResizerWrapper","existsInDom","widgetWrapper","handleHost","resizerWrapper","currentDimensions","newDimensions","isSameNode","offsetWidth","offsetHeight","offsetLeft","offsetTop","compareArrays","containsHandle","isResizeHandle","currentCoordinates","extractCoordinates","isCentered","enlargement","endsWith","abs","dominant","min","getResizeHost","getHandleHost","currentPosition","getResizerClass","isSelected","decorate","pageX","pageY","WidgetResize","global","window","_observer","DomEmitterMixin","_mouseDownListener","_mouseMoveListener","_mouseUpListener","_redrawSelectedResizerThrottled","throttle","redrawSelectedResizer","resizer","_resizers","isAttached","delete","getResizerByViewElement","select","deselect","selectedResizer","attachTo","widgetToolbarRepository","forceDisabled","clearForceDisabled","_getResizerByHandle","resizeHandle","_activeResizer"],"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, 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\nclass HighlightStack extends EmitterMixin() {\n /**\n * Adds highlight descriptor to the stack.\n *\n * @fires change:top\n */ 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 * Removes highlight descriptor from the stack.\n *\n * @fires change:top\n * @param id Id of the descriptor to remove.\n */ 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 * Inserts a given descriptor in correct place in the stack. It also takes care about updating information\n * when descriptor with same id is already present.\n */ _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 * Removes descriptor with given id from the stack.\n *\n * @param id Descriptor's id.\n */ _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 constructor(){\n super(...arguments);\n this._stack = [];\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 * The element passed to `toWidget()` must be a {@link module:engine/view/containerelement~ContainerElement}\n * instance.\n *\n * @error widget-to-widget-wrong-element-type\n * @param element The view element passed to `toWidget()`.\n */ 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';\nclass WidgetTypeAround extends Plugin {\n /**\n * @inheritDoc\n */ static get pluginName() {\n return 'WidgetTypeAround';\n }\n /**\n * @inheritDoc\n */ static get requires() {\n return [\n Enter,\n Delete\n ];\n }\n /**\n * @inheritDoc\n */ 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 * @inheritDoc\n */ destroy() {\n super.destroy();\n this._currentFakeCaretModelElement = null;\n }\n /**\n * Inserts a new paragraph next to a widget element with the selection anchored in it.\n *\n * **Note**: This method is heavily user-oriented and will both focus the editing view and scroll\n * the viewport to the selection in the inserted paragraph.\n *\n * @param widgetModelElement The model widget element next to which a paragraph is inserted.\n * @param position The position where the paragraph is inserted. Either `'before'` or `'after'` the widget.\n */ _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 * A wrapper for the {@link module:utils/emittermixin~Emitter#listenTo} method that executes the callbacks only\n * when the plugin {@link #isEnabled is enabled}.\n *\n * @param emitter The object that fires the event.\n * @param event The name of the event.\n * @param callback The function to be called on event.\n * @param options Additional options.\n * @param options.priority The priority of this event callback. The higher the priority value the sooner\n * the callback will be fired. Events having the same priority are called in the order they were added.\n */ _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 * Similar to {@link #_insertParagraph}, this method inserts a paragraph except that it\n * does not expect a position. Instead, it performs the insertion next to a selected widget\n * according to the `widget-type-around` model selection attribute value (fake caret position).\n *\n * Because this method requires the `widget-type-around` attribute to be set,\n * the insertion can only happen when the widget's fake caret is active (e.g. activated\n * using the keyboard).\n *\n * @returns Returns `true` when the paragraph was inserted (the attribute was present) and `false` otherwise.\n */ _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 * Creates a listener in the editing conversion pipeline that injects the widget type around\n * UI into every single widget instance created in the editor.\n *\n * The UI is delivered as a {@link module:engine/view/uielement~UIElement}\n * wrapper which renders DOM buttons that users can use to insert paragraphs.\n */ _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 * Brings support for the fake caret that appears when either:\n *\n * * the selection moves to a widget from a position next to it using arrow keys,\n * * the arrow key is pressed when the widget is already selected.\n *\n * The fake caret lets the user know that they can start typing or just press\n * <kbd>Enter</kbd> to insert a paragraph at the position next to a widget as suggested by the fake caret.\n *\n * The fake caret disappears when the user changes the selection or the editor\n * gets blurred.\n *\n * The whole idea is as follows:\n *\n * 1. A user does one of the 2 scenarios described at the beginning.\n * 2. The \"keydown\" listener is executed and the decision is made whether to show or hide the fake caret.\n * 3. If it should show up, the `widget-type-around` model selection attribute is set indicating\n * on which side of the widget it should appear.\n * 4. The selection dispatcher reacts to the selection attribute and sets CSS classes responsible for the\n * fake caret on the view widget.\n * 5. If the fake caret should disappear, the selection attribute is removed and the dispatcher\n * does the CSS class clean-up in the view.\n * 6. Additionally, `change:range` and `FocusTracker#isFocused` listeners also remove the selection\n * attribute (the former also removes widget CSS classes).\n */ _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 * A listener executed on each \"keydown\" in the view document, a part of\n * {@link #_enableTypeAroundFakeCaretActivationUsingKeyboardArrows}.\n *\n * It decides whether the arrow keypress should activate the fake caret or not (also whether it should\n * be deactivated).\n *\n * The fake caret activation is done by setting the `widget-type-around` model selection attribute\n * in this listener, and stopping and preventing the event that would normally be handled by the widget\n * plugin that is responsible for the regular keyboard navigation near/across all widgets (that\n * includes inline widgets, which are ignored by the widget type around plugin).\n */ _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 * Handles the keyboard navigation on \"keydown\" when a widget is currently selected and activates or deactivates\n * the fake caret for that widget, depending on the current value of the `widget-type-around` model\n * selection attribute and the direction of the pressed arrow key.\n *\n * @param isForward `true` when the pressed arrow key was responsible for the forward model selection movement\n * as in {@link module:utils/keyboard~isForwardArrowKeyCode}.\n * @returns Returns `true` when the keypress was handled and no other keydown listener of the editor should\n * process the event any further. Returns `false` otherwise.\n */ _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 * Handles the keyboard navigation on \"keydown\" when **no** widget is selected but the selection is **directly** next\n * to one and upon the fake caret should become active for this widget upon arrow keypress\n * (AKA entering/selecting the widget).\n *\n * **Note**: This code mirrors the implementation from the widget plugin but also adds the selection attribute.\n * Unfortunately, there is no safe way to let the widget plugin do the selection part first and then just set the\n * selection attribute here in the widget type around plugin. This is why this code must duplicate some from the widget plugin.\n *\n * @param isForward `true` when the pressed arrow key was responsible for the forward model selection movement\n * as in {@link module:utils/keyboard~isForwardArrowKeyCode}.\n * @returns Returns `true` when the keypress was handled and no other keydown listener of the editor should\n * process the event any further. Returns `false` otherwise.\n */ _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 * Handles the keyboard navigation on \"keydown\" when a widget is currently selected (together with some other content)\n * and the widget is the first or last element in the selection. It activates or deactivates the fake caret for that widget.\n *\n * @param isForward `true` when the pressed arrow key was responsible for the forward model selection movement\n * as in {@link module:utils/keyboard~isForwardArrowKeyCode}.\n * @returns Returns `true` when the keypress was handled and no other keydown listener of the editor should\n * process the event any further. Returns `false` otherwise.\n */ _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 * Registers a `mousedown` listener for the view document which intercepts events\n * coming from the widget type around UI, which happens when a user clicks one of the buttons\n * that insert a paragraph next to a widget.\n */ _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 * Creates the <kbd>Enter</kbd> key listener on the view document that allows the user to insert a paragraph\n * near the widget when either:\n *\n * * The fake caret was first activated using the arrow keys,\n * * The entire widget is selected in the model.\n *\n * In the first case, the new paragraph is inserted according to the `widget-type-around` selection\n * attribute (see {@link #_handleArrowKeyPress}).\n *\n * In the second case, the new paragraph is inserted based on whether a soft (<kbd>Shift</kbd>+<kbd>Enter</kbd>) keystroke\n * was pressed or not.\n */ _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 * Similar to the {@link #_enableInsertingParagraphsOnEnterKeypress}, it allows the user\n * to insert a paragraph next to a widget when the fake caret was activated using arrow\n * keys but it responds to typing instead of <kbd>Enter</kbd>.\n *\n * Listener enabled by this method will insert a new paragraph according to the `widget-type-around`\n * model selection attribute as the user simply starts typing, which creates the impression that the fake caret\n * behaves like a real one rendered by the browser (AKA your text appears where the caret was).\n *\n * **Note**: At the moment this listener creates 2 undo steps: one for the `insertParagraph` command\n * and another one for actual typing. It is not a disaster but this may need to be fixed\n * sooner or later.\n */ _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 * It creates a \"delete\" event listener on the view document to handle cases when the <kbd>Delete</kbd> or <kbd>Backspace</kbd>\n * is pressed and the fake caret is currently active.\n *\n * The fake caret should create an illusion of a real browser caret so that when it appears before or after\n * a widget, pressing <kbd>Delete</kbd> or <kbd>Backspace</kbd> should remove a widget or delete the content\n * before or after a widget (depending on the content surrounding the widget).\n */ _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 * Attaches the {@link module:engine/model/model~Model#event:insertContent} event listener that, for instance, allows the user to paste\n * content near a widget when the fake caret is first activated using the arrow keys.\n *\n * The content is inserted according to the `widget-type-around` selection attribute (see {@link #_handleArrowKeyPress}).\n */ _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 * Attaches the {@link module:engine/model/model~Model#event:insertObject} event listener that modifies the\n * `options.findOptimalPosition`parameter to position of fake caret in relation to selected element\n * to reflect user's intent of desired insertion position.\n *\n * The object is inserted according to the `widget-type-around` selection attribute (see {@link #_handleArrowKeyPress}).\n */ _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 * Attaches the {@link module:engine/model/model~Model#event:deleteContent} event listener to block the event when the fake\n * caret is active.\n *\n * This is required for cases that trigger {@link module:engine/model/model~Model#deleteContent `model.deleteContent()`}\n * before calling {@link module:engine/model/model~Model#insertContent `model.insertContent()`} like, for instance,\n * plain text pasting.\n */ _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 constructor(){\n super(...arguments);\n /**\n * A reference to the model widget element that has the fake caret active\n * on either side of it. It is later used to remove CSS classes associated with the fake caret\n * when the widget no longer needs it.\n */ this._currentFakeCaretModelElement = null;\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\nclass Widget extends Plugin {\n /**\n * @inheritDoc\n */ static get pluginName() {\n return 'Widget';\n }\n /**\n * @inheritDoc\n */ static get requires() {\n return [\n WidgetTypeAround,\n Delete\n ];\n }\n /**\n * @inheritDoc\n */ 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('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 * Handles {@link module:engine/view/document~Document#event:mousedown mousedown} events on widget elements.\n */ _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 // Do nothing for single or double click inside nested editable.\n if (isInsideNestedEditable(element)) {\n return;\n }\n // If target is not a widget element - check if one of the ancestors is.\n if (!isWidget(element)) {\n element = element.findAncestor(isWidget);\n if (!element) {\n return;\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 * Selects entire block content, e.g. on triple click it selects entire paragraph.\n */ _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 * Handles {@link module:engine/view/document~Document#event:keydown keydown} events and changes\n * the model selection when:\n *\n * * arrow key is pressed when the widget is selected,\n * * the selection is next to a widget and the widget should become selected upon the arrow key press.\n *\n * See {@link #_preventDefaultOnArrowKeyPress}.\n */ _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 * Handles {@link module:engine/view/document~Document#event:keydown keydown} events and prevents\n * the default browser behavior to make sure the fake selection is not being moved from a fake selection\n * container.\n *\n * See {@link #_handleSelectionChangeOnArrowKeyPress}.\n */ _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 * Handles delete keys: backspace and delete.\n *\n * @param isForward Set to true if delete was performed in forward direction.\n * @returns Returns `true` if keys were handled correctly.\n */ _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 * Sets {@link module:engine/model/selection~Selection document's selection} over given element.\n *\n * @internal\n */ _setSelectionOverElement(element) {\n this.editor.model.change((writer)=>{\n writer.setSelection(writer.createRangeOn(element));\n });\n }\n /**\n * Checks if {@link module:engine/model/element~Element element} placed next to the current\n * {@link module:engine/model/selection~Selection model selection} exists and is marked in\n * {@link module:engine/model/schema~Schema schema} as `object`.\n *\n * @internal\n * @param forward Direction of checking.\n */ _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 * Removes CSS class from previously selected widgets.\n */ _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 * Moves the document selection into the first nested editable.\n */ _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 * Updates the document selection so that it selects first ancestor widget.\n */ _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 constructor(){\n super(...arguments);\n /**\n * Holds previously selected widgets.\n */ this._previouslySelected = new Set();\n }\n}\n/**\n * Returns `true` when element is a nested editable or is placed inside one.\n */ function isInsideNestedEditable(element) {\n let currentElement = element;\n while(currentElement){\n if (currentElement.is('editableElement') && !currentElement.is('rootElement')) {\n return true;\n }\n // Click on nested widget should select it.\n if (isWidget(currentElement)) {\n return false;\n }\n currentElement = currentElement.parent;\n }\n return false;\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\nclass WidgetToolbarRepository extends Plugin {\n /**\n * @inheritDoc\n */ static get requires() {\n return [\n ContextualBalloon\n ];\n }\n /**\n * @inheritDoc\n */ static get pluginName() {\n return 'WidgetToolbarRepository';\n }\n /**\n * @inheritDoc\n */ 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 * Registers toolbar in the WidgetToolbarRepository. It renders it in the `ContextualBalloon` based on the value of the invoked\n * `getRelatedElement` function. Toolbar items are gathered from `items` array.\n * The balloon's CSS class is by default `ck-toolbar-container` and may be override with the `balloonClassName` option.\n *\n * Note: This method should be called in the {@link module:core/plugin~PluginInterface#afterInit `Plugin#afterInit()`}\n * callback (or later) to make sure that the given toolbar items were already registered by other plugins.\n *\n * @param toolbarId An id for the toolbar. Used to\n * @param options.ariaLabel Label used by assistive technologies to describe this toolbar element.\n * @param options.items Array of toolbar items.\n * @param options.getRelatedElement Callback which returns an element the toolbar should be attached to.\n * @param options.balloonClassName CSS class for the widget balloon.\n */ register(toolbarId, { ariaLabel, items, getRelatedElement, balloonClassName = 'ck-toolbar-container' }) {\n // Trying to register a toolbar without any item.\n if (!items.length) {\n /**\n * When {@link module:widget/widgettoolbarrepository~WidgetToolbarRepository#register registering} a new widget toolbar, you\n * need to provide a non-empty array with the items that will be inserted into the toolbar.\n *\n * If you see this error when integrating the editor, you likely forgot to configure one of the widget toolbars.\n *\n * See for instance:\n *\n * * {@link module:table/tableconfig~TableConfig#contentToolbar `config.table.contentToolbar`}\n * * {@link module:image/imageconfig~ImageConfig#toolbar `config.image.toolbar`}\n *\n * @error widget-toolbar-no-items\n * @param toolbarId The id of the toolbar that has not been configured correctly.\n */ 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 * Toolbar with the given id was already added.\n *\n * @error widget-toolbar-duplicated\n * @param toolbarId Toolbar id.\n */ 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 * Iterates over stored toolbars and makes them visible or hidden.\n */ _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 * Hides the given toolbar.\n */ _hideToolbar(toolbarDefinition) {\n this._balloon.remove(toolbarDefinition.view);\n this.stopListening(this._balloon, 'change:visibleView');\n }\n /**\n * Shows up the toolbar if the toolbar is not visible.\n * Otherwise, repositions the toolbar's balloon when toolbar's view is the most top view in balloon stack.\n *\n * It might happen here that the toolbar's view is under another view. Then do nothing as the other toolbar view\n * should be still visible after the {@link module:ui/editorui/editorui~EditorUI#event:update}.\n */ _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 constructor(){\n super(...arguments);\n /**\n * A map of toolbar definitions.\n */ this._toolbarDefinitions = new Map();\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\nclass ResizeState extends ObservableMixin() {\n /**\n * The original width (pixels) of the resized object when the resize process was started.\n */ get originalWidth() {\n return this._originalWidth;\n }\n /**\n * The original height (pixels) of the resized object when the resize process was started.\n */ get originalHeight() {\n return this._originalHeight;\n }\n /**\n * The original width (percents) of the resized object when the resize process was started.\n */ get originalWidthPercents() {\n return this._originalWidthPercents;\n }\n /**\n * A width to height ratio of the resized image.\n */ get aspectRatio() {\n return this._aspectRatio;\n }\n /**\n *\n * @param domResizeHandle The handle used to calculate the reference point.\n */ 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 * @param options Resizer options.\n */ 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/**\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\nclass SizeView extends View {\n /**\n * A method used for binding the `SizeView` instance properties to the `ResizeState` instance observable properties.\n *\n * @internal\n * @param options An object defining the resizer options, used for setting the proper size label.\n * @param resizeState The `ResizeState` class instance, used for keeping the `SizeView` state up to date.\n */ _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 * A method used for cleaning up. It removes the bindings and hides the view.\n *\n * @internal\n */ _dismiss() {\n this.unbind();\n this._isVisible = false;\n }\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\nclass Resizer extends ObservableMixin() {\n /**\n * Stores the state of the resizable host geometry, such as the original width, the currently proposed height, etc.\n *\n * Note that a new state is created for each resize transaction.\n */ get state() {\n return this._state;\n }\n /**\n * Makes resizer visible in the UI.\n */ show() {\n const editingView = this._options.editor.editing.view;\n editingView.change((writer)=>{\n writer.removeClass('ck-hidden', this._viewResizerWrapper);\n });\n }\n /**\n * Hides resizer in the UI.\n */ hide() {\n const editingView = this._options.editor.editing.view;\n editingView.change((writer)=>{\n writer.addClass('ck-hidden', this._viewResizerWrapper);\n });\n }\n /**\n * Attaches the resizer to the DOM.\n */ 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 * Starts the resizing process.\n *\n * Creates a new {@link #state} for the current process.\n *\n * @fires begin\n * @param domResizeHandle Clicked handle.\n */ 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 * Updates the proposed size based on `domEventData`.\n *\n * @fires updateSize\n */ 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 * Applies the geometry proposed with the resizer.\n *\n * @fires commit\n */ 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 * Cancels and rejects the proposed resize dimensions, hiding the UI.\n *\n * @fires cancel\n */ cancel() {\n this._cleanup();\n }\n /**\n * Destroys the resizer.\n */ destroy() {\n this.cancel();\n }\n /**\n * Redraws the resizer.\n *\n * @param handleHostRect Handle host rectangle might be given to improve performance.\n */ 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 * Cleans up the context state.\n */ _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 * Calculates the proposed size as the resize handles are dragged.\n *\n * @param domEventData Event data that caused the size update request. It should be used to calculate the proposed size.\n */ _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 * Obtains the resize host.\n *\n * Resize host is an object that receives dimensions which are the result of resizing.\n */ _getResizeHost() {\n const widgetWrapper = this._domResizerWrapper.parentElement;\n return this._options.getResizeHost(widgetWrapper);\n }\n /**\n * Obtains the handle host.\n *\n * Handle host is an object that the handles are aligned to.\n *\n * Handle host will not always be an entire widget itself. Take an image as an example. The image widget\n * contains an image and a caption. Only the image should be surrounded with handles.\n */ _getHandleHost() {\n const widgetWrapper = this._domResizerWrapper.parentElement;\n return this._options.getHandleHost(widgetWrapper);\n }\n /**\n * DOM container of the entire resize UI.\n *\n * Note that this property will have a value only after the element bound with the resizer is rendered\n * (otherwise `null`).\n */ get _domResizerWrapper() {\n return this._options.editor.editing.view.domConverter.mapViewToDom(this._viewResizerWrapper);\n }\n /**\n * Renders the resize handles in the DOM.\n *\n * @param domElement The resizer wrapper.\n */ _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 * Sets up the {@link #_sizeView} property and adds it to the passed `domElement`.\n */ _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 * @param options Resizer options.\n */ constructor(options){\n super();\n /**\n * A wrapper that is controlled by the resizer. This is usually a widget element.\n */ this._viewResizerWrapper = null;\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/**\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\nclass WidgetResize extends Plugin {\n /**\n * @inheritDoc\n */ static get pluginName() {\n return 'WidgetResize';\n }\n /**\n * @inheritDoc\n */ 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 * Redraws the selected resizer if there is any selected resizer and if it is visible.\n */ redrawSelectedResizer() {\n if (this.selectedResizer && this.selectedResizer.isVisible) {\n this.selectedResizer.redraw();\n }\n }\n /**\n * @inheritDoc\n */ 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 * Marks resizer as selected.\n */ select(resizer) {\n this.deselect();\n this.selectedResizer = resizer;\n this.selectedResizer.isSelected = true;\n }\n /**\n * Deselects currently set resizer.\n */ deselect() {\n if (this.selectedResizer) {\n this.selectedResizer.isSelected = false;\n }\n this.selectedResizer = null;\n }\n /**\n * @param options Resizer options.\n */ 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 * Returns a resizer created for a given view element (widget element).\n *\n * @param viewElement View element associated with the resizer.\n */ getResizerByViewElement(viewElement) {\n return this._resizers.get(viewElement);\n }\n /**\n * Returns a resizer that contains a given resize handle.\n */ _getResizerByHandle(domResizeHandle) {\n for (const resizer of this._resizers.values()){\n if (resizer.containsHandle(domResizeHandle)) {\n return resizer;\n }\n }\n }\n /**\n * @param domEventData Native DOM event.\n */ _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 * @param domEventData Native DOM event.\n */ _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 constructor(){\n super(...arguments);\n /**\n * A map of resizers created using this plugin instance.\n */ this._resizers = new Map();\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 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 ViewDocumentFragment,\n\ttype ViewDocumentMouseDownEvent,\n\ttype ViewElement,\n\ttype Schema,\n\ttype Position,\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\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( '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// Do nothing for single or double click inside nested editable.\n\t\tif ( isInsideNestedEditable( element ) ) {\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\telement = element.findAncestor( isWidget );\n\n\t\t\tif ( !element ) {\n\t\t\t\treturn;\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 * Returns `true` when element is a nested editable or is placed inside one.\n */\nfunction isInsideNestedEditable( element: ViewElement ) {\n\tlet currentElement: ViewElement | ViewDocumentFragment | null = element;\n\n\twhile ( currentElement ) {\n\t\tif ( currentElement.is( 'editableElement' ) && !currentElement.is( 'rootElement' ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Click on nested widget should select it.\n\t\tif ( isWidget( currentElement ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tcurrentElement = currentElement.parent;\n\t}\n\n\treturn false;\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 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 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","isInsideNestedEditable","findAncestor","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","currentElement","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, 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 // Do nothing for single or double click inside nested editable.\n if (isInsideNestedEditable(element)) {\n return;\n }\n // If target is not a widget element - check if one of the ancestors is.\n if (!isWidget(element)) {\n element = element.findAncestor(isWidget);\n if (!element) {\n return;\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 * Returns `true` when element is a nested editable or is placed inside one.\n */ function isInsideNestedEditable(element) {\n let currentElement = element;\n while(currentElement){\n if (currentElement.is('editableElement') && !currentElement.is('rootElement')) {\n return true;\n }\n // Click on nested widget should select it.\n if (isWidget(currentElement)) {\n return false;\n }\n currentElement = currentElement.parent;\n }\n return false;\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 ViewDocumentFragment,\n\ttype ViewDocumentMouseDownEvent,\n\ttype ViewElement,\n\ttype Schema,\n\ttype Position,\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\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// Do nothing for single or double click inside nested editable.\n\t\tif ( isInsideNestedEditable( element ) ) {\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\telement = element.findAncestor( isWidget );\n\n\t\t\tif ( !element ) {\n\t\t\t\treturn;\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 * Returns `true` when element is a nested editable or is placed inside one.\n */\nfunction isInsideNestedEditable( element: ViewElement ) {\n\tlet currentElement: ViewElement | ViewDocumentFragment | null = element;\n\n\twhile ( currentElement ) {\n\t\tif ( currentElement.is( 'editableElement' ) && !currentElement.is( 'rootElement' ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Click on nested widget should select it.\n\t\tif ( isWidget( currentElement ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tcurrentElement = currentElement.parent;\n\t}\n\n\treturn false;\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"]}