{"version":3,"sources":["webpack:///./node_modules/@ckeditor/ckeditor5-widget/theme/icons/drag-handle.svg","webpack:///./node_modules/@ckeditor/ckeditor5-widget/src/highlightstack.js","webpack:///./node_modules/@ckeditor/ckeditor5-widget/src/utils.js","webpack:///./node_modules/@ckeditor/ckeditor5-widget/src/widgettypearound/utils.js","webpack:///./node_modules/@ckeditor/ckeditor5-widget/src/widgettypearound/widgettypearound.js","webpack:///./node_modules/@ckeditor/ckeditor5-widget/src/verticalnavigation.js","webpack:///./node_modules/@ckeditor/ckeditor5-widget/src/widget.js","webpack:///./node_modules/@ckeditor/ckeditor5-widget/src/widgettoolbarrepository.js","webpack:///./node_modules/@ckeditor/ckeditor5-widget/src/widgetresize/resizerstate.js","webpack:///./node_modules/@ckeditor/ckeditor5-widget/src/widgetresize/resizer.js","webpack:///./node_modules/@ckeditor/ckeditor5-widget/src/widgetresize.js","webpack:///./node_modules/@ckeditor/ckeditor5-widget/src/index.js","webpack:///./node_modules/@ckeditor/ckeditor5-widget/theme/icons/return-arrow.svg"],"names":["module","exports","HighlightStack","this","_stack","descriptor","writer","stack","oldTop","_insertDescriptor","newTop","compareDescriptors","fire","oldDescriptor","newDescriptor","id","_removeDescriptor","index","findIndex","item","splice","i","shouldABeBeforeB","a","b","priority","classesToString","classes","Array","isArray","sort","join","mix","EmitterMixin","WIDGET_CLASS_NAME","WIDGET_SELECTED_CLASS_NAME","isWidget","node","is","getCustomProperty","toWidget","element","options","CKEditorError","setAttribute","addClass","setCustomProperty","getFillerOffset","label","setLabel","hasSelectionHandle","addSelectionHandle","setHighlightHandling","toArray","removeClass","add","remove","on","evt","data","labelOrCreator","getLabel","labelCreator","toWidgetEditable","editable","isReadOnly","property","findOptimalInsertionPosition","selection","model","selectedElement","getSelectedElement","typeAroundFakeCaretPosition","getTypeAroundFakeCaretPosition","createPositionAt","schema","isBlock","createPositionAfter","firstBlock","getSelectedBlocks","next","value","isEmpty","positionAfter","focus","isTouching","createPositionBefore","checkSelectionOnObject","isObject","centeredBalloonPositionForLongWidgets","widgetRect","balloonRect","viewportRect","Rect","global","window","viewportWidgetInsersectionRect","getIntersection","balloonTotalHeight","height","BalloonPanelView","arrowVerticalOffset","top","bottom","targetRect","left","width","Math","max","name","widgetElement","selectionHandle","createUIElement","class","domDocument","domElement","toDomElement","icon","IconView","set","dragHandleIcon","render","appendChild","insert","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","editor","_currentFakeCaretModelElement","editingView","editing","view","isEnabled","change","document","roots","root","removeSelectionAttribute","_enableTypeAroundUIInjection","_enableInsertingParagraphsOnButtonClick","_enableInsertingParagraphsOnEnterKeypress","_enableInsertingParagraphsOnTypingKeystroke","_enableTypeAroundFakeCaretActivationUsingKeyboardArrows","_enableDeleteIntegration","_enableInsertContentIntegration","widgetModelElement","position","execute","scrollToTheSelection","emitter","event","callback","listenTo","modelSelection","selectedModelElement","_insertParagraph","t","locale","buttonTitles","before","after","downcastDispatcher","conversionApi","mapper","toViewElement","injectUIIntoWidget","positionToWidgetCssClass","_listenToIfEnabled","domEventData","isArrowKeyCode","keyCode","_handleArrowKeyPress","priorities","get","directChange","selectedViewElement","map","ui","focusTracker","isFocused","shouldStopAndPreventDefault","isForward","isForwardArrowKeyCode","contentLanguageDirection","toModelElement","_handleArrowKeyPressOnSelectedWidget","isCollapsed","_handleArrowKeyPressWhenSelectionNextToAWidget","preventDefault","stop","setSelectionAttribute","isLeavingWidget","widgetPlugin","plugins","modelElementNextToSelection","_getObjectElementNextToSelection","viewElementNextToSelection","_setSelectionOverElement","button","domTarget","buttonPosition","widgetViewElement","wasHandled","_insertParagraphAccordingToFakeCaretPosition","isSoft","keyCodesHandledSomewhereElse","keyCodes","enter","delete","backspace","includes","isNonTypingKeystroke","direction","selectedModelWidget","isFakeCaretBefore","isDeleteForward","shouldDeleteEntireWidget","createSelection","range","getNearestSelectionRange","probe","start","modifySelection","isEqual","deepestEmptyRangeAncestor","getDeepestEmptyElementAncestor","parent","deleteContent","doNotAutoparagraph","setSelection","documentSelection","content","selectable","result","insertContent","Plugin","viewWriter","typeAroundWrapper","wrapperDomElement","injectButtons","injectFakeCaret","buttonTemplate","Template","tag","attributes","title","children","ownerDocument","importNode","caretTemplate","deepestEmptyAncestor","getAncestors","parentFirst","ancestor","childCount","isLimit","verticalNavigationHandler","arrowUpPressed","arrowup","arrowDownPressed","arrowdown","expandSelection","shiftKey","selectionWillShrink","findTextRangeFromSelection","isSingleLineRange","newPosition","end","newSelection","anchor","setFocus","stopPropagation","startPosition","getLastPosition","endPosition","getNearestNonInlineLimit","createRange","lastRangePosition","getNearestTextPosition","isBefore","getFirstPosition","firstRangePosition","isAfter","createRangeIn","walkerValueType","getWalker","previousPosition","type","checkChild","nextPosition","modelRange","isAtEnd","boundaryVerticalPosition","viewRange","toViewRange","domRange","viewRangeToDom","rects","getDomRangeRects","rect","undefined","round","isBackward","Widget","viewDocument","_previouslySelected","Set","_clearPreviouslySelectedWidgets","viewSelection","lastMarked","getRanges","isChild","fake","addObserver","MouseObserver","_onMousedown","_handleSelectionChangeOnArrowKeyPress","_preventDefaultOnArrowKeyPress","_handleDelete","eventInfo","target","isInsideNestedEditable","env","isSafari","isGecko","domEvent","detail","findAncestor","objectElement","newRange","objectElementNextToSelection","modelDocument","previousNode","nodeToRemove","createRangeOn","forward","nodeBefore","nodeAfter","widget","clear","from","WidgetToolbarRepository","has","balloonToolbar","isWidgetSelected","_toolbarDefinitions","Map","_balloon","_updateToolbarsVisibility","values","toolbarConfig","destroy","toolbarId","ariaLabel","items","getRelatedElement","balloonClassName","length","toolbarView","ToolbarView","fillFromConfig","componentFactory","logWarning","maxRelatedElementDepth","deepestRelatedElement","deepestToolbarDefinition","definition","relatedElement","relatedElementDepth","_isToolbarVisible","_hideToolbar","_isToolbarInBalloon","_showToolbar","toolbarDefinition","stopListening","repositionContextualBalloon","getBalloonPositionData","toolbar","visibleView","hasView","ContextualBalloon","balloon","updatePosition","defaultPositions","mapViewToDom","positions","northArrowSouth","northArrowSouthWest","northArrowSouthEast","southArrowNorth","southArrowNorthWest","southArrowNorthEast","ResizeState","_options","_referenceCoordinates","domResizeHandle","domHandleHost","domResizeHost","clientRect","activeHandlePosition","getHandlePosition","getAbsoluteBoundaryPoint","getOppositePosition","originalWidth","originalHeight","aspectRatio","widthStyle","style","match","originalWidthPercents","parseFloat","calculateHostPercentageWidth","newSize","proposedWidth","proposedHeight","proposedWidthPercents","widthPercents","proposedHandleHostWidth","handleHostWidth","proposedHandleHostHeight","handleHostHeight","resizeHostRect","domResizeHostParent","parentElement","parentWidth","defaultView","getComputedStyle","resizerPosition","elementRect","positionParts","split","ret","x","right","y","scrollX","scrollY","getResizerHandleClass","domHandle","resizerPositions","parts","replacements","ObservableMixin","Resizer","_domResizerWrapper","_viewResizerWrapper","decorate","state","_cleanup","redraw","that","viewResizerWrapper","_appendHandles","_appendSizeUI","propName","newValue","display","_sizeUI","bindToState","_initialViewWidth","getStyle","begin","_getHandleHost","_getResizeHost","_proposeNewSize","unit","newWidth","setStyle","domHandleHostRect","domResizeHostRect","update","onCommit","cancel","handleHostRect","domWrapper","existsInDom","newDimensions","widgetWrapper","handleHost","resizerWrapper","currentDimensions","isSameNode","offsetWidth","offsetHeight","offsetLeft","offsetTop","compareArrays","dismiss","isVisible","currentCoordinates","extractCoordinates","isCentered","enlargement","endsWith","proposedSize","abs","dominant","targetSize","min","getResizeHost","getHandleHost","currentPosition","getResizerClass","sizeUI","SizeView","bind","bindTemplate","setTemplate","to","if","visible","text","resizerState","unbind","View","pageX","pageY","WidgetResize","_resizers","setAttributeProperties","isFormatting","_observer","Object","create","DomEmitterMixin","_mouseDownListener","_mouseMoveListener","_mouseUpListener","redrawFocusedResizer","visibleResizer","redrawFocusedResizerThrottled","throttle","getResizerByViewElement","resizer","attach","widgetToolbarRepository","forceDisabled","clearForceDisabled","containsHandle","resizeHandle","isResizeHandle","_activeResizer","_getResizerByHandle","updateSize","commit"],"mappings":"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","file":"js/chunk-vendors~1611e805.53674c7d.js","sourcesContent":["module.exports = \"\"","/**\n * @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. 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 from '@ckeditor/ckeditor5-utils/src/emittermixin';\nimport mix from '@ckeditor/ckeditor5-utils/src/mix';\n\n/**\n * Class used to handle correct order of highlights on elements.\n *\n * When different highlights are applied to same element 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 {\n\t/**\n\t * Creates class instance.\n\t */\n\tconstructor() {\n\t\tthis._stack = [];\n\t}\n\n\t/**\n\t * Adds highlight descriptor to the stack.\n\t *\n\t * @fires change:top\n\t * @param {module:engine/conversion/downcasthelpers~HighlightDescriptor} descriptor\n\t * @param {module:engine/view/downcastwriter~DowncastWriter} writer\n\t */\n\tadd( descriptor, writer ) {\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( '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 {String} id Id of the descriptor to remove.\n\t * @param {module:engine/view/downcastwriter~DowncastWriter} writer\n\t */\n\tremove( id, writer ) {\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( '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 given descriptor in correct place in the stack. It also takes care about updating information when\n\t * descriptor with same id is already present.\n\t *\n\t * @private\n\t * @param {module:engine/conversion/downcasthelpers~HighlightDescriptor} descriptor\n\t */\n\t_insertDescriptor( descriptor ) {\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 have 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 * @private\n\t * @param {String} id Descriptor's id.\n\t */\n\t_removeDescriptor( id ) {\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\nmix( HighlightStack, EmitterMixin );\n\n// Compares two descriptors by checking their priority and class list.\n//\n// @param {module:engine/conversion/downcasthelpers~HighlightDescriptor} a\n// @param {module:engine/conversion/downcasthelpers~HighlightDescriptor} b\n// @returns {Boolean} Returns true if both descriptors are defined and have same priority and classes.\nfunction compareDescriptors( a, b ) {\n\treturn 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//\n// @param {module:engine/conversion/downcasthelpers~HighlightDescriptor} a\n// @param {module:engine/conversion/downcasthelpers~HighlightDescriptor} b\n// @returns {Boolean}\nfunction shouldABeBeforeB( a, b ) {\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// Converts CSS classes passed with {@link module:engine/conversion/downcasthelpers~HighlightDescriptor} to\n// sorted string.\n//\n// @param {String|Array} descriptor\n// @returns {String}\nfunction classesToString( classes ) {\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 * @event change:top\n * @param {Object} data Additional information about the change.\n * @param {module:engine/conversion/downcasthelpers~HighlightDescriptor} [data.newDescriptor] New highlight\n * descriptor. It will be `undefined` when last descriptor is removed from the stack.\n * @param {module:engine/conversion/downcasthelpers~HighlightDescriptor} [data.oldDescriptor] Old highlight\n * descriptor. It will be `undefined` when first descriptor is added to the stack.\n * @param {module:engine/view/downcastwriter~DowncastWriter} writer View writer that can be used to modify element.\n */\n","/**\n * @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. 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 BalloonPanelView from '@ckeditor/ckeditor5-ui/src/panel/balloon/balloonpanelview';\n\nimport global from '@ckeditor/ckeditor5-utils/src/dom/global';\nimport Rect from '@ckeditor/ckeditor5-utils/src/dom/rect';\nimport CKEditorError from '@ckeditor/ckeditor5-utils/src/ckeditorerror';\nimport toArray from '@ckeditor/ckeditor5-utils/src/toarray';\n\nimport HighlightStack from './highlightstack';\nimport { getTypeAroundFakeCaretPosition } from './widgettypearound/utils';\n\nimport IconView from '@ckeditor/ckeditor5-ui/src/icon/iconview';\nimport dragHandleIcon from '../theme/icons/drag-handle.svg';\n\n/**\n * CSS class added to each widget element.\n *\n * @const {String}\n */\nexport const WIDGET_CLASS_NAME = 'ck-widget';\n\n/**\n * CSS class added to currently selected widget element.\n *\n * @const {String}\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 *\n * @param {module:engine/view/node~Node} node\n * @returns {Boolean}\n */\nexport function isWidget( node ) {\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 `` model element to `
` in the view, you can define\n * such converters:\n *\n *\t\teditor.conversion.for( 'editingDowncast' )\n *\t\t\t.elementToElement( {\n *\t\t\t\tmodel: 'widget',\n *\t\t\t\tview: ( modelItem, { writer } ) => {\n *\t\t\t\t\tconst div = writer.createContainerElement( 'div', { class: 'widget' } );\n *\n *\t\t\t\t\treturn toWidget( div, writer, { label: 'some widget' } );\n *\t\t\t\t}\n *\t\t\t} );\n *\n *\t\teditor.conversion.for( 'dataDowncast' )\n *\t\t\t.elementToElement( {\n *\t\t\t\tmodel: 'widget',\n *\t\t\t\tview: ( modelItem, { writer } ) => {\n *\t\t\t\t\treturn writer.createContainerElement( 'div', { class: 'widget' } );\n *\t\t\t\t}\n *\t\t\t} );\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 {module:engine/view/element~Element} element\n * @param {module:engine/view/downcastwriter~DowncastWriter} writer\n * @param {Object} [options={}]\n * @param {String|Function} [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 {Boolean} [options.hasSelectionHandle=false] If `true`, the widget will have a selection handle added.\n * @returns {module:engine/view/element~Element} Returns the same element.\n */\nexport function toWidget( element, writer, options = {} ) {\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 {String} 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\tif ( options.label ) {\n\t\tsetLabel( element, options.label, writer );\n\t}\n\n\tif ( options.hasSelectionHandle ) {\n\t\taddSelectionHandle( element, writer );\n\t}\n\n\tsetHighlightHandling(\n\t\telement,\n\t\twriter,\n\t\t( element, descriptor, writer ) => writer.addClass( toArray( descriptor.classes ), element ),\n\t\t( element, descriptor, writer ) => writer.removeClass( toArray( descriptor.classes ), element )\n\t);\n\n\treturn element;\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 *\n * @param {module:engine/view/element~Element} element\n * @param {module:engine/view/downcastwriter~DowncastWriter} writer\n * @param {Function} add\n * @param {Function} remove\n */\nexport function setHighlightHandling( element, writer, add, remove ) {\n\tconst stack = new HighlightStack();\n\n\tstack.on( '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\twriter.setCustomProperty( 'addHighlight', ( element, descriptor, writer ) => stack.add( descriptor, writer ), element );\n\twriter.setCustomProperty( 'removeHighlight', ( element, id, writer ) => stack.remove( id, writer ), 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 *\n * @param {module:engine/view/element~Element} element\n * @param {String|Function} labelOrCreator\n * @param {module:engine/view/downcastwriter~DowncastWriter} writer\n */\nexport function setLabel( element, labelOrCreator, writer ) {\n\twriter.setCustomProperty( 'widgetLabel', labelOrCreator, element );\n}\n\n/**\n * Returns the label of the provided element.\n *\n * @param {module:engine/view/element~Element} element\n * @returns {String}\n */\nexport function getLabel( element ) {\n\tconst labelCreator = element.getCustomProperty( 'widgetLabel' );\n\n\tif ( !labelCreator ) {\n\t\treturn '';\n\t}\n\n\treturn typeof labelCreator == 'function' ? labelCreator() : labelCreator;\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 *\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 `` model element to `
` in the view, you can define\n * such converters:\n *\n *\t\teditor.conversion.for( 'editingDowncast' )\n *\t\t\t.elementToElement( {\n *\t\t\t\tmodel: 'nested',\n *\t\t\t\tview: ( modelItem, { writer } ) => {\n *\t\t\t\t\tconst div = writer.createEditableElement( 'div', { class: 'nested' } );\n *\n *\t\t\t\t\treturn toWidgetEditable( nested, writer );\n *\t\t\t\t}\n *\t\t\t} );\n *\n *\t\teditor.conversion.for( 'dataDowncast' )\n *\t\t\t.elementToElement( {\n *\t\t\t\tmodel: 'nested',\n *\t\t\t\tview: ( modelItem, { writer } ) => {\n *\t\t\t\t\treturn writer.createContainerElement( 'div', { class: 'nested' } );\n *\t\t\t\t}\n *\t\t\t} );\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 {module:engine/view/editableelement~EditableElement} editable\n * @param {module:engine/view/downcastwriter~DowncastWriter} writer\n * @returns {module:engine/view/editableelement~EditableElement} Returns the same element that was provided in the `editable` parameter\n */\nexport function toWidgetEditable( editable, writer ) {\n\twriter.addClass( [ 'ck-editor__editable', 'ck-editor__nested-editable' ], editable );\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( 'change:isReadOnly', ( evt, property, is ) => {\n\t\twriter.setAttribute( 'contenteditable', is ? 'false' : 'true', editable );\n\t} );\n\n\teditable.on( '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\treturn editable;\n}\n\n/**\n * Returns a model position 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 position 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 position after this paragraph will be returned.\n *\n * Note: If the selection is placed in an empty block, that block will be returned. If that position\n * is then passed to {@link module:engine/model/model~Model#insertContent},\n * the block will be fully replaced by the image.\n *\n * @param {module:engine/model/selection~Selection|module:engine/model/documentselection~DocumentSelection} selection\n * The selection based on which the insertion position should be calculated.\n * @param {module:engine/model/model~Model} model Model instance.\n * @returns {module:engine/model/position~Position} The optimal position.\n */\nexport function findOptimalInsertionPosition( selection, model ) {\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.createPositionAt( selectedElement, typeAroundFakeCaretPosition );\n\t\t}\n\n\t\tif ( model.schema.isBlock( selectedElement ) ) {\n\t\t\treturn model.createPositionAfter( selectedElement );\n\t\t}\n\t}\n\n\tconst firstBlock = selection.getSelectedBlocks().next().value;\n\n\tif ( firstBlock ) {\n\t\t// If inserting into an empty block – return position in that block. It will get\n\t\t// replaced with the image by insertContent(). #42.\n\t\tif ( firstBlock.isEmpty ) {\n\t\t\treturn model.createPositionAt( firstBlock, 0 );\n\t\t}\n\n\t\tconst positionAfter = model.createPositionAfter( firstBlock );\n\n\t\t// If selection is at the end of the block - return position after the block.\n\t\tif ( selection.focus.isTouching( positionAfter ) ) {\n\t\t\treturn positionAfter;\n\t\t}\n\n\t\t// Otherwise return position before the block.\n\t\treturn model.createPositionBefore( firstBlock );\n\t}\n\n\treturn selection.focus;\n}\n\n/**\n * Checks if the selection is on an object.\n *\n * @param {module:engine/model/selection~Selection|module:engine/model/documentselection~DocumentSelection} selection\n * @param {module:engine/model/schema~Schema} schema\n * @returns {Boolean}\n*/\nexport function checkSelectionOnObject( selection, schema ) {\n\tconst selectedElement = selection.getSelectedElement();\n\n\treturn !!selectedElement && schema.isObject( selectedElement );\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 *\t\t// Model:\n *\t\t\n *\n *\t\t// View:\n *\t\tname\n *\n * In such case, view positions inside `` cannot be correct mapped to the model (because the model element is empty).\n * To handle mapping positions inside `` to the model use this util as follows:\n *\n *\t\teditor.editing.mapper.on(\n *\t\t\t'viewToModelPosition',\n *\t\t\tviewToModelPositionOutsideModelElement( model, viewElement => viewElement.hasClass( 'placeholder' ) )\n *\t\t);\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 *\t\t// View:\n *\t\t
foo name| bar
\n *\n *\t\t// Model:\n *\t\tfoo | bar\n *\n * 2. When the position is at the beginning of the inline widget:\n *\n *\t\t// View:\n *\t\t
foo |name bar
\n *\n *\t\t// Model:\n *\t\tfoo | bar\n *\n * @param {module:engine/model/model~Model} model Model instance on which the callback operates.\n * @param {Function} 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 * @return {Function}\n */\nexport function viewToModelPositionOutsideModelElement( model, viewElementMatcher ) {\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 * A positioning function passed to the {@link module:utils/dom/position~getOptimalPosition} helper as a last resort\n * when attaching {@link module:ui/panel/balloon/balloonpanelview~BalloonPanelView balloon UI} to widgets.\n * It comes in handy when a widget is longer than the visual viewport of the web browser and/or upper/lower boundaries\n * of a widget are off screen because of the web page scroll.\n *\n *\t ┌─┄┄┄┄┄┄┄┄┄Widget┄┄┄┄┄┄┄┄┄┐\n *\t ┊ ┊\n *\t┌────────────Viewport───────────┐ ┌──╁─────────Viewport────────╁──┐\n *\t│ ┏━━━━━━━━━━Widget━━━━━━━━━┓ │ │ ┃ ^ ┃ │\n *\t│ ┃ ^ ┃ │ │ ┃ ╭───────/ \\───────╮ ┃ │\n *\t│ ┃ ╭───────/ \\───────╮ ┃ │ │ ┃ │ Balloon │ ┃ │\n *\t│ ┃ │ Balloon │ ┃ │ │ ┃ ╰─────────────────╯ ┃ │\n *\t│ ┃ ╰─────────────────╯ ┃ │ │ ┃ ┃ │\n *\t│ ┃ ┃ │ │ ┃ ┃ │\n *\t│ ┃ ┃ │ │ ┃ ┃ │\n *\t│ ┃ ┃ │ │ ┃ ┃ │\n *\t│ ┃ ┃ │ │ ┃ ┃ │\n *\t│ ┃ ┃ │ │ ┃ ┃ │\n *\t│ ┃ ┃ │ │ ┃ ┃ │\n *\t└──╀─────────────────────────╀──┘ └──╀─────────────────────────╀──┘\n *\t ┊ ┊ ┊ ┊\n *\t ┊ ┊ └┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┘\n *\t ┊ ┊\n *\t └┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┘\n *\n * **Note**: Works best if used together with\n * {@link module:ui/panel/balloon/balloonpanelview~BalloonPanelView.defaultPositions default `BalloonPanelView` positions}\n * like `northArrowSouth` and `southArrowNorth`; the transition between these two and this position is smooth.\n *\n * @param {module:utils/dom/rect~Rect} widgetRect A rect of the widget.\n * @param {module:utils/dom/rect~Rect} balloonRect A rect of the balloon.\n * @returns {module:utils/dom/position~Position|null}\n */\nexport function centeredBalloonPositionForLongWidgets( widgetRect, balloonRect ) {\n\tconst viewportRect = new Rect( global.window );\n\tconst viewportWidgetInsersectionRect = viewportRect.getIntersection( widgetRect );\n\n\tconst balloonTotalHeight = balloonRect.height + BalloonPanelView.arrowVerticalOffset;\n\n\t// If there is enough space above or below the widget then this position should not be used.\n\tif ( widgetRect.top - balloonTotalHeight > viewportRect.top || widgetRect.bottom + balloonTotalHeight < viewportRect.bottom ) {\n\t\treturn null;\n\t}\n\n\t// Because this is a last resort positioning, to keep things simple we're not playing with positions of the arrow\n\t// like, for instance, \"south west\" or whatever. Just try to keep the balloon in the middle of the visible area of\n\t// the widget for as long as it is possible. If the widgets becomes invisible (because cropped by the viewport),\n\t// just... place the balloon in the middle of it (because why not?).\n\tconst targetRect = viewportWidgetInsersectionRect || widgetRect;\n\tconst left = targetRect.left + targetRect.width / 2 - balloonRect.width / 2;\n\n\treturn {\n\t\ttop: Math.max( widgetRect.top, 0 ) + BalloonPanelView.arrowVerticalOffset,\n\t\tleft,\n\t\tname: 'arrow_n'\n\t};\n}\n\n// Default filler offset function applied to all widget elements.\n//\n// @returns {null}\nfunction getFillerOffset() {\n\treturn null;\n}\n\n// Adds a drag handle to the widget.\n//\n// @param {module:engine/view/containerelement~ContainerElement}\n// @param {module:engine/view/downcastwriter~DowncastWriter} writer\nfunction addSelectionHandle( widgetElement, writer ) {\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 * @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. 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';\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 *\n * @param {module:engine/view/element~Element} viewElement\n * @param {module:engine/model/element~Element} modelElement\n * @param {module:engine/model/schema~Schema} schema\n * @returns {Boolean}\n */\nexport function isTypeAroundWidget( viewElement, modelElement, schema ) {\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 *\n * @param {HTMLElement} domElement\n * @returns {HTMLElement|null}\n */\nexport function getClosestTypeAroundDomButton( domElement ) {\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 * @param {HTMLElement} domElement\n * @returns {'before'|'after'} The position of the button.\n */\nexport function getTypeAroundButtonPosition( domElement ) {\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 *\n * @param {HTMLElement} domElement\n * @param {module:engine/view/domconverter~DomConverter} domConverter\n * @returns {module:engine/view/element~Element}\n */\nexport function getClosestWidgetViewElement( domElement, domConverter ) {\n\tconst widgetDomElement = domElement.closest( '.ck-widget' );\n\n\treturn domConverter.mapDomToView( widgetDomElement );\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 * @param {module:engine/model/selection~Selection|module:engine/model/documentselection~DocumentSelection} selection\n * @returns {'before'|'after'|null} The position of the fake caret or `null` when none is present.\n */\nexport function getTypeAroundFakeCaretPosition( selection ) {\n\treturn selection.getAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE );\n}\n","/**\n * @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. 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\n */\n\nimport Plugin from '@ckeditor/ckeditor5-core/src/plugin';\nimport Template from '@ckeditor/ckeditor5-ui/src/template';\nimport {\n\tisArrowKeyCode,\n\tisForwardArrowKeyCode,\n\tkeyCodes\n} from '@ckeditor/ckeditor5-utils/src/keyboard';\nimport priorities from '@ckeditor/ckeditor5-utils/src/priorities';\n\nimport {\n\tisTypeAroundWidget,\n\tgetClosestTypeAroundDomButton,\n\tgetTypeAroundButtonPosition,\n\tgetClosestWidgetViewElement,\n\tgetTypeAroundFakeCaretPosition,\n\tTYPE_AROUND_SELECTION_ATTRIBUTE\n} from './utils';\n\nimport {\n\tisNonTypingKeystroke\n} from '@ckeditor/ckeditor5-typing/src/utils/injectunsafekeystrokeshandling';\n\nimport returnIcon from '../../theme/icons/return-arrow.svg';\nimport '../../theme/widgettypearound.css';\n\nconst POSSIBLE_INSERTION_POSITIONS = [ 'before', 'after' ];\n\n// Do the SVG parsing once and then clone the result