{"version":3,"sources":["webpack:///./node_modules/@ckeditor/ckeditor5-utils/src/dom/istext.js","webpack:///./node_modules/@ckeditor/ckeditor5-utils/src/dom/getdatafromelement.js","webpack:///./node_modules/@ckeditor/ckeditor5-utils/src/config.js","webpack:///./node_modules/@ckeditor/ckeditor5-utils/src/dom/indexof.js","webpack:///./node_modules/@ckeditor/ckeditor5-utils/src/diff.js","webpack:///./node_modules/@ckeditor/ckeditor5-undo/theme/icons/redo.svg","webpack:///./node_modules/@ckeditor/ckeditor5-utils/src/dom/createelement.js","webpack:///./node_modules/@ckeditor/ckeditor5-utils/src/dom/isnode.js","webpack:///./node_modules/@ckeditor/ckeditor5-utils/src/collection.js","webpack:///./node_modules/@ckeditor/ckeditor5-utils/src/dom/getborderwidths.js","webpack:///./node_modules/@ckeditor/ckeditor5-utils/src/dom/remove.js","webpack:///./node_modules/@ckeditor/ckeditor5-utils/src/dom/tounit.js","webpack:///./node_modules/@ckeditor/ckeditor5-utils/src/dom/scroll.js","webpack:///./node_modules/@ckeditor/ckeditor5-utils/src/dom/getpositionedancestor.js","webpack:///./node_modules/@ckeditor/ckeditor5-utils/src/dom/position.js","webpack:///./node_modules/@ckeditor/ckeditor5-utils/src/dom/getcommonancestor.js","webpack:///./node_modules/@ckeditor/ckeditor5-utils/src/dom/global.js","webpack:///./node_modules/@ckeditor/ckeditor5-utils/src/dom/insertat.js","webpack:///./node_modules/@ckeditor/ckeditor5-utils/src/difftochanges.js","webpack:///./node_modules/@ckeditor/ckeditor5-utils/src/dom/iswindow.js","webpack:///./node_modules/@ckeditor/ckeditor5-utils/src/dom/rect.js","webpack:///./node_modules/@ckeditor/ckeditor5-upload/src/filereader.js","webpack:///./node_modules/@ckeditor/ckeditor5-upload/src/filerepository.js","webpack:///./node_modules/@ckeditor/ckeditor5-upload/src/ui/filedialogbuttonview.js","webpack:///./node_modules/@ckeditor/ckeditor5-upload/src/adapters/base64uploadadapter.js","webpack:///./node_modules/@ckeditor/ckeditor5-upload/src/adapters/simpleuploadadapter.js","webpack:///./node_modules/@ckeditor/ckeditor5-upload/src/index.js","webpack:///./node_modules/@ckeditor/ckeditor5-utils/src/dom/getancestors.js","webpack:///./node_modules/@ckeditor/ckeditor5-utils/src/dom/setdatainelement.js","webpack:///./node_modules/@ckeditor/ckeditor5-utils/src/emittermixin.js","webpack:///./node_modules/@ckeditor/ckeditor5-utils/src/dom/isrange.js","webpack:///./node_modules/@ckeditor/ckeditor5-utils/src/comparearrays.js","webpack:///./node_modules/@ckeditor/ckeditor5-utils/src/count.js","webpack:///./node_modules/@ckeditor/ckeditor5-utils/src/dom/resizeobserver.js","webpack:///./node_modules/@ckeditor/ckeditor5-utils/src/dom/emittermixin.js","webpack:///./node_modules/@ckeditor/ckeditor5-utils/src/ckeditorerror.js","webpack:///./node_modules/@ckeditor/ckeditor5-undo/theme/icons/undo.svg"],"names":["isText","obj","Object","prototype","toString","call","getDataFromElement","el","HTMLTextAreaElement","value","innerHTML","Config","configurations","defaultConfigurations","this","_config","define","cloneConfig","_setObjectToTarget","name","_setToTarget","isDefine","_getFromSource","keys","target","isPlainObject","parts","split","pop","part","source","undefined","configuration","forEach","key","cloneDeepWith","leaveDOMReferences","isElement","indexOf","node","index","previousSibling","diff","a","b","cmp","_insert","_delete","aLength","length","bLength","fastDiff","tmp","m","n","delta","es","fp","snake","k","y1","y2","dir","slice","push","y","Math","max","x","p","module","exports","createElement","doc","attributes","children","namespace","xmlns","element","createElementNS","setAttribute","isString","isIterable","child","createTextNode","appendChild","isNode","defaultView","Document","ownerDocument","Node","Collection","initialItemsOrOptions","options","hasInitialItems","_items","_itemMap","Map","_idProperty","idProperty","_bindToExternalToInternalMap","WeakMap","_bindToInternalToExternalMap","_skippedIndexesFromExternal","item","set","_getItemIdBeforeAdding","addMany","items","CKEditorError","offset","itemId","currentItemIndex","splice","fire","added","removed","idOrIndex","get","itemOrId","has","id","subject","_remove","callback","ctx","map","find","filter","_bindToCollection","stopListening","removedItems","Array","from","externalCollection","as","Class","_setUpBindToBinding","using","callbackOrProperty","factory","addItem","evt","externalItem","isExternalBoundToThis","externalItemBound","finalIndex","skipped","add","i","getIndex","listenTo","remove","reduce","result","uid","itemDoesNotExist","delete","Symbol","iterator","mix","EmitterMixin","getBorderWidths","style","getComputedStyle","top","parseInt","borderTopWidth","right","borderRightWidth","bottom","borderBottomWidth","left","borderLeftWidth","parent","parentNode","removeChild","toUnit","unit","utils","scrollViewportToShowTarget","viewportOffset","targetWindow","getWindow","currentWindow","currentFrame","firstAncestorToScroll","getParentElement","scrollAncestorsToShowRect","getRectRelativeToWindow","targetRect","scrollWindowToShowRect","frameElement","scrollAncestorsToShowTarget","targetParent","Rect","window","rect","targetShiftedDownRect","clone","moveBy","targetShiftedUpRect","viewportRect","excludeScrollbarsAndBorders","rects","every","contains","scrollX","scrollY","isAbove","isBelow","isLeftOf","isRightOf","scrollTo","getRect","parentRect","parentWindow","document","body","scrollTop","scrollLeft","firstRect","secondRect","elementOrRange","isRange","startContainer","commonAncestorContainer","relativeWindow","frame","frameRect","assign","getPositionedAncestor","offsetParent","global","getOptimalPosition","positions","limiter","fitInViewport","isFunction","bestPositionRect","bestPositionName","positionedElementAncestor","elementRect","limiterRect","getVisible","bestPosition","getBestPositionNameAndRect","getPositionNameAndRect","absoluteRectCoordinates","getAbsoluteRectCoordinates","shiftRectCoordinatesDueToPositionedAncestor","position","positionData","moveTo","elementRectArea","getArea","processedPositions","processPositionsToAreas","processedPositionsInViewport","viewportIntersectArea","bestPositionData","getBestOfProcessedPositions","positionName","positionRect","limiterIntersectArea","limiterViewportIntersectRect","getIntersection","getIntersectionArea","processedPosition","maxFitFactor","fitFactor","ancestorPosition","ancestorBorderWidths","getCommonAncestor","nodeA","nodeB","ancestorsA","getAncestors","ancestorsB","insertAt","parentElement","nodeToInsert","insertBefore","childNodes","diffToChanges","output","lastOperation","changes","change","pushLast","isContinuationOf","values","type","howMany","expected","isWindow","stringifiedObject","apply","rectProperties","isSourceRange","defineProperty","_source","writable","enumerable","rangeRects","getDomRangeRects","copyRectProperties","getBoundingRect","getBoundingClientRect","innerWidth","innerHeight","width","height","anotherRect","min","visibleRect","isBody","intersectionRect","prop","intersectRect","isEqual","scrollBarWidth","scrollBarHeight","direction","documentElement","clientWidth","clientHeight","borderWidths","offsetWidth","offsetHeight","range","clientRects","getClientRects","boundingRectData","Number","POSITIVE_INFINITY","NEGATIVE_INFINITY","rectangleCount","FileReader","reader","_reader","_data","onprogress","loaded","file","total","size","Promise","resolve","reject","onload","onerror","onabort","readAsDataURL","abort","error","ObservableMixin","FileRepository","loaders","on","_updatePendingAction","_loadersMap","_pendingAction","bind","to","uploaded","fileOrPromise","createUploadAdapter","logWarning","loader","FileLoader","then","catch","aggregatedUploaded","aggregatedTotal","uploadTotal","fileOrPromiseOrLoader","getLoader","_destroy","pendingActions","editor","plugins","PendingActions","t","getMessage","uploadedPercent","Plugin","filePromise","uploadAdapterCreator","_filePromiseWrapper","_createFilePromiseWrapper","_adapter","status","read","data","err","upload","uploadResponse","isFulfilled","promise","rejecter","wrapper","FileDialogButtonView","locale","buttonView","ButtonView","_fileInputView","FileInputView","delegate","setTemplate","tag","class","open","focus","View","bindTemplate","tabindex","accept","multiple","files","click","Adapter","addEventListener","default","_initRequest","_initListeners","_sendRequest","xhr","XMLHttpRequest","uploadUrl","responseType","genericErrorText","response","message","url","urls","lengthComputable","headers","withCredentials","headerName","setRequestHeader","FormData","append","send","nodes","nodeType","DOCUMENT_NODE","unshift","setDataInElement","_listeningTo","_emitterId","event","once","wasFired","onceCallback","off","args","emitter","emitterInfo","eventCallbacks","emitters","_getEmitterId","_setEmitterId","emitterId","callbacks","createEventNamespace","lists","getCallbacksListsForNamespace","priority","priorities","callbackDefinition","removeCallback","eventOrInfo","eventInfo","EventInfo","getCallbacksForEvent","path","callbackArgs","called","stop","_delegations","destinations","passAllDestinations","fireDelegatedEvents","return","rethrowUnexpectedError","events","nameOrFunction","eventName","stopDelegating","clear","_getEmitterListenedTo","listeningEmitter","listenedToEmitterId","getEvents","_events","makeEventNode","childEvents","childEventName","newEventNodes","substr","lastIndexOf","eventNode","callbacksLists","childCallbacksLists","concat","fireArgs","delegatedInfo","compareArrays","minLen","count","RESIZE_CHECK_INTERVAL","ResizeObserver","_observerInstance","_createObserver","_element","_callback","_addElementCallback","observe","_deleteElementCallback","_elementCallbacks","Set","_getElementCallbacks","unobserve","ObserverConstructor","ResizeObserverPolyfill","entries","entry","_elements","_previousRects","_periodicCheckTimeout","_checkElementRectsAndExecuteCallback","_startPeriodicCheck","_stopPeriodicCheck","periodicCheck","setTimeout","clearTimeout","_hasRectChanged","contentRect","currentRect","previousRect","hasChanged","DomEmitterMixin","extend","rest","proxy","_getProxyEmitter","ProxyEmitter","attach","detach","getNodeUID","_domNode","_domListeners","listenerOptions","capture","useCapture","passive","usePassive","domListener","_createDomListener","removeListener","domEvt","removeEventListener","DOCUMENTATION_URL","errorName","context","JSON","stringify","getLinkToDocumentationMessage","is","stack","Error","console","warn","formatConsoleArguments","documentationMessage"],"mappings":"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","file":"js/chunk-vendors~466de864.aa7a031a.js","sourcesContent":["/**\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 utils/dom/istext\n */\n\n/**\n * Checks if the object is a native DOM Text node.\n *\n * @param {*} obj\n * @returns {Boolean}\n */\nexport default function isText( obj ) {\n\treturn Object.prototype.toString.call( obj ) == '[object Text]';\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/* globals HTMLTextAreaElement */\n\n/**\n * @module utils/dom/getdatafromelement\n */\n\n/**\n * Gets data from a given source element.\n *\n * @param {HTMLElement} el The element from which the data will be retrieved.\n * @returns {String} The data string.\n */\nexport default function getDataFromElement( el ) {\n\tif ( el instanceof HTMLTextAreaElement ) {\n\t\treturn el.value;\n\t}\n\n\treturn el.innerHTML;\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 utils/config\n */\n\nimport { isPlainObject, isElement, cloneDeepWith } from 'lodash-es';\n\n/**\n * Handles a configuration dictionary.\n */\nexport default class Config {\n\t/**\n\t * Creates an instance of the {@link ~Config} class.\n\t *\n\t * @param {Object} [configurations] The initial configurations to be set. Usually, provided by the user.\n\t * @param {Object} [defaultConfigurations] The default configurations. Usually, provided by the system.\n\t */\n\tconstructor( configurations, defaultConfigurations ) {\n\t\t/**\n\t\t * Store for the whole configuration.\n\t\t *\n\t\t * @private\n\t\t * @member {Object}\n\t\t */\n\t\tthis._config = {};\n\n\t\t// Set default configuration.\n\t\tif ( defaultConfigurations ) {\n\t\t\t// Clone the configuration to make sure that the properties will not be shared\n\t\t\t// between editors and make the watchdog feature work correctly.\n\t\t\tthis.define( cloneConfig( defaultConfigurations ) );\n\t\t}\n\n\t\t// Set initial configuration.\n\t\tif ( configurations ) {\n\t\t\tthis._setObjectToTarget( this._config, configurations );\n\t\t}\n\t}\n\n\t/**\n\t * Set configuration values.\n\t *\n\t * It accepts both a name/value pair or an object, which properties and values will be used to set\n\t * configurations.\n\t *\n\t * It also accepts setting a \"deep configuration\" by using dots in the name. For example, `'resize.width'` sets\n\t * the value for the `width` configuration in the `resize` subset.\n\t *\n\t *\t\tconfig.set( 'width', 500 );\n\t *\t\tconfig.set( 'toolbar.collapsed', true );\n\t *\n\t *\t\t// Equivalent to:\n\t *\t\tconfig.set( {\n\t *\t\t\twidth: 500\n\t *\t\t\ttoolbar: {\n\t *\t\t\t\tcollapsed: true\n\t *\t\t\t}\n\t *\t\t} );\n\t *\n\t * Passing an object as the value will amend the configuration, not replace it.\n\t *\n\t *\t\tconfig.set( 'toolbar', {\n\t *\t\t\tcollapsed: true,\n\t *\t\t} );\n\t *\n\t *\t\tconfig.set( 'toolbar', {\n\t *\t\t\tcolor: 'red',\n\t *\t\t} );\n\t *\n\t *\t\tconfig.get( 'toolbar.collapsed' ); // true\n\t *\t\tconfig.get( 'toolbar.color' ); // 'red'\n\t *\n\t * @param {String|Object} name The configuration name or an object from which take properties as\n\t * configuration entries. Configuration names are case-sensitive.\n\t * @param {*} value The configuration value. Used if a name is passed.\n\t */\n\tset( name, value ) {\n\t\tthis._setToTarget( this._config, name, value );\n\t}\n\n\t/**\n\t * Does exactly the same as {@link #set} with one exception – passed configuration extends\n\t * existing one, but does not overwrite already defined values.\n\t *\n\t * This method is supposed to be called by plugin developers to setup plugin's configurations. It would be\n\t * rarely used for other needs.\n\t *\n\t * @param {String|Object} name The configuration name or an object from which take properties as\n\t * configuration entries. Configuration names are case-sensitive.\n\t * @param {*} value The configuration value. Used if a name is passed.\n\t */\n\tdefine( name, value ) {\n\t\tconst isDefine = true;\n\n\t\tthis._setToTarget( this._config, name, value, isDefine );\n\t}\n\n\t/**\n\t * Gets the value for a configuration entry.\n\t *\n\t *\t\tconfig.get( 'name' );\n\t *\n\t * Deep configurations can be retrieved by separating each part with a dot.\n\t *\n\t *\t\tconfig.get( 'toolbar.collapsed' );\n\t *\n\t * @param {String} name The configuration name. Configuration names are case-sensitive.\n\t * @returns {*} The configuration value or `undefined` if the configuration entry was not found.\n\t */\n\tget( name ) {\n\t\treturn this._getFromSource( this._config, name );\n\t}\n\n\t/**\n\t * Iterates over all top level configuration names.\n\t *\n\t * @returns {Iterable.}\n\t */\n\t* names() {\n\t\tfor ( const name of Object.keys( this._config ) ) {\n\t\t\tyield name;\n\t\t}\n\t}\n\n\t/**\n\t * Saves passed configuration to the specified target (nested object).\n\t *\n\t * @private\n\t * @param {Object} target Nested config object.\n\t * @param {String|Object} name The configuration name or an object from which take properties as\n\t * configuration entries. Configuration names are case-sensitive.\n\t * @param {*} value The configuration value. Used if a name is passed.\n\t * @param {Boolean} [isDefine=false] Define if passed configuration should overwrite existing one.\n\t */\n\t_setToTarget( target, name, value, isDefine = false ) {\n\t\t// In case of an object, iterate through it and call `_setToTarget` again for each property.\n\t\tif ( isPlainObject( name ) ) {\n\t\t\tthis._setObjectToTarget( target, name, isDefine );\n\n\t\t\treturn;\n\t\t}\n\n\t\t// The configuration name should be split into parts if it has dots. E.g. `resize.width` -> [`resize`, `width`].\n\t\tconst parts = name.split( '.' );\n\n\t\t// Take the name of the configuration out of the parts. E.g. `resize.width` -> `width`.\n\t\tname = parts.pop();\n\n\t\t// Iterate over parts to check if currently stored configuration has proper structure.\n\t\tfor ( const part of parts ) {\n\t\t\t// If there is no object for specified part then create one.\n\t\t\tif ( !isPlainObject( target[ part ] ) ) {\n\t\t\t\ttarget[ part ] = {};\n\t\t\t}\n\n\t\t\t// Nested object becomes a target.\n\t\t\ttarget = target[ part ];\n\t\t}\n\n\t\t// In case of value is an object.\n\t\tif ( isPlainObject( value ) ) {\n\t\t\t// We take care of proper config structure.\n\t\t\tif ( !isPlainObject( target[ name ] ) ) {\n\t\t\t\ttarget[ name ] = {};\n\t\t\t}\n\n\t\t\ttarget = target[ name ];\n\n\t\t\t// And iterate through this object calling `_setToTarget` again for each property.\n\t\t\tthis._setObjectToTarget( target, value, isDefine );\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Do nothing if we are defining configuration for non empty name.\n\t\tif ( isDefine && typeof target[ name ] != 'undefined' ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttarget[ name ] = value;\n\t}\n\n\t/**\n\t * Get specified configuration from specified source (nested object).\n\t *\n\t * @private\n\t * @param {Object} source level of nested object.\n\t * @param {String} name The configuration name. Configuration names are case-sensitive.\n\t * @returns {*} The configuration value or `undefined` if the configuration entry was not found.\n\t */\n\t_getFromSource( source, name ) {\n\t\t// The configuration name should be split into parts if it has dots. E.g. `resize.width` -> [`resize`, `width`].\n\t\tconst parts = name.split( '.' );\n\n\t\t// Take the name of the configuration out of the parts. E.g. `resize.width` -> `width`.\n\t\tname = parts.pop();\n\n\t\t// Iterate over parts to check if currently stored configuration has proper structure.\n\t\tfor ( const part of parts ) {\n\t\t\tif ( !isPlainObject( source[ part ] ) ) {\n\t\t\t\tsource = null;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// Nested object becomes a source.\n\t\t\tsource = source[ part ];\n\t\t}\n\n\t\t// Always returns undefined for non existing configuration.\n\t\treturn source ? cloneConfig( source[ name ] ) : undefined;\n\t}\n\n\t/**\n\t * Iterates through passed object and calls {@link #_setToTarget} method with object key and value for each property.\n\t *\n\t * @private\n\t * @param {Object} target Nested config object.\n\t * @param {Object} configuration Configuration data set\n\t * @param {Boolean} [isDefine] Defines if passed configuration is default configuration or not.\n\t */\n\t_setObjectToTarget( target, configuration, isDefine ) {\n\t\tObject.keys( configuration ).forEach( key => {\n\t\t\tthis._setToTarget( target, key, configuration[ key ], isDefine );\n\t\t} );\n\t}\n}\n\n// Clones configuration object or value.\n// @param {*} source Source configuration\n// @returns {*} Cloned configuration value.\nfunction cloneConfig( source ) {\n\treturn cloneDeepWith( source, leaveDOMReferences );\n}\n\n// A customized function for cloneDeepWith.\n// It will leave references to DOM Elements instead of cloning them.\n//\n// @param {*} value\n// @returns {Element|undefined}\nfunction leaveDOMReferences( value ) {\n\treturn isElement( value ) ? value : undefined;\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 utils/dom/indexof\n */\n\n/**\n * Returns index of the node in the parent element.\n *\n * @param {Node} node Node which index is tested.\n * @returns {Number} Index of the node in the parent element. Returns 0 if node has no parent.\n */\nexport default function indexOf( node ) {\n\tlet index = 0;\n\n\twhile ( node.previousSibling ) {\n\t\tnode = node.previousSibling;\n\t\tindex++;\n\t}\n\n\treturn index;\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 utils/diff\n */\n\nimport fastDiff from '../src/fastdiff';\n\n// The following code is based on the \"O(NP) Sequence Comparison Algorithm\"\n// by Sun Wu, Udi Manber, Gene Myers, Webb Miller.\n\n/**\n * Calculates the difference between two arrays or strings producing an array containing a list of changes\n * necessary to transform input into output.\n *\n *\t\tdiff( 'aba', 'acca' ); // [ 'equal', 'insert', 'insert', 'delete', 'equal' ]\n *\n * This function is based on the \"O(NP) Sequence Comparison Algorithm\" by Sun Wu, Udi Manber, Gene Myers, Webb Miller.\n * Unfortunately, while it gives the most precise results, its to complex for longer strings/arrow (above 200 items).\n * Therefore, `diff()` automatically switches to {@link module:utils/fastdiff~fastDiff `fastDiff()`} when detecting\n * such a scenario. The return formats of both functions are identical.\n *\n * @param {Array|String} a Input array or string.\n * @param {Array|String} b Output array or string.\n * @param {Function} [cmp] Optional function used to compare array values, by default === is used.\n * @returns {Array} Array of changes.\n */\nexport default function diff( a, b, cmp ) {\n\t// Set the comparator function.\n\tcmp = cmp || function( a, b ) {\n\t\treturn a === b;\n\t};\n\n\tconst aLength = a.length;\n\tconst bLength = b.length;\n\n\t// Perform `fastDiff` for longer strings/arrays (see #269).\n\tif ( aLength > 200 || bLength > 200 || aLength + bLength > 300 ) {\n\t\treturn diff.fastDiff( a, b, cmp, true );\n\t}\n\n\t// Temporary action type statics.\n\tlet _insert, _delete;\n\n\t// Swapped the arrays to use the shorter one as the first one.\n\tif ( bLength < aLength ) {\n\t\tconst tmp = a;\n\n\t\ta = b;\n\t\tb = tmp;\n\n\t\t// We swap the action types as well.\n\t\t_insert = 'delete';\n\t\t_delete = 'insert';\n\t} else {\n\t\t_insert = 'insert';\n\t\t_delete = 'delete';\n\t}\n\n\tconst m = a.length;\n\tconst n = b.length;\n\tconst delta = n - m;\n\n\t// Edit scripts, for each diagonal.\n\tconst es = {};\n\t// Furthest points, the furthest y we can get on each diagonal.\n\tconst fp = {};\n\n\tfunction snake( k ) {\n\t\t// We use -1 as an alternative below to handle initial values ( instead of filling the fp with -1 first ).\n\t\t// Furthest points (y) on the diagonal below k.\n\t\tconst y1 = ( fp[ k - 1 ] !== undefined ? fp[ k - 1 ] : -1 ) + 1;\n\t\t// Furthest points (y) on the diagonal above k.\n\t\tconst y2 = fp[ k + 1 ] !== undefined ? fp[ k + 1 ] : -1;\n\t\t// The way we should go to get further.\n\t\tconst dir = y1 > y2 ? -1 : 1;\n\n\t\t// Clone previous changes array (if any).\n\t\tif ( es[ k + dir ] ) {\n\t\t\tes[ k ] = es[ k + dir ].slice( 0 );\n\t\t}\n\n\t\t// Create changes array.\n\t\tif ( !es[ k ] ) {\n\t\t\tes[ k ] = [];\n\t\t}\n\n\t\t// Push the action.\n\t\tes[ k ].push( y1 > y2 ? _insert : _delete );\n\n\t\t// Set the beginning coordinates.\n\t\tlet y = Math.max( y1, y2 );\n\t\tlet x = y - k;\n\n\t\t// Traverse the diagonal as long as the values match.\n\t\twhile ( x < m && y < n && cmp( a[ x ], b[ y ] ) ) {\n\t\t\tx++;\n\t\t\ty++;\n\t\t\t// Push no change action.\n\t\t\tes[ k ].push( 'equal' );\n\t\t}\n\n\t\treturn y;\n\t}\n\n\tlet p = 0;\n\tlet k;\n\n\t// Traverse the graph until we reach the end of the longer string.\n\tdo {\n\t\t// Updates furthest points and edit scripts for diagonals below delta.\n\t\tfor ( k = -p; k < delta; k++ ) {\n\t\t\tfp[ k ] = snake( k );\n\t\t}\n\n\t\t// Updates furthest points and edit scripts for diagonals above delta.\n\t\tfor ( k = delta + p; k > delta; k-- ) {\n\t\t\tfp[ k ] = snake( k );\n\t\t}\n\n\t\t// Updates furthest point and edit script for the delta diagonal.\n\t\t// note that the delta diagonal is the one which goes through the sink (m, n).\n\t\tfp[ delta ] = snake( delta );\n\n\t\tp++;\n\t} while ( fp[ delta ] !== n );\n\n\t// Return the final list of edit changes.\n\t// We remove the first item that represents the action for the injected nulls.\n\treturn es[ delta ].slice( 1 );\n}\n\n// Store the API in static property to easily overwrite it in tests.\n// Too bad dependency injection does not work in Webpack + ES 6 (const) + Babel.\ndiff.fastDiff = fastDiff;\n","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 utils/dom/createelement\n */\n\nimport isIterable from '../isiterable';\nimport { isString } from 'lodash-es';\n\n/**\n * Creates element with attributes and children.\n *\n *\t\tcreateElement( document, 'p' ); //

\n *\t\tcreateElement( document, 'p', { class: 'foo' } ); //

\n *\t\tcreateElement( document, 'p', null, 'foo' ); //

foo

\n *\t\tcreateElement( document, 'p', null, [ 'foo', createElement( document, 'img' ) ] ); //

foo

\n *\n * @param {Document} doc Document used to create element.\n * @param {String} name Name of the element.\n * @param {Object} [attributes] Object keys will become attributes keys and object values will became attributes values.\n * @param {Node|String|Array.} [children] Child or array of children. Strings will be automatically turned\n * into Text nodes.\n * @returns {Element} Created element.\n */\nexport default function createElement( doc, name, attributes = {}, children = [] ) {\n\tconst namespace = attributes && attributes.xmlns;\n\tconst element = namespace ? doc.createElementNS( namespace, name ) : doc.createElement( name );\n\n\tfor ( const key in attributes ) {\n\t\telement.setAttribute( key, attributes[ key ] );\n\t}\n\n\tif ( isString( children ) || !isIterable( children ) ) {\n\t\tchildren = [ children ];\n\t}\n\n\tfor ( let child of children ) {\n\t\tif ( isString( child ) ) {\n\t\t\tchild = doc.createTextNode( child );\n\t\t}\n\n\t\telement.appendChild( child );\n\t}\n\n\treturn 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 utils/dom/isnode\n */\n\n/**\n * Checks if the object is a native DOM Node.\n *\n * @param {*} obj\n * @returns {Boolean}\n */\nexport default function isNode( obj ) {\n\tif ( obj ) {\n\t\tif ( obj.defaultView ) {\n\t\t\treturn obj instanceof obj.defaultView.Document;\n\t\t} else if ( obj.ownerDocument && obj.ownerDocument.defaultView ) {\n\t\t\treturn obj instanceof obj.ownerDocument.defaultView.Node;\n\t\t}\n\t}\n\n\treturn false;\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 utils/collection\n */\n\nimport EmitterMixin from './emittermixin';\nimport CKEditorError from './ckeditorerror';\nimport uid from './uid';\nimport isIterable from './isiterable';\nimport mix from './mix';\n\n/**\n * Collections are ordered sets of objects. Items in the collection can be retrieved by their indexes\n * in the collection (like in an array) or by their ids.\n *\n * If an object without an `id` property is being added to the collection, the `id` property will be generated\n * automatically. Note that the automatically generated id is unique only within this single collection instance.\n *\n * By default an item in the collection is identified by its `id` property. The name of the identifier can be\n * configured through the constructor of the collection.\n *\n * @mixes module:utils/emittermixin~EmitterMixin\n */\nexport default class Collection {\n\t/**\n\t * Creates a new Collection instance.\n\t *\n\t * You can provide an iterable of initial items the collection will be created with:\n\t *\n\t *\t\tconst collection = new Collection( [ { id: 'John' }, { id: 'Mike' } ] );\n\t *\n\t *\t\tconsole.log( collection.get( 0 ) ); // -> { id: 'John' }\n\t *\t\tconsole.log( collection.get( 1 ) ); // -> { id: 'Mike' }\n\t *\t\tconsole.log( collection.get( 'Mike' ) ); // -> { id: 'Mike' }\n\t *\n\t * Or you can first create a collection and then add new items using the {@link #add} method:\n\t *\n\t *\t\tconst collection = new Collection();\n\t *\n\t *\t\tcollection.add( { id: 'John' } );\n\t *\t\tconsole.log( collection.get( 0 ) ); // -> { id: 'John' }\n\t *\n\t * Whatever option you choose, you can always pass a configuration object as the last argument\n\t * of the constructor:\n\t *\n\t *\t\tconst emptyCollection = new Collection( { idProperty: 'name' } );\n\t *\t\temptyCollection.add( { name: 'John' } );\n\t *\t\tconsole.log( collection.get( 'John' ) ); // -> { name: 'John' }\n\t *\n\t *\t\tconst nonEmptyCollection = new Collection( [ { name: 'John' } ], { idProperty: 'name' } );\n\t *\t\tnonEmptyCollection.add( { name: 'George' } );\n\t *\t\tconsole.log( collection.get( 'George' ) ); // -> { name: 'George' }\n\t *\t\tconsole.log( collection.get( 'John' ) ); // -> { name: 'John' }\n\t *\n\t * @param {Iterable.|Object} initialItemsOrOptions The initial items of the collection or\n\t * the options object.\n\t * @param {Object} [options={}] The options object, when the first argument is an array of initial items.\n\t * @param {String} [options.idProperty='id'] The name of the property which is used to identify an item.\n\t * Items that do not have such a property will be assigned one when added to the collection.\n\t */\n\tconstructor( initialItemsOrOptions = {}, options = {} ) {\n\t\tconst hasInitialItems = isIterable( initialItemsOrOptions );\n\n\t\tif ( !hasInitialItems ) {\n\t\t\toptions = initialItemsOrOptions;\n\t\t}\n\n\t\t/**\n\t\t * The internal list of items in the collection.\n\t\t *\n\t\t * @private\n\t\t * @member {Object[]}\n\t\t */\n\t\tthis._items = [];\n\n\t\t/**\n\t\t * The internal map of items in the collection.\n\t\t *\n\t\t * @private\n\t\t * @member {Map}\n\t\t */\n\t\tthis._itemMap = new Map();\n\n\t\t/**\n\t\t * The name of the property which is considered to identify an item.\n\t\t *\n\t\t * @private\n\t\t * @member {String}\n\t\t */\n\t\tthis._idProperty = options.idProperty || 'id';\n\n\t\t/**\n\t\t * A helper mapping external items of a bound collection ({@link #bindTo})\n\t\t * and actual items of this collection. It provides information\n\t\t * necessary to properly remove items bound to another collection.\n\t\t *\n\t\t * See {@link #_bindToInternalToExternalMap}.\n\t\t *\n\t\t * @protected\n\t\t * @member {WeakMap}\n\t\t */\n\t\tthis._bindToExternalToInternalMap = new WeakMap();\n\n\t\t/**\n\t\t * A helper mapping items of this collection to external items of a bound collection\n\t\t * ({@link #bindTo}). It provides information necessary to manage the bindings, e.g.\n\t\t * to avoid loops in two–way bindings.\n\t\t *\n\t\t * See {@link #_bindToExternalToInternalMap}.\n\t\t *\n\t\t * @protected\n\t\t * @member {WeakMap}\n\t\t */\n\t\tthis._bindToInternalToExternalMap = new WeakMap();\n\n\t\t/**\n\t\t * Stores indexes of skipped items from bound external collection.\n\t\t *\n\t\t * @private\n\t\t * @member {Array}\n\t\t */\n\t\tthis._skippedIndexesFromExternal = [];\n\n\t\t// Set the initial content of the collection (if provided in the constructor).\n\t\tif ( hasInitialItems ) {\n\t\t\tfor ( const item of initialItemsOrOptions ) {\n\t\t\t\tthis._items.push( item );\n\t\t\t\tthis._itemMap.set( this._getItemIdBeforeAdding( item ), item );\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * A collection instance this collection is bound to as a result\n\t\t * of calling {@link #bindTo} method.\n\t\t *\n\t\t * @protected\n\t\t * @member {module:utils/collection~Collection} #_bindToCollection\n\t\t */\n\t}\n\n\t/**\n\t * The number of items available in the collection.\n\t *\n\t * @member {Number} #length\n\t */\n\tget length() {\n\t\treturn this._items.length;\n\t}\n\n\t/**\n\t * Returns the first item from the collection or null when collection is empty.\n\t *\n\t * @returns {Object|null} The first item or `null` if collection is empty.\n\t */\n\tget first() {\n\t\treturn this._items[ 0 ] || null;\n\t}\n\n\t/**\n\t * Returns the last item from the collection or null when collection is empty.\n\t *\n\t * @returns {Object|null} The last item or `null` if collection is empty.\n\t */\n\tget last() {\n\t\treturn this._items[ this.length - 1 ] || null;\n\t}\n\n\t/**\n\t * Adds an item into the collection.\n\t *\n\t * If the item does not have an id, then it will be automatically generated and set on the item.\n\t *\n\t * @chainable\n\t * @param {Object} item\n\t * @param {Number} [index] The position of the item in the collection. The item\n\t * is pushed to the collection when `index` not specified.\n\t * @fires add\n\t * @fires change\n\t */\n\tadd( item, index ) {\n\t\treturn this.addMany( [ item ], index );\n\t}\n\n\t/**\n\t * Adds multiple items into the collection.\n\t *\n\t * Any item not containing an id will get an automatically generated one.\n\t *\n\t * @chainable\n\t * @param {Iterable.} item\n\t * @param {Number} [index] The position of the insertion. Items will be appended if no `index` is specified.\n\t * @fires add\n\t * @fires change\n\t */\n\taddMany( items, index ) {\n\t\tif ( index === undefined ) {\n\t\t\tindex = this._items.length;\n\t\t} else if ( index > this._items.length || index < 0 ) {\n\t\t\t/**\n\t\t\t * The `index` passed to {@link module:utils/collection~Collection#addMany `Collection#addMany()`}\n\t\t\t * is invalid. It must be a number between 0 and the collection's length.\n\t\t\t *\n\t\t\t * @error collection-add-item-invalid-index\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'collection-add-item-invalid-index', this );\n\t\t}\n\n\t\tfor ( let offset = 0; offset < items.length; offset++ ) {\n\t\t\tconst item = items[ offset ];\n\t\t\tconst itemId = this._getItemIdBeforeAdding( item );\n\t\t\tconst currentItemIndex = index + offset;\n\n\t\t\tthis._items.splice( currentItemIndex, 0, item );\n\t\t\tthis._itemMap.set( itemId, item );\n\n\t\t\tthis.fire( 'add', item, currentItemIndex );\n\t\t}\n\n\t\tthis.fire( 'change', {\n\t\t\tadded: items,\n\t\t\tremoved: [],\n\t\t\tindex\n\t\t} );\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Gets an item by its ID or index.\n\t *\n\t * @param {String|Number} idOrIndex The item ID or index in the collection.\n\t * @returns {Object|null} The requested item or `null` if such item does not exist.\n\t */\n\tget( idOrIndex ) {\n\t\tlet item;\n\n\t\tif ( typeof idOrIndex == 'string' ) {\n\t\t\titem = this._itemMap.get( idOrIndex );\n\t\t} else if ( typeof idOrIndex == 'number' ) {\n\t\t\titem = this._items[ idOrIndex ];\n\t\t} else {\n\t\t\t/**\n\t\t\t * An index or ID must be given.\n\t\t\t *\n\t\t\t * @error collection-get-invalid-arg\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'collection-get-invalid-arg', this );\n\t\t}\n\n\t\treturn item || null;\n\t}\n\n\t/**\n\t * Returns a Boolean indicating whether the collection contains an item.\n\t *\n\t * @param {Object|String} itemOrId The item or its ID in the collection.\n\t * @returns {Boolean} `true` if the collection contains the item, `false` otherwise.\n\t */\n\thas( itemOrId ) {\n\t\tif ( typeof itemOrId == 'string' ) {\n\t\t\treturn this._itemMap.has( itemOrId );\n\t\t} else { // Object\n\t\t\tconst idProperty = this._idProperty;\n\t\t\tconst id = itemOrId[ idProperty ];\n\n\t\t\treturn this._itemMap.has( id );\n\t\t}\n\t}\n\n\t/**\n\t * Gets an index of an item in the collection.\n\t * When an item is not defined in the collection, the index will equal -1.\n\t *\n\t * @param {Object|String} itemOrId The item or its ID in the collection.\n\t * @returns {Number} The index of a given item.\n\t */\n\tgetIndex( itemOrId ) {\n\t\tlet item;\n\n\t\tif ( typeof itemOrId == 'string' ) {\n\t\t\titem = this._itemMap.get( itemOrId );\n\t\t} else {\n\t\t\titem = itemOrId;\n\t\t}\n\n\t\treturn this._items.indexOf( item );\n\t}\n\n\t/**\n\t * Removes an item from the collection.\n\t *\n\t * @param {Object|Number|String} subject The item to remove, its ID or index in the collection.\n\t * @returns {Object} The removed item.\n\t * @fires remove\n\t * @fires change\n\t */\n\tremove( subject ) {\n\t\tconst [ item, index ] = this._remove( subject );\n\n\t\tthis.fire( 'change', {\n\t\t\tadded: [],\n\t\t\tremoved: [ item ],\n\t\t\tindex\n\t\t} );\n\n\t\treturn item;\n\t}\n\n\t/**\n\t * Executes the callback for each item in the collection and composes an array or values returned by this callback.\n\t *\n\t * @param {Function} callback\n\t * @param {Object} callback.item\n\t * @param {Number} callback.index\n\t * @param {Object} ctx Context in which the `callback` will be called.\n\t * @returns {Array} The result of mapping.\n\t */\n\tmap( callback, ctx ) {\n\t\treturn this._items.map( callback, ctx );\n\t}\n\n\t/**\n\t * Finds the first item in the collection for which the `callback` returns a true value.\n\t *\n\t * @param {Function} callback\n\t * @param {Object} callback.item\n\t * @param {Number} callback.index\n\t * @param {Object} ctx Context in which the `callback` will be called.\n\t * @returns {Object} The item for which `callback` returned a true value.\n\t */\n\tfind( callback, ctx ) {\n\t\treturn this._items.find( callback, ctx );\n\t}\n\n\t/**\n\t * Returns an array with items for which the `callback` returned a true value.\n\t *\n\t * @param {Function} callback\n\t * @param {Object} callback.item\n\t * @param {Number} callback.index\n\t * @param {Object} ctx Context in which the `callback` will be called.\n\t * @returns {Object[]} The array with matching items.\n\t */\n\tfilter( callback, ctx ) {\n\t\treturn this._items.filter( callback, ctx );\n\t}\n\n\t/**\n\t * Removes all items from the collection and destroys the binding created using\n\t * {@link #bindTo}.\n\t *\n\t * @fires remove\n\t * @fires change\n\t */\n\tclear() {\n\t\tif ( this._bindToCollection ) {\n\t\t\tthis.stopListening( this._bindToCollection );\n\t\t\tthis._bindToCollection = null;\n\t\t}\n\n\t\tconst removedItems = Array.from( this._items );\n\n\t\twhile ( this.length ) {\n\t\t\tthis._remove( 0 );\n\t\t}\n\n\t\tthis.fire( 'change', {\n\t\t\tadded: [],\n\t\t\tremoved: removedItems,\n\t\t\tindex: 0\n\t\t} );\n\t}\n\n\t/**\n\t * Binds and synchronizes the collection with another one.\n\t *\n\t * The binding can be a simple factory:\n\t *\n\t *\t\tclass FactoryClass {\n\t *\t\t\tconstructor( data ) {\n\t *\t\t\t\tthis.label = data.label;\n\t *\t\t\t}\n\t *\t\t}\n\t *\n\t *\t\tconst source = new Collection( { idProperty: 'label' } );\n\t *\t\tconst target = new Collection();\n\t *\n\t *\t\ttarget.bindTo( source ).as( FactoryClass );\n\t *\n\t *\t\tsource.add( { label: 'foo' } );\n\t *\t\tsource.add( { label: 'bar' } );\n\t *\n\t *\t\tconsole.log( target.length ); // 2\n\t *\t\tconsole.log( target.get( 1 ).label ); // 'bar'\n\t *\n\t *\t\tsource.remove( 0 );\n\t *\t\tconsole.log( target.length ); // 1\n\t *\t\tconsole.log( target.get( 0 ).label ); // 'bar'\n\t *\n\t * or the factory driven by a custom callback:\n\t *\n\t *\t\tclass FooClass {\n\t *\t\t\tconstructor( data ) {\n\t *\t\t\t\tthis.label = data.label;\n\t *\t\t\t}\n\t *\t\t}\n\t *\n\t *\t\tclass BarClass {\n\t *\t\t\tconstructor( data ) {\n\t *\t\t\t\tthis.label = data.label;\n\t *\t\t\t}\n\t *\t\t}\n\t *\n\t *\t\tconst source = new Collection( { idProperty: 'label' } );\n\t *\t\tconst target = new Collection();\n\t *\n\t *\t\ttarget.bindTo( source ).using( ( item ) => {\n\t *\t\t\tif ( item.label == 'foo' ) {\n\t *\t\t\t\treturn new FooClass( item );\n\t *\t\t\t} else {\n\t *\t\t\t\treturn new BarClass( item );\n\t *\t\t\t}\n\t *\t\t} );\n\t *\n\t *\t\tsource.add( { label: 'foo' } );\n\t *\t\tsource.add( { label: 'bar' } );\n\t *\n\t *\t\tconsole.log( target.length ); // 2\n\t *\t\tconsole.log( target.get( 0 ) instanceof FooClass ); // true\n\t *\t\tconsole.log( target.get( 1 ) instanceof BarClass ); // true\n\t *\n\t * or the factory out of property name:\n\t *\n\t *\t\tconst source = new Collection( { idProperty: 'label' } );\n\t *\t\tconst target = new Collection();\n\t *\n\t *\t\ttarget.bindTo( source ).using( 'label' );\n\t *\n\t *\t\tsource.add( { label: { value: 'foo' } } );\n\t *\t\tsource.add( { label: { value: 'bar' } } );\n\t *\n\t *\t\tconsole.log( target.length ); // 2\n\t *\t\tconsole.log( target.get( 0 ).value ); // 'foo'\n\t *\t\tconsole.log( target.get( 1 ).value ); // 'bar'\n\t *\n\t * It's possible to skip specified items by returning falsy value:\n\t *\n\t *\t\tconst source = new Collection();\n\t *\t\tconst target = new Collection();\n\t *\n\t *\t\ttarget.bindTo( source ).using( item => {\n\t *\t\t\tif ( item.hidden ) {\n\t *\t\t\t\treturn null;\n\t *\t\t\t}\n\t *\n\t *\t\t\treturn item;\n\t *\t\t} );\n\t *\n\t *\t\tsource.add( { hidden: true } );\n\t *\t\tsource.add( { hidden: false } );\n\t *\n\t *\t\tconsole.log( source.length ); // 2\n\t *\t\tconsole.log( target.length ); // 1\n\t *\n\t * **Note**: {@link #clear} can be used to break the binding.\n\t *\n\t * @param {module:utils/collection~Collection} externalCollection A collection to be bound.\n\t * @returns {Object}\n\t * @returns {module:utils/collection~CollectionBindToChain} The binding chain object.\n\t */\n\tbindTo( externalCollection ) {\n\t\tif ( this._bindToCollection ) {\n\t\t\t/**\n\t\t\t * The collection cannot be bound more than once.\n\t\t\t *\n\t\t\t * @error collection-bind-to-rebind\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'collection-bind-to-rebind', this );\n\t\t}\n\n\t\tthis._bindToCollection = externalCollection;\n\n\t\treturn {\n\t\t\tas: Class => {\n\t\t\t\tthis._setUpBindToBinding( item => new Class( item ) );\n\t\t\t},\n\n\t\t\tusing: callbackOrProperty => {\n\t\t\t\tif ( typeof callbackOrProperty == 'function' ) {\n\t\t\t\t\tthis._setUpBindToBinding( item => callbackOrProperty( item ) );\n\t\t\t\t} else {\n\t\t\t\t\tthis._setUpBindToBinding( item => item[ callbackOrProperty ] );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\t/**\n\t * Finalizes and activates a binding initiated by {#bindTo}.\n\t *\n\t * @protected\n\t * @param {Function} factory A function which produces collection items.\n\t */\n\t_setUpBindToBinding( factory ) {\n\t\tconst externalCollection = this._bindToCollection;\n\n\t\t// Adds the item to the collection once a change has been done to the external collection.\n\t\t//\n\t\t// @private\n\t\tconst addItem = ( evt, externalItem, index ) => {\n\t\t\tconst isExternalBoundToThis = externalCollection._bindToCollection == this;\n\t\t\tconst externalItemBound = externalCollection._bindToInternalToExternalMap.get( externalItem );\n\n\t\t\t// If an external collection is bound to this collection, which makes it a 2–way binding,\n\t\t\t// and the particular external collection item is already bound, don't add it here.\n\t\t\t// The external item has been created **out of this collection's item** and (re)adding it will\n\t\t\t// cause a loop.\n\t\t\tif ( isExternalBoundToThis && externalItemBound ) {\n\t\t\t\tthis._bindToExternalToInternalMap.set( externalItem, externalItemBound );\n\t\t\t\tthis._bindToInternalToExternalMap.set( externalItemBound, externalItem );\n\t\t\t} else {\n\t\t\t\tconst item = factory( externalItem );\n\n\t\t\t\t// When there is no item we need to remember skipped index first and then we can skip this item.\n\t\t\t\tif ( !item ) {\n\t\t\t\t\tthis._skippedIndexesFromExternal.push( index );\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Lets try to put item at the same index as index in external collection\n\t\t\t\t// but when there are a skipped items in one or both collections we need to recalculate this index.\n\t\t\t\tlet finalIndex = index;\n\n\t\t\t\t// When we try to insert item after some skipped items from external collection we need\n\t\t\t\t// to include this skipped items and decrease index.\n\t\t\t\t//\n\t\t\t\t// For the following example:\n\t\t\t\t// external -> [ 'A', 'B - skipped for internal', 'C - skipped for internal' ]\n\t\t\t\t// internal -> [ A ]\n\t\t\t\t//\n\t\t\t\t// Another item is been added at the end of external collection:\n\t\t\t\t// external.add( 'D' )\n\t\t\t\t// external -> [ 'A', 'B - skipped for internal', 'C - skipped for internal', 'D' ]\n\t\t\t\t//\n\t\t\t\t// We can't just add 'D' to internal at the same index as index in external because\n\t\t\t\t// this will produce empty indexes what is invalid:\n\t\t\t\t// internal -> [ 'A', empty, empty, 'D' ]\n\t\t\t\t//\n\t\t\t\t// So we need to include skipped items and decrease index\n\t\t\t\t// internal -> [ 'A', 'D' ]\n\t\t\t\tfor ( const skipped of this._skippedIndexesFromExternal ) {\n\t\t\t\t\tif ( index > skipped ) {\n\t\t\t\t\t\tfinalIndex--;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// We need to take into consideration that external collection could skip some items from\n\t\t\t\t// internal collection.\n\t\t\t\t//\n\t\t\t\t// For the following example:\n\t\t\t\t// internal -> [ 'A', 'B - skipped for external', 'C - skipped for external' ]\n\t\t\t\t// external -> [ A ]\n\t\t\t\t//\n\t\t\t\t// Another item is been added at the end of external collection:\n\t\t\t\t// external.add( 'D' )\n\t\t\t\t// external -> [ 'A', 'D' ]\n\t\t\t\t//\n\t\t\t\t// We need to include skipped items and place new item after them:\n\t\t\t\t// internal -> [ 'A', 'B - skipped for external', 'C - skipped for external', 'D' ]\n\t\t\t\tfor ( const skipped of externalCollection._skippedIndexesFromExternal ) {\n\t\t\t\t\tif ( finalIndex >= skipped ) {\n\t\t\t\t\t\tfinalIndex++;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis._bindToExternalToInternalMap.set( externalItem, item );\n\t\t\t\tthis._bindToInternalToExternalMap.set( item, externalItem );\n\t\t\t\tthis.add( item, finalIndex );\n\n\t\t\t\t// After adding new element to internal collection we need update indexes\n\t\t\t\t// of skipped items in external collection.\n\t\t\t\tfor ( let i = 0; i < externalCollection._skippedIndexesFromExternal.length; i++ ) {\n\t\t\t\t\tif ( finalIndex <= externalCollection._skippedIndexesFromExternal[ i ] ) {\n\t\t\t\t\t\texternalCollection._skippedIndexesFromExternal[ i ]++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// Load the initial content of the collection.\n\t\tfor ( const externalItem of externalCollection ) {\n\t\t\taddItem( null, externalItem, externalCollection.getIndex( externalItem ) );\n\t\t}\n\n\t\t// Synchronize the with collection as new items are added.\n\t\tthis.listenTo( externalCollection, 'add', addItem );\n\n\t\t// Synchronize the with collection as new items are removed.\n\t\tthis.listenTo( externalCollection, 'remove', ( evt, externalItem, index ) => {\n\t\t\tconst item = this._bindToExternalToInternalMap.get( externalItem );\n\n\t\t\tif ( item ) {\n\t\t\t\tthis.remove( item );\n\t\t\t}\n\n\t\t\t// After removing element from external collection we need update/remove indexes\n\t\t\t// of skipped items in internal collection.\n\t\t\tthis._skippedIndexesFromExternal = this._skippedIndexesFromExternal.reduce( ( result, skipped ) => {\n\t\t\t\tif ( index < skipped ) {\n\t\t\t\t\tresult.push( skipped - 1 );\n\t\t\t\t}\n\n\t\t\t\tif ( index > skipped ) {\n\t\t\t\t\tresult.push( skipped );\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t}, [] );\n\t\t} );\n\t}\n\n\t/**\n\t * Returns an unique id property for a given `item`.\n\t *\n\t * The method will generate new id and assign it to the `item` if it doesn't have any.\n\t *\n\t * @private\n\t * @param {Object} item Item to be added.\n\t * @returns {String}\n\t */\n\t_getItemIdBeforeAdding( item ) {\n\t\tconst idProperty = this._idProperty;\n\t\tlet itemId;\n\n\t\tif ( ( idProperty in item ) ) {\n\t\t\titemId = item[ idProperty ];\n\n\t\t\tif ( typeof itemId != 'string' ) {\n\t\t\t\t/**\n\t\t\t\t * This item's ID should be a string.\n\t\t\t\t *\n\t\t\t\t * @error collection-add-invalid-id\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError( 'collection-add-invalid-id', this );\n\t\t\t}\n\n\t\t\tif ( this.get( itemId ) ) {\n\t\t\t\t/**\n\t\t\t\t * This item already exists in the collection.\n\t\t\t\t *\n\t\t\t\t * @error collection-add-item-already-exists\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError( 'collection-add-item-already-exists', this );\n\t\t\t}\n\t\t} else {\n\t\t\titem[ idProperty ] = itemId = uid();\n\t\t}\n\n\t\treturn itemId;\n\t}\n\n\t/**\n\t * Core {@link #remove} method implementation shared in other functions.\n\t *\n\t * In contrast this method **does not** fire the {@link #event:change} event.\n\t *\n\t * @private\n\t * @param {Object} subject The item to remove, its id or index in the collection.\n\t * @returns {Array} Returns an array with the removed item and its index.\n\t * @fires remove\n\t */\n\t_remove( subject ) {\n\t\tlet index, id, item;\n\t\tlet itemDoesNotExist = false;\n\t\tconst idProperty = this._idProperty;\n\n\t\tif ( typeof subject == 'string' ) {\n\t\t\tid = subject;\n\t\t\titem = this._itemMap.get( id );\n\t\t\titemDoesNotExist = !item;\n\n\t\t\tif ( item ) {\n\t\t\t\tindex = this._items.indexOf( item );\n\t\t\t}\n\t\t} else if ( typeof subject == 'number' ) {\n\t\t\tindex = subject;\n\t\t\titem = this._items[ index ];\n\t\t\titemDoesNotExist = !item;\n\n\t\t\tif ( item ) {\n\t\t\t\tid = item[ idProperty ];\n\t\t\t}\n\t\t} else {\n\t\t\titem = subject;\n\t\t\tid = item[ idProperty ];\n\t\t\tindex = this._items.indexOf( item );\n\t\t\titemDoesNotExist = ( index == -1 || !this._itemMap.get( id ) );\n\t\t}\n\n\t\tif ( itemDoesNotExist ) {\n\t\t\t/**\n\t\t\t * Item not found.\n\t\t\t *\n\t\t\t * @error collection-remove-404\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'collection-remove-404', this );\n\t\t}\n\n\t\tthis._items.splice( index, 1 );\n\t\tthis._itemMap.delete( id );\n\n\t\tconst externalItem = this._bindToInternalToExternalMap.get( item );\n\t\tthis._bindToInternalToExternalMap.delete( item );\n\t\tthis._bindToExternalToInternalMap.delete( externalItem );\n\n\t\tthis.fire( 'remove', item, index );\n\n\t\treturn [ item, index ];\n\t}\n\n\t/**\n\t * Iterable interface.\n\t *\n\t * @returns {Iterable.<*>}\n\t */\n\t[ Symbol.iterator ]() {\n\t\treturn this._items[ Symbol.iterator ]();\n\t}\n\n\t/**\n\t * Fired when an item is added to the collection.\n\t *\n\t * @event add\n\t * @param {Object} item The added item.\n\t */\n\n\t/**\n\t * Fired when the collection was changed due to adding or removing items.\n\t *\n\t * @event change\n\t * @param {Iterable.} added A list of added items.\n\t * @param {Iterable.} removed A list of removed items.\n\t * @param {Number} index An index where the addition or removal occurred.\n\t */\n\n\t/**\n\t * Fired when an item is removed from the collection.\n\t *\n\t * @event remove\n\t * @param {Object} item The removed item.\n\t * @param {Number} index Index from which item was removed.\n\t */\n}\n\nmix( Collection, EmitterMixin );\n\n/**\n * An object returned by the {@link module:utils/collection~Collection#bindTo `bindTo()`} method\n * providing functions that specify the type of the binding.\n *\n * See the {@link module:utils/collection~Collection#bindTo `bindTo()`} documentation for examples.\n *\n * @interface module:utils/collection~CollectionBindToChain\n */\n\n/**\n * Creates a callback or a property binding.\n *\n * @method #using\n * @param {Function|String} callbackOrProperty When the function is passed, it should return\n * the collection items. When the string is provided, the property value is used to create the bound collection items.\n */\n\n/**\n * Creates the class factory binding in which items of the source collection are passed to\n * the constructor of the specified class.\n *\n * @method #as\n * @param {Function} Class The class constructor used to create instances in the factory.\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 utils/dom/getborderwidths\n */\n\n/**\n * Returns an object containing CSS border widths of a specified HTML element.\n *\n * @param {HTMLElement} element An element which has CSS borders.\n * @returns {Object} An object containing `top`, `left`, `right` and `bottom` properties\n * with numerical values of the `border-[top,left,right,bottom]-width` CSS styles.\n */\nexport default function getBorderWidths( element ) {\n\t// Call getComputedStyle on the window the element document belongs to.\n\tconst style = element.ownerDocument.defaultView.getComputedStyle( element );\n\n\treturn {\n\t\ttop: parseInt( style.borderTopWidth, 10 ),\n\t\tright: parseInt( style.borderRightWidth, 10 ),\n\t\tbottom: parseInt( style.borderBottomWidth, 10 ),\n\t\tleft: parseInt( style.borderLeftWidth, 10 )\n\t};\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 utils/dom/remove\n */\n\n/**\n * Removes given node from parent.\n *\n * @param {Node} node Node to remove.\n */\nexport default function remove( node ) {\n\tconst parent = node.parentNode;\n\n\tif ( parent ) {\n\t\tparent.removeChild( node );\n\t}\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 utils/dom/tounit\n */\n\n/**\n * Returns a helper function, which adds a desired trailing\n * `unit` to the passed value.\n *\n * @param {String} unit An unit like \"px\" or \"em\".\n * @returns {module:utils/dom/tounit~helper}\n */\nexport default function toUnit( unit ) {\n\t/**\n\t * A function, which adds a pre–defined trailing `unit`\n\t * to the passed `value`.\n\t *\n\t * @function helper\n \t * @param {*} value A value to be given the unit.\n \t * @returns {String} A value with the trailing unit.\n\t */\n\treturn value => value + unit;\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 utils/dom/scroll\n */\n\nimport isRange from './isrange';\nimport Rect from './rect';\nimport isText from './istext';\n\nconst utils = {};\n\n/**\n * Makes any page `HTMLElement` or `Range` (`target`) visible inside the browser viewport.\n * This helper will scroll all `target` ancestors and the web browser viewport to reveal the target to\n * the user. If the `target` is already visible, nothing will happen.\n *\n * @param {HTMLElement|Range} options.target A target, which supposed to become visible to the user.\n * @param {Number} [options.viewportOffset] An offset from the edge of the viewport (in pixels)\n * the `target` will be moved by when the viewport is scrolled. It enhances the user experience\n * by keeping the `target` some distance from the edge of the viewport and thus making it easier to\n * read or edit by the user.\n */\nexport function scrollViewportToShowTarget( { target, viewportOffset = 0 } ) {\n\tconst targetWindow = getWindow( target );\n\tlet currentWindow = targetWindow;\n\tlet currentFrame = null;\n\n\t// Iterate over all windows, starting from target's parent window up to window#top.\n\twhile ( currentWindow ) {\n\t\tlet firstAncestorToScroll;\n\n\t\t// Let's scroll target's ancestors first to reveal it. Then, once the ancestor scrolls\n\t\t// settled down, the algorithm can eventually scroll the viewport of the current window.\n\t\t//\n\t\t// Note: If the current window is target's **original** window (e.g. the first one),\n\t\t// start scrolling the closest parent of the target. If not, scroll the closest parent\n\t\t// of an iframe that resides in the current window.\n\t\tif ( currentWindow == targetWindow ) {\n\t\t\tfirstAncestorToScroll = getParentElement( target );\n\t\t} else {\n\t\t\tfirstAncestorToScroll = getParentElement( currentFrame );\n\t\t}\n\n\t\t// Scroll the target's ancestors first. Once done, scrolling the viewport is easy.\n\t\tscrollAncestorsToShowRect( firstAncestorToScroll, () => {\n\t\t\t// Note: If the target does not belong to the current window **directly**,\n\t\t\t// i.e. it resides in an iframe belonging to the window, obtain the target's rect\n\t\t\t// in the coordinates of the current window. By default, a Rect returns geometry\n\t\t\t// relative to the current window's viewport. To make it work in a parent window,\n\t\t\t// it must be shifted.\n\t\t\treturn getRectRelativeToWindow( target, currentWindow );\n\t\t} );\n\n\t\t// Obtain the rect of the target after it has been scrolled within its ancestors.\n\t\t// It's time to scroll the viewport.\n\t\tconst targetRect = getRectRelativeToWindow( target, currentWindow );\n\n\t\tscrollWindowToShowRect( currentWindow, targetRect, viewportOffset );\n\n\t\tif ( currentWindow.parent != currentWindow ) {\n\t\t\t// Keep the reference to the