@ckeditor/ckeditor5-widget 43.2.0-alpha.7 → 43.3.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. package/dist/index.css.map +1 -1
  2. package/dist/index.js +20 -0
  3. package/dist/index.js.map +1 -1
  4. package/dist/translations/af.d.ts +8 -0
  5. package/dist/translations/af.js +5 -0
  6. package/dist/translations/af.umd.js +11 -0
  7. package/dist/translations/ar.js +1 -1
  8. package/dist/translations/ar.umd.js +1 -1
  9. package/dist/translations/ast.d.ts +8 -0
  10. package/dist/translations/ast.js +5 -0
  11. package/dist/translations/ast.umd.js +11 -0
  12. package/dist/translations/bs.d.ts +8 -0
  13. package/dist/translations/bs.js +5 -0
  14. package/dist/translations/bs.umd.js +11 -0
  15. package/dist/translations/cs.js +1 -1
  16. package/dist/translations/cs.umd.js +1 -1
  17. package/dist/translations/en-gb.d.ts +8 -0
  18. package/dist/translations/en-gb.js +5 -0
  19. package/dist/translations/en-gb.umd.js +11 -0
  20. package/dist/translations/en.js +1 -1
  21. package/dist/translations/en.umd.js +1 -1
  22. package/dist/translations/eo.d.ts +8 -0
  23. package/dist/translations/eo.js +5 -0
  24. package/dist/translations/eo.umd.js +11 -0
  25. package/dist/translations/es-co.d.ts +8 -0
  26. package/dist/translations/es-co.js +5 -0
  27. package/dist/translations/es-co.umd.js +11 -0
  28. package/dist/translations/es.js +1 -1
  29. package/dist/translations/es.umd.js +1 -1
  30. package/dist/translations/eu.d.ts +8 -0
  31. package/dist/translations/eu.js +5 -0
  32. package/dist/translations/eu.umd.js +11 -0
  33. package/dist/translations/fa.js +1 -1
  34. package/dist/translations/fa.umd.js +1 -1
  35. package/dist/translations/fr.js +1 -1
  36. package/dist/translations/fr.umd.js +1 -1
  37. package/dist/translations/gu.d.ts +8 -0
  38. package/dist/translations/gu.js +5 -0
  39. package/dist/translations/gu.umd.js +11 -0
  40. package/dist/translations/he.js +1 -1
  41. package/dist/translations/he.umd.js +1 -1
  42. package/dist/translations/hr.js +1 -1
  43. package/dist/translations/hr.umd.js +1 -1
  44. package/dist/translations/hy.d.ts +8 -0
  45. package/dist/translations/hy.js +5 -0
  46. package/dist/translations/hy.umd.js +11 -0
  47. package/dist/translations/it.js +1 -1
  48. package/dist/translations/it.umd.js +1 -1
  49. package/dist/translations/jv.d.ts +8 -0
  50. package/dist/translations/jv.js +5 -0
  51. package/dist/translations/jv.umd.js +11 -0
  52. package/dist/translations/kk.d.ts +8 -0
  53. package/dist/translations/kk.js +5 -0
  54. package/dist/translations/kk.umd.js +11 -0
  55. package/dist/translations/km.d.ts +8 -0
  56. package/dist/translations/km.js +5 -0
  57. package/dist/translations/km.umd.js +11 -0
  58. package/dist/translations/kn.d.ts +8 -0
  59. package/dist/translations/kn.js +5 -0
  60. package/dist/translations/kn.umd.js +11 -0
  61. package/dist/translations/lt.js +1 -1
  62. package/dist/translations/lt.umd.js +1 -1
  63. package/dist/translations/lv.js +1 -1
  64. package/dist/translations/lv.umd.js +1 -1
  65. package/dist/translations/nb.d.ts +8 -0
  66. package/dist/translations/nb.js +5 -0
  67. package/dist/translations/nb.umd.js +11 -0
  68. package/dist/translations/ne.d.ts +8 -0
  69. package/dist/translations/ne.js +5 -0
  70. package/dist/translations/ne.umd.js +11 -0
  71. package/dist/translations/oc.d.ts +8 -0
  72. package/dist/translations/oc.js +5 -0
  73. package/dist/translations/oc.umd.js +11 -0
  74. package/dist/translations/pl.js +1 -1
  75. package/dist/translations/pl.umd.js +1 -1
  76. package/dist/translations/pt-br.js +1 -1
  77. package/dist/translations/pt-br.umd.js +1 -1
  78. package/dist/translations/pt.js +1 -1
  79. package/dist/translations/pt.umd.js +1 -1
  80. package/dist/translations/ro.js +1 -1
  81. package/dist/translations/ro.umd.js +1 -1
  82. package/dist/translations/ru.js +1 -1
  83. package/dist/translations/ru.umd.js +1 -1
  84. package/dist/translations/si.d.ts +8 -0
  85. package/dist/translations/si.js +5 -0
  86. package/dist/translations/si.umd.js +11 -0
  87. package/dist/translations/sk.js +1 -1
  88. package/dist/translations/sk.umd.js +1 -1
  89. package/dist/translations/sl.d.ts +8 -0
  90. package/dist/translations/sl.js +5 -0
  91. package/dist/translations/sl.umd.js +11 -0
  92. package/dist/translations/sr-latn.js +1 -1
  93. package/dist/translations/sr-latn.umd.js +1 -1
  94. package/dist/translations/sr.js +1 -1
  95. package/dist/translations/sr.umd.js +1 -1
  96. package/dist/translations/ti.d.ts +8 -0
  97. package/dist/translations/ti.js +5 -0
  98. package/dist/translations/ti.umd.js +11 -0
  99. package/dist/translations/tt.d.ts +8 -0
  100. package/dist/translations/tt.js +5 -0
  101. package/dist/translations/tt.umd.js +11 -0
  102. package/dist/translations/ug.d.ts +8 -0
  103. package/dist/translations/ug.js +5 -0
  104. package/dist/translations/ug.umd.js +11 -0
  105. package/dist/translations/uk.js +1 -1
  106. package/dist/translations/uk.umd.js +1 -1
  107. package/dist/translations/uz.js +1 -1
  108. package/dist/translations/uz.umd.js +1 -1
  109. package/dist/widget.d.ts +4 -0
  110. package/dist/widgetresize.d.ts +4 -0
  111. package/dist/widgettoolbarrepository.d.ts +4 -0
  112. package/dist/widgettypearound/widgettypearound.d.ts +4 -0
  113. package/lang/translations/af.po +52 -0
  114. package/lang/translations/ar.po +4 -10
  115. package/lang/translations/ast.po +52 -0
  116. package/lang/translations/az.po +3 -9
  117. package/lang/translations/bg.po +3 -9
  118. package/lang/translations/bn.po +3 -9
  119. package/lang/translations/bs.po +52 -0
  120. package/lang/translations/ca.po +3 -9
  121. package/lang/translations/cs.po +4 -10
  122. package/lang/translations/da.po +3 -9
  123. package/lang/translations/de-ch.po +3 -9
  124. package/lang/translations/de.po +3 -9
  125. package/lang/translations/el.po +3 -9
  126. package/lang/translations/en-au.po +3 -9
  127. package/lang/translations/en-gb.po +52 -0
  128. package/lang/translations/en.po +5 -11
  129. package/lang/translations/eo.po +52 -0
  130. package/lang/translations/es-co.po +52 -0
  131. package/lang/translations/es.po +4 -10
  132. package/lang/translations/et.po +3 -9
  133. package/lang/translations/eu.po +52 -0
  134. package/lang/translations/fa.po +4 -10
  135. package/lang/translations/fi.po +3 -9
  136. package/lang/translations/fr.po +4 -10
  137. package/lang/translations/gl.po +3 -9
  138. package/lang/translations/gu.po +52 -0
  139. package/lang/translations/he.po +4 -10
  140. package/lang/translations/hi.po +3 -9
  141. package/lang/translations/hr.po +4 -10
  142. package/lang/translations/hu.po +3 -9
  143. package/lang/translations/hy.po +52 -0
  144. package/lang/translations/id.po +3 -9
  145. package/lang/translations/it.po +4 -10
  146. package/lang/translations/ja.po +3 -9
  147. package/lang/translations/jv.po +52 -0
  148. package/lang/translations/kk.po +52 -0
  149. package/lang/translations/km.po +52 -0
  150. package/lang/translations/kn.po +52 -0
  151. package/lang/translations/ko.po +3 -9
  152. package/lang/translations/ku.po +3 -9
  153. package/lang/translations/lt.po +4 -10
  154. package/lang/translations/lv.po +4 -10
  155. package/lang/translations/ms.po +3 -9
  156. package/lang/translations/nb.po +52 -0
  157. package/lang/translations/ne.po +52 -0
  158. package/lang/translations/nl.po +3 -9
  159. package/lang/translations/no.po +3 -9
  160. package/lang/translations/oc.po +52 -0
  161. package/lang/translations/pl.po +4 -10
  162. package/lang/translations/pt-br.po +4 -10
  163. package/lang/translations/pt.po +4 -10
  164. package/lang/translations/ro.po +4 -10
  165. package/lang/translations/ru.po +4 -10
  166. package/lang/translations/si.po +52 -0
  167. package/lang/translations/sk.po +4 -10
  168. package/lang/translations/sl.po +52 -0
  169. package/lang/translations/sq.po +3 -9
  170. package/lang/translations/sr-latn.po +4 -10
  171. package/lang/translations/sr.po +4 -10
  172. package/lang/translations/sv.po +3 -9
  173. package/lang/translations/th.po +3 -9
  174. package/lang/translations/ti.po +52 -0
  175. package/lang/translations/tk.po +3 -9
  176. package/lang/translations/tr.po +3 -9
  177. package/lang/translations/tt.po +52 -0
  178. package/lang/translations/ug.po +52 -0
  179. package/lang/translations/uk.po +4 -10
  180. package/lang/translations/ur.po +3 -9
  181. package/lang/translations/uz.po +4 -10
  182. package/lang/translations/vi.po +3 -9
  183. package/lang/translations/zh-cn.po +3 -9
  184. package/lang/translations/zh.po +3 -9
  185. package/package.json +7 -7
  186. package/src/widget.d.ts +4 -0
  187. package/src/widget.js +6 -0
  188. package/src/widgetresize.d.ts +4 -0
  189. package/src/widgetresize.js +6 -0
  190. package/src/widgettoolbarrepository.d.ts +4 -0
  191. package/src/widgettoolbarrepository.js +6 -0
  192. package/src/widgettypearound/widgettypearound.d.ts +4 -0
  193. package/src/widgettypearound/widgettypearound.js +6 -0
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["index.js","../src/highlightstack.ts","../src/utils.ts","../src/widgettypearound/utils.ts","../src/widgettypearound/widgettypearound.ts","../src/verticalnavigation.ts","../src/widget.ts","../src/widgettoolbarrepository.ts","../src/widgetresize/resizerstate.ts","../src/widgetresize/sizeview.ts","../src/widgetresize/resizer.ts","../src/widgetresize.ts"],"names":["HighlightStack","EmitterMixin","_stack","add","descriptor","writer","stack","oldTop","_insertDescriptor","newTop","compareDescriptors","fire","oldDescriptor","newDescriptor","remove","id","_removeDescriptor","index","findIndex","item","splice","i","shouldABeBeforeB","a","b","priority","classesToString","classes","Array","isArray","sort","join","WIDGET_CLASS_NAME","WIDGET_SELECTED_CLASS_NAME","isWidget","node","is","getCustomProperty","toWidget","element","options","CKEditorError","setAttribute","addClass","setCustomProperty","getFillerOffset","label","setLabel","hasSelectionHandle","addSelectionHandle","setHighlightHandling","addHighlight","toArray","attributes","key","removeHighlight","removeClass","removeAttribute","on","evt","data","addHighlightCallback","removeHighlightCallback","labelOrCreator","widgetLabel","push","getLabel","reduce","prev","current","toWidgetEditable","editable","isReadOnly","property","findOptimalInsertionRange","selection","model","selectedElement","getSelectedElement","typeAroundFakeCaretPosition","getTypeAroundFakeCaretPosition","createRange","createPositionAt","schema","viewToModelPositionOutsideModelElement","viewElementMatcher","mapper","viewPosition","viewParent","findMappedViewAncestor","modelParent","toModelElement","modelPosition","isAtStart","widgetElement","selectionHandle","createUIElement","class","domDocument","domElement","toDomElement","icon","IconView","set","dragHandleIcon","render","appendChild","insert","calculateResizeHostAncestorWidth","domResizeHost","getElementComputedWidth","width","paddingLeft","paddingRight","ownerDocument","defaultView","getComputedStyle","parseFloat","domResizeHostParent","parentElement","parentWidth","ancestorLevelLimit","currentLevel","checkedElement","isNaN","calculateResizeHostPercentageWidth","resizeHostRect","Rect","TYPE_AROUND_SELECTION_ATTRIBUTE","isTypeAroundWidget","viewElement","modelElement","isInline","getClosestTypeAroundDomButton","closest","getTypeAroundButtonPosition","classList","contains","getClosestWidgetViewElement","domConverter","widgetDomElement","mapDomToView","getAttribute","POSSIBLE_INSERTION_POSITIONS","RETURN_ARROW_ICON_ELEMENT","DOMParser","parseFromString","returnIcon","firstChild","PLUGIN_DISABLED_EDITING_ROOT_CLASS","WidgetTypeAround","Plugin","_currentFakeCaretModelElement","pluginName","requires","Enter","Delete","editor","editingView","editing","view","isEnabled","change","root","document","roots","removeSelectionAttribute","_enableTypeAroundUIInjection","_enableInsertingParagraphsOnButtonClick","_enableInsertingParagraphsOnEnterKeypress","_enableInsertingParagraphsOnTypingKeystroke","_enableTypeAroundFakeCaretActivationUsingKeyboardArrows","_enableDeleteIntegration","_enableInsertContentIntegration","_enableInsertObjectIntegration","_enableDeleteContentIntegration","destroy","_insertParagraph","widgetModelElement","position","attributesToCopy","getAttributesWithProperty","execute","focus","scrollToTheSelection","_listenToIfEnabled","emitter","event","callback","listenTo","args","modelSelection","selectedModelElement","t","locale","buttonTitles","before","after","downcastDispatcher","conversionApi","toViewElement","injectUIIntoWidget","domEventData","_handleArrowKeyPress","context","directChange","selectedViewElement","map","positionToWidgetCssClass","ui","focusTracker","name","isFocused","keyCode","isForward","isForwardArrowKeyCode","contentLanguageDirection","shouldStopAndPreventDefault","_handleArrowKeyPressOnSelectedWidget","isCollapsed","_handleArrowKeyPressWhenSelectionNextToAWidget","shiftKey","_handleArrowKeyPressWhenNonCollapsedSelection","preventDefault","stop","isLeavingWidget","setSelectionAttribute","widgetPlugin","plugins","get","modelElementNextToSelection","_getObjectElementNextToSelection","viewElementNextToSelection","_setSelectionOverElement","selectedModelNode","getLastPosition","nodeBefore","getFirstPosition","nodeAfter","selectedViewNode","setSelection","button","domTarget","buttonPosition","widgetViewElement","eventPhase","wasHandled","_insertParagraphAccordingToFakeCaretPosition","isSoft","viewDocument","env","isAndroid","direction","selectedModelWidget","isFakeCaretBefore","isDeleteForward","shouldDeleteEntireWidget","createSelection","range","getNearestSelectionRange","probe","start","modifySelection","isEqual","deepestEmptyRangeAncestor","getDeepestEmptyElementAncestor","parent","deleteContent","doNotAutoparagraph","documentSelection","content","selectable","result","insertContent","findOptimalPosition","viewWriter","typeAroundWrapper","wrapperDomElement","injectButtons","injectFakeCaret","buttonTemplate","Template","tag","title","children","importNode","caretTemplate","deepestEmptyAncestor","ancestor","getAncestors","parentFirst","childCount","isLimit","verticalNavigationHandler","arrowUpPressed","keyCodes","arrowup","arrowDownPressed","arrowdown","expandSelection","selectionWillShrink","findTextRangeFromSelection","isSingleLineRange","newPosition","end","newSelection","anchor","setFocus","stopPropagation","startPosition","endPosition","getNearestNonInlineLimit","lastRangePosition","getNearestTextPosition","firstRangePosition","createRangeIn","walkerValueType","previousPosition","type","getWalker","isBlock","checkChild","nextPosition","modelRange","isAtEnd","viewRange","toViewRange","domRange","viewRangeToDom","rects","getDomRangeRects","boundaryVerticalPosition","rect","undefined","Math","round","bottom","top","max","isBackward","Widget","_previouslySelected","Set","consumable","consume","createRangeOn","fake","_clearPreviouslySelectedWidgets","viewSelection","lastMarked","getRanges","value","isChild","addObserver","MouseObserver","_onMousedown","_handleSelectionChangeOnArrowKeyPress","_preventDefaultOnArrowKeyPress","_handleDelete","_selectFirstNestedEditable","_selectAncestorWidget","keystroke","esc","accessibility","addKeystrokeInfoGroup","keystrokes","eventInfo","target","domEvent","detail","_selectBlockContent","editableOrWidgetElement","findClosestEditableOrWidgetAncestor","clickTargetFromPoint","getElementFromMouseEvent","findTextBlockAncestor","nextTextBlock","findNextTextBlock","createPositionAfter","objectElement","getLocalizedArrowKeyCodeDirection","isVerticalNavigation","isObject","newRange","firstPosition","lastPosition","firstSelectedNode","lastSelectedNode","objectElementNextToSelection","modelDocument","canEditAt","previousNode","isEmpty","nodeToRemove","forward","widget","clear","getFirstRange","getItems","positionParent","positionParentElement","findAncestor","currentElement","getRangeFromMouseEvent","domRangeToView","viewNode","from","includes","includeSelf","treeWalker","TreeWalker","WidgetToolbarRepository","_toolbarDefinitions","Map","_balloon","ContextualBalloon","has","balloonToolbar","isWidgetSelected","_updateToolbarsVisibility","toolbarConfig","values","register","toolbarId","ariaLabel","items","getRelatedElement","balloonClassName","length","logWarning","toolbarView","ToolbarView","toolbarDefinition","itemsConfig","initialized","addToolbar","isContextual","beforeFocus","relatedElement","_showToolbar","afterBlur","_hideToolbar","maxRelatedElementDepth","deepestRelatedElement","deepestToolbarDefinition","definition","_isToolbarInBalloon","_isToolbarVisible","relatedElementDepth","stopListening","repositionContextualBalloon","fillFromConfig","componentFactory","getBalloonPositionData","toolbar","visibleView","hasView","balloon","updatePosition","defaultPositions","BalloonPanelView","mapViewToDom","positions","northArrowSouth","northArrowSouthWest","northArrowSouthEast","southArrowNorth","southArrowNorthWest","southArrowNorthEast","viewportStickyNorth","ResizeState","ObservableMixin","constructor","_options","_referenceCoordinates","originalWidth","_originalWidth","originalHeight","_originalHeight","originalWidthPercents","_originalWidthPercents","aspectRatio","_aspectRatio","domResizeHandle","domHandleHost","clientRect","activeHandlePosition","getHandlePosition","getAbsoluteBoundaryPoint","getOppositePosition","height","widthStyle","style","match","update","newSize","proposedWidth","proposedHeight","proposedWidthPercents","widthPercents","proposedHandleHostWidth","handleHostWidth","proposedHandleHostHeight","handleHostHeight","resizerPosition","elementRect","positionParts","split","ret","x","right","left","y","scrollX","scrollY","getResizerHandleClass","domHandle","resizerPositions","parts","replacements","SizeView","View","bind","bindTemplate","setTemplate","to","display","if","visible","text","_bindToState","resizeState","unit","unbind","_isVisible","Resizer","_viewResizerWrapper","isSelected","decorate","state","_cleanup","_state","that","viewResizerWrapper","_appendHandles","_appendSizeUI","isVisible","hide","show","redraw","begin","_sizeView","_initialViewWidth","getStyle","_getHandleHost","_getResizeHost","updateSize","_proposeNewSize","newWidth","setStyle","domHandleHostRect","domResizeHostRect","newValue","onCommit","cancel","handleHostRect","domWrapper","_domResizerWrapper","existsInDom","widgetWrapper","handleHost","resizerWrapper","currentDimensions","newDimensions","isSameNode","offsetWidth","offsetHeight","offsetLeft","offsetTop","compareArrays","containsHandle","isResizeHandle","_dismiss","currentCoordinates","extractCoordinates","isCentered","enlargement","endsWith","abs","dominant","min","getResizeHost","getHandleHost","currentPosition","getResizerClass","pageX","pageY","WidgetResize","_resizers","_observer","_redrawSelectedResizerThrottled","global","window","DomEmitterMixin","_mouseDownListener","_mouseMoveListener","_mouseUpListener","throttle","redrawSelectedResizer","resizer","isAttached","delete","getResizerByViewElement","select","deselect","selectedResizer","attachTo","attach","widgetToolbarRepository","forceDisabled","clearForceDisabled","_getResizerByHandle","resizeHandle","_activeResizer","commit"],"mappings":"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AAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC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","file":"index.js.map","sourcesContent":["import { Plugin } from '@ckeditor/ckeditor5-core/dist/index.js';\nimport { MouseObserver, TreeWalker } from '@ckeditor/ckeditor5-engine/dist/index.js';\nimport { Delete } from '@ckeditor/ckeditor5-typing/dist/index.js';\nimport { EmitterMixin, CKEditorError, Rect, toArray, isForwardArrowKeyCode, env, keyCodes, getLocalizedArrowKeyCodeDirection, getRangeFromMouseEvent, logWarning, ObservableMixin, compareArrays, global, DomEmitterMixin } from '@ckeditor/ckeditor5-utils/dist/index.js';\nimport { IconView, Template, ContextualBalloon, ToolbarView, BalloonPanelView, View } from '@ckeditor/ckeditor5-ui/dist/index.js';\nimport { Enter } from '@ckeditor/ckeditor5-enter/dist/index.js';\nimport { throttle } from 'lodash-es';\n\n/**\n * Class used to handle the correct order of highlights on elements.\n *\n * When different highlights are applied to same element the correct order should be preserved:\n *\n * * highlight with highest priority should be applied,\n * * if two highlights have same priority - sort by CSS class provided in\n * {@link module:engine/conversion/downcasthelpers~HighlightDescriptor}.\n *\n * This way, highlight will be applied with the same rules it is applied on texts.\n */ class HighlightStack extends /* #__PURE__ */ EmitterMixin() {\n _stack = [];\n /**\n\t * Adds highlight descriptor to the stack.\n\t *\n\t * @fires change:top\n\t */ add(descriptor, writer) {\n const stack = this._stack;\n // Save top descriptor and insert new one. If top is changed - fire event.\n const oldTop = stack[0];\n this._insertDescriptor(descriptor);\n const newTop = stack[0];\n // When new object is at the top and stores different information.\n if (oldTop !== newTop && !compareDescriptors(oldTop, newTop)) {\n this.fire('change:top', {\n oldDescriptor: oldTop,\n newDescriptor: newTop,\n writer\n });\n }\n }\n /**\n\t * Removes highlight descriptor from the stack.\n\t *\n\t * @fires change:top\n\t * @param id Id of the descriptor to remove.\n\t */ remove(id, writer) {\n const stack = this._stack;\n const oldTop = stack[0];\n this._removeDescriptor(id);\n const newTop = stack[0];\n // When new object is at the top and stores different information.\n if (oldTop !== newTop && !compareDescriptors(oldTop, newTop)) {\n this.fire('change:top', {\n oldDescriptor: oldTop,\n newDescriptor: newTop,\n writer\n });\n }\n }\n /**\n\t * Inserts a given descriptor in correct place in the stack. It also takes care about updating information\n\t * when descriptor with same id is already present.\n\t */ _insertDescriptor(descriptor) {\n const stack = this._stack;\n const index = stack.findIndex((item)=>item.id === descriptor.id);\n // Inserting exact same descriptor - do nothing.\n if (compareDescriptors(descriptor, stack[index])) {\n return;\n }\n // If descriptor with same id but with different information is on the stack - remove it.\n if (index > -1) {\n stack.splice(index, 1);\n }\n // Find correct place to insert descriptor in the stack.\n // It has different information (for example priority) so it must be re-inserted in correct place.\n let i = 0;\n while(stack[i] && shouldABeBeforeB(stack[i], descriptor)){\n i++;\n }\n stack.splice(i, 0, descriptor);\n }\n /**\n\t * Removes descriptor with given id from the stack.\n\t *\n\t * @param id Descriptor's id.\n\t */ _removeDescriptor(id) {\n const stack = this._stack;\n const index = stack.findIndex((item)=>item.id === id);\n // If descriptor with same id is on the list - remove it.\n if (index > -1) {\n stack.splice(index, 1);\n }\n }\n}\n/**\n * Compares two descriptors by checking their priority and class list.\n *\n * @returns Returns true if both descriptors are defined and have same priority and classes.\n */ function compareDescriptors(a, b) {\n return a && b && a.priority == b.priority && classesToString(a.classes) == classesToString(b.classes);\n}\n/**\n * Checks whenever first descriptor should be placed in the stack before second one.\n */ function shouldABeBeforeB(a, b) {\n if (a.priority > b.priority) {\n return true;\n } else if (a.priority < b.priority) {\n return false;\n }\n // When priorities are equal and names are different - use classes to compare.\n return classesToString(a.classes) > classesToString(b.classes);\n}\n/**\n * Converts CSS classes passed with {@link module:engine/conversion/downcasthelpers~HighlightDescriptor} to\n * sorted string.\n */ function classesToString(classes) {\n return Array.isArray(classes) ? classes.sort().join(',') : classes;\n}\n\nvar dragHandleIcon = \"<svg viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M4 0v1H1v3H0V.5A.5.5 0 0 1 .5 0H4zm8 0h3.5a.5.5 0 0 1 .5.5V4h-1V1h-3V0zM4 16H.5a.5.5 0 0 1-.5-.5V12h1v3h3v1zm8 0v-1h3v-3h1v3.5a.5.5 0 0 1-.5.5H12z\\\"/><path fill-opacity=\\\".256\\\" d=\\\"M1 1h14v14H1z\\\"/><g class=\\\"ck-icon__selected-indicator\\\"><path d=\\\"M7 0h2v1H7V0zM0 7h1v2H0V7zm15 0h1v2h-1V7zm-8 8h2v1H7v-1z\\\"/><path fill-opacity=\\\".254\\\" d=\\\"M1 1h14v14H1z\\\"/></g></svg>\";\n\n/**\n * CSS class added to each widget element.\n */ const WIDGET_CLASS_NAME = 'ck-widget';\n/**\n * CSS class added to currently selected widget element.\n */ const WIDGET_SELECTED_CLASS_NAME = 'ck-widget_selected';\n/**\n * Returns `true` if given {@link module:engine/view/node~Node} is an {@link module:engine/view/element~Element} and a widget.\n */ function isWidget(node) {\n if (!node.is('element')) {\n return false;\n }\n return !!node.getCustomProperty('widget');\n}\n/**\n * Converts the given {@link module:engine/view/element~Element} to a widget in the following way:\n *\n * * sets the `contenteditable` attribute to `\"false\"`,\n * * adds the `ck-widget` CSS class,\n * * adds a custom {@link module:engine/view/element~Element#getFillerOffset `getFillerOffset()`} method returning `null`,\n * * adds a custom property allowing to recognize widget elements by using {@link ~isWidget `isWidget()`},\n * * implements the {@link ~setHighlightHandling view highlight on widgets}.\n *\n * This function needs to be used in conjunction with\n * {@link module:engine/conversion/downcasthelpers~DowncastHelpers downcast conversion helpers}\n * like {@link module:engine/conversion/downcasthelpers~DowncastHelpers#elementToElement `elementToElement()`}.\n * Moreover, typically you will want to use `toWidget()` only for `editingDowncast`, while keeping the `dataDowncast` clean.\n *\n * For example, in order to convert a `<widget>` model element to `<div class=\"widget\">` in the view, you can define\n * such converters:\n *\n * ```ts\n * editor.conversion.for( 'editingDowncast' )\n * \t.elementToElement( {\n * \t\tmodel: 'widget',\n * \t\tview: ( modelItem, { writer } ) => {\n * \t\t\tconst div = writer.createContainerElement( 'div', { class: 'widget' } );\n *\n * \t\t\treturn toWidget( div, writer, { label: 'some widget' } );\n * \t\t}\n * \t} );\n *\n * editor.conversion.for( 'dataDowncast' )\n * \t.elementToElement( {\n * \t\tmodel: 'widget',\n * \t\tview: ( modelItem, { writer } ) => {\n * \t\t\treturn writer.createContainerElement( 'div', { class: 'widget' } );\n * \t\t}\n * \t} );\n * ```\n *\n * See the full source code of the widget (with a nested editable) schema definition and converters in\n * [this sample](https://github.com/ckeditor/ckeditor5-widget/blob/master/tests/manual/widget-with-nestededitable.js).\n *\n * @param options Additional options.\n * @param options.label Element's label provided to the {@link ~setLabel} function. It can be passed as\n * a plain string or a function returning a string. It represents the widget for assistive technologies (like screen readers).\n * @param options.hasSelectionHandle If `true`, the widget will have a selection handle added.\n * @returns Returns the same element.\n */ function toWidget(element, writer, options = {}) {\n if (!element.is('containerElement')) {\n /**\n\t\t * The element passed to `toWidget()` must be a {@link module:engine/view/containerelement~ContainerElement}\n\t\t * instance.\n\t\t *\n\t\t * @error widget-to-widget-wrong-element-type\n\t\t * @param element The view element passed to `toWidget()`.\n\t\t */ throw new CKEditorError('widget-to-widget-wrong-element-type', null, {\n element\n });\n }\n writer.setAttribute('contenteditable', 'false', element);\n writer.addClass(WIDGET_CLASS_NAME, element);\n writer.setCustomProperty('widget', true, element);\n element.getFillerOffset = getFillerOffset;\n writer.setCustomProperty('widgetLabel', [], element);\n if (options.label) {\n setLabel(element, options.label);\n }\n if (options.hasSelectionHandle) {\n addSelectionHandle(element, writer);\n }\n setHighlightHandling(element, writer);\n return element;\n}\n/**\n * Default handler for adding a highlight on a widget.\n * It adds CSS class and attributes basing on the given highlight descriptor.\n */ function addHighlight(element, descriptor, writer) {\n if (descriptor.classes) {\n writer.addClass(toArray(descriptor.classes), element);\n }\n if (descriptor.attributes) {\n for(const key in descriptor.attributes){\n writer.setAttribute(key, descriptor.attributes[key], element);\n }\n }\n}\n/**\n * Default handler for removing a highlight from a widget.\n * It removes CSS class and attributes basing on the given highlight descriptor.\n */ function removeHighlight(element, descriptor, writer) {\n if (descriptor.classes) {\n writer.removeClass(toArray(descriptor.classes), element);\n }\n if (descriptor.attributes) {\n for(const key in descriptor.attributes){\n writer.removeAttribute(key, element);\n }\n }\n}\n/**\n * Sets highlight handling methods. Uses {@link module:widget/highlightstack~HighlightStack} to\n * properly determine which highlight descriptor should be used at given time.\n */ function setHighlightHandling(element, writer, add = addHighlight, remove = removeHighlight) {\n const stack = new HighlightStack();\n stack.on('change:top', (evt, data)=>{\n if (data.oldDescriptor) {\n remove(element, data.oldDescriptor, data.writer);\n }\n if (data.newDescriptor) {\n add(element, data.newDescriptor, data.writer);\n }\n });\n const addHighlightCallback = (element, descriptor, writer)=>stack.add(descriptor, writer);\n const removeHighlightCallback = (element, id, writer)=>stack.remove(id, writer);\n writer.setCustomProperty('addHighlight', addHighlightCallback, element);\n writer.setCustomProperty('removeHighlight', removeHighlightCallback, element);\n}\n/**\n * Sets label for given element.\n * It can be passed as a plain string or a function returning a string. Function will be called each time label is retrieved by\n * {@link ~getLabel `getLabel()`}.\n */ function setLabel(element, labelOrCreator) {\n const widgetLabel = element.getCustomProperty('widgetLabel');\n widgetLabel.push(labelOrCreator);\n}\n/**\n * Returns the label of the provided element.\n */ function getLabel(element) {\n const widgetLabel = element.getCustomProperty('widgetLabel');\n return widgetLabel.reduce((prev, current)=>{\n if (typeof current === 'function') {\n return prev ? prev + '. ' + current() : current();\n } else {\n return prev ? prev + '. ' + current : current;\n }\n }, '');\n}\n/**\n * Adds functionality to the provided {@link module:engine/view/editableelement~EditableElement} to act as a widget's editable:\n *\n * * sets the `contenteditable` attribute to `true` when {@link module:engine/view/editableelement~EditableElement#isReadOnly} is `false`,\n * otherwise sets it to `false`,\n * * adds the `ck-editor__editable` and `ck-editor__nested-editable` CSS classes,\n * * adds the `ck-editor__nested-editable_focused` CSS class when the editable is focused and removes it when it is blurred.\n * * implements the {@link ~setHighlightHandling view highlight on widget's editable}.\n *\n * Similarly to {@link ~toWidget `toWidget()`} this function should be used in `editingDowncast` only and it is usually\n * used together with {@link module:engine/conversion/downcasthelpers~DowncastHelpers#elementToElement `elementToElement()`}.\n *\n * For example, in order to convert a `<nested>` model element to `<div class=\"nested\">` in the view, you can define\n * such converters:\n *\n * ```ts\n * editor.conversion.for( 'editingDowncast' )\n * \t.elementToElement( {\n * \t\tmodel: 'nested',\n * \t\tview: ( modelItem, { writer } ) => {\n * \t\t\tconst div = writer.createEditableElement( 'div', { class: 'nested' } );\n *\n * \t\t\treturn toWidgetEditable( nested, writer, { label: 'label for editable' } );\n * \t\t}\n * \t} );\n *\n * editor.conversion.for( 'dataDowncast' )\n * \t.elementToElement( {\n * \t\tmodel: 'nested',\n * \t\tview: ( modelItem, { writer } ) => {\n * \t\t\treturn writer.createContainerElement( 'div', { class: 'nested' } );\n * \t\t}\n * \t} );\n * ```\n *\n * See the full source code of the widget (with nested editable) schema definition and converters in\n * [this sample](https://github.com/ckeditor/ckeditor5-widget/blob/master/tests/manual/widget-with-nestededitable.js).\n *\n * @param options Additional options.\n * @param options.label Editable's label used by assistive technologies (e.g. screen readers).\n * @returns Returns the same element that was provided in the `editable` parameter\n */ function toWidgetEditable(editable, writer, options = {}) {\n writer.addClass([\n 'ck-editor__editable',\n 'ck-editor__nested-editable'\n ], editable);\n writer.setAttribute('role', 'textbox', editable);\n writer.setAttribute('tabindex', '-1', editable);\n if (options.label) {\n writer.setAttribute('aria-label', options.label, editable);\n }\n // Set initial contenteditable value.\n writer.setAttribute('contenteditable', editable.isReadOnly ? 'false' : 'true', editable);\n // Bind the contenteditable property to element#isReadOnly.\n editable.on('change:isReadOnly', (evt, property, is)=>{\n writer.setAttribute('contenteditable', is ? 'false' : 'true', editable);\n });\n editable.on('change:isFocused', (evt, property, is)=>{\n if (is) {\n writer.addClass('ck-editor__nested-editable_focused', editable);\n } else {\n writer.removeClass('ck-editor__nested-editable_focused', editable);\n }\n });\n setHighlightHandling(editable, writer);\n return editable;\n}\n/**\n * Returns a model range which is optimal (in terms of UX) for inserting a widget block.\n *\n * For instance, if a selection is in the middle of a paragraph, the collapsed range before this paragraph\n * will be returned so that it is not split. If the selection is at the end of a paragraph,\n * the collapsed range after this paragraph will be returned.\n *\n * Note: If the selection is placed in an empty block, the range in that block will be returned. If that range\n * is then passed to {@link module:engine/model/model~Model#insertContent}, the block will be fully replaced\n * by the inserted widget block.\n *\n * @param selection The selection based on which the insertion position should be calculated.\n * @param model Model instance.\n * @returns The optimal range.\n */ function findOptimalInsertionRange(selection, model) {\n const selectedElement = selection.getSelectedElement();\n if (selectedElement) {\n const typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition(selection);\n // If the WidgetTypeAround \"fake caret\" is displayed, use its position for the insertion\n // to provide the most predictable UX (https://github.com/ckeditor/ckeditor5/issues/7438).\n if (typeAroundFakeCaretPosition) {\n return model.createRange(model.createPositionAt(selectedElement, typeAroundFakeCaretPosition));\n }\n }\n return model.schema.findOptimalInsertionRange(selection);\n}\n/**\n * A util to be used in order to map view positions to correct model positions when implementing a widget\n * which renders non-empty view element for an empty model element.\n *\n * For example:\n *\n * ```\n * // Model:\n * <placeholder type=\"name\"></placeholder>\n *\n * // View:\n * <span class=\"placeholder\">name</span>\n * ```\n *\n * In such case, view positions inside `<span>` cannot be correctly mapped to the model (because the model element is empty).\n * To handle mapping positions inside `<span class=\"placeholder\">` to the model use this util as follows:\n *\n * ```ts\n * editor.editing.mapper.on(\n * \t'viewToModelPosition',\n * \tviewToModelPositionOutsideModelElement( model, viewElement => viewElement.hasClass( 'placeholder' ) )\n * );\n * ```\n *\n * The callback will try to map the view offset of selection to an expected model position.\n *\n * 1. When the position is at the end (or in the middle) of the inline widget:\n *\n * ```\n * // View:\n * <p>foo <span class=\"placeholder\">name|</span> bar</p>\n *\n * // Model:\n * <paragraph>foo <placeholder type=\"name\"></placeholder>| bar</paragraph>\n * ```\n *\n * 2. When the position is at the beginning of the inline widget:\n *\n * ```\n * // View:\n * <p>foo <span class=\"placeholder\">|name</span> bar</p>\n *\n * // Model:\n * <paragraph>foo |<placeholder type=\"name\"></placeholder> bar</paragraph>\n * ```\n *\n * @param model Model instance on which the callback operates.\n * @param viewElementMatcher Function that is passed a view element and should return `true` if the custom mapping\n * should be applied to the given view element.\n */ function viewToModelPositionOutsideModelElement(model, viewElementMatcher) {\n return (evt, data)=>{\n const { mapper, viewPosition } = data;\n const viewParent = mapper.findMappedViewAncestor(viewPosition);\n if (!viewElementMatcher(viewParent)) {\n return;\n }\n const modelParent = mapper.toModelElement(viewParent);\n data.modelPosition = model.createPositionAt(modelParent, viewPosition.isAtStart ? 'before' : 'after');\n };\n}\n/**\n * Default filler offset function applied to all widget elements.\n */ function getFillerOffset() {\n return null;\n}\n/**\n * Adds a drag handle to the widget.\n */ function addSelectionHandle(widgetElement, writer) {\n const selectionHandle = writer.createUIElement('div', {\n class: 'ck ck-widget__selection-handle'\n }, function(domDocument) {\n const domElement = this.toDomElement(domDocument);\n // Use the IconView from the ui library.\n const icon = new IconView();\n icon.set('content', dragHandleIcon);\n // Render the icon view right away to append its #element to the selectionHandle DOM element.\n icon.render();\n domElement.appendChild(icon.element);\n return domElement;\n });\n // Append the selection handle into the widget wrapper.\n writer.insert(writer.createPositionAt(widgetElement, 0), selectionHandle);\n writer.addClass([\n 'ck-widget_with-selection-handle'\n ], widgetElement);\n}\n/**\n * Starting from a DOM resize host element (an element that receives dimensions as a result of resizing),\n * this helper returns the width of the found ancestor element.\n *\n *\t* It searches up to 5 levels of ancestors only.\n *\n * @param domResizeHost Resize host DOM element that receives dimensions as a result of resizing.\n * @returns Width of ancestor element in pixels or 0 if no ancestor with a computed width has been found.\n */ function calculateResizeHostAncestorWidth(domResizeHost) {\n const getElementComputedWidth = (element)=>{\n const { width, paddingLeft, paddingRight } = element.ownerDocument.defaultView.getComputedStyle(element);\n return parseFloat(width) - (parseFloat(paddingLeft) || 0) - (parseFloat(paddingRight) || 0);\n };\n const domResizeHostParent = domResizeHost.parentElement;\n if (!domResizeHostParent) {\n return 0;\n }\n // Need to use computed style as it properly excludes parent's paddings from the returned value.\n let parentWidth = getElementComputedWidth(domResizeHostParent);\n // Sometimes parent width cannot be accessed. If that happens we should go up in the elements tree\n // and try to get width from next ancestor.\n // https://github.com/ckeditor/ckeditor5/issues/10776\n const ancestorLevelLimit = 5;\n let currentLevel = 0;\n let checkedElement = domResizeHostParent;\n while(isNaN(parentWidth)){\n checkedElement = checkedElement.parentElement;\n if (++currentLevel > ancestorLevelLimit) {\n return 0;\n }\n parentWidth = getElementComputedWidth(checkedElement);\n }\n return parentWidth;\n}\n/**\n * Calculates a relative width of a `domResizeHost` compared to its ancestor in percents.\n *\n * @param domResizeHost Resize host DOM element.\n * @returns Percentage value between 0 and 100.\n */ function calculateResizeHostPercentageWidth(domResizeHost, resizeHostRect = new Rect(domResizeHost)) {\n const parentWidth = calculateResizeHostAncestorWidth(domResizeHost);\n if (!parentWidth) {\n return 0;\n }\n return resizeHostRect.width / parentWidth * 100;\n}\n\n/**\n * The name of the type around model selection attribute responsible for\n * displaying a fake caret next to a selected widget.\n */ const TYPE_AROUND_SELECTION_ATTRIBUTE = 'widget-type-around';\n/**\n * Checks if an element is a widget that qualifies to get the widget type around UI.\n */ function isTypeAroundWidget(viewElement, modelElement, schema) {\n return !!viewElement && isWidget(viewElement) && !schema.isInline(modelElement);\n}\n/**\n * For the passed HTML element, this helper finds the closest widget type around button ancestor.\n */ function getClosestTypeAroundDomButton(domElement) {\n return domElement.closest('.ck-widget__type-around__button');\n}\n/**\n * For the passed widget type around button element, this helper determines at which position\n * the paragraph would be inserted into the content if, for instance, the button was\n * clicked by the user.\n *\n * @returns The position of the button.\n */ function getTypeAroundButtonPosition(domElement) {\n return domElement.classList.contains('ck-widget__type-around__button_before') ? 'before' : 'after';\n}\n/**\n * For the passed HTML element, this helper returns the closest view widget ancestor.\n */ function getClosestWidgetViewElement(domElement, domConverter) {\n const widgetDomElement = domElement.closest('.ck-widget');\n return domConverter.mapDomToView(widgetDomElement);\n}\n/**\n * For the passed selection instance, it returns the position of the fake caret displayed next to a widget.\n *\n * **Note**: If the fake caret is not currently displayed, `null` is returned.\n *\n * @returns The position of the fake caret or `null` when none is present.\n */ function getTypeAroundFakeCaretPosition(selection) {\n return selection.getAttribute(TYPE_AROUND_SELECTION_ATTRIBUTE);\n}\n\nvar returnIcon = \"<svg viewBox=\\\"0 0 10 8\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M9.055.263v3.972h-6.77M1 4.216l2-2.038m-2 2 2 2.038\\\"/></svg>\";\n\nconst POSSIBLE_INSERTION_POSITIONS = [\n 'before',\n 'after'\n];\n// Do the SVG parsing once and then clone the result <svg> DOM element for each new button.\nconst RETURN_ARROW_ICON_ELEMENT = new DOMParser().parseFromString(returnIcon, 'image/svg+xml').firstChild;\nconst PLUGIN_DISABLED_EDITING_ROOT_CLASS = 'ck-widget__type-around_disabled';\n/**\n * A plugin that allows users to type around widgets where normally it is impossible to place the caret due\n * to limitations of web browsers. These \"tight spots\" occur, for instance, before (or after) a widget being\n * the first (or last) child of its parent or between two block widgets.\n *\n * This plugin extends the {@link module:widget/widget~Widget `Widget`} plugin and injects the user interface\n * with two buttons into each widget instance in the editor. Each of the buttons can be clicked by the\n * user if the widget is next to the \"tight spot\". Once clicked, a paragraph is created with the selection anchored\n * in it so that users can type (or insert content, paste, etc.) straight away.\n */ class WidgetTypeAround extends Plugin {\n /**\n\t * A reference to the model widget element that has the fake caret active\n\t * on either side of it. It is later used to remove CSS classes associated with the fake caret\n\t * when the widget no longer needs it.\n\t */ _currentFakeCaretModelElement = null;\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'WidgetTypeAround';\n }\n /**\n\t * @inheritDoc\n\t */ static get requires() {\n return [\n Enter,\n Delete\n ];\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const editor = this.editor;\n const editingView = editor.editing.view;\n // Set a CSS class on the view editing root when the plugin is disabled so all the buttons\n // and lines visually disappear. All the interactions are disabled in individual plugin methods.\n this.on('change:isEnabled', (evt, data, isEnabled)=>{\n editingView.change((writer)=>{\n for (const root of editingView.document.roots){\n if (isEnabled) {\n writer.removeClass(PLUGIN_DISABLED_EDITING_ROOT_CLASS, root);\n } else {\n writer.addClass(PLUGIN_DISABLED_EDITING_ROOT_CLASS, root);\n }\n }\n });\n if (!isEnabled) {\n editor.model.change((writer)=>{\n writer.removeSelectionAttribute(TYPE_AROUND_SELECTION_ATTRIBUTE);\n });\n }\n });\n this._enableTypeAroundUIInjection();\n this._enableInsertingParagraphsOnButtonClick();\n this._enableInsertingParagraphsOnEnterKeypress();\n this._enableInsertingParagraphsOnTypingKeystroke();\n this._enableTypeAroundFakeCaretActivationUsingKeyboardArrows();\n this._enableDeleteIntegration();\n this._enableInsertContentIntegration();\n this._enableInsertObjectIntegration();\n this._enableDeleteContentIntegration();\n }\n /**\n\t * @inheritDoc\n\t */ destroy() {\n super.destroy();\n this._currentFakeCaretModelElement = null;\n }\n /**\n\t * Inserts a new paragraph next to a widget element with the selection anchored in it.\n\t *\n\t * **Note**: This method is heavily user-oriented and will both focus the editing view and scroll\n\t * the viewport to the selection in the inserted paragraph.\n\t *\n\t * @param widgetModelElement The model widget element next to which a paragraph is inserted.\n\t * @param position The position where the paragraph is inserted. Either `'before'` or `'after'` the widget.\n\t */ _insertParagraph(widgetModelElement, position) {\n const editor = this.editor;\n const editingView = editor.editing.view;\n const attributesToCopy = editor.model.schema.getAttributesWithProperty(widgetModelElement, 'copyOnReplace', true);\n editor.execute('insertParagraph', {\n position: editor.model.createPositionAt(widgetModelElement, position),\n attributes: attributesToCopy\n });\n editingView.focus();\n editingView.scrollToTheSelection();\n }\n /**\n\t * A wrapper for the {@link module:utils/emittermixin~Emitter#listenTo} method that executes the callbacks only\n\t * when the plugin {@link #isEnabled is enabled}.\n\t *\n\t * @param emitter The object that fires the event.\n\t * @param event The name of the event.\n\t * @param callback The function to be called on event.\n\t * @param options Additional options.\n\t * @param options.priority The priority of this event callback. The higher the priority value the sooner\n\t * the callback will be fired. Events having the same priority are called in the order they were added.\n\t */ _listenToIfEnabled(emitter, event, callback, options) {\n this.listenTo(emitter, event, (...args)=>{\n // Do not respond if the plugin is disabled.\n if (this.isEnabled) {\n callback(...args);\n }\n }, options);\n }\n /**\n\t * Similar to {@link #_insertParagraph}, this method inserts a paragraph except that it\n\t * does not expect a position. Instead, it performs the insertion next to a selected widget\n\t * according to the `widget-type-around` model selection attribute value (fake caret position).\n\t *\n\t * Because this method requires the `widget-type-around` attribute to be set,\n\t * the insertion can only happen when the widget's fake caret is active (e.g. activated\n\t * using the keyboard).\n\t *\n\t * @returns Returns `true` when the paragraph was inserted (the attribute was present) and `false` otherwise.\n\t */ _insertParagraphAccordingToFakeCaretPosition() {\n const editor = this.editor;\n const model = editor.model;\n const modelSelection = model.document.selection;\n const typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition(modelSelection);\n if (!typeAroundFakeCaretPosition) {\n return false;\n }\n // @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n // @if CK_DEBUG_TYPING // \tconsole.info( '%c[WidgetTypeAround]%c Fake caret -> insert paragraph',\n // @if CK_DEBUG_TYPING // \t\t'font-weight: bold; color: green', ''\n // @if CK_DEBUG_TYPING // \t);\n // @if CK_DEBUG_TYPING // }\n const selectedModelElement = modelSelection.getSelectedElement();\n this._insertParagraph(selectedModelElement, typeAroundFakeCaretPosition);\n return true;\n }\n /**\n\t * Creates a listener in the editing conversion pipeline that injects the widget type around\n\t * UI into every single widget instance created in the editor.\n\t *\n\t * The UI is delivered as a {@link module:engine/view/uielement~UIElement}\n\t * wrapper which renders DOM buttons that users can use to insert paragraphs.\n\t */ _enableTypeAroundUIInjection() {\n const editor = this.editor;\n const schema = editor.model.schema;\n const t = editor.locale.t;\n const buttonTitles = {\n before: t('Insert paragraph before block'),\n after: t('Insert paragraph after block')\n };\n editor.editing.downcastDispatcher.on('insert', (evt, data, conversionApi)=>{\n const viewElement = conversionApi.mapper.toViewElement(data.item);\n if (!viewElement) {\n return;\n }\n // Filter out non-widgets and inline widgets.\n if (isTypeAroundWidget(viewElement, data.item, schema)) {\n injectUIIntoWidget(conversionApi.writer, buttonTitles, viewElement);\n const widgetLabel = viewElement.getCustomProperty('widgetLabel');\n widgetLabel.push(()=>{\n return this.isEnabled ? t('Press Enter to type after or press Shift + Enter to type before the widget') : '';\n });\n }\n }, {\n priority: 'low'\n });\n }\n /**\n\t * Brings support for the fake caret that appears when either:\n\t *\n\t * * the selection moves to a widget from a position next to it using arrow keys,\n\t * * the arrow key is pressed when the widget is already selected.\n\t *\n\t * The fake caret lets the user know that they can start typing or just press\n\t * <kbd>Enter</kbd> to insert a paragraph at the position next to a widget as suggested by the fake caret.\n\t *\n\t * The fake caret disappears when the user changes the selection or the editor\n\t * gets blurred.\n\t *\n\t * The whole idea is as follows:\n\t *\n\t * 1. A user does one of the 2 scenarios described at the beginning.\n\t * 2. The \"keydown\" listener is executed and the decision is made whether to show or hide the fake caret.\n\t * 3. If it should show up, the `widget-type-around` model selection attribute is set indicating\n\t * on which side of the widget it should appear.\n\t * 4. The selection dispatcher reacts to the selection attribute and sets CSS classes responsible for the\n\t * fake caret on the view widget.\n\t * 5. If the fake caret should disappear, the selection attribute is removed and the dispatcher\n\t * does the CSS class clean-up in the view.\n\t * 6. Additionally, `change:range` and `FocusTracker#isFocused` listeners also remove the selection\n\t * attribute (the former also removes widget CSS classes).\n\t */ _enableTypeAroundFakeCaretActivationUsingKeyboardArrows() {\n const editor = this.editor;\n const model = editor.model;\n const modelSelection = model.document.selection;\n const schema = model.schema;\n const editingView = editor.editing.view;\n // This is the main listener responsible for the fake caret.\n // Note: The priority must precede the default Widget class keydown handler (\"high\").\n this._listenToIfEnabled(editingView.document, 'arrowKey', (evt, domEventData)=>{\n this._handleArrowKeyPress(evt, domEventData);\n }, {\n context: [\n isWidget,\n '$text'\n ],\n priority: 'high'\n });\n // This listener makes sure the widget type around selection attribute will be gone from the model\n // selection as soon as the model range changes. This attribute only makes sense when a widget is selected\n // (and the \"fake horizontal caret\" is visible) so whenever the range changes (e.g. selection moved somewhere else),\n // let's get rid of the attribute so that the selection downcast dispatcher isn't even bothered.\n this._listenToIfEnabled(modelSelection, 'change:range', (evt, data)=>{\n // Do not reset the selection attribute when the change was indirect.\n if (!data.directChange) {\n return;\n }\n // Get rid of the widget type around attribute of the selection on every change:range.\n // If the range changes, it means for sure, the user is no longer in the active (\"fake horizontal caret\") mode.\n editor.model.change((writer)=>{\n writer.removeSelectionAttribute(TYPE_AROUND_SELECTION_ATTRIBUTE);\n });\n });\n // Get rid of the widget type around attribute of the selection on every document change\n // that makes widget not selected any more (i.e. widget was removed).\n this._listenToIfEnabled(model.document, 'change:data', ()=>{\n const selectedModelElement = modelSelection.getSelectedElement();\n if (selectedModelElement) {\n const selectedViewElement = editor.editing.mapper.toViewElement(selectedModelElement);\n if (isTypeAroundWidget(selectedViewElement, selectedModelElement, schema)) {\n return;\n }\n }\n editor.model.change((writer)=>{\n writer.removeSelectionAttribute(TYPE_AROUND_SELECTION_ATTRIBUTE);\n });\n });\n // React to changes of the model selection attribute made by the arrow keys listener.\n // If the block widget is selected and the attribute changes, downcast the attribute to special\n // CSS classes associated with the active (\"fake horizontal caret\") mode of the widget.\n this._listenToIfEnabled(editor.editing.downcastDispatcher, 'selection', (evt, data, conversionApi)=>{\n const writer = conversionApi.writer;\n if (this._currentFakeCaretModelElement) {\n const selectedViewElement = conversionApi.mapper.toViewElement(this._currentFakeCaretModelElement);\n if (selectedViewElement) {\n // Get rid of CSS classes associated with the active (\"fake horizontal caret\") mode from the view widget.\n writer.removeClass(POSSIBLE_INSERTION_POSITIONS.map(positionToWidgetCssClass), selectedViewElement);\n this._currentFakeCaretModelElement = null;\n }\n }\n const selectedModelElement = data.selection.getSelectedElement();\n if (!selectedModelElement) {\n return;\n }\n const selectedViewElement = conversionApi.mapper.toViewElement(selectedModelElement);\n if (!isTypeAroundWidget(selectedViewElement, selectedModelElement, schema)) {\n return;\n }\n const typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition(data.selection);\n if (!typeAroundFakeCaretPosition) {\n return;\n }\n writer.addClass(positionToWidgetCssClass(typeAroundFakeCaretPosition), selectedViewElement);\n // Remember the view widget that got the \"fake-caret\" CSS class. This class should be removed ASAP when the\n // selection changes\n this._currentFakeCaretModelElement = selectedModelElement;\n });\n this._listenToIfEnabled(editor.ui.focusTracker, 'change:isFocused', (evt, name, isFocused)=>{\n if (!isFocused) {\n editor.model.change((writer)=>{\n writer.removeSelectionAttribute(TYPE_AROUND_SELECTION_ATTRIBUTE);\n });\n }\n });\n function positionToWidgetCssClass(position) {\n return `ck-widget_type-around_show-fake-caret_${position}`;\n }\n }\n /**\n\t * A listener executed on each \"keydown\" in the view document, a part of\n\t * {@link #_enableTypeAroundFakeCaretActivationUsingKeyboardArrows}.\n\t *\n\t * It decides whether the arrow keypress should activate the fake caret or not (also whether it should\n\t * be deactivated).\n\t *\n\t * The fake caret activation is done by setting the `widget-type-around` model selection attribute\n\t * in this listener, and stopping and preventing the event that would normally be handled by the widget\n\t * plugin that is responsible for the regular keyboard navigation near/across all widgets (that\n\t * includes inline widgets, which are ignored by the widget type around plugin).\n\t */ _handleArrowKeyPress(evt, domEventData) {\n const editor = this.editor;\n const model = editor.model;\n const modelSelection = model.document.selection;\n const schema = model.schema;\n const editingView = editor.editing.view;\n const keyCode = domEventData.keyCode;\n const isForward = isForwardArrowKeyCode(keyCode, editor.locale.contentLanguageDirection);\n const selectedViewElement = editingView.document.selection.getSelectedElement();\n const selectedModelElement = editor.editing.mapper.toModelElement(selectedViewElement);\n let shouldStopAndPreventDefault;\n // Handle keyboard navigation when a type-around-compatible widget is currently selected.\n if (isTypeAroundWidget(selectedViewElement, selectedModelElement, schema)) {\n shouldStopAndPreventDefault = this._handleArrowKeyPressOnSelectedWidget(isForward);\n } else if (modelSelection.isCollapsed) {\n shouldStopAndPreventDefault = this._handleArrowKeyPressWhenSelectionNextToAWidget(isForward);\n } else if (!domEventData.shiftKey) {\n shouldStopAndPreventDefault = this._handleArrowKeyPressWhenNonCollapsedSelection(isForward);\n }\n if (shouldStopAndPreventDefault) {\n domEventData.preventDefault();\n evt.stop();\n }\n }\n /**\n\t * Handles the keyboard navigation on \"keydown\" when a widget is currently selected and activates or deactivates\n\t * the fake caret for that widget, depending on the current value of the `widget-type-around` model\n\t * selection attribute and the direction of the pressed arrow key.\n\t *\n\t * @param isForward `true` when the pressed arrow key was responsible for the forward model selection movement\n\t * as in {@link module:utils/keyboard~isForwardArrowKeyCode}.\n\t * @returns Returns `true` when the keypress was handled and no other keydown listener of the editor should\n\t * process the event any further. Returns `false` otherwise.\n\t */ _handleArrowKeyPressOnSelectedWidget(isForward) {\n const editor = this.editor;\n const model = editor.model;\n const modelSelection = model.document.selection;\n const typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition(modelSelection);\n return model.change((writer)=>{\n // If the fake caret is displayed...\n if (typeAroundFakeCaretPosition) {\n const isLeavingWidget = typeAroundFakeCaretPosition === (isForward ? 'after' : 'before');\n // If the keyboard arrow works against the value of the selection attribute...\n // then remove the selection attribute but prevent default DOM actions\n // and do not let the Widget plugin listener move the selection. This brings\n // the widget back to the state, for instance, like if was selected using the mouse.\n //\n // **Note**: If leaving the widget when the fake caret is active, then the default\n // Widget handler will change the selection and, in turn, this will automatically discard\n // the selection attribute.\n if (!isLeavingWidget) {\n writer.removeSelectionAttribute(TYPE_AROUND_SELECTION_ATTRIBUTE);\n return true;\n }\n } else {\n writer.setSelectionAttribute(TYPE_AROUND_SELECTION_ATTRIBUTE, isForward ? 'after' : 'before');\n return true;\n }\n return false;\n });\n }\n /**\n\t * Handles the keyboard navigation on \"keydown\" when **no** widget is selected but the selection is **directly** next\n\t * to one and upon the fake caret should become active for this widget upon arrow keypress\n\t * (AKA entering/selecting the widget).\n\t *\n\t * **Note**: This code mirrors the implementation from the widget plugin but also adds the selection attribute.\n\t * Unfortunately, there is no safe way to let the widget plugin do the selection part first and then just set the\n\t * selection attribute here in the widget type around plugin. This is why this code must duplicate some from the widget plugin.\n\t *\n\t * @param isForward `true` when the pressed arrow key was responsible for the forward model selection movement\n\t * as in {@link module:utils/keyboard~isForwardArrowKeyCode}.\n\t * @returns Returns `true` when the keypress was handled and no other keydown listener of the editor should\n\t * process the event any further. Returns `false` otherwise.\n\t */ _handleArrowKeyPressWhenSelectionNextToAWidget(isForward) {\n const editor = this.editor;\n const model = editor.model;\n const schema = model.schema;\n const widgetPlugin = editor.plugins.get('Widget');\n // This is the widget the selection is about to be set on.\n const modelElementNextToSelection = widgetPlugin._getObjectElementNextToSelection(isForward);\n const viewElementNextToSelection = editor.editing.mapper.toViewElement(modelElementNextToSelection);\n if (isTypeAroundWidget(viewElementNextToSelection, modelElementNextToSelection, schema)) {\n model.change((writer)=>{\n widgetPlugin._setSelectionOverElement(modelElementNextToSelection);\n writer.setSelectionAttribute(TYPE_AROUND_SELECTION_ATTRIBUTE, isForward ? 'before' : 'after');\n });\n // The change() block above does the same job as the Widget plugin. The event can\n // be safely canceled.\n return true;\n }\n return false;\n }\n /**\n\t * Handles the keyboard navigation on \"keydown\" when a widget is currently selected (together with some other content)\n\t * and the widget is the first or last element in the selection. It activates or deactivates the fake caret for that widget.\n\t *\n\t * @param isForward `true` when the pressed arrow key was responsible for the forward model selection movement\n\t * as in {@link module:utils/keyboard~isForwardArrowKeyCode}.\n\t * @returns Returns `true` when the keypress was handled and no other keydown listener of the editor should\n\t * process the event any further. Returns `false` otherwise.\n\t */ _handleArrowKeyPressWhenNonCollapsedSelection(isForward) {\n const editor = this.editor;\n const model = editor.model;\n const schema = model.schema;\n const mapper = editor.editing.mapper;\n const modelSelection = model.document.selection;\n const selectedModelNode = isForward ? modelSelection.getLastPosition().nodeBefore : modelSelection.getFirstPosition().nodeAfter;\n const selectedViewNode = mapper.toViewElement(selectedModelNode);\n // There is a widget at the collapse position so collapse the selection to the fake caret on it.\n if (isTypeAroundWidget(selectedViewNode, selectedModelNode, schema)) {\n model.change((writer)=>{\n writer.setSelection(selectedModelNode, 'on');\n writer.setSelectionAttribute(TYPE_AROUND_SELECTION_ATTRIBUTE, isForward ? 'after' : 'before');\n });\n return true;\n }\n return false;\n }\n /**\n\t * Registers a `mousedown` listener for the view document which intercepts events\n\t * coming from the widget type around UI, which happens when a user clicks one of the buttons\n\t * that insert a paragraph next to a widget.\n\t */ _enableInsertingParagraphsOnButtonClick() {\n const editor = this.editor;\n const editingView = editor.editing.view;\n this._listenToIfEnabled(editingView.document, 'mousedown', (evt, domEventData)=>{\n const button = getClosestTypeAroundDomButton(domEventData.domTarget);\n if (!button) {\n return;\n }\n const buttonPosition = getTypeAroundButtonPosition(button);\n const widgetViewElement = getClosestWidgetViewElement(button, editingView.domConverter);\n const widgetModelElement = editor.editing.mapper.toModelElement(widgetViewElement);\n this._insertParagraph(widgetModelElement, buttonPosition);\n domEventData.preventDefault();\n evt.stop();\n });\n }\n /**\n\t * Creates the <kbd>Enter</kbd> key listener on the view document that allows the user to insert a paragraph\n\t * near the widget when either:\n\t *\n\t * * The fake caret was first activated using the arrow keys,\n\t * * The entire widget is selected in the model.\n\t *\n\t * In the first case, the new paragraph is inserted according to the `widget-type-around` selection\n\t * attribute (see {@link #_handleArrowKeyPress}).\n\t *\n\t * In the second case, the new paragraph is inserted based on whether a soft (<kbd>Shift</kbd>+<kbd>Enter</kbd>) keystroke\n\t * was pressed or not.\n\t */ _enableInsertingParagraphsOnEnterKeypress() {\n const editor = this.editor;\n const selection = editor.model.document.selection;\n const editingView = editor.editing.view;\n this._listenToIfEnabled(editingView.document, 'enter', (evt, domEventData)=>{\n // This event could be triggered from inside the widget but we are interested\n // only when the widget is selected itself.\n if (evt.eventPhase != 'atTarget') {\n return;\n }\n const selectedModelElement = selection.getSelectedElement();\n const selectedViewElement = editor.editing.mapper.toViewElement(selectedModelElement);\n const schema = editor.model.schema;\n let wasHandled;\n // First check if the widget is selected and there's a type around selection attribute associated\n // with the fake caret that would tell where to insert a new paragraph.\n if (this._insertParagraphAccordingToFakeCaretPosition()) {\n wasHandled = true;\n } else if (isTypeAroundWidget(selectedViewElement, selectedModelElement, schema)) {\n this._insertParagraph(selectedModelElement, domEventData.isSoft ? 'before' : 'after');\n wasHandled = true;\n }\n if (wasHandled) {\n domEventData.preventDefault();\n evt.stop();\n }\n }, {\n context: isWidget\n });\n }\n /**\n\t * Similar to the {@link #_enableInsertingParagraphsOnEnterKeypress}, it allows the user\n\t * to insert a paragraph next to a widget when the fake caret was activated using arrow\n\t * keys but it responds to typing instead of <kbd>Enter</kbd>.\n\t *\n\t * Listener enabled by this method will insert a new paragraph according to the `widget-type-around`\n\t * model selection attribute as the user simply starts typing, which creates the impression that the fake caret\n\t * behaves like a real one rendered by the browser (AKA your text appears where the caret was).\n\t *\n\t * **Note**: At the moment this listener creates 2 undo steps: one for the `insertParagraph` command\n\t * and another one for actual typing. It is not a disaster but this may need to be fixed\n\t * sooner or later.\n\t */ _enableInsertingParagraphsOnTypingKeystroke() {\n const editor = this.editor;\n const viewDocument = editor.editing.view.document;\n // Note: The priority must precede the default Input plugin insertText handler.\n this._listenToIfEnabled(viewDocument, 'insertText', (evt, data)=>{\n if (this._insertParagraphAccordingToFakeCaretPosition()) {\n // The view selection in the event data contains the widget. If the new paragraph\n // was inserted, modify the view selection passed along with the insertText event\n // so the default event handler in the Input plugin starts typing inside the paragraph.\n // Otherwise, the typing would be over the widget.\n data.selection = viewDocument.selection;\n }\n }, {\n priority: 'high'\n });\n if (env.isAndroid) {\n // On Android with English keyboard, the composition starts just by putting caret\n // at the word end or by selecting a table column. This is not a real composition started.\n // Trigger delete content on first composition key pressed.\n this._listenToIfEnabled(viewDocument, 'keydown', (evt, data)=>{\n if (data.keyCode == 229) {\n this._insertParagraphAccordingToFakeCaretPosition();\n }\n });\n } else {\n // Note: The priority must precede the default Input plugin compositionstart handler (to call it before delete content).\n this._listenToIfEnabled(viewDocument, 'compositionstart', ()=>{\n this._insertParagraphAccordingToFakeCaretPosition();\n }, {\n priority: 'high'\n });\n }\n }\n /**\n\t * It creates a \"delete\" event listener on the view document to handle cases when the <kbd>Delete</kbd> or <kbd>Backspace</kbd>\n\t * is pressed and the fake caret is currently active.\n\t *\n\t * The fake caret should create an illusion of a real browser caret so that when it appears before or after\n\t * a widget, pressing <kbd>Delete</kbd> or <kbd>Backspace</kbd> should remove a widget or delete the content\n\t * before or after a widget (depending on the content surrounding the widget).\n\t */ _enableDeleteIntegration() {\n const editor = this.editor;\n const editingView = editor.editing.view;\n const model = editor.model;\n const schema = model.schema;\n this._listenToIfEnabled(editingView.document, 'delete', (evt, domEventData)=>{\n // This event could be triggered from inside the widget but we are interested\n // only when the widget is selected itself.\n if (evt.eventPhase != 'atTarget') {\n return;\n }\n const typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition(model.document.selection);\n // This listener handles only these cases when the fake caret is active.\n if (!typeAroundFakeCaretPosition) {\n return;\n }\n const direction = domEventData.direction;\n const selectedModelWidget = model.document.selection.getSelectedElement();\n const isFakeCaretBefore = typeAroundFakeCaretPosition === 'before';\n const isDeleteForward = direction == 'forward';\n const shouldDeleteEntireWidget = isFakeCaretBefore === isDeleteForward;\n if (shouldDeleteEntireWidget) {\n editor.execute('delete', {\n selection: model.createSelection(selectedModelWidget, 'on')\n });\n } else {\n const range = schema.getNearestSelectionRange(model.createPositionAt(selectedModelWidget, typeAroundFakeCaretPosition), direction);\n // If there is somewhere to move selection to, then there will be something to delete.\n if (range) {\n // If the range is NOT collapsed, then we know that the range contains an object (see getNearestSelectionRange() docs).\n if (!range.isCollapsed) {\n model.change((writer)=>{\n writer.setSelection(range);\n editor.execute(isDeleteForward ? 'deleteForward' : 'delete');\n });\n } else {\n const probe = model.createSelection(range.start);\n model.modifySelection(probe, {\n direction\n });\n // If the range is collapsed, let's see if a non-collapsed range exists that can could be deleted.\n // If such range exists, use the editor command because it it safe for collaboration (it merges where it can).\n if (!probe.focus.isEqual(range.start)) {\n model.change((writer)=>{\n writer.setSelection(range);\n editor.execute(isDeleteForward ? 'deleteForward' : 'delete');\n });\n } else {\n const deepestEmptyRangeAncestor = getDeepestEmptyElementAncestor(schema, range.start.parent);\n model.deleteContent(model.createSelection(deepestEmptyRangeAncestor, 'on'), {\n doNotAutoparagraph: true\n });\n }\n }\n }\n }\n // If some content was deleted, don't let the handler from the Widget plugin kick in.\n // If nothing was deleted, then the default handler will have nothing to do anyway.\n domEventData.preventDefault();\n evt.stop();\n }, {\n context: isWidget\n });\n }\n /**\n\t * Attaches the {@link module:engine/model/model~Model#event:insertContent} event listener that, for instance, allows the user to paste\n\t * content near a widget when the fake caret is first activated using the arrow keys.\n\t *\n\t * The content is inserted according to the `widget-type-around` selection attribute (see {@link #_handleArrowKeyPress}).\n\t */ _enableInsertContentIntegration() {\n const editor = this.editor;\n const model = this.editor.model;\n const documentSelection = model.document.selection;\n this._listenToIfEnabled(editor.model, 'insertContent', (evt, [content, selectable])=>{\n if (selectable && !selectable.is('documentSelection')) {\n return;\n }\n const typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition(documentSelection);\n if (!typeAroundFakeCaretPosition) {\n return;\n }\n evt.stop();\n return model.change((writer)=>{\n const selectedElement = documentSelection.getSelectedElement();\n const position = model.createPositionAt(selectedElement, typeAroundFakeCaretPosition);\n const selection = writer.createSelection(position);\n const result = model.insertContent(content, selection);\n writer.setSelection(selection);\n return result;\n });\n }, {\n priority: 'high'\n });\n }\n /**\n\t * Attaches the {@link module:engine/model/model~Model#event:insertObject} event listener that modifies the\n\t * `options.findOptimalPosition`parameter to position of fake caret in relation to selected element\n\t * to reflect user's intent of desired insertion position.\n\t *\n\t * The object is inserted according to the `widget-type-around` selection attribute (see {@link #_handleArrowKeyPress}).\n\t */ _enableInsertObjectIntegration() {\n const editor = this.editor;\n const model = this.editor.model;\n const documentSelection = model.document.selection;\n this._listenToIfEnabled(editor.model, 'insertObject', (evt, args)=>{\n const [, selectable, options = {}] = args;\n if (selectable && !selectable.is('documentSelection')) {\n return;\n }\n const typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition(documentSelection);\n if (!typeAroundFakeCaretPosition) {\n return;\n }\n options.findOptimalPosition = typeAroundFakeCaretPosition;\n args[3] = options;\n }, {\n priority: 'high'\n });\n }\n /**\n\t * Attaches the {@link module:engine/model/model~Model#event:deleteContent} event listener to block the event when the fake\n\t * caret is active.\n\t *\n\t * This is required for cases that trigger {@link module:engine/model/model~Model#deleteContent `model.deleteContent()`}\n\t * before calling {@link module:engine/model/model~Model#insertContent `model.insertContent()`} like, for instance,\n\t * plain text pasting.\n\t */ _enableDeleteContentIntegration() {\n const editor = this.editor;\n const model = this.editor.model;\n const documentSelection = model.document.selection;\n this._listenToIfEnabled(editor.model, 'deleteContent', (evt, [selection])=>{\n if (selection && !selection.is('documentSelection')) {\n return;\n }\n const typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition(documentSelection);\n // Disable removing the selection content while pasting plain text.\n if (typeAroundFakeCaretPosition) {\n evt.stop();\n }\n }, {\n priority: 'high'\n });\n }\n}\n/**\n * Injects the type around UI into a view widget instance.\n */ function injectUIIntoWidget(viewWriter, buttonTitles, widgetViewElement) {\n const typeAroundWrapper = viewWriter.createUIElement('div', {\n class: 'ck ck-reset_all ck-widget__type-around'\n }, function(domDocument) {\n const wrapperDomElement = this.toDomElement(domDocument);\n injectButtons(wrapperDomElement, buttonTitles);\n injectFakeCaret(wrapperDomElement);\n return wrapperDomElement;\n });\n // Inject the type around wrapper into the widget's wrapper.\n viewWriter.insert(viewWriter.createPositionAt(widgetViewElement, 'end'), typeAroundWrapper);\n}\n/**\n * FYI: Not using the IconView class because each instance would need to be destroyed to avoid memory leaks\n * and it's pretty hard to figure out when a view (widget) is gone for good so it's cheaper to use raw\n * <svg> here.\n */ function injectButtons(wrapperDomElement, buttonTitles) {\n for (const position of POSSIBLE_INSERTION_POSITIONS){\n const buttonTemplate = new Template({\n tag: 'div',\n attributes: {\n class: [\n 'ck',\n 'ck-widget__type-around__button',\n `ck-widget__type-around__button_${position}`\n ],\n title: buttonTitles[position],\n 'aria-hidden': 'true'\n },\n children: [\n wrapperDomElement.ownerDocument.importNode(RETURN_ARROW_ICON_ELEMENT, true)\n ]\n });\n wrapperDomElement.appendChild(buttonTemplate.render());\n }\n}\nfunction injectFakeCaret(wrapperDomElement) {\n const caretTemplate = new Template({\n tag: 'div',\n attributes: {\n class: [\n 'ck',\n 'ck-widget__type-around__fake-caret'\n ]\n }\n });\n wrapperDomElement.appendChild(caretTemplate.render());\n}\n/**\n * Returns the ancestor of an element closest to the root which is empty. For instance,\n * for `<baz>`:\n *\n * ```\n * <foo>abc<bar><baz></baz></bar></foo>\n * ```\n *\n * it returns `<bar>`.\n */ function getDeepestEmptyElementAncestor(schema, element) {\n let deepestEmptyAncestor = element;\n for (const ancestor of element.getAncestors({\n parentFirst: true\n })){\n if (ancestor.childCount > 1 || schema.isLimit(ancestor)) {\n break;\n }\n deepestEmptyAncestor = ancestor;\n }\n return deepestEmptyAncestor;\n}\n\n/**\n * Returns 'keydown' handler for up/down arrow keys that modifies the caret movement if it's in a text line next to an object.\n *\n * @param editing The editing controller.\n */ function verticalNavigationHandler(editing) {\n const model = editing.model;\n return (evt, data)=>{\n const arrowUpPressed = data.keyCode == keyCodes.arrowup;\n const arrowDownPressed = data.keyCode == keyCodes.arrowdown;\n const expandSelection = data.shiftKey;\n const selection = model.document.selection;\n if (!arrowUpPressed && !arrowDownPressed) {\n return;\n }\n const isForward = arrowDownPressed;\n // Navigation is in the opposite direction than the selection direction so this is shrinking of the selection.\n // Selection for sure will not approach any object.\n if (expandSelection && selectionWillShrink(selection, isForward)) {\n return;\n }\n // Find a range between selection and closest limit element.\n const range = findTextRangeFromSelection(editing, selection, isForward);\n // There is no selection position inside the limit element.\n if (!range) {\n return;\n }\n // If already at the edge of a limit element.\n if (range.isCollapsed) {\n // A collapsed selection at limit edge - nothing more to do.\n if (selection.isCollapsed) {\n return;\n } else if (expandSelection) {\n return;\n }\n }\n // If the range is a single line (there is no word wrapping) then move the selection to the position closest to the limit element.\n //\n // We can't move the selection directly to the isObject element (eg. table cell) because of dual position at the end/beginning\n // of wrapped line (it's at the same time at the end of one line and at the start of the next line).\n if (range.isCollapsed || isSingleLineRange(editing, range, isForward)) {\n model.change((writer)=>{\n const newPosition = isForward ? range.end : range.start;\n if (expandSelection) {\n const newSelection = model.createSelection(selection.anchor);\n newSelection.setFocus(newPosition);\n writer.setSelection(newSelection);\n } else {\n writer.setSelection(newPosition);\n }\n });\n evt.stop();\n data.preventDefault();\n data.stopPropagation();\n }\n };\n}\n/**\n * Finds the range between selection and closest limit element (in the direction of navigation).\n * The position next to limit element is adjusted to the closest allowed `$text` position.\n *\n * Returns `null` if, according to the schema, the resulting range cannot contain a `$text` element.\n *\n * @param editing The editing controller.\n * @param selection The current selection.\n * @param isForward The expected navigation direction.\n */ function findTextRangeFromSelection(editing, selection, isForward) {\n const model = editing.model;\n if (isForward) {\n const startPosition = selection.isCollapsed ? selection.focus : selection.getLastPosition();\n const endPosition = getNearestNonInlineLimit(model, startPosition, 'forward');\n // There is no limit element, browser should handle this.\n if (!endPosition) {\n return null;\n }\n const range = model.createRange(startPosition, endPosition);\n const lastRangePosition = getNearestTextPosition(model.schema, range, 'backward');\n if (lastRangePosition) {\n return model.createRange(startPosition, lastRangePosition);\n }\n return null;\n } else {\n const endPosition = selection.isCollapsed ? selection.focus : selection.getFirstPosition();\n const startPosition = getNearestNonInlineLimit(model, endPosition, 'backward');\n // There is no limit element, browser should handle this.\n if (!startPosition) {\n return null;\n }\n const range = model.createRange(startPosition, endPosition);\n const firstRangePosition = getNearestTextPosition(model.schema, range, 'forward');\n if (firstRangePosition) {\n return model.createRange(firstRangePosition, endPosition);\n }\n return null;\n }\n}\n/**\n * Finds the limit element position that is closest to startPosition.\n *\n * @param direction Search direction.\n */ function getNearestNonInlineLimit(model, startPosition, direction) {\n const schema = model.schema;\n const range = model.createRangeIn(startPosition.root);\n const walkerValueType = direction == 'forward' ? 'elementStart' : 'elementEnd';\n for (const { previousPosition, item, type } of range.getWalker({\n startPosition,\n direction\n })){\n if (schema.isLimit(item) && !schema.isInline(item)) {\n return previousPosition;\n }\n // Stop looking for isLimit element if the next element is a block element (it is for sure not single line).\n if (type == walkerValueType && schema.isBlock(item)) {\n return null;\n }\n }\n return null;\n}\n/**\n * Basing on the provided range, finds the first or last (depending on `direction`) position inside the range\n * that can contain `$text` (according to schema).\n *\n * @param schema The schema.\n * @param range The range to find the position in.\n * @param direction Search direction.\n * @returns The nearest selection position.\n *\n */ function getNearestTextPosition(schema, range, direction) {\n const position = direction == 'backward' ? range.end : range.start;\n if (schema.checkChild(position, '$text')) {\n return position;\n }\n for (const { nextPosition } of range.getWalker({\n direction\n })){\n if (schema.checkChild(nextPosition, '$text')) {\n return nextPosition;\n }\n }\n return null;\n}\n/**\n * Checks if the DOM range corresponding to the provided model range renders as a single line by analyzing DOMRects\n * (verifying if they visually wrap content to the next line).\n *\n * @param editing The editing controller.\n * @param modelRange The current table cell content range.\n * @param isForward The expected navigation direction.\n */ function isSingleLineRange(editing, modelRange, isForward) {\n const model = editing.model;\n const domConverter = editing.view.domConverter;\n // Wrapped lines contain exactly the same position at the end of current line\n // and at the beginning of next line. That position's client rect is at the end\n // of current line. In case of caret at first position of the last line that 'dual'\n // position would be detected as it's not the last line.\n if (isForward) {\n const probe = model.createSelection(modelRange.start);\n model.modifySelection(probe);\n // If the new position is at the end of the container then we can't use this position\n // because it would provide incorrect result for eg caption of image and selection\n // just before end of it. Also in this case there is no \"dual\" position.\n if (!probe.focus.isAtEnd && !modelRange.start.isEqual(probe.focus)) {\n modelRange = model.createRange(probe.focus, modelRange.end);\n }\n }\n const viewRange = editing.mapper.toViewRange(modelRange);\n const domRange = domConverter.viewRangeToDom(viewRange);\n const rects = Rect.getDomRangeRects(domRange);\n let boundaryVerticalPosition;\n for (const rect of rects){\n if (boundaryVerticalPosition === undefined) {\n boundaryVerticalPosition = Math.round(rect.bottom);\n continue;\n }\n // Let's check if this rect is in new line.\n if (Math.round(rect.top) >= boundaryVerticalPosition) {\n return false;\n }\n boundaryVerticalPosition = Math.max(boundaryVerticalPosition, Math.round(rect.bottom));\n }\n return true;\n}\nfunction selectionWillShrink(selection, isForward) {\n return !selection.isCollapsed && selection.isBackward == isForward;\n}\n\n/**\n * The widget plugin. It enables base support for widgets.\n *\n * See {@glink api/widget package page} for more details and documentation.\n *\n * This plugin enables multiple behaviors required by widgets:\n *\n * * The model to view selection converter for the editing pipeline (it handles widget custom selection rendering).\n * If a converted selection wraps around a widget element, that selection is marked as\n * {@link module:engine/view/selection~Selection#isFake fake}. Additionally, the `ck-widget_selected` CSS class\n * is added to indicate that widget has been selected.\n * * The mouse and keyboard events handling on and around widget elements.\n */ class Widget extends Plugin {\n /**\n\t * Holds previously selected widgets.\n\t */ _previouslySelected = new Set();\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'Widget';\n }\n /**\n\t * @inheritDoc\n\t */ static get requires() {\n return [\n WidgetTypeAround,\n Delete\n ];\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const editor = this.editor;\n const view = editor.editing.view;\n const viewDocument = view.document;\n const t = editor.t;\n // Model to view selection converter.\n // Converts selection placed over widget element to fake selection.\n //\n // By default, the selection is downcasted by the engine to surround the attribute element, even though its only\n // child is an inline widget. A similar thing also happens when a collapsed marker is rendered as a UI element\n // next to an inline widget: the view selection contains both the widget and the marker.\n //\n // This prevents creating a correct fake selection when this inline widget is selected. Normalize the selection\n // in these cases based on the model:\n //\n //\t\t[<attributeElement><inlineWidget /></attributeElement>] -> <attributeElement>[<inlineWidget />]</attributeElement>\n //\t\t[<uiElement></uiElement><inlineWidget />] -> <uiElement></uiElement>[<inlineWidget />]\n //\n // Thanks to this:\n //\n // * fake selection can be set correctly,\n // * any logic depending on (View)Selection#getSelectedElement() also works OK.\n //\n // See https://github.com/ckeditor/ckeditor5/issues/9524.\n this.editor.editing.downcastDispatcher.on('selection', (evt, data, conversionApi)=>{\n const viewWriter = conversionApi.writer;\n const modelSelection = data.selection;\n // The collapsed selection can't contain any widget.\n if (modelSelection.isCollapsed) {\n return;\n }\n const selectedModelElement = modelSelection.getSelectedElement();\n if (!selectedModelElement) {\n return;\n }\n const selectedViewElement = editor.editing.mapper.toViewElement(selectedModelElement);\n if (!isWidget(selectedViewElement)) {\n return;\n }\n if (!conversionApi.consumable.consume(modelSelection, 'selection')) {\n return;\n }\n viewWriter.setSelection(viewWriter.createRangeOn(selectedViewElement), {\n fake: true,\n label: getLabel(selectedViewElement)\n });\n });\n // Mark all widgets inside the selection with the css class.\n // This handler is registered at the 'low' priority so it's triggered after the real selection conversion.\n this.editor.editing.downcastDispatcher.on('selection', (evt, data, conversionApi)=>{\n // Remove selected class from previously selected widgets.\n this._clearPreviouslySelectedWidgets(conversionApi.writer);\n const viewWriter = conversionApi.writer;\n const viewSelection = viewWriter.document.selection;\n let lastMarked = null;\n for (const range of viewSelection.getRanges()){\n // Note: There could be multiple selected widgets in a range but no fake selection.\n // All of them must be marked as selected, for instance [<widget></widget><widget></widget>]\n for (const value of range){\n const node = value.item;\n // Do not mark nested widgets in selected one. See: #4594\n if (isWidget(node) && !isChild(node, lastMarked)) {\n viewWriter.addClass(WIDGET_SELECTED_CLASS_NAME, node);\n this._previouslySelected.add(node);\n lastMarked = node;\n }\n }\n }\n }, {\n priority: 'low'\n });\n // If mouse down is pressed on widget - create selection over whole widget.\n view.addObserver(MouseObserver);\n this.listenTo(viewDocument, 'mousedown', (...args)=>this._onMousedown(...args));\n // There are two keydown listeners working on different priorities. This allows other\n // features such as WidgetTypeAround or TableKeyboard to attach their listeners in between\n // and customize the behavior even further in different content/selection scenarios.\n //\n // * The first listener handles changing the selection on arrow key press\n // if the widget is selected or if the selection is next to a widget and the widget\n // should become selected upon the arrow key press.\n //\n // * The second (late) listener makes sure the default browser action on arrow key press is\n // prevented when a widget is selected. This prevents the selection from being moved\n // from a fake selection container.\n this.listenTo(viewDocument, 'arrowKey', (...args)=>{\n this._handleSelectionChangeOnArrowKeyPress(...args);\n }, {\n context: [\n isWidget,\n '$text'\n ]\n });\n this.listenTo(viewDocument, 'arrowKey', (...args)=>{\n this._preventDefaultOnArrowKeyPress(...args);\n }, {\n context: '$root'\n });\n this.listenTo(viewDocument, 'arrowKey', verticalNavigationHandler(this.editor.editing), {\n context: '$text'\n });\n // Handle custom delete behaviour.\n this.listenTo(viewDocument, 'delete', (evt, data)=>{\n if (this._handleDelete(data.direction == 'forward')) {\n data.preventDefault();\n evt.stop();\n }\n }, {\n context: '$root'\n });\n // Handle Tab key while a widget is selected.\n this.listenTo(viewDocument, 'tab', (evt, data)=>{\n // This event could be triggered from inside the widget, but we are interested\n // only when the widget is selected itself.\n if (evt.eventPhase != 'atTarget') {\n return;\n }\n if (data.shiftKey) {\n return;\n }\n if (this._selectFirstNestedEditable()) {\n data.preventDefault();\n evt.stop();\n }\n }, {\n context: isWidget,\n priority: 'low'\n });\n // Handle Shift+Tab key while caret inside a widget editable.\n this.listenTo(viewDocument, 'tab', (evt, data)=>{\n if (!data.shiftKey) {\n return;\n }\n if (this._selectAncestorWidget()) {\n data.preventDefault();\n evt.stop();\n }\n }, {\n priority: 'low'\n });\n // Handle Esc key while inside a nested editable.\n this.listenTo(viewDocument, 'keydown', (evt, data)=>{\n if (data.keystroke != keyCodes.esc) {\n return;\n }\n if (this._selectAncestorWidget()) {\n data.preventDefault();\n evt.stop();\n }\n }, {\n priority: 'low'\n });\n // Add the information about the keystrokes to the accessibility database.\n editor.accessibility.addKeystrokeInfoGroup({\n id: 'widget',\n label: t('Keystrokes that can be used when a widget is selected (for example: image, table, etc.)'),\n keystrokes: [\n {\n label: t('Move focus from an editable area back to the parent widget'),\n keystroke: 'Esc'\n },\n {\n label: t('Insert a new paragraph directly after a widget'),\n keystroke: 'Enter'\n },\n {\n label: t('Insert a new paragraph directly before a widget'),\n keystroke: 'Shift+Enter'\n },\n {\n label: t('Move the caret to allow typing directly before a widget'),\n keystroke: [\n [\n 'arrowup'\n ],\n [\n 'arrowleft'\n ]\n ]\n },\n {\n label: t('Move the caret to allow typing directly after a widget'),\n keystroke: [\n [\n 'arrowdown'\n ],\n [\n 'arrowright'\n ]\n ]\n }\n ]\n });\n }\n /**\n\t * Handles {@link module:engine/view/document~Document#event:mousedown mousedown} events on widget elements.\n\t */ _onMousedown(eventInfo, domEventData) {\n const editor = this.editor;\n const view = editor.editing.view;\n const viewDocument = view.document;\n let element = domEventData.target;\n // Some of DOM elements have no view element representation so it may be null.\n if (!element) {\n return;\n }\n // If triple click should select entire paragraph.\n if (domEventData.domEvent.detail >= 3) {\n if (this._selectBlockContent(element)) {\n domEventData.preventDefault();\n }\n return;\n }\n // If target is not a widget element - check if one of the ancestors is.\n if (!isWidget(element)) {\n const editableOrWidgetElement = findClosestEditableOrWidgetAncestor(element);\n if (!editableOrWidgetElement) {\n return;\n }\n if (isWidget(editableOrWidgetElement)) {\n element = editableOrWidgetElement;\n } else {\n // Pick view range from the point where the mouse was clicked.\n const clickTargetFromPoint = getElementFromMouseEvent(view, domEventData);\n if (clickTargetFromPoint && isWidget(clickTargetFromPoint)) {\n element = clickTargetFromPoint;\n } else {\n return;\n }\n }\n }\n // On Android selection would jump to the first table cell, on other devices\n // we can't block it (and don't need to) because of drag and drop support.\n if (env.isAndroid) {\n domEventData.preventDefault();\n }\n // Focus editor if is not focused already.\n if (!viewDocument.isFocused) {\n view.focus();\n }\n // Create model selection over widget.\n const modelElement = editor.editing.mapper.toModelElement(element);\n this._setSelectionOverElement(modelElement);\n }\n /**\n\t * Selects entire block content, e.g. on triple click it selects entire paragraph.\n\t */ _selectBlockContent(element) {\n const editor = this.editor;\n const model = editor.model;\n const mapper = editor.editing.mapper;\n const schema = model.schema;\n const viewElement = mapper.findMappedViewAncestor(this.editor.editing.view.createPositionAt(element, 0));\n const modelElement = findTextBlockAncestor(mapper.toModelElement(viewElement), model.schema);\n if (!modelElement) {\n return false;\n }\n model.change((writer)=>{\n const nextTextBlock = !schema.isLimit(modelElement) ? findNextTextBlock(writer.createPositionAfter(modelElement), schema) : null;\n const start = writer.createPositionAt(modelElement, 0);\n const end = nextTextBlock ? writer.createPositionAt(nextTextBlock, 0) : writer.createPositionAt(modelElement, 'end');\n writer.setSelection(writer.createRange(start, end));\n });\n return true;\n }\n /**\n\t * Handles {@link module:engine/view/document~Document#event:keydown keydown} events and changes\n\t * the model selection when:\n\t *\n\t * * arrow key is pressed when the widget is selected,\n\t * * the selection is next to a widget and the widget should become selected upon the arrow key press.\n\t *\n\t * See {@link #_preventDefaultOnArrowKeyPress}.\n\t */ _handleSelectionChangeOnArrowKeyPress(eventInfo, domEventData) {\n const keyCode = domEventData.keyCode;\n const model = this.editor.model;\n const schema = model.schema;\n const modelSelection = model.document.selection;\n const objectElement = modelSelection.getSelectedElement();\n const direction = getLocalizedArrowKeyCodeDirection(keyCode, this.editor.locale.contentLanguageDirection);\n const isForward = direction == 'down' || direction == 'right';\n const isVerticalNavigation = direction == 'up' || direction == 'down';\n // If object element is selected.\n if (objectElement && schema.isObject(objectElement)) {\n const position = isForward ? modelSelection.getLastPosition() : modelSelection.getFirstPosition();\n const newRange = schema.getNearestSelectionRange(position, isForward ? 'forward' : 'backward');\n if (newRange) {\n model.change((writer)=>{\n writer.setSelection(newRange);\n });\n domEventData.preventDefault();\n eventInfo.stop();\n }\n return;\n }\n // Handle collapsing of the selection when there is any widget on the edge of selection.\n // This is needed because browsers have problems with collapsing such selection.\n if (!modelSelection.isCollapsed && !domEventData.shiftKey) {\n const firstPosition = modelSelection.getFirstPosition();\n const lastPosition = modelSelection.getLastPosition();\n const firstSelectedNode = firstPosition.nodeAfter;\n const lastSelectedNode = lastPosition.nodeBefore;\n if (firstSelectedNode && schema.isObject(firstSelectedNode) || lastSelectedNode && schema.isObject(lastSelectedNode)) {\n model.change((writer)=>{\n writer.setSelection(isForward ? lastPosition : firstPosition);\n });\n domEventData.preventDefault();\n eventInfo.stop();\n }\n return;\n }\n // Return if not collapsed.\n if (!modelSelection.isCollapsed) {\n return;\n }\n // If selection is next to object element.\n const objectElementNextToSelection = this._getObjectElementNextToSelection(isForward);\n if (objectElementNextToSelection && schema.isObject(objectElementNextToSelection)) {\n // Do not select an inline widget while handling up/down arrow.\n if (schema.isInline(objectElementNextToSelection) && isVerticalNavigation) {\n return;\n }\n this._setSelectionOverElement(objectElementNextToSelection);\n domEventData.preventDefault();\n eventInfo.stop();\n }\n }\n /**\n\t * Handles {@link module:engine/view/document~Document#event:keydown keydown} events and prevents\n\t * the default browser behavior to make sure the fake selection is not being moved from a fake selection\n\t * container.\n\t *\n\t * See {@link #_handleSelectionChangeOnArrowKeyPress}.\n\t */ _preventDefaultOnArrowKeyPress(eventInfo, domEventData) {\n const model = this.editor.model;\n const schema = model.schema;\n const objectElement = model.document.selection.getSelectedElement();\n // If object element is selected.\n if (objectElement && schema.isObject(objectElement)) {\n domEventData.preventDefault();\n eventInfo.stop();\n }\n }\n /**\n\t * Handles delete keys: backspace and delete.\n\t *\n\t * @param isForward Set to true if delete was performed in forward direction.\n\t * @returns Returns `true` if keys were handled correctly.\n\t */ _handleDelete(isForward) {\n const modelDocument = this.editor.model.document;\n const modelSelection = modelDocument.selection;\n // Do nothing when the read only mode is enabled.\n if (!this.editor.model.canEditAt(modelSelection)) {\n return;\n }\n // Do nothing on non-collapsed selection.\n if (!modelSelection.isCollapsed) {\n return;\n }\n const objectElement = this._getObjectElementNextToSelection(isForward);\n if (objectElement) {\n this.editor.model.change((writer)=>{\n let previousNode = modelSelection.anchor.parent;\n // Remove previous element if empty.\n while(previousNode.isEmpty){\n const nodeToRemove = previousNode;\n previousNode = nodeToRemove.parent;\n writer.remove(nodeToRemove);\n }\n this._setSelectionOverElement(objectElement);\n });\n return true;\n }\n }\n /**\n\t * Sets {@link module:engine/model/selection~Selection document's selection} over given element.\n\t *\n\t * @internal\n\t */ _setSelectionOverElement(element) {\n this.editor.model.change((writer)=>{\n writer.setSelection(writer.createRangeOn(element));\n });\n }\n /**\n\t * Checks if {@link module:engine/model/element~Element element} placed next to the current\n\t * {@link module:engine/model/selection~Selection model selection} exists and is marked in\n\t * {@link module:engine/model/schema~Schema schema} as `object`.\n\t *\n\t * @internal\n\t * @param forward Direction of checking.\n\t */ _getObjectElementNextToSelection(forward) {\n const model = this.editor.model;\n const schema = model.schema;\n const modelSelection = model.document.selection;\n // Clone current selection to use it as a probe. We must leave default selection as it is so it can return\n // to its current state after undo.\n const probe = model.createSelection(modelSelection);\n model.modifySelection(probe, {\n direction: forward ? 'forward' : 'backward'\n });\n // The selection didn't change so there is nothing there.\n if (probe.isEqual(modelSelection)) {\n return null;\n }\n const objectElement = forward ? probe.focus.nodeBefore : probe.focus.nodeAfter;\n if (!!objectElement && schema.isObject(objectElement)) {\n return objectElement;\n }\n return null;\n }\n /**\n\t * Removes CSS class from previously selected widgets.\n\t */ _clearPreviouslySelectedWidgets(writer) {\n for (const widget of this._previouslySelected){\n writer.removeClass(WIDGET_SELECTED_CLASS_NAME, widget);\n }\n this._previouslySelected.clear();\n }\n /**\n\t * Moves the document selection into the first nested editable.\n\t */ _selectFirstNestedEditable() {\n const editor = this.editor;\n const view = this.editor.editing.view;\n const viewDocument = view.document;\n for (const item of viewDocument.selection.getFirstRange().getItems()){\n if (item.is('editableElement')) {\n const modelElement = editor.editing.mapper.toModelElement(item);\n /* istanbul ignore next -- @preserve */ if (!modelElement) {\n continue;\n }\n const position = editor.model.createPositionAt(modelElement, 0);\n const newRange = editor.model.schema.getNearestSelectionRange(position, 'forward');\n editor.model.change((writer)=>{\n writer.setSelection(newRange);\n });\n return true;\n }\n }\n return false;\n }\n /**\n\t * Updates the document selection so that it selects first ancestor widget.\n\t */ _selectAncestorWidget() {\n const editor = this.editor;\n const mapper = editor.editing.mapper;\n const selection = editor.editing.view.document.selection;\n const positionParent = selection.getFirstPosition().parent;\n const positionParentElement = positionParent.is('$text') ? positionParent.parent : positionParent;\n const viewElement = positionParentElement.findAncestor(isWidget);\n if (!viewElement) {\n return false;\n }\n const modelElement = mapper.toModelElement(viewElement);\n /* istanbul ignore next -- @preserve */ if (!modelElement) {\n return false;\n }\n editor.model.change((writer)=>{\n writer.setSelection(modelElement, 'on');\n });\n return true;\n }\n}\n/**\n * Finds the closest ancestor element that is either an editable element or a widget.\n *\n * @param element The element from which to start searching.\n * @returns The closest ancestor element that is either an editable element or a widget, or null if none is found.\n */ function findClosestEditableOrWidgetAncestor(element) {\n let currentElement = element;\n while(currentElement){\n if (currentElement.is('editableElement') || isWidget(currentElement)) {\n return currentElement;\n }\n currentElement = currentElement.parent;\n }\n return null;\n}\n/**\n * Retrieves the ViewElement associated with a mouse event in the editing view.\n *\n * @param view The editing view.\n * @param domEventData The DOM event data containing the mouse event.\n * @returns The ViewElement associated with the mouse event, or null if not found.\n */ function getElementFromMouseEvent(view, domEventData) {\n const domRange = getRangeFromMouseEvent(domEventData.domEvent);\n let viewRange = null;\n if (domRange) {\n viewRange = view.domConverter.domRangeToView(domRange);\n } else {\n // Fallback to create range in target element. It happens frequently on Safari browser.\n // See more: https://github.com/ckeditor/ckeditor5/issues/16978\n viewRange = view.createRange(view.createPositionAt(domEventData.target, 0));\n }\n if (!viewRange) {\n return null;\n }\n const viewPosition = viewRange.start;\n if (!viewPosition.parent) {\n return null;\n }\n let viewNode = viewPosition.parent;\n if (viewPosition.parent.is('editableElement')) {\n if (viewPosition.isAtEnd && viewPosition.nodeBefore) {\n // Click after a widget tend to return position at the end of the editable element\n // so use the node before it if range is at the end of a parent.\n viewNode = viewPosition.nodeBefore;\n } else if (viewPosition.isAtStart && viewPosition.nodeAfter) {\n // Click before a widget tend to return position at the start of the editable element\n // so use the node after it if range is at the start of a parent.\n // See more: https://github.com/ckeditor/ckeditor5/issues/16992\n viewNode = viewPosition.nodeAfter;\n }\n }\n if (viewNode.is('$text')) {\n return viewNode.parent;\n }\n return viewNode;\n}\n/**\n * Checks whether the specified `element` is a child of the `parent` element.\n *\n * @param element An element to check.\n * @param parent A parent for the element.\n */ function isChild(element, parent) {\n if (!parent) {\n return false;\n }\n return Array.from(element.getAncestors()).includes(parent);\n}\n/**\n * Returns nearest text block ancestor.\n */ function findTextBlockAncestor(modelElement, schema) {\n for (const element of modelElement.getAncestors({\n includeSelf: true,\n parentFirst: true\n })){\n if (schema.checkChild(element, '$text')) {\n return element;\n }\n // Do not go beyond nested editable.\n if (schema.isLimit(element) && !schema.isObject(element)) {\n break;\n }\n }\n return null;\n}\n/**\n * Returns next text block where could put selection.\n */ function findNextTextBlock(position, schema) {\n const treeWalker = new TreeWalker({\n startPosition: position\n });\n for (const { item } of treeWalker){\n if (schema.isLimit(item) || !item.is('element')) {\n return null;\n }\n if (schema.checkChild(item, '$text')) {\n return item;\n }\n }\n return null;\n}\n\n/**\n * Widget toolbar repository plugin. A central point for registering widget toolbars. This plugin handles the whole\n * toolbar rendering process and exposes a concise API.\n *\n * To add a toolbar for your widget use the {@link ~WidgetToolbarRepository#register `WidgetToolbarRepository#register()`} method.\n *\n * The following example comes from the {@link module:image/imagetoolbar~ImageToolbar} plugin:\n *\n * ```ts\n * class ImageToolbar extends Plugin {\n * \tstatic get requires() {\n * \t\treturn [ WidgetToolbarRepository ];\n * \t}\n *\n * \tafterInit() {\n * \t\tconst editor = this.editor;\n * \t\tconst widgetToolbarRepository = editor.plugins.get( WidgetToolbarRepository );\n *\n * \t\twidgetToolbarRepository.register( 'image', {\n * \t\t\titems: editor.config.get( 'image.toolbar' ),\n * \t\t\tgetRelatedElement: getClosestSelectedImageWidget\n * \t\t} );\n * \t}\n * }\n * ```\n */ class WidgetToolbarRepository extends Plugin {\n /**\n\t * A map of toolbar definitions.\n\t */ _toolbarDefinitions = new Map();\n _balloon;\n /**\n\t * @inheritDoc\n\t */ static get requires() {\n return [\n ContextualBalloon\n ];\n }\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'WidgetToolbarRepository';\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const editor = this.editor;\n // Disables the default balloon toolbar for all widgets.\n if (editor.plugins.has('BalloonToolbar')) {\n const balloonToolbar = editor.plugins.get('BalloonToolbar');\n this.listenTo(balloonToolbar, 'show', (evt)=>{\n if (isWidgetSelected(editor.editing.view.document.selection)) {\n evt.stop();\n }\n }, {\n priority: 'high'\n });\n }\n this._balloon = this.editor.plugins.get('ContextualBalloon');\n this.on('change:isEnabled', ()=>{\n this._updateToolbarsVisibility();\n });\n this.listenTo(editor.ui, 'update', ()=>{\n this._updateToolbarsVisibility();\n });\n // UI#update is not fired after focus is back in editor, we need to check if balloon panel should be visible.\n this.listenTo(editor.ui.focusTracker, 'change:isFocused', ()=>{\n this._updateToolbarsVisibility();\n }, {\n priority: 'low'\n });\n }\n destroy() {\n super.destroy();\n for (const toolbarConfig of this._toolbarDefinitions.values()){\n toolbarConfig.view.destroy();\n }\n }\n /**\n\t * Registers toolbar in the WidgetToolbarRepository. It renders it in the `ContextualBalloon` based on the value of the invoked\n\t * `getRelatedElement` function. Toolbar items are gathered from `items` array.\n\t * The balloon's CSS class is by default `ck-toolbar-container` and may be override with the `balloonClassName` option.\n\t *\n\t * Note: This method should be called in the {@link module:core/plugin~PluginInterface#afterInit `Plugin#afterInit()`}\n\t * callback (or later) to make sure that the given toolbar items were already registered by other plugins.\n\t *\n\t * @param toolbarId An id for the toolbar. Used to\n\t * @param options.ariaLabel Label used by assistive technologies to describe this toolbar element.\n\t * @param options.items Array of toolbar items.\n\t * @param options.getRelatedElement Callback which returns an element the toolbar should be attached to.\n\t * @param options.balloonClassName CSS class for the widget balloon.\n\t */ register(toolbarId, { ariaLabel, items, getRelatedElement, balloonClassName = 'ck-toolbar-container' }) {\n // Trying to register a toolbar without any item.\n if (!items.length) {\n /**\n\t\t\t * When {@link module:widget/widgettoolbarrepository~WidgetToolbarRepository#register registering} a new widget toolbar, you\n\t\t\t * need to provide a non-empty array with the items that will be inserted into the toolbar.\n\t\t\t *\n\t\t\t * If you see this error when integrating the editor, you likely forgot to configure one of the widget toolbars.\n\t\t\t *\n\t\t\t * See for instance:\n\t\t\t *\n\t\t\t * * {@link module:table/tableconfig~TableConfig#contentToolbar `config.table.contentToolbar`}\n\t\t\t * * {@link module:image/imageconfig~ImageConfig#toolbar `config.image.toolbar`}\n\t\t\t *\n\t\t\t * @error widget-toolbar-no-items\n\t\t\t * @param toolbarId The id of the toolbar that has not been configured correctly.\n\t\t\t */ logWarning('widget-toolbar-no-items', {\n toolbarId\n });\n return;\n }\n const editor = this.editor;\n const t = editor.t;\n const toolbarView = new ToolbarView(editor.locale);\n toolbarView.ariaLabel = ariaLabel || t('Widget toolbar');\n if (this._toolbarDefinitions.has(toolbarId)) {\n /**\n\t\t\t * Toolbar with the given id was already added.\n\t\t\t *\n\t\t\t * @error widget-toolbar-duplicated\n\t\t\t * @param toolbarId Toolbar id.\n\t\t\t */ throw new CKEditorError('widget-toolbar-duplicated', this, {\n toolbarId\n });\n }\n const toolbarDefinition = {\n view: toolbarView,\n getRelatedElement,\n balloonClassName,\n itemsConfig: items,\n initialized: false\n };\n // Register the toolbar so it becomes available for Alt+F10 and Esc navigation.\n editor.ui.addToolbar(toolbarView, {\n isContextual: true,\n beforeFocus: ()=>{\n const relatedElement = getRelatedElement(editor.editing.view.document.selection);\n if (relatedElement) {\n this._showToolbar(toolbarDefinition, relatedElement);\n }\n },\n afterBlur: ()=>{\n this._hideToolbar(toolbarDefinition);\n }\n });\n this._toolbarDefinitions.set(toolbarId, toolbarDefinition);\n }\n /**\n\t * Iterates over stored toolbars and makes them visible or hidden.\n\t */ _updateToolbarsVisibility() {\n let maxRelatedElementDepth = 0;\n let deepestRelatedElement = null;\n let deepestToolbarDefinition = null;\n for (const definition of this._toolbarDefinitions.values()){\n const relatedElement = definition.getRelatedElement(this.editor.editing.view.document.selection);\n if (!this.isEnabled || !relatedElement) {\n if (this._isToolbarInBalloon(definition)) {\n this._hideToolbar(definition);\n }\n } else if (!this.editor.ui.focusTracker.isFocused) {\n if (this._isToolbarVisible(definition)) {\n this._hideToolbar(definition);\n }\n } else {\n const relatedElementDepth = relatedElement.getAncestors().length;\n // Many toolbars can express willingness to be displayed but they do not know about\n // each other. Figure out which toolbar is deepest in the view tree to decide which\n // should be displayed. For instance, if a selected image is inside a table cell, display\n // the ImageToolbar rather than the TableToolbar (#60).\n if (relatedElementDepth > maxRelatedElementDepth) {\n maxRelatedElementDepth = relatedElementDepth;\n deepestRelatedElement = relatedElement;\n deepestToolbarDefinition = definition;\n }\n }\n }\n if (deepestToolbarDefinition) {\n this._showToolbar(deepestToolbarDefinition, deepestRelatedElement);\n }\n }\n /**\n\t * Hides the given toolbar.\n\t */ _hideToolbar(toolbarDefinition) {\n this._balloon.remove(toolbarDefinition.view);\n this.stopListening(this._balloon, 'change:visibleView');\n }\n /**\n\t * Shows up the toolbar if the toolbar is not visible.\n\t * Otherwise, repositions the toolbar's balloon when toolbar's view is the most top view in balloon stack.\n\t *\n\t * It might happen here that the toolbar's view is under another view. Then do nothing as the other toolbar view\n\t * should be still visible after the {@link module:ui/editorui/editorui~EditorUI#event:update}.\n\t */ _showToolbar(toolbarDefinition, relatedElement) {\n if (this._isToolbarVisible(toolbarDefinition)) {\n repositionContextualBalloon(this.editor, relatedElement);\n } else if (!this._isToolbarInBalloon(toolbarDefinition)) {\n if (!toolbarDefinition.initialized) {\n toolbarDefinition.initialized = true;\n toolbarDefinition.view.fillFromConfig(toolbarDefinition.itemsConfig, this.editor.ui.componentFactory);\n }\n this._balloon.add({\n view: toolbarDefinition.view,\n position: getBalloonPositionData(this.editor, relatedElement),\n balloonClassName: toolbarDefinition.balloonClassName\n });\n // Update toolbar position each time stack with toolbar view is switched to visible.\n // This is in a case target element has changed when toolbar was in invisible stack\n // e.g. target image was wrapped by a block quote.\n // See https://github.com/ckeditor/ckeditor5-widget/issues/92.\n this.listenTo(this._balloon, 'change:visibleView', ()=>{\n for (const definition of this._toolbarDefinitions.values()){\n if (this._isToolbarVisible(definition)) {\n const relatedElement = definition.getRelatedElement(this.editor.editing.view.document.selection);\n repositionContextualBalloon(this.editor, relatedElement);\n }\n }\n });\n }\n }\n _isToolbarVisible(toolbar) {\n return this._balloon.visibleView === toolbar.view;\n }\n _isToolbarInBalloon(toolbar) {\n return this._balloon.hasView(toolbar.view);\n }\n}\nfunction repositionContextualBalloon(editor, relatedElement) {\n const balloon = editor.plugins.get('ContextualBalloon');\n const position = getBalloonPositionData(editor, relatedElement);\n balloon.updatePosition(position);\n}\nfunction getBalloonPositionData(editor, relatedElement) {\n const editingView = editor.editing.view;\n const defaultPositions = BalloonPanelView.defaultPositions;\n return {\n target: editingView.domConverter.mapViewToDom(relatedElement),\n positions: [\n defaultPositions.northArrowSouth,\n defaultPositions.northArrowSouthWest,\n defaultPositions.northArrowSouthEast,\n defaultPositions.southArrowNorth,\n defaultPositions.southArrowNorthWest,\n defaultPositions.southArrowNorthEast,\n defaultPositions.viewportStickyNorth\n ]\n };\n}\nfunction isWidgetSelected(selection) {\n const viewElement = selection.getSelectedElement();\n return !!(viewElement && isWidget(viewElement));\n}\n\n/**\n * Stores the internal state of a single resizable object.\n */ class ResizeState extends /* #__PURE__ */ ObservableMixin() {\n /**\n\t * The reference point of the resizer where the dragging started. It is used to measure the distance the user cursor\n\t * traveled, so how much the image should be enlarged.\n\t * This information is only known after the DOM was rendered, so it will be updated later.\n\t *\n\t * @internal\n\t */ _referenceCoordinates;\n /**\n\t * Resizer options.\n\t */ _options;\n /**\n\t * The original width (pixels) of the resized object when the resize process was started.\n\t *\n\t * @readonly\n\t */ _originalWidth;\n /**\n\t * The original height (pixels) of the resized object when the resize process was started.\n\t *\n\t * @readonly\n\t */ _originalHeight;\n /**\n\t * The original width (percents) of the resized object when the resize process was started.\n\t *\n\t * @readonly\n\t */ _originalWidthPercents;\n /**\n\t * A width to height ratio of the resized image.\n\t *\n\t * @readonly\n\t */ _aspectRatio;\n /**\n\t * @param options Resizer options.\n\t */ constructor(options){\n super();\n this.set('activeHandlePosition', null);\n this.set('proposedWidthPercents', null);\n this.set('proposedWidth', null);\n this.set('proposedHeight', null);\n this.set('proposedHandleHostWidth', null);\n this.set('proposedHandleHostHeight', null);\n this._options = options;\n this._referenceCoordinates = null;\n }\n /**\n\t * The original width (pixels) of the resized object when the resize process was started.\n\t */ get originalWidth() {\n return this._originalWidth;\n }\n /**\n\t * The original height (pixels) of the resized object when the resize process was started.\n\t */ get originalHeight() {\n return this._originalHeight;\n }\n /**\n\t * The original width (percents) of the resized object when the resize process was started.\n\t */ get originalWidthPercents() {\n return this._originalWidthPercents;\n }\n /**\n\t * A width to height ratio of the resized image.\n\t */ get aspectRatio() {\n return this._aspectRatio;\n }\n /**\n\t *\n\t * @param domResizeHandle The handle used to calculate the reference point.\n\t */ begin(domResizeHandle, domHandleHost, domResizeHost) {\n const clientRect = new Rect(domHandleHost);\n this.activeHandlePosition = getHandlePosition(domResizeHandle);\n this._referenceCoordinates = getAbsoluteBoundaryPoint(domHandleHost, getOppositePosition(this.activeHandlePosition));\n this._originalWidth = clientRect.width;\n this._originalHeight = clientRect.height;\n this._aspectRatio = clientRect.width / clientRect.height;\n const widthStyle = domResizeHost.style.width;\n if (widthStyle && widthStyle.match(/^\\d+(\\.\\d*)?%$/)) {\n this._originalWidthPercents = parseFloat(widthStyle);\n } else {\n this._originalWidthPercents = calculateResizeHostPercentageWidth(domResizeHost, clientRect);\n }\n }\n update(newSize) {\n this.proposedWidth = newSize.width;\n this.proposedHeight = newSize.height;\n this.proposedWidthPercents = newSize.widthPercents;\n this.proposedHandleHostWidth = newSize.handleHostWidth;\n this.proposedHandleHostHeight = newSize.handleHostHeight;\n }\n}\n/**\n * Returns coordinates of the top-left corner of an element, relative to the document's top-left corner.\n *\n * @param resizerPosition The position of the resize handle, e.g. `\"top-left\"`, `\"bottom-right\"`.\n */ function getAbsoluteBoundaryPoint(element, resizerPosition) {\n const elementRect = new Rect(element);\n const positionParts = resizerPosition.split('-');\n const ret = {\n x: positionParts[1] == 'right' ? elementRect.right : elementRect.left,\n y: positionParts[0] == 'bottom' ? elementRect.bottom : elementRect.top\n };\n ret.x += element.ownerDocument.defaultView.scrollX;\n ret.y += element.ownerDocument.defaultView.scrollY;\n return ret;\n}\n/**\n * @param resizerPosition The expected resizer position, like `\"top-left\"`, `\"bottom-right\"`.\n * @returns A prefixed HTML class name for the resizer element.\n */ function getResizerHandleClass(resizerPosition) {\n return `ck-widget__resizer__handle-${resizerPosition}`;\n}\n/**\n * Determines the position of a given resize handle.\n *\n * @param domHandle Handle used to calculate the reference point.\n * @returns Returns a string like `\"top-left\"` or `undefined` if not matched.\n */ function getHandlePosition(domHandle) {\n const resizerPositions = [\n 'top-left',\n 'top-right',\n 'bottom-right',\n 'bottom-left'\n ];\n for (const position of resizerPositions){\n if (domHandle.classList.contains(getResizerHandleClass(position))) {\n return position;\n }\n }\n}\n/**\n * @param position Like `\"top-left\"`.\n * @returns Inverted `position`, e.g. it returns `\"bottom-right\"` if `\"top-left\"` was given as `position`.\n */ function getOppositePosition(position) {\n const parts = position.split('-');\n const replacements = {\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left'\n };\n return `${replacements[parts[0]]}-${replacements[parts[1]]}`;\n}\n\n/**\n * A view displaying the proposed new element size during the resizing.\n */ class SizeView extends View {\n constructor(){\n super();\n const bind = this.bindTemplate;\n this.setTemplate({\n tag: 'div',\n attributes: {\n class: [\n 'ck',\n 'ck-size-view',\n bind.to('_viewPosition', (value)=>value ? `ck-orientation-${value}` : '')\n ],\n style: {\n display: bind.if('_isVisible', 'none', (visible)=>!visible)\n }\n },\n children: [\n {\n text: bind.to('_label')\n }\n ]\n });\n }\n /**\n\t * A method used for binding the `SizeView` instance properties to the `ResizeState` instance observable properties.\n\t *\n\t * @internal\n\t * @param options An object defining the resizer options, used for setting the proper size label.\n\t * @param resizeState The `ResizeState` class instance, used for keeping the `SizeView` state up to date.\n\t */ _bindToState(options, resizeState) {\n this.bind('_isVisible').to(resizeState, 'proposedWidth', resizeState, 'proposedHeight', (width, height)=>width !== null && height !== null);\n this.bind('_label').to(resizeState, 'proposedHandleHostWidth', resizeState, 'proposedHandleHostHeight', resizeState, 'proposedWidthPercents', (width, height, widthPercents)=>{\n if (options.unit === 'px') {\n return `${width}×${height}`;\n } else {\n return `${widthPercents}%`;\n }\n });\n this.bind('_viewPosition').to(resizeState, 'activeHandlePosition', resizeState, 'proposedHandleHostWidth', resizeState, 'proposedHandleHostHeight', // If the widget is too small to contain the size label, display the label above.\n (position, width, height)=>width < 50 || height < 50 ? 'above-center' : position);\n }\n /**\n\t * A method used for cleaning up. It removes the bindings and hides the view.\n\t *\n\t * @internal\n\t */ _dismiss() {\n this.unbind();\n this._isVisible = false;\n }\n}\n\n/**\n * Represents a resizer for a single resizable object.\n */ class Resizer extends /* #__PURE__ */ ObservableMixin() {\n /**\n\t * Stores the state of the resizable host geometry, such as the original width, the currently proposed height, etc.\n\t *\n\t * Note that a new state is created for each resize transaction.\n\t */ _state;\n /**\n\t * A view displaying the proposed new element size during the resizing.\n\t */ _sizeView;\n /**\n\t * Options passed to the {@link #constructor}.\n\t */ _options;\n /**\n\t * A wrapper that is controlled by the resizer. This is usually a widget element.\n\t */ _viewResizerWrapper = null;\n /**\n\t * The width of the resized {@link module:widget/widgetresize~ResizerOptions#viewElement viewElement} before the resizing started.\n\t */ _initialViewWidth;\n /**\n\t * @param options Resizer options.\n\t */ constructor(options){\n super();\n this._options = options;\n this.set('isEnabled', true);\n this.set('isSelected', false);\n this.bind('isVisible').to(this, 'isEnabled', this, 'isSelected', (isEnabled, isSelected)=>isEnabled && isSelected);\n this.decorate('begin');\n this.decorate('cancel');\n this.decorate('commit');\n this.decorate('updateSize');\n this.on('commit', (event)=>{\n // State might not be initialized yet. In this case, prevent further handling and make sure that the resizer is\n // cleaned up (#5195).\n if (!this.state.proposedWidth && !this.state.proposedWidthPercents) {\n this._cleanup();\n event.stop();\n }\n }, {\n priority: 'high'\n });\n }\n /**\n\t * Stores the state of the resizable host geometry, such as the original width, the currently proposed height, etc.\n\t *\n\t * Note that a new state is created for each resize transaction.\n\t */ get state() {\n return this._state;\n }\n /**\n\t * Makes resizer visible in the UI.\n\t */ show() {\n const editingView = this._options.editor.editing.view;\n editingView.change((writer)=>{\n writer.removeClass('ck-hidden', this._viewResizerWrapper);\n });\n }\n /**\n\t * Hides resizer in the UI.\n\t */ hide() {\n const editingView = this._options.editor.editing.view;\n editingView.change((writer)=>{\n writer.addClass('ck-hidden', this._viewResizerWrapper);\n });\n }\n /**\n\t * Attaches the resizer to the DOM.\n\t */ attach() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const that = this;\n const widgetElement = this._options.viewElement;\n const editingView = this._options.editor.editing.view;\n editingView.change((writer)=>{\n const viewResizerWrapper = writer.createUIElement('div', {\n class: 'ck ck-reset_all ck-widget__resizer'\n }, function(domDocument) {\n const domElement = this.toDomElement(domDocument);\n that._appendHandles(domElement);\n that._appendSizeUI(domElement);\n return domElement;\n });\n // Append the resizer wrapper to the widget's wrapper.\n writer.insert(writer.createPositionAt(widgetElement, 'end'), viewResizerWrapper);\n writer.addClass('ck-widget_with-resizer', widgetElement);\n this._viewResizerWrapper = viewResizerWrapper;\n if (!this.isVisible) {\n this.hide();\n }\n });\n this.on('change:isVisible', ()=>{\n if (this.isVisible) {\n this.show();\n this.redraw();\n } else {\n this.hide();\n }\n });\n }\n /**\n\t * Starts the resizing process.\n\t *\n\t * Creates a new {@link #state} for the current process.\n\t *\n\t * @fires begin\n\t * @param domResizeHandle Clicked handle.\n\t */ begin(domResizeHandle) {\n this._state = new ResizeState(this._options);\n this._sizeView._bindToState(this._options, this.state);\n this._initialViewWidth = this._options.viewElement.getStyle('width');\n this.state.begin(domResizeHandle, this._getHandleHost(), this._getResizeHost());\n }\n /**\n\t * Updates the proposed size based on `domEventData`.\n\t *\n\t * @fires updateSize\n\t */ updateSize(domEventData) {\n const newSize = this._proposeNewSize(domEventData);\n const editingView = this._options.editor.editing.view;\n editingView.change((writer)=>{\n const unit = this._options.unit || '%';\n const newWidth = (unit === '%' ? newSize.widthPercents : newSize.width) + unit;\n writer.setStyle('width', newWidth, this._options.viewElement);\n });\n // Get an actual image width, and:\n // * reflect this size to the resize wrapper\n // * apply this **real** size to the state\n const domHandleHost = this._getHandleHost();\n const domHandleHostRect = new Rect(domHandleHost);\n const handleHostWidth = Math.round(domHandleHostRect.width);\n const handleHostHeight = Math.round(domHandleHostRect.height);\n // Handle max-width limitation.\n const domResizeHostRect = new Rect(domHandleHost);\n newSize.width = Math.round(domResizeHostRect.width);\n newSize.height = Math.round(domResizeHostRect.height);\n this.redraw(domHandleHostRect);\n this.state.update({\n ...newSize,\n handleHostWidth,\n handleHostHeight\n });\n }\n /**\n\t * Applies the geometry proposed with the resizer.\n\t *\n\t * @fires commit\n\t */ commit() {\n const unit = this._options.unit || '%';\n const newValue = (unit === '%' ? this.state.proposedWidthPercents : this.state.proposedWidth) + unit;\n // Both cleanup and onCommit callback are very likely to make view changes. Ensure that it is made in a single step.\n this._options.editor.editing.view.change(()=>{\n this._cleanup();\n this._options.onCommit(newValue);\n });\n }\n /**\n\t * Cancels and rejects the proposed resize dimensions, hiding the UI.\n\t *\n\t * @fires cancel\n\t */ cancel() {\n this._cleanup();\n }\n /**\n\t * Destroys the resizer.\n\t */ destroy() {\n this.cancel();\n }\n /**\n\t * Redraws the resizer.\n\t *\n\t * @param handleHostRect Handle host rectangle might be given to improve performance.\n\t */ redraw(handleHostRect) {\n const domWrapper = this._domResizerWrapper;\n // Refresh only if resizer exists in the DOM.\n if (!existsInDom(domWrapper)) {\n return;\n }\n const widgetWrapper = domWrapper.parentElement;\n const handleHost = this._getHandleHost();\n const resizerWrapper = this._viewResizerWrapper;\n const currentDimensions = [\n resizerWrapper.getStyle('width'),\n resizerWrapper.getStyle('height'),\n resizerWrapper.getStyle('left'),\n resizerWrapper.getStyle('top')\n ];\n let newDimensions;\n if (widgetWrapper.isSameNode(handleHost)) {\n const clientRect = handleHostRect || new Rect(handleHost);\n newDimensions = [\n clientRect.width + 'px',\n clientRect.height + 'px',\n undefined,\n undefined\n ];\n } else {\n newDimensions = [\n handleHost.offsetWidth + 'px',\n handleHost.offsetHeight + 'px',\n handleHost.offsetLeft + 'px',\n handleHost.offsetTop + 'px'\n ];\n }\n // Make changes to the view only if the resizer should actually get new dimensions.\n // Otherwise, if View#change() was always called, this would cause EditorUI#update\n // loops because the WidgetResize plugin listens to EditorUI#update and updates\n // the resizer.\n // https://github.com/ckeditor/ckeditor5/issues/7633\n if (compareArrays(currentDimensions, newDimensions) !== 'same') {\n this._options.editor.editing.view.change((writer)=>{\n writer.setStyle({\n width: newDimensions[0],\n height: newDimensions[1],\n left: newDimensions[2],\n top: newDimensions[3]\n }, resizerWrapper);\n });\n }\n }\n containsHandle(domElement) {\n return this._domResizerWrapper.contains(domElement);\n }\n static isResizeHandle(domElement) {\n return domElement.classList.contains('ck-widget__resizer__handle');\n }\n /**\n\t * Cleans up the context state.\n\t */ _cleanup() {\n this._sizeView._dismiss();\n const editingView = this._options.editor.editing.view;\n editingView.change((writer)=>{\n writer.setStyle('width', this._initialViewWidth, this._options.viewElement);\n });\n }\n /**\n\t * Calculates the proposed size as the resize handles are dragged.\n\t *\n\t * @param domEventData Event data that caused the size update request. It should be used to calculate the proposed size.\n\t */ _proposeNewSize(domEventData) {\n const state = this.state;\n const currentCoordinates = extractCoordinates(domEventData);\n const isCentered = this._options.isCentered ? this._options.isCentered(this) : true;\n // Enlargement defines how much the resize host has changed in a given axis. Naturally it could be a negative number\n // meaning that it has been shrunk.\n //\n // +----------------+--+\n // | | |\n // | img | |\n // | /handle host | |\n // +----------------+ | ^\n // | | | - enlarge y\n // +-------------------+ v\n // \t\t\t\t\t<-->\n // \t\t\t\t\t enlarge x\n const enlargement = {\n x: state._referenceCoordinates.x - (currentCoordinates.x + state.originalWidth),\n y: currentCoordinates.y - state.originalHeight - state._referenceCoordinates.y\n };\n if (isCentered && state.activeHandlePosition.endsWith('-right')) {\n enlargement.x = currentCoordinates.x - (state._referenceCoordinates.x + state.originalWidth);\n }\n // Objects needs to be resized twice as much in horizontal axis if centered, since enlargement is counted from\n // one resized corner to your cursor. It needs to be duplicated to compensate for the other side too.\n if (isCentered) {\n enlargement.x *= 2;\n }\n // const resizeHost = this._getResizeHost();\n // The size proposed by the user. It does not consider the aspect ratio.\n let width = Math.abs(state.originalWidth + enlargement.x);\n let height = Math.abs(state.originalHeight + enlargement.y);\n // Dominant determination must take the ratio into account.\n const dominant = width / state.aspectRatio > height ? 'width' : 'height';\n if (dominant == 'width') {\n height = width / state.aspectRatio;\n } else {\n width = height * state.aspectRatio;\n }\n return {\n width: Math.round(width),\n height: Math.round(height),\n widthPercents: Math.min(Math.round(state.originalWidthPercents / state.originalWidth * width * 100) / 100, 100)\n };\n }\n /**\n\t * Obtains the resize host.\n\t *\n\t * Resize host is an object that receives dimensions which are the result of resizing.\n\t */ _getResizeHost() {\n const widgetWrapper = this._domResizerWrapper.parentElement;\n return this._options.getResizeHost(widgetWrapper);\n }\n /**\n\t * Obtains the handle host.\n\t *\n\t * Handle host is an object that the handles are aligned to.\n\t *\n\t * Handle host will not always be an entire widget itself. Take an image as an example. The image widget\n\t * contains an image and a caption. Only the image should be surrounded with handles.\n\t */ _getHandleHost() {\n const widgetWrapper = this._domResizerWrapper.parentElement;\n return this._options.getHandleHost(widgetWrapper);\n }\n /**\n\t * DOM container of the entire resize UI.\n\t *\n\t * Note that this property will have a value only after the element bound with the resizer is rendered\n\t * (otherwise `null`).\n\t */ get _domResizerWrapper() {\n return this._options.editor.editing.view.domConverter.mapViewToDom(this._viewResizerWrapper);\n }\n /**\n\t * Renders the resize handles in the DOM.\n\t *\n\t * @param domElement The resizer wrapper.\n\t */ _appendHandles(domElement) {\n const resizerPositions = [\n 'top-left',\n 'top-right',\n 'bottom-right',\n 'bottom-left'\n ];\n for (const currentPosition of resizerPositions){\n domElement.appendChild(new Template({\n tag: 'div',\n attributes: {\n class: `ck-widget__resizer__handle ${getResizerClass(currentPosition)}`\n }\n }).render());\n }\n }\n /**\n\t * Sets up the {@link #_sizeView} property and adds it to the passed `domElement`.\n\t */ _appendSizeUI(domElement) {\n this._sizeView = new SizeView();\n // Make sure icon#element is rendered before passing to appendChild().\n this._sizeView.render();\n domElement.appendChild(this._sizeView.element);\n }\n}\n/**\n * @param resizerPosition Expected resizer position like `\"top-left\"`, `\"bottom-right\"`.\n * @returns A prefixed HTML class name for the resizer element\n */ function getResizerClass(resizerPosition) {\n return `ck-widget__resizer__handle-${resizerPosition}`;\n}\nfunction extractCoordinates(event) {\n return {\n x: event.pageX,\n y: event.pageY\n };\n}\nfunction existsInDom(element) {\n return element && element.ownerDocument && element.ownerDocument.contains(element);\n}\n\n/**\n * The widget resize feature plugin.\n *\n * Use the {@link module:widget/widgetresize~WidgetResize#attachTo} method to create a resizer for the specified widget.\n */ class WidgetResize extends Plugin {\n /**\n\t * A map of resizers created using this plugin instance.\n\t */ _resizers = new Map();\n _observer;\n _redrawSelectedResizerThrottled;\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'WidgetResize';\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const editing = this.editor.editing;\n const domDocument = global.window.document;\n this.set('selectedResizer', null);\n this.set('_activeResizer', null);\n editing.view.addObserver(MouseObserver);\n this._observer = new (DomEmitterMixin())();\n this.listenTo(editing.view.document, 'mousedown', this._mouseDownListener.bind(this), {\n priority: 'high'\n });\n this._observer.listenTo(domDocument, 'mousemove', this._mouseMoveListener.bind(this));\n this._observer.listenTo(domDocument, 'mouseup', this._mouseUpListener.bind(this));\n this._redrawSelectedResizerThrottled = throttle(()=>this.redrawSelectedResizer(), 200);\n // Redrawing on any change of the UI of the editor (including content changes).\n this.editor.ui.on('update', this._redrawSelectedResizerThrottled);\n // Remove view widget-resizer mappings for widgets that have been removed from the document.\n // https://github.com/ckeditor/ckeditor5/issues/10156\n // https://github.com/ckeditor/ckeditor5/issues/10266\n this.editor.model.document.on('change', ()=>{\n for (const [viewElement, resizer] of this._resizers){\n if (!viewElement.isAttached()) {\n this._resizers.delete(viewElement);\n resizer.destroy();\n }\n }\n }, {\n priority: 'lowest'\n });\n // Resizers need to be redrawn upon window resize, because new window might shrink resize host.\n this._observer.listenTo(global.window, 'resize', this._redrawSelectedResizerThrottled);\n const viewSelection = this.editor.editing.view.document.selection;\n viewSelection.on('change', ()=>{\n const selectedElement = viewSelection.getSelectedElement();\n const resizer = this.getResizerByViewElement(selectedElement) || null;\n if (resizer) {\n this.select(resizer);\n } else {\n this.deselect();\n }\n });\n }\n /**\n\t * Redraws the selected resizer if there is any selected resizer and if it is visible.\n\t */ redrawSelectedResizer() {\n if (this.selectedResizer && this.selectedResizer.isVisible) {\n this.selectedResizer.redraw();\n }\n }\n /**\n\t * @inheritDoc\n\t */ destroy() {\n super.destroy();\n this._observer.stopListening();\n for (const resizer of this._resizers.values()){\n resizer.destroy();\n }\n this._redrawSelectedResizerThrottled.cancel();\n }\n /**\n\t * Marks resizer as selected.\n\t */ select(resizer) {\n this.deselect();\n this.selectedResizer = resizer;\n this.selectedResizer.isSelected = true;\n }\n /**\n\t * Deselects currently set resizer.\n\t */ deselect() {\n if (this.selectedResizer) {\n this.selectedResizer.isSelected = false;\n }\n this.selectedResizer = null;\n }\n /**\n\t * @param options Resizer options.\n\t */ attachTo(options) {\n const resizer = new Resizer(options);\n const plugins = this.editor.plugins;\n resizer.attach();\n if (plugins.has('WidgetToolbarRepository')) {\n // Hiding widget toolbar to improve the performance\n // (https://github.com/ckeditor/ckeditor5-widget/pull/112#issuecomment-564528765).\n const widgetToolbarRepository = plugins.get('WidgetToolbarRepository');\n resizer.on('begin', ()=>{\n widgetToolbarRepository.forceDisabled('resize');\n }, {\n priority: 'lowest'\n });\n resizer.on('cancel', ()=>{\n widgetToolbarRepository.clearForceDisabled('resize');\n }, {\n priority: 'highest'\n });\n resizer.on('commit', ()=>{\n widgetToolbarRepository.clearForceDisabled('resize');\n }, {\n priority: 'highest'\n });\n }\n this._resizers.set(options.viewElement, resizer);\n const viewSelection = this.editor.editing.view.document.selection;\n const selectedElement = viewSelection.getSelectedElement();\n // If the element the resizer is created for is currently focused, it should become visible.\n if (this.getResizerByViewElement(selectedElement) == resizer) {\n this.select(resizer);\n }\n return resizer;\n }\n /**\n\t * Returns a resizer created for a given view element (widget element).\n\t *\n\t * @param viewElement View element associated with the resizer.\n\t */ getResizerByViewElement(viewElement) {\n return this._resizers.get(viewElement);\n }\n /**\n\t * Returns a resizer that contains a given resize handle.\n\t */ _getResizerByHandle(domResizeHandle) {\n for (const resizer of this._resizers.values()){\n if (resizer.containsHandle(domResizeHandle)) {\n return resizer;\n }\n }\n }\n /**\n\t * @param domEventData Native DOM event.\n\t */ _mouseDownListener(event, domEventData) {\n const resizeHandle = domEventData.domTarget;\n if (!Resizer.isResizeHandle(resizeHandle)) {\n return;\n }\n this._activeResizer = this._getResizerByHandle(resizeHandle) || null;\n if (this._activeResizer) {\n this._activeResizer.begin(resizeHandle);\n // Do not call other events when resizing. See: #6755.\n event.stop();\n domEventData.preventDefault();\n }\n }\n /**\n\t * @param domEventData Native DOM event.\n\t */ _mouseMoveListener(event, domEventData) {\n if (this._activeResizer) {\n this._activeResizer.updateSize(domEventData);\n }\n }\n _mouseUpListener() {\n if (this._activeResizer) {\n this._activeResizer.commit();\n this._activeResizer = null;\n }\n }\n}\n\nexport { WIDGET_CLASS_NAME, WIDGET_SELECTED_CLASS_NAME, Widget, WidgetResize, WidgetToolbarRepository, WidgetTypeAround, calculateResizeHostAncestorWidth, calculateResizeHostPercentageWidth, findOptimalInsertionRange, getLabel, isWidget, setHighlightHandling, setLabel, toWidget, toWidgetEditable, viewToModelPositionOutsideModelElement };\n//# sourceMappingURL=index.js.map\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/highlightstack\n */\n\nimport { EmitterMixin, type ArrayOrItem } from '@ckeditor/ckeditor5-utils';\n\nimport type { DowncastWriter, HighlightDescriptor } from '@ckeditor/ckeditor5-engine';\n\n/**\n * Class used to handle the correct order of highlights on elements.\n *\n * When different highlights are applied to same element the correct order should be preserved:\n *\n * * highlight with highest priority should be applied,\n * * if two highlights have same priority - sort by CSS class provided in\n * {@link module:engine/conversion/downcasthelpers~HighlightDescriptor}.\n *\n * This way, highlight will be applied with the same rules it is applied on texts.\n */\nexport default class HighlightStack extends /* #__PURE__ */ EmitterMixin() {\n\tprivate readonly _stack: Array<HighlightDescriptor> = [];\n\n\t/**\n\t * Adds highlight descriptor to the stack.\n\t *\n\t * @fires change:top\n\t */\n\tpublic add( descriptor: HighlightDescriptor, writer: DowncastWriter ): void {\n\t\tconst stack = this._stack;\n\n\t\t// Save top descriptor and insert new one. If top is changed - fire event.\n\t\tconst oldTop = stack[ 0 ];\n\t\tthis._insertDescriptor( descriptor );\n\t\tconst newTop = stack[ 0 ];\n\n\t\t// When new object is at the top and stores different information.\n\t\tif ( oldTop !== newTop && !compareDescriptors( oldTop, newTop ) ) {\n\t\t\tthis.fire<HighlightStackChangeEvent>( 'change:top', {\n\t\t\t\toldDescriptor: oldTop,\n\t\t\t\tnewDescriptor: newTop,\n\t\t\t\twriter\n\t\t\t} );\n\t\t}\n\t}\n\n\t/**\n\t * Removes highlight descriptor from the stack.\n\t *\n\t * @fires change:top\n\t * @param id Id of the descriptor to remove.\n\t */\n\tpublic remove( id: string, writer: DowncastWriter ): void {\n\t\tconst stack = this._stack;\n\n\t\tconst oldTop = stack[ 0 ];\n\t\tthis._removeDescriptor( id );\n\t\tconst newTop = stack[ 0 ];\n\n\t\t// When new object is at the top and stores different information.\n\t\tif ( oldTop !== newTop && !compareDescriptors( oldTop, newTop ) ) {\n\t\t\tthis.fire<HighlightStackChangeEvent>( 'change:top', {\n\t\t\t\toldDescriptor: oldTop,\n\t\t\t\tnewDescriptor: newTop,\n\t\t\t\twriter\n\t\t\t} );\n\t\t}\n\t}\n\n\t/**\n\t * Inserts a given descriptor in correct place in the stack. It also takes care about updating information\n\t * when descriptor with same id is already present.\n\t */\n\tprivate _insertDescriptor( descriptor: HighlightDescriptor ) {\n\t\tconst stack = this._stack;\n\t\tconst index = stack.findIndex( item => item.id === descriptor.id );\n\n\t\t// Inserting exact same descriptor - do nothing.\n\t\tif ( compareDescriptors( descriptor, stack[ index ] ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If descriptor with same id but with different information is on the stack - remove it.\n\t\tif ( index > -1 ) {\n\t\t\tstack.splice( index, 1 );\n\t\t}\n\n\t\t// Find correct place to insert descriptor in the stack.\n\t\t// It has different information (for example priority) so it must be re-inserted in correct place.\n\t\tlet i = 0;\n\n\t\twhile ( stack[ i ] && shouldABeBeforeB( stack[ i ], descriptor ) ) {\n\t\t\ti++;\n\t\t}\n\n\t\tstack.splice( i, 0, descriptor );\n\t}\n\n\t/**\n\t * Removes descriptor with given id from the stack.\n\t *\n\t * @param id Descriptor's id.\n\t */\n\tprivate _removeDescriptor( id: string ) {\n\t\tconst stack = this._stack;\n\t\tconst index = stack.findIndex( item => item.id === id );\n\n\t\t// If descriptor with same id is on the list - remove it.\n\t\tif ( index > -1 ) {\n\t\t\tstack.splice( index, 1 );\n\t\t}\n\t}\n}\n\n/**\n * Compares two descriptors by checking their priority and class list.\n *\n * @returns Returns true if both descriptors are defined and have same priority and classes.\n */\nfunction compareDescriptors( a: HighlightDescriptor, b: HighlightDescriptor ) {\n\treturn a && b && a.priority == b.priority && classesToString( a.classes ) == classesToString( b.classes );\n}\n\n/**\n * Checks whenever first descriptor should be placed in the stack before second one.\n */\nfunction shouldABeBeforeB( a: HighlightDescriptor, b: HighlightDescriptor ) {\n\tif ( a.priority! > b.priority! ) {\n\t\treturn true;\n\t} else if ( a.priority! < b.priority! ) {\n\t\treturn false;\n\t}\n\n\t// When priorities are equal and names are different - use classes to compare.\n\treturn classesToString( a.classes ) > classesToString( b.classes );\n}\n\n/**\n * Converts CSS classes passed with {@link module:engine/conversion/downcasthelpers~HighlightDescriptor} to\n * sorted string.\n */\nfunction classesToString( classes: ArrayOrItem<string> ) {\n\treturn Array.isArray( classes ) ? classes.sort().join( ',' ) : classes;\n}\n\n/**\n * Fired when top element on {@link module:widget/highlightstack~HighlightStack} has been changed\n *\n * @eventName ~HighlightStack#change:top\n */\nexport type HighlightStackChangeEvent = {\n\tname: 'change' | 'change:top';\n\targs: [ HighlightStackChangeEventData ];\n};\n\n/**\n * Additional information about the change.\n */\nexport type HighlightStackChangeEventData = {\n\n\t/**\n\t * Old highlight descriptor. It will be `undefined` when first descriptor is added to the stack.\n\t */\n\toldDescriptor: HighlightDescriptor;\n\n\t/**\n\t * New highlight descriptor. It will be `undefined` when last descriptor is removed from the stack.\n\t */\n\tnewDescriptor: HighlightDescriptor;\n\n\t/**\n\t * View writer that can be used to modify element.\n\t */\n\twriter: DowncastWriter;\n};\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/utils\n */\n\nimport {\n\tRect,\n\tCKEditorError,\n\ttoArray,\n\ttype ObservableChangeEvent,\n\ttype GetCallback\n} from '@ckeditor/ckeditor5-utils';\n\nimport {\n\ttype AddHighlightCallback,\n\ttype HighlightDescriptor,\n\ttype RemoveHighlightCallback,\n\ttype MapperViewToModelPositionEvent,\n\ttype DocumentSelection,\n\ttype DowncastWriter,\n\ttype Model,\n\ttype Range,\n\ttype Selection,\n\ttype ViewContainerElement,\n\ttype ViewEditableElement,\n\ttype ViewElement,\n\ttype ViewTypeCheckable\n} from '@ckeditor/ckeditor5-engine';\n\nimport { IconView } from '@ckeditor/ckeditor5-ui';\n\nimport HighlightStack, { type HighlightStackChangeEvent } from './highlightstack.js';\nimport { getTypeAroundFakeCaretPosition } from './widgettypearound/utils.js';\n\nimport dragHandleIcon from '../theme/icons/drag-handle.svg';\n\n/**\n * CSS class added to each widget element.\n */\nexport const WIDGET_CLASS_NAME = 'ck-widget';\n\n/**\n * CSS class added to currently selected widget element.\n */\nexport const WIDGET_SELECTED_CLASS_NAME = 'ck-widget_selected';\n\n/**\n * Returns `true` if given {@link module:engine/view/node~Node} is an {@link module:engine/view/element~Element} and a widget.\n */\nexport function isWidget( node: ViewTypeCheckable ): boolean {\n\tif ( !node.is( 'element' ) ) {\n\t\treturn false;\n\t}\n\n\treturn !!node.getCustomProperty( 'widget' );\n}\n\n/**\n * Converts the given {@link module:engine/view/element~Element} to a widget in the following way:\n *\n * * sets the `contenteditable` attribute to `\"false\"`,\n * * adds the `ck-widget` CSS class,\n * * adds a custom {@link module:engine/view/element~Element#getFillerOffset `getFillerOffset()`} method returning `null`,\n * * adds a custom property allowing to recognize widget elements by using {@link ~isWidget `isWidget()`},\n * * implements the {@link ~setHighlightHandling view highlight on widgets}.\n *\n * This function needs to be used in conjunction with\n * {@link module:engine/conversion/downcasthelpers~DowncastHelpers downcast conversion helpers}\n * like {@link module:engine/conversion/downcasthelpers~DowncastHelpers#elementToElement `elementToElement()`}.\n * Moreover, typically you will want to use `toWidget()` only for `editingDowncast`, while keeping the `dataDowncast` clean.\n *\n * For example, in order to convert a `<widget>` model element to `<div class=\"widget\">` in the view, you can define\n * such converters:\n *\n * ```ts\n * editor.conversion.for( 'editingDowncast' )\n * \t.elementToElement( {\n * \t\tmodel: 'widget',\n * \t\tview: ( modelItem, { writer } ) => {\n * \t\t\tconst div = writer.createContainerElement( 'div', { class: 'widget' } );\n *\n * \t\t\treturn toWidget( div, writer, { label: 'some widget' } );\n * \t\t}\n * \t} );\n *\n * editor.conversion.for( 'dataDowncast' )\n * \t.elementToElement( {\n * \t\tmodel: 'widget',\n * \t\tview: ( modelItem, { writer } ) => {\n * \t\t\treturn writer.createContainerElement( 'div', { class: 'widget' } );\n * \t\t}\n * \t} );\n * ```\n *\n * See the full source code of the widget (with a nested editable) schema definition and converters in\n * [this sample](https://github.com/ckeditor/ckeditor5-widget/blob/master/tests/manual/widget-with-nestededitable.js).\n *\n * @param options Additional options.\n * @param options.label Element's label provided to the {@link ~setLabel} function. It can be passed as\n * a plain string or a function returning a string. It represents the widget for assistive technologies (like screen readers).\n * @param options.hasSelectionHandle If `true`, the widget will have a selection handle added.\n * @returns Returns the same element.\n */\nexport function toWidget(\n\telement: ViewElement,\n\twriter: DowncastWriter,\n\toptions: {\n\t\tlabel?: string | ( () => string );\n\t\thasSelectionHandle?: boolean;\n\t} = {}\n): ViewElement {\n\tif ( !element.is( 'containerElement' ) ) {\n\t\t/**\n\t\t * The element passed to `toWidget()` must be a {@link module:engine/view/containerelement~ContainerElement}\n\t\t * instance.\n\t\t *\n\t\t * @error widget-to-widget-wrong-element-type\n\t\t * @param element The view element passed to `toWidget()`.\n\t\t */\n\t\tthrow new CKEditorError(\n\t\t\t'widget-to-widget-wrong-element-type',\n\t\t\tnull,\n\t\t\t{ element }\n\t\t);\n\t}\n\n\twriter.setAttribute( 'contenteditable', 'false', element );\n\n\twriter.addClass( WIDGET_CLASS_NAME, element );\n\twriter.setCustomProperty( 'widget', true, element );\n\telement.getFillerOffset = getFillerOffset;\n\n\twriter.setCustomProperty( 'widgetLabel', [], element );\n\n\tif ( options.label ) {\n\t\tsetLabel( element, options.label );\n\t}\n\n\tif ( options.hasSelectionHandle ) {\n\t\taddSelectionHandle( element, writer );\n\t}\n\n\tsetHighlightHandling( element, writer );\n\n\treturn element;\n}\n\n/**\n * Default handler for adding a highlight on a widget.\n * It adds CSS class and attributes basing on the given highlight descriptor.\n */\nfunction addHighlight( element: ViewElement, descriptor: HighlightDescriptor, writer: DowncastWriter ) {\n\tif ( descriptor.classes ) {\n\t\twriter.addClass( toArray( descriptor.classes ), element );\n\t}\n\n\tif ( descriptor.attributes ) {\n\t\tfor ( const key in descriptor.attributes ) {\n\t\t\twriter.setAttribute( key, descriptor.attributes[ key ], element );\n\t\t}\n\t}\n}\n\n/**\n * Default handler for removing a highlight from a widget.\n * It removes CSS class and attributes basing on the given highlight descriptor.\n */\nfunction removeHighlight( element: ViewElement, descriptor: HighlightDescriptor, writer: DowncastWriter ) {\n\tif ( descriptor.classes ) {\n\t\twriter.removeClass( toArray( descriptor.classes ), element );\n\t}\n\n\tif ( descriptor.attributes ) {\n\t\tfor ( const key in descriptor.attributes ) {\n\t\t\twriter.removeAttribute( key, element );\n\t\t}\n\t}\n}\n\n/**\n * Sets highlight handling methods. Uses {@link module:widget/highlightstack~HighlightStack} to\n * properly determine which highlight descriptor should be used at given time.\n */\nexport function setHighlightHandling(\n\telement: ViewElement,\n\twriter: DowncastWriter,\n\tadd: ( element: ViewElement, descriptor: HighlightDescriptor, writer: DowncastWriter ) => void = addHighlight,\n\tremove: ( element: ViewElement, descriptor: HighlightDescriptor, writer: DowncastWriter ) => void = removeHighlight\n): void {\n\tconst stack = new HighlightStack();\n\n\tstack.on<HighlightStackChangeEvent>( 'change:top', ( evt, data ) => {\n\t\tif ( data.oldDescriptor ) {\n\t\t\tremove( element, data.oldDescriptor, data.writer );\n\t\t}\n\n\t\tif ( data.newDescriptor ) {\n\t\t\tadd( element, data.newDescriptor, data.writer );\n\t\t}\n\t} );\n\n\tconst addHighlightCallback: AddHighlightCallback = ( element, descriptor, writer ) => stack.add( descriptor, writer );\n\tconst removeHighlightCallback: RemoveHighlightCallback = ( element, id, writer ) => stack.remove( id, writer );\n\n\twriter.setCustomProperty( 'addHighlight', addHighlightCallback, element );\n\twriter.setCustomProperty( 'removeHighlight', removeHighlightCallback, element );\n}\n\n/**\n * Sets label for given element.\n * It can be passed as a plain string or a function returning a string. Function will be called each time label is retrieved by\n * {@link ~getLabel `getLabel()`}.\n */\nexport function setLabel( element: ViewElement, labelOrCreator: string | ( () => string ) ): void {\n\tconst widgetLabel = element.getCustomProperty( 'widgetLabel' ) as Array<string | ( () => string )>;\n\n\twidgetLabel.push( labelOrCreator );\n}\n\n/**\n * Returns the label of the provided element.\n */\nexport function getLabel( element: ViewElement ): string {\n\tconst widgetLabel = element.getCustomProperty( 'widgetLabel' ) as Array<string | ( () => string )>;\n\n\treturn widgetLabel.reduce( ( prev: string, current: string | ( () => string ) ) => {\n\t\tif ( typeof current === 'function' ) {\n\t\t\treturn prev ? prev + '. ' + current() : current();\n\t\t} else {\n\t\t\treturn prev ? prev + '. ' + current : current;\n\t\t}\n\t}, '' );\n}\n\n/**\n * Adds functionality to the provided {@link module:engine/view/editableelement~EditableElement} to act as a widget's editable:\n *\n * * sets the `contenteditable` attribute to `true` when {@link module:engine/view/editableelement~EditableElement#isReadOnly} is `false`,\n * otherwise sets it to `false`,\n * * adds the `ck-editor__editable` and `ck-editor__nested-editable` CSS classes,\n * * adds the `ck-editor__nested-editable_focused` CSS class when the editable is focused and removes it when it is blurred.\n * * implements the {@link ~setHighlightHandling view highlight on widget's editable}.\n *\n * Similarly to {@link ~toWidget `toWidget()`} this function should be used in `editingDowncast` only and it is usually\n * used together with {@link module:engine/conversion/downcasthelpers~DowncastHelpers#elementToElement `elementToElement()`}.\n *\n * For example, in order to convert a `<nested>` model element to `<div class=\"nested\">` in the view, you can define\n * such converters:\n *\n * ```ts\n * editor.conversion.for( 'editingDowncast' )\n * \t.elementToElement( {\n * \t\tmodel: 'nested',\n * \t\tview: ( modelItem, { writer } ) => {\n * \t\t\tconst div = writer.createEditableElement( 'div', { class: 'nested' } );\n *\n * \t\t\treturn toWidgetEditable( nested, writer, { label: 'label for editable' } );\n * \t\t}\n * \t} );\n *\n * editor.conversion.for( 'dataDowncast' )\n * \t.elementToElement( {\n * \t\tmodel: 'nested',\n * \t\tview: ( modelItem, { writer } ) => {\n * \t\t\treturn writer.createContainerElement( 'div', { class: 'nested' } );\n * \t\t}\n * \t} );\n * ```\n *\n * See the full source code of the widget (with nested editable) schema definition and converters in\n * [this sample](https://github.com/ckeditor/ckeditor5-widget/blob/master/tests/manual/widget-with-nestededitable.js).\n *\n * @param options Additional options.\n * @param options.label Editable's label used by assistive technologies (e.g. screen readers).\n * @returns Returns the same element that was provided in the `editable` parameter\n */\nexport function toWidgetEditable(\n\teditable: ViewEditableElement,\n\twriter: DowncastWriter,\n\toptions: {\n\t\tlabel?: string;\n\t} = {}\n): ViewEditableElement {\n\twriter.addClass( [ 'ck-editor__editable', 'ck-editor__nested-editable' ], editable );\n\n\twriter.setAttribute( 'role', 'textbox', editable );\n\twriter.setAttribute( 'tabindex', '-1', editable );\n\n\tif ( options.label ) {\n\t\twriter.setAttribute( 'aria-label', options.label, editable );\n\t}\n\n\t// Set initial contenteditable value.\n\twriter.setAttribute( 'contenteditable', editable.isReadOnly ? 'false' : 'true', editable );\n\n\t// Bind the contenteditable property to element#isReadOnly.\n\teditable.on<ObservableChangeEvent<boolean>>( 'change:isReadOnly', ( evt, property, is ) => {\n\t\twriter.setAttribute( 'contenteditable', is ? 'false' : 'true', editable );\n\t} );\n\n\teditable.on<ObservableChangeEvent<boolean>>( 'change:isFocused', ( evt, property, is ) => {\n\t\tif ( is ) {\n\t\t\twriter.addClass( 'ck-editor__nested-editable_focused', editable );\n\t\t} else {\n\t\t\twriter.removeClass( 'ck-editor__nested-editable_focused', editable );\n\t\t}\n\t} );\n\n\tsetHighlightHandling( editable, writer );\n\n\treturn editable;\n}\n\n/**\n * Returns a model range which is optimal (in terms of UX) for inserting a widget block.\n *\n * For instance, if a selection is in the middle of a paragraph, the collapsed range before this paragraph\n * will be returned so that it is not split. If the selection is at the end of a paragraph,\n * the collapsed range after this paragraph will be returned.\n *\n * Note: If the selection is placed in an empty block, the range in that block will be returned. If that range\n * is then passed to {@link module:engine/model/model~Model#insertContent}, the block will be fully replaced\n * by the inserted widget block.\n *\n * @param selection The selection based on which the insertion position should be calculated.\n * @param model Model instance.\n * @returns The optimal range.\n */\nexport function findOptimalInsertionRange(\n\tselection: Selection | DocumentSelection,\n\tmodel: Model\n): Range {\n\tconst selectedElement = selection.getSelectedElement();\n\n\tif ( selectedElement ) {\n\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( selection );\n\n\t\t// If the WidgetTypeAround \"fake caret\" is displayed, use its position for the insertion\n\t\t// to provide the most predictable UX (https://github.com/ckeditor/ckeditor5/issues/7438).\n\t\tif ( typeAroundFakeCaretPosition ) {\n\t\t\treturn model.createRange( model.createPositionAt( selectedElement, typeAroundFakeCaretPosition ) );\n\t\t}\n\t}\n\n\treturn model.schema.findOptimalInsertionRange( selection );\n}\n\n/**\n * A util to be used in order to map view positions to correct model positions when implementing a widget\n * which renders non-empty view element for an empty model element.\n *\n * For example:\n *\n * ```\n * // Model:\n * <placeholder type=\"name\"></placeholder>\n *\n * // View:\n * <span class=\"placeholder\">name</span>\n * ```\n *\n * In such case, view positions inside `<span>` cannot be correctly mapped to the model (because the model element is empty).\n * To handle mapping positions inside `<span class=\"placeholder\">` to the model use this util as follows:\n *\n * ```ts\n * editor.editing.mapper.on(\n * \t'viewToModelPosition',\n * \tviewToModelPositionOutsideModelElement( model, viewElement => viewElement.hasClass( 'placeholder' ) )\n * );\n * ```\n *\n * The callback will try to map the view offset of selection to an expected model position.\n *\n * 1. When the position is at the end (or in the middle) of the inline widget:\n *\n * ```\n * // View:\n * <p>foo <span class=\"placeholder\">name|</span> bar</p>\n *\n * // Model:\n * <paragraph>foo <placeholder type=\"name\"></placeholder>| bar</paragraph>\n * ```\n *\n * 2. When the position is at the beginning of the inline widget:\n *\n * ```\n * // View:\n * <p>foo <span class=\"placeholder\">|name</span> bar</p>\n *\n * // Model:\n * <paragraph>foo |<placeholder type=\"name\"></placeholder> bar</paragraph>\n * ```\n *\n * @param model Model instance on which the callback operates.\n * @param viewElementMatcher Function that is passed a view element and should return `true` if the custom mapping\n * should be applied to the given view element.\n */\nexport function viewToModelPositionOutsideModelElement(\n\tmodel: Model,\n\tviewElementMatcher: ( element: ViewElement ) => boolean\n): GetCallback<MapperViewToModelPositionEvent> {\n\treturn ( evt, data ) => {\n\t\tconst { mapper, viewPosition } = data;\n\n\t\tconst viewParent = mapper.findMappedViewAncestor( viewPosition );\n\n\t\tif ( !viewElementMatcher( viewParent ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst modelParent = mapper.toModelElement( viewParent );\n\n\t\tdata.modelPosition = model.createPositionAt( modelParent!, viewPosition.isAtStart ? 'before' : 'after' );\n\t};\n}\n\n/**\n * Default filler offset function applied to all widget elements.\n */\nfunction getFillerOffset() {\n\treturn null;\n}\n\n/**\n * Adds a drag handle to the widget.\n */\nfunction addSelectionHandle( widgetElement: ViewContainerElement, writer: DowncastWriter ) {\n\tconst selectionHandle = writer.createUIElement( 'div', { class: 'ck ck-widget__selection-handle' }, function( domDocument ) {\n\t\tconst domElement = this.toDomElement( domDocument );\n\n\t\t// Use the IconView from the ui library.\n\t\tconst icon = new IconView();\n\t\ticon.set( 'content', dragHandleIcon );\n\n\t\t// Render the icon view right away to append its #element to the selectionHandle DOM element.\n\t\ticon.render();\n\n\t\tdomElement.appendChild( icon.element! );\n\n\t\treturn domElement;\n\t} );\n\n\t// Append the selection handle into the widget wrapper.\n\twriter.insert( writer.createPositionAt( widgetElement, 0 ), selectionHandle );\n\twriter.addClass( [ 'ck-widget_with-selection-handle' ], widgetElement );\n}\n\n/**\n * Starting from a DOM resize host element (an element that receives dimensions as a result of resizing),\n * this helper returns the width of the found ancestor element.\n *\n *\t* It searches up to 5 levels of ancestors only.\n *\n * @param domResizeHost Resize host DOM element that receives dimensions as a result of resizing.\n * @returns Width of ancestor element in pixels or 0 if no ancestor with a computed width has been found.\n */\nexport function calculateResizeHostAncestorWidth( domResizeHost: HTMLElement ): number {\n\tconst getElementComputedWidth = ( element: HTMLElement ) => {\n\t\tconst { width, paddingLeft, paddingRight } = element.ownerDocument.defaultView!.getComputedStyle( element! );\n\n\t\treturn parseFloat( width ) - ( parseFloat( paddingLeft ) || 0 ) - ( parseFloat( paddingRight ) || 0 );\n\t};\n\n\tconst domResizeHostParent = domResizeHost.parentElement;\n\n\tif ( !domResizeHostParent ) {\n\t\treturn 0;\n\t}\n\n\t// Need to use computed style as it properly excludes parent's paddings from the returned value.\n\tlet parentWidth = getElementComputedWidth( domResizeHostParent! );\n\n\t// Sometimes parent width cannot be accessed. If that happens we should go up in the elements tree\n\t// and try to get width from next ancestor.\n\t// https://github.com/ckeditor/ckeditor5/issues/10776\n\tconst ancestorLevelLimit = 5;\n\tlet currentLevel = 0;\n\n\tlet checkedElement = domResizeHostParent!;\n\n\twhile ( isNaN( parentWidth ) ) {\n\t\tcheckedElement = checkedElement.parentElement!;\n\n\t\tif ( ++currentLevel > ancestorLevelLimit ) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tparentWidth = getElementComputedWidth( checkedElement );\n\t}\n\n\treturn parentWidth;\n}\n\n/**\n * Calculates a relative width of a `domResizeHost` compared to its ancestor in percents.\n *\n * @param domResizeHost Resize host DOM element.\n * @returns Percentage value between 0 and 100.\n */\nexport function calculateResizeHostPercentageWidth(\n\tdomResizeHost: HTMLElement,\n\tresizeHostRect: Rect = new Rect( domResizeHost )\n): number {\n\tconst parentWidth = calculateResizeHostAncestorWidth( domResizeHost );\n\n\tif ( !parentWidth ) {\n\t\treturn 0;\n\t}\n\n\treturn resizeHostRect.width / parentWidth * 100;\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/widgettypearound/utils\n */\n\nimport { isWidget } from '../utils.js';\n\nimport type {\n\tDocumentSelection,\n\tDomConverter,\n\tElement,\n\tSchema,\n\tSelection,\n\tViewElement\n} from '@ckeditor/ckeditor5-engine';\n\n/**\n * The name of the type around model selection attribute responsible for\n * displaying a fake caret next to a selected widget.\n */\nexport const TYPE_AROUND_SELECTION_ATTRIBUTE = 'widget-type-around';\n\n/**\n * Checks if an element is a widget that qualifies to get the widget type around UI.\n */\nexport function isTypeAroundWidget( viewElement: ViewElement | undefined, modelElement: Element, schema: Schema ): boolean {\n\treturn !!viewElement && isWidget( viewElement ) && !schema.isInline( modelElement );\n}\n\n/**\n * For the passed HTML element, this helper finds the closest widget type around button ancestor.\n */\nexport function getClosestTypeAroundDomButton( domElement: HTMLElement ): HTMLElement | null {\n\treturn domElement.closest( '.ck-widget__type-around__button' );\n}\n\n/**\n * For the passed widget type around button element, this helper determines at which position\n * the paragraph would be inserted into the content if, for instance, the button was\n * clicked by the user.\n *\n * @returns The position of the button.\n */\nexport function getTypeAroundButtonPosition( domElement: HTMLElement ): 'before' | 'after' {\n\treturn domElement.classList.contains( 'ck-widget__type-around__button_before' ) ? 'before' : 'after';\n}\n\n/**\n * For the passed HTML element, this helper returns the closest view widget ancestor.\n */\nexport function getClosestWidgetViewElement( domElement: HTMLElement, domConverter: DomConverter ): ViewElement {\n\tconst widgetDomElement = domElement.closest( '.ck-widget' );\n\n\treturn domConverter.mapDomToView( widgetDomElement as any ) as ViewElement;\n}\n\n/**\n * For the passed selection instance, it returns the position of the fake caret displayed next to a widget.\n *\n * **Note**: If the fake caret is not currently displayed, `null` is returned.\n *\n * @returns The position of the fake caret or `null` when none is present.\n */\nexport function getTypeAroundFakeCaretPosition( selection: Selection | DocumentSelection ): 'before' | 'after' | null {\n\treturn selection.getAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE ) as any;\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* global DOMParser */\n\n/**\n * @module widget/widgettypearound/widgettypearound\n */\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\n\nimport { Template } from '@ckeditor/ckeditor5-ui';\n\nimport {\n\tEnter,\n\ttype ViewDocumentEnterEvent\n} from '@ckeditor/ckeditor5-enter';\n\nimport {\n\tDelete,\n\ttype ViewDocumentDeleteEvent,\n\ttype ViewDocumentInsertTextEvent\n} from '@ckeditor/ckeditor5-typing';\n\nimport {\n\tenv,\n\tisForwardArrowKeyCode,\n\ttype BaseEvent,\n\ttype Emitter,\n\ttype GetCallback,\n\ttype GetCallbackOptions,\n\ttype ObservableChangeEvent,\n\ttype KeystrokeInfo\n} from '@ckeditor/ckeditor5-utils';\n\nimport type {\n\tBubblingEventInfo,\n\tDocumentChangeEvent,\n\tDomEventData,\n\tDowncastInsertEvent,\n\tDowncastSelectionEvent,\n\tDowncastWriter,\n\tElement,\n\tSchema,\n\tSelectionChangeRangeEvent,\n\tViewDocumentArrowKeyEvent,\n\tViewDocumentCompositionStartEvent,\n\tViewDocumentKeyDownEvent,\n\tViewDocumentMouseDownEvent,\n\tViewElement,\n\tModelDeleteContentEvent,\n\tModelInsertContentEvent,\n\tModelInsertObjectEvent\n} from '@ckeditor/ckeditor5-engine';\n\nimport {\n\tisTypeAroundWidget,\n\tgetClosestTypeAroundDomButton,\n\tgetTypeAroundButtonPosition,\n\tgetClosestWidgetViewElement,\n\tgetTypeAroundFakeCaretPosition,\n\tTYPE_AROUND_SELECTION_ATTRIBUTE\n} from './utils.js';\n\nimport { isWidget } from '../utils.js';\nimport type Widget from '../widget.js';\n\nimport returnIcon from '../../theme/icons/return-arrow.svg';\n\nimport '../../theme/widgettypearound.css';\n\nconst POSSIBLE_INSERTION_POSITIONS = [ 'before', 'after' ] as const;\n\n// Do the SVG parsing once and then clone the result <svg> DOM element for each new button.\nconst RETURN_ARROW_ICON_ELEMENT = new DOMParser().parseFromString( returnIcon, 'image/svg+xml' ).firstChild!;\n\nconst PLUGIN_DISABLED_EDITING_ROOT_CLASS = 'ck-widget__type-around_disabled';\n\n/**\n * A plugin that allows users to type around widgets where normally it is impossible to place the caret due\n * to limitations of web browsers. These \"tight spots\" occur, for instance, before (or after) a widget being\n * the first (or last) child of its parent or between two block widgets.\n *\n * This plugin extends the {@link module:widget/widget~Widget `Widget`} plugin and injects the user interface\n * with two buttons into each widget instance in the editor. Each of the buttons can be clicked by the\n * user if the widget is next to the \"tight spot\". Once clicked, a paragraph is created with the selection anchored\n * in it so that users can type (or insert content, paste, etc.) straight away.\n */\nexport default class WidgetTypeAround extends Plugin {\n\t/**\n\t * A reference to the model widget element that has the fake caret active\n\t * on either side of it. It is later used to remove CSS classes associated with the fake caret\n\t * when the widget no longer needs it.\n\t */\n\tprivate _currentFakeCaretModelElement: Element | null = null;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'WidgetTypeAround' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ Enter, Delete ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst editingView = editor.editing.view;\n\n\t\t// Set a CSS class on the view editing root when the plugin is disabled so all the buttons\n\t\t// and lines visually disappear. All the interactions are disabled in individual plugin methods.\n\t\tthis.on<ObservableChangeEvent<boolean>>( 'change:isEnabled', ( evt, data, isEnabled ) => {\n\t\t\teditingView.change( writer => {\n\t\t\t\tfor ( const root of editingView.document.roots ) {\n\t\t\t\t\tif ( isEnabled ) {\n\t\t\t\t\t\twriter.removeClass( PLUGIN_DISABLED_EDITING_ROOT_CLASS, root );\n\t\t\t\t\t} else {\n\t\t\t\t\t\twriter.addClass( PLUGIN_DISABLED_EDITING_ROOT_CLASS, root );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tif ( !isEnabled ) {\n\t\t\t\teditor.model.change( writer => {\n\t\t\t\t\twriter.removeSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE );\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\tthis._enableTypeAroundUIInjection();\n\t\tthis._enableInsertingParagraphsOnButtonClick();\n\t\tthis._enableInsertingParagraphsOnEnterKeypress();\n\t\tthis._enableInsertingParagraphsOnTypingKeystroke();\n\t\tthis._enableTypeAroundFakeCaretActivationUsingKeyboardArrows();\n\t\tthis._enableDeleteIntegration();\n\t\tthis._enableInsertContentIntegration();\n\t\tthis._enableInsertObjectIntegration();\n\t\tthis._enableDeleteContentIntegration();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis._currentFakeCaretModelElement = null;\n\t}\n\n\t/**\n\t * Inserts a new paragraph next to a widget element with the selection anchored in it.\n\t *\n\t * **Note**: This method is heavily user-oriented and will both focus the editing view and scroll\n\t * the viewport to the selection in the inserted paragraph.\n\t *\n\t * @param widgetModelElement The model widget element next to which a paragraph is inserted.\n\t * @param position The position where the paragraph is inserted. Either `'before'` or `'after'` the widget.\n\t */\n\tprivate _insertParagraph( widgetModelElement: Element, position: 'before' | 'after' ) {\n\t\tconst editor = this.editor;\n\t\tconst editingView = editor.editing.view;\n\n\t\tconst attributesToCopy = editor.model.schema.getAttributesWithProperty( widgetModelElement, 'copyOnReplace', true );\n\n\t\teditor.execute( 'insertParagraph', {\n\t\t\tposition: editor.model.createPositionAt( widgetModelElement, position ),\n\t\t\tattributes: attributesToCopy\n\t\t} );\n\n\t\teditingView.focus();\n\t\teditingView.scrollToTheSelection();\n\t}\n\n\t/**\n\t * A wrapper for the {@link module:utils/emittermixin~Emitter#listenTo} method that executes the callbacks only\n\t * when the plugin {@link #isEnabled is enabled}.\n\t *\n\t * @param emitter The object that fires the event.\n\t * @param event The name of the event.\n\t * @param callback The function to be called on event.\n\t * @param options Additional options.\n\t * @param options.priority The priority of this event callback. The higher the priority value the sooner\n\t * the callback will be fired. Events having the same priority are called in the order they were added.\n\t */\n\tprivate _listenToIfEnabled<TEvent extends BaseEvent>(\n\t\temitter: Emitter,\n\t\tevent: TEvent[ 'name' ],\n\t\tcallback: OmitThisParameter<GetCallback<TEvent>>,\n\t\toptions?: GetCallbackOptions<TEvent>\n\t): void {\n\t\tthis.listenTo( emitter, event, ( ...args ) => {\n\t\t\t// Do not respond if the plugin is disabled.\n\t\t\tif ( this.isEnabled ) {\n\t\t\t\tcallback( ...args );\n\t\t\t}\n\t\t}, options );\n\t}\n\n\t/**\n\t * Similar to {@link #_insertParagraph}, this method inserts a paragraph except that it\n\t * does not expect a position. Instead, it performs the insertion next to a selected widget\n\t * according to the `widget-type-around` model selection attribute value (fake caret position).\n\t *\n\t * Because this method requires the `widget-type-around` attribute to be set,\n\t * the insertion can only happen when the widget's fake caret is active (e.g. activated\n\t * using the keyboard).\n\t *\n\t * @returns Returns `true` when the paragraph was inserted (the attribute was present) and `false` otherwise.\n\t */\n\tprivate _insertParagraphAccordingToFakeCaretPosition() {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst modelSelection = model.document.selection;\n\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( modelSelection );\n\n\t\tif ( !typeAroundFakeCaretPosition ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t// @if CK_DEBUG_TYPING // \tconsole.info( '%c[WidgetTypeAround]%c Fake caret -> insert paragraph',\n\t\t// @if CK_DEBUG_TYPING // \t\t'font-weight: bold; color: green', ''\n\t\t// @if CK_DEBUG_TYPING // \t);\n\t\t// @if CK_DEBUG_TYPING // }\n\n\t\tconst selectedModelElement = modelSelection.getSelectedElement()!;\n\n\t\tthis._insertParagraph( selectedModelElement, typeAroundFakeCaretPosition );\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Creates a listener in the editing conversion pipeline that injects the widget type around\n\t * UI into every single widget instance created in the editor.\n\t *\n\t * The UI is delivered as a {@link module:engine/view/uielement~UIElement}\n\t * wrapper which renders DOM buttons that users can use to insert paragraphs.\n\t */\n\tprivate _enableTypeAroundUIInjection() {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\t\tconst t = editor.locale.t;\n\t\tconst buttonTitles = {\n\t\t\tbefore: t( 'Insert paragraph before block' ),\n\t\t\tafter: t( 'Insert paragraph after block' )\n\t\t};\n\n\t\teditor.editing.downcastDispatcher.on<DowncastInsertEvent<Element>>( 'insert', ( evt, data, conversionApi ) => {\n\t\t\tconst viewElement = conversionApi.mapper.toViewElement( data.item );\n\n\t\t\tif ( !viewElement ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Filter out non-widgets and inline widgets.\n\t\t\tif ( isTypeAroundWidget( viewElement, data.item, schema ) ) {\n\t\t\t\tinjectUIIntoWidget( conversionApi.writer, buttonTitles, viewElement! );\n\n\t\t\t\tconst widgetLabel = viewElement.getCustomProperty( 'widgetLabel' ) as Array<string | ( () => string )>;\n\n\t\t\t\twidgetLabel.push( () => {\n\t\t\t\t\treturn this.isEnabled ? t( 'Press Enter to type after or press Shift + Enter to type before the widget' ) : '';\n\t\t\t\t} );\n\t\t\t}\n\t\t}, { priority: 'low' } );\n\t}\n\n\t/**\n\t * Brings support for the fake caret that appears when either:\n\t *\n\t * * the selection moves to a widget from a position next to it using arrow keys,\n\t * * the arrow key is pressed when the widget is already selected.\n\t *\n\t * The fake caret lets the user know that they can start typing or just press\n\t * <kbd>Enter</kbd> to insert a paragraph at the position next to a widget as suggested by the fake caret.\n\t *\n\t * The fake caret disappears when the user changes the selection or the editor\n\t * gets blurred.\n\t *\n\t * The whole idea is as follows:\n\t *\n\t * 1. A user does one of the 2 scenarios described at the beginning.\n\t * 2. The \"keydown\" listener is executed and the decision is made whether to show or hide the fake caret.\n\t * 3. If it should show up, the `widget-type-around` model selection attribute is set indicating\n\t * on which side of the widget it should appear.\n\t * 4. The selection dispatcher reacts to the selection attribute and sets CSS classes responsible for the\n\t * fake caret on the view widget.\n\t * 5. If the fake caret should disappear, the selection attribute is removed and the dispatcher\n\t * does the CSS class clean-up in the view.\n\t * 6. Additionally, `change:range` and `FocusTracker#isFocused` listeners also remove the selection\n\t * attribute (the former also removes widget CSS classes).\n\t */\n\tprivate _enableTypeAroundFakeCaretActivationUsingKeyboardArrows() {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst modelSelection = model.document.selection;\n\t\tconst schema = model.schema;\n\t\tconst editingView = editor.editing.view;\n\n\t\t// This is the main listener responsible for the fake caret.\n\t\t// Note: The priority must precede the default Widget class keydown handler (\"high\").\n\t\tthis._listenToIfEnabled<ViewDocumentArrowKeyEvent>( editingView.document, 'arrowKey', ( evt, domEventData ) => {\n\t\t\tthis._handleArrowKeyPress( evt, domEventData );\n\t\t}, { context: [ isWidget, '$text' ], priority: 'high' } );\n\n\t\t// This listener makes sure the widget type around selection attribute will be gone from the model\n\t\t// selection as soon as the model range changes. This attribute only makes sense when a widget is selected\n\t\t// (and the \"fake horizontal caret\" is visible) so whenever the range changes (e.g. selection moved somewhere else),\n\t\t// let's get rid of the attribute so that the selection downcast dispatcher isn't even bothered.\n\t\tthis._listenToIfEnabled<SelectionChangeRangeEvent>( modelSelection, 'change:range', ( evt, data ) => {\n\t\t\t// Do not reset the selection attribute when the change was indirect.\n\t\t\tif ( !data.directChange ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Get rid of the widget type around attribute of the selection on every change:range.\n\t\t\t// If the range changes, it means for sure, the user is no longer in the active (\"fake horizontal caret\") mode.\n\t\t\teditor.model.change( writer => {\n\t\t\t\twriter.removeSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE );\n\t\t\t} );\n\t\t} );\n\n\t\t// Get rid of the widget type around attribute of the selection on every document change\n\t\t// that makes widget not selected any more (i.e. widget was removed).\n\t\tthis._listenToIfEnabled<DocumentChangeEvent>( model.document, 'change:data', () => {\n\t\t\tconst selectedModelElement = modelSelection.getSelectedElement();\n\n\t\t\tif ( selectedModelElement ) {\n\t\t\t\tconst selectedViewElement = editor.editing.mapper.toViewElement( selectedModelElement );\n\n\t\t\t\tif ( isTypeAroundWidget( selectedViewElement, selectedModelElement, schema ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\teditor.model.change( writer => {\n\t\t\t\twriter.removeSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE );\n\t\t\t} );\n\t\t} );\n\n\t\t// React to changes of the model selection attribute made by the arrow keys listener.\n\t\t// If the block widget is selected and the attribute changes, downcast the attribute to special\n\t\t// CSS classes associated with the active (\"fake horizontal caret\") mode of the widget.\n\t\tthis._listenToIfEnabled<DowncastSelectionEvent>( editor.editing.downcastDispatcher, 'selection', ( evt, data, conversionApi ) => {\n\t\t\tconst writer = conversionApi.writer;\n\n\t\t\tif ( this._currentFakeCaretModelElement ) {\n\t\t\t\tconst selectedViewElement = conversionApi.mapper.toViewElement( this._currentFakeCaretModelElement );\n\n\t\t\t\tif ( selectedViewElement ) {\n\t\t\t\t\t// Get rid of CSS classes associated with the active (\"fake horizontal caret\") mode from the view widget.\n\t\t\t\t\twriter.removeClass( POSSIBLE_INSERTION_POSITIONS.map( positionToWidgetCssClass ), selectedViewElement );\n\n\t\t\t\t\tthis._currentFakeCaretModelElement = null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst selectedModelElement = data.selection.getSelectedElement();\n\n\t\t\tif ( !selectedModelElement ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst selectedViewElement = conversionApi.mapper.toViewElement( selectedModelElement );\n\n\t\t\tif ( !isTypeAroundWidget( selectedViewElement, selectedModelElement, schema ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( data.selection );\n\n\t\t\tif ( !typeAroundFakeCaretPosition ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\twriter.addClass( positionToWidgetCssClass( typeAroundFakeCaretPosition ), selectedViewElement! );\n\n\t\t\t// Remember the view widget that got the \"fake-caret\" CSS class. This class should be removed ASAP when the\n\t\t\t// selection changes\n\t\t\tthis._currentFakeCaretModelElement = selectedModelElement;\n\t\t} );\n\n\t\tthis._listenToIfEnabled<ObservableChangeEvent<boolean>>( editor.ui.focusTracker, 'change:isFocused', ( evt, name, isFocused ) => {\n\t\t\tif ( !isFocused ) {\n\t\t\t\teditor.model.change( writer => {\n\t\t\t\t\twriter.removeSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE );\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\tfunction positionToWidgetCssClass( position: 'before' | 'after' ) {\n\t\t\treturn `ck-widget_type-around_show-fake-caret_${ position }`;\n\t\t}\n\t}\n\n\t/**\n\t * A listener executed on each \"keydown\" in the view document, a part of\n\t * {@link #_enableTypeAroundFakeCaretActivationUsingKeyboardArrows}.\n\t *\n\t * It decides whether the arrow keypress should activate the fake caret or not (also whether it should\n\t * be deactivated).\n\t *\n\t * The fake caret activation is done by setting the `widget-type-around` model selection attribute\n\t * in this listener, and stopping and preventing the event that would normally be handled by the widget\n\t * plugin that is responsible for the regular keyboard navigation near/across all widgets (that\n\t * includes inline widgets, which are ignored by the widget type around plugin).\n\t */\n\tprivate _handleArrowKeyPress( evt: BubblingEventInfo<'arrowKey'>, domEventData: DomEventData & KeystrokeInfo ) {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst modelSelection = model.document.selection;\n\t\tconst schema = model.schema;\n\t\tconst editingView = editor.editing.view;\n\n\t\tconst keyCode = domEventData.keyCode;\n\t\tconst isForward = isForwardArrowKeyCode( keyCode, editor.locale.contentLanguageDirection );\n\t\tconst selectedViewElement = editingView.document.selection.getSelectedElement()!;\n\t\tconst selectedModelElement = editor.editing.mapper.toModelElement( selectedViewElement )!;\n\t\tlet shouldStopAndPreventDefault;\n\n\t\t// Handle keyboard navigation when a type-around-compatible widget is currently selected.\n\t\tif ( isTypeAroundWidget( selectedViewElement, selectedModelElement, schema ) ) {\n\t\t\tshouldStopAndPreventDefault = this._handleArrowKeyPressOnSelectedWidget( isForward );\n\t\t}\n\t\t// Handle keyboard arrow navigation when the selection is next to a type-around-compatible widget\n\t\t// and the widget is about to be selected.\n\t\telse if ( modelSelection.isCollapsed ) {\n\t\t\tshouldStopAndPreventDefault = this._handleArrowKeyPressWhenSelectionNextToAWidget( isForward );\n\t\t}\n\t\t// Handle collapsing a non-collapsed selection that is wider than on a single widget.\n\t\telse if ( !domEventData.shiftKey ) {\n\t\t\tshouldStopAndPreventDefault = this._handleArrowKeyPressWhenNonCollapsedSelection( isForward );\n\t\t}\n\n\t\tif ( shouldStopAndPreventDefault ) {\n\t\t\tdomEventData.preventDefault();\n\t\t\tevt.stop();\n\t\t}\n\t}\n\n\t/**\n\t * Handles the keyboard navigation on \"keydown\" when a widget is currently selected and activates or deactivates\n\t * the fake caret for that widget, depending on the current value of the `widget-type-around` model\n\t * selection attribute and the direction of the pressed arrow key.\n\t *\n\t * @param isForward `true` when the pressed arrow key was responsible for the forward model selection movement\n\t * as in {@link module:utils/keyboard~isForwardArrowKeyCode}.\n\t * @returns Returns `true` when the keypress was handled and no other keydown listener of the editor should\n\t * process the event any further. Returns `false` otherwise.\n\t */\n\tprivate _handleArrowKeyPressOnSelectedWidget( isForward: boolean ) {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst modelSelection = model.document.selection;\n\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( modelSelection );\n\n\t\treturn model.change( writer => {\n\t\t\t// If the fake caret is displayed...\n\t\t\tif ( typeAroundFakeCaretPosition ) {\n\t\t\t\tconst isLeavingWidget = typeAroundFakeCaretPosition === ( isForward ? 'after' : 'before' );\n\n\t\t\t\t// If the keyboard arrow works against the value of the selection attribute...\n\t\t\t\t// then remove the selection attribute but prevent default DOM actions\n\t\t\t\t// and do not let the Widget plugin listener move the selection. This brings\n\t\t\t\t// the widget back to the state, for instance, like if was selected using the mouse.\n\t\t\t\t//\n\t\t\t\t// **Note**: If leaving the widget when the fake caret is active, then the default\n\t\t\t\t// Widget handler will change the selection and, in turn, this will automatically discard\n\t\t\t\t// the selection attribute.\n\t\t\t\tif ( !isLeavingWidget ) {\n\t\t\t\t\twriter.removeSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE );\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If the fake caret wasn't displayed, let's set it now according to the direction of the arrow\n\t\t\t// key press. This also means we cannot let the Widget plugin listener move the selection.\n\t\t\telse {\n\t\t\t\twriter.setSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE, isForward ? 'after' : 'before' );\n\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t} );\n\t}\n\n\t/**\n\t * Handles the keyboard navigation on \"keydown\" when **no** widget is selected but the selection is **directly** next\n\t * to one and upon the fake caret should become active for this widget upon arrow keypress\n\t * (AKA entering/selecting the widget).\n\t *\n\t * **Note**: This code mirrors the implementation from the widget plugin but also adds the selection attribute.\n\t * Unfortunately, there is no safe way to let the widget plugin do the selection part first and then just set the\n\t * selection attribute here in the widget type around plugin. This is why this code must duplicate some from the widget plugin.\n\t *\n\t * @param isForward `true` when the pressed arrow key was responsible for the forward model selection movement\n\t * as in {@link module:utils/keyboard~isForwardArrowKeyCode}.\n\t * @returns Returns `true` when the keypress was handled and no other keydown listener of the editor should\n\t * process the event any further. Returns `false` otherwise.\n\t */\n\tprivate _handleArrowKeyPressWhenSelectionNextToAWidget( isForward: boolean ) {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst schema = model.schema;\n\t\tconst widgetPlugin: Widget = editor.plugins.get( 'Widget' );\n\n\t\t// This is the widget the selection is about to be set on.\n\t\tconst modelElementNextToSelection = widgetPlugin._getObjectElementNextToSelection( isForward )!;\n\t\tconst viewElementNextToSelection = editor.editing.mapper.toViewElement( modelElementNextToSelection );\n\n\t\tif ( isTypeAroundWidget( viewElementNextToSelection, modelElementNextToSelection, schema ) ) {\n\t\t\tmodel.change( writer => {\n\t\t\t\twidgetPlugin._setSelectionOverElement( modelElementNextToSelection );\n\t\t\t\twriter.setSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE, isForward ? 'before' : 'after' );\n\t\t\t} );\n\n\t\t\t// The change() block above does the same job as the Widget plugin. The event can\n\t\t\t// be safely canceled.\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Handles the keyboard navigation on \"keydown\" when a widget is currently selected (together with some other content)\n\t * and the widget is the first or last element in the selection. It activates or deactivates the fake caret for that widget.\n\t *\n\t * @param isForward `true` when the pressed arrow key was responsible for the forward model selection movement\n\t * as in {@link module:utils/keyboard~isForwardArrowKeyCode}.\n\t * @returns Returns `true` when the keypress was handled and no other keydown listener of the editor should\n\t * process the event any further. Returns `false` otherwise.\n\t */\n\tprivate _handleArrowKeyPressWhenNonCollapsedSelection( isForward: boolean ) {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst schema = model.schema;\n\t\tconst mapper = editor.editing.mapper;\n\t\tconst modelSelection = model.document.selection;\n\n\t\tconst selectedModelNode = isForward ?\n\t\t\tmodelSelection.getLastPosition()!.nodeBefore :\n\t\t\tmodelSelection.getFirstPosition()!.nodeAfter;\n\n\t\tconst selectedViewNode = mapper.toViewElement( selectedModelNode as any );\n\n\t\t// There is a widget at the collapse position so collapse the selection to the fake caret on it.\n\t\tif ( isTypeAroundWidget( selectedViewNode, selectedModelNode as any, schema ) ) {\n\t\t\tmodel.change( writer => {\n\t\t\t\twriter.setSelection( selectedModelNode!, 'on' );\n\t\t\t\twriter.setSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE, isForward ? 'after' : 'before' );\n\t\t\t} );\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Registers a `mousedown` listener for the view document which intercepts events\n\t * coming from the widget type around UI, which happens when a user clicks one of the buttons\n\t * that insert a paragraph next to a widget.\n\t */\n\tprivate _enableInsertingParagraphsOnButtonClick() {\n\t\tconst editor = this.editor;\n\t\tconst editingView = editor.editing.view;\n\n\t\tthis._listenToIfEnabled<ViewDocumentMouseDownEvent>( editingView.document, 'mousedown', ( evt, domEventData ) => {\n\t\t\tconst button = getClosestTypeAroundDomButton( domEventData.domTarget );\n\n\t\t\tif ( !button ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst buttonPosition = getTypeAroundButtonPosition( button );\n\t\t\tconst widgetViewElement = getClosestWidgetViewElement( button, editingView.domConverter );\n\t\t\tconst widgetModelElement = editor.editing.mapper.toModelElement( widgetViewElement );\n\n\t\t\tthis._insertParagraph( widgetModelElement!, buttonPosition );\n\n\t\t\tdomEventData.preventDefault();\n\t\t\tevt.stop();\n\t\t} );\n\t}\n\n\t/**\n\t * Creates the <kbd>Enter</kbd> key listener on the view document that allows the user to insert a paragraph\n\t * near the widget when either:\n\t *\n\t * * The fake caret was first activated using the arrow keys,\n\t * * The entire widget is selected in the model.\n\t *\n\t * In the first case, the new paragraph is inserted according to the `widget-type-around` selection\n\t * attribute (see {@link #_handleArrowKeyPress}).\n\t *\n\t * In the second case, the new paragraph is inserted based on whether a soft (<kbd>Shift</kbd>+<kbd>Enter</kbd>) keystroke\n\t * was pressed or not.\n\t */\n\tprivate _enableInsertingParagraphsOnEnterKeypress() {\n\t\tconst editor = this.editor;\n\t\tconst selection = editor.model.document.selection;\n\t\tconst editingView = editor.editing.view;\n\n\t\tthis._listenToIfEnabled<ViewDocumentEnterEvent>( editingView.document, 'enter', ( evt, domEventData ) => {\n\t\t\t// This event could be triggered from inside the widget but we are interested\n\t\t\t// only when the widget is selected itself.\n\t\t\tif ( evt.eventPhase != 'atTarget' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst selectedModelElement = selection.getSelectedElement()!;\n\t\t\tconst selectedViewElement = editor.editing.mapper.toViewElement( selectedModelElement );\n\n\t\t\tconst schema = editor.model.schema;\n\t\t\tlet wasHandled;\n\n\t\t\t// First check if the widget is selected and there's a type around selection attribute associated\n\t\t\t// with the fake caret that would tell where to insert a new paragraph.\n\t\t\tif ( this._insertParagraphAccordingToFakeCaretPosition() ) {\n\t\t\t\twasHandled = true;\n\t\t\t}\n\t\t\t// Then, if there is no selection attribute associated with the fake caret, check if the widget\n\t\t\t// simply is selected and create a new paragraph according to the keystroke (Shift+)Enter.\n\t\t\telse if ( isTypeAroundWidget( selectedViewElement, selectedModelElement, schema ) ) {\n\t\t\t\tthis._insertParagraph( selectedModelElement, domEventData.isSoft ? 'before' : 'after' );\n\n\t\t\t\twasHandled = true;\n\t\t\t}\n\n\t\t\tif ( wasHandled ) {\n\t\t\t\tdomEventData.preventDefault();\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { context: isWidget } );\n\t}\n\n\t/**\n\t * Similar to the {@link #_enableInsertingParagraphsOnEnterKeypress}, it allows the user\n\t * to insert a paragraph next to a widget when the fake caret was activated using arrow\n\t * keys but it responds to typing instead of <kbd>Enter</kbd>.\n\t *\n\t * Listener enabled by this method will insert a new paragraph according to the `widget-type-around`\n\t * model selection attribute as the user simply starts typing, which creates the impression that the fake caret\n\t * behaves like a real one rendered by the browser (AKA your text appears where the caret was).\n\t *\n\t * **Note**: At the moment this listener creates 2 undo steps: one for the `insertParagraph` command\n\t * and another one for actual typing. It is not a disaster but this may need to be fixed\n\t * sooner or later.\n\t */\n\tprivate _enableInsertingParagraphsOnTypingKeystroke() {\n\t\tconst editor = this.editor;\n\t\tconst viewDocument = editor.editing.view.document;\n\n\t\t// Note: The priority must precede the default Input plugin insertText handler.\n\t\tthis._listenToIfEnabled<ViewDocumentInsertTextEvent>( viewDocument, 'insertText', ( evt, data ) => {\n\t\t\tif ( this._insertParagraphAccordingToFakeCaretPosition() ) {\n\t\t\t\t// The view selection in the event data contains the widget. If the new paragraph\n\t\t\t\t// was inserted, modify the view selection passed along with the insertText event\n\t\t\t\t// so the default event handler in the Input plugin starts typing inside the paragraph.\n\t\t\t\t// Otherwise, the typing would be over the widget.\n\t\t\t\tdata.selection = viewDocument.selection;\n\t\t\t}\n\t\t}, { priority: 'high' } );\n\n\t\tif ( env.isAndroid ) {\n\t\t\t// On Android with English keyboard, the composition starts just by putting caret\n\t\t\t// at the word end or by selecting a table column. This is not a real composition started.\n\t\t\t// Trigger delete content on first composition key pressed.\n\t\t\tthis._listenToIfEnabled<ViewDocumentKeyDownEvent>( viewDocument, 'keydown', ( evt, data ) => {\n\t\t\t\tif ( data.keyCode == 229 ) {\n\t\t\t\t\tthis._insertParagraphAccordingToFakeCaretPosition();\n\t\t\t\t}\n\t\t\t} );\n\t\t} else {\n\t\t\t// Note: The priority must precede the default Input plugin compositionstart handler (to call it before delete content).\n\t\t\tthis._listenToIfEnabled<ViewDocumentCompositionStartEvent>( viewDocument, 'compositionstart', () => {\n\t\t\t\tthis._insertParagraphAccordingToFakeCaretPosition();\n\t\t\t}, { priority: 'high' } );\n\t\t}\n\t}\n\n\t/**\n\t * It creates a \"delete\" event listener on the view document to handle cases when the <kbd>Delete</kbd> or <kbd>Backspace</kbd>\n\t * is pressed and the fake caret is currently active.\n\t *\n\t * The fake caret should create an illusion of a real browser caret so that when it appears before or after\n\t * a widget, pressing <kbd>Delete</kbd> or <kbd>Backspace</kbd> should remove a widget or delete the content\n\t * before or after a widget (depending on the content surrounding the widget).\n\t */\n\tprivate _enableDeleteIntegration() {\n\t\tconst editor = this.editor;\n\t\tconst editingView = editor.editing.view;\n\t\tconst model = editor.model;\n\t\tconst schema = model.schema;\n\n\t\tthis._listenToIfEnabled<ViewDocumentDeleteEvent>( editingView.document, 'delete', ( evt, domEventData ) => {\n\t\t\t// This event could be triggered from inside the widget but we are interested\n\t\t\t// only when the widget is selected itself.\n\t\t\tif ( evt.eventPhase != 'atTarget' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( model.document.selection );\n\n\t\t\t// This listener handles only these cases when the fake caret is active.\n\t\t\tif ( !typeAroundFakeCaretPosition ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst direction = domEventData.direction;\n\t\t\tconst selectedModelWidget = model.document.selection.getSelectedElement();\n\n\t\t\tconst isFakeCaretBefore = typeAroundFakeCaretPosition === 'before';\n\t\t\tconst isDeleteForward = direction == 'forward';\n\t\t\tconst shouldDeleteEntireWidget = isFakeCaretBefore === isDeleteForward;\n\n\t\t\tif ( shouldDeleteEntireWidget ) {\n\t\t\t\teditor.execute( 'delete', {\n\t\t\t\t\tselection: model.createSelection( selectedModelWidget!, 'on' )\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\tconst range = schema.getNearestSelectionRange(\n\t\t\t\t\tmodel.createPositionAt( selectedModelWidget!, typeAroundFakeCaretPosition ),\n\t\t\t\t\tdirection\n\t\t\t\t);\n\n\t\t\t\t// If there is somewhere to move selection to, then there will be something to delete.\n\t\t\t\tif ( range ) {\n\t\t\t\t\t// If the range is NOT collapsed, then we know that the range contains an object (see getNearestSelectionRange() docs).\n\t\t\t\t\tif ( !range.isCollapsed ) {\n\t\t\t\t\t\tmodel.change( writer => {\n\t\t\t\t\t\t\twriter.setSelection( range );\n\t\t\t\t\t\t\teditor.execute( isDeleteForward ? 'deleteForward' : 'delete' );\n\t\t\t\t\t\t} );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst probe = model.createSelection( range.start );\n\t\t\t\t\t\tmodel.modifySelection( probe, { direction } );\n\n\t\t\t\t\t\t// If the range is collapsed, let's see if a non-collapsed range exists that can could be deleted.\n\t\t\t\t\t\t// If such range exists, use the editor command because it it safe for collaboration (it merges where it can).\n\t\t\t\t\t\tif ( !probe.focus!.isEqual( range.start ) ) {\n\t\t\t\t\t\t\tmodel.change( writer => {\n\t\t\t\t\t\t\t\twriter.setSelection( range );\n\t\t\t\t\t\t\t\teditor.execute( isDeleteForward ? 'deleteForward' : 'delete' );\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// If there is no non-collapsed range to be deleted then we are sure that there is an empty element\n\t\t\t\t\t\t// next to a widget that should be removed. \"delete\" and \"deleteForward\" commands cannot get rid of it\n\t\t\t\t\t\t// so calling Model#deleteContent here manually.\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tconst deepestEmptyRangeAncestor = getDeepestEmptyElementAncestor( schema, range.start.parent as Element );\n\n\t\t\t\t\t\t\tmodel.deleteContent( model.createSelection( deepestEmptyRangeAncestor, 'on' ), {\n\t\t\t\t\t\t\t\tdoNotAutoparagraph: true\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If some content was deleted, don't let the handler from the Widget plugin kick in.\n\t\t\t// If nothing was deleted, then the default handler will have nothing to do anyway.\n\t\t\tdomEventData.preventDefault();\n\t\t\tevt.stop();\n\t\t}, { context: isWidget } );\n\t}\n\n\t/**\n\t * Attaches the {@link module:engine/model/model~Model#event:insertContent} event listener that, for instance, allows the user to paste\n\t * content near a widget when the fake caret is first activated using the arrow keys.\n\t *\n\t * The content is inserted according to the `widget-type-around` selection attribute (see {@link #_handleArrowKeyPress}).\n\t */\n\tprivate _enableInsertContentIntegration() {\n\t\tconst editor = this.editor;\n\t\tconst model = this.editor.model;\n\t\tconst documentSelection = model.document.selection;\n\n\t\tthis._listenToIfEnabled<ModelInsertContentEvent>( editor.model, 'insertContent', ( evt, [ content, selectable ] ) => {\n\t\t\tif ( selectable && !( selectable as any ).is( 'documentSelection' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( documentSelection );\n\n\t\t\tif ( !typeAroundFakeCaretPosition ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tevt.stop();\n\n\t\t\treturn model.change( writer => {\n\t\t\t\tconst selectedElement = documentSelection.getSelectedElement();\n\t\t\t\tconst position = model.createPositionAt( selectedElement!, typeAroundFakeCaretPosition );\n\t\t\t\tconst selection = writer.createSelection( position );\n\n\t\t\t\tconst result = model.insertContent( content, selection );\n\n\t\t\t\twriter.setSelection( selection );\n\n\t\t\t\treturn result;\n\t\t\t} );\n\t\t}, { priority: 'high' } );\n\t}\n\n\t/**\n\t * Attaches the {@link module:engine/model/model~Model#event:insertObject} event listener that modifies the\n\t * `options.findOptimalPosition`parameter to position of fake caret in relation to selected element\n\t * to reflect user's intent of desired insertion position.\n\t *\n\t * The object is inserted according to the `widget-type-around` selection attribute (see {@link #_handleArrowKeyPress}).\n\t */\n\tprivate _enableInsertObjectIntegration() {\n\t\tconst editor = this.editor;\n\t\tconst model = this.editor.model;\n\t\tconst documentSelection = model.document.selection;\n\n\t\tthis._listenToIfEnabled<ModelInsertObjectEvent>( editor.model, 'insertObject', ( evt, args ) => {\n\t\t\tconst [ , selectable, options = {} ] = args;\n\n\t\t\tif ( selectable && !( selectable as any ).is( 'documentSelection' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( documentSelection );\n\n\t\t\tif ( !typeAroundFakeCaretPosition ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\toptions.findOptimalPosition = typeAroundFakeCaretPosition;\n\t\t\targs[ 3 ] = options;\n\t\t}, { priority: 'high' } );\n\t}\n\n\t/**\n\t * Attaches the {@link module:engine/model/model~Model#event:deleteContent} event listener to block the event when the fake\n\t * caret is active.\n\t *\n\t * This is required for cases that trigger {@link module:engine/model/model~Model#deleteContent `model.deleteContent()`}\n\t * before calling {@link module:engine/model/model~Model#insertContent `model.insertContent()`} like, for instance,\n\t * plain text pasting.\n\t */\n\tprivate _enableDeleteContentIntegration() {\n\t\tconst editor = this.editor;\n\t\tconst model = this.editor.model;\n\t\tconst documentSelection = model.document.selection;\n\n\t\tthis._listenToIfEnabled<ModelDeleteContentEvent>( editor.model, 'deleteContent', ( evt, [ selection ] ) => {\n\t\t\tif ( selection && !selection.is( 'documentSelection' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( documentSelection );\n\n\t\t\t// Disable removing the selection content while pasting plain text.\n\t\t\tif ( typeAroundFakeCaretPosition ) {\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { priority: 'high' } );\n\t}\n}\n\n/**\n * Injects the type around UI into a view widget instance.\n */\nfunction injectUIIntoWidget(\n\tviewWriter: DowncastWriter,\n\tbuttonTitles: { before: string; after: string },\n\twidgetViewElement: ViewElement ) {\n\tconst typeAroundWrapper = viewWriter.createUIElement( 'div', {\n\t\tclass: 'ck ck-reset_all ck-widget__type-around'\n\t}, function( domDocument ) {\n\t\tconst wrapperDomElement = this.toDomElement( domDocument );\n\n\t\tinjectButtons( wrapperDomElement, buttonTitles );\n\t\tinjectFakeCaret( wrapperDomElement );\n\n\t\treturn wrapperDomElement;\n\t} );\n\n\t// Inject the type around wrapper into the widget's wrapper.\n\tviewWriter.insert( viewWriter.createPositionAt( widgetViewElement, 'end' ), typeAroundWrapper );\n}\n\n/**\n * FYI: Not using the IconView class because each instance would need to be destroyed to avoid memory leaks\n * and it's pretty hard to figure out when a view (widget) is gone for good so it's cheaper to use raw\n * <svg> here.\n */\nfunction injectButtons( wrapperDomElement: HTMLElement, buttonTitles: { before: string; after: string } ) {\n\tfor ( const position of POSSIBLE_INSERTION_POSITIONS ) {\n\t\tconst buttonTemplate = new Template( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-widget__type-around__button',\n\t\t\t\t\t`ck-widget__type-around__button_${ position }`\n\t\t\t\t],\n\t\t\t\ttitle: buttonTitles[ position ],\n\t\t\t\t'aria-hidden': 'true'\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\twrapperDomElement.ownerDocument.importNode( RETURN_ARROW_ICON_ELEMENT, true )\n\t\t\t]\n\t\t} );\n\n\t\twrapperDomElement.appendChild( buttonTemplate.render() );\n\t}\n}\n\nfunction injectFakeCaret( wrapperDomElement: HTMLElement ) {\n\tconst caretTemplate = new Template( {\n\t\ttag: 'div',\n\t\tattributes: {\n\t\t\tclass: [\n\t\t\t\t'ck',\n\t\t\t\t'ck-widget__type-around__fake-caret'\n\t\t\t]\n\t\t}\n\t} );\n\n\twrapperDomElement.appendChild( caretTemplate.render() );\n}\n\n/**\n * Returns the ancestor of an element closest to the root which is empty. For instance,\n * for `<baz>`:\n *\n * ```\n * <foo>abc<bar><baz></baz></bar></foo>\n * ```\n *\n * it returns `<bar>`.\n */\nfunction getDeepestEmptyElementAncestor( schema: Schema, element: Element ) {\n\tlet deepestEmptyAncestor = element;\n\n\tfor ( const ancestor of element.getAncestors( { parentFirst: true } ) ) {\n\t\tif ( ( ancestor as any ).childCount > 1 || schema.isLimit( ancestor ) ) {\n\t\t\tbreak;\n\t\t}\n\n\t\tdeepestEmptyAncestor = ancestor as Element;\n\t}\n\n\treturn deepestEmptyAncestor;\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/verticalnavigation\n */\n\nimport {\n\tkeyCodes,\n\tRect,\n\ttype GetCallback\n} from '@ckeditor/ckeditor5-utils';\n\nimport type {\n\tDocumentSelection,\n\tEditingController,\n\tModel,\n\tPosition,\n\tRange,\n\tSchema,\n\tSelection,\n\tViewDocumentArrowKeyEvent\n} from '@ckeditor/ckeditor5-engine';\n\n/**\n * Returns 'keydown' handler for up/down arrow keys that modifies the caret movement if it's in a text line next to an object.\n *\n * @param editing The editing controller.\n */\nexport default function verticalNavigationHandler(\n\tediting: EditingController\n): GetCallback<ViewDocumentArrowKeyEvent> {\n\tconst model = editing.model;\n\n\treturn ( evt, data ) => {\n\t\tconst arrowUpPressed = data.keyCode == keyCodes.arrowup;\n\t\tconst arrowDownPressed = data.keyCode == keyCodes.arrowdown;\n\t\tconst expandSelection = data.shiftKey;\n\t\tconst selection = model.document.selection;\n\n\t\tif ( !arrowUpPressed && !arrowDownPressed ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst isForward = arrowDownPressed;\n\n\t\t// Navigation is in the opposite direction than the selection direction so this is shrinking of the selection.\n\t\t// Selection for sure will not approach any object.\n\t\tif ( expandSelection && selectionWillShrink( selection, isForward ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Find a range between selection and closest limit element.\n\t\tconst range = findTextRangeFromSelection( editing, selection, isForward );\n\n\t\t// There is no selection position inside the limit element.\n\t\tif ( !range ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If already at the edge of a limit element.\n\t\tif ( range.isCollapsed ) {\n\t\t\t// A collapsed selection at limit edge - nothing more to do.\n\t\t\tif ( selection.isCollapsed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// A non collapsed selection is at the limit edge while expanding the selection - let others do their stuff.\n\t\t\telse if ( expandSelection ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// If the range is a single line (there is no word wrapping) then move the selection to the position closest to the limit element.\n\t\t//\n\t\t// We can't move the selection directly to the isObject element (eg. table cell) because of dual position at the end/beginning\n\t\t// of wrapped line (it's at the same time at the end of one line and at the start of the next line).\n\t\tif ( range.isCollapsed || isSingleLineRange( editing, range, isForward ) ) {\n\t\t\tmodel.change( writer => {\n\t\t\t\tconst newPosition = isForward ? range.end : range.start;\n\n\t\t\t\tif ( expandSelection ) {\n\t\t\t\t\tconst newSelection = model.createSelection( selection.anchor );\n\t\t\t\t\tnewSelection.setFocus( newPosition );\n\n\t\t\t\t\twriter.setSelection( newSelection );\n\t\t\t\t} else {\n\t\t\t\t\twriter.setSelection( newPosition );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tevt.stop();\n\t\t\tdata.preventDefault();\n\t\t\tdata.stopPropagation();\n\t\t}\n\t};\n}\n\n/**\n * Finds the range between selection and closest limit element (in the direction of navigation).\n * The position next to limit element is adjusted to the closest allowed `$text` position.\n *\n * Returns `null` if, according to the schema, the resulting range cannot contain a `$text` element.\n *\n * @param editing The editing controller.\n * @param selection The current selection.\n * @param isForward The expected navigation direction.\n */\nfunction findTextRangeFromSelection( editing: EditingController, selection: Selection | DocumentSelection, isForward: boolean ) {\n\tconst model = editing.model;\n\n\tif ( isForward ) {\n\t\tconst startPosition = selection.isCollapsed ? selection.focus! : selection.getLastPosition()!;\n\t\tconst endPosition = getNearestNonInlineLimit( model, startPosition, 'forward' );\n\n\t\t// There is no limit element, browser should handle this.\n\t\tif ( !endPosition ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst range = model.createRange( startPosition, endPosition );\n\t\tconst lastRangePosition = getNearestTextPosition( model.schema, range, 'backward' );\n\n\t\tif ( lastRangePosition ) {\n\t\t\treturn model.createRange( startPosition, lastRangePosition );\n\t\t}\n\n\t\treturn null;\n\t} else {\n\t\tconst endPosition = selection.isCollapsed ? selection.focus! : selection.getFirstPosition()!;\n\t\tconst startPosition = getNearestNonInlineLimit( model, endPosition, 'backward' );\n\n\t\t// There is no limit element, browser should handle this.\n\t\tif ( !startPosition ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst range = model.createRange( startPosition, endPosition );\n\t\tconst firstRangePosition = getNearestTextPosition( model.schema, range, 'forward' );\n\n\t\tif ( firstRangePosition ) {\n\t\t\treturn model.createRange( firstRangePosition, endPosition );\n\t\t}\n\n\t\treturn null;\n\t}\n}\n\n/**\n * Finds the limit element position that is closest to startPosition.\n *\n * @param direction Search direction.\n */\nfunction getNearestNonInlineLimit( model: Model, startPosition: Position, direction: 'forward' | 'backward' ) {\n\tconst schema = model.schema;\n\tconst range = model.createRangeIn( startPosition.root );\n\n\tconst walkerValueType = direction == 'forward' ? 'elementStart' : 'elementEnd';\n\n\tfor ( const { previousPosition, item, type } of range.getWalker( { startPosition, direction } ) ) {\n\t\tif ( schema.isLimit( item ) && !schema.isInline( item ) ) {\n\t\t\treturn previousPosition;\n\t\t}\n\n\t\t// Stop looking for isLimit element if the next element is a block element (it is for sure not single line).\n\t\tif ( type == walkerValueType && schema.isBlock( item ) ) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\treturn null;\n}\n\n/**\n * Basing on the provided range, finds the first or last (depending on `direction`) position inside the range\n * that can contain `$text` (according to schema).\n *\n * @param schema The schema.\n * @param range The range to find the position in.\n * @param direction Search direction.\n * @returns The nearest selection position.\n *\n */\nfunction getNearestTextPosition( schema: Schema, range: Range, direction: 'forward' | 'backward' ) {\n\tconst position = direction == 'backward' ? range.end : range.start;\n\n\tif ( schema.checkChild( position, '$text' ) ) {\n\t\treturn position;\n\t}\n\n\tfor ( const { nextPosition } of range.getWalker( { direction } ) ) {\n\t\tif ( schema.checkChild( nextPosition, '$text' ) ) {\n\t\t\treturn nextPosition;\n\t\t}\n\t}\n\n\treturn null;\n}\n\n/**\n * Checks if the DOM range corresponding to the provided model range renders as a single line by analyzing DOMRects\n * (verifying if they visually wrap content to the next line).\n *\n * @param editing The editing controller.\n * @param modelRange The current table cell content range.\n * @param isForward The expected navigation direction.\n */\nfunction isSingleLineRange( editing: EditingController, modelRange: Range, isForward: boolean ) {\n\tconst model = editing.model;\n\tconst domConverter = editing.view.domConverter;\n\n\t// Wrapped lines contain exactly the same position at the end of current line\n\t// and at the beginning of next line. That position's client rect is at the end\n\t// of current line. In case of caret at first position of the last line that 'dual'\n\t// position would be detected as it's not the last line.\n\tif ( isForward ) {\n\t\tconst probe = model.createSelection( modelRange.start );\n\n\t\tmodel.modifySelection( probe );\n\n\t\t// If the new position is at the end of the container then we can't use this position\n\t\t// because it would provide incorrect result for eg caption of image and selection\n\t\t// just before end of it. Also in this case there is no \"dual\" position.\n\t\tif ( !probe.focus!.isAtEnd && !modelRange.start.isEqual( probe.focus! ) ) {\n\t\t\tmodelRange = model.createRange( probe.focus!, modelRange.end );\n\t\t}\n\t}\n\n\tconst viewRange = editing.mapper.toViewRange( modelRange );\n\tconst domRange = domConverter.viewRangeToDom( viewRange );\n\tconst rects = Rect.getDomRangeRects( domRange );\n\n\tlet boundaryVerticalPosition;\n\n\tfor ( const rect of rects ) {\n\t\tif ( boundaryVerticalPosition === undefined ) {\n\t\t\tboundaryVerticalPosition = Math.round( rect.bottom );\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Let's check if this rect is in new line.\n\t\tif ( Math.round( rect.top ) >= boundaryVerticalPosition ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tboundaryVerticalPosition = Math.max( boundaryVerticalPosition, Math.round( rect.bottom ) );\n\t}\n\n\treturn true;\n}\n\nfunction selectionWillShrink( selection: DocumentSelection, isForward: boolean ) {\n\treturn !selection.isCollapsed && selection.isBackward == isForward;\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/widget\n */\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\n\nimport {\n\tMouseObserver,\n\tTreeWalker,\n\ttype DomEventData,\n\ttype DowncastSelectionEvent,\n\ttype DowncastWriter,\n\ttype Element,\n\ttype Node,\n\ttype ViewDocumentArrowKeyEvent,\n\ttype ViewDocumentMouseDownEvent,\n\ttype ViewElement,\n\ttype Schema,\n\ttype Position,\n\ttype EditingView,\n\ttype ViewDocumentTabEvent,\n\ttype ViewDocumentKeyDownEvent,\n\ttype ViewNode,\n\ttype ViewRange\n} from '@ckeditor/ckeditor5-engine';\n\nimport { Delete, type ViewDocumentDeleteEvent } from '@ckeditor/ckeditor5-typing';\n\nimport {\n\tenv,\n\tkeyCodes,\n\tgetLocalizedArrowKeyCodeDirection,\n\tgetRangeFromMouseEvent,\n\ttype EventInfo,\n\ttype KeystrokeInfo\n} from '@ckeditor/ckeditor5-utils';\n\nimport WidgetTypeAround from './widgettypearound/widgettypearound.js';\nimport verticalNavigationHandler from './verticalnavigation.js';\nimport { getLabel, isWidget, WIDGET_SELECTED_CLASS_NAME } from './utils.js';\n\nimport '../theme/widget.css';\n\n/**\n * The widget plugin. It enables base support for widgets.\n *\n * See {@glink api/widget package page} for more details and documentation.\n *\n * This plugin enables multiple behaviors required by widgets:\n *\n * * The model to view selection converter for the editing pipeline (it handles widget custom selection rendering).\n * If a converted selection wraps around a widget element, that selection is marked as\n * {@link module:engine/view/selection~Selection#isFake fake}. Additionally, the `ck-widget_selected` CSS class\n * is added to indicate that widget has been selected.\n * * The mouse and keyboard events handling on and around widget elements.\n */\nexport default class Widget extends Plugin {\n\t/**\n\t * Holds previously selected widgets.\n\t */\n\tprivate _previouslySelected = new Set<ViewElement>();\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Widget' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ WidgetTypeAround, Delete ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst view = editor.editing.view;\n\t\tconst viewDocument = view.document;\n\t\tconst t = editor.t;\n\n\t\t// Model to view selection converter.\n\t\t// Converts selection placed over widget element to fake selection.\n\t\t//\n\t\t// By default, the selection is downcasted by the engine to surround the attribute element, even though its only\n\t\t// child is an inline widget. A similar thing also happens when a collapsed marker is rendered as a UI element\n\t\t// next to an inline widget: the view selection contains both the widget and the marker.\n\t\t//\n\t\t// This prevents creating a correct fake selection when this inline widget is selected. Normalize the selection\n\t\t// in these cases based on the model:\n\t\t//\n\t\t//\t\t[<attributeElement><inlineWidget /></attributeElement>] -> <attributeElement>[<inlineWidget />]</attributeElement>\n\t\t//\t\t[<uiElement></uiElement><inlineWidget />] -> <uiElement></uiElement>[<inlineWidget />]\n\t\t//\n\t\t// Thanks to this:\n\t\t//\n\t\t// * fake selection can be set correctly,\n\t\t// * any logic depending on (View)Selection#getSelectedElement() also works OK.\n\t\t//\n\t\t// See https://github.com/ckeditor/ckeditor5/issues/9524.\n\t\tthis.editor.editing.downcastDispatcher.on<DowncastSelectionEvent>( 'selection', ( evt, data, conversionApi ) => {\n\t\t\tconst viewWriter = conversionApi.writer;\n\t\t\tconst modelSelection = data.selection;\n\n\t\t\t// The collapsed selection can't contain any widget.\n\t\t\tif ( modelSelection.isCollapsed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst selectedModelElement = modelSelection.getSelectedElement();\n\n\t\t\tif ( !selectedModelElement ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst selectedViewElement = editor.editing.mapper.toViewElement( selectedModelElement )!;\n\n\t\t\tif ( !isWidget( selectedViewElement ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( !conversionApi.consumable.consume( modelSelection, 'selection' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tviewWriter.setSelection( viewWriter.createRangeOn( selectedViewElement ), {\n\t\t\t\tfake: true,\n\t\t\t\tlabel: getLabel( selectedViewElement )\n\t\t\t} );\n\t\t} );\n\n\t\t// Mark all widgets inside the selection with the css class.\n\t\t// This handler is registered at the 'low' priority so it's triggered after the real selection conversion.\n\t\tthis.editor.editing.downcastDispatcher.on<DowncastSelectionEvent>( 'selection', ( evt, data, conversionApi ) => {\n\t\t\t// Remove selected class from previously selected widgets.\n\t\t\tthis._clearPreviouslySelectedWidgets( conversionApi.writer );\n\n\t\t\tconst viewWriter = conversionApi.writer;\n\t\t\tconst viewSelection = viewWriter.document.selection;\n\n\t\t\tlet lastMarked = null;\n\n\t\t\tfor ( const range of viewSelection.getRanges() ) {\n\t\t\t\t// Note: There could be multiple selected widgets in a range but no fake selection.\n\t\t\t\t// All of them must be marked as selected, for instance [<widget></widget><widget></widget>]\n\t\t\t\tfor ( const value of range ) {\n\t\t\t\t\tconst node = value.item as ViewElement;\n\t\t\t\t\t// Do not mark nested widgets in selected one. See: #4594\n\t\t\t\t\tif ( isWidget( node ) && !isChild( node, lastMarked ) ) {\n\t\t\t\t\t\tviewWriter.addClass( WIDGET_SELECTED_CLASS_NAME, node );\n\t\t\t\t\t\tthis._previouslySelected.add( node );\n\t\t\t\t\t\tlastMarked = node;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}, { priority: 'low' } );\n\n\t\t// If mouse down is pressed on widget - create selection over whole widget.\n\t\tview.addObserver( MouseObserver );\n\t\tthis.listenTo<ViewDocumentMouseDownEvent>( viewDocument, 'mousedown', ( ...args ) => this._onMousedown( ...args ) );\n\n\t\t// There are two keydown listeners working on different priorities. This allows other\n\t\t// features such as WidgetTypeAround or TableKeyboard to attach their listeners in between\n\t\t// and customize the behavior even further in different content/selection scenarios.\n\t\t//\n\t\t// * The first listener handles changing the selection on arrow key press\n\t\t// if the widget is selected or if the selection is next to a widget and the widget\n\t\t// should become selected upon the arrow key press.\n\t\t//\n\t\t// * The second (late) listener makes sure the default browser action on arrow key press is\n\t\t// prevented when a widget is selected. This prevents the selection from being moved\n\t\t// from a fake selection container.\n\t\tthis.listenTo<ViewDocumentArrowKeyEvent>( viewDocument, 'arrowKey', ( ...args ) => {\n\t\t\tthis._handleSelectionChangeOnArrowKeyPress( ...args );\n\t\t}, { context: [ isWidget, '$text' ] } );\n\n\t\tthis.listenTo<ViewDocumentArrowKeyEvent>( viewDocument, 'arrowKey', ( ...args ) => {\n\t\t\tthis._preventDefaultOnArrowKeyPress( ...args );\n\t\t}, { context: '$root' } );\n\n\t\tthis.listenTo<ViewDocumentArrowKeyEvent>(\n\t\t\tviewDocument,\n\t\t\t'arrowKey',\n\t\t\tverticalNavigationHandler( this.editor.editing ),\n\t\t\t{ context: '$text' }\n\t\t);\n\n\t\t// Handle custom delete behaviour.\n\t\tthis.listenTo<ViewDocumentDeleteEvent>( viewDocument, 'delete', ( evt, data ) => {\n\t\t\tif ( this._handleDelete( data.direction == 'forward' ) ) {\n\t\t\t\tdata.preventDefault();\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { context: '$root' } );\n\n\t\t// Handle Tab key while a widget is selected.\n\t\tthis.listenTo<ViewDocumentTabEvent>( viewDocument, 'tab', ( evt, data ) => {\n\t\t\t// This event could be triggered from inside the widget, but we are interested\n\t\t\t// only when the widget is selected itself.\n\t\t\tif ( evt.eventPhase != 'atTarget' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( data.shiftKey ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this._selectFirstNestedEditable() ) {\n\t\t\t\tdata.preventDefault();\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { context: isWidget, priority: 'low' } );\n\n\t\t// Handle Shift+Tab key while caret inside a widget editable.\n\t\tthis.listenTo<ViewDocumentTabEvent>( viewDocument, 'tab', ( evt, data ) => {\n\t\t\tif ( !data.shiftKey ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this._selectAncestorWidget() ) {\n\t\t\t\tdata.preventDefault();\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { priority: 'low' } );\n\n\t\t// Handle Esc key while inside a nested editable.\n\t\tthis.listenTo<ViewDocumentKeyDownEvent>( viewDocument, 'keydown', ( evt, data ) => {\n\t\t\tif ( data.keystroke != keyCodes.esc ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this._selectAncestorWidget() ) {\n\t\t\t\tdata.preventDefault();\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { priority: 'low' } );\n\n\t\t// Add the information about the keystrokes to the accessibility database.\n\t\teditor.accessibility.addKeystrokeInfoGroup( {\n\t\t\tid: 'widget',\n\t\t\tlabel: t( 'Keystrokes that can be used when a widget is selected (for example: image, table, etc.)' ),\n\t\t\tkeystrokes: [\n\t\t\t\t{\n\t\t\t\t\tlabel: t( 'Move focus from an editable area back to the parent widget' ),\n\t\t\t\t\tkeystroke: 'Esc'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: t( 'Insert a new paragraph directly after a widget' ),\n\t\t\t\t\tkeystroke: 'Enter'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: t( 'Insert a new paragraph directly before a widget' ),\n\t\t\t\t\tkeystroke: 'Shift+Enter'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: t( 'Move the caret to allow typing directly before a widget' ),\n\t\t\t\t\tkeystroke: [ [ 'arrowup' ], [ 'arrowleft' ] ]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: t( 'Move the caret to allow typing directly after a widget' ),\n\t\t\t\t\tkeystroke: [ [ 'arrowdown' ], [ 'arrowright' ] ]\n\t\t\t\t}\n\t\t\t]\n\t\t} );\n\t}\n\n\t/**\n\t * Handles {@link module:engine/view/document~Document#event:mousedown mousedown} events on widget elements.\n\t */\n\tprivate _onMousedown( eventInfo: EventInfo, domEventData: DomEventData<MouseEvent> ) {\n\t\tconst editor = this.editor;\n\t\tconst view = editor.editing.view;\n\t\tconst viewDocument = view.document;\n\t\tlet element: ViewElement | null = domEventData.target;\n\n\t\t// Some of DOM elements have no view element representation so it may be null.\n\t\tif ( !element ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If triple click should select entire paragraph.\n\t\tif ( domEventData.domEvent.detail >= 3 ) {\n\t\t\tif ( this._selectBlockContent( element ) ) {\n\t\t\t\tdomEventData.preventDefault();\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// If target is not a widget element - check if one of the ancestors is.\n\t\tif ( !isWidget( element ) ) {\n\t\t\tconst editableOrWidgetElement = findClosestEditableOrWidgetAncestor( element );\n\n\t\t\tif ( !editableOrWidgetElement ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isWidget( editableOrWidgetElement ) ) {\n\t\t\t\telement = editableOrWidgetElement;\n\t\t\t} else {\n\t\t\t\t// Pick view range from the point where the mouse was clicked.\n\t\t\t\tconst clickTargetFromPoint = getElementFromMouseEvent( view, domEventData );\n\n\t\t\t\tif ( clickTargetFromPoint && isWidget( clickTargetFromPoint ) ) {\n\t\t\t\t\telement = clickTargetFromPoint;\n\t\t\t\t} else {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// On Android selection would jump to the first table cell, on other devices\n\t\t// we can't block it (and don't need to) because of drag and drop support.\n\t\tif ( env.isAndroid ) {\n\t\t\tdomEventData.preventDefault();\n\t\t}\n\n\t\t// Focus editor if is not focused already.\n\t\tif ( !viewDocument.isFocused ) {\n\t\t\tview.focus();\n\t\t}\n\n\t\t// Create model selection over widget.\n\t\tconst modelElement = editor.editing.mapper.toModelElement( element );\n\n\t\tthis._setSelectionOverElement( modelElement! );\n\t}\n\n\t/**\n\t * Selects entire block content, e.g. on triple click it selects entire paragraph.\n\t */\n\tprivate _selectBlockContent( element: ViewElement ): boolean {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst mapper = editor.editing.mapper;\n\t\tconst schema = model.schema;\n\n\t\tconst viewElement = mapper.findMappedViewAncestor( this.editor.editing.view.createPositionAt( element, 0 ) );\n\t\tconst modelElement = findTextBlockAncestor( mapper.toModelElement( viewElement )!, model.schema );\n\n\t\tif ( !modelElement ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tmodel.change( writer => {\n\t\t\tconst nextTextBlock = !schema.isLimit( modelElement ) ?\n\t\t\t\tfindNextTextBlock( writer.createPositionAfter( modelElement ), schema ) :\n\t\t\t\tnull;\n\n\t\t\tconst start = writer.createPositionAt( modelElement, 0 );\n\t\t\tconst end = nextTextBlock ?\n\t\t\t\twriter.createPositionAt( nextTextBlock, 0 ) :\n\t\t\t\twriter.createPositionAt( modelElement, 'end' );\n\n\t\t\twriter.setSelection( writer.createRange( start, end ) );\n\t\t} );\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Handles {@link module:engine/view/document~Document#event:keydown keydown} events and changes\n\t * the model selection when:\n\t *\n\t * * arrow key is pressed when the widget is selected,\n\t * * the selection is next to a widget and the widget should become selected upon the arrow key press.\n\t *\n\t * See {@link #_preventDefaultOnArrowKeyPress}.\n\t */\n\tprivate _handleSelectionChangeOnArrowKeyPress( eventInfo: EventInfo, domEventData: DomEventData & KeystrokeInfo ) {\n\t\tconst keyCode = domEventData.keyCode;\n\n\t\tconst model = this.editor.model;\n\t\tconst schema = model.schema;\n\t\tconst modelSelection = model.document.selection;\n\t\tconst objectElement = modelSelection.getSelectedElement();\n\t\tconst direction = getLocalizedArrowKeyCodeDirection( keyCode, this.editor.locale.contentLanguageDirection );\n\t\tconst isForward = direction == 'down' || direction == 'right';\n\t\tconst isVerticalNavigation = direction == 'up' || direction == 'down';\n\n\t\t// If object element is selected.\n\t\tif ( objectElement && schema.isObject( objectElement ) ) {\n\t\t\tconst position = isForward ? modelSelection.getLastPosition() : modelSelection.getFirstPosition();\n\t\t\tconst newRange = schema.getNearestSelectionRange( position!, isForward ? 'forward' : 'backward' );\n\n\t\t\tif ( newRange ) {\n\t\t\t\tmodel.change( writer => {\n\t\t\t\t\twriter.setSelection( newRange );\n\t\t\t\t} );\n\n\t\t\t\tdomEventData.preventDefault();\n\t\t\t\teventInfo.stop();\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Handle collapsing of the selection when there is any widget on the edge of selection.\n\t\t// This is needed because browsers have problems with collapsing such selection.\n\t\tif ( !modelSelection.isCollapsed && !domEventData.shiftKey ) {\n\t\t\tconst firstPosition = modelSelection.getFirstPosition();\n\t\t\tconst lastPosition = modelSelection.getLastPosition();\n\n\t\t\tconst firstSelectedNode = firstPosition!.nodeAfter;\n\t\t\tconst lastSelectedNode = lastPosition!.nodeBefore;\n\n\t\t\tif ( firstSelectedNode && schema.isObject( firstSelectedNode ) || lastSelectedNode && schema.isObject( lastSelectedNode ) ) {\n\t\t\t\tmodel.change( writer => {\n\t\t\t\t\twriter.setSelection( isForward ? lastPosition : firstPosition );\n\t\t\t\t} );\n\n\t\t\t\tdomEventData.preventDefault();\n\t\t\t\teventInfo.stop();\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Return if not collapsed.\n\t\tif ( !modelSelection.isCollapsed ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If selection is next to object element.\n\n\t\tconst objectElementNextToSelection = this._getObjectElementNextToSelection( isForward );\n\n\t\tif ( objectElementNextToSelection && schema.isObject( objectElementNextToSelection ) ) {\n\t\t\t// Do not select an inline widget while handling up/down arrow.\n\t\t\tif ( schema.isInline( objectElementNextToSelection ) && isVerticalNavigation ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._setSelectionOverElement( objectElementNextToSelection );\n\n\t\t\tdomEventData.preventDefault();\n\t\t\teventInfo.stop();\n\t\t}\n\t}\n\n\t/**\n\t * Handles {@link module:engine/view/document~Document#event:keydown keydown} events and prevents\n\t * the default browser behavior to make sure the fake selection is not being moved from a fake selection\n\t * container.\n\t *\n\t * See {@link #_handleSelectionChangeOnArrowKeyPress}.\n\t */\n\tprivate _preventDefaultOnArrowKeyPress( eventInfo: EventInfo, domEventData: DomEventData ) {\n\t\tconst model = this.editor.model;\n\t\tconst schema = model.schema;\n\t\tconst objectElement = model.document.selection.getSelectedElement();\n\n\t\t// If object element is selected.\n\t\tif ( objectElement && schema.isObject( objectElement ) ) {\n\t\t\tdomEventData.preventDefault();\n\t\t\teventInfo.stop();\n\t\t}\n\t}\n\n\t/**\n\t * Handles delete keys: backspace and delete.\n\t *\n\t * @param isForward Set to true if delete was performed in forward direction.\n\t * @returns Returns `true` if keys were handled correctly.\n\t */\n\tprivate _handleDelete( isForward: boolean ) {\n\t\tconst modelDocument = this.editor.model.document;\n\t\tconst modelSelection = modelDocument.selection;\n\n\t\t// Do nothing when the read only mode is enabled.\n\t\tif ( !this.editor.model.canEditAt( modelSelection ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Do nothing on non-collapsed selection.\n\t\tif ( !modelSelection.isCollapsed ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst objectElement = this._getObjectElementNextToSelection( isForward );\n\n\t\tif ( objectElement ) {\n\t\t\tthis.editor.model.change( writer => {\n\t\t\t\tlet previousNode = modelSelection.anchor!.parent;\n\n\t\t\t\t// Remove previous element if empty.\n\t\t\t\twhile ( previousNode.isEmpty ) {\n\t\t\t\t\tconst nodeToRemove = previousNode;\n\t\t\t\t\tpreviousNode = nodeToRemove.parent!;\n\n\t\t\t\t\twriter.remove( nodeToRemove as Element );\n\t\t\t\t}\n\n\t\t\t\tthis._setSelectionOverElement( objectElement );\n\t\t\t} );\n\n\t\t\treturn true;\n\t\t}\n\t}\n\n\t/**\n\t * Sets {@link module:engine/model/selection~Selection document's selection} over given element.\n\t *\n\t * @internal\n\t */\n\tpublic _setSelectionOverElement( element: Node ): void {\n\t\tthis.editor.model.change( writer => {\n\t\t\twriter.setSelection( writer.createRangeOn( element ) );\n\t\t} );\n\t}\n\n\t/**\n\t * Checks if {@link module:engine/model/element~Element element} placed next to the current\n\t * {@link module:engine/model/selection~Selection model selection} exists and is marked in\n\t * {@link module:engine/model/schema~Schema schema} as `object`.\n\t *\n\t * @internal\n\t * @param forward Direction of checking.\n\t */\n\tpublic _getObjectElementNextToSelection( forward: boolean ): Element | null {\n\t\tconst model = this.editor.model;\n\t\tconst schema = model.schema;\n\t\tconst modelSelection = model.document.selection;\n\n\t\t// Clone current selection to use it as a probe. We must leave default selection as it is so it can return\n\t\t// to its current state after undo.\n\t\tconst probe = model.createSelection( modelSelection );\n\t\tmodel.modifySelection( probe, { direction: forward ? 'forward' : 'backward' } );\n\n\t\t// The selection didn't change so there is nothing there.\n\t\tif ( probe.isEqual( modelSelection ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst objectElement = forward ? probe.focus!.nodeBefore : probe.focus!.nodeAfter;\n\n\t\tif ( !!objectElement && schema.isObject( objectElement ) ) {\n\t\t\treturn objectElement as Element;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Removes CSS class from previously selected widgets.\n\t */\n\tprivate _clearPreviouslySelectedWidgets( writer: DowncastWriter ) {\n\t\tfor ( const widget of this._previouslySelected ) {\n\t\t\twriter.removeClass( WIDGET_SELECTED_CLASS_NAME, widget );\n\t\t}\n\n\t\tthis._previouslySelected.clear();\n\t}\n\n\t/**\n\t * Moves the document selection into the first nested editable.\n\t */\n\tprivate _selectFirstNestedEditable(): boolean {\n\t\tconst editor = this.editor;\n\t\tconst view = this.editor.editing.view;\n\t\tconst viewDocument = view.document;\n\n\t\tfor ( const item of viewDocument.selection.getFirstRange()!.getItems() ) {\n\t\t\tif ( item.is( 'editableElement' ) ) {\n\t\t\t\tconst modelElement = editor.editing.mapper.toModelElement( item );\n\n\t\t\t\t/* istanbul ignore next -- @preserve */\n\t\t\t\tif ( !modelElement ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst position = editor.model.createPositionAt( modelElement, 0 );\n\t\t\t\tconst newRange = editor.model.schema.getNearestSelectionRange( position, 'forward' );\n\n\t\t\t\teditor.model.change( writer => {\n\t\t\t\t\twriter.setSelection( newRange );\n\t\t\t\t} );\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Updates the document selection so that it selects first ancestor widget.\n\t */\n\tprivate _selectAncestorWidget(): boolean {\n\t\tconst editor = this.editor;\n\t\tconst mapper = editor.editing.mapper;\n\t\tconst selection = editor.editing.view.document.selection;\n\n\t\tconst positionParent = selection.getFirstPosition()!.parent;\n\n\t\tconst positionParentElement = positionParent.is( '$text' ) ?\n\t\t\tpositionParent.parent as ViewElement :\n\t\t\tpositionParent as ViewElement;\n\n\t\tconst viewElement = positionParentElement.findAncestor( isWidget );\n\n\t\tif ( !viewElement ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst modelElement = mapper.toModelElement( viewElement );\n\n\t\t/* istanbul ignore next -- @preserve */\n\t\tif ( !modelElement ) {\n\t\t\treturn false;\n\t\t}\n\n\t\teditor.model.change( writer => {\n\t\t\twriter.setSelection( modelElement, 'on' );\n\t\t} );\n\n\t\treturn true;\n\t}\n}\n\n/**\n * Finds the closest ancestor element that is either an editable element or a widget.\n *\n * @param element The element from which to start searching.\n * @returns The closest ancestor element that is either an editable element or a widget, or null if none is found.\n */\nfunction findClosestEditableOrWidgetAncestor( element: ViewElement ): ViewElement | null {\n\tlet currentElement: ViewElement | null = element;\n\n\twhile ( currentElement ) {\n\t\tif ( currentElement.is( 'editableElement' ) || isWidget( currentElement ) ) {\n\t\t\treturn currentElement;\n\t\t}\n\n\t\tcurrentElement = currentElement.parent as ViewElement | null;\n\t}\n\n\treturn null;\n}\n\n/**\n * Retrieves the ViewElement associated with a mouse event in the editing view.\n *\n * @param view The editing view.\n * @param domEventData The DOM event data containing the mouse event.\n * @returns The ViewElement associated with the mouse event, or null if not found.\n */\nfunction getElementFromMouseEvent( view: EditingView, domEventData: DomEventData<MouseEvent> ): ViewElement | null {\n\tconst domRange = getRangeFromMouseEvent( domEventData.domEvent );\n\tlet viewRange: ViewRange | null = null;\n\n\tif ( domRange ) {\n\t\tviewRange = view.domConverter.domRangeToView( domRange );\n\t} else {\n\t\t// Fallback to create range in target element. It happens frequently on Safari browser.\n\t\t// See more: https://github.com/ckeditor/ckeditor5/issues/16978\n\t\tviewRange = view.createRange( view.createPositionAt( domEventData.target, 0 ) );\n\t}\n\n\tif ( !viewRange ) {\n\t\treturn null;\n\t}\n\n\tconst viewPosition = viewRange.start;\n\n\tif ( !viewPosition.parent ) {\n\t\treturn null;\n\t}\n\n\tlet viewNode = viewPosition.parent;\n\n\tif ( viewPosition.parent.is( 'editableElement' ) ) {\n\t\tif ( viewPosition.isAtEnd && viewPosition.nodeBefore ) {\n\t\t\t// Click after a widget tend to return position at the end of the editable element\n\t\t\t// so use the node before it if range is at the end of a parent.\n\t\t\tviewNode = viewPosition.nodeBefore as ViewNode;\n\t\t} else if ( viewPosition.isAtStart && viewPosition.nodeAfter ) {\n\t\t\t// Click before a widget tend to return position at the start of the editable element\n\t\t\t// so use the node after it if range is at the start of a parent.\n\t\t\t// See more: https://github.com/ckeditor/ckeditor5/issues/16992\n\t\t\tviewNode = viewPosition.nodeAfter as ViewNode;\n\t\t}\n\t}\n\n\tif ( viewNode.is( '$text' ) ) {\n\t\treturn viewNode.parent as ViewElement;\n\t}\n\n\treturn viewNode as ViewElement;\n}\n\n/**\n * Checks whether the specified `element` is a child of the `parent` element.\n *\n * @param element An element to check.\n * @param parent A parent for the element.\n */\nfunction isChild( element: ViewElement, parent: ViewElement | null ) {\n\tif ( !parent ) {\n\t\treturn false;\n\t}\n\n\treturn Array.from( element.getAncestors() ).includes( parent );\n}\n\n/**\n * Returns nearest text block ancestor.\n */\nfunction findTextBlockAncestor( modelElement: Element, schema: Schema ): Element | null {\n\tfor ( const element of modelElement.getAncestors( { includeSelf: true, parentFirst: true } ) ) {\n\t\tif ( schema.checkChild( element as Element, '$text' ) ) {\n\t\t\treturn element as Element;\n\t\t}\n\n\t\t// Do not go beyond nested editable.\n\t\tif ( schema.isLimit( element ) && !schema.isObject( element ) ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn null;\n}\n\n/**\n * Returns next text block where could put selection.\n */\nfunction findNextTextBlock( position: Position, schema: Schema ): Element | null {\n\tconst treeWalker = new TreeWalker( { startPosition: position } );\n\n\tfor ( const { item } of treeWalker ) {\n\t\tif ( schema.isLimit( item ) || !item.is( 'element' ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( schema.checkChild( item, '$text' ) ) {\n\t\t\treturn item;\n\t\t}\n\t}\n\n\treturn null;\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/widgettoolbarrepository\n */\n\nimport {\n\tPlugin,\n\ttype Editor,\n\ttype ToolbarConfigItem\n} from '@ckeditor/ckeditor5-core';\n\nimport type { ViewDocumentSelection, ViewElement } from '@ckeditor/ckeditor5-engine';\n\nimport {\n\tBalloonPanelView,\n\tContextualBalloon,\n\tToolbarView,\n\ttype BalloonToolbar,\n\ttype BalloonToolbarShowEvent,\n\ttype EditorUIUpdateEvent\n} from '@ckeditor/ckeditor5-ui';\n\nimport {\n\tCKEditorError,\n\tlogWarning,\n\ttype ObservableChangeEvent,\n\ttype RectSource\n} from '@ckeditor/ckeditor5-utils';\n\nimport { isWidget } from './utils.js';\n\n/**\n * Widget toolbar repository plugin. A central point for registering widget toolbars. This plugin handles the whole\n * toolbar rendering process and exposes a concise API.\n *\n * To add a toolbar for your widget use the {@link ~WidgetToolbarRepository#register `WidgetToolbarRepository#register()`} method.\n *\n * The following example comes from the {@link module:image/imagetoolbar~ImageToolbar} plugin:\n *\n * ```ts\n * class ImageToolbar extends Plugin {\n * \tstatic get requires() {\n * \t\treturn [ WidgetToolbarRepository ];\n * \t}\n *\n * \tafterInit() {\n * \t\tconst editor = this.editor;\n * \t\tconst widgetToolbarRepository = editor.plugins.get( WidgetToolbarRepository );\n *\n * \t\twidgetToolbarRepository.register( 'image', {\n * \t\t\titems: editor.config.get( 'image.toolbar' ),\n * \t\t\tgetRelatedElement: getClosestSelectedImageWidget\n * \t\t} );\n * \t}\n * }\n * ```\n */\nexport default class WidgetToolbarRepository extends Plugin {\n\t/**\n\t * A map of toolbar definitions.\n\t */\n\tprivate _toolbarDefinitions = new Map<string, WidgetRepositoryToolbarDefinition>();\n\n\tprivate _balloon!: ContextualBalloon;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ContextualBalloon ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'WidgetToolbarRepository' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\n\t\t// Disables the default balloon toolbar for all widgets.\n\t\tif ( editor.plugins.has( 'BalloonToolbar' ) ) {\n\t\t\tconst balloonToolbar: BalloonToolbar = editor.plugins.get( 'BalloonToolbar' );\n\n\t\t\tthis.listenTo<BalloonToolbarShowEvent>( balloonToolbar, 'show', evt => {\n\t\t\t\tif ( isWidgetSelected( editor.editing.view.document.selection ) ) {\n\t\t\t\t\tevt.stop();\n\t\t\t\t}\n\t\t\t}, { priority: 'high' } );\n\t\t}\n\n\t\tthis._balloon = this.editor.plugins.get( 'ContextualBalloon' );\n\n\t\tthis.on<ObservableChangeEvent>( 'change:isEnabled', () => {\n\t\t\tthis._updateToolbarsVisibility();\n\t\t} );\n\n\t\tthis.listenTo<EditorUIUpdateEvent>( editor.ui, 'update', () => {\n\t\t\tthis._updateToolbarsVisibility();\n\t\t} );\n\n\t\t// UI#update is not fired after focus is back in editor, we need to check if balloon panel should be visible.\n\t\tthis.listenTo<ObservableChangeEvent>( editor.ui.focusTracker, 'change:isFocused', () => {\n\t\t\tthis._updateToolbarsVisibility();\n\t\t}, { priority: 'low' } );\n\t}\n\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tfor ( const toolbarConfig of this._toolbarDefinitions.values() ) {\n\t\t\ttoolbarConfig.view.destroy();\n\t\t}\n\t}\n\n\t/**\n\t * Registers toolbar in the WidgetToolbarRepository. It renders it in the `ContextualBalloon` based on the value of the invoked\n\t * `getRelatedElement` function. Toolbar items are gathered from `items` array.\n\t * The balloon's CSS class is by default `ck-toolbar-container` and may be override with the `balloonClassName` option.\n\t *\n\t * Note: This method should be called in the {@link module:core/plugin~PluginInterface#afterInit `Plugin#afterInit()`}\n\t * callback (or later) to make sure that the given toolbar items were already registered by other plugins.\n\t *\n\t * @param toolbarId An id for the toolbar. Used to\n\t * @param options.ariaLabel Label used by assistive technologies to describe this toolbar element.\n\t * @param options.items Array of toolbar items.\n\t * @param options.getRelatedElement Callback which returns an element the toolbar should be attached to.\n\t * @param options.balloonClassName CSS class for the widget balloon.\n\t */\n\tpublic register(\n\t\ttoolbarId: string,\n\t\t{ ariaLabel, items, getRelatedElement, balloonClassName = 'ck-toolbar-container' }: {\n\t\t\tariaLabel?: string;\n\t\t\titems: Array<ToolbarConfigItem>;\n\t\t\tgetRelatedElement: ( selection: ViewDocumentSelection ) => ( ViewElement | null );\n\t\t\tballoonClassName?: string;\n\t\t}\n\t): void {\n\t\t// Trying to register a toolbar without any item.\n\t\tif ( !items.length ) {\n\t\t\t/**\n\t\t\t * When {@link module:widget/widgettoolbarrepository~WidgetToolbarRepository#register registering} a new widget toolbar, you\n\t\t\t * need to provide a non-empty array with the items that will be inserted into the toolbar.\n\t\t\t *\n\t\t\t * If you see this error when integrating the editor, you likely forgot to configure one of the widget toolbars.\n\t\t\t *\n\t\t\t * See for instance:\n\t\t\t *\n\t\t\t * * {@link module:table/tableconfig~TableConfig#contentToolbar `config.table.contentToolbar`}\n\t\t\t * * {@link module:image/imageconfig~ImageConfig#toolbar `config.image.toolbar`}\n\t\t\t *\n\t\t\t * @error widget-toolbar-no-items\n\t\t\t * @param toolbarId The id of the toolbar that has not been configured correctly.\n\t\t\t */\n\t\t\tlogWarning( 'widget-toolbar-no-items', { toolbarId } );\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst toolbarView = new ToolbarView( editor.locale );\n\n\t\ttoolbarView.ariaLabel = ariaLabel || t( 'Widget toolbar' );\n\n\t\tif ( this._toolbarDefinitions.has( toolbarId ) ) {\n\t\t\t/**\n\t\t\t * Toolbar with the given id was already added.\n\t\t\t *\n\t\t\t * @error widget-toolbar-duplicated\n\t\t\t * @param toolbarId Toolbar id.\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'widget-toolbar-duplicated', this, { toolbarId } );\n\t\t}\n\n\t\tconst toolbarDefinition = {\n\t\t\tview: toolbarView,\n\t\t\tgetRelatedElement,\n\t\t\tballoonClassName,\n\t\t\titemsConfig: items,\n\t\t\tinitialized: false\n\t\t};\n\n\t\t// Register the toolbar so it becomes available for Alt+F10 and Esc navigation.\n\t\teditor.ui.addToolbar( toolbarView, {\n\t\t\tisContextual: true,\n\t\t\tbeforeFocus: () => {\n\t\t\t\tconst relatedElement = getRelatedElement( editor.editing.view.document.selection );\n\n\t\t\t\tif ( relatedElement ) {\n\t\t\t\t\tthis._showToolbar( toolbarDefinition, relatedElement );\n\t\t\t\t}\n\t\t\t},\n\t\t\tafterBlur: () => {\n\t\t\t\tthis._hideToolbar( toolbarDefinition );\n\t\t\t}\n\t\t} );\n\n\t\tthis._toolbarDefinitions.set( toolbarId, toolbarDefinition );\n\t}\n\n\t/**\n\t * Iterates over stored toolbars and makes them visible or hidden.\n\t */\n\tprivate _updateToolbarsVisibility() {\n\t\tlet maxRelatedElementDepth = 0;\n\t\tlet deepestRelatedElement = null;\n\t\tlet deepestToolbarDefinition = null;\n\n\t\tfor ( const definition of this._toolbarDefinitions.values() ) {\n\t\t\tconst relatedElement = definition.getRelatedElement( this.editor.editing.view.document.selection );\n\n\t\t\tif ( !this.isEnabled || !relatedElement ) {\n\t\t\t\tif ( this._isToolbarInBalloon( definition ) ) {\n\t\t\t\t\tthis._hideToolbar( definition );\n\t\t\t\t}\n\t\t\t} else if ( !this.editor.ui.focusTracker.isFocused ) {\n\t\t\t\tif ( this._isToolbarVisible( definition ) ) {\n\t\t\t\t\tthis._hideToolbar( definition );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst relatedElementDepth = relatedElement.getAncestors().length;\n\n\t\t\t\t// Many toolbars can express willingness to be displayed but they do not know about\n\t\t\t\t// each other. Figure out which toolbar is deepest in the view tree to decide which\n\t\t\t\t// should be displayed. For instance, if a selected image is inside a table cell, display\n\t\t\t\t// the ImageToolbar rather than the TableToolbar (#60).\n\t\t\t\tif ( relatedElementDepth > maxRelatedElementDepth ) {\n\t\t\t\t\tmaxRelatedElementDepth = relatedElementDepth;\n\t\t\t\t\tdeepestRelatedElement = relatedElement;\n\t\t\t\t\tdeepestToolbarDefinition = definition;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( deepestToolbarDefinition ) {\n\t\t\tthis._showToolbar( deepestToolbarDefinition, deepestRelatedElement! );\n\t\t}\n\t}\n\n\t/**\n\t * Hides the given toolbar.\n\t */\n\tprivate _hideToolbar( toolbarDefinition: WidgetRepositoryToolbarDefinition ) {\n\t\tthis._balloon.remove( toolbarDefinition.view );\n\t\tthis.stopListening( this._balloon, 'change:visibleView' );\n\t}\n\n\t/**\n\t * Shows up the toolbar if the toolbar is not visible.\n\t * Otherwise, repositions the toolbar's balloon when toolbar's view is the most top view in balloon stack.\n\t *\n\t * It might happen here that the toolbar's view is under another view. Then do nothing as the other toolbar view\n\t * should be still visible after the {@link module:ui/editorui/editorui~EditorUI#event:update}.\n\t */\n\tprivate _showToolbar( toolbarDefinition: WidgetRepositoryToolbarDefinition, relatedElement: ViewElement ) {\n\t\tif ( this._isToolbarVisible( toolbarDefinition ) ) {\n\t\t\trepositionContextualBalloon( this.editor, relatedElement );\n\t\t} else if ( !this._isToolbarInBalloon( toolbarDefinition ) ) {\n\t\t\tif ( !toolbarDefinition.initialized ) {\n\t\t\t\ttoolbarDefinition.initialized = true;\n\t\t\t\ttoolbarDefinition.view.fillFromConfig( toolbarDefinition.itemsConfig, this.editor.ui.componentFactory );\n\t\t\t}\n\n\t\t\tthis._balloon.add( {\n\t\t\t\tview: toolbarDefinition.view,\n\t\t\t\tposition: getBalloonPositionData( this.editor, relatedElement ),\n\t\t\t\tballoonClassName: toolbarDefinition.balloonClassName\n\t\t\t} );\n\n\t\t\t// Update toolbar position each time stack with toolbar view is switched to visible.\n\t\t\t// This is in a case target element has changed when toolbar was in invisible stack\n\t\t\t// e.g. target image was wrapped by a block quote.\n\t\t\t// See https://github.com/ckeditor/ckeditor5-widget/issues/92.\n\t\t\tthis.listenTo<ObservableChangeEvent>( this._balloon, 'change:visibleView', () => {\n\t\t\t\tfor ( const definition of this._toolbarDefinitions.values() ) {\n\t\t\t\t\tif ( this._isToolbarVisible( definition ) ) {\n\t\t\t\t\t\tconst relatedElement = definition.getRelatedElement( this.editor.editing.view.document.selection );\n\t\t\t\t\t\trepositionContextualBalloon( this.editor, relatedElement! );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t}\n\n\tprivate _isToolbarVisible( toolbar: WidgetRepositoryToolbarDefinition ) {\n\t\treturn this._balloon.visibleView === toolbar.view;\n\t}\n\n\tprivate _isToolbarInBalloon( toolbar: WidgetRepositoryToolbarDefinition ) {\n\t\treturn this._balloon.hasView( toolbar.view );\n\t}\n}\n\nfunction repositionContextualBalloon( editor: Editor, relatedElement: ViewElement ) {\n\tconst balloon: ContextualBalloon = editor.plugins.get( 'ContextualBalloon' );\n\tconst position = getBalloonPositionData( editor, relatedElement );\n\n\tballoon.updatePosition( position );\n}\n\nfunction getBalloonPositionData( editor: Editor, relatedElement: ViewElement ) {\n\tconst editingView = editor.editing.view;\n\tconst defaultPositions = BalloonPanelView.defaultPositions;\n\n\treturn {\n\t\ttarget: editingView.domConverter.mapViewToDom( relatedElement ) as RectSource | undefined,\n\t\tpositions: [\n\t\t\tdefaultPositions.northArrowSouth,\n\t\t\tdefaultPositions.northArrowSouthWest,\n\t\t\tdefaultPositions.northArrowSouthEast,\n\t\t\tdefaultPositions.southArrowNorth,\n\t\t\tdefaultPositions.southArrowNorthWest,\n\t\t\tdefaultPositions.southArrowNorthEast,\n\t\t\tdefaultPositions.viewportStickyNorth\n\t\t]\n\t};\n}\n\nfunction isWidgetSelected( selection: ViewDocumentSelection ) {\n\tconst viewElement = selection.getSelectedElement();\n\n\treturn !!( viewElement && isWidget( viewElement ) );\n}\n\n/**\n * The toolbar definition object used by the toolbar repository to manage toolbars.\n * It contains information necessary to display the toolbar in the\n * {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon contextual balloon} and\n * update it during its life (display) cycle.\n */\ninterface WidgetRepositoryToolbarDefinition {\n\n\t/**\n\t * The UI view of the toolbar.\n\t */\n\tview: ToolbarView;\n\n\t/**\n\t * A function that returns an engine {@link module:engine/view/view~View}\n\t * element the toolbar is to be attached to. For instance, an image widget or a table widget (or `null` when\n\t * there is no such element). The function accepts an instance of {@link module:engine/view/selection~Selection}.\n\t */\n\tgetRelatedElement: ( selection: ViewDocumentSelection ) => ViewElement | null | undefined;\n\n\t/**\n\t * CSS class for the widget balloon when a toolbar is displayed.\n\t */\n\tballoonClassName: string;\n\n\titemsConfig: Array<ToolbarConfigItem>;\n\n\tinitialized: boolean;\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/widgetresize/resizerstate\n */\n\nimport { ObservableMixin, Rect } from '@ckeditor/ckeditor5-utils';\n\nimport type { ResizerOptions } from '../widgetresize.js';\nimport { calculateResizeHostPercentageWidth } from '../utils.js';\n\n/**\n * Stores the internal state of a single resizable object.\n */\nexport default class ResizeState extends /* #__PURE__ */ ObservableMixin() {\n\t/**\n\t * The position of the handle that initiated the resizing. E.g. `\"top-left\"`, `\"bottom-right\"` etc. or `null`\n\t * if unknown.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public activeHandlePosition: string | null;\n\n\t/**\n\t * The width (percents) proposed, but not committed yet, in the current resize process.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public proposedWidthPercents: number | null;\n\n\t/**\n\t * The width (pixels) proposed, but not committed yet, in the current resize process.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public proposedWidth: number | null;\n\n\t/**\n\t * The height (pixels) proposed, but not committed yet, in the current resize process.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public proposedHeight: number | null;\n\n\t/**\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public proposedHandleHostWidth: number | null;\n\n\t/**\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public proposedHandleHostHeight: number | null;\n\n\t/**\n\t * The reference point of the resizer where the dragging started. It is used to measure the distance the user cursor\n\t * traveled, so how much the image should be enlarged.\n\t * This information is only known after the DOM was rendered, so it will be updated later.\n\t *\n\t * @internal\n\t */\n\tpublic _referenceCoordinates: { x: number; y: number } | null;\n\n\t/**\n\t * Resizer options.\n\t */\n\tprivate readonly _options: ResizerOptions;\n\n\t/**\n\t * The original width (pixels) of the resized object when the resize process was started.\n\t *\n\t * @readonly\n\t */\n\tprivate _originalWidth?: number;\n\n\t/**\n\t * The original height (pixels) of the resized object when the resize process was started.\n\t *\n\t * @readonly\n\t */\n\tprivate _originalHeight?: number;\n\n\t/**\n\t * The original width (percents) of the resized object when the resize process was started.\n\t *\n\t * @readonly\n\t */\n\tprivate _originalWidthPercents?: number;\n\n\t/**\n\t * A width to height ratio of the resized image.\n\t *\n\t * @readonly\n\t */\n\tprivate _aspectRatio?: number;\n\n\t/**\n\t * @param options Resizer options.\n\t */\n\tconstructor( options: ResizerOptions ) {\n\t\tsuper();\n\n\t\tthis.set( 'activeHandlePosition', null );\n\t\tthis.set( 'proposedWidthPercents', null );\n\t\tthis.set( 'proposedWidth', null );\n\t\tthis.set( 'proposedHeight', null );\n\t\tthis.set( 'proposedHandleHostWidth', null );\n\t\tthis.set( 'proposedHandleHostHeight', null );\n\n\t\tthis._options = options;\n\t\tthis._referenceCoordinates = null;\n\t}\n\n\t/**\n\t * The original width (pixels) of the resized object when the resize process was started.\n\t */\n\tpublic get originalWidth(): number | undefined {\n\t\treturn this._originalWidth;\n\t}\n\n\t/**\n\t * The original height (pixels) of the resized object when the resize process was started.\n\t */\n\tpublic get originalHeight(): number | undefined {\n\t\treturn this._originalHeight;\n\t}\n\n\t/**\n\t * The original width (percents) of the resized object when the resize process was started.\n\t */\n\tpublic get originalWidthPercents(): number | undefined {\n\t\treturn this._originalWidthPercents;\n\t}\n\n\t/**\n\t * A width to height ratio of the resized image.\n\t */\n\tpublic get aspectRatio(): number | undefined {\n\t\treturn this._aspectRatio;\n\t}\n\n\t/**\n\t *\n\t * @param domResizeHandle The handle used to calculate the reference point.\n\t */\n\tpublic begin( domResizeHandle: HTMLElement, domHandleHost: HTMLElement, domResizeHost: HTMLElement ): void {\n\t\tconst clientRect = new Rect( domHandleHost );\n\n\t\tthis.activeHandlePosition = getHandlePosition( domResizeHandle )!;\n\n\t\tthis._referenceCoordinates = getAbsoluteBoundaryPoint( domHandleHost, getOppositePosition( this.activeHandlePosition ) );\n\n\t\tthis._originalWidth = clientRect.width;\n\t\tthis._originalHeight = clientRect.height;\n\n\t\tthis._aspectRatio = clientRect.width / clientRect.height;\n\n\t\tconst widthStyle = domResizeHost.style.width;\n\n\t\tif ( widthStyle && widthStyle.match( /^\\d+(\\.\\d*)?%$/ ) ) {\n\t\t\tthis._originalWidthPercents = parseFloat( widthStyle );\n\t\t} else {\n\t\t\tthis._originalWidthPercents = calculateResizeHostPercentageWidth( domResizeHost, clientRect );\n\t\t}\n\t}\n\n\tpublic update( newSize: {\n\t\twidth: number;\n\t\theight: number;\n\t\twidthPercents: number;\n\t\thandleHostWidth: number;\n\t\thandleHostHeight: number;\n\t} ): void {\n\t\tthis.proposedWidth = newSize.width;\n\t\tthis.proposedHeight = newSize.height;\n\t\tthis.proposedWidthPercents = newSize.widthPercents;\n\n\t\tthis.proposedHandleHostWidth = newSize.handleHostWidth;\n\t\tthis.proposedHandleHostHeight = newSize.handleHostHeight;\n\t}\n}\n\n/**\n * Returns coordinates of the top-left corner of an element, relative to the document's top-left corner.\n *\n * @param resizerPosition The position of the resize handle, e.g. `\"top-left\"`, `\"bottom-right\"`.\n */\nfunction getAbsoluteBoundaryPoint( element: HTMLElement, resizerPosition: string ) {\n\tconst elementRect = new Rect( element );\n\tconst positionParts = resizerPosition.split( '-' );\n\tconst ret = {\n\t\tx: positionParts[ 1 ] == 'right' ? elementRect.right : elementRect.left,\n\t\ty: positionParts[ 0 ] == 'bottom' ? elementRect.bottom : elementRect.top\n\t};\n\n\tret.x += element.ownerDocument.defaultView!.scrollX;\n\tret.y += element.ownerDocument.defaultView!.scrollY;\n\n\treturn ret;\n}\n\n/**\n * @param resizerPosition The expected resizer position, like `\"top-left\"`, `\"bottom-right\"`.\n * @returns A prefixed HTML class name for the resizer element.\n */\nfunction getResizerHandleClass( resizerPosition: string ) {\n\treturn `ck-widget__resizer__handle-${ resizerPosition }`;\n}\n\n/**\n * Determines the position of a given resize handle.\n *\n * @param domHandle Handle used to calculate the reference point.\n * @returns Returns a string like `\"top-left\"` or `undefined` if not matched.\n */\nfunction getHandlePosition( domHandle: HTMLElement ) {\n\tconst resizerPositions = [ 'top-left', 'top-right', 'bottom-right', 'bottom-left' ];\n\n\tfor ( const position of resizerPositions ) {\n\t\tif ( domHandle.classList.contains( getResizerHandleClass( position ) ) ) {\n\t\t\treturn position;\n\t\t}\n\t}\n}\n\n/**\n * @param position Like `\"top-left\"`.\n * @returns Inverted `position`, e.g. it returns `\"bottom-right\"` if `\"top-left\"` was given as `position`.\n */\nfunction getOppositePosition( position: string ) {\n\tconst parts = position.split( '-' );\n\tconst replacements: Record<string, string> = {\n\t\ttop: 'bottom',\n\t\tbottom: 'top',\n\t\tleft: 'right',\n\t\tright: 'left'\n\t};\n\n\treturn `${ replacements[ parts[ 0 ] ] }-${ replacements[ parts[ 1 ] ] }`;\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/widgetresize/sizeview\n */\n\nimport { View } from '@ckeditor/ckeditor5-ui';\nimport type { ResizerOptions } from '../widgetresize.js';\nimport type ResizeState from './resizerstate.js';\n\n/**\n * A view displaying the proposed new element size during the resizing.\n */\nexport default class SizeView extends View {\n\t/**\n\t * The visibility of the view defined based on the existence of the host proposed dimensions.\n\t *\n\t * @internal\n\t * @observable\n\t * @readonly\n\t */\n\tdeclare public _isVisible: boolean;\n\n\t/**\n\t * The text that will be displayed in the `SizeView` child.\n\t * It can be formatted as the pixel values (e.g. 10x20) or the percentage value (e.g. 10%).\n\t *\n\t * @internal\n\t * @observable\n\t * @readonly\n\t */\n\tdeclare public _label: string;\n\n\t/**\n\t * The position of the view defined based on the host size and active handle position.\n\t *\n\t * @internal\n\t * @observable\n\t * @readonly\n\t */\n\tdeclare public _viewPosition: string;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tconst bind = this.bindTemplate;\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-size-view',\n\t\t\t\t\tbind.to( '_viewPosition', value => value ? `ck-orientation-${ value }` : '' )\n\t\t\t\t],\n\t\t\t\tstyle: {\n\t\t\t\t\tdisplay: bind.if( '_isVisible', 'none', visible => !visible )\n\t\t\t\t}\n\t\t\t},\n\t\t\tchildren: [ {\n\t\t\t\ttext: bind.to( '_label' )\n\t\t\t} ]\n\t\t} );\n\t}\n\n\t/**\n\t * A method used for binding the `SizeView` instance properties to the `ResizeState` instance observable properties.\n\t *\n\t * @internal\n\t * @param options An object defining the resizer options, used for setting the proper size label.\n\t * @param resizeState The `ResizeState` class instance, used for keeping the `SizeView` state up to date.\n\t */\n\tpublic _bindToState( options: ResizerOptions, resizeState: ResizeState ): void {\n\t\tthis.bind( '_isVisible' ).to( resizeState, 'proposedWidth', resizeState, 'proposedHeight', ( width, height ) =>\n\t\t\twidth !== null && height !== null );\n\n\t\tthis.bind( '_label' ).to(\n\t\t\tresizeState, 'proposedHandleHostWidth',\n\t\t\tresizeState, 'proposedHandleHostHeight',\n\t\t\tresizeState, 'proposedWidthPercents',\n\t\t\t( width, height, widthPercents ) => {\n\t\t\t\tif ( options.unit === 'px' ) {\n\t\t\t\t\treturn `${ width }×${ height }`;\n\t\t\t\t} else {\n\t\t\t\t\treturn `${ widthPercents }%`;\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\tthis.bind( '_viewPosition' ).to(\n\t\t\tresizeState, 'activeHandlePosition',\n\t\t\tresizeState, 'proposedHandleHostWidth',\n\t\t\tresizeState, 'proposedHandleHostHeight',\n\t\t\t// If the widget is too small to contain the size label, display the label above.\n\t\t\t( position, width, height ) => width! < 50 || height! < 50 ? 'above-center' : position!\n\t\t);\n\t}\n\n\t/**\n\t * A method used for cleaning up. It removes the bindings and hides the view.\n\t *\n\t * @internal\n\t */\n\tpublic _dismiss(): void {\n\t\tthis.unbind();\n\t\tthis._isVisible = false;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/widgetresize/resizer\n */\n\nimport { Template } from '@ckeditor/ckeditor5-ui';\nimport {\n\tRect,\n\tObservableMixin,\n\tcompareArrays,\n\ttype ObservableChangeEvent,\n\ttype DecoratedMethodEvent\n} from '@ckeditor/ckeditor5-utils';\n\nimport ResizeState from './resizerstate.js';\nimport SizeView from './sizeview.js';\n\nimport type { ResizerOptions } from '../widgetresize.js';\nimport type { ViewElement } from '@ckeditor/ckeditor5-engine';\n\n/**\n * Represents a resizer for a single resizable object.\n */\nexport default class Resizer extends /* #__PURE__ */ ObservableMixin() {\n\t/**\n\t * Flag that indicates whether resizer can be used.\n\t *\n\t * @observable\n\t */\n\tdeclare public isEnabled: boolean;\n\n\t/**\n\t * Flag that indicates that resizer is currently focused.\n\t *\n\t * @observable\n\t */\n\tdeclare public isSelected: boolean;\n\n\t/**\n\t * Flag that indicates whether resizer is rendered (visible on the screen).\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public isVisible: boolean;\n\n\t/**\n\t * Stores the state of the resizable host geometry, such as the original width, the currently proposed height, etc.\n\t *\n\t * Note that a new state is created for each resize transaction.\n\t */\n\tprivate _state!: ResizeState;\n\n\t/**\n\t * A view displaying the proposed new element size during the resizing.\n\t */\n\tprivate _sizeView!: SizeView;\n\n\t/**\n\t * Options passed to the {@link #constructor}.\n\t */\n\tprivate _options: ResizerOptions;\n\n\t/**\n\t * A wrapper that is controlled by the resizer. This is usually a widget element.\n\t */\n\tprivate _viewResizerWrapper: ViewElement | null = null;\n\n\t/**\n\t * The width of the resized {@link module:widget/widgetresize~ResizerOptions#viewElement viewElement} before the resizing started.\n\t */\n\tprivate _initialViewWidth: string | undefined;\n\n\t/**\n\t * @param options Resizer options.\n\t */\n\tconstructor( options: ResizerOptions ) {\n\t\tsuper();\n\n\t\tthis._options = options;\n\n\t\tthis.set( 'isEnabled', true );\n\t\tthis.set( 'isSelected', false );\n\n\t\tthis.bind( 'isVisible' ).to( this, 'isEnabled', this, 'isSelected', ( isEnabled, isSelected ) => isEnabled && isSelected );\n\n\t\tthis.decorate( 'begin' );\n\t\tthis.decorate( 'cancel' );\n\t\tthis.decorate( 'commit' );\n\t\tthis.decorate( 'updateSize' );\n\n\t\tthis.on( 'commit', event => {\n\t\t\t// State might not be initialized yet. In this case, prevent further handling and make sure that the resizer is\n\t\t\t// cleaned up (#5195).\n\t\t\tif ( !this.state.proposedWidth && !this.state.proposedWidthPercents ) {\n\t\t\t\tthis._cleanup();\n\t\t\t\tevent.stop();\n\t\t\t}\n\t\t}, { priority: 'high' } );\n\t}\n\n\t/**\n\t * Stores the state of the resizable host geometry, such as the original width, the currently proposed height, etc.\n\t *\n\t * Note that a new state is created for each resize transaction.\n\t */\n\tpublic get state(): ResizeState {\n\t\treturn this._state;\n\t}\n\n\t/**\n\t * Makes resizer visible in the UI.\n\t */\n\tpublic show(): void {\n\t\tconst editingView = this._options.editor.editing.view;\n\n\t\teditingView.change( writer => {\n\t\t\twriter.removeClass( 'ck-hidden', this._viewResizerWrapper! );\n\t\t} );\n\t}\n\n\t/**\n\t * Hides resizer in the UI.\n\t */\n\tpublic hide(): void {\n\t\tconst editingView = this._options.editor.editing.view;\n\n\t\teditingView.change( writer => {\n\t\t\twriter.addClass( 'ck-hidden', this._viewResizerWrapper! );\n\t\t} );\n\t}\n\n\t/**\n\t * Attaches the resizer to the DOM.\n\t */\n\tpublic attach(): void {\n\t\t// eslint-disable-next-line @typescript-eslint/no-this-alias\n\t\tconst that = this;\n\t\tconst widgetElement = this._options.viewElement;\n\t\tconst editingView = this._options.editor.editing.view;\n\n\t\teditingView.change( writer => {\n\t\t\tconst viewResizerWrapper = writer.createUIElement( 'div', {\n\t\t\t\tclass: 'ck ck-reset_all ck-widget__resizer'\n\t\t\t}, function( domDocument ) {\n\t\t\t\tconst domElement = this.toDomElement( domDocument );\n\n\t\t\t\tthat._appendHandles( domElement );\n\t\t\t\tthat._appendSizeUI( domElement );\n\n\t\t\t\treturn domElement;\n\t\t\t} );\n\n\t\t\t// Append the resizer wrapper to the widget's wrapper.\n\t\t\twriter.insert( writer.createPositionAt( widgetElement, 'end' ), viewResizerWrapper );\n\t\t\twriter.addClass( 'ck-widget_with-resizer', widgetElement );\n\n\t\t\tthis._viewResizerWrapper = viewResizerWrapper;\n\n\t\t\tif ( !this.isVisible ) {\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t} );\n\n\t\tthis.on<ObservableChangeEvent>( 'change:isVisible', () => {\n\t\t\tif ( this.isVisible ) {\n\t\t\t\tthis.show();\n\t\t\t\tthis.redraw();\n\t\t\t} else {\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Starts the resizing process.\n\t *\n\t * Creates a new {@link #state} for the current process.\n\t *\n\t * @fires begin\n\t * @param domResizeHandle Clicked handle.\n\t */\n\tpublic begin( domResizeHandle: HTMLElement ): void {\n\t\tthis._state = new ResizeState( this._options );\n\n\t\tthis._sizeView._bindToState( this._options, this.state );\n\n\t\tthis._initialViewWidth = this._options.viewElement.getStyle( 'width' );\n\n\t\tthis.state.begin( domResizeHandle, this._getHandleHost(), this._getResizeHost() );\n\t}\n\n\t/**\n\t * Updates the proposed size based on `domEventData`.\n\t *\n\t * @fires updateSize\n\t */\n\tpublic updateSize( domEventData: MouseEvent ): void {\n\t\tconst newSize = this._proposeNewSize( domEventData );\n\t\tconst editingView = this._options.editor.editing.view;\n\n\t\teditingView.change( writer => {\n\t\t\tconst unit = this._options.unit || '%';\n\t\t\tconst newWidth = ( unit === '%' ? newSize.widthPercents : newSize.width ) + unit;\n\n\t\t\twriter.setStyle( 'width', newWidth, this._options.viewElement );\n\t\t} );\n\n\t\t// Get an actual image width, and:\n\t\t// * reflect this size to the resize wrapper\n\t\t// * apply this **real** size to the state\n\t\tconst domHandleHost = this._getHandleHost();\n\t\tconst domHandleHostRect = new Rect( domHandleHost );\n\n\t\tconst handleHostWidth = Math.round( domHandleHostRect.width );\n\t\tconst handleHostHeight = Math.round( domHandleHostRect.height );\n\n\t\t// Handle max-width limitation.\n\t\tconst domResizeHostRect = new Rect( domHandleHost );\n\n\t\tnewSize.width = Math.round( domResizeHostRect.width );\n\t\tnewSize.height = Math.round( domResizeHostRect.height );\n\n\t\tthis.redraw( domHandleHostRect );\n\n\t\tthis.state.update( {\n\t\t\t...newSize,\n\t\t\thandleHostWidth,\n\t\t\thandleHostHeight\n\t\t} );\n\t}\n\n\t/**\n\t * Applies the geometry proposed with the resizer.\n\t *\n\t * @fires commit\n\t */\n\tpublic commit(): void {\n\t\tconst unit = this._options.unit || '%';\n\t\tconst newValue = ( unit === '%' ? this.state.proposedWidthPercents : this.state.proposedWidth ) + unit;\n\n\t\t// Both cleanup and onCommit callback are very likely to make view changes. Ensure that it is made in a single step.\n\t\tthis._options.editor.editing.view.change( () => {\n\t\t\tthis._cleanup();\n\t\t\tthis._options.onCommit( newValue );\n\t\t} );\n\t}\n\n\t/**\n\t * Cancels and rejects the proposed resize dimensions, hiding the UI.\n\t *\n\t * @fires cancel\n\t */\n\tpublic cancel(): void {\n\t\tthis._cleanup();\n\t}\n\n\t/**\n\t * Destroys the resizer.\n\t */\n\tpublic destroy(): void {\n\t\tthis.cancel();\n\t}\n\n\t/**\n\t * Redraws the resizer.\n\t *\n\t * @param handleHostRect Handle host rectangle might be given to improve performance.\n\t */\n\tpublic redraw( handleHostRect?: Rect ): void {\n\t\tconst domWrapper = this._domResizerWrapper;\n\n\t\t// Refresh only if resizer exists in the DOM.\n\t\tif ( !existsInDom( domWrapper ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst widgetWrapper = domWrapper!.parentElement;\n\t\tconst handleHost = this._getHandleHost();\n\t\tconst resizerWrapper = this._viewResizerWrapper!;\n\t\tconst currentDimensions = [\n\t\t\tresizerWrapper.getStyle( 'width' ),\n\t\t\tresizerWrapper.getStyle( 'height' ),\n\t\t\tresizerWrapper.getStyle( 'left' ),\n\t\t\tresizerWrapper.getStyle( 'top' )\n\t\t];\n\t\tlet newDimensions: Array<string | undefined>;\n\n\t\tif ( widgetWrapper!.isSameNode( handleHost ) ) {\n\t\t\tconst clientRect = handleHostRect || new Rect( handleHost );\n\n\t\t\tnewDimensions = [\n\t\t\t\tclientRect.width + 'px',\n\t\t\t\tclientRect.height + 'px',\n\t\t\t\tundefined,\n\t\t\t\tundefined\n\t\t\t];\n\t\t}\n\t\t// In case a resizing host is not a widget wrapper, we need to compensate\n\t\t// for any additional offsets the resize host might have. E.g. wrapper padding\n\t\t// or simply another editable. By doing that the border and resizers are shown\n\t\t// only around the resize host.\n\t\telse {\n\t\t\tnewDimensions = [\n\t\t\t\thandleHost.offsetWidth + 'px',\n\t\t\t\thandleHost.offsetHeight + 'px',\n\t\t\t\thandleHost.offsetLeft + 'px',\n\t\t\t\thandleHost.offsetTop + 'px'\n\t\t\t];\n\t\t}\n\n\t\t// Make changes to the view only if the resizer should actually get new dimensions.\n\t\t// Otherwise, if View#change() was always called, this would cause EditorUI#update\n\t\t// loops because the WidgetResize plugin listens to EditorUI#update and updates\n\t\t// the resizer.\n\t\t// https://github.com/ckeditor/ckeditor5/issues/7633\n\t\tif ( compareArrays( currentDimensions, newDimensions ) !== 'same' ) {\n\t\t\tthis._options.editor.editing.view.change( writer => {\n\t\t\t\twriter.setStyle( {\n\t\t\t\t\twidth: newDimensions[ 0 ]!,\n\t\t\t\t\theight: newDimensions[ 1 ]!,\n\t\t\t\t\tleft: newDimensions[ 2 ]!,\n\t\t\t\t\ttop: newDimensions[ 3 ]!\n\t\t\t\t}, resizerWrapper );\n\t\t\t} );\n\t\t}\n\t}\n\n\tpublic containsHandle( domElement: HTMLElement ): boolean {\n\t\treturn this._domResizerWrapper!.contains( domElement );\n\t}\n\n\tpublic static isResizeHandle( domElement: HTMLElement ): boolean {\n\t\treturn domElement.classList.contains( 'ck-widget__resizer__handle' );\n\t}\n\n\t/**\n\t * Cleans up the context state.\n\t */\n\tprivate _cleanup(): void {\n\t\tthis._sizeView._dismiss();\n\n\t\tconst editingView = this._options.editor.editing.view;\n\n\t\teditingView.change( writer => {\n\t\t\twriter.setStyle( 'width', this._initialViewWidth!, this._options.viewElement );\n\t\t} );\n\t}\n\n\t/**\n\t * Calculates the proposed size as the resize handles are dragged.\n\t *\n\t * @param domEventData Event data that caused the size update request. It should be used to calculate the proposed size.\n\t */\n\tprivate _proposeNewSize( domEventData: MouseEvent ): { width: number; height: number; widthPercents: number } {\n\t\tconst state = this.state;\n\t\tconst currentCoordinates = extractCoordinates( domEventData );\n\t\tconst isCentered = this._options.isCentered ? this._options.isCentered( this ) : true;\n\n\t\t// Enlargement defines how much the resize host has changed in a given axis. Naturally it could be a negative number\n\t\t// meaning that it has been shrunk.\n\t\t//\n\t\t// +----------------+--+\n\t\t// | | |\n\t\t// | img | |\n\t\t// | /handle host | |\n\t\t// +----------------+ | ^\n\t\t// | | | - enlarge y\n\t\t// +-------------------+ v\n\t\t// \t\t\t\t\t<-->\n\t\t// \t\t\t\t\t enlarge x\n\t\tconst enlargement = {\n\t\t\tx: state._referenceCoordinates!.x - ( currentCoordinates.x + state.originalWidth! ),\n\t\t\ty: ( currentCoordinates.y - state.originalHeight! ) - state._referenceCoordinates!.y\n\t\t};\n\n\t\tif ( isCentered && state.activeHandlePosition!.endsWith( '-right' ) ) {\n\t\t\tenlargement.x = currentCoordinates.x - ( state._referenceCoordinates!.x + state.originalWidth! );\n\t\t}\n\n\t\t// Objects needs to be resized twice as much in horizontal axis if centered, since enlargement is counted from\n\t\t// one resized corner to your cursor. It needs to be duplicated to compensate for the other side too.\n\t\tif ( isCentered ) {\n\t\t\tenlargement.x *= 2;\n\t\t}\n\n\t\t// const resizeHost = this._getResizeHost();\n\n\t\t// The size proposed by the user. It does not consider the aspect ratio.\n\t\tlet width = Math.abs( state.originalWidth! + enlargement.x );\n\t\tlet height = Math.abs( state.originalHeight! + enlargement.y );\n\n\t\t// Dominant determination must take the ratio into account.\n\t\tconst dominant = width / state.aspectRatio! > height ? 'width' : 'height';\n\n\t\tif ( dominant == 'width' ) {\n\t\t\theight = width / state.aspectRatio!;\n\t\t} else {\n\t\t\twidth = height * state.aspectRatio!;\n\t\t}\n\n\t\treturn {\n\t\t\twidth: Math.round( width ),\n\t\t\theight: Math.round( height ),\n\t\t\twidthPercents: Math.min( Math.round( state.originalWidthPercents! / state.originalWidth! * width * 100 ) / 100, 100 )\n\t\t};\n\t}\n\n\t/**\n\t * Obtains the resize host.\n\t *\n\t * Resize host is an object that receives dimensions which are the result of resizing.\n\t */\n\tprivate _getResizeHost(): HTMLElement {\n\t\tconst widgetWrapper = this._domResizerWrapper!.parentElement;\n\n\t\treturn this._options.getResizeHost( widgetWrapper! );\n\t}\n\n\t/**\n\t * Obtains the handle host.\n\t *\n\t * Handle host is an object that the handles are aligned to.\n\t *\n\t * Handle host will not always be an entire widget itself. Take an image as an example. The image widget\n\t * contains an image and a caption. Only the image should be surrounded with handles.\n\t */\n\tprivate _getHandleHost(): HTMLElement {\n\t\tconst widgetWrapper = this._domResizerWrapper!.parentElement;\n\n\t\treturn this._options.getHandleHost( widgetWrapper! );\n\t}\n\n\t/**\n\t * DOM container of the entire resize UI.\n\t *\n\t * Note that this property will have a value only after the element bound with the resizer is rendered\n\t * (otherwise `null`).\n\t */\n\tprivate get _domResizerWrapper(): HTMLElement | null {\n\t\treturn this._options.editor.editing.view.domConverter.mapViewToDom( this._viewResizerWrapper! ) as any;\n\t}\n\n\t/**\n\t * Renders the resize handles in the DOM.\n\t *\n\t * @param domElement The resizer wrapper.\n\t */\n\tprivate _appendHandles( domElement: HTMLElement ) {\n\t\tconst resizerPositions = [ 'top-left', 'top-right', 'bottom-right', 'bottom-left' ];\n\n\t\tfor ( const currentPosition of resizerPositions ) {\n\t\t\tdomElement.appendChild( ( new Template( {\n\t\t\t\ttag: 'div',\n\t\t\t\tattributes: {\n\t\t\t\t\tclass: `ck-widget__resizer__handle ${ getResizerClass( currentPosition ) }`\n\t\t\t\t}\n\t\t\t} ).render() ) );\n\t\t}\n\t}\n\n\t/**\n\t * Sets up the {@link #_sizeView} property and adds it to the passed `domElement`.\n\t */\n\tprivate _appendSizeUI( domElement: HTMLElement ) {\n\t\tthis._sizeView = new SizeView();\n\n\t\t// Make sure icon#element is rendered before passing to appendChild().\n\t\tthis._sizeView.render();\n\n\t\tdomElement.appendChild( this._sizeView.element! );\n\t}\n}\n\n/**\n * @eventName ~Resizer#begin\n */\nexport type ResizerBeginEvent = DecoratedMethodEvent<Resizer, 'begin'>;\n\n/**\n * @eventName ~Resizer#cancel\n */\nexport type ResizerCancelEvent = DecoratedMethodEvent<Resizer, 'cancel'>;\n\n/**\n * @eventName ~Resizer#commit\n */\nexport type ResizerCommitEvent = DecoratedMethodEvent<Resizer, 'commit'>;\n\n/**\n * @eventName ~Resizer#updateSize\n */\nexport type ResizerUpdateSizeEvent = DecoratedMethodEvent<Resizer, 'updateSize'>;\n\n/**\n * @param resizerPosition Expected resizer position like `\"top-left\"`, `\"bottom-right\"`.\n * @returns A prefixed HTML class name for the resizer element\n */\nfunction getResizerClass( resizerPosition: string ) {\n\treturn `ck-widget__resizer__handle-${ resizerPosition }`;\n}\n\nfunction extractCoordinates( event: MouseEvent ) {\n\treturn {\n\t\tx: event.pageX,\n\t\ty: event.pageY\n\t};\n}\n\nfunction existsInDom( element: Node | DocumentFragment | undefined | null ) {\n\treturn element && element.ownerDocument && element.ownerDocument.contains( element );\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/widgetresize\n */\n\nimport Resizer, {\n\ttype ResizerBeginEvent,\n\ttype ResizerCancelEvent,\n\ttype ResizerCommitEvent\n} from './widgetresize/resizer.js';\n\nimport type WidgetToolbarRepository from './widgettoolbarrepository.js';\n\nimport {\n\tPlugin,\n\ttype Editor\n} from '@ckeditor/ckeditor5-core';\n\nimport {\n\tMouseObserver,\n\ttype DocumentChangeEvent,\n\ttype DomEventData,\n\ttype Element,\n\ttype ViewContainerElement,\n\ttype ViewDocumentMouseDownEvent,\n\ttype ViewSelectionChangeEvent\n} from '@ckeditor/ckeditor5-engine';\n\nimport type { EditorUIUpdateEvent } from '@ckeditor/ckeditor5-ui';\n\nimport {\n\tDomEmitterMixin,\n\tglobal,\n\ttype DomEmitter,\n\ttype EventInfo\n} from '@ckeditor/ckeditor5-utils';\n\nimport { throttle, type DebouncedFunc } from 'lodash-es';\n\nimport '../theme/widgetresize.css';\n\n/**\n * The widget resize feature plugin.\n *\n * Use the {@link module:widget/widgetresize~WidgetResize#attachTo} method to create a resizer for the specified widget.\n */\nexport default class WidgetResize extends Plugin {\n\t/**\n\t * The currently selected resizer.\n\t *\n\t * @observable\n\t */\n\tdeclare public selectedResizer: Resizer | null;\n\n\t/**\n\t * References an active resizer.\n\t *\n\t * Active resizer means a resizer which handle is actively used by the end user.\n\t *\n\t * @internal\n\t * @observable\n\t */\n\tdeclare public _activeResizer: Resizer | null;\n\n\t/**\n\t * A map of resizers created using this plugin instance.\n\t */\n\tprivate _resizers = new Map<ViewContainerElement, Resizer>();\n\n\tprivate _observer!: DomEmitter;\n\n\tprivate _redrawSelectedResizerThrottled!: DebouncedFunc<() => void>;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'WidgetResize' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editing = this.editor.editing;\n\t\tconst domDocument = global.window.document;\n\n\t\tthis.set( 'selectedResizer', null );\n\t\tthis.set( '_activeResizer', null );\n\n\t\tediting.view.addObserver( MouseObserver );\n\n\t\tthis._observer = new ( DomEmitterMixin() )();\n\n\t\tthis.listenTo<ViewDocumentMouseDownEvent>(\n\t\t\tediting.view.document,\n\t\t\t'mousedown',\n\t\t\tthis._mouseDownListener.bind( this ),\n\t\t\t{ priority: 'high' }\n\t\t);\n\n\t\tthis._observer.listenTo( domDocument, 'mousemove', this._mouseMoveListener.bind( this ) );\n\t\tthis._observer.listenTo( domDocument, 'mouseup', this._mouseUpListener.bind( this ) );\n\n\t\tthis._redrawSelectedResizerThrottled = throttle( () => this.redrawSelectedResizer(), 200 );\n\n\t\t// Redrawing on any change of the UI of the editor (including content changes).\n\t\tthis.editor.ui.on<EditorUIUpdateEvent>( 'update', this._redrawSelectedResizerThrottled );\n\n\t\t// Remove view widget-resizer mappings for widgets that have been removed from the document.\n\t\t// https://github.com/ckeditor/ckeditor5/issues/10156\n\t\t// https://github.com/ckeditor/ckeditor5/issues/10266\n\t\tthis.editor.model.document.on<DocumentChangeEvent>( 'change', () => {\n\t\t\tfor ( const [ viewElement, resizer ] of this._resizers ) {\n\t\t\t\tif ( !viewElement.isAttached() ) {\n\t\t\t\t\tthis._resizers.delete( viewElement );\n\t\t\t\t\tresizer.destroy();\n\t\t\t\t}\n\t\t\t}\n\t\t}, { priority: 'lowest' } );\n\n\t\t// Resizers need to be redrawn upon window resize, because new window might shrink resize host.\n\t\tthis._observer.listenTo( global.window, 'resize', this._redrawSelectedResizerThrottled );\n\n\t\tconst viewSelection = this.editor.editing.view.document.selection;\n\n\t\tviewSelection.on<ViewSelectionChangeEvent>( 'change', () => {\n\t\t\tconst selectedElement = viewSelection.getSelectedElement() as ViewContainerElement;\n\n\t\t\tconst resizer = this.getResizerByViewElement( selectedElement ) || null;\n\t\t\tif ( resizer ) {\n\t\t\t\tthis.select( resizer );\n\t\t\t} else {\n\t\t\t\tthis.deselect();\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Redraws the selected resizer if there is any selected resizer and if it is visible.\n\t */\n\tpublic redrawSelectedResizer(): void {\n\t\tif ( this.selectedResizer && this.selectedResizer.isVisible ) {\n\t\t\tthis.selectedResizer.redraw();\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis._observer.stopListening();\n\n\t\tfor ( const resizer of this._resizers.values() ) {\n\t\t\tresizer.destroy();\n\t\t}\n\n\t\tthis._redrawSelectedResizerThrottled.cancel();\n\t}\n\n\t/**\n\t * Marks resizer as selected.\n\t */\n\tpublic select( resizer: Resizer ): void {\n\t\tthis.deselect();\n\t\tthis.selectedResizer = resizer;\n\t\tthis.selectedResizer.isSelected = true;\n\t}\n\n\t/**\n\t * Deselects currently set resizer.\n\t */\n\tpublic deselect(): void {\n\t\tif ( this.selectedResizer ) {\n\t\t\tthis.selectedResizer.isSelected = false;\n\t\t}\n\n\t\tthis.selectedResizer = null;\n\t}\n\n\t/**\n\t * @param options Resizer options.\n\t */\n\tpublic attachTo( options: ResizerOptions ): Resizer {\n\t\tconst resizer = new Resizer( options );\n\t\tconst plugins = this.editor.plugins;\n\n\t\tresizer.attach();\n\n\t\tif ( plugins.has( 'WidgetToolbarRepository' ) ) {\n\t\t\t// Hiding widget toolbar to improve the performance\n\t\t\t// (https://github.com/ckeditor/ckeditor5-widget/pull/112#issuecomment-564528765).\n\t\t\tconst widgetToolbarRepository: WidgetToolbarRepository = plugins.get( 'WidgetToolbarRepository' );\n\n\t\t\tresizer.on<ResizerBeginEvent>( 'begin', () => {\n\t\t\t\twidgetToolbarRepository.forceDisabled( 'resize' );\n\t\t\t}, { priority: 'lowest' } );\n\n\t\t\tresizer.on<ResizerCancelEvent>( 'cancel', () => {\n\t\t\t\twidgetToolbarRepository.clearForceDisabled( 'resize' );\n\t\t\t}, { priority: 'highest' } );\n\n\t\t\tresizer.on<ResizerCommitEvent>( 'commit', () => {\n\t\t\t\twidgetToolbarRepository.clearForceDisabled( 'resize' );\n\t\t\t}, { priority: 'highest' } );\n\t\t}\n\n\t\tthis._resizers.set( options.viewElement, resizer );\n\n\t\tconst viewSelection = this.editor.editing.view.document.selection;\n\t\tconst selectedElement = viewSelection.getSelectedElement() as ViewContainerElement;\n\n\t\t// If the element the resizer is created for is currently focused, it should become visible.\n\t\tif ( this.getResizerByViewElement( selectedElement ) == resizer ) {\n\t\t\tthis.select( resizer );\n\t\t}\n\n\t\treturn resizer;\n\t}\n\n\t/**\n\t * Returns a resizer created for a given view element (widget element).\n\t *\n\t * @param viewElement View element associated with the resizer.\n\t */\n\tpublic getResizerByViewElement( viewElement: ViewContainerElement ): Resizer | undefined {\n\t\treturn this._resizers.get( viewElement );\n\t}\n\n\t/**\n\t * Returns a resizer that contains a given resize handle.\n\t */\n\tprivate _getResizerByHandle( domResizeHandle: HTMLElement ): Resizer | undefined {\n\t\tfor ( const resizer of this._resizers.values() ) {\n\t\t\tif ( resizer.containsHandle( domResizeHandle ) ) {\n\t\t\t\treturn resizer;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @param domEventData Native DOM event.\n\t */\n\tprivate _mouseDownListener( event: EventInfo, domEventData: DomEventData ) {\n\t\tconst resizeHandle = domEventData.domTarget;\n\n\t\tif ( !Resizer.isResizeHandle( resizeHandle ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._activeResizer = this._getResizerByHandle( resizeHandle ) || null;\n\n\t\tif ( this._activeResizer ) {\n\t\t\tthis._activeResizer.begin( resizeHandle );\n\n\t\t\t// Do not call other events when resizing. See: #6755.\n\t\t\tevent.stop();\n\t\t\tdomEventData.preventDefault();\n\t\t}\n\t}\n\n\t/**\n\t * @param domEventData Native DOM event.\n\t */\n\tprivate _mouseMoveListener( event: unknown, domEventData: MouseEvent ) {\n\t\tif ( this._activeResizer ) {\n\t\t\tthis._activeResizer.updateSize( domEventData );\n\t\t}\n\t}\n\n\tprivate _mouseUpListener(): void {\n\t\tif ( this._activeResizer ) {\n\t\t\tthis._activeResizer.commit();\n\t\t\tthis._activeResizer = null;\n\t\t}\n\t}\n}\n\n/**\n * Interface describing a resizer. It allows to specify the resizing host, custom logic for calculating aspect ratio, etc.\n */\nexport interface ResizerOptions {\n\n\t/**\n\t * Editor instance associated with the resizer.\n\t */\n\teditor: Editor;\n\n\tmodelElement: Element;\n\n\t/**\n\t * A view of an element to be resized. Typically it's the main widget's view instance.\n\t */\n\tviewElement: ViewContainerElement;\n\n\tunit?: 'px' | '%';\n\n\t/**\n\t * A callback to be executed once the resizing process is done.\n\t *\n\t * It receives a `Number` (`newValue`) as a parameter.\n\t *\n\t * For example, {@link module:image/imageresize~ImageResize} uses it to execute the resize image command\n\t * which puts the new value into the model.\n\t *\n\t * ```ts\n\t * {\n\t *\teditor,\n\t *\tmodelElement: data.item,\n\t *\tviewElement: widget,\n\t *\n\t *\tonCommit( newValue ) {\n\t *\t\teditor.execute( 'resizeImage', { width: newValue } );\n\t *\t}\n\t * };\n\t * ```\n\t */\n\tonCommit: ( newValue: string ) => void;\n\n\tgetResizeHost: ( widgetWrapper: HTMLElement ) => HTMLElement;\n\n\tgetHandleHost: ( widgetWrapper: HTMLElement ) => HTMLElement;\n\n\tisCentered?: ( resizer: Resizer ) => boolean;\n}\n"]}
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","isOfficialPlugin","requires","Enter","Delete","editor","editingView","editing","view","isEnabled","change","root","document","roots","removeSelectionAttribute","_enableTypeAroundUIInjection","_enableInsertingParagraphsOnButtonClick","_enableInsertingParagraphsOnEnterKeypress","_enableInsertingParagraphsOnTypingKeystroke","_enableTypeAroundFakeCaretActivationUsingKeyboardArrows","_enableDeleteIntegration","_enableInsertContentIntegration","_enableInsertObjectIntegration","_enableDeleteContentIntegration","destroy","_insertParagraph","widgetModelElement","position","attributesToCopy","getAttributesWithProperty","execute","focus","scrollToTheSelection","_listenToIfEnabled","emitter","event","callback","listenTo","args","modelSelection","selectedModelElement","t","locale","buttonTitles","before","after","downcastDispatcher","conversionApi","toViewElement","injectUIIntoWidget","domEventData","_handleArrowKeyPress","context","directChange","selectedViewElement","map","positionToWidgetCssClass","ui","focusTracker","name","isFocused","keyCode","isForward","isForwardArrowKeyCode","contentLanguageDirection","shouldStopAndPreventDefault","_handleArrowKeyPressOnSelectedWidget","isCollapsed","_handleArrowKeyPressWhenSelectionNextToAWidget","shiftKey","_handleArrowKeyPressWhenNonCollapsedSelection","preventDefault","stop","isLeavingWidget","setSelectionAttribute","widgetPlugin","plugins","get","modelElementNextToSelection","_getObjectElementNextToSelection","viewElementNextToSelection","_setSelectionOverElement","selectedModelNode","getLastPosition","nodeBefore","getFirstPosition","nodeAfter","selectedViewNode","setSelection","button","domTarget","buttonPosition","widgetViewElement","eventPhase","wasHandled","_insertParagraphAccordingToFakeCaretPosition","isSoft","viewDocument","env","isAndroid","direction","selectedModelWidget","isFakeCaretBefore","isDeleteForward","shouldDeleteEntireWidget","createSelection","range","getNearestSelectionRange","probe","start","modifySelection","isEqual","deepestEmptyRangeAncestor","getDeepestEmptyElementAncestor","parent","deleteContent","doNotAutoparagraph","documentSelection","content","selectable","result","insertContent","findOptimalPosition","viewWriter","typeAroundWrapper","wrapperDomElement","injectButtons","injectFakeCaret","buttonTemplate","Template","tag","title","children","importNode","caretTemplate","deepestEmptyAncestor","ancestor","getAncestors","parentFirst","childCount","isLimit","verticalNavigationHandler","arrowUpPressed","keyCodes","arrowup","arrowDownPressed","arrowdown","expandSelection","selectionWillShrink","findTextRangeFromSelection","isSingleLineRange","newPosition","end","newSelection","anchor","setFocus","stopPropagation","startPosition","endPosition","getNearestNonInlineLimit","lastRangePosition","getNearestTextPosition","firstRangePosition","createRangeIn","walkerValueType","previousPosition","type","getWalker","isBlock","checkChild","nextPosition","modelRange","isAtEnd","viewRange","toViewRange","domRange","viewRangeToDom","rects","getDomRangeRects","boundaryVerticalPosition","rect","undefined","Math","round","bottom","top","max","isBackward","Widget","_previouslySelected","Set","consumable","consume","createRangeOn","fake","_clearPreviouslySelectedWidgets","viewSelection","lastMarked","getRanges","value","isChild","addObserver","MouseObserver","_onMousedown","_handleSelectionChangeOnArrowKeyPress","_preventDefaultOnArrowKeyPress","_handleDelete","_selectFirstNestedEditable","_selectAncestorWidget","keystroke","esc","accessibility","addKeystrokeInfoGroup","keystrokes","eventInfo","target","domEvent","detail","_selectBlockContent","editableOrWidgetElement","findClosestEditableOrWidgetAncestor","clickTargetFromPoint","getElementFromMouseEvent","findTextBlockAncestor","nextTextBlock","findNextTextBlock","createPositionAfter","objectElement","getLocalizedArrowKeyCodeDirection","isVerticalNavigation","isObject","newRange","firstPosition","lastPosition","firstSelectedNode","lastSelectedNode","objectElementNextToSelection","modelDocument","canEditAt","previousNode","isEmpty","nodeToRemove","forward","widget","clear","getFirstRange","getItems","positionParent","positionParentElement","findAncestor","currentElement","getRangeFromMouseEvent","domRangeToView","viewNode","from","includes","includeSelf","treeWalker","TreeWalker","WidgetToolbarRepository","_toolbarDefinitions","Map","_balloon","ContextualBalloon","has","balloonToolbar","isWidgetSelected","_updateToolbarsVisibility","toolbarConfig","values","register","toolbarId","ariaLabel","items","getRelatedElement","balloonClassName","length","logWarning","toolbarView","ToolbarView","toolbarDefinition","itemsConfig","initialized","addToolbar","isContextual","beforeFocus","relatedElement","_showToolbar","afterBlur","_hideToolbar","maxRelatedElementDepth","deepestRelatedElement","deepestToolbarDefinition","definition","_isToolbarInBalloon","_isToolbarVisible","relatedElementDepth","stopListening","repositionContextualBalloon","fillFromConfig","componentFactory","getBalloonPositionData","toolbar","visibleView","hasView","balloon","updatePosition","defaultPositions","BalloonPanelView","mapViewToDom","positions","northArrowSouth","northArrowSouthWest","northArrowSouthEast","southArrowNorth","southArrowNorthWest","southArrowNorthEast","viewportStickyNorth","ResizeState","ObservableMixin","constructor","_options","_referenceCoordinates","originalWidth","_originalWidth","originalHeight","_originalHeight","originalWidthPercents","_originalWidthPercents","aspectRatio","_aspectRatio","domResizeHandle","domHandleHost","clientRect","activeHandlePosition","getHandlePosition","getAbsoluteBoundaryPoint","getOppositePosition","height","widthStyle","style","match","update","newSize","proposedWidth","proposedHeight","proposedWidthPercents","widthPercents","proposedHandleHostWidth","handleHostWidth","proposedHandleHostHeight","handleHostHeight","resizerPosition","elementRect","positionParts","split","ret","x","right","left","y","scrollX","scrollY","getResizerHandleClass","domHandle","resizerPositions","parts","replacements","SizeView","View","bind","bindTemplate","setTemplate","to","display","if","visible","text","_bindToState","resizeState","unit","unbind","_isVisible","Resizer","_viewResizerWrapper","isSelected","decorate","state","_cleanup","_state","that","viewResizerWrapper","_appendHandles","_appendSizeUI","isVisible","hide","show","redraw","begin","_sizeView","_initialViewWidth","getStyle","_getHandleHost","_getResizeHost","updateSize","_proposeNewSize","newWidth","setStyle","domHandleHostRect","domResizeHostRect","newValue","onCommit","cancel","handleHostRect","domWrapper","_domResizerWrapper","existsInDom","widgetWrapper","handleHost","resizerWrapper","currentDimensions","newDimensions","isSameNode","offsetWidth","offsetHeight","offsetLeft","offsetTop","compareArrays","containsHandle","isResizeHandle","_dismiss","currentCoordinates","extractCoordinates","isCentered","enlargement","endsWith","abs","dominant","min","getResizeHost","getHandleHost","currentPosition","getResizerClass","pageX","pageY","WidgetResize","_resizers","_observer","_redrawSelectedResizerThrottled","global","window","DomEmitterMixin","_mouseDownListener","_mouseMoveListener","_mouseUpListener","throttle","redrawSelectedResizer","resizer","isAttached","delete","getResizerByViewElement","select","deselect","selectedResizer","attachTo","attach","widgetToolbarRepository","forceDisabled","clearForceDisabled","_getResizerByHandle","resizeHandle","_activeResizer","commit"],"mappings":"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","file":"index.js.map","sourcesContent":["import { Plugin } from '@ckeditor/ckeditor5-core/dist/index.js';\nimport { MouseObserver, TreeWalker } from '@ckeditor/ckeditor5-engine/dist/index.js';\nimport { Delete } from '@ckeditor/ckeditor5-typing/dist/index.js';\nimport { EmitterMixin, CKEditorError, Rect, toArray, isForwardArrowKeyCode, env, keyCodes, getLocalizedArrowKeyCodeDirection, getRangeFromMouseEvent, logWarning, ObservableMixin, compareArrays, global, DomEmitterMixin } from '@ckeditor/ckeditor5-utils/dist/index.js';\nimport { IconView, Template, ContextualBalloon, ToolbarView, BalloonPanelView, View } from '@ckeditor/ckeditor5-ui/dist/index.js';\nimport { Enter } from '@ckeditor/ckeditor5-enter/dist/index.js';\nimport { throttle } from 'lodash-es';\n\n/**\n * Class used to handle the correct order of highlights on elements.\n *\n * When different highlights are applied to same element the correct order should be preserved:\n *\n * * highlight with highest priority should be applied,\n * * if two highlights have same priority - sort by CSS class provided in\n * {@link module:engine/conversion/downcasthelpers~HighlightDescriptor}.\n *\n * This way, highlight will be applied with the same rules it is applied on texts.\n */ class HighlightStack extends /* #__PURE__ */ EmitterMixin() {\n _stack = [];\n /**\n\t * Adds highlight descriptor to the stack.\n\t *\n\t * @fires change:top\n\t */ add(descriptor, writer) {\n const stack = this._stack;\n // Save top descriptor and insert new one. If top is changed - fire event.\n const oldTop = stack[0];\n this._insertDescriptor(descriptor);\n const newTop = stack[0];\n // When new object is at the top and stores different information.\n if (oldTop !== newTop && !compareDescriptors(oldTop, newTop)) {\n this.fire('change:top', {\n oldDescriptor: oldTop,\n newDescriptor: newTop,\n writer\n });\n }\n }\n /**\n\t * Removes highlight descriptor from the stack.\n\t *\n\t * @fires change:top\n\t * @param id Id of the descriptor to remove.\n\t */ remove(id, writer) {\n const stack = this._stack;\n const oldTop = stack[0];\n this._removeDescriptor(id);\n const newTop = stack[0];\n // When new object is at the top and stores different information.\n if (oldTop !== newTop && !compareDescriptors(oldTop, newTop)) {\n this.fire('change:top', {\n oldDescriptor: oldTop,\n newDescriptor: newTop,\n writer\n });\n }\n }\n /**\n\t * Inserts a given descriptor in correct place in the stack. It also takes care about updating information\n\t * when descriptor with same id is already present.\n\t */ _insertDescriptor(descriptor) {\n const stack = this._stack;\n const index = stack.findIndex((item)=>item.id === descriptor.id);\n // Inserting exact same descriptor - do nothing.\n if (compareDescriptors(descriptor, stack[index])) {\n return;\n }\n // If descriptor with same id but with different information is on the stack - remove it.\n if (index > -1) {\n stack.splice(index, 1);\n }\n // Find correct place to insert descriptor in the stack.\n // It has different information (for example priority) so it must be re-inserted in correct place.\n let i = 0;\n while(stack[i] && shouldABeBeforeB(stack[i], descriptor)){\n i++;\n }\n stack.splice(i, 0, descriptor);\n }\n /**\n\t * Removes descriptor with given id from the stack.\n\t *\n\t * @param id Descriptor's id.\n\t */ _removeDescriptor(id) {\n const stack = this._stack;\n const index = stack.findIndex((item)=>item.id === id);\n // If descriptor with same id is on the list - remove it.\n if (index > -1) {\n stack.splice(index, 1);\n }\n }\n}\n/**\n * Compares two descriptors by checking their priority and class list.\n *\n * @returns Returns true if both descriptors are defined and have same priority and classes.\n */ function compareDescriptors(a, b) {\n return a && b && a.priority == b.priority && classesToString(a.classes) == classesToString(b.classes);\n}\n/**\n * Checks whenever first descriptor should be placed in the stack before second one.\n */ function shouldABeBeforeB(a, b) {\n if (a.priority > b.priority) {\n return true;\n } else if (a.priority < b.priority) {\n return false;\n }\n // When priorities are equal and names are different - use classes to compare.\n return classesToString(a.classes) > classesToString(b.classes);\n}\n/**\n * Converts CSS classes passed with {@link module:engine/conversion/downcasthelpers~HighlightDescriptor} to\n * sorted string.\n */ function classesToString(classes) {\n return Array.isArray(classes) ? classes.sort().join(',') : classes;\n}\n\nvar dragHandleIcon = \"<svg viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M4 0v1H1v3H0V.5A.5.5 0 0 1 .5 0H4zm8 0h3.5a.5.5 0 0 1 .5.5V4h-1V1h-3V0zM4 16H.5a.5.5 0 0 1-.5-.5V12h1v3h3v1zm8 0v-1h3v-3h1v3.5a.5.5 0 0 1-.5.5H12z\\\"/><path fill-opacity=\\\".256\\\" d=\\\"M1 1h14v14H1z\\\"/><g class=\\\"ck-icon__selected-indicator\\\"><path d=\\\"M7 0h2v1H7V0zM0 7h1v2H0V7zm15 0h1v2h-1V7zm-8 8h2v1H7v-1z\\\"/><path fill-opacity=\\\".254\\\" d=\\\"M1 1h14v14H1z\\\"/></g></svg>\";\n\n/**\n * CSS class added to each widget element.\n */ const WIDGET_CLASS_NAME = 'ck-widget';\n/**\n * CSS class added to currently selected widget element.\n */ const WIDGET_SELECTED_CLASS_NAME = 'ck-widget_selected';\n/**\n * Returns `true` if given {@link module:engine/view/node~Node} is an {@link module:engine/view/element~Element} and a widget.\n */ function isWidget(node) {\n if (!node.is('element')) {\n return false;\n }\n return !!node.getCustomProperty('widget');\n}\n/**\n * Converts the given {@link module:engine/view/element~Element} to a widget in the following way:\n *\n * * sets the `contenteditable` attribute to `\"false\"`,\n * * adds the `ck-widget` CSS class,\n * * adds a custom {@link module:engine/view/element~Element#getFillerOffset `getFillerOffset()`} method returning `null`,\n * * adds a custom property allowing to recognize widget elements by using {@link ~isWidget `isWidget()`},\n * * implements the {@link ~setHighlightHandling view highlight on widgets}.\n *\n * This function needs to be used in conjunction with\n * {@link module:engine/conversion/downcasthelpers~DowncastHelpers downcast conversion helpers}\n * like {@link module:engine/conversion/downcasthelpers~DowncastHelpers#elementToElement `elementToElement()`}.\n * Moreover, typically you will want to use `toWidget()` only for `editingDowncast`, while keeping the `dataDowncast` clean.\n *\n * For example, in order to convert a `<widget>` model element to `<div class=\"widget\">` in the view, you can define\n * such converters:\n *\n * ```ts\n * editor.conversion.for( 'editingDowncast' )\n * \t.elementToElement( {\n * \t\tmodel: 'widget',\n * \t\tview: ( modelItem, { writer } ) => {\n * \t\t\tconst div = writer.createContainerElement( 'div', { class: 'widget' } );\n *\n * \t\t\treturn toWidget( div, writer, { label: 'some widget' } );\n * \t\t}\n * \t} );\n *\n * editor.conversion.for( 'dataDowncast' )\n * \t.elementToElement( {\n * \t\tmodel: 'widget',\n * \t\tview: ( modelItem, { writer } ) => {\n * \t\t\treturn writer.createContainerElement( 'div', { class: 'widget' } );\n * \t\t}\n * \t} );\n * ```\n *\n * See the full source code of the widget (with a nested editable) schema definition and converters in\n * [this sample](https://github.com/ckeditor/ckeditor5-widget/blob/master/tests/manual/widget-with-nestededitable.js).\n *\n * @param options Additional options.\n * @param options.label Element's label provided to the {@link ~setLabel} function. It can be passed as\n * a plain string or a function returning a string. It represents the widget for assistive technologies (like screen readers).\n * @param options.hasSelectionHandle If `true`, the widget will have a selection handle added.\n * @returns Returns the same element.\n */ function toWidget(element, writer, options = {}) {\n if (!element.is('containerElement')) {\n /**\n\t\t * The element passed to `toWidget()` must be a {@link module:engine/view/containerelement~ContainerElement}\n\t\t * instance.\n\t\t *\n\t\t * @error widget-to-widget-wrong-element-type\n\t\t * @param element The view element passed to `toWidget()`.\n\t\t */ throw new CKEditorError('widget-to-widget-wrong-element-type', null, {\n element\n });\n }\n writer.setAttribute('contenteditable', 'false', element);\n writer.addClass(WIDGET_CLASS_NAME, element);\n writer.setCustomProperty('widget', true, element);\n element.getFillerOffset = getFillerOffset;\n writer.setCustomProperty('widgetLabel', [], element);\n if (options.label) {\n setLabel(element, options.label);\n }\n if (options.hasSelectionHandle) {\n addSelectionHandle(element, writer);\n }\n setHighlightHandling(element, writer);\n return element;\n}\n/**\n * Default handler for adding a highlight on a widget.\n * It adds CSS class and attributes basing on the given highlight descriptor.\n */ function addHighlight(element, descriptor, writer) {\n if (descriptor.classes) {\n writer.addClass(toArray(descriptor.classes), element);\n }\n if (descriptor.attributes) {\n for(const key in descriptor.attributes){\n writer.setAttribute(key, descriptor.attributes[key], element);\n }\n }\n}\n/**\n * Default handler for removing a highlight from a widget.\n * It removes CSS class and attributes basing on the given highlight descriptor.\n */ function removeHighlight(element, descriptor, writer) {\n if (descriptor.classes) {\n writer.removeClass(toArray(descriptor.classes), element);\n }\n if (descriptor.attributes) {\n for(const key in descriptor.attributes){\n writer.removeAttribute(key, element);\n }\n }\n}\n/**\n * Sets highlight handling methods. Uses {@link module:widget/highlightstack~HighlightStack} to\n * properly determine which highlight descriptor should be used at given time.\n */ function setHighlightHandling(element, writer, add = addHighlight, remove = removeHighlight) {\n const stack = new HighlightStack();\n stack.on('change:top', (evt, data)=>{\n if (data.oldDescriptor) {\n remove(element, data.oldDescriptor, data.writer);\n }\n if (data.newDescriptor) {\n add(element, data.newDescriptor, data.writer);\n }\n });\n const addHighlightCallback = (element, descriptor, writer)=>stack.add(descriptor, writer);\n const removeHighlightCallback = (element, id, writer)=>stack.remove(id, writer);\n writer.setCustomProperty('addHighlight', addHighlightCallback, element);\n writer.setCustomProperty('removeHighlight', removeHighlightCallback, element);\n}\n/**\n * Sets label for given element.\n * It can be passed as a plain string or a function returning a string. Function will be called each time label is retrieved by\n * {@link ~getLabel `getLabel()`}.\n */ function setLabel(element, labelOrCreator) {\n const widgetLabel = element.getCustomProperty('widgetLabel');\n widgetLabel.push(labelOrCreator);\n}\n/**\n * Returns the label of the provided element.\n */ function getLabel(element) {\n const widgetLabel = element.getCustomProperty('widgetLabel');\n return widgetLabel.reduce((prev, current)=>{\n if (typeof current === 'function') {\n return prev ? prev + '. ' + current() : current();\n } else {\n return prev ? prev + '. ' + current : current;\n }\n }, '');\n}\n/**\n * Adds functionality to the provided {@link module:engine/view/editableelement~EditableElement} to act as a widget's editable:\n *\n * * sets the `contenteditable` attribute to `true` when {@link module:engine/view/editableelement~EditableElement#isReadOnly} is `false`,\n * otherwise sets it to `false`,\n * * adds the `ck-editor__editable` and `ck-editor__nested-editable` CSS classes,\n * * adds the `ck-editor__nested-editable_focused` CSS class when the editable is focused and removes it when it is blurred.\n * * implements the {@link ~setHighlightHandling view highlight on widget's editable}.\n *\n * Similarly to {@link ~toWidget `toWidget()`} this function should be used in `editingDowncast` only and it is usually\n * used together with {@link module:engine/conversion/downcasthelpers~DowncastHelpers#elementToElement `elementToElement()`}.\n *\n * For example, in order to convert a `<nested>` model element to `<div class=\"nested\">` in the view, you can define\n * such converters:\n *\n * ```ts\n * editor.conversion.for( 'editingDowncast' )\n * \t.elementToElement( {\n * \t\tmodel: 'nested',\n * \t\tview: ( modelItem, { writer } ) => {\n * \t\t\tconst div = writer.createEditableElement( 'div', { class: 'nested' } );\n *\n * \t\t\treturn toWidgetEditable( nested, writer, { label: 'label for editable' } );\n * \t\t}\n * \t} );\n *\n * editor.conversion.for( 'dataDowncast' )\n * \t.elementToElement( {\n * \t\tmodel: 'nested',\n * \t\tview: ( modelItem, { writer } ) => {\n * \t\t\treturn writer.createContainerElement( 'div', { class: 'nested' } );\n * \t\t}\n * \t} );\n * ```\n *\n * See the full source code of the widget (with nested editable) schema definition and converters in\n * [this sample](https://github.com/ckeditor/ckeditor5-widget/blob/master/tests/manual/widget-with-nestededitable.js).\n *\n * @param options Additional options.\n * @param options.label Editable's label used by assistive technologies (e.g. screen readers).\n * @returns Returns the same element that was provided in the `editable` parameter\n */ function toWidgetEditable(editable, writer, options = {}) {\n writer.addClass([\n 'ck-editor__editable',\n 'ck-editor__nested-editable'\n ], editable);\n writer.setAttribute('role', 'textbox', editable);\n writer.setAttribute('tabindex', '-1', editable);\n if (options.label) {\n writer.setAttribute('aria-label', options.label, editable);\n }\n // Set initial contenteditable value.\n writer.setAttribute('contenteditable', editable.isReadOnly ? 'false' : 'true', editable);\n // Bind the contenteditable property to element#isReadOnly.\n editable.on('change:isReadOnly', (evt, property, is)=>{\n writer.setAttribute('contenteditable', is ? 'false' : 'true', editable);\n });\n editable.on('change:isFocused', (evt, property, is)=>{\n if (is) {\n writer.addClass('ck-editor__nested-editable_focused', editable);\n } else {\n writer.removeClass('ck-editor__nested-editable_focused', editable);\n }\n });\n setHighlightHandling(editable, writer);\n return editable;\n}\n/**\n * Returns a model range which is optimal (in terms of UX) for inserting a widget block.\n *\n * For instance, if a selection is in the middle of a paragraph, the collapsed range before this paragraph\n * will be returned so that it is not split. If the selection is at the end of a paragraph,\n * the collapsed range after this paragraph will be returned.\n *\n * Note: If the selection is placed in an empty block, the range in that block will be returned. If that range\n * is then passed to {@link module:engine/model/model~Model#insertContent}, the block will be fully replaced\n * by the inserted widget block.\n *\n * @param selection The selection based on which the insertion position should be calculated.\n * @param model Model instance.\n * @returns The optimal range.\n */ function findOptimalInsertionRange(selection, model) {\n const selectedElement = selection.getSelectedElement();\n if (selectedElement) {\n const typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition(selection);\n // If the WidgetTypeAround \"fake caret\" is displayed, use its position for the insertion\n // to provide the most predictable UX (https://github.com/ckeditor/ckeditor5/issues/7438).\n if (typeAroundFakeCaretPosition) {\n return model.createRange(model.createPositionAt(selectedElement, typeAroundFakeCaretPosition));\n }\n }\n return model.schema.findOptimalInsertionRange(selection);\n}\n/**\n * A util to be used in order to map view positions to correct model positions when implementing a widget\n * which renders non-empty view element for an empty model element.\n *\n * For example:\n *\n * ```\n * // Model:\n * <placeholder type=\"name\"></placeholder>\n *\n * // View:\n * <span class=\"placeholder\">name</span>\n * ```\n *\n * In such case, view positions inside `<span>` cannot be correctly mapped to the model (because the model element is empty).\n * To handle mapping positions inside `<span class=\"placeholder\">` to the model use this util as follows:\n *\n * ```ts\n * editor.editing.mapper.on(\n * \t'viewToModelPosition',\n * \tviewToModelPositionOutsideModelElement( model, viewElement => viewElement.hasClass( 'placeholder' ) )\n * );\n * ```\n *\n * The callback will try to map the view offset of selection to an expected model position.\n *\n * 1. When the position is at the end (or in the middle) of the inline widget:\n *\n * ```\n * // View:\n * <p>foo <span class=\"placeholder\">name|</span> bar</p>\n *\n * // Model:\n * <paragraph>foo <placeholder type=\"name\"></placeholder>| bar</paragraph>\n * ```\n *\n * 2. When the position is at the beginning of the inline widget:\n *\n * ```\n * // View:\n * <p>foo <span class=\"placeholder\">|name</span> bar</p>\n *\n * // Model:\n * <paragraph>foo |<placeholder type=\"name\"></placeholder> bar</paragraph>\n * ```\n *\n * @param model Model instance on which the callback operates.\n * @param viewElementMatcher Function that is passed a view element and should return `true` if the custom mapping\n * should be applied to the given view element.\n */ function viewToModelPositionOutsideModelElement(model, viewElementMatcher) {\n return (evt, data)=>{\n const { mapper, viewPosition } = data;\n const viewParent = mapper.findMappedViewAncestor(viewPosition);\n if (!viewElementMatcher(viewParent)) {\n return;\n }\n const modelParent = mapper.toModelElement(viewParent);\n data.modelPosition = model.createPositionAt(modelParent, viewPosition.isAtStart ? 'before' : 'after');\n };\n}\n/**\n * Default filler offset function applied to all widget elements.\n */ function getFillerOffset() {\n return null;\n}\n/**\n * Adds a drag handle to the widget.\n */ function addSelectionHandle(widgetElement, writer) {\n const selectionHandle = writer.createUIElement('div', {\n class: 'ck ck-widget__selection-handle'\n }, function(domDocument) {\n const domElement = this.toDomElement(domDocument);\n // Use the IconView from the ui library.\n const icon = new IconView();\n icon.set('content', dragHandleIcon);\n // Render the icon view right away to append its #element to the selectionHandle DOM element.\n icon.render();\n domElement.appendChild(icon.element);\n return domElement;\n });\n // Append the selection handle into the widget wrapper.\n writer.insert(writer.createPositionAt(widgetElement, 0), selectionHandle);\n writer.addClass([\n 'ck-widget_with-selection-handle'\n ], widgetElement);\n}\n/**\n * Starting from a DOM resize host element (an element that receives dimensions as a result of resizing),\n * this helper returns the width of the found ancestor element.\n *\n *\t* It searches up to 5 levels of ancestors only.\n *\n * @param domResizeHost Resize host DOM element that receives dimensions as a result of resizing.\n * @returns Width of ancestor element in pixels or 0 if no ancestor with a computed width has been found.\n */ function calculateResizeHostAncestorWidth(domResizeHost) {\n const getElementComputedWidth = (element)=>{\n const { width, paddingLeft, paddingRight } = element.ownerDocument.defaultView.getComputedStyle(element);\n return parseFloat(width) - (parseFloat(paddingLeft) || 0) - (parseFloat(paddingRight) || 0);\n };\n const domResizeHostParent = domResizeHost.parentElement;\n if (!domResizeHostParent) {\n return 0;\n }\n // Need to use computed style as it properly excludes parent's paddings from the returned value.\n let parentWidth = getElementComputedWidth(domResizeHostParent);\n // Sometimes parent width cannot be accessed. If that happens we should go up in the elements tree\n // and try to get width from next ancestor.\n // https://github.com/ckeditor/ckeditor5/issues/10776\n const ancestorLevelLimit = 5;\n let currentLevel = 0;\n let checkedElement = domResizeHostParent;\n while(isNaN(parentWidth)){\n checkedElement = checkedElement.parentElement;\n if (++currentLevel > ancestorLevelLimit) {\n return 0;\n }\n parentWidth = getElementComputedWidth(checkedElement);\n }\n return parentWidth;\n}\n/**\n * Calculates a relative width of a `domResizeHost` compared to its ancestor in percents.\n *\n * @param domResizeHost Resize host DOM element.\n * @returns Percentage value between 0 and 100.\n */ function calculateResizeHostPercentageWidth(domResizeHost, resizeHostRect = new Rect(domResizeHost)) {\n const parentWidth = calculateResizeHostAncestorWidth(domResizeHost);\n if (!parentWidth) {\n return 0;\n }\n return resizeHostRect.width / parentWidth * 100;\n}\n\n/**\n * The name of the type around model selection attribute responsible for\n * displaying a fake caret next to a selected widget.\n */ const TYPE_AROUND_SELECTION_ATTRIBUTE = 'widget-type-around';\n/**\n * Checks if an element is a widget that qualifies to get the widget type around UI.\n */ function isTypeAroundWidget(viewElement, modelElement, schema) {\n return !!viewElement && isWidget(viewElement) && !schema.isInline(modelElement);\n}\n/**\n * For the passed HTML element, this helper finds the closest widget type around button ancestor.\n */ function getClosestTypeAroundDomButton(domElement) {\n return domElement.closest('.ck-widget__type-around__button');\n}\n/**\n * For the passed widget type around button element, this helper determines at which position\n * the paragraph would be inserted into the content if, for instance, the button was\n * clicked by the user.\n *\n * @returns The position of the button.\n */ function getTypeAroundButtonPosition(domElement) {\n return domElement.classList.contains('ck-widget__type-around__button_before') ? 'before' : 'after';\n}\n/**\n * For the passed HTML element, this helper returns the closest view widget ancestor.\n */ function getClosestWidgetViewElement(domElement, domConverter) {\n const widgetDomElement = domElement.closest('.ck-widget');\n return domConverter.mapDomToView(widgetDomElement);\n}\n/**\n * For the passed selection instance, it returns the position of the fake caret displayed next to a widget.\n *\n * **Note**: If the fake caret is not currently displayed, `null` is returned.\n *\n * @returns The position of the fake caret or `null` when none is present.\n */ function getTypeAroundFakeCaretPosition(selection) {\n return selection.getAttribute(TYPE_AROUND_SELECTION_ATTRIBUTE);\n}\n\nvar returnIcon = \"<svg viewBox=\\\"0 0 10 8\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M9.055.263v3.972h-6.77M1 4.216l2-2.038m-2 2 2 2.038\\\"/></svg>\";\n\nconst POSSIBLE_INSERTION_POSITIONS = [\n 'before',\n 'after'\n];\n// Do the SVG parsing once and then clone the result <svg> DOM element for each new button.\nconst RETURN_ARROW_ICON_ELEMENT = new DOMParser().parseFromString(returnIcon, 'image/svg+xml').firstChild;\nconst PLUGIN_DISABLED_EDITING_ROOT_CLASS = 'ck-widget__type-around_disabled';\n/**\n * A plugin that allows users to type around widgets where normally it is impossible to place the caret due\n * to limitations of web browsers. These \"tight spots\" occur, for instance, before (or after) a widget being\n * the first (or last) child of its parent or between two block widgets.\n *\n * This plugin extends the {@link module:widget/widget~Widget `Widget`} plugin and injects the user interface\n * with two buttons into each widget instance in the editor. Each of the buttons can be clicked by the\n * user if the widget is next to the \"tight spot\". Once clicked, a paragraph is created with the selection anchored\n * in it so that users can type (or insert content, paste, etc.) straight away.\n */ class WidgetTypeAround extends Plugin {\n /**\n\t * A reference to the model widget element that has the fake caret active\n\t * on either side of it. It is later used to remove CSS classes associated with the fake caret\n\t * when the widget no longer needs it.\n\t */ _currentFakeCaretModelElement = null;\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'WidgetTypeAround';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\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 isOfficialPlugin() {\n return true;\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 // Some of DOM elements have no view element representation so it may be null.\n if (!element) {\n return;\n }\n // If triple click should select entire paragraph.\n if (domEventData.domEvent.detail >= 3) {\n if (this._selectBlockContent(element)) {\n domEventData.preventDefault();\n }\n return;\n }\n // If target is not a widget element - check if one of the ancestors is.\n if (!isWidget(element)) {\n const editableOrWidgetElement = findClosestEditableOrWidgetAncestor(element);\n if (!editableOrWidgetElement) {\n return;\n }\n if (isWidget(editableOrWidgetElement)) {\n element = editableOrWidgetElement;\n } else {\n // Pick view range from the point where the mouse was clicked.\n const clickTargetFromPoint = getElementFromMouseEvent(view, domEventData);\n if (clickTargetFromPoint && isWidget(clickTargetFromPoint)) {\n element = clickTargetFromPoint;\n } else {\n return;\n }\n }\n }\n // On Android selection would jump to the first table cell, on other devices\n // we can't block it (and don't need to) because of drag and drop support.\n if (env.isAndroid) {\n domEventData.preventDefault();\n }\n // Focus editor if is not focused already.\n if (!viewDocument.isFocused) {\n view.focus();\n }\n // Create model selection over widget.\n const modelElement = editor.editing.mapper.toModelElement(element);\n this._setSelectionOverElement(modelElement);\n }\n /**\n\t * Selects entire block content, e.g. on triple click it selects entire paragraph.\n\t */ _selectBlockContent(element) {\n const editor = this.editor;\n const model = editor.model;\n const mapper = editor.editing.mapper;\n const schema = model.schema;\n const viewElement = mapper.findMappedViewAncestor(this.editor.editing.view.createPositionAt(element, 0));\n const modelElement = findTextBlockAncestor(mapper.toModelElement(viewElement), model.schema);\n if (!modelElement) {\n return false;\n }\n model.change((writer)=>{\n const nextTextBlock = !schema.isLimit(modelElement) ? findNextTextBlock(writer.createPositionAfter(modelElement), schema) : null;\n const start = writer.createPositionAt(modelElement, 0);\n const end = nextTextBlock ? writer.createPositionAt(nextTextBlock, 0) : writer.createPositionAt(modelElement, 'end');\n writer.setSelection(writer.createRange(start, end));\n });\n return true;\n }\n /**\n\t * Handles {@link module:engine/view/document~Document#event:keydown keydown} events and changes\n\t * the model selection when:\n\t *\n\t * * arrow key is pressed when the widget is selected,\n\t * * the selection is next to a widget and the widget should become selected upon the arrow key press.\n\t *\n\t * See {@link #_preventDefaultOnArrowKeyPress}.\n\t */ _handleSelectionChangeOnArrowKeyPress(eventInfo, domEventData) {\n const keyCode = domEventData.keyCode;\n const model = this.editor.model;\n const schema = model.schema;\n const modelSelection = model.document.selection;\n const objectElement = modelSelection.getSelectedElement();\n const direction = getLocalizedArrowKeyCodeDirection(keyCode, this.editor.locale.contentLanguageDirection);\n const isForward = direction == 'down' || direction == 'right';\n const isVerticalNavigation = direction == 'up' || direction == 'down';\n // If object element is selected.\n if (objectElement && schema.isObject(objectElement)) {\n const position = isForward ? modelSelection.getLastPosition() : modelSelection.getFirstPosition();\n const newRange = schema.getNearestSelectionRange(position, isForward ? 'forward' : 'backward');\n if (newRange) {\n model.change((writer)=>{\n writer.setSelection(newRange);\n });\n domEventData.preventDefault();\n eventInfo.stop();\n }\n return;\n }\n // Handle collapsing of the selection when there is any widget on the edge of selection.\n // This is needed because browsers have problems with collapsing such selection.\n if (!modelSelection.isCollapsed && !domEventData.shiftKey) {\n const firstPosition = modelSelection.getFirstPosition();\n const lastPosition = modelSelection.getLastPosition();\n const firstSelectedNode = firstPosition.nodeAfter;\n const lastSelectedNode = lastPosition.nodeBefore;\n if (firstSelectedNode && schema.isObject(firstSelectedNode) || lastSelectedNode && schema.isObject(lastSelectedNode)) {\n model.change((writer)=>{\n writer.setSelection(isForward ? lastPosition : firstPosition);\n });\n domEventData.preventDefault();\n eventInfo.stop();\n }\n return;\n }\n // Return if not collapsed.\n if (!modelSelection.isCollapsed) {\n return;\n }\n // If selection is next to object element.\n const objectElementNextToSelection = this._getObjectElementNextToSelection(isForward);\n if (objectElementNextToSelection && schema.isObject(objectElementNextToSelection)) {\n // Do not select an inline widget while handling up/down arrow.\n if (schema.isInline(objectElementNextToSelection) && isVerticalNavigation) {\n return;\n }\n this._setSelectionOverElement(objectElementNextToSelection);\n domEventData.preventDefault();\n eventInfo.stop();\n }\n }\n /**\n\t * Handles {@link module:engine/view/document~Document#event:keydown keydown} events and prevents\n\t * the default browser behavior to make sure the fake selection is not being moved from a fake selection\n\t * container.\n\t *\n\t * See {@link #_handleSelectionChangeOnArrowKeyPress}.\n\t */ _preventDefaultOnArrowKeyPress(eventInfo, domEventData) {\n const model = this.editor.model;\n const schema = model.schema;\n const objectElement = model.document.selection.getSelectedElement();\n // If object element is selected.\n if (objectElement && schema.isObject(objectElement)) {\n domEventData.preventDefault();\n eventInfo.stop();\n }\n }\n /**\n\t * Handles delete keys: backspace and delete.\n\t *\n\t * @param isForward Set to true if delete was performed in forward direction.\n\t * @returns Returns `true` if keys were handled correctly.\n\t */ _handleDelete(isForward) {\n const modelDocument = this.editor.model.document;\n const modelSelection = modelDocument.selection;\n // Do nothing when the read only mode is enabled.\n if (!this.editor.model.canEditAt(modelSelection)) {\n return;\n }\n // Do nothing on non-collapsed selection.\n if (!modelSelection.isCollapsed) {\n return;\n }\n const objectElement = this._getObjectElementNextToSelection(isForward);\n if (objectElement) {\n this.editor.model.change((writer)=>{\n let previousNode = modelSelection.anchor.parent;\n // Remove previous element if empty.\n while(previousNode.isEmpty){\n const nodeToRemove = previousNode;\n previousNode = nodeToRemove.parent;\n writer.remove(nodeToRemove);\n }\n this._setSelectionOverElement(objectElement);\n });\n return true;\n }\n }\n /**\n\t * Sets {@link module:engine/model/selection~Selection document's selection} over given element.\n\t *\n\t * @internal\n\t */ _setSelectionOverElement(element) {\n this.editor.model.change((writer)=>{\n writer.setSelection(writer.createRangeOn(element));\n });\n }\n /**\n\t * Checks if {@link module:engine/model/element~Element element} placed next to the current\n\t * {@link module:engine/model/selection~Selection model selection} exists and is marked in\n\t * {@link module:engine/model/schema~Schema schema} as `object`.\n\t *\n\t * @internal\n\t * @param forward Direction of checking.\n\t */ _getObjectElementNextToSelection(forward) {\n const model = this.editor.model;\n const schema = model.schema;\n const modelSelection = model.document.selection;\n // Clone current selection to use it as a probe. We must leave default selection as it is so it can return\n // to its current state after undo.\n const probe = model.createSelection(modelSelection);\n model.modifySelection(probe, {\n direction: forward ? 'forward' : 'backward'\n });\n // The selection didn't change so there is nothing there.\n if (probe.isEqual(modelSelection)) {\n return null;\n }\n const objectElement = forward ? probe.focus.nodeBefore : probe.focus.nodeAfter;\n if (!!objectElement && schema.isObject(objectElement)) {\n return objectElement;\n }\n return null;\n }\n /**\n\t * Removes CSS class from previously selected widgets.\n\t */ _clearPreviouslySelectedWidgets(writer) {\n for (const widget of this._previouslySelected){\n writer.removeClass(WIDGET_SELECTED_CLASS_NAME, widget);\n }\n this._previouslySelected.clear();\n }\n /**\n\t * Moves the document selection into the first nested editable.\n\t */ _selectFirstNestedEditable() {\n const editor = this.editor;\n const view = this.editor.editing.view;\n const viewDocument = view.document;\n for (const item of viewDocument.selection.getFirstRange().getItems()){\n if (item.is('editableElement')) {\n const modelElement = editor.editing.mapper.toModelElement(item);\n /* istanbul ignore next -- @preserve */ if (!modelElement) {\n continue;\n }\n const position = editor.model.createPositionAt(modelElement, 0);\n const newRange = editor.model.schema.getNearestSelectionRange(position, 'forward');\n editor.model.change((writer)=>{\n writer.setSelection(newRange);\n });\n return true;\n }\n }\n return false;\n }\n /**\n\t * Updates the document selection so that it selects first ancestor widget.\n\t */ _selectAncestorWidget() {\n const editor = this.editor;\n const mapper = editor.editing.mapper;\n const selection = editor.editing.view.document.selection;\n const positionParent = selection.getFirstPosition().parent;\n const positionParentElement = positionParent.is('$text') ? positionParent.parent : positionParent;\n const viewElement = positionParentElement.findAncestor(isWidget);\n if (!viewElement) {\n return false;\n }\n const modelElement = mapper.toModelElement(viewElement);\n /* istanbul ignore next -- @preserve */ if (!modelElement) {\n return false;\n }\n editor.model.change((writer)=>{\n writer.setSelection(modelElement, 'on');\n });\n return true;\n }\n}\n/**\n * Finds the closest ancestor element that is either an editable element or a widget.\n *\n * @param element The element from which to start searching.\n * @returns The closest ancestor element that is either an editable element or a widget, or null if none is found.\n */ function findClosestEditableOrWidgetAncestor(element) {\n let currentElement = element;\n while(currentElement){\n if (currentElement.is('editableElement') || isWidget(currentElement)) {\n return currentElement;\n }\n currentElement = currentElement.parent;\n }\n return null;\n}\n/**\n * Retrieves the ViewElement associated with a mouse event in the editing view.\n *\n * @param view The editing view.\n * @param domEventData The DOM event data containing the mouse event.\n * @returns The ViewElement associated with the mouse event, or null if not found.\n */ function getElementFromMouseEvent(view, domEventData) {\n const domRange = getRangeFromMouseEvent(domEventData.domEvent);\n let viewRange = null;\n if (domRange) {\n viewRange = view.domConverter.domRangeToView(domRange);\n } else {\n // Fallback to create range in target element. It happens frequently on Safari browser.\n // See more: https://github.com/ckeditor/ckeditor5/issues/16978\n viewRange = view.createRange(view.createPositionAt(domEventData.target, 0));\n }\n if (!viewRange) {\n return null;\n }\n const viewPosition = viewRange.start;\n if (!viewPosition.parent) {\n return null;\n }\n let viewNode = viewPosition.parent;\n if (viewPosition.parent.is('editableElement')) {\n if (viewPosition.isAtEnd && viewPosition.nodeBefore) {\n // Click after a widget tend to return position at the end of the editable element\n // so use the node before it if range is at the end of a parent.\n viewNode = viewPosition.nodeBefore;\n } else if (viewPosition.isAtStart && viewPosition.nodeAfter) {\n // Click before a widget tend to return position at the start of the editable element\n // so use the node after it if range is at the start of a parent.\n // See more: https://github.com/ckeditor/ckeditor5/issues/16992\n viewNode = viewPosition.nodeAfter;\n }\n }\n if (viewNode.is('$text')) {\n return viewNode.parent;\n }\n return viewNode;\n}\n/**\n * Checks whether the specified `element` is a child of the `parent` element.\n *\n * @param element An element to check.\n * @param parent A parent for the element.\n */ function isChild(element, parent) {\n if (!parent) {\n return false;\n }\n return Array.from(element.getAncestors()).includes(parent);\n}\n/**\n * Returns nearest text block ancestor.\n */ function findTextBlockAncestor(modelElement, schema) {\n for (const element of modelElement.getAncestors({\n includeSelf: true,\n parentFirst: true\n })){\n if (schema.checkChild(element, '$text')) {\n return element;\n }\n // Do not go beyond nested editable.\n if (schema.isLimit(element) && !schema.isObject(element)) {\n break;\n }\n }\n return null;\n}\n/**\n * Returns next text block where could put selection.\n */ function findNextTextBlock(position, schema) {\n const treeWalker = new TreeWalker({\n startPosition: position\n });\n for (const { item } of treeWalker){\n if (schema.isLimit(item) || !item.is('element')) {\n return null;\n }\n if (schema.checkChild(item, '$text')) {\n return item;\n }\n }\n return null;\n}\n\n/**\n * Widget toolbar repository plugin. A central point for registering widget toolbars. This plugin handles the whole\n * toolbar rendering process and exposes a concise API.\n *\n * To add a toolbar for your widget use the {@link ~WidgetToolbarRepository#register `WidgetToolbarRepository#register()`} method.\n *\n * The following example comes from the {@link module:image/imagetoolbar~ImageToolbar} plugin:\n *\n * ```ts\n * class ImageToolbar extends Plugin {\n * \tstatic get requires() {\n * \t\treturn [ WidgetToolbarRepository ];\n * \t}\n *\n * \tafterInit() {\n * \t\tconst editor = this.editor;\n * \t\tconst widgetToolbarRepository = editor.plugins.get( WidgetToolbarRepository );\n *\n * \t\twidgetToolbarRepository.register( 'image', {\n * \t\t\titems: editor.config.get( 'image.toolbar' ),\n * \t\t\tgetRelatedElement: getClosestSelectedImageWidget\n * \t\t} );\n * \t}\n * }\n * ```\n */ class WidgetToolbarRepository extends Plugin {\n /**\n\t * A map of toolbar definitions.\n\t */ _toolbarDefinitions = new Map();\n _balloon;\n /**\n\t * @inheritDoc\n\t */ static get requires() {\n return [\n ContextualBalloon\n ];\n }\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'WidgetToolbarRepository';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\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 */ static get isOfficialPlugin() {\n return true;\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 override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ Enter, Delete ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst editingView = editor.editing.view;\n\n\t\t// Set a CSS class on the view editing root when the plugin is disabled so all the buttons\n\t\t// and lines visually disappear. All the interactions are disabled in individual plugin methods.\n\t\tthis.on<ObservableChangeEvent<boolean>>( 'change:isEnabled', ( evt, data, isEnabled ) => {\n\t\t\teditingView.change( writer => {\n\t\t\t\tfor ( const root of editingView.document.roots ) {\n\t\t\t\t\tif ( isEnabled ) {\n\t\t\t\t\t\twriter.removeClass( PLUGIN_DISABLED_EDITING_ROOT_CLASS, root );\n\t\t\t\t\t} else {\n\t\t\t\t\t\twriter.addClass( PLUGIN_DISABLED_EDITING_ROOT_CLASS, root );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tif ( !isEnabled ) {\n\t\t\t\teditor.model.change( writer => {\n\t\t\t\t\twriter.removeSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE );\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\tthis._enableTypeAroundUIInjection();\n\t\tthis._enableInsertingParagraphsOnButtonClick();\n\t\tthis._enableInsertingParagraphsOnEnterKeypress();\n\t\tthis._enableInsertingParagraphsOnTypingKeystroke();\n\t\tthis._enableTypeAroundFakeCaretActivationUsingKeyboardArrows();\n\t\tthis._enableDeleteIntegration();\n\t\tthis._enableInsertContentIntegration();\n\t\tthis._enableInsertObjectIntegration();\n\t\tthis._enableDeleteContentIntegration();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis._currentFakeCaretModelElement = null;\n\t}\n\n\t/**\n\t * Inserts a new paragraph next to a widget element with the selection anchored in it.\n\t *\n\t * **Note**: This method is heavily user-oriented and will both focus the editing view and scroll\n\t * the viewport to the selection in the inserted paragraph.\n\t *\n\t * @param widgetModelElement The model widget element next to which a paragraph is inserted.\n\t * @param position The position where the paragraph is inserted. Either `'before'` or `'after'` the widget.\n\t */\n\tprivate _insertParagraph( widgetModelElement: Element, position: 'before' | 'after' ) {\n\t\tconst editor = this.editor;\n\t\tconst editingView = editor.editing.view;\n\n\t\tconst attributesToCopy = editor.model.schema.getAttributesWithProperty( widgetModelElement, 'copyOnReplace', true );\n\n\t\teditor.execute( 'insertParagraph', {\n\t\t\tposition: editor.model.createPositionAt( widgetModelElement, position ),\n\t\t\tattributes: attributesToCopy\n\t\t} );\n\n\t\teditingView.focus();\n\t\teditingView.scrollToTheSelection();\n\t}\n\n\t/**\n\t * A wrapper for the {@link module:utils/emittermixin~Emitter#listenTo} method that executes the callbacks only\n\t * when the plugin {@link #isEnabled is enabled}.\n\t *\n\t * @param emitter The object that fires the event.\n\t * @param event The name of the event.\n\t * @param callback The function to be called on event.\n\t * @param options Additional options.\n\t * @param options.priority The priority of this event callback. The higher the priority value the sooner\n\t * the callback will be fired. Events having the same priority are called in the order they were added.\n\t */\n\tprivate _listenToIfEnabled<TEvent extends BaseEvent>(\n\t\temitter: Emitter,\n\t\tevent: TEvent[ 'name' ],\n\t\tcallback: OmitThisParameter<GetCallback<TEvent>>,\n\t\toptions?: GetCallbackOptions<TEvent>\n\t): void {\n\t\tthis.listenTo( emitter, event, ( ...args ) => {\n\t\t\t// Do not respond if the plugin is disabled.\n\t\t\tif ( this.isEnabled ) {\n\t\t\t\tcallback( ...args );\n\t\t\t}\n\t\t}, options );\n\t}\n\n\t/**\n\t * Similar to {@link #_insertParagraph}, this method inserts a paragraph except that it\n\t * does not expect a position. Instead, it performs the insertion next to a selected widget\n\t * according to the `widget-type-around` model selection attribute value (fake caret position).\n\t *\n\t * Because this method requires the `widget-type-around` attribute to be set,\n\t * the insertion can only happen when the widget's fake caret is active (e.g. activated\n\t * using the keyboard).\n\t *\n\t * @returns Returns `true` when the paragraph was inserted (the attribute was present) and `false` otherwise.\n\t */\n\tprivate _insertParagraphAccordingToFakeCaretPosition() {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst modelSelection = model.document.selection;\n\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( modelSelection );\n\n\t\tif ( !typeAroundFakeCaretPosition ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t// @if CK_DEBUG_TYPING // \tconsole.info( '%c[WidgetTypeAround]%c Fake caret -> insert paragraph',\n\t\t// @if CK_DEBUG_TYPING // \t\t'font-weight: bold; color: green', ''\n\t\t// @if CK_DEBUG_TYPING // \t);\n\t\t// @if CK_DEBUG_TYPING // }\n\n\t\tconst selectedModelElement = modelSelection.getSelectedElement()!;\n\n\t\tthis._insertParagraph( selectedModelElement, typeAroundFakeCaretPosition );\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Creates a listener in the editing conversion pipeline that injects the widget type around\n\t * UI into every single widget instance created in the editor.\n\t *\n\t * The UI is delivered as a {@link module:engine/view/uielement~UIElement}\n\t * wrapper which renders DOM buttons that users can use to insert paragraphs.\n\t */\n\tprivate _enableTypeAroundUIInjection() {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\t\tconst t = editor.locale.t;\n\t\tconst buttonTitles = {\n\t\t\tbefore: t( 'Insert paragraph before block' ),\n\t\t\tafter: t( 'Insert paragraph after block' )\n\t\t};\n\n\t\teditor.editing.downcastDispatcher.on<DowncastInsertEvent<Element>>( 'insert', ( evt, data, conversionApi ) => {\n\t\t\tconst viewElement = conversionApi.mapper.toViewElement( data.item );\n\n\t\t\tif ( !viewElement ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Filter out non-widgets and inline widgets.\n\t\t\tif ( isTypeAroundWidget( viewElement, data.item, schema ) ) {\n\t\t\t\tinjectUIIntoWidget( conversionApi.writer, buttonTitles, viewElement! );\n\n\t\t\t\tconst widgetLabel = viewElement.getCustomProperty( 'widgetLabel' ) as Array<string | ( () => string )>;\n\n\t\t\t\twidgetLabel.push( () => {\n\t\t\t\t\treturn this.isEnabled ? t( 'Press Enter to type after or press Shift + Enter to type before the widget' ) : '';\n\t\t\t\t} );\n\t\t\t}\n\t\t}, { priority: 'low' } );\n\t}\n\n\t/**\n\t * Brings support for the fake caret that appears when either:\n\t *\n\t * * the selection moves to a widget from a position next to it using arrow keys,\n\t * * the arrow key is pressed when the widget is already selected.\n\t *\n\t * The fake caret lets the user know that they can start typing or just press\n\t * <kbd>Enter</kbd> to insert a paragraph at the position next to a widget as suggested by the fake caret.\n\t *\n\t * The fake caret disappears when the user changes the selection or the editor\n\t * gets blurred.\n\t *\n\t * The whole idea is as follows:\n\t *\n\t * 1. A user does one of the 2 scenarios described at the beginning.\n\t * 2. The \"keydown\" listener is executed and the decision is made whether to show or hide the fake caret.\n\t * 3. If it should show up, the `widget-type-around` model selection attribute is set indicating\n\t * on which side of the widget it should appear.\n\t * 4. The selection dispatcher reacts to the selection attribute and sets CSS classes responsible for the\n\t * fake caret on the view widget.\n\t * 5. If the fake caret should disappear, the selection attribute is removed and the dispatcher\n\t * does the CSS class clean-up in the view.\n\t * 6. Additionally, `change:range` and `FocusTracker#isFocused` listeners also remove the selection\n\t * attribute (the former also removes widget CSS classes).\n\t */\n\tprivate _enableTypeAroundFakeCaretActivationUsingKeyboardArrows() {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst modelSelection = model.document.selection;\n\t\tconst schema = model.schema;\n\t\tconst editingView = editor.editing.view;\n\n\t\t// This is the main listener responsible for the fake caret.\n\t\t// Note: The priority must precede the default Widget class keydown handler (\"high\").\n\t\tthis._listenToIfEnabled<ViewDocumentArrowKeyEvent>( editingView.document, 'arrowKey', ( evt, domEventData ) => {\n\t\t\tthis._handleArrowKeyPress( evt, domEventData );\n\t\t}, { context: [ isWidget, '$text' ], priority: 'high' } );\n\n\t\t// This listener makes sure the widget type around selection attribute will be gone from the model\n\t\t// selection as soon as the model range changes. This attribute only makes sense when a widget is selected\n\t\t// (and the \"fake horizontal caret\" is visible) so whenever the range changes (e.g. selection moved somewhere else),\n\t\t// let's get rid of the attribute so that the selection downcast dispatcher isn't even bothered.\n\t\tthis._listenToIfEnabled<SelectionChangeRangeEvent>( modelSelection, 'change:range', ( evt, data ) => {\n\t\t\t// Do not reset the selection attribute when the change was indirect.\n\t\t\tif ( !data.directChange ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Get rid of the widget type around attribute of the selection on every change:range.\n\t\t\t// If the range changes, it means for sure, the user is no longer in the active (\"fake horizontal caret\") mode.\n\t\t\teditor.model.change( writer => {\n\t\t\t\twriter.removeSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE );\n\t\t\t} );\n\t\t} );\n\n\t\t// Get rid of the widget type around attribute of the selection on every document change\n\t\t// that makes widget not selected any more (i.e. widget was removed).\n\t\tthis._listenToIfEnabled<DocumentChangeEvent>( model.document, 'change:data', () => {\n\t\t\tconst selectedModelElement = modelSelection.getSelectedElement();\n\n\t\t\tif ( selectedModelElement ) {\n\t\t\t\tconst selectedViewElement = editor.editing.mapper.toViewElement( selectedModelElement );\n\n\t\t\t\tif ( isTypeAroundWidget( selectedViewElement, selectedModelElement, schema ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\teditor.model.change( writer => {\n\t\t\t\twriter.removeSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE );\n\t\t\t} );\n\t\t} );\n\n\t\t// React to changes of the model selection attribute made by the arrow keys listener.\n\t\t// If the block widget is selected and the attribute changes, downcast the attribute to special\n\t\t// CSS classes associated with the active (\"fake horizontal caret\") mode of the widget.\n\t\tthis._listenToIfEnabled<DowncastSelectionEvent>( editor.editing.downcastDispatcher, 'selection', ( evt, data, conversionApi ) => {\n\t\t\tconst writer = conversionApi.writer;\n\n\t\t\tif ( this._currentFakeCaretModelElement ) {\n\t\t\t\tconst selectedViewElement = conversionApi.mapper.toViewElement( this._currentFakeCaretModelElement );\n\n\t\t\t\tif ( selectedViewElement ) {\n\t\t\t\t\t// Get rid of CSS classes associated with the active (\"fake horizontal caret\") mode from the view widget.\n\t\t\t\t\twriter.removeClass( POSSIBLE_INSERTION_POSITIONS.map( positionToWidgetCssClass ), selectedViewElement );\n\n\t\t\t\t\tthis._currentFakeCaretModelElement = null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst selectedModelElement = data.selection.getSelectedElement();\n\n\t\t\tif ( !selectedModelElement ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst selectedViewElement = conversionApi.mapper.toViewElement( selectedModelElement );\n\n\t\t\tif ( !isTypeAroundWidget( selectedViewElement, selectedModelElement, schema ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( data.selection );\n\n\t\t\tif ( !typeAroundFakeCaretPosition ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\twriter.addClass( positionToWidgetCssClass( typeAroundFakeCaretPosition ), selectedViewElement! );\n\n\t\t\t// Remember the view widget that got the \"fake-caret\" CSS class. This class should be removed ASAP when the\n\t\t\t// selection changes\n\t\t\tthis._currentFakeCaretModelElement = selectedModelElement;\n\t\t} );\n\n\t\tthis._listenToIfEnabled<ObservableChangeEvent<boolean>>( editor.ui.focusTracker, 'change:isFocused', ( evt, name, isFocused ) => {\n\t\t\tif ( !isFocused ) {\n\t\t\t\teditor.model.change( writer => {\n\t\t\t\t\twriter.removeSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE );\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\tfunction positionToWidgetCssClass( position: 'before' | 'after' ) {\n\t\t\treturn `ck-widget_type-around_show-fake-caret_${ position }`;\n\t\t}\n\t}\n\n\t/**\n\t * A listener executed on each \"keydown\" in the view document, a part of\n\t * {@link #_enableTypeAroundFakeCaretActivationUsingKeyboardArrows}.\n\t *\n\t * It decides whether the arrow keypress should activate the fake caret or not (also whether it should\n\t * be deactivated).\n\t *\n\t * The fake caret activation is done by setting the `widget-type-around` model selection attribute\n\t * in this listener, and stopping and preventing the event that would normally be handled by the widget\n\t * plugin that is responsible for the regular keyboard navigation near/across all widgets (that\n\t * includes inline widgets, which are ignored by the widget type around plugin).\n\t */\n\tprivate _handleArrowKeyPress( evt: BubblingEventInfo<'arrowKey'>, domEventData: DomEventData & KeystrokeInfo ) {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst modelSelection = model.document.selection;\n\t\tconst schema = model.schema;\n\t\tconst editingView = editor.editing.view;\n\n\t\tconst keyCode = domEventData.keyCode;\n\t\tconst isForward = isForwardArrowKeyCode( keyCode, editor.locale.contentLanguageDirection );\n\t\tconst selectedViewElement = editingView.document.selection.getSelectedElement()!;\n\t\tconst selectedModelElement = editor.editing.mapper.toModelElement( selectedViewElement )!;\n\t\tlet shouldStopAndPreventDefault;\n\n\t\t// Handle keyboard navigation when a type-around-compatible widget is currently selected.\n\t\tif ( isTypeAroundWidget( selectedViewElement, selectedModelElement, schema ) ) {\n\t\t\tshouldStopAndPreventDefault = this._handleArrowKeyPressOnSelectedWidget( isForward );\n\t\t}\n\t\t// Handle keyboard arrow navigation when the selection is next to a type-around-compatible widget\n\t\t// and the widget is about to be selected.\n\t\telse if ( modelSelection.isCollapsed ) {\n\t\t\tshouldStopAndPreventDefault = this._handleArrowKeyPressWhenSelectionNextToAWidget( isForward );\n\t\t}\n\t\t// Handle collapsing a non-collapsed selection that is wider than on a single widget.\n\t\telse if ( !domEventData.shiftKey ) {\n\t\t\tshouldStopAndPreventDefault = this._handleArrowKeyPressWhenNonCollapsedSelection( isForward );\n\t\t}\n\n\t\tif ( shouldStopAndPreventDefault ) {\n\t\t\tdomEventData.preventDefault();\n\t\t\tevt.stop();\n\t\t}\n\t}\n\n\t/**\n\t * Handles the keyboard navigation on \"keydown\" when a widget is currently selected and activates or deactivates\n\t * the fake caret for that widget, depending on the current value of the `widget-type-around` model\n\t * selection attribute and the direction of the pressed arrow key.\n\t *\n\t * @param isForward `true` when the pressed arrow key was responsible for the forward model selection movement\n\t * as in {@link module:utils/keyboard~isForwardArrowKeyCode}.\n\t * @returns Returns `true` when the keypress was handled and no other keydown listener of the editor should\n\t * process the event any further. Returns `false` otherwise.\n\t */\n\tprivate _handleArrowKeyPressOnSelectedWidget( isForward: boolean ) {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst modelSelection = model.document.selection;\n\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( modelSelection );\n\n\t\treturn model.change( writer => {\n\t\t\t// If the fake caret is displayed...\n\t\t\tif ( typeAroundFakeCaretPosition ) {\n\t\t\t\tconst isLeavingWidget = typeAroundFakeCaretPosition === ( isForward ? 'after' : 'before' );\n\n\t\t\t\t// If the keyboard arrow works against the value of the selection attribute...\n\t\t\t\t// then remove the selection attribute but prevent default DOM actions\n\t\t\t\t// and do not let the Widget plugin listener move the selection. This brings\n\t\t\t\t// the widget back to the state, for instance, like if was selected using the mouse.\n\t\t\t\t//\n\t\t\t\t// **Note**: If leaving the widget when the fake caret is active, then the default\n\t\t\t\t// Widget handler will change the selection and, in turn, this will automatically discard\n\t\t\t\t// the selection attribute.\n\t\t\t\tif ( !isLeavingWidget ) {\n\t\t\t\t\twriter.removeSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE );\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If the fake caret wasn't displayed, let's set it now according to the direction of the arrow\n\t\t\t// key press. This also means we cannot let the Widget plugin listener move the selection.\n\t\t\telse {\n\t\t\t\twriter.setSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE, isForward ? 'after' : 'before' );\n\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t} );\n\t}\n\n\t/**\n\t * Handles the keyboard navigation on \"keydown\" when **no** widget is selected but the selection is **directly** next\n\t * to one and upon the fake caret should become active for this widget upon arrow keypress\n\t * (AKA entering/selecting the widget).\n\t *\n\t * **Note**: This code mirrors the implementation from the widget plugin but also adds the selection attribute.\n\t * Unfortunately, there is no safe way to let the widget plugin do the selection part first and then just set the\n\t * selection attribute here in the widget type around plugin. This is why this code must duplicate some from the widget plugin.\n\t *\n\t * @param isForward `true` when the pressed arrow key was responsible for the forward model selection movement\n\t * as in {@link module:utils/keyboard~isForwardArrowKeyCode}.\n\t * @returns Returns `true` when the keypress was handled and no other keydown listener of the editor should\n\t * process the event any further. Returns `false` otherwise.\n\t */\n\tprivate _handleArrowKeyPressWhenSelectionNextToAWidget( isForward: boolean ) {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst schema = model.schema;\n\t\tconst widgetPlugin: Widget = editor.plugins.get( 'Widget' );\n\n\t\t// This is the widget the selection is about to be set on.\n\t\tconst modelElementNextToSelection = widgetPlugin._getObjectElementNextToSelection( isForward )!;\n\t\tconst viewElementNextToSelection = editor.editing.mapper.toViewElement( modelElementNextToSelection );\n\n\t\tif ( isTypeAroundWidget( viewElementNextToSelection, modelElementNextToSelection, schema ) ) {\n\t\t\tmodel.change( writer => {\n\t\t\t\twidgetPlugin._setSelectionOverElement( modelElementNextToSelection );\n\t\t\t\twriter.setSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE, isForward ? 'before' : 'after' );\n\t\t\t} );\n\n\t\t\t// The change() block above does the same job as the Widget plugin. The event can\n\t\t\t// be safely canceled.\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Handles the keyboard navigation on \"keydown\" when a widget is currently selected (together with some other content)\n\t * and the widget is the first or last element in the selection. It activates or deactivates the fake caret for that widget.\n\t *\n\t * @param isForward `true` when the pressed arrow key was responsible for the forward model selection movement\n\t * as in {@link module:utils/keyboard~isForwardArrowKeyCode}.\n\t * @returns Returns `true` when the keypress was handled and no other keydown listener of the editor should\n\t * process the event any further. Returns `false` otherwise.\n\t */\n\tprivate _handleArrowKeyPressWhenNonCollapsedSelection( isForward: boolean ) {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst schema = model.schema;\n\t\tconst mapper = editor.editing.mapper;\n\t\tconst modelSelection = model.document.selection;\n\n\t\tconst selectedModelNode = isForward ?\n\t\t\tmodelSelection.getLastPosition()!.nodeBefore :\n\t\t\tmodelSelection.getFirstPosition()!.nodeAfter;\n\n\t\tconst selectedViewNode = mapper.toViewElement( selectedModelNode as any );\n\n\t\t// There is a widget at the collapse position so collapse the selection to the fake caret on it.\n\t\tif ( isTypeAroundWidget( selectedViewNode, selectedModelNode as any, schema ) ) {\n\t\t\tmodel.change( writer => {\n\t\t\t\twriter.setSelection( selectedModelNode!, 'on' );\n\t\t\t\twriter.setSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE, isForward ? 'after' : 'before' );\n\t\t\t} );\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Registers a `mousedown` listener for the view document which intercepts events\n\t * coming from the widget type around UI, which happens when a user clicks one of the buttons\n\t * that insert a paragraph next to a widget.\n\t */\n\tprivate _enableInsertingParagraphsOnButtonClick() {\n\t\tconst editor = this.editor;\n\t\tconst editingView = editor.editing.view;\n\n\t\tthis._listenToIfEnabled<ViewDocumentMouseDownEvent>( editingView.document, 'mousedown', ( evt, domEventData ) => {\n\t\t\tconst button = getClosestTypeAroundDomButton( domEventData.domTarget );\n\n\t\t\tif ( !button ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst buttonPosition = getTypeAroundButtonPosition( button );\n\t\t\tconst widgetViewElement = getClosestWidgetViewElement( button, editingView.domConverter );\n\t\t\tconst widgetModelElement = editor.editing.mapper.toModelElement( widgetViewElement );\n\n\t\t\tthis._insertParagraph( widgetModelElement!, buttonPosition );\n\n\t\t\tdomEventData.preventDefault();\n\t\t\tevt.stop();\n\t\t} );\n\t}\n\n\t/**\n\t * Creates the <kbd>Enter</kbd> key listener on the view document that allows the user to insert a paragraph\n\t * near the widget when either:\n\t *\n\t * * The fake caret was first activated using the arrow keys,\n\t * * The entire widget is selected in the model.\n\t *\n\t * In the first case, the new paragraph is inserted according to the `widget-type-around` selection\n\t * attribute (see {@link #_handleArrowKeyPress}).\n\t *\n\t * In the second case, the new paragraph is inserted based on whether a soft (<kbd>Shift</kbd>+<kbd>Enter</kbd>) keystroke\n\t * was pressed or not.\n\t */\n\tprivate _enableInsertingParagraphsOnEnterKeypress() {\n\t\tconst editor = this.editor;\n\t\tconst selection = editor.model.document.selection;\n\t\tconst editingView = editor.editing.view;\n\n\t\tthis._listenToIfEnabled<ViewDocumentEnterEvent>( editingView.document, 'enter', ( evt, domEventData ) => {\n\t\t\t// This event could be triggered from inside the widget but we are interested\n\t\t\t// only when the widget is selected itself.\n\t\t\tif ( evt.eventPhase != 'atTarget' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst selectedModelElement = selection.getSelectedElement()!;\n\t\t\tconst selectedViewElement = editor.editing.mapper.toViewElement( selectedModelElement );\n\n\t\t\tconst schema = editor.model.schema;\n\t\t\tlet wasHandled;\n\n\t\t\t// First check if the widget is selected and there's a type around selection attribute associated\n\t\t\t// with the fake caret that would tell where to insert a new paragraph.\n\t\t\tif ( this._insertParagraphAccordingToFakeCaretPosition() ) {\n\t\t\t\twasHandled = true;\n\t\t\t}\n\t\t\t// Then, if there is no selection attribute associated with the fake caret, check if the widget\n\t\t\t// simply is selected and create a new paragraph according to the keystroke (Shift+)Enter.\n\t\t\telse if ( isTypeAroundWidget( selectedViewElement, selectedModelElement, schema ) ) {\n\t\t\t\tthis._insertParagraph( selectedModelElement, domEventData.isSoft ? 'before' : 'after' );\n\n\t\t\t\twasHandled = true;\n\t\t\t}\n\n\t\t\tif ( wasHandled ) {\n\t\t\t\tdomEventData.preventDefault();\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { context: isWidget } );\n\t}\n\n\t/**\n\t * Similar to the {@link #_enableInsertingParagraphsOnEnterKeypress}, it allows the user\n\t * to insert a paragraph next to a widget when the fake caret was activated using arrow\n\t * keys but it responds to typing instead of <kbd>Enter</kbd>.\n\t *\n\t * Listener enabled by this method will insert a new paragraph according to the `widget-type-around`\n\t * model selection attribute as the user simply starts typing, which creates the impression that the fake caret\n\t * behaves like a real one rendered by the browser (AKA your text appears where the caret was).\n\t *\n\t * **Note**: At the moment this listener creates 2 undo steps: one for the `insertParagraph` command\n\t * and another one for actual typing. It is not a disaster but this may need to be fixed\n\t * sooner or later.\n\t */\n\tprivate _enableInsertingParagraphsOnTypingKeystroke() {\n\t\tconst editor = this.editor;\n\t\tconst viewDocument = editor.editing.view.document;\n\n\t\t// Note: The priority must precede the default Input plugin insertText handler.\n\t\tthis._listenToIfEnabled<ViewDocumentInsertTextEvent>( viewDocument, 'insertText', ( evt, data ) => {\n\t\t\tif ( this._insertParagraphAccordingToFakeCaretPosition() ) {\n\t\t\t\t// The view selection in the event data contains the widget. If the new paragraph\n\t\t\t\t// was inserted, modify the view selection passed along with the insertText event\n\t\t\t\t// so the default event handler in the Input plugin starts typing inside the paragraph.\n\t\t\t\t// Otherwise, the typing would be over the widget.\n\t\t\t\tdata.selection = viewDocument.selection;\n\t\t\t}\n\t\t}, { priority: 'high' } );\n\n\t\tif ( env.isAndroid ) {\n\t\t\t// On Android with English keyboard, the composition starts just by putting caret\n\t\t\t// at the word end or by selecting a table column. This is not a real composition started.\n\t\t\t// Trigger delete content on first composition key pressed.\n\t\t\tthis._listenToIfEnabled<ViewDocumentKeyDownEvent>( viewDocument, 'keydown', ( evt, data ) => {\n\t\t\t\tif ( data.keyCode == 229 ) {\n\t\t\t\t\tthis._insertParagraphAccordingToFakeCaretPosition();\n\t\t\t\t}\n\t\t\t} );\n\t\t} else {\n\t\t\t// Note: The priority must precede the default Input plugin compositionstart handler (to call it before delete content).\n\t\t\tthis._listenToIfEnabled<ViewDocumentCompositionStartEvent>( viewDocument, 'compositionstart', () => {\n\t\t\t\tthis._insertParagraphAccordingToFakeCaretPosition();\n\t\t\t}, { priority: 'high' } );\n\t\t}\n\t}\n\n\t/**\n\t * It creates a \"delete\" event listener on the view document to handle cases when the <kbd>Delete</kbd> or <kbd>Backspace</kbd>\n\t * is pressed and the fake caret is currently active.\n\t *\n\t * The fake caret should create an illusion of a real browser caret so that when it appears before or after\n\t * a widget, pressing <kbd>Delete</kbd> or <kbd>Backspace</kbd> should remove a widget or delete the content\n\t * before or after a widget (depending on the content surrounding the widget).\n\t */\n\tprivate _enableDeleteIntegration() {\n\t\tconst editor = this.editor;\n\t\tconst editingView = editor.editing.view;\n\t\tconst model = editor.model;\n\t\tconst schema = model.schema;\n\n\t\tthis._listenToIfEnabled<ViewDocumentDeleteEvent>( editingView.document, 'delete', ( evt, domEventData ) => {\n\t\t\t// This event could be triggered from inside the widget but we are interested\n\t\t\t// only when the widget is selected itself.\n\t\t\tif ( evt.eventPhase != 'atTarget' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( model.document.selection );\n\n\t\t\t// This listener handles only these cases when the fake caret is active.\n\t\t\tif ( !typeAroundFakeCaretPosition ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst direction = domEventData.direction;\n\t\t\tconst selectedModelWidget = model.document.selection.getSelectedElement();\n\n\t\t\tconst isFakeCaretBefore = typeAroundFakeCaretPosition === 'before';\n\t\t\tconst isDeleteForward = direction == 'forward';\n\t\t\tconst shouldDeleteEntireWidget = isFakeCaretBefore === isDeleteForward;\n\n\t\t\tif ( shouldDeleteEntireWidget ) {\n\t\t\t\teditor.execute( 'delete', {\n\t\t\t\t\tselection: model.createSelection( selectedModelWidget!, 'on' )\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\tconst range = schema.getNearestSelectionRange(\n\t\t\t\t\tmodel.createPositionAt( selectedModelWidget!, typeAroundFakeCaretPosition ),\n\t\t\t\t\tdirection\n\t\t\t\t);\n\n\t\t\t\t// If there is somewhere to move selection to, then there will be something to delete.\n\t\t\t\tif ( range ) {\n\t\t\t\t\t// If the range is NOT collapsed, then we know that the range contains an object (see getNearestSelectionRange() docs).\n\t\t\t\t\tif ( !range.isCollapsed ) {\n\t\t\t\t\t\tmodel.change( writer => {\n\t\t\t\t\t\t\twriter.setSelection( range );\n\t\t\t\t\t\t\teditor.execute( isDeleteForward ? 'deleteForward' : 'delete' );\n\t\t\t\t\t\t} );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst probe = model.createSelection( range.start );\n\t\t\t\t\t\tmodel.modifySelection( probe, { direction } );\n\n\t\t\t\t\t\t// If the range is collapsed, let's see if a non-collapsed range exists that can could be deleted.\n\t\t\t\t\t\t// If such range exists, use the editor command because it it safe for collaboration (it merges where it can).\n\t\t\t\t\t\tif ( !probe.focus!.isEqual( range.start ) ) {\n\t\t\t\t\t\t\tmodel.change( writer => {\n\t\t\t\t\t\t\t\twriter.setSelection( range );\n\t\t\t\t\t\t\t\teditor.execute( isDeleteForward ? 'deleteForward' : 'delete' );\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// If there is no non-collapsed range to be deleted then we are sure that there is an empty element\n\t\t\t\t\t\t// next to a widget that should be removed. \"delete\" and \"deleteForward\" commands cannot get rid of it\n\t\t\t\t\t\t// so calling Model#deleteContent here manually.\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tconst deepestEmptyRangeAncestor = getDeepestEmptyElementAncestor( schema, range.start.parent as Element );\n\n\t\t\t\t\t\t\tmodel.deleteContent( model.createSelection( deepestEmptyRangeAncestor, 'on' ), {\n\t\t\t\t\t\t\t\tdoNotAutoparagraph: true\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If some content was deleted, don't let the handler from the Widget plugin kick in.\n\t\t\t// If nothing was deleted, then the default handler will have nothing to do anyway.\n\t\t\tdomEventData.preventDefault();\n\t\t\tevt.stop();\n\t\t}, { context: isWidget } );\n\t}\n\n\t/**\n\t * Attaches the {@link module:engine/model/model~Model#event:insertContent} event listener that, for instance, allows the user to paste\n\t * content near a widget when the fake caret is first activated using the arrow keys.\n\t *\n\t * The content is inserted according to the `widget-type-around` selection attribute (see {@link #_handleArrowKeyPress}).\n\t */\n\tprivate _enableInsertContentIntegration() {\n\t\tconst editor = this.editor;\n\t\tconst model = this.editor.model;\n\t\tconst documentSelection = model.document.selection;\n\n\t\tthis._listenToIfEnabled<ModelInsertContentEvent>( editor.model, 'insertContent', ( evt, [ content, selectable ] ) => {\n\t\t\tif ( selectable && !( selectable as any ).is( 'documentSelection' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( documentSelection );\n\n\t\t\tif ( !typeAroundFakeCaretPosition ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tevt.stop();\n\n\t\t\treturn model.change( writer => {\n\t\t\t\tconst selectedElement = documentSelection.getSelectedElement();\n\t\t\t\tconst position = model.createPositionAt( selectedElement!, typeAroundFakeCaretPosition );\n\t\t\t\tconst selection = writer.createSelection( position );\n\n\t\t\t\tconst result = model.insertContent( content, selection );\n\n\t\t\t\twriter.setSelection( selection );\n\n\t\t\t\treturn result;\n\t\t\t} );\n\t\t}, { priority: 'high' } );\n\t}\n\n\t/**\n\t * Attaches the {@link module:engine/model/model~Model#event:insertObject} event listener that modifies the\n\t * `options.findOptimalPosition`parameter to position of fake caret in relation to selected element\n\t * to reflect user's intent of desired insertion position.\n\t *\n\t * The object is inserted according to the `widget-type-around` selection attribute (see {@link #_handleArrowKeyPress}).\n\t */\n\tprivate _enableInsertObjectIntegration() {\n\t\tconst editor = this.editor;\n\t\tconst model = this.editor.model;\n\t\tconst documentSelection = model.document.selection;\n\n\t\tthis._listenToIfEnabled<ModelInsertObjectEvent>( editor.model, 'insertObject', ( evt, args ) => {\n\t\t\tconst [ , selectable, options = {} ] = args;\n\n\t\t\tif ( selectable && !( selectable as any ).is( 'documentSelection' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( documentSelection );\n\n\t\t\tif ( !typeAroundFakeCaretPosition ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\toptions.findOptimalPosition = typeAroundFakeCaretPosition;\n\t\t\targs[ 3 ] = options;\n\t\t}, { priority: 'high' } );\n\t}\n\n\t/**\n\t * Attaches the {@link module:engine/model/model~Model#event:deleteContent} event listener to block the event when the fake\n\t * caret is active.\n\t *\n\t * This is required for cases that trigger {@link module:engine/model/model~Model#deleteContent `model.deleteContent()`}\n\t * before calling {@link module:engine/model/model~Model#insertContent `model.insertContent()`} like, for instance,\n\t * plain text pasting.\n\t */\n\tprivate _enableDeleteContentIntegration() {\n\t\tconst editor = this.editor;\n\t\tconst model = this.editor.model;\n\t\tconst documentSelection = model.document.selection;\n\n\t\tthis._listenToIfEnabled<ModelDeleteContentEvent>( editor.model, 'deleteContent', ( evt, [ selection ] ) => {\n\t\t\tif ( selection && !selection.is( 'documentSelection' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( documentSelection );\n\n\t\t\t// Disable removing the selection content while pasting plain text.\n\t\t\tif ( typeAroundFakeCaretPosition ) {\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { priority: 'high' } );\n\t}\n}\n\n/**\n * Injects the type around UI into a view widget instance.\n */\nfunction injectUIIntoWidget(\n\tviewWriter: DowncastWriter,\n\tbuttonTitles: { before: string; after: string },\n\twidgetViewElement: ViewElement ) {\n\tconst typeAroundWrapper = viewWriter.createUIElement( 'div', {\n\t\tclass: 'ck ck-reset_all ck-widget__type-around'\n\t}, function( domDocument ) {\n\t\tconst wrapperDomElement = this.toDomElement( domDocument );\n\n\t\tinjectButtons( wrapperDomElement, buttonTitles );\n\t\tinjectFakeCaret( wrapperDomElement );\n\n\t\treturn wrapperDomElement;\n\t} );\n\n\t// Inject the type around wrapper into the widget's wrapper.\n\tviewWriter.insert( viewWriter.createPositionAt( widgetViewElement, 'end' ), typeAroundWrapper );\n}\n\n/**\n * FYI: Not using the IconView class because each instance would need to be destroyed to avoid memory leaks\n * and it's pretty hard to figure out when a view (widget) is gone for good so it's cheaper to use raw\n * <svg> here.\n */\nfunction injectButtons( wrapperDomElement: HTMLElement, buttonTitles: { before: string; after: string } ) {\n\tfor ( const position of POSSIBLE_INSERTION_POSITIONS ) {\n\t\tconst buttonTemplate = new Template( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-widget__type-around__button',\n\t\t\t\t\t`ck-widget__type-around__button_${ position }`\n\t\t\t\t],\n\t\t\t\ttitle: buttonTitles[ position ],\n\t\t\t\t'aria-hidden': 'true'\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\twrapperDomElement.ownerDocument.importNode( RETURN_ARROW_ICON_ELEMENT, true )\n\t\t\t]\n\t\t} );\n\n\t\twrapperDomElement.appendChild( buttonTemplate.render() );\n\t}\n}\n\nfunction injectFakeCaret( wrapperDomElement: HTMLElement ) {\n\tconst caretTemplate = new Template( {\n\t\ttag: 'div',\n\t\tattributes: {\n\t\t\tclass: [\n\t\t\t\t'ck',\n\t\t\t\t'ck-widget__type-around__fake-caret'\n\t\t\t]\n\t\t}\n\t} );\n\n\twrapperDomElement.appendChild( caretTemplate.render() );\n}\n\n/**\n * Returns the ancestor of an element closest to the root which is empty. For instance,\n * for `<baz>`:\n *\n * ```\n * <foo>abc<bar><baz></baz></bar></foo>\n * ```\n *\n * it returns `<bar>`.\n */\nfunction getDeepestEmptyElementAncestor( schema: Schema, element: Element ) {\n\tlet deepestEmptyAncestor = element;\n\n\tfor ( const ancestor of element.getAncestors( { parentFirst: true } ) ) {\n\t\tif ( ( ancestor as any ).childCount > 1 || schema.isLimit( ancestor ) ) {\n\t\t\tbreak;\n\t\t}\n\n\t\tdeepestEmptyAncestor = ancestor as Element;\n\t}\n\n\treturn deepestEmptyAncestor;\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/verticalnavigation\n */\n\nimport {\n\tkeyCodes,\n\tRect,\n\ttype GetCallback\n} from '@ckeditor/ckeditor5-utils';\n\nimport type {\n\tDocumentSelection,\n\tEditingController,\n\tModel,\n\tPosition,\n\tRange,\n\tSchema,\n\tSelection,\n\tViewDocumentArrowKeyEvent\n} from '@ckeditor/ckeditor5-engine';\n\n/**\n * Returns 'keydown' handler for up/down arrow keys that modifies the caret movement if it's in a text line next to an object.\n *\n * @param editing The editing controller.\n */\nexport default function verticalNavigationHandler(\n\tediting: EditingController\n): GetCallback<ViewDocumentArrowKeyEvent> {\n\tconst model = editing.model;\n\n\treturn ( evt, data ) => {\n\t\tconst arrowUpPressed = data.keyCode == keyCodes.arrowup;\n\t\tconst arrowDownPressed = data.keyCode == keyCodes.arrowdown;\n\t\tconst expandSelection = data.shiftKey;\n\t\tconst selection = model.document.selection;\n\n\t\tif ( !arrowUpPressed && !arrowDownPressed ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst isForward = arrowDownPressed;\n\n\t\t// Navigation is in the opposite direction than the selection direction so this is shrinking of the selection.\n\t\t// Selection for sure will not approach any object.\n\t\tif ( expandSelection && selectionWillShrink( selection, isForward ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Find a range between selection and closest limit element.\n\t\tconst range = findTextRangeFromSelection( editing, selection, isForward );\n\n\t\t// There is no selection position inside the limit element.\n\t\tif ( !range ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If already at the edge of a limit element.\n\t\tif ( range.isCollapsed ) {\n\t\t\t// A collapsed selection at limit edge - nothing more to do.\n\t\t\tif ( selection.isCollapsed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// A non collapsed selection is at the limit edge while expanding the selection - let others do their stuff.\n\t\t\telse if ( expandSelection ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// If the range is a single line (there is no word wrapping) then move the selection to the position closest to the limit element.\n\t\t//\n\t\t// We can't move the selection directly to the isObject element (eg. table cell) because of dual position at the end/beginning\n\t\t// of wrapped line (it's at the same time at the end of one line and at the start of the next line).\n\t\tif ( range.isCollapsed || isSingleLineRange( editing, range, isForward ) ) {\n\t\t\tmodel.change( writer => {\n\t\t\t\tconst newPosition = isForward ? range.end : range.start;\n\n\t\t\t\tif ( expandSelection ) {\n\t\t\t\t\tconst newSelection = model.createSelection( selection.anchor );\n\t\t\t\t\tnewSelection.setFocus( newPosition );\n\n\t\t\t\t\twriter.setSelection( newSelection );\n\t\t\t\t} else {\n\t\t\t\t\twriter.setSelection( newPosition );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tevt.stop();\n\t\t\tdata.preventDefault();\n\t\t\tdata.stopPropagation();\n\t\t}\n\t};\n}\n\n/**\n * Finds the range between selection and closest limit element (in the direction of navigation).\n * The position next to limit element is adjusted to the closest allowed `$text` position.\n *\n * Returns `null` if, according to the schema, the resulting range cannot contain a `$text` element.\n *\n * @param editing The editing controller.\n * @param selection The current selection.\n * @param isForward The expected navigation direction.\n */\nfunction findTextRangeFromSelection( editing: EditingController, selection: Selection | DocumentSelection, isForward: boolean ) {\n\tconst model = editing.model;\n\n\tif ( isForward ) {\n\t\tconst startPosition = selection.isCollapsed ? selection.focus! : selection.getLastPosition()!;\n\t\tconst endPosition = getNearestNonInlineLimit( model, startPosition, 'forward' );\n\n\t\t// There is no limit element, browser should handle this.\n\t\tif ( !endPosition ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst range = model.createRange( startPosition, endPosition );\n\t\tconst lastRangePosition = getNearestTextPosition( model.schema, range, 'backward' );\n\n\t\tif ( lastRangePosition ) {\n\t\t\treturn model.createRange( startPosition, lastRangePosition );\n\t\t}\n\n\t\treturn null;\n\t} else {\n\t\tconst endPosition = selection.isCollapsed ? selection.focus! : selection.getFirstPosition()!;\n\t\tconst startPosition = getNearestNonInlineLimit( model, endPosition, 'backward' );\n\n\t\t// There is no limit element, browser should handle this.\n\t\tif ( !startPosition ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst range = model.createRange( startPosition, endPosition );\n\t\tconst firstRangePosition = getNearestTextPosition( model.schema, range, 'forward' );\n\n\t\tif ( firstRangePosition ) {\n\t\t\treturn model.createRange( firstRangePosition, endPosition );\n\t\t}\n\n\t\treturn null;\n\t}\n}\n\n/**\n * Finds the limit element position that is closest to startPosition.\n *\n * @param direction Search direction.\n */\nfunction getNearestNonInlineLimit( model: Model, startPosition: Position, direction: 'forward' | 'backward' ) {\n\tconst schema = model.schema;\n\tconst range = model.createRangeIn( startPosition.root );\n\n\tconst walkerValueType = direction == 'forward' ? 'elementStart' : 'elementEnd';\n\n\tfor ( const { previousPosition, item, type } of range.getWalker( { startPosition, direction } ) ) {\n\t\tif ( schema.isLimit( item ) && !schema.isInline( item ) ) {\n\t\t\treturn previousPosition;\n\t\t}\n\n\t\t// Stop looking for isLimit element if the next element is a block element (it is for sure not single line).\n\t\tif ( type == walkerValueType && schema.isBlock( item ) ) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\treturn null;\n}\n\n/**\n * Basing on the provided range, finds the first or last (depending on `direction`) position inside the range\n * that can contain `$text` (according to schema).\n *\n * @param schema The schema.\n * @param range The range to find the position in.\n * @param direction Search direction.\n * @returns The nearest selection position.\n *\n */\nfunction getNearestTextPosition( schema: Schema, range: Range, direction: 'forward' | 'backward' ) {\n\tconst position = direction == 'backward' ? range.end : range.start;\n\n\tif ( schema.checkChild( position, '$text' ) ) {\n\t\treturn position;\n\t}\n\n\tfor ( const { nextPosition } of range.getWalker( { direction } ) ) {\n\t\tif ( schema.checkChild( nextPosition, '$text' ) ) {\n\t\t\treturn nextPosition;\n\t\t}\n\t}\n\n\treturn null;\n}\n\n/**\n * Checks if the DOM range corresponding to the provided model range renders as a single line by analyzing DOMRects\n * (verifying if they visually wrap content to the next line).\n *\n * @param editing The editing controller.\n * @param modelRange The current table cell content range.\n * @param isForward The expected navigation direction.\n */\nfunction isSingleLineRange( editing: EditingController, modelRange: Range, isForward: boolean ) {\n\tconst model = editing.model;\n\tconst domConverter = editing.view.domConverter;\n\n\t// Wrapped lines contain exactly the same position at the end of current line\n\t// and at the beginning of next line. That position's client rect is at the end\n\t// of current line. In case of caret at first position of the last line that 'dual'\n\t// position would be detected as it's not the last line.\n\tif ( isForward ) {\n\t\tconst probe = model.createSelection( modelRange.start );\n\n\t\tmodel.modifySelection( probe );\n\n\t\t// If the new position is at the end of the container then we can't use this position\n\t\t// because it would provide incorrect result for eg caption of image and selection\n\t\t// just before end of it. Also in this case there is no \"dual\" position.\n\t\tif ( !probe.focus!.isAtEnd && !modelRange.start.isEqual( probe.focus! ) ) {\n\t\t\tmodelRange = model.createRange( probe.focus!, modelRange.end );\n\t\t}\n\t}\n\n\tconst viewRange = editing.mapper.toViewRange( modelRange );\n\tconst domRange = domConverter.viewRangeToDom( viewRange );\n\tconst rects = Rect.getDomRangeRects( domRange );\n\n\tlet boundaryVerticalPosition;\n\n\tfor ( const rect of rects ) {\n\t\tif ( boundaryVerticalPosition === undefined ) {\n\t\t\tboundaryVerticalPosition = Math.round( rect.bottom );\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Let's check if this rect is in new line.\n\t\tif ( Math.round( rect.top ) >= boundaryVerticalPosition ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tboundaryVerticalPosition = Math.max( boundaryVerticalPosition, Math.round( rect.bottom ) );\n\t}\n\n\treturn true;\n}\n\nfunction selectionWillShrink( selection: DocumentSelection, isForward: boolean ) {\n\treturn !selection.isCollapsed && selection.isBackward == isForward;\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/widget\n */\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\n\nimport {\n\tMouseObserver,\n\tTreeWalker,\n\ttype DomEventData,\n\ttype DowncastSelectionEvent,\n\ttype DowncastWriter,\n\ttype Element,\n\ttype Node,\n\ttype ViewDocumentArrowKeyEvent,\n\ttype ViewDocumentMouseDownEvent,\n\ttype ViewElement,\n\ttype Schema,\n\ttype Position,\n\ttype EditingView,\n\ttype ViewDocumentTabEvent,\n\ttype ViewDocumentKeyDownEvent,\n\ttype ViewNode,\n\ttype ViewRange\n} from '@ckeditor/ckeditor5-engine';\n\nimport { Delete, type ViewDocumentDeleteEvent } from '@ckeditor/ckeditor5-typing';\n\nimport {\n\tenv,\n\tkeyCodes,\n\tgetLocalizedArrowKeyCodeDirection,\n\tgetRangeFromMouseEvent,\n\ttype EventInfo,\n\ttype KeystrokeInfo\n} from '@ckeditor/ckeditor5-utils';\n\nimport WidgetTypeAround from './widgettypearound/widgettypearound.js';\nimport verticalNavigationHandler from './verticalnavigation.js';\nimport { getLabel, isWidget, WIDGET_SELECTED_CLASS_NAME } from './utils.js';\n\nimport '../theme/widget.css';\n\n/**\n * The widget plugin. It enables base support for widgets.\n *\n * See {@glink api/widget package page} for more details and documentation.\n *\n * This plugin enables multiple behaviors required by widgets:\n *\n * * The model to view selection converter for the editing pipeline (it handles widget custom selection rendering).\n * If a converted selection wraps around a widget element, that selection is marked as\n * {@link module:engine/view/selection~Selection#isFake fake}. Additionally, the `ck-widget_selected` CSS class\n * is added to indicate that widget has been selected.\n * * The mouse and keyboard events handling on and around widget elements.\n */\nexport default class Widget extends Plugin {\n\t/**\n\t * Holds previously selected widgets.\n\t */\n\tprivate _previouslySelected = new Set<ViewElement>();\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Widget' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\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// Some of DOM elements have no view element representation so it may be null.\n\t\tif ( !element ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If triple click should select entire paragraph.\n\t\tif ( domEventData.domEvent.detail >= 3 ) {\n\t\t\tif ( this._selectBlockContent( element ) ) {\n\t\t\t\tdomEventData.preventDefault();\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// If target is not a widget element - check if one of the ancestors is.\n\t\tif ( !isWidget( element ) ) {\n\t\t\tconst editableOrWidgetElement = findClosestEditableOrWidgetAncestor( element );\n\n\t\t\tif ( !editableOrWidgetElement ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isWidget( editableOrWidgetElement ) ) {\n\t\t\t\telement = editableOrWidgetElement;\n\t\t\t} else {\n\t\t\t\t// Pick view range from the point where the mouse was clicked.\n\t\t\t\tconst clickTargetFromPoint = getElementFromMouseEvent( view, domEventData );\n\n\t\t\t\tif ( clickTargetFromPoint && isWidget( clickTargetFromPoint ) ) {\n\t\t\t\t\telement = clickTargetFromPoint;\n\t\t\t\t} else {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// On Android selection would jump to the first table cell, on other devices\n\t\t// we can't block it (and don't need to) because of drag and drop support.\n\t\tif ( env.isAndroid ) {\n\t\t\tdomEventData.preventDefault();\n\t\t}\n\n\t\t// Focus editor if is not focused already.\n\t\tif ( !viewDocument.isFocused ) {\n\t\t\tview.focus();\n\t\t}\n\n\t\t// Create model selection over widget.\n\t\tconst modelElement = editor.editing.mapper.toModelElement( element );\n\n\t\tthis._setSelectionOverElement( modelElement! );\n\t}\n\n\t/**\n\t * Selects entire block content, e.g. on triple click it selects entire paragraph.\n\t */\n\tprivate _selectBlockContent( element: ViewElement ): boolean {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst mapper = editor.editing.mapper;\n\t\tconst schema = model.schema;\n\n\t\tconst viewElement = mapper.findMappedViewAncestor( this.editor.editing.view.createPositionAt( element, 0 ) );\n\t\tconst modelElement = findTextBlockAncestor( mapper.toModelElement( viewElement )!, model.schema );\n\n\t\tif ( !modelElement ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tmodel.change( writer => {\n\t\t\tconst nextTextBlock = !schema.isLimit( modelElement ) ?\n\t\t\t\tfindNextTextBlock( writer.createPositionAfter( modelElement ), schema ) :\n\t\t\t\tnull;\n\n\t\t\tconst start = writer.createPositionAt( modelElement, 0 );\n\t\t\tconst end = nextTextBlock ?\n\t\t\t\twriter.createPositionAt( nextTextBlock, 0 ) :\n\t\t\t\twriter.createPositionAt( modelElement, 'end' );\n\n\t\t\twriter.setSelection( writer.createRange( start, end ) );\n\t\t} );\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Handles {@link module:engine/view/document~Document#event:keydown keydown} events and changes\n\t * the model selection when:\n\t *\n\t * * arrow key is pressed when the widget is selected,\n\t * * the selection is next to a widget and the widget should become selected upon the arrow key press.\n\t *\n\t * See {@link #_preventDefaultOnArrowKeyPress}.\n\t */\n\tprivate _handleSelectionChangeOnArrowKeyPress( eventInfo: EventInfo, domEventData: DomEventData & KeystrokeInfo ) {\n\t\tconst keyCode = domEventData.keyCode;\n\n\t\tconst model = this.editor.model;\n\t\tconst schema = model.schema;\n\t\tconst modelSelection = model.document.selection;\n\t\tconst objectElement = modelSelection.getSelectedElement();\n\t\tconst direction = getLocalizedArrowKeyCodeDirection( keyCode, this.editor.locale.contentLanguageDirection );\n\t\tconst isForward = direction == 'down' || direction == 'right';\n\t\tconst isVerticalNavigation = direction == 'up' || direction == 'down';\n\n\t\t// If object element is selected.\n\t\tif ( objectElement && schema.isObject( objectElement ) ) {\n\t\t\tconst position = isForward ? modelSelection.getLastPosition() : modelSelection.getFirstPosition();\n\t\t\tconst newRange = schema.getNearestSelectionRange( position!, isForward ? 'forward' : 'backward' );\n\n\t\t\tif ( newRange ) {\n\t\t\t\tmodel.change( writer => {\n\t\t\t\t\twriter.setSelection( newRange );\n\t\t\t\t} );\n\n\t\t\t\tdomEventData.preventDefault();\n\t\t\t\teventInfo.stop();\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Handle collapsing of the selection when there is any widget on the edge of selection.\n\t\t// This is needed because browsers have problems with collapsing such selection.\n\t\tif ( !modelSelection.isCollapsed && !domEventData.shiftKey ) {\n\t\t\tconst firstPosition = modelSelection.getFirstPosition();\n\t\t\tconst lastPosition = modelSelection.getLastPosition();\n\n\t\t\tconst firstSelectedNode = firstPosition!.nodeAfter;\n\t\t\tconst lastSelectedNode = lastPosition!.nodeBefore;\n\n\t\t\tif ( firstSelectedNode && schema.isObject( firstSelectedNode ) || lastSelectedNode && schema.isObject( lastSelectedNode ) ) {\n\t\t\t\tmodel.change( writer => {\n\t\t\t\t\twriter.setSelection( isForward ? lastPosition : firstPosition );\n\t\t\t\t} );\n\n\t\t\t\tdomEventData.preventDefault();\n\t\t\t\teventInfo.stop();\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Return if not collapsed.\n\t\tif ( !modelSelection.isCollapsed ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If selection is next to object element.\n\n\t\tconst objectElementNextToSelection = this._getObjectElementNextToSelection( isForward );\n\n\t\tif ( objectElementNextToSelection && schema.isObject( objectElementNextToSelection ) ) {\n\t\t\t// Do not select an inline widget while handling up/down arrow.\n\t\t\tif ( schema.isInline( objectElementNextToSelection ) && isVerticalNavigation ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._setSelectionOverElement( objectElementNextToSelection );\n\n\t\t\tdomEventData.preventDefault();\n\t\t\teventInfo.stop();\n\t\t}\n\t}\n\n\t/**\n\t * Handles {@link module:engine/view/document~Document#event:keydown keydown} events and prevents\n\t * the default browser behavior to make sure the fake selection is not being moved from a fake selection\n\t * container.\n\t *\n\t * See {@link #_handleSelectionChangeOnArrowKeyPress}.\n\t */\n\tprivate _preventDefaultOnArrowKeyPress( eventInfo: EventInfo, domEventData: DomEventData ) {\n\t\tconst model = this.editor.model;\n\t\tconst schema = model.schema;\n\t\tconst objectElement = model.document.selection.getSelectedElement();\n\n\t\t// If object element is selected.\n\t\tif ( objectElement && schema.isObject( objectElement ) ) {\n\t\t\tdomEventData.preventDefault();\n\t\t\teventInfo.stop();\n\t\t}\n\t}\n\n\t/**\n\t * Handles delete keys: backspace and delete.\n\t *\n\t * @param isForward Set to true if delete was performed in forward direction.\n\t * @returns Returns `true` if keys were handled correctly.\n\t */\n\tprivate _handleDelete( isForward: boolean ) {\n\t\tconst modelDocument = this.editor.model.document;\n\t\tconst modelSelection = modelDocument.selection;\n\n\t\t// Do nothing when the read only mode is enabled.\n\t\tif ( !this.editor.model.canEditAt( modelSelection ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Do nothing on non-collapsed selection.\n\t\tif ( !modelSelection.isCollapsed ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst objectElement = this._getObjectElementNextToSelection( isForward );\n\n\t\tif ( objectElement ) {\n\t\t\tthis.editor.model.change( writer => {\n\t\t\t\tlet previousNode = modelSelection.anchor!.parent;\n\n\t\t\t\t// Remove previous element if empty.\n\t\t\t\twhile ( previousNode.isEmpty ) {\n\t\t\t\t\tconst nodeToRemove = previousNode;\n\t\t\t\t\tpreviousNode = nodeToRemove.parent!;\n\n\t\t\t\t\twriter.remove( nodeToRemove as Element );\n\t\t\t\t}\n\n\t\t\t\tthis._setSelectionOverElement( objectElement );\n\t\t\t} );\n\n\t\t\treturn true;\n\t\t}\n\t}\n\n\t/**\n\t * Sets {@link module:engine/model/selection~Selection document's selection} over given element.\n\t *\n\t * @internal\n\t */\n\tpublic _setSelectionOverElement( element: Node ): void {\n\t\tthis.editor.model.change( writer => {\n\t\t\twriter.setSelection( writer.createRangeOn( element ) );\n\t\t} );\n\t}\n\n\t/**\n\t * Checks if {@link module:engine/model/element~Element element} placed next to the current\n\t * {@link module:engine/model/selection~Selection model selection} exists and is marked in\n\t * {@link module:engine/model/schema~Schema schema} as `object`.\n\t *\n\t * @internal\n\t * @param forward Direction of checking.\n\t */\n\tpublic _getObjectElementNextToSelection( forward: boolean ): Element | null {\n\t\tconst model = this.editor.model;\n\t\tconst schema = model.schema;\n\t\tconst modelSelection = model.document.selection;\n\n\t\t// Clone current selection to use it as a probe. We must leave default selection as it is so it can return\n\t\t// to its current state after undo.\n\t\tconst probe = model.createSelection( modelSelection );\n\t\tmodel.modifySelection( probe, { direction: forward ? 'forward' : 'backward' } );\n\n\t\t// The selection didn't change so there is nothing there.\n\t\tif ( probe.isEqual( modelSelection ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst objectElement = forward ? probe.focus!.nodeBefore : probe.focus!.nodeAfter;\n\n\t\tif ( !!objectElement && schema.isObject( objectElement ) ) {\n\t\t\treturn objectElement as Element;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Removes CSS class from previously selected widgets.\n\t */\n\tprivate _clearPreviouslySelectedWidgets( writer: DowncastWriter ) {\n\t\tfor ( const widget of this._previouslySelected ) {\n\t\t\twriter.removeClass( WIDGET_SELECTED_CLASS_NAME, widget );\n\t\t}\n\n\t\tthis._previouslySelected.clear();\n\t}\n\n\t/**\n\t * Moves the document selection into the first nested editable.\n\t */\n\tprivate _selectFirstNestedEditable(): boolean {\n\t\tconst editor = this.editor;\n\t\tconst view = this.editor.editing.view;\n\t\tconst viewDocument = view.document;\n\n\t\tfor ( const item of viewDocument.selection.getFirstRange()!.getItems() ) {\n\t\t\tif ( item.is( 'editableElement' ) ) {\n\t\t\t\tconst modelElement = editor.editing.mapper.toModelElement( item );\n\n\t\t\t\t/* istanbul ignore next -- @preserve */\n\t\t\t\tif ( !modelElement ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst position = editor.model.createPositionAt( modelElement, 0 );\n\t\t\t\tconst newRange = editor.model.schema.getNearestSelectionRange( position, 'forward' );\n\n\t\t\t\teditor.model.change( writer => {\n\t\t\t\t\twriter.setSelection( newRange );\n\t\t\t\t} );\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Updates the document selection so that it selects first ancestor widget.\n\t */\n\tprivate _selectAncestorWidget(): boolean {\n\t\tconst editor = this.editor;\n\t\tconst mapper = editor.editing.mapper;\n\t\tconst selection = editor.editing.view.document.selection;\n\n\t\tconst positionParent = selection.getFirstPosition()!.parent;\n\n\t\tconst positionParentElement = positionParent.is( '$text' ) ?\n\t\t\tpositionParent.parent as ViewElement :\n\t\t\tpositionParent as ViewElement;\n\n\t\tconst viewElement = positionParentElement.findAncestor( isWidget );\n\n\t\tif ( !viewElement ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst modelElement = mapper.toModelElement( viewElement );\n\n\t\t/* istanbul ignore next -- @preserve */\n\t\tif ( !modelElement ) {\n\t\t\treturn false;\n\t\t}\n\n\t\teditor.model.change( writer => {\n\t\t\twriter.setSelection( modelElement, 'on' );\n\t\t} );\n\n\t\treturn true;\n\t}\n}\n\n/**\n * Finds the closest ancestor element that is either an editable element or a widget.\n *\n * @param element The element from which to start searching.\n * @returns The closest ancestor element that is either an editable element or a widget, or null if none is found.\n */\nfunction findClosestEditableOrWidgetAncestor( element: ViewElement ): ViewElement | null {\n\tlet currentElement: ViewElement | null = element;\n\n\twhile ( currentElement ) {\n\t\tif ( currentElement.is( 'editableElement' ) || isWidget( currentElement ) ) {\n\t\t\treturn currentElement;\n\t\t}\n\n\t\tcurrentElement = currentElement.parent as ViewElement | null;\n\t}\n\n\treturn null;\n}\n\n/**\n * Retrieves the ViewElement associated with a mouse event in the editing view.\n *\n * @param view The editing view.\n * @param domEventData The DOM event data containing the mouse event.\n * @returns The ViewElement associated with the mouse event, or null if not found.\n */\nfunction getElementFromMouseEvent( view: EditingView, domEventData: DomEventData<MouseEvent> ): ViewElement | null {\n\tconst domRange = getRangeFromMouseEvent( domEventData.domEvent );\n\tlet viewRange: ViewRange | null = null;\n\n\tif ( domRange ) {\n\t\tviewRange = view.domConverter.domRangeToView( domRange );\n\t} else {\n\t\t// Fallback to create range in target element. It happens frequently on Safari browser.\n\t\t// See more: https://github.com/ckeditor/ckeditor5/issues/16978\n\t\tviewRange = view.createRange( view.createPositionAt( domEventData.target, 0 ) );\n\t}\n\n\tif ( !viewRange ) {\n\t\treturn null;\n\t}\n\n\tconst viewPosition = viewRange.start;\n\n\tif ( !viewPosition.parent ) {\n\t\treturn null;\n\t}\n\n\tlet viewNode = viewPosition.parent;\n\n\tif ( viewPosition.parent.is( 'editableElement' ) ) {\n\t\tif ( viewPosition.isAtEnd && viewPosition.nodeBefore ) {\n\t\t\t// Click after a widget tend to return position at the end of the editable element\n\t\t\t// so use the node before it if range is at the end of a parent.\n\t\t\tviewNode = viewPosition.nodeBefore as ViewNode;\n\t\t} else if ( viewPosition.isAtStart && viewPosition.nodeAfter ) {\n\t\t\t// Click before a widget tend to return position at the start of the editable element\n\t\t\t// so use the node after it if range is at the start of a parent.\n\t\t\t// See more: https://github.com/ckeditor/ckeditor5/issues/16992\n\t\t\tviewNode = viewPosition.nodeAfter as ViewNode;\n\t\t}\n\t}\n\n\tif ( viewNode.is( '$text' ) ) {\n\t\treturn viewNode.parent as ViewElement;\n\t}\n\n\treturn viewNode as ViewElement;\n}\n\n/**\n * Checks whether the specified `element` is a child of the `parent` element.\n *\n * @param element An element to check.\n * @param parent A parent for the element.\n */\nfunction isChild( element: ViewElement, parent: ViewElement | null ) {\n\tif ( !parent ) {\n\t\treturn false;\n\t}\n\n\treturn Array.from( element.getAncestors() ).includes( parent );\n}\n\n/**\n * Returns nearest text block ancestor.\n */\nfunction findTextBlockAncestor( modelElement: Element, schema: Schema ): Element | null {\n\tfor ( const element of modelElement.getAncestors( { includeSelf: true, parentFirst: true } ) ) {\n\t\tif ( schema.checkChild( element as Element, '$text' ) ) {\n\t\t\treturn element as Element;\n\t\t}\n\n\t\t// Do not go beyond nested editable.\n\t\tif ( schema.isLimit( element ) && !schema.isObject( element ) ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn null;\n}\n\n/**\n * Returns next text block where could put selection.\n */\nfunction findNextTextBlock( position: Position, schema: Schema ): Element | null {\n\tconst treeWalker = new TreeWalker( { startPosition: position } );\n\n\tfor ( const { item } of treeWalker ) {\n\t\tif ( schema.isLimit( item ) || !item.is( 'element' ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( schema.checkChild( item, '$text' ) ) {\n\t\t\treturn item;\n\t\t}\n\t}\n\n\treturn null;\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/widgettoolbarrepository\n */\n\nimport {\n\tPlugin,\n\ttype Editor,\n\ttype ToolbarConfigItem\n} from '@ckeditor/ckeditor5-core';\n\nimport type { ViewDocumentSelection, ViewElement } from '@ckeditor/ckeditor5-engine';\n\nimport {\n\tBalloonPanelView,\n\tContextualBalloon,\n\tToolbarView,\n\ttype BalloonToolbar,\n\ttype BalloonToolbarShowEvent,\n\ttype EditorUIUpdateEvent\n} from '@ckeditor/ckeditor5-ui';\n\nimport {\n\tCKEditorError,\n\tlogWarning,\n\ttype ObservableChangeEvent,\n\ttype RectSource\n} from '@ckeditor/ckeditor5-utils';\n\nimport { isWidget } from './utils.js';\n\n/**\n * Widget toolbar repository plugin. A central point for registering widget toolbars. This plugin handles the whole\n * toolbar rendering process and exposes a concise API.\n *\n * To add a toolbar for your widget use the {@link ~WidgetToolbarRepository#register `WidgetToolbarRepository#register()`} method.\n *\n * The following example comes from the {@link module:image/imagetoolbar~ImageToolbar} plugin:\n *\n * ```ts\n * class ImageToolbar extends Plugin {\n * \tstatic get requires() {\n * \t\treturn [ WidgetToolbarRepository ];\n * \t}\n *\n * \tafterInit() {\n * \t\tconst editor = this.editor;\n * \t\tconst widgetToolbarRepository = editor.plugins.get( WidgetToolbarRepository );\n *\n * \t\twidgetToolbarRepository.register( 'image', {\n * \t\t\titems: editor.config.get( 'image.toolbar' ),\n * \t\t\tgetRelatedElement: getClosestSelectedImageWidget\n * \t\t} );\n * \t}\n * }\n * ```\n */\nexport default class WidgetToolbarRepository extends Plugin {\n\t/**\n\t * A map of toolbar definitions.\n\t */\n\tprivate _toolbarDefinitions = new Map<string, WidgetRepositoryToolbarDefinition>();\n\n\tprivate _balloon!: ContextualBalloon;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ContextualBalloon ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'WidgetToolbarRepository' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\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 static override get isOfficialPlugin(): true {\n\t\treturn true;\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"]}