'),P}},function(r,u,f){'use strict';function P(R,I){if(!(R instanceof I))throw new TypeError('Cannot call a class as a function')}function w(R,I){if(!R)throw new ReferenceError('this hasn\'t been initialised - super() hasn\'t been called');return I&&('object'==typeof I||'function'==typeof I)?I:R}function M(R,I){if('function'!=typeof I&&null!==I)throw new TypeError('Super expression must either be null or a function, not '+typeof I);R.prototype=Object.create(I&&I.prototype,{constructor:{value:R,enumerable:!1,writable:!0,configurable:!0}}),I&&(Object.setPrototypeOf?Object.setPrototypeOf(R,I):R.__proto__=I)}Object.defineProperty(u,'__esModule',{value:!0});var C=function(){function R(I,F){for(var N=0,V;Nhe.position.offset;return ke&&Pe?[he.getReversed(),be.clone()]:(0,C.defaultTransform)(be,he,ve)}),(0,C.addTransformationCase)(X.default,Y.default,function(be,he,ve){return be.position.isEqual(he.position)?[M()]:(0,C.defaultTransform)(be,he,ve)}),(0,C.addTransformationCase)(X.default,ee.default,function(be,he,ve){var ke=be.position.root==he.sourcePosition.root&&'same'===(0,ye.default)(be.position.getParentPath(),he.sourcePosition.getParentPath()),Pe=he.sourcePosition.offset<=be.position.offset&&he.sourcePosition.offset+he.howMany>be.position.offset;return ke&&Pe?[M()]:(0,C.defaultTransform)(be,he,ve)}),(0,C.addTransformationCase)(re.default,re.default,function(be,he,ve){var ke=be.position.getParentPath(),Pe=he.position.getParentPath();if('same'==(0,ye.default)(ke,Pe)){if(be.position.offset==he.position.offset)return[M()];if(be.position.offsethe._cloneOperation.sourcePosition.offset&&we._cloneOperation.sourcePosition.offset--,[we]}var xe=be.clone();return xe._cloneOperation.position.offset++,xe._moveOperation.sourcePosition.path[xe._moveOperation.sourcePosition.path.length-2]++,xe._moveOperation.targetPosition.path[xe._moveOperation.targetPosition.path.length-2]++,xe._moveOperation.sourcePosition.offset=be.position.offset-he.position.offset,be._cloneOperation instanceof z.default&&he._cloneOperation instanceof z.default&&be._cloneOperation.sourcePosition.offset>he._cloneOperation.sourcePosition.offset&&xe._cloneOperation.sourcePosition.offset--,[xe]}return(0,C.defaultTransform)(be,he,ve)}),(0,C.addTransformationCase)(re.default,de.default,function(be,he,ve){return'same'===(0,ye.default)(he.position.path,be.position.getParentPath())?[M()]:(0,C.defaultTransform)(be,he,ve)}),(0,C.addTransformationCase)(re.default,ue.default,function(be,he,ve){var ke='same'===(0,ye.default)(be.position.getParentPath(),he.range.start.getParentPath()),Pe=he.range.start.offset=be.position.offset;if(ke&&Pe)return[M()];if('same'===(0,ye.default)(be.position.getParentPath(),he.range.end.getShiftedBy(-1).path)){var we=be.clone(),xe=E.default.createFromPosition(he.range.start);xe.path.push(he.howMany-1);var Me=xe.getShiftedBy(1);we._cloneOperation.position=Me;var Ce=E.default.createFromPosition(xe);Ce.path.push(be.position.offset),we._moveOperation.sourcePosition=Ce;var Oe=E.default.createFromPosition(Me);return Oe.path.push(0),we._moveOperation.targetPosition=Oe,[we]}return(0,C.defaultTransform)(be,he,ve)}),(0,C.addTransformationCase)(re.default,K.default,function(be,he){be=be.clone();var ve=new E.default(be.position.root,be.position.path.slice(0,-1));if(be._cloneOperation instanceof D.default){var ke=!0,Pe=!1,we;try{for(var xe=he.operations[Symbol.iterator](),Me,Ce;!(ke=(Me=xe.next()).done);ke=!0)if(Ce=Me.value,Ce.range.containsPosition(ve)||Ce.range.start.isEqual(ve)){null===Ce.newValue?be._cloneOperation.nodes.getNode(0).removeAttribute(Ce.key):be._cloneOperation.nodes.getNode(0).setAttribute(Ce.key,Ce.newValue);break}}catch(Oe){Pe=!0,we=Oe}finally{try{!ke&&xe.return&&xe.return()}finally{if(Pe)throw we}}}return[be]}),(0,C.addTransformationCase)(de.default,re.default,function(be,he,ve){if('same'===(0,ye.default)(be.position.path,he.position.getParentPath())){var ke=[he.getReversed(),be.clone()];return ke[1].operations[1].targetPosition.path[0]++,ke}return(0,C.defaultTransform)(be,he,ve)}),(0,C.addTransformationCase)(oe.default,K.default,function(be,he){var ve=[be.clone()];return he.range.containsPosition(be.position)&&ve.push(w(be,he)),ve}),(0,C.addTransformationCase)(ue.default,re.default,function(be,he,ve){var ke='same'===(0,ye.default)(be.range.start.getParentPath(),he.position.getParentPath()),Pe=be.range.start.offset=he.position.offset;if(ke&&Pe)return[he.getReversed(),be.clone()];if('same'===(0,ye.default)(he.position.getParentPath(),be.range.end.getShiftedBy(-1).path)){var we=be.clone();return we._insertOperation.position.offset++,we._moveOperation.howMany++,we._moveOperation.targetPosition.path[we._moveOperation.targetPosition.path.length-2]++,[we]}return(0,C.defaultTransform)(be,he,ve)}),(0,C.addTransformationCase)(ce.default,re.default,function(be,he,ve){var ke=new E.default(he.position.root,he.position.path.slice(0,-1)),Pe=(0,C.defaultTransform)(be,he,ve);if(be.operations[0].position.isEqual(ke)){var we=be.clone();we.operations[0].position=be.operations[0].position.getShiftedBy(1),Pe.push(we)}return Pe}),(0,C.addTransformationCase)(re.default,ce.default,function(be,he){be=be.clone();var ve=new E.default(be.position.root,be.position.path.slice(0,-1));return be._cloneOperation instanceof D.default&&he.operations[0].position.isEqual(ve)&&(be._cloneOperation.nodes.getNode(0).name=he.operations[0].newName),[be]}),(0,C.addTransformationCase)(ge.default,re.default,function(be,he,ve){var ke=(0,C.defaultTransform)(be,he,ve),Pe=he._cloneOperation.position,we=!0,xe=!1,Me;try{for(var Ce=ke[Symbol.iterator](),Oe;!(we=(Oe=Ce.next()).done);we=!0){var Ae=Oe.value,Te=!0,Se=!1,Ee=void 0;try{for(var Re=Ae.operations[Symbol.iterator](),Ie;!(Te=(Ie=Re.next()).done);Te=!0){var Fe=Ie.value,Ne=Fe.sourcePosition.getShiftedBy(Fe.howMany);Ne.isEqual(Pe)&&(Fe.howMany+=1)}}catch(Le){Se=!0,Ee=Le}finally{try{!Te&&Re.return&&Re.return()}finally{if(Se)throw Ee}}}}catch(Le){xe=!0,Me=Le}finally{try{!we&&Ce.return&&Ce.return()}finally{if(xe)throw Me}}return ke}),(0,C.addTransformationCase)(re.default,ge.default,function(be,he,ve){he=he.clone();var ke=be._cloneOperation.position,Pe=!0,we=!1,xe;try{for(var Me=he.operations[Symbol.iterator](),Ce;!(Pe=(Ce=Me.next()).done);Pe=!0){var Oe=Ce.value,Ae=Oe.sourcePosition.getShiftedBy(Oe.howMany);Ae.isEqual(ke)&&(Oe.howMany+=1)}}catch(Te){we=!0,xe=Te}finally{try{!Pe&&Me.return&&Me.return()}finally{if(we)throw xe}}return(0,C.defaultTransform)(be,he,ve)})},function(r,u,f){'use strict';function h(z){return z&&z.__esModule?z:{default:z}}function P(z,$){if(!(z instanceof $))throw new TypeError('Cannot call a class as a function')}function w(z,$){if(!z)throw new ReferenceError('this hasn\'t been initialised - super() hasn\'t been called');return $&&('object'==typeof $||'function'==typeof $)?$:z}function M(z,$){if('function'!=typeof $&&null!==$)throw new TypeError('Super expression must either be null or a function, not '+typeof $);z.prototype=Object.create($&&$.prototype,{constructor:{value:z,enumerable:!1,writable:!0,configurable:!0}}),$&&(Object.setPrototypeOf?Object.setPrototypeOf(z,$):z.__proto__=$)}function C(z,$,U,W){var K=z.document,H=new q,Y=new N.default($,U,W,K.markers,K.version);z.addDelta(H),H.addOperation(Y),K.applyOperation(Y)}Object.defineProperty(u,'__esModule',{value:!0});var O=function(){function z($,U){for(var W=0,K;W=I)){D.next=9;break}return D.abrupt('break',13);case 9:return D.next=11,N;case 11:D.next=5;break;case 13:case'end':return D.stop();}},E,this)})},{key:'getDelta',value:function(R){var I=this._historyPoints.get(R);if(void 0===I)return null;var F=[];for(I;IR&&this._historyPoints.set(Z,this._historyPoints.get(Z)+W)}catch(X){H=!0,Y=X}finally{try{!K&&G.return&&G.return()}finally{if(H)throw Y}}}}},{key:'_getIndex',value:function(R){var I=this._historyPoints.get(R);if(void 0===I){var F=this._deltas[this._deltas.length-1],N=F.baseVersion+F.operations.length;if(0>R||R>=N)return-1;throw new O.default('model-history-wrong-version: Given base version points to the middle of a delta.')}return I}}]),S}();u.default=T},function(r,u,f){'use strict';function h(te){return te&&te.__esModule?te:{default:te}}function P(te,re){if(!(te instanceof re))throw new TypeError('Cannot call a class as a function')}function w(te,re){if(!te)throw new ReferenceError('this hasn\'t been initialised - super() hasn\'t been called');return re&&('object'==typeof re||'function'==typeof re)?re:te}function M(te,re){if('function'!=typeof re&&null!==re)throw new TypeError('Super expression must either be null or a function, not '+typeof re);te.prototype=Object.create(re&&re.prototype,{constructor:{value:te,enumerable:!1,writable:!0,configurable:!0}}),re&&(Object.setPrototypeOf?Object.setPrototypeOf(te,re):te.__proto__=re)}function C(te){return te instanceof $.default||te instanceof q.default?te.getAttributes():null}Object.defineProperty(u,'__esModule',{value:!0});var O=function(){function te(re,ae){var oe=[],le=!0,ue=!1,ie;try{for(var de=re[Symbol.iterator](),fe;!(le=(fe=de.next()).done)&&(oe.push(fe.value),!(ae&&oe.length===ae));le=!0);}catch(ce){ue=!0,ie=ce}finally{try{!le&&de['return']&&de['return']()}finally{if(ue)throw ie}}return oe}return function(re,ae){if(Array.isArray(re))return re;if(Symbol.iterator in Object(re))return te(re,ae);throw new TypeError('Invalid attempt to destructure non-iterable instance')}}(),T=function(){function te(re,ae){for(var oe=0,le;oe=te._holderElementOffset&&(ee=ee.clone(),ee.range.start.path[0]++,ee.range.end.path[0]++);var oe=O(ee.range.getDifference(re)),le=ee.range.getIntersection(re);return null!==oe&&(oe.start=oe.start._getTransformedByDeletion(te.sourcePosition,te.howMany),oe.end=oe.end._getTransformedByDeletion(te.sourcePosition,te.howMany),ae=oe._getTransformedByInsertion(te.getMovedRangeStart(),te.howMany,!0,!1).reverse()),null!==le&&(le.start=le.start._getCombined(te.sourcePosition,te.getMovedRangeStart()),le.end=le.end._getCombined(te.sourcePosition,te.getMovedRangeStart()),ae.push(le)),ae.map(function(ue){return new R.default(ue,ee.key,ee.oldValue,ee.newValue,ee.baseVersion)})}},RootAttributeOperation:{InsertOperation:w,AttributeOperation:w,RootAttributeOperation:function(ee,te,re){return ee.root!==te.root||ee.key!==te.key||(ee.newValue===te.newValue||re)&&ee.newValue!==te.newValue?[ee.clone()]:[new H.default(ee.baseVersion)]},RenameOperation:w,MarkerOperation:w,MoveOperation:w},RenameOperation:{InsertOperation:function(ee,te){var re=ee.clone();return re.position=re.position._getTransformedByInsertion(te.position,te.nodes.maxOffset,!0),[re]},AttributeOperation:w,RootAttributeOperation:w,RenameOperation:function(ee,te,re){var ae=ee.clone();if(ee.position.isEqual(te.position))if(re)ae.oldName=te.newName;else return[new H.default(ee.baseVersion)];return[ae]},MarkerOperation:w,MoveOperation:function(ee,te){var re=ee.clone(),ae=re.position.isEqual(te.sourcePosition);return re.position=re.position._getTransformedByMove(te.sourcePosition,te.targetPosition,te.howMany,!0,ae),[re]}},MarkerOperation:{InsertOperation:function(ee,te){var re=ee.clone();return re.oldRange&&(re.oldRange=re.oldRange._getTransformedByInsertion(te.position,te.nodes.maxOffset,!1,!1)[0]),re.newRange&&(re.newRange=re.newRange._getTransformedByInsertion(te.position,te.nodes.maxOffset,!1,!1)[0]),[re]},AttributeOperation:w,RootAttributeOperation:w,RenameOperation:w,MarkerOperation:function(ee,te,re){var ae=ee.clone();if(ee.name==te.name)if(re)ae.oldRange=te.newRange;else return[new H.default(ee.baseVersion)];return[ae]},MoveOperation:function(ee,te){var re=ee.clone();if(re.oldRange){var ae=re.oldRange._getTransformedByMove(te.sourcePosition,te.targetPosition,te.howMany);re.oldRange=G.default.createFromRanges(ae)}if(re.newRange){var oe=re.newRange._getTransformedByMove(te.sourcePosition,te.targetPosition,te.howMany);re.newRange=G.default.createFromRanges(oe)}return[re]}},MoveOperation:{InsertOperation:function(ee,te,re){var ae=G.default.createFromPositionAndShift(ee.sourcePosition,ee.howMany);ae=ae._getTransformedByInsertion(te.position,te.nodes.maxOffset,!1,ee.isSticky)[0];var oe=new ee.constructor(ae.start,ae.end.offset-ae.start.offset,ee instanceof W.default?ee.baseVersion:ee.targetPosition._getTransformedByInsertion(te.position,te.nodes.maxOffset,!re),ee instanceof W.default?void 0:ee.baseVersion);return oe.isSticky=ee.isSticky,ee instanceof W.default&&(oe._needsHolderElement=ee._needsHolderElement,oe._holderElementOffset=ee._holderElementOffset),[oe]},AttributeOperation:w,RootAttributeOperation:w,RenameOperation:w,MarkerOperation:w,MoveOperation:function(ee,te,re){if(C(ee,te)&&C(te,ee))return[te.getReversed()];if(ee instanceof W.default&&te instanceof W.default){var ae=ee.targetPosition.path[0],oe=te.targetPosition.path[0];(ae>oe||ae==oe&&re)&&(ee=ee.clone(),ee.targetPosition.path[0]++)}ee instanceof W.default&&!(te instanceof W.default)?re=!0:!(ee instanceof W.default)&&te instanceof W.default&&(re=!1);var le=G.default.createFromPositionAndShift(ee.sourcePosition,ee.howMany),ue=G.default.createFromPositionAndShift(te.sourcePosition,te.howMany),ie=[],de=O(le.getDifference(ue));de&&(de.start=de.start._getTransformedByMove(te.sourcePosition,te.targetPosition,te.howMany,!ee.isSticky,!1),de.end=de.end._getTransformedByMove(te.sourcePosition,te.targetPosition,te.howMany,ee.isSticky,!1),ie.push(de));var fe=le.getIntersection(ue),ce=(0,Z.default)(ee.sourcePosition.getParentPath(),te.sourcePosition.getParentPath()),pe=le.containsPosition(te.targetPosition)||le.start.isEqual(te.targetPosition)&&ee.isSticky||le.end.isEqual(te.targetPosition)&&ee.isSticky,ge=ue.containsRange(le)&&(ue.containsPosition(ee.targetPosition)||ue.start.isEqual(ee.targetPosition)||ue.end.isEqual(ee.targetPosition));if(null!==fe&&('extension'===ce||'same'===ce&&re||ge)&&!pe&&(fe.start=fe.start._getCombined(te.sourcePosition,te.getMovedRangeStart()),fe.end=fe.end._getCombined(te.sourcePosition,te.getMovedRangeStart()),de&&le.start.isBefore(ue.start)?ie.push(fe):ie.unshift(fe)),0===ie.length)return ee instanceof W.default?(ee=ee.clone(),ee.howMany=0,ee.sourcePosition=te.targetPosition,[ee]):[new H.default(ee.baseVersion)];var me=ee.targetPosition._getTransformedByMove(te.sourcePosition,te.targetPosition,te.howMany,!re,te.isSticky||ge);return ie.reverse().map(function(ye,be){var he=new ee.constructor(ye.start,ye.end.offset-ye.start.offset,ee instanceof W.default?ee.baseVersion:me,ee instanceof W.default?void 0:ee.baseVersion);return he.isSticky=ee.isSticky,ee instanceof W.default&&(he._needsHolderElement=ee._needsHolderElement&&0===be,he._holderElementOffset=ee._holderElementOffset),he})}}}},function(r,u,f){'use strict';function P(R,I){if(!(R instanceof I))throw new TypeError('Cannot call a class as a function')}function w(R,I){if(!R)throw new ReferenceError('this hasn\'t been initialised - super() hasn\'t been called');return I&&('object'==typeof I||'function'==typeof I)?I:R}function M(R,I){if('function'!=typeof I&&null!==I)throw new TypeError('Super expression must either be null or a function, not '+typeof I);R.prototype=Object.create(I&&I.prototype,{constructor:{value:R,enumerable:!1,writable:!0,configurable:!0}}),I&&(Object.setPrototypeOf?Object.setPrototypeOf(R,I):R.__proto__=I)}Object.defineProperty(u,'__esModule',{value:!0});var C=function(){function R(I,F){for(var N=0,V;NE||E>S.data.length)throw new C.default('view-textproxy-wrong-offsetintext: Given offsetInText value is incorrect.');if(0>R||E+R>S.data.length)throw new C.default('view-textproxy-wrong-length: Given length value is incorrect.');this.data=S.data.substring(E,E+R),this.offsetInText=E}return w(T,[{key:'is',value:function(E){return'textProxy'==E}},{key:'getAncestors',value:function(){for(var E=0ve;){ke>he.getAttribute('indent')&&(ke=he.getAttribute('indent'));var we=he.getAttribute('indent')-ke;Pe.push({item:he,indent:we}),he=he.nextSibling}0=ke;)he.getAttribute('type')!=Pe&&he.getAttribute('indent')==ke&&be.setAttribute(he,'type',Pe),he=he[me?'previousSibling':'nextSibling']})}}}function z(ge,me){var ye='numbered'==ge.getAttribute('type')?'ol':'ul',be=new G.default,he=new ae.default(ye,null);return he.appendChildren(be),me.bindElements(ge,be),be}function $(ge,me){for(var ye=me.getNext?'nextSibling':'previousSibling',be=me.getNext?'nodeAfter':'nodeBefore',he=!!me.checkAllSiblings,ve=!!me.sameIndent,ke=!!me.biggerIndent,Pe=!!me.smallerIndent,we=!!me.isMapped,xe=ge instanceof Z.default?ge.getAttribute('indent'):me.indent,Me=ge instanceof Z.default?ge[ye]:ge[be],Ce;Me&&'listItem'==Me.name;){if(Ce=Me.getAttribute('indent'),ve&&xe==Ce||ke&&xeCe){if(!we||me.mapper.toViewElement(Me))return Me;Me=Me[ye];continue}if(!he)return null;Me=Me[ye]}return null}function U(ge,me){return ge&&me&&('ul'==ge.name||'ol'==ge.name)&&ge.name==me.name?pe.default.mergeContainers(le.default.createAfter(ge)):null}function W(ge,me,ye,be){var he=me.parent,ve,ke=$(ge,{sameIndent:!0,smallerIndent:!0,checkAllSiblings:!0});if(ke&&ke.getAttribute('indent')==ge.getAttribute('indent')){var Pe=ye.toViewElement(ke);ve=pe.default.breakContainer(le.default.createAfter(Pe))}else ke=ge.previousSibling,ve=ke&&'listItem'==ke.name?ke.getAttribute('indent')=ye;)ge=ge[be],ge.getAttribute('indent')==ye&&(he=ge);return he}Object.defineProperty(u,'__esModule',{value:!0}),u.modelViewInsertion=function(ge,me,ye,be){if(ye.test(me.item,'insert')&&ye.test(me.item,'addAttribute:type')&&ye.test(me.item,'addAttribute:indent')){ye.consume(me.item,'insert'),ye.consume(me.item,'addAttribute:type'),ye.consume(me.item,'addAttribute:indent');var he=me.item,ve=z(he,be.mapper);W(he,ve,be.mapper)}},u.modelViewChangeType=function(ge,me,ye,be){if(ye.consume(me.item,'changeAttribute:type')){var he=be.mapper.toViewElement(me.item);pe.default.breakContainer(le.default.createBefore(he)),pe.default.breakContainer(le.default.createAfter(he));var ve=he.parent,ke='numbered'==me.attributeNewValue?'ol':'ul';ve=pe.default.rename(ve,ke),U(ve,ve.nextSibling),U(ve.previousSibling,ve)}},u.modelViewRemove=function(ge,me,ye,be){if(ye.consume(me.item,'remove')){var he=be.mapper.toViewPosition(me.sourcePosition),ve=he.nodeAfter.is('li')?he.nodeAfter:he.nodeAfter.getChild(0);pe.default.breakContainer(le.default.createBefore(ve)),pe.default.breakContainer(le.default.createAfter(ve));var ke=ve.parent,Pe=ke.previousSibling,we=ie.default.createOn(ke);pe.default.remove(we),Pe&&Pe.nextSibling&&U(Pe,Pe.nextSibling),K(me.item.getAttribute('indent')+1,me.sourcePosition,we.start,ve,be.mapper),'$graveyard'==me.item.root.rootName&&be.mapper.unbindModelElement(me.item)}},u.modelViewChangeIndent=function(ge,me,ye,be){if(ye.consume(me.item,'changeAttribute:indent')){var he=be.mapper.toViewElement(me.item);pe.default.breakContainer(le.default.createBefore(he)),pe.default.breakContainer(le.default.createAfter(he));var ve=he.parent,ke=ve.previousSibling,Pe=ie.default.createOn(ve);pe.default.remove(Pe);var we;ke&&ke.nextSibling&&(we=U(ke,ke.nextSibling)),we||(we=Pe.start),K(me.attributeOldValue+1,me.range.start,Pe.start,he,be.mapper),W(me.item,he,be.mapper,we)}},u.modelViewSplitOnInsert=function(ge,me,ye,be){if('listItem'!=me.item.name){for(var he=be.mapper.toViewPosition(me.range.start),ve=[];('ul'==he.parent.name||'ol'==he.parent.name)&&(he=pe.default.breakContainer(he),'li'==he.parent.name);){var ke=he,Pe=le.default.createAt(he.parent,'end');if(!ke.isEqual(Pe)){var we=pe.default.remove(new ie.default(ke,Pe));ve.push(we)}he=le.default.createAfter(he.parent)}if(0=N.getAttribute('indent');){if(D.getAttribute('indent')==N.getAttribute('indent'))return D;D=D[V?'nextSibling':'previousSibling']}return null}Object.defineProperty(u,'__esModule',{value:!0});var T=function(){function N(V,D){for(var q=0,z;qW.getAttribute('indent');)U.push(K),K=K.nextSibling;0>q._indentBy&&(U=U.reverse());var H=!0,Y=!1,G;try{for(var J=U[Symbol.iterator](),Z;!(H=(Z=J.next()).done);H=!0){var X=Z.value,Q=X.getAttribute('indent')+q._indentBy;0>Q?$.rename(X,'paragraph'):$.setAttribute(X,'indent',Q)}}catch(ue){Y=!0,G=ue}finally{try{!H&&J.return&&J.return()}finally{if(Y)throw G}}0>q._indentBy&&(U=U.reverse());var ee=!0,te=!1,re;try{for(var ae=U[Symbol.iterator](),oe,le;!(ee=(oe=ae.next()).done);ee=!0)le=oe.value,C(le,$)}catch(ue){te=!0,re=ue}finally{try{!ee&&ae.return&&ae.return()}finally{if(te)throw re}}})}},{key:'_checkEnabled',value:function(){var q=(0,I.default)(this.editor.document.selection.getSelectedBlocks());if(!q||!q.is('listItem'))return!1;if(0=z;){if(U.getAttribute('indent')==z)return U.getAttribute('type')==$;U=U.previousSibling}return!1}return!0}}]),V}(E.default);u.default=F},function(r,u,f){'use strict';function h($){return $&&$.__esModule?$:{default:$}}function P($,U){if(!($ instanceof U))throw new TypeError('Cannot call a class as a function')}function w($,U){if(!$)throw new ReferenceError('this hasn\'t been initialised - super() hasn\'t been called');return U&&('object'==typeof U||'function'==typeof U)?U:$}function M($,U){if('function'!=typeof U&&null!==U)throw new TypeError('Super expression must either be null or a function, not '+typeof U);$.prototype=Object.create(U&&U.prototype,{constructor:{value:$,enumerable:!1,writable:!0,configurable:!0}}),U&&(Object.setPrototypeOf?Object.setPrototypeOf($,U):$.__proto__=U)}Object.defineProperty(u,'__esModule',{value:!0});var C=function(){function $(U,W){for(var K=0,H;K=q;)U>$.getAttribute('indent')&&(U=$.getAttribute('indent')),$.getAttribute('indent')==U&&V[D?'unshift':'push']($),$=$[D?'previousSibling':'nextSibling']}Object.defineProperty(u,'__esModule',{value:!0});var O=function(){function V(D,q){for(var z=0,$;z=Z;Z++)J.push(Z)},function(r,u,f){'use strict';function h(F){return F&&F.__esModule?F:{default:F}}function P(F,N){if(!(F instanceof N))throw new TypeError('Cannot call a class as a function')}function w(F,N){if(!F)throw new ReferenceError('this hasn\'t been initialised - super() hasn\'t been called');return N&&('object'==typeof N||'function'==typeof N)?N:F}function M(F,N){if('function'!=typeof N&&null!==N)throw new TypeError('Super expression must either be null or a function, not '+typeof N);F.prototype=Object.create(N&&N.prototype,{constructor:{value:F,enumerable:!1,writable:!0,configurable:!0}}),N&&(Object.setPrototypeOf?Object.setPrototypeOf(F,N):F.__proto__=N)}Object.defineProperty(u,'__esModule',{value:!0});var C=function(){function F(N,V){for(var D=0,q;DW.top&&this._toolbarRect.height+this.limiterOffsetU&&G():!z&&q?ee>$&&G():te>U&&ee>=$?G():te>=U&&ee>$&&G(),ee===H}),W?[K,W]:null}function C(N){var V=N.left,D=N.top,q=S.default.window,z=q.scrollX,$=q.scrollY;return{left:V+z,top:D+$}}Object.defineProperty(u,'__esModule',{value:!0});var O=function(){function N(V,D){var q=[],z=!0,$=!1,U;try{for(var W=V[Symbol.iterator](),K;!(z=(K=W.next()).done)&&(q.push(K.value),!(D&&q.length===D));z=!0);}catch(H){$=!0,U=H}finally{try{!z&&W['return']&&W['return']()}finally{if($)throw U}}return q}return function(V,D){if(Array.isArray(V))return V;if(Symbol.iterator in Object(V))return N(V,D);throw new TypeError('Invalid attempt to destructure non-iterable instance')}}();u.getOptimalPosition=function(N){var V=N.element,D=N.target,q=N.positions,z=N.limiter,$=N.fitInViewport,U=(0,F.default)(V.parentElement),W=new R.default(V),K=new R.default(D),H,Y;if(!z&&!$){var G=w(q[0],K,W),J=O(G,2);Y=J[0],H=J[1]}else{var Z=z&&new R.default(z),X=$&&R.default.getViewportRect(),Q=M(q,K,W,Z,X)||w(q[0],K,W),ee=O(Q,2);Y=ee[0],H=ee[1]}var te=C(H),re=te.left,ae=te.top;if(U){var oe=C(new R.default(U)),le=S.default.window.getComputedStyle(U);re-=oe.left,ae-=oe.top,re+=U.scrollLeft,ae+=U.scrollTop,re-=parseInt(le.borderLeftWidth,10),ae-=parseInt(le.borderTopWidth,10)}return{left:re,top:ae,name:Y}};var T=f(65),S=h(T),E=f(412),R=h(E),I=f(407),F=h(I)},function(r,u,f){'use strict';function h(F){return F&&F.__esModule?F:{default:F}}function P(F,N){if(!(F instanceof N))throw new TypeError('Cannot call a class as a function')}Object.defineProperty(u,'__esModule',{value:!0});var w=function(){function F(N,V){for(var D=0,q;DD.width||0>D.height?null:new F(D)}},{key:'getIntersectionArea',value:function(V){var D=this.getIntersection(V);return D?D.getArea():0}},{key:'getArea',value:function(){return this.width*this.height}}],[{key:'getViewportRect',value:function(){var V=C.default.window,D=V.innerWidth,q=V.innerHeight;return new F({top:0,right:D,bottom:q,left:0,width:D,height:q})}}]),F}();u.default=I},function(r,u){'use strict';Object.defineProperty(u,'__esModule',{value:!0}),u.default=function(P){var w=P.parentNode;w&&w.removeChild(P)}},function(r,u){'use strict';Object.defineProperty(u,'__esModule',{value:!0}),u.default=function(P,w){P instanceof HTMLTextAreaElement&&(P.value=w),P.innerHTML=w}},function(r,u){'use strict';function h(M,C){if(!(M instanceof C))throw new TypeError('Cannot call a class as a function')}Object.defineProperty(u,'__esModule',{value:!0});var P=function(){function M(C,O){for(var T=0,S;T=w?P:w)),P}},function(r,u,f){'use strict';Object.defineProperty(u,'__esModule',{value:!0});var w=f(14),M=function(O){return O&&O.__esModule?O:{default:O}}(w),C=Object.create;u.default=function(O){return(0,M.default)(O)?C(O):{}}},function(r,u,f){'use strict';function h(T){return T&&T.__esModule?T:{default:T}}Object.defineProperty(u,'__esModule',{value:!0});var w=f(15),M=h(w),C=f(513),O=h(C);u.default=function(T,S,E,R){var I=T.length;for(E=(0,M.default)(E),0>E&&(E=-E>I?0:I+E),R=void 0===R||R>I?I:(0,M.default)(R),0>R&&(R+=I),R=E>R?0:(0,O.default)(R);EO?T:0,(0,M.default)(O,T)?C[O]:void 0}},function(r,u,f){'use strict';Object.defineProperty(u,'__esModule',{value:!0});var w=f(128),M=function(C){return C&&C.__esModule?C:{default:C}}(w);u.default=function(C){return function(O){return(0,M.default)(O,C)}}},function(r,u,f){'use strict';function h(D){return D&&D.__esModule?D:{default:D}}Object.defineProperty(u,'__esModule',{value:!0});var w=f(68),M=h(w),C=f(89),O=h(C),T=f(37),S=h(T),E=f(55),R=h(E),I=f(14),F=h(I),N=f(56),V=h(N);u.default=function(D,q,z,$){q=(0,R.default)(q,D)?[q]:(0,O.default)(q);for(var U=-1,W=q.length,H=D,Y;null!=H&&++UO||R&&I&&N&&!F&&!V||S&&I&&N||!T&&N||!E)return 1;if(!S&&!R&&!V&&CI?void 0:F,I=1),S=Object(S);++RE)return!1;var R=S.length-1;return E==R?S.pop():O.call(S,E,1),!0}},function(r,u,f){'use strict';Object.defineProperty(u,'__esModule',{value:!0});var w=f(86),M=function(C){return C&&C.__esModule?C:{default:C}}(w);u.default=function(C){var O=this.__data__,T=(0,M.default)(O,C);return 0>T?void 0:O[T][1]}},function(r,u,f){'use strict';Object.defineProperty(u,'__esModule',{value:!0});var w=f(86),M=function(C){return C&&C.__esModule?C:{default:C}}(w);u.default=function(C){return-1<(0,M.default)(this.__data__,C)}},function(r,u,f){'use strict';Object.defineProperty(u,'__esModule',{value:!0});var w=f(86),M=function(C){return C&&C.__esModule?C:{default:C}}(w);u.default=function(C,O){var T=this.__data__,S=(0,M.default)(T,C);return 0>S?T.push([C,O]):T[S][1]=O,this}},function(r,u,f){'use strict';function h(E){return E&&E.__esModule?E:{default:E}}Object.defineProperty(u,'__esModule',{value:!0});var w=f(419),M=h(w),C=f(82),O=h(C),T=f(192),S=h(T);u.default=function(){this.__data__={hash:new M.default,map:new(S.default||O.default),string:new M.default}}},function(r,u,f){'use strict';Object.defineProperty(u,'__esModule',{value:!0});var w=f(90),M=function(C){return C&&C.__esModule?C:{default:C}}(w);u.default=function(C){return(0,M.default)(this,C)['delete'](C)}},function(r,u,f){'use strict';Object.defineProperty(u,'__esModule',{value:!0});var w=f(90),M=function(C){return C&&C.__esModule?C:{default:C}}(w);u.default=function(C){return(0,M.default)(this,C).get(C)}},function(r,u,f){'use strict';Object.defineProperty(u,'__esModule',{value:!0});var w=f(90),M=function(C){return C&&C.__esModule?C:{default:C}}(w);u.default=function(C){return(0,M.default)(this,C).has(C)}},function(r,u,f){'use strict';Object.defineProperty(u,'__esModule',{value:!0});var w=f(90),M=function(C){return C&&C.__esModule?C:{default:C}}(w);u.default=function(C,O){return(0,M.default)(this,C).set(C,O),this}},function(r,u,f){'use strict';function h(T){return T&&T.__esModule?T:{default:T}}Object.defineProperty(u,'__esModule',{value:!0});var w=f(128),M=h(w),C=f(36),O=h(C);u.default=function(T,S){return 1==S.length?T:(0,M.default)(T,(0,O.default)(S,0,-1))}},function(r,u){'use strict';Object.defineProperty(u,'__esModule',{value:!0});u.default=function(w){return this.__data__.set(w,'__lodash_hash_undefined__'),this}},function(r,u){'use strict';Object.defineProperty(u,'__esModule',{value:!0}),u.default=function(P){return this.__data__.has(P)}},function(r,u){'use strict';Object.defineProperty(u,'__esModule',{value:!0}),u.default=function(P){var w=-1,M=Array(P.size);return P.forEach(function(C){M[++w]=[C,C]}),M}},function(r,u,f){'use strict';Object.defineProperty(u,'__esModule',{value:!0});var w=f(82),M=function(C){return C&&C.__esModule?C:{default:C}}(w);u.default=function(){this.__data__=new M.default}},function(r,u){'use strict';Object.defineProperty(u,'__esModule',{value:!0}),u.default=function(P){return this.__data__['delete'](P)}},function(r,u){'use strict';Object.defineProperty(u,'__esModule',{value:!0}),u.default=function(P){return this.__data__.get(P)}},function(r,u){'use strict';Object.defineProperty(u,'__esModule',{value:!0}),u.default=function(P){return this.__data__.has(P)}},function(r,u,f){'use strict';function h(S){return S&&S.__esModule?S:{default:S}}Object.defineProperty(u,'__esModule',{value:!0});var w=f(82),M=h(w),C=f(123),O=h(C);u.default=function(S,E){var R=this.__data__;return R instanceof M.default&&R.__data__.length==200&&(R=this.__data__=new O.default(R.__data__)),R.set(S,E),this}},function(r,u,f){'use strict';function h(E){return E&&E.__esModule?E:{default:E}}Object.defineProperty(u,'__esModule',{value:!0});var P=f(507),w=h(P),M=f(515),C=h(M),O=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]/g,T=/\\(\\)?/g,S=(0,w.default)(function(E){var R=[];return(0,C.default)(E).replace(O,function(I,F,N,V){R.push(N?V.replace(T,'$1'):F||I)}),R});u.default=S},function(r,u,f){'use strict';function h(tr){return tr&&tr.__esModule?tr:{default:tr}}Object.defineProperty(u,'__esModule',{value:!0});var P=f(212),w=h(P),M=f(213),C=h(M),O=f(214),T=h(O),S=f(215),E=h(S),R=f(216),I=h(R),F=f(217),N=h(F),V=f(145),D=h(V),q=f(146),z=h(q),$=f(218),U=h($),W=f(219),K=h(W),H=f(220),Y=h(H),G=f(221),J=h(G),Z=f(222),X=h(Z),Q=f(223),ee=h(Q),te=f(224),re=h(te),ae=f(225),oe=h(ae),le=f(226),ue=h(le),ie=f(227),de=h(ie),fe=f(147),ce=h(fe),pe=f(230),ge=h(pe),me=f(231),ye=h(me),be=f(232),he=h(be),ve=f(233),ke=h(ve),Pe=f(234),we=h(Pe),xe=f(236),Me=h(xe),Ce=f(19),Oe=h(Ce),Ae=f(237),Te=h(Ae),Se=f(238),Ee=h(Se),Re=f(239),Ie=h(Re),Fe=f(151),Ne=h(Fe),Le=f(240),Ve=h(Le),Be=f(241),De=h(Be),je=f(242),qe=h(je),ze=f(243),$e=h(ze),Ue=f(244),We=h(Ue),Ke=f(245),He=h(Ke),Ye=f(246),Ge=h(Ye),Je=f(247),Ze=h(Je),Xe=f(248),Qe=h(Xe),et=f(249),tt=h(et),at=f(250),nt=h(at),lt=f(251),ut=h(lt),it=f(252),st=h(it),dt=f(253),ft=h(dt),ct=f(254),pt=h(ct),gt=f(255),mt=h(gt),yt=f(256),bt=h(yt),ht=f(257),vt=h(ht),kt=f(258),Pt=h(kt),wt=f(260),xt=h(wt),Mt=f(261),Ct=h(Mt),Ot=f(262),At=h(Ot),Tt=f(263),St=h(Tt),Et=f(264),Rt=h(Et),It=f(265),Ft=h(It),Nt=f(100),Lt=h(Nt),Vt=f(152),Bt=h(Vt),Dt=f(266),jt=h(Dt),qt=f(267),zt=h(qt),$t=f(268),Ut=h($t),Wt=f(269),Kt=h(Wt),Ht=f(270),Yt=h(Ht),Gt=f(271),Jt=h(Gt),Zt=f(272),Xt=h(Zt),Qt=f(273),er=h(Qt);u.default={chunk:w.default,compact:C.default,concat:T.default,difference:E.default,differenceBy:I.default,differenceWith:N.default,drop:D.default,dropRight:z.default,dropRightWhile:U.default,dropWhile:K.default,fill:Y.default,findIndex:J.default,findLastIndex:X.default,first:ee.default,flatten:re.default,flattenDeep:oe.default,flattenDepth:ue.default,fromPairs:de.default,head:ce.default,indexOf:ge.default,initial:ye.default,intersection:he.default,intersectionBy:ke.default,intersectionWith:we.default,join:Me.default,last:Oe.default,lastIndexOf:Te.default,nth:Ee.default,pull:Ie.default,pullAll:Ne.default,pullAllBy:Ve.default,pullAllWith:De.default,pullAt:qe.default,remove:$e.default,reverse:We.default,slice:He.default,sortedIndex:Ge.default,sortedIndexBy:Ze.default,sortedIndexOf:Qe.default,sortedLastIndex:tt.default,sortedLastIndexBy:nt.default,sortedLastIndexOf:ut.default,sortedUniq:st.default,sortedUniqBy:ft.default,tail:pt.default,take:mt.default,takeRight:bt.default,takeRightWhile:vt.default,takeWhile:Pt.default,union:xt.default,unionBy:Ct.default,unionWith:At.default,uniq:St.default,uniqBy:Rt.default,uniqWith:Ft.default,unzip:Lt.default,unzipWith:Bt.default,without:jt.default,xor:zt.default,xorBy:Ut.default,xorWith:Kt.default,zip:Yt.default,zipObject:Jt.default,zipObjectDeep:Xt.default,zipWith:er.default}},function(r,u,f){'use strict';function h(ze){return ze&&ze.__esModule?ze:{default:ze}}Object.defineProperty(u,'__esModule',{value:!0});var P=f(212);Object.defineProperty(u,'chunk',{enumerable:!0,get:function(){return h(P).default}});var w=f(213);Object.defineProperty(u,'compact',{enumerable:!0,get:function(){return h(w).default}});var M=f(214);Object.defineProperty(u,'concat',{enumerable:!0,get:function(){return h(M).default}});var C=f(215);Object.defineProperty(u,'difference',{enumerable:!0,get:function(){return h(C).default}});var O=f(216);Object.defineProperty(u,'differenceBy',{enumerable:!0,get:function(){return h(O).default}});var T=f(217);Object.defineProperty(u,'differenceWith',{enumerable:!0,get:function(){return h(T).default}});var S=f(145);Object.defineProperty(u,'drop',{enumerable:!0,get:function(){return h(S).default}});var E=f(146);Object.defineProperty(u,'dropRight',{enumerable:!0,get:function(){return h(E).default}});var R=f(218);Object.defineProperty(u,'dropRightWhile',{enumerable:!0,get:function(){return h(R).default}});var I=f(219);Object.defineProperty(u,'dropWhile',{enumerable:!0,get:function(){return h(I).default}});var F=f(220);Object.defineProperty(u,'fill',{enumerable:!0,get:function(){return h(F).default}});var N=f(221);Object.defineProperty(u,'findIndex',{enumerable:!0,get:function(){return h(N).default}});var V=f(222);Object.defineProperty(u,'findLastIndex',{enumerable:!0,get:function(){return h(V).default}});var D=f(223);Object.defineProperty(u,'first',{enumerable:!0,get:function(){return h(D).default}});var q=f(224);Object.defineProperty(u,'flatten',{enumerable:!0,get:function(){return h(q).default}});var z=f(225);Object.defineProperty(u,'flattenDeep',{enumerable:!0,get:function(){return h(z).default}});var $=f(226);Object.defineProperty(u,'flattenDepth',{enumerable:!0,get:function(){return h($).default}});var U=f(227);Object.defineProperty(u,'fromPairs',{enumerable:!0,get:function(){return h(U).default}});var W=f(147);Object.defineProperty(u,'head',{enumerable:!0,get:function(){return h(W).default}});var K=f(230);Object.defineProperty(u,'indexOf',{enumerable:!0,get:function(){return h(K).default}});var H=f(231);Object.defineProperty(u,'initial',{enumerable:!0,get:function(){return h(H).default}});var Y=f(232);Object.defineProperty(u,'intersection',{enumerable:!0,get:function(){return h(Y).default}});var G=f(233);Object.defineProperty(u,'intersectionBy',{enumerable:!0,get:function(){return h(G).default}});var J=f(234);Object.defineProperty(u,'intersectionWith',{enumerable:!0,get:function(){return h(J).default}});var Z=f(236);Object.defineProperty(u,'join',{enumerable:!0,get:function(){return h(Z).default}});var X=f(19);Object.defineProperty(u,'last',{enumerable:!0,get:function(){return h(X).default}});var Q=f(237);Object.defineProperty(u,'lastIndexOf',{enumerable:!0,get:function(){return h(Q).default}});var ee=f(238);Object.defineProperty(u,'nth',{enumerable:!0,get:function(){return h(ee).default}});var te=f(239);Object.defineProperty(u,'pull',{enumerable:!0,get:function(){return h(te).default}});var re=f(151);Object.defineProperty(u,'pullAll',{enumerable:!0,get:function(){return h(re).default}});var ae=f(240);Object.defineProperty(u,'pullAllBy',{enumerable:!0,get:function(){return h(ae).default}});var oe=f(241);Object.defineProperty(u,'pullAllWith',{enumerable:!0,get:function(){return h(oe).default}});var le=f(242);Object.defineProperty(u,'pullAt',{enumerable:!0,get:function(){return h(le).default}});var ue=f(243);Object.defineProperty(u,'remove',{enumerable:!0,get:function(){return h(ue).default}});var ie=f(244);Object.defineProperty(u,'reverse',{enumerable:!0,get:function(){return h(ie).default}});var de=f(245);Object.defineProperty(u,'slice',{enumerable:!0,get:function(){return h(de).default}});var fe=f(246);Object.defineProperty(u,'sortedIndex',{enumerable:!0,get:function(){return h(fe).default}});var ce=f(247);Object.defineProperty(u,'sortedIndexBy',{enumerable:!0,get:function(){return h(ce).default}});var pe=f(248);Object.defineProperty(u,'sortedIndexOf',{enumerable:!0,get:function(){return h(pe).default}});var ge=f(249);Object.defineProperty(u,'sortedLastIndex',{enumerable:!0,get:function(){return h(ge).default}});var me=f(250);Object.defineProperty(u,'sortedLastIndexBy',{enumerable:!0,get:function(){return h(me).default}});var ye=f(251);Object.defineProperty(u,'sortedLastIndexOf',{enumerable:!0,get:function(){return h(ye).default}});var be=f(252);Object.defineProperty(u,'sortedUniq',{enumerable:!0,get:function(){return h(be).default}});var he=f(253);Object.defineProperty(u,'sortedUniqBy',{enumerable:!0,get:function(){return h(he).default}});var ve=f(254);Object.defineProperty(u,'tail',{enumerable:!0,get:function(){return h(ve).default}});var ke=f(255);Object.defineProperty(u,'take',{enumerable:!0,get:function(){return h(ke).default}});var Pe=f(256);Object.defineProperty(u,'takeRight',{enumerable:!0,get:function(){return h(Pe).default}});var we=f(257);Object.defineProperty(u,'takeRightWhile',{enumerable:!0,get:function(){return h(we).default}});var xe=f(258);Object.defineProperty(u,'takeWhile',{enumerable:!0,get:function(){return h(xe).default}});var Me=f(260);Object.defineProperty(u,'union',{enumerable:!0,get:function(){return h(Me).default}});var Ce=f(261);Object.defineProperty(u,'unionBy',{enumerable:!0,get:function(){return h(Ce).default}});var Oe=f(262);Object.defineProperty(u,'unionWith',{enumerable:!0,get:function(){return h(Oe).default}});var Ae=f(263);Object.defineProperty(u,'uniq',{enumerable:!0,get:function(){return h(Ae).default}});var Te=f(264);Object.defineProperty(u,'uniqBy',{enumerable:!0,get:function(){return h(Te).default}});var Se=f(265);Object.defineProperty(u,'uniqWith',{enumerable:!0,get:function(){return h(Se).default}});var Ee=f(100);Object.defineProperty(u,'unzip',{enumerable:!0,get:function(){return h(Ee).default}});var Re=f(152);Object.defineProperty(u,'unzipWith',{enumerable:!0,get:function(){return h(Re).default}});var Ie=f(266);Object.defineProperty(u,'without',{enumerable:!0,get:function(){return h(Ie).default}});var Fe=f(267);Object.defineProperty(u,'xor',{enumerable:!0,get:function(){return h(Fe).default}});var Ne=f(268);Object.defineProperty(u,'xorBy',{enumerable:!0,get:function(){return h(Ne).default}});var Le=f(269);Object.defineProperty(u,'xorWith',{enumerable:!0,get:function(){return h(Le).default}});var Ve=f(270);Object.defineProperty(u,'zip',{enumerable:!0,get:function(){return h(Ve).default}});var Be=f(271);Object.defineProperty(u,'zipObject',{enumerable:!0,get:function(){return h(Be).default}});var De=f(272);Object.defineProperty(u,'zipObjectDeep',{enumerable:!0,get:function(){return h(De).default}});var je=f(273);Object.defineProperty(u,'zipWith',{enumerable:!0,get:function(){return h(je).default}});var qe=f(496);Object.defineProperty(u,'default',{enumerable:!0,get:function(){return h(qe).default}})},function(r,u,f){'use strict';function h($){return $&&$.__esModule?$:{default:$}}Object.defineProperty(u,'__esModule',{value:!0});var P=f(68),w=h(P),M=f(140),C=h(M),O=f(456),T=h(O),S=f(97),E=h(S),R=f(93),I=h(R),F=f(506),N=h(F),V=Object.prototype,D=V.propertyIsEnumerable,q=!D.call({valueOf:1},'valueOf'),z=(0,T.default)(function($,U){if(q||(0,I.default)(U)||(0,E.default)(U))return void(0,C.default)(U,(0,N.default)(U),$);for(var W in U)(0,w.default)($,W,U[W])});u.default=z},function(r,u,f){'use strict';Object.defineProperty(u,'__esModule',{value:!0});var w=f(197),M=function(C){return C&&C.__esModule?C:{default:C}}(w);u.default=function(C,O){return(0,M.default)(C,!0,!0,O)}},function(r,u){'use strict';Object.defineProperty(u,'__esModule',{value:!0}),u.default=function(P){return function(){return P}}},function(r,u,f){'use strict';function h(T){return T&&T.__esModule?T:{default:T}}Object.defineProperty(u,'__esModule',{value:!0});var w=f(433),M=h(w),C=f(464),O=h(C);u.default=function(T,S){return null!=T&&(0,O.default)(T,S,M.default)}},function(r,u,f){'use strict';(function(h){function P(V){return V&&V.__esModule?V:{default:V}}Object.defineProperty(u,'__esModule',{value:!0});var w='function'==typeof Symbol&&'symbol'==typeof Symbol.iterator?function(V){return typeof V}:function(V){return V&&'function'==typeof Symbol&&V.constructor===Symbol&&V!==Symbol.prototype?'symbol':typeof V},M=f(500),C=P(M),O=f(30),T=P(O),S={'function':!0,object:!0},E=S[w(u)]&&u&&!u.nodeType?u:void 0,R=S[w(h)]&&h&&!h.nodeType?h:void 0,I=R&&R.exports===E?E:void 0,F=I?T.default.Buffer:void 0,N=F?function(V){return V instanceof F}:(0,C.default)(!1);u.default=N}).call(u,f(102)(r))},function(r,u,f){'use strict';function h(T){return T&&T.__esModule?T:{default:T}}Object.defineProperty(u,'__esModule',{value:!0});var w=f(46),M=h(w),C=f(99),O=h(C);u.default=function(T){return!!T&&1===T.nodeType&&(0,M.default)(T)&&!(0,O.default)(T)}},function(r,u,f){'use strict';Object.defineProperty(u,'__esModule',{value:!0});var w=f(131),M=function(C){return C&&C.__esModule?C:{default:C}}(w);u.default=function(C,O){return(0,M.default)(C,O)}},function(r,u,f){'use strict';function h(le){return le&&le.__esModule?le:{default:le}}Object.defineProperty(u,'__esModule',{value:!0});var w=f(98),M=h(w),C=f(46),O=h(C),re={};re['[object Float32Array]']=re['[object Float64Array]']=re['[object Int8Array]']=re['[object Int16Array]']=re['[object Int32Array]']=re['[object Uint8Array]']=re['[object Uint8ClampedArray]']=re['[object Uint16Array]']=re['[object Uint32Array]']=!0,re['[object Arguments]']=re['[object Array]']=re['[object ArrayBuffer]']=re['[object Boolean]']=re['[object DataView]']=re['[object Date]']=re['[object Error]']=re['[object Function]']=re['[object Map]']=re['[object Number]']=re['[object Object]']=re['[object RegExp]']=re['[object Set]']=re['[object String]']=re['[object WeakMap]']=!1;var ae=Object.prototype,oe=ae.toString;u.default=function(le){return(0,O.default)(le)&&(0,M.default)(le.length)&&!!re[oe.call(le)]}},function(r,u,f){'use strict';function h(N){return N&&N.__esModule?N:{default:N}}Object.defineProperty(u,'__esModule',{value:!0});var w=f(438),M=h(w),C=f(207),O=h(C),T=f(37),S=h(T),E=f(93),R=h(E),I=Object.prototype,F=I.hasOwnProperty;u.default=function(N){for(var V=-1,D=(0,R.default)(N),q=(0,M.default)(N),z=q.length,$=(0,O.default)(N),W=$||[],K=W.length,H;++VT?-1:1;return S*1.7976931348623157e308}return T===T?T:0}},function(r,u,f){'use strict';function h(S){return S&&S.__esModule?S:{default:S}}Object.defineProperty(u,'__esModule',{value:!0});var w=f(429),M=h(w),C=f(15),O=h(C);u.default=function(S){return S?(0,M.default)((0,O.default)(S),0,4294967295):0}},function(r,u,f){'use strict';function h(T){return T&&T.__esModule?T:{default:T}}Object.defineProperty(u,'__esModule',{value:!0});var P=f(458),w=h(P),M=f(70),C=h(M),O=(0,w.default)(C.default);u.default=O},function(r,u,f){'use strict';Object.defineProperty(u,'__esModule',{value:!0});var w=f(445),M=function(C){return C&&C.__esModule?C:{default:C}}(w);u.default=function(C){return null==C?'':(0,M.default)(C)}},function(r,u,f){'use strict';function h(C,O){if(!(C instanceof O))throw new TypeError('Cannot call a class as a function')}Object.defineProperty(u,'__esModule',{value:!0});var P=function(){function C(O,T){for(var S=0,E;S * {\n margin-right: 0.4em; }\n .ck-toolbar > *:last-child {\n margin-right: 0; }\n\n.ck-dropdown::after {\n border-style: solid;\n border-width: .4em .4em 0 .4em;\n border-color: #707070 transparent;\n right: 0.8em; }\n\n.ck-dropdown .ck-button.ck-dropdown__button {\n padding-right: 1.6em; }\n .ck-dropdown .ck-button.ck-dropdown__button .ck-button__label {\n width: 7em;\n overflow: hidden;\n text-overflow: ellipsis; }\n\n.ck-dropdown__panel {\n border: 1px solid #b9b9b9;\n bottom: 1px;\n background: white;\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.2); }\n .ck-dropdown__panel.ck-rounded-corners,\n .ck-rounded-corners .ck-dropdown__panel {\n border-radius: 2px; }\n\n.ck-list {\n -moz-user-select: none;\n -webkit-user-select: none;\n -ms-user-select: none;\n list-style-type: none;\n background: white; }\n .ck-list.ck-rounded-corners,\n .ck-rounded-corners .ck-list {\n border-radius: 2px; }\n .ck-list__item {\n padding: 0.64em;\n cursor: default;\n min-width: 12em; }\n .ck-list__item:hover, .ck-list__item:focus {\n background: #f7f7f7; }\n .ck-list__item:focus {\n box-shadow: 0 0 3px 2px #9bcdfb;\n position: relative;\n z-index: 1;\n outline: none; }\n .ck-list__item:last-of-type {\n border: none; }\n .ck-list__item_active {\n background: #1a8bf1;\n color: white; }\n .ck-list__item_active:hover, .ck-list__item_active:focus {\n background: #0e7ee2; }\n\n.ck-label {\n font-weight: bold; }\n\n.ck-input-text {\n box-shadow: 2px 2px 3px #e6e6e6 inset;\n border: 1px solid #b9b9b9;\n padding: 0.64em;\n min-width: 250px; }\n .ck-input-text.ck-rounded-corners,\n .ck-rounded-corners .ck-input-text {\n border-radius: 2px; }\n .ck-input-text:focus {\n outline: none;\n border: 1px solid #6ab5f9;\n box-shadow: 0 0 3px 2px #9bcdfb, 2px 2px 3px #e6e6e6 inset; }\n\n.ck-balloon-panel {\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.2);\n min-width: 50px;\n min-height: 15px;\n background: white;\n border: 1px solid #b9b9b9; }\n .ck-balloon-panel.ck-rounded-corners,\n .ck-rounded-corners .ck-balloon-panel {\n border-radius: 2px; }\n .ck-balloon-panel:before, .ck-balloon-panel:after {\n width: 0;\n height: 0;\n border-style: solid; }\n .ck-balloon-panel_arrow_s:before, .ck-balloon-panel_arrow_s:after, .ck-balloon-panel_arrow_se:before, .ck-balloon-panel_arrow_se:after, .ck-balloon-panel_arrow_sw:before, .ck-balloon-panel_arrow_sw:after {\n border-width: 0 10px 15px 10px; }\n .ck-balloon-panel_arrow_s:before, .ck-balloon-panel_arrow_se:before, .ck-balloon-panel_arrow_sw:before {\n border-color: transparent transparent #b9b9b9 transparent; }\n .ck-balloon-panel_arrow_s:after, .ck-balloon-panel_arrow_se:after, .ck-balloon-panel_arrow_sw:after {\n border-color: transparent transparent white transparent;\n margin-top: 2px; }\n .ck-balloon-panel_arrow_n:before, .ck-balloon-panel_arrow_n:after, .ck-balloon-panel_arrow_ne:before, .ck-balloon-panel_arrow_ne:after, .ck-balloon-panel_arrow_nw:before, .ck-balloon-panel_arrow_nw:after {\n border-width: 15px 10px 0 10px; }\n .ck-balloon-panel_arrow_n:before, .ck-balloon-panel_arrow_ne:before, .ck-balloon-panel_arrow_nw:before {\n border-color: #b9b9b9 transparent transparent; }\n .ck-balloon-panel_arrow_n:after, .ck-balloon-panel_arrow_ne:after, .ck-balloon-panel_arrow_nw:after {\n border-color: white transparent transparent transparent;\n margin-bottom: 2px; }\n .ck-balloon-panel_arrow_s:before, .ck-balloon-panel_arrow_s:after {\n left: 50%;\n margin-left: -10px;\n top: -15px; }\n .ck-balloon-panel_arrow_se:before, .ck-balloon-panel_arrow_se:after {\n left: 20px;\n top: -15px; }\n .ck-balloon-panel_arrow_sw:before, .ck-balloon-panel_arrow_sw:after {\n right: 20px;\n top: -15px; }\n .ck-balloon-panel_arrow_n:before, .ck-balloon-panel_arrow_n:after {\n left: 50%;\n margin-left: -10px;\n bottom: -15px; }\n .ck-balloon-panel_arrow_ne:before, .ck-balloon-panel_arrow_ne:after {\n left: 20px;\n bottom: -15px; }\n .ck-balloon-panel_arrow_nw:before, .ck-balloon-panel_arrow_nw:after {\n right: 20px;\n bottom: -15px; }\n\n.ck-floating-panel {\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.2);\n border: 1px solid #bfbfbf;\n background: #f7f7f7; }\n .ck-floating-panel.ck-rounded-corners,\n .ck-rounded-corners .ck-floating-panel {\n border-radius: 2px; }\n\n.ck-toolbar__container {\n background: #f7f7f7; }\n .ck-toolbar__container .ck-toolbar {\n border-radius: 0;\n border: 0; }\n .ck-toolbar__container .ck-toolbar .ck-button {\n border-width: 0; }\n .ck-toolbar__container .ck-toolbar .ck-button:not(:hover):not(:focus):not(.ck-on), .ck-toolbar__container .ck-toolbar .ck-button.ck-disabled {\n background: #f7f7f7; }\n .ck-toolbar__container .ck-toolbar .ck-button.ck-on {\n background: #dedede;\n border-color: #a1a1a1; }\n .ck-toolbar__container .ck-toolbar .ck-button.ck-on:not(.ck-disabled):hover, .ck-toolbar__container .ck-toolbar .ck-button.ck-on:not(.ck-disabled):focus {\n background: #c6c6c6;\n border-color: #888888; }\n .ck-toolbar__container .ck-toolbar .ck-button.ck-on:not(.ck-disabled):active {\n background: #b9b9b9;\n border-color: #7c7c7c;\n box-shadow: inset 0 2px 2px #a1a1a1; }\n .ck-toolbar__container .ck-toolbar .ck-dropdown__button {\n border-width: 1px; }\n .ck-toolbar__container .ck-toolbar .ck-dropdown__button:not(:hover):not(:focus):not(.ck-on) {\n background: white; }\n .ck-toolbar__container.ck-balloon-panel_arrow_s:after, .ck-toolbar__container.ck-balloon-panel_arrow_se:after, .ck-toolbar__container.ck-balloon-panel_arrow_sw:after {\n border-bottom-color: #f7f7f7; }\n .ck-toolbar__container.ck-balloon-panel_arrow_n:after, .ck-toolbar__container.ck-balloon-panel_arrow_ne:after, .ck-toolbar__container.ck-balloon-panel_arrow_nw:after {\n border-top-color: #f7f7f7; }\n\n.ck-editor .ck-toolbar.ck-toolbar_sticky {\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.2);\n border: 1px solid #bfbfbf;\n border-width: 0 0 1px;\n background: #f7f7f7; }\n\n.ck-editor {\n position: relative; }\n .ck-editor.ck-rounded-corners,\n .ck-rounded-corners .ck-editor {\n border-radius: 2px; }\n .ck-editor .ck-editor__top .ck-toolbar {\n border-radius: 0;\n border-top: 0;\n border-left: 0;\n border-right: 0; }\n .ck-editor .ck-editor__top .ck-toolbar .ck-button {\n border-width: 0; }\n .ck-editor .ck-editor__top .ck-toolbar .ck-button:not(:hover):not(:focus):not(.ck-on), .ck-editor .ck-editor__top .ck-toolbar .ck-button.ck-disabled {\n background: #f7f7f7; }\n .ck-editor .ck-editor__top .ck-toolbar .ck-button.ck-on {\n background: #dedede;\n border-color: #a1a1a1; }\n .ck-editor .ck-editor__top .ck-toolbar .ck-button.ck-on:not(.ck-disabled):hover, .ck-editor .ck-editor__top .ck-toolbar .ck-button.ck-on:not(.ck-disabled):focus {\n background: #c6c6c6;\n border-color: #888888; }\n .ck-editor .ck-editor__top .ck-toolbar .ck-button.ck-on:not(.ck-disabled):active {\n background: #b9b9b9;\n border-color: #7c7c7c;\n box-shadow: inset 0 2px 2px #a1a1a1; }\n .ck-editor .ck-editor__top .ck-toolbar .ck-dropdown__button {\n border-width: 1px; }\n .ck-editor .ck-editor__top .ck-toolbar .ck-dropdown__button:not(:hover):not(:focus):not(.ck-on) {\n background: white; }\n .ck-editor .ck-editor__main {\n background: white; }\n .ck-editor .ck-editor__bottom {\n border-bottom: 0;\n border-left: 0;\n border-right: 0;\n padding: 0.8em; }\n .ck-editor .ck-editor__editable.ck-focused {\n outline: 1px solid #6ab5f9;\n box-shadow: 2px 2px 3px #e6e6e6 inset; }\n .ck-editor .ck-editor__editable_inline {\n overflow: auto;\n padding: 0 0.8em; }\n\n.ck-editor,\n.ck-editor-bottom {\n background: #f7f7f7;\n border: 1px solid #b9b9b9; }\n',''])},function(r,u,f){u=r.exports=f(32)(void 0),u.push([r.i,'.ck-placeholder::before {\n content: attr(data-placeholder);\n cursor: text;\n color: #c2c2c2; }\n',''])},function(r,u,f){u=r.exports=f(32)(void 0),u.push([r.i,'/**\n * Default spacing value ("unit").\n *\n */\n/**\n * Internal map with default spacings.\n *\n * @type Map\n * @see ck-spacing\n */\n/**\n * Returns a spacing value with units for given name.\n *\n * @param {String} $spacing [ \'standard\' ] - Spacing level.\n * @return {String}\n * @see $ck-def-spacing\n * @see $ck-def-spacings\n */\n/**\n * Base font size.\n *\n * @see $ck-font-sizes\n */\n/**\n * Base font face.\n *\n */\n/**\n * Base font sizes for scaling.\n *\n * @see ck-font-size\n */\n/**\n * Returns font-size in units for given level.\n *\n * @param {Number} $level [ 0 ] - Size of the font.\n * @return {String}\n * @see $ck-font-sizes\n * @see $ck-font-size-base\n */\n.ck-heading_heading1 {\n font-size: 1.5em; }\n\n.ck-heading_heading2 {\n font-size: 1.3em; }\n\n.ck-heading_heading3 {\n font-size: 1.1em; }\n\n[class*="ck-heading_"] {\n line-height: 21.6px;\n padding: 9.6px; }\n\n[class*="ck-heading_heading"] {\n font-weight: bold; }\n\n.ck-dropdown.ck-heading-dropdown .ck-dropdown__button .ck-button__label {\n width: 8em; }\n',''])},function(r,u,f){u=r.exports=f(32)(void 0),u.push([r.i,'@charset "UTF-8";\n/**\n * Colors configured by the user.\n *\n * @type Map\n * @example\n *\t\t$ck-colors: ( \'foreground\': red );\n * @see $_ck-colors\n */\n/**\n * Internal map with default colors.\n *\n * @type Map\n * @see ck-color-add\n */\n/**\n * Returns a color of given name and lightness offset.\n *\n * @param {String} $name [ \'background\' ] - Name of the color.\n * @param {Number} $offset [ 0 ] - Offset of the lightness.\n * @return {String}\n * @see $_ck-colors\n */\n/**\n * Returns a border\u2013color for a given name and lightness offset.\n *\n * @param {String} $name [ \'background\' ] - Name of the color.\n * @param {Number} $offset [ 0 ] - Offset of the lightness.\n * @return {String}\n * @see $ck-color\n */\n/**\n * Adds a color to internal color map.\n *\n * @example\n *\t\t@include ck-color-add( ( \'special\': yellow, \'hover\': #00FF00 ) );\n * @param {Map} $map - A map with new colors.\n * @see $_ck-colors\n */\n/**\n * Default spacing value ("unit").\n *\n */\n/**\n * Internal map with default spacings.\n *\n * @type Map\n * @see ck-spacing\n */\n/**\n * Returns a spacing value with units for given name.\n *\n * @param {String} $spacing [ \'standard\' ] - Spacing level.\n * @return {String}\n * @see $ck-def-spacing\n * @see $ck-def-spacings\n */\n/**\n * Base font size.\n *\n * @see $ck-font-sizes\n */\n/**\n * Base font face.\n *\n */\n/**\n * Base font sizes for scaling.\n *\n * @see ck-font-size\n */\n/**\n * Returns font-size in units for given level.\n *\n * @param {Number} $level [ 0 ] - Size of the font.\n * @return {String}\n * @see $ck-font-sizes\n * @see $ck-font-size-base\n */\n.ck-editor__editable .image > figcaption {\n background-color: #f7f7f7;\n padding: 0.8em;\n font-size: 0.75rem;\n color: #858585;\n outline-offset: -1px; }\n',''])},function(r,u,f){u=r.exports=f(32)(void 0),u.push([r.i,'/**\n * Default spacing value ("unit").\n *\n */\n/**\n * Internal map with default spacings.\n *\n * @type Map\n * @see ck-spacing\n */\n/**\n * Returns a spacing value with units for given name.\n *\n * @param {String} $spacing [ \'standard\' ] - Spacing level.\n * @return {String}\n * @see $ck-def-spacing\n * @see $ck-def-spacings\n */\n.cke-text-alternative-form {\n padding: 1.2em;\n overflow: hidden; }\n .cke-text-alternative-form .ck-label {\n margin-bottom: 0.4em; }\n .cke-text-alternative-form__actions {\n clear: both;\n padding-top: 1.2em; }\n .cke-text-alternative-form__actions .ck-button {\n float: right; }\n .cke-text-alternative-form__actions .ck-button + .ck-button {\n margin-right: 0.64em; }\n .cke-text-alternative-form__actions .ck-button + .ck-button + .ck-button {\n float: left; }\n',''])},function(r,u,f){u=r.exports=f(32)(void 0),u.push([r.i,'.ck-editor__editable .image {\n text-align: center;\n clear: both; }\n .ck-editor__editable .image.image-style-side {\n float: right;\n margin-left: 0.8em;\n max-width: 50%; }\n\n.ck-editor__editable .image > img {\n display: block;\n margin: 0 auto;\n max-width: 100%; }\n',''])},function(r,u,f){u=r.exports=f(32)(void 0),u.push([r.i,'/**\n * Default spacing value ("unit").\n *\n */\n/**\n * Internal map with default spacings.\n *\n * @type Map\n * @see ck-spacing\n */\n/**\n * Returns a spacing value with units for given name.\n *\n * @param {String} $spacing [ \'standard\' ] - Spacing level.\n * @return {String}\n * @see $ck-def-spacing\n * @see $ck-def-spacings\n */\n.ck-link-form {\n padding: 1.2em;\n overflow: hidden; }\n .ck-link-form .ck-label {\n margin-bottom: 0.4em; }\n .ck-link-form__actions {\n clear: both;\n padding-top: 1.2em; }\n .ck-link-form__actions .ck-button {\n float: right; }\n .ck-link-form__actions .ck-button + .ck-button {\n margin-right: 0.64em; }\n .ck-link-form__actions .ck-button + .ck-button + .ck-button {\n float: left; }\n',''])},function(r,u,f){u=r.exports=f(32)(void 0),u.push([r.i,'@charset "UTF-8";\n/**\n * Colors configured by the user.\n *\n * @type Map\n * @example\n *\t\t$ck-colors: ( \'foreground\': red );\n * @see $_ck-colors\n */\n/**\n * Internal map with default colors.\n *\n * @type Map\n * @see ck-color-add\n */\n/**\n * Returns a color of given name and lightness offset.\n *\n * @param {String} $name [ \'background\' ] - Name of the color.\n * @param {Number} $offset [ 0 ] - Offset of the lightness.\n * @return {String}\n * @see $_ck-colors\n */\n/**\n * Returns a border\u2013color for a given name and lightness offset.\n *\n * @param {String} $name [ \'background\' ] - Name of the color.\n * @param {Number} $offset [ 0 ] - Offset of the lightness.\n * @return {String}\n * @see $ck-color\n */\n/**\n * Adds a color to internal color map.\n *\n * @example\n *\t\t@include ck-color-add( ( \'special\': yellow, \'hover\': #00FF00 ) );\n * @param {Map} $map - A map with new colors.\n * @see $_ck-colors\n */\n/**\n * A visual style of element\'s inner shadow (i.e. input).\n */\n/**\n * A visual style of element\'s drop shadow (i.e. panel).\n */\n/**\n * A helper to combine multiple shadows.\n */\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n/**\n * A visual style of focused element\'s outer shadow.\n */\n/**\n * A visual style of focused element\'s border or outline.\n */\n/**\n * A class which indicates that an element holding it is disabled.\n */\n.ck-disabled {\n opacity: .5; }\n\n/**\n * A visual style of focused element\'s border or outline.\n */\n/**\n * Brings visual styling for :focus state.\n */\n/**\n * Default spacing value ("unit").\n *\n */\n/**\n * Internal map with default spacings.\n *\n * @type Map\n * @see ck-spacing\n */\n/**\n * Returns a spacing value with units for given name.\n *\n * @param {String} $spacing [ \'standard\' ] - Spacing level.\n * @return {String}\n * @see $ck-def-spacing\n * @see $ck-def-spacings\n */\n.ck-widget {\n margin: 0.8em 0;\n padding: 0; }\n .ck-widget.ck-widget_selected, .ck-widget.ck-widget_selected:hover {\n outline: 3px solid #6ab5f9; }\n .ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected {\n outline: 3px solid #dddddd; }\n .ck-widget:hover {\n outline: 3px solid #ffd25c; }\n .ck-widget .ck-editable.ck-editable_focused, .ck-widget .ck-editable:focus {\n outline: 1px solid #6ab5f9;\n box-shadow: 2px 2px 3px #e6e6e6 inset;\n background-color: white; }\n',''])},function(r,u,f){var h=f(522);'string'==typeof h&&(h=[[r.i,h,'']]);f(38)(h,{});h.locals&&(r.exports=h.locals),!1},function(r,u,f){var h=f(523);'string'==typeof h&&(h=[[r.i,h,'']]);f(38)(h,{});h.locals&&(r.exports=h.locals),!1},function(r,u,f){var h=f(524);'string'==typeof h&&(h=[[r.i,h,'']]);f(38)(h,{});h.locals&&(r.exports=h.locals),!1},function(r,u,f){var h=f(525);'string'==typeof h&&(h=[[r.i,h,'']]);f(38)(h,{});h.locals&&(r.exports=h.locals),!1},function(r,u,f){var h=f(526);'string'==typeof h&&(h=[[r.i,h,'']]);f(38)(h,{});h.locals&&(r.exports=h.locals),!1},function(r,u,f){var h=f(527);'string'==typeof h&&(h=[[r.i,h,'']]);f(38)(h,{});h.locals&&(r.exports=h.locals),!1},function(r,u,f){var h=f(528);'string'==typeof h&&(h=[[r.i,h,'']]);f(38)(h,{});h.locals&&(r.exports=h.locals),!1},function(r,u,f){var h=f(529);'string'==typeof h&&(h=[[r.i,h,'']]);f(38)(h,{});h.locals&&(r.exports=h.locals),!1},function(r,u,f){f(277),r.exports=f(276)}])});
//# sourceMappingURL=ckeditor.compat.js.map
\ No newline at end of file
diff --git a/build/ckeditor.compat.js.map b/build/ckeditor.compat.js.map
index 4ff95eb5ab..ae40d2919e 100644
--- a/build/ckeditor.compat.js.map
+++ b/build/ckeditor.compat.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///../ckeditor5-engine/src/view/writer.js","webpack:///../ckeditor5-utils/src/uid.js","webpack:///../ckeditor5-utils/src/lib/lodash/rest.js","webpack:///../ckeditor5-engine/src/model/position.js","webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 643aff2caba87d8c5a39","webpack:///../ckeditor5-utils/src/ckeditorerror.js","webpack:///../ckeditor5-engine/src/model/range.js","webpack:///../ckeditor5-core/src/plugin.js","webpack:///../ckeditor5-utils/src/mix.js","webpack:///../ckeditor5-engine/src/model/element.js","webpack:///../ckeditor5-ui/src/template.js","webpack:///../ckeditor5-utils/src/emittermixin.js","webpack:///../ckeditor5-ui/src/view.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseIteratee.js","webpack:///../ckeditor5-utils/src/lib/lodash/isArray.js","webpack:///../ckeditor5-core/src/command/command.js","webpack:///../ckeditor5-utils/src/lib/lodash/isArrayLikeObject.js","webpack:///../ckeditor5-utils/src/lib/lodash/isObject.js","webpack:///../ckeditor5-utils/src/lib/lodash/toInteger.js","webpack:///../ckeditor5-engine/src/model/batch.js","webpack:///../ckeditor5-engine/src/model/delta/deltafactory.js","webpack:///../ckeditor5-engine/src/model/writer.js","webpack:///../ckeditor5-utils/src/lib/lodash/last.js","webpack:///../ckeditor5-engine/src/model/delta/delta.js","webpack:///../ckeditor5-engine/src/view/element.js","webpack:///../ckeditor5-utils/src/keyboard.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseFlatten.js","webpack:///../ckeditor5-engine/src/model/text.js","webpack:///../ckeditor5-engine/src/view/position.js","webpack:///../ckeditor5-ui/src/button/buttonview.js","webpack:///../ckeditor5-utils/src/lib/lodash/_arrayMap.js","webpack:///../ckeditor5-engine/src/model/operation/moveoperation.js","webpack:///../ckeditor5-engine/src/view/text.js","webpack:///../ckeditor5-utils/src/lib/lodash/_root.js","webpack:///../ckeditor5-utils/src/observablemixin.js","webpack:////workspace/ckeditor5/~/css-loader/lib/css-base.js","webpack:///../ckeditor5-engine/src/model/operation/operation.js","webpack:///../ckeditor5-engine/src/model/treewalker.js","webpack:///../ckeditor5-engine/src/view/range.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseSlice.js","webpack:///../ckeditor5-utils/src/lib/lodash/_isIndex.js","webpack:////workspace/ckeditor5/~/style-loader/addStyles.js","webpack:///../ckeditor5-engine/src/model/operation/insertoperation.js","webpack:///../ckeditor5-engine/src/model/operation/removeoperation.js","webpack:///../ckeditor5-engine/src/view/containerelement.js","webpack:///../ckeditor5-image/src/image/utils.js","webpack:///../ckeditor5-utils/src/isiterable.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseUniq.js","webpack:///../ckeditor5-utils/src/lib/lodash/extend.js","webpack:///../ckeditor5-utils/src/lib/lodash/isObjectLike.js","webpack:///../ckeditor5-utils/src/lib/lodash/isSymbol.js","webpack:///../ckeditor5-utils/src/log.js","webpack:///../ckeditor5-engine/src/conversion/buildmodelconverter.js","webpack:///../ckeditor5-engine/src/conversion/buildviewconverter.js","webpack:///../ckeditor5-engine/src/model/documentfragment.js","webpack:///../ckeditor5-engine/src/view/observer/observer.js","webpack:///../ckeditor5-engine/src/view/treewalker.js","webpack:///../ckeditor5-utils/src/comparearrays.js","webpack:///../ckeditor5-utils/src/lib/lodash/_getNative.js","webpack:///../ckeditor5-utils/src/lib/lodash/_isKey.js","webpack:///../ckeditor5-utils/src/lib/lodash/_toKey.js","webpack:///../ckeditor5-utils/src/lib/lodash/eq.js","webpack:///../ckeditor5-engine/src/model/node.js","webpack:///../ckeditor5-engine/src/model/selection.js","webpack:///../ckeditor5-engine/src/model/textproxy.js","webpack:///../ckeditor5-engine/src/view/filler.js","webpack:///../ckeditor5-engine/src/view/observer/domeventobserver.js","webpack:///../ckeditor5-engine/src/view/selection.js","webpack:///../ckeditor5-utils/src/dom/global.js","webpack:///../ckeditor5-utils/src/focustracker.js","webpack:///../ckeditor5-utils/src/keystrokehandler.js","webpack:///../ckeditor5-utils/src/lib/lodash/_assignValue.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseDifference.js","webpack:///../ckeditor5-utils/src/lib/lodash/keys.js","webpack:///../ckeditor5-engine/src/model/nodelist.js","webpack:///../ckeditor5-engine/src/model/operation/attributeoperation.js","webpack:///../ckeditor5-engine/src/model/operation/nooperation.js","webpack:///../ckeditor5-engine/src/view/editableelement.js","webpack:///../ckeditor5-engine/src/view/node.js","webpack:///../ckeditor5-paragraph/src/paragraph.js","webpack:///../ckeditor5-utils/src/collection.js","webpack:///../ckeditor5-utils/src/dom/emittermixin.js","webpack:///../ckeditor5-utils/src/first.js","webpack:///../ckeditor5-utils/src/lib/lodash/_ListCache.js","webpack:///../ckeditor5-utils/src/lib/lodash/_SetCache.js","webpack:///../ckeditor5-utils/src/lib/lodash/_arrayFilter.js","webpack:///../ckeditor5-utils/src/lib/lodash/_arrayPush.js","webpack:///../ckeditor5-utils/src/lib/lodash/_assocIndexOf.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseSortedIndex.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseWhile.js","webpack:///../ckeditor5-utils/src/lib/lodash/_castPath.js","webpack:///../ckeditor5-utils/src/lib/lodash/_getMapData.js","webpack:///../ckeditor5-utils/src/lib/lodash/_isHostObject.js","webpack:///../ckeditor5-utils/src/lib/lodash/_isIterateeCall.js","webpack:///../ckeditor5-utils/src/lib/lodash/_isPrototype.js","webpack:///../ckeditor5-utils/src/lib/lodash/_nativeCreate.js","webpack:///../ckeditor5-utils/src/lib/lodash/_setToArray.js","webpack:///../ckeditor5-utils/src/lib/lodash/clone.js","webpack:///../ckeditor5-utils/src/lib/lodash/isArrayLike.js","webpack:///../ckeditor5-utils/src/lib/lodash/isLength.js","webpack:///../ckeditor5-utils/src/lib/lodash/isPlainObject.js","webpack:///../ckeditor5-utils/src/lib/lodash/unzip.js","webpack:///../ckeditor5-widget/src/utils.js","webpack:///(webpack)/buildin/module.js","webpack:///../ckeditor5-core/src/command/helpers/getschemavalidranges.js","webpack:///../ckeditor5-engine/src/conversion/model-to-view-converters.js","webpack:///../ckeditor5-engine/src/model/delta/insertdelta.js","webpack:///../ckeditor5-engine/src/model/delta/mergedelta.js","webpack:///../ckeditor5-engine/src/model/delta/movedelta.js","webpack:///../ckeditor5-engine/src/model/delta/removedelta.js","webpack:///../ckeditor5-engine/src/model/delta/splitdelta.js","webpack:///../ckeditor5-engine/src/model/delta/transform.js","webpack:///../ckeditor5-engine/src/model/delta/unwrapdelta.js","webpack:///../ckeditor5-engine/src/model/delta/wrapdelta.js","webpack:///../ckeditor5-engine/src/model/liverange.js","webpack:///../ckeditor5-engine/src/model/operation/markeroperation.js","webpack:///../ckeditor5-engine/src/model/operation/reinsertoperation.js","webpack:///../ckeditor5-engine/src/model/operation/renameoperation.js","webpack:///../ckeditor5-engine/src/model/operation/rootattributeoperation.js","webpack:///../ckeditor5-engine/src/view/attributeelement.js","webpack:///../ckeditor5-engine/src/view/documentfragment.js","webpack:///../ckeditor5-engine/src/view/observer/domeventdata.js","webpack:///../ckeditor5-ui/src/focuscycler.js","webpack:///../ckeditor5-ui/src/viewcollection.js","webpack:///../ckeditor5-utils/src/lib/lodash/_MapCache.js","webpack:///../ckeditor5-utils/src/lib/lodash/_Stack.js","webpack:///../ckeditor5-utils/src/lib/lodash/_Symbol.js","webpack:///../ckeditor5-utils/src/lib/lodash/_arrayIncludes.js","webpack:///../ckeditor5-utils/src/lib/lodash/_arrayIncludesWith.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseGet.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseIndexOf.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseIntersection.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseIsEqual.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseProperty.js","webpack:///../ckeditor5-utils/src/lib/lodash/_basePullAll.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseSortedIndexBy.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseUnary.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseXor.js","webpack:///../ckeditor5-utils/src/lib/lodash/_cacheHas.js","webpack:///../ckeditor5-utils/src/lib/lodash/_castArrayLikeObject.js","webpack:///../ckeditor5-utils/src/lib/lodash/_cloneArrayBuffer.js","webpack:///../ckeditor5-utils/src/lib/lodash/_copyObject.js","webpack:///../ckeditor5-utils/src/lib/lodash/_getPrototype.js","webpack:///../ckeditor5-utils/src/lib/lodash/_getTag.js","webpack:///../ckeditor5-utils/src/lib/lodash/_mapToArray.js","webpack:///../ckeditor5-utils/src/lib/lodash/debounce.js","webpack:///../ckeditor5-utils/src/lib/lodash/drop.js","webpack:///../ckeditor5-utils/src/lib/lodash/dropRight.js","webpack:///../ckeditor5-utils/src/lib/lodash/head.js","webpack:///../ckeditor5-utils/src/lib/lodash/isArguments.js","webpack:///../ckeditor5-utils/src/lib/lodash/isFunction.js","webpack:///../ckeditor5-utils/src/lib/lodash/isString.js","webpack:///../ckeditor5-utils/src/lib/lodash/pullAll.js","webpack:///../ckeditor5-utils/src/lib/lodash/unzipWith.js","webpack:///../ckeditor5-utils/src/tomap.js","webpack:///(webpack)/buildin/global.js","webpack:///../ckeditor5-basic-styles/src/boldengine.js","webpack:///../ckeditor5-basic-styles/src/italicengine.js","webpack:///../ckeditor5-core/src/command/helpers/isattributeallowedinselection.js","webpack:///../ckeditor5-core/src/command/toggleattributecommand.js","webpack:///../ckeditor5-engine/src/conversion/mapper.js","webpack:///../ckeditor5-engine/src/conversion/model-selection-to-view-converters.js","webpack:///../ckeditor5-engine/src/conversion/modelconversiondispatcher.js","webpack:///../ckeditor5-engine/src/dataprocessor/htmldataprocessor.js","webpack:///../ckeditor5-engine/src/model/delta/attributedelta.js","webpack:///../ckeditor5-engine/src/model/delta/renamedelta.js","webpack:///../ckeditor5-engine/src/model/delta/weakinsertdelta.js","webpack:///../ckeditor5-engine/src/model/liveposition.js","webpack:///../ckeditor5-engine/src/view/domconverter.js","webpack:///../ckeditor5-engine/src/view/emptyelement.js","webpack:///../ckeditor5-engine/src/view/matcher.js","webpack:///../ckeditor5-engine/src/view/observer/mutationobserver.js","webpack:///../ckeditor5-engine/src/view/rooteditableelement.js","webpack:///../ckeditor5-engine/src/view/uielement.js","webpack:///../ckeditor5-heading/src/headingengine.js","webpack:///../ckeditor5-image/src/image/imageengine.js","webpack:///../ckeditor5-image/src/image/ui/imageballoonpanelview.js","webpack:///../ckeditor5-image/src/imagetoolbar.js","webpack:///../ckeditor5-link/src/findlinkrange.js","webpack:///../ckeditor5-link/src/linkelement.js","webpack:///../ckeditor5-list/src/listengine.js","webpack:///../ckeditor5-typing/src/changebuffer.js","webpack:///../ckeditor5-ui/src/bindings/clickoutsidehandler.js","webpack:///../ckeditor5-ui/src/bindings/submithandler.js","webpack:///../ckeditor5-ui/src/inputtext/inputtextview.js","webpack:///../ckeditor5-ui/src/labeledinput/labeledinputview.js","webpack:///../ckeditor5-ui/src/panel/balloon/balloonpanelview.js","webpack:///../ckeditor5-ui/src/toolbar/toolbarview.js","webpack:///../ckeditor5-undo/src/basecommand.js","webpack:///../ckeditor5-utils/src/count.js","webpack:///../ckeditor5-utils/src/diff.js","webpack:///../ckeditor5-utils/src/dom/getancestors.js","webpack:///../ckeditor5-utils/src/dom/tounit.js","webpack:///../ckeditor5-utils/src/lib/lodash/_Map.js","webpack:///../ckeditor5-utils/src/lib/lodash/_Set.js","webpack:///../ckeditor5-utils/src/lib/lodash/_Uint8Array.js","webpack:///../ckeditor5-utils/src/lib/lodash/_apply.js","webpack:///../ckeditor5-utils/src/lib/lodash/_arrayReduce.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseClone.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseFindIndex.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseHas.js","webpack:///../ckeditor5-utils/src/lib/lodash/_basePullAt.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseSortedUniq.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseTimes.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseZipObject.js","webpack:///../ckeditor5-utils/src/lib/lodash/_copyArray.js","webpack:///../ckeditor5-utils/src/lib/lodash/_equalArrays.js","webpack:///../ckeditor5-utils/src/lib/lodash/_getSymbols.js","webpack:///../ckeditor5-utils/src/lib/lodash/_indexKeys.js","webpack:///../ckeditor5-utils/src/lib/lodash/_indexOfNaN.js","webpack:///../ckeditor5-utils/src/lib/lodash/_isStrictComparable.js","webpack:///../ckeditor5-utils/src/lib/lodash/_matchesStrictComparable.js","webpack:///../ckeditor5-utils/src/lib/lodash/_toSource.js","webpack:///../ckeditor5-utils/src/lib/lodash/chunk.js","webpack:///../ckeditor5-utils/src/lib/lodash/compact.js","webpack:///../ckeditor5-utils/src/lib/lodash/concat.js","webpack:///../ckeditor5-utils/src/lib/lodash/difference.js","webpack:///../ckeditor5-utils/src/lib/lodash/differenceBy.js","webpack:///../ckeditor5-utils/src/lib/lodash/differenceWith.js","webpack:///../ckeditor5-utils/src/lib/lodash/dropRightWhile.js","webpack:///../ckeditor5-utils/src/lib/lodash/dropWhile.js","webpack:///../ckeditor5-utils/src/lib/lodash/fill.js","webpack:///../ckeditor5-utils/src/lib/lodash/findIndex.js","webpack:///../ckeditor5-utils/src/lib/lodash/findLastIndex.js","webpack:///../ckeditor5-utils/src/lib/lodash/first.js","webpack:///../ckeditor5-utils/src/lib/lodash/flatten.js","webpack:///../ckeditor5-utils/src/lib/lodash/flattenDeep.js","webpack:///../ckeditor5-utils/src/lib/lodash/flattenDepth.js","webpack:///../ckeditor5-utils/src/lib/lodash/fromPairs.js","webpack:///../ckeditor5-utils/src/lib/lodash/get.js","webpack:///../ckeditor5-utils/src/lib/lodash/identity.js","webpack:///../ckeditor5-utils/src/lib/lodash/indexOf.js","webpack:///../ckeditor5-utils/src/lib/lodash/initial.js","webpack:///../ckeditor5-utils/src/lib/lodash/intersection.js","webpack:///../ckeditor5-utils/src/lib/lodash/intersectionBy.js","webpack:///../ckeditor5-utils/src/lib/lodash/intersectionWith.js","webpack:///../ckeditor5-utils/src/lib/lodash/isNative.js","webpack:///../ckeditor5-utils/src/lib/lodash/join.js","webpack:///../ckeditor5-utils/src/lib/lodash/lastIndexOf.js","webpack:///../ckeditor5-utils/src/lib/lodash/nth.js","webpack:///../ckeditor5-utils/src/lib/lodash/pull.js","webpack:///../ckeditor5-utils/src/lib/lodash/pullAllBy.js","webpack:///../ckeditor5-utils/src/lib/lodash/pullAllWith.js","webpack:///../ckeditor5-utils/src/lib/lodash/pullAt.js","webpack:///../ckeditor5-utils/src/lib/lodash/remove.js","webpack:///../ckeditor5-utils/src/lib/lodash/reverse.js","webpack:///../ckeditor5-utils/src/lib/lodash/slice.js","webpack:///../ckeditor5-utils/src/lib/lodash/sortedIndex.js","webpack:///../ckeditor5-utils/src/lib/lodash/sortedIndexBy.js","webpack:///../ckeditor5-utils/src/lib/lodash/sortedIndexOf.js","webpack:///../ckeditor5-utils/src/lib/lodash/sortedLastIndex.js","webpack:///../ckeditor5-utils/src/lib/lodash/sortedLastIndexBy.js","webpack:///../ckeditor5-utils/src/lib/lodash/sortedLastIndexOf.js","webpack:///../ckeditor5-utils/src/lib/lodash/sortedUniq.js","webpack:///../ckeditor5-utils/src/lib/lodash/sortedUniqBy.js","webpack:///../ckeditor5-utils/src/lib/lodash/tail.js","webpack:///../ckeditor5-utils/src/lib/lodash/take.js","webpack:///../ckeditor5-utils/src/lib/lodash/takeRight.js","webpack:///../ckeditor5-utils/src/lib/lodash/takeRightWhile.js","webpack:///../ckeditor5-utils/src/lib/lodash/takeWhile.js","webpack:///../ckeditor5-utils/src/lib/lodash/toNumber.js","webpack:///../ckeditor5-utils/src/lib/lodash/union.js","webpack:///../ckeditor5-utils/src/lib/lodash/unionBy.js","webpack:///../ckeditor5-utils/src/lib/lodash/unionWith.js","webpack:///../ckeditor5-utils/src/lib/lodash/uniq.js","webpack:///../ckeditor5-utils/src/lib/lodash/uniqBy.js","webpack:///../ckeditor5-utils/src/lib/lodash/uniqWith.js","webpack:///../ckeditor5-utils/src/lib/lodash/without.js","webpack:///../ckeditor5-utils/src/lib/lodash/xor.js","webpack:///../ckeditor5-utils/src/lib/lodash/xorBy.js","webpack:///../ckeditor5-utils/src/lib/lodash/xorWith.js","webpack:///../ckeditor5-utils/src/lib/lodash/zip.js","webpack:///../ckeditor5-utils/src/lib/lodash/zipObject.js","webpack:///../ckeditor5-utils/src/lib/lodash/zipObjectDeep.js","webpack:///../ckeditor5-utils/src/lib/lodash/zipWith.js","webpack:///../ckeditor5-utils/src/objecttomap.js","webpack:///../ckeditor5-utils/src/unicode.js","webpack:///../ckeditor5-widget/src/widgetengine.js","webpack:////workspace/ckeditor5/~/regenerator-runtime/runtime.js","webpack:///./ckeditor.js","webpack:////workspace/ckeditor5/~/process/browser.js","webpack:///../ckeditor5-autoformat/src/autoformat.js","webpack:///../ckeditor5-autoformat/src/blockautoformatengine.js","webpack:///../ckeditor5-autoformat/src/inlineautoformatengine.js","webpack:///../ckeditor5-basic-styles/src/bold.js","webpack:///../ckeditor5-basic-styles/src/italic.js","webpack:///./config-editor.js","webpack:///../ckeditor5-clipboard/src/clipboard.js","webpack:///../ckeditor5-clipboard/src/clipboardobserver.js","webpack:///../ckeditor5-clipboard/src/datatransfer.js","webpack:///../ckeditor5-clipboard/src/utils/normalizeclipboarddata.js","webpack:///../ckeditor5-clipboard/src/utils/plaintexttohtml.js","webpack:///../ckeditor5-core/src/editingkeystrokehandler.js","webpack:///../ckeditor5-core/src/editor/editor.js","webpack:///../ckeditor5-core/src/editor/standardeditor.js","webpack:///../ckeditor5-core/src/plugincollection.js","webpack:///../ckeditor5-editor-classic/src/classic.js","webpack:///../ckeditor5-editor-classic/src/classiceditorui.js","webpack:///../ckeditor5-editor-classic/src/classiceditoruiview.js","webpack:///../ckeditor5-engine/src/controller/datacontroller.js","webpack:///../ckeditor5-engine/src/controller/deletecontent.js","webpack:///../ckeditor5-engine/src/controller/editingcontroller.js","webpack:///../ckeditor5-engine/src/controller/getselectedcontent.js","webpack:///../ckeditor5-engine/src/controller/insertcontent.js","webpack:///../ckeditor5-engine/src/controller/modifyselection.js","webpack:///../ckeditor5-engine/src/conversion/modelconsumable.js","webpack:///../ckeditor5-engine/src/conversion/view-selection-to-model-converters.js","webpack:///../ckeditor5-engine/src/conversion/view-to-model-converters.js","webpack:///../ckeditor5-engine/src/conversion/viewconsumable.js","webpack:///../ckeditor5-engine/src/conversion/viewconversiondispatcher.js","webpack:///../ckeditor5-engine/src/dataprocessor/basichtmlwriter.js","webpack:///../ckeditor5-engine/src/model/delta/basic-deltas.js","webpack:///../ckeditor5-engine/src/model/delta/basic-transformations.js","webpack:///../ckeditor5-engine/src/model/delta/markerdelta.js","webpack:///../ckeditor5-engine/src/model/document.js","webpack:///../ckeditor5-engine/src/model/history.js","webpack:///../ckeditor5-engine/src/model/liveselection.js","webpack:///../ckeditor5-engine/src/model/markercollection.js","webpack:///../ckeditor5-engine/src/model/operation/operationfactory.js","webpack:///../ckeditor5-engine/src/model/operation/transform.js","webpack:///../ckeditor5-engine/src/model/rootelement.js","webpack:///../ckeditor5-engine/src/model/schema.js","webpack:///../ckeditor5-engine/src/view/document.js","webpack:///../ckeditor5-engine/src/view/observer/clickobserver.js","webpack:///../ckeditor5-engine/src/view/observer/fakeselectionobserver.js","webpack:///../ckeditor5-engine/src/view/observer/focusobserver.js","webpack:///../ckeditor5-engine/src/view/observer/keyobserver.js","webpack:///../ckeditor5-engine/src/view/observer/mouseobserver.js","webpack:///../ckeditor5-engine/src/view/observer/selectionobserver.js","webpack:///../ckeditor5-engine/src/view/placeholder.js","webpack:///../ckeditor5-engine/src/view/renderer.js","webpack:///../ckeditor5-engine/src/view/textproxy.js","webpack:///../ckeditor5-enter/src/enter.js","webpack:///../ckeditor5-enter/src/entercommand.js","webpack:///../ckeditor5-enter/src/enterobserver.js","webpack:///../ckeditor5-heading/src/heading.js","webpack:///../ckeditor5-heading/src/headingcommand.js","webpack:///../ckeditor5-image/src/image.js","webpack:///../ckeditor5-image/src/image/converters.js","webpack:///../ckeditor5-image/src/imagecaption.js","webpack:///../ckeditor5-image/src/imagecaption/imagecaptionengine.js","webpack:///../ckeditor5-image/src/imagecaption/utils.js","webpack:///../ckeditor5-image/src/imagestyle.js","webpack:///../ckeditor5-image/src/imagestyle/converters.js","webpack:///../ckeditor5-image/src/imagestyle/imagestylecommand.js","webpack:///../ckeditor5-image/src/imagestyle/imagestyleengine.js","webpack:///../ckeditor5-image/src/imagetextalternative.js","webpack:///../ckeditor5-image/src/imagetextalternative/imagetextalternativecommand.js","webpack:///../ckeditor5-image/src/imagetextalternative/imagetextalternativeengine.js","webpack:///../ckeditor5-image/src/imagetextalternative/ui/textalternativeformview.js","webpack:///../ckeditor5-link/src/link.js","webpack:///../ckeditor5-link/src/linkcommand.js","webpack:///../ckeditor5-link/src/linkengine.js","webpack:///../ckeditor5-link/src/ui/linkformview.js","webpack:///../ckeditor5-link/src/unlinkcommand.js","webpack:///../ckeditor5-list/src/converters.js","webpack:///../ckeditor5-list/src/indentcommand.js","webpack:///../ckeditor5-list/src/list.js","webpack:///../ckeditor5-list/src/listcommand.js","webpack:///../ckeditor5-list/src/viewlistitemelement.js","webpack:///../ckeditor5-paragraph/src/paragraphcommand.js","webpack:///../ckeditor5-typing/src/delete.js","webpack:///../ckeditor5-typing/src/deletecommand.js","webpack:///../ckeditor5-typing/src/deleteobserver.js","webpack:///../ckeditor5-typing/src/input.js","webpack:///../ckeditor5-typing/src/inputcommand.js","webpack:///../ckeditor5-typing/src/typing.js","webpack:///../ckeditor5-ui/src/bindings/escpresshandler.js","webpack:///../ckeditor5-ui/src/componentfactory.js","webpack:///../ckeditor5-ui/src/dropdown/createdropdown.js","webpack:///../ckeditor5-ui/src/dropdown/dropdownpanelview.js","webpack:///../ckeditor5-ui/src/dropdown/dropdownview.js","webpack:///../ckeditor5-ui/src/dropdown/list/createlistdropdown.js","webpack:///../ckeditor5-ui/src/editableui/editableuiview.js","webpack:///../ckeditor5-ui/src/editableui/inline/inlineeditableuiview.js","webpack:///../ckeditor5-ui/src/editorui/boxed/boxededitoruiview.js","webpack:///../ckeditor5-ui/src/editorui/editoruiview.js","webpack:///../ckeditor5-ui/src/icon/iconview.js","webpack:///../ckeditor5-ui/src/label/labelview.js","webpack:///../ckeditor5-ui/src/list/listitemview.js","webpack:///../ckeditor5-ui/src/list/listview.js","webpack:///../ckeditor5-ui/src/model.js","webpack:///../ckeditor5-ui/src/toolbar/enabletoolbarkeyboardfocus.js","webpack:///../ckeditor5-ui/src/toolbar/sticky/stickytoolbarview.js","webpack:///../ckeditor5-ui/src/toolbar/toolbarseparatorview.js","webpack:///../ckeditor5-undo/src/redocommand.js","webpack:///../ckeditor5-undo/src/undo.js","webpack:///../ckeditor5-undo/src/undocommand.js","webpack:///../ckeditor5-undo/src/undoengine.js","webpack:///../ckeditor5-utils/src/config.js","webpack:///../ckeditor5-utils/src/difftochanges.js","webpack:///../ckeditor5-utils/src/dom/getcommonancestor.js","webpack:///../ckeditor5-utils/src/dom/getdatafromelement.js","webpack:///../ckeditor5-utils/src/dom/getpositionedancestor.js","webpack:///../ckeditor5-utils/src/dom/indexof.js","webpack:///../ckeditor5-utils/src/dom/insertat.js","webpack:///../ckeditor5-utils/src/dom/isrange.js","webpack:///../ckeditor5-utils/src/dom/position.js","webpack:///../ckeditor5-utils/src/dom/rect.js","webpack:///../ckeditor5-utils/src/dom/remove.js","webpack:///../ckeditor5-utils/src/dom/setdatainelement.js","webpack:///../ckeditor5-utils/src/elementreplacer.js","webpack:///../ckeditor5-utils/src/env.js","webpack:///../ckeditor5-utils/src/eventinfo.js","webpack:///../ckeditor5-utils/src/lib/lodash/_DataView.js","webpack:///../ckeditor5-utils/src/lib/lodash/_Hash.js","webpack:///../ckeditor5-utils/src/lib/lodash/_Promise.js","webpack:///../ckeditor5-utils/src/lib/lodash/_Reflect.js","webpack:///../ckeditor5-utils/src/lib/lodash/_WeakMap.js","webpack:///../ckeditor5-utils/src/lib/lodash/_addMapEntry.js","webpack:///../ckeditor5-utils/src/lib/lodash/_addSetEntry.js","webpack:///../ckeditor5-utils/src/lib/lodash/_arrayEach.js","webpack:///../ckeditor5-utils/src/lib/lodash/_arraySome.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseAssign.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseAt.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseClamp.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseCreate.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseFill.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseGetAllKeys.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseHasIn.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseIndexOfWith.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseIsEqualDeep.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseIsMatch.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseKeys.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseKeysIn.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseMatches.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseMatchesProperty.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseNth.js","webpack:///../ckeditor5-utils/src/lib/lodash/_basePropertyDeep.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseSet.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseToPairs.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseToString.js","webpack:///../ckeditor5-utils/src/lib/lodash/_checkGlobal.js","webpack:///../ckeditor5-utils/src/lib/lodash/_cloneBuffer.js","webpack:///../ckeditor5-utils/src/lib/lodash/_cloneDataView.js","webpack:///../ckeditor5-utils/src/lib/lodash/_cloneMap.js","webpack:///../ckeditor5-utils/src/lib/lodash/_cloneRegExp.js","webpack:///../ckeditor5-utils/src/lib/lodash/_cloneSet.js","webpack:///../ckeditor5-utils/src/lib/lodash/_cloneSymbol.js","webpack:///../ckeditor5-utils/src/lib/lodash/_cloneTypedArray.js","webpack:///../ckeditor5-utils/src/lib/lodash/_compareAscending.js","webpack:///../ckeditor5-utils/src/lib/lodash/_copySymbols.js","webpack:///../ckeditor5-utils/src/lib/lodash/_createAssigner.js","webpack:///../ckeditor5-utils/src/lib/lodash/_createSet.js","webpack:///../ckeditor5-utils/src/lib/lodash/_createToPairs.js","webpack:///../ckeditor5-utils/src/lib/lodash/_equalByTag.js","webpack:///../ckeditor5-utils/src/lib/lodash/_equalObjects.js","webpack:///../ckeditor5-utils/src/lib/lodash/_getAllKeys.js","webpack:///../ckeditor5-utils/src/lib/lodash/_getLength.js","webpack:///../ckeditor5-utils/src/lib/lodash/_getMatchData.js","webpack:///../ckeditor5-utils/src/lib/lodash/_hasPath.js","webpack:///../ckeditor5-utils/src/lib/lodash/_hashClear.js","webpack:///../ckeditor5-utils/src/lib/lodash/_hashDelete.js","webpack:///../ckeditor5-utils/src/lib/lodash/_hashGet.js","webpack:///../ckeditor5-utils/src/lib/lodash/_hashHas.js","webpack:///../ckeditor5-utils/src/lib/lodash/_hashSet.js","webpack:///../ckeditor5-utils/src/lib/lodash/_initCloneArray.js","webpack:///../ckeditor5-utils/src/lib/lodash/_initCloneByTag.js","webpack:///../ckeditor5-utils/src/lib/lodash/_initCloneObject.js","webpack:///../ckeditor5-utils/src/lib/lodash/_isFlattenable.js","webpack:///../ckeditor5-utils/src/lib/lodash/_isKeyable.js","webpack:///../ckeditor5-utils/src/lib/lodash/_iteratorToArray.js","webpack:///../ckeditor5-utils/src/lib/lodash/_listCacheClear.js","webpack:///../ckeditor5-utils/src/lib/lodash/_listCacheDelete.js","webpack:///../ckeditor5-utils/src/lib/lodash/_listCacheGet.js","webpack:///../ckeditor5-utils/src/lib/lodash/_listCacheHas.js","webpack:///../ckeditor5-utils/src/lib/lodash/_listCacheSet.js","webpack:///../ckeditor5-utils/src/lib/lodash/_mapCacheClear.js","webpack:///../ckeditor5-utils/src/lib/lodash/_mapCacheDelete.js","webpack:///../ckeditor5-utils/src/lib/lodash/_mapCacheGet.js","webpack:///../ckeditor5-utils/src/lib/lodash/_mapCacheHas.js","webpack:///../ckeditor5-utils/src/lib/lodash/_mapCacheSet.js","webpack:///../ckeditor5-utils/src/lib/lodash/_parent.js","webpack:///../ckeditor5-utils/src/lib/lodash/_setCacheAdd.js","webpack:///../ckeditor5-utils/src/lib/lodash/_setCacheHas.js","webpack:///../ckeditor5-utils/src/lib/lodash/_setToPairs.js","webpack:///../ckeditor5-utils/src/lib/lodash/_stackClear.js","webpack:///../ckeditor5-utils/src/lib/lodash/_stackDelete.js","webpack:///../ckeditor5-utils/src/lib/lodash/_stackGet.js","webpack:///../ckeditor5-utils/src/lib/lodash/_stackHas.js","webpack:///../ckeditor5-utils/src/lib/lodash/_stackSet.js","webpack:///../ckeditor5-utils/src/lib/lodash/_stringToPath.js","webpack:///../ckeditor5-utils/src/lib/lodash/array.default.js","webpack:///../ckeditor5-utils/src/lib/lodash/array.js","webpack:///../ckeditor5-utils/src/lib/lodash/assignIn.js","webpack:///../ckeditor5-utils/src/lib/lodash/cloneDeepWith.js","webpack:///../ckeditor5-utils/src/lib/lodash/constant.js","webpack:///../ckeditor5-utils/src/lib/lodash/hasIn.js","webpack:///../ckeditor5-utils/src/lib/lodash/isBuffer.js","webpack:///../ckeditor5-utils/src/lib/lodash/isElement.js","webpack:///../ckeditor5-utils/src/lib/lodash/isEqual.js","webpack:///../ckeditor5-utils/src/lib/lodash/isTypedArray.js","webpack:///../ckeditor5-utils/src/lib/lodash/keysIn.js","webpack:///../ckeditor5-utils/src/lib/lodash/memoize.js","webpack:///../ckeditor5-utils/src/lib/lodash/noop.js","webpack:///../ckeditor5-utils/src/lib/lodash/now.js","webpack:///../ckeditor5-utils/src/lib/lodash/property.js","webpack:///../ckeditor5-utils/src/lib/lodash/throttle.js","webpack:///../ckeditor5-utils/src/lib/lodash/toFinite.js","webpack:///../ckeditor5-utils/src/lib/lodash/toLength.js","webpack:///../ckeditor5-utils/src/lib/lodash/toPairs.js","webpack:///../ckeditor5-utils/src/lib/lodash/toString.js","webpack:///../ckeditor5-utils/src/locale.js","webpack:///../ckeditor5-utils/src/mapsequal.js","webpack:///../ckeditor5-utils/src/priorities.js","webpack:///../ckeditor5-utils/src/spy.js","webpack:///../ckeditor5-utils/src/translation-service.js","webpack:///../ckeditor5-widget/src/widget.js","webpack:///../ckeditor5-editor-classic/theme/theme.scss","webpack:///../ckeditor5-engine/theme/placeholder.scss","webpack:///../ckeditor5-heading/theme/theme.scss","webpack:///../ckeditor5-image/theme/imagecaption/theme.scss","webpack:///../ckeditor5-image/theme/imagetextalternative/theme.scss","webpack:///../ckeditor5-image/theme/theme.scss","webpack:///../ckeditor5-link/theme/theme.scss","webpack:///../ckeditor5-widget/theme/theme.scss","webpack:///../ckeditor5-basic-styles/theme/icons/bold.svg","webpack:///../ckeditor5-basic-styles/theme/icons/italic.svg","webpack:///../ckeditor5-core/theme/icons/low-vision.svg","webpack:///../ckeditor5-core/theme/icons/object-center.svg","webpack:///../ckeditor5-core/theme/icons/object-right.svg","webpack:///../ckeditor5-link/theme/icons/link.svg","webpack:///../ckeditor5-link/theme/icons/unlink.svg","webpack:///../ckeditor5-list/theme/icons/bulletedlist.svg","webpack:///../ckeditor5-list/theme/icons/numberedlist.svg","webpack:///../ckeditor5-undo/theme/icons/redo.svg","webpack:///../ckeditor5-undo/theme/icons/undo.svg","webpack:///../ckeditor5-editor-classic/theme/theme.scss?d6ac","webpack:///../ckeditor5-engine/theme/placeholder.scss?16ad","webpack:///../ckeditor5-heading/theme/theme.scss?e0d9","webpack:///../ckeditor5-image/theme/imagecaption/theme.scss?17a3","webpack:///../ckeditor5-image/theme/imagetextalternative/theme.scss?d601","webpack:///../ckeditor5-image/theme/theme.scss?5c99","webpack:///../ckeditor5-link/theme/theme.scss?f520","webpack:///../ckeditor5-widget/theme/theme.scss?a6fb"],"names":[],"mappings":"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AAiB,WAChC,SACA,OACA,OACA,OACA,OACA,MAAc,wBACd,KACA,mBAGA,gBAHgC,YAEhC,IAEA,OACA,GAEA,eACA,OACA,iBACA,MACA,mBACA,IAEA,+BAEA,2BAEA,sBALG,mBAMD,WACF,oCAEA,wBAEA,4EAEA,aACA,0BACA,mBACA,GACA,iBAEA,GAEA,aACA,8BACA,uBACA,eACA,GACA,EAEA,aACA,8BACA,qBACA,iBACA,GACA,EAEA,eACA,SAEA,iBACA,OACA,cACA,oBACA,sBACA,KAAE,QACF,WACA,wBACA,wCACA,wCACA,yBACA,6BACA,iBACA,eACA,GACA,KACA,4BACA,KAEA,QACA,iBACA,eACA,GACA,EAGA,YAEA,cACA,MACA,sDACA,UACA,WACA,EACA,KAEA,IACA,EAWA,mBACA,cAEA,SACA,oCACE,OACF,+BACA,OACA,iCACA,MACA,0BAEA,kBAEA,EACA,EAEA,eACA,SACA,QAEA,SACA,0BAGA,KACA,gCACE,MACF,QACA,4BAEA,kDACA,GACA,EAEA,eACA,SACA,QAEA,UAEA,OAAuD,6GAGvD,0BAA6B,MAE7B,iBAEA,gCAEA,GACA,uBACA,GAjPA,GACA,mBACA,IACA,oBACA,8CACA,YACA,CACA,CACA,gBACA,qDACA,cACA,iBACA,6DACA,EACA,KACA,OACA,OAEA,uBACA,+BACA,iDAGA,kEAGA,oDAGA,iDAEA,kBACA,cAEA,cACA,QACA,QAAgB,MAAmB,WACnC,SACA,SACA,MACA,cACA,EACA,MACA,SACA,OACA,EACA,WAAgB,QAAsB,OACtC,WACA,cACA,WAAkB,YAA2B,OAC7C,YACA,gBACA,GAEA,CACA,GA6HA,gBACA,IAEA,0BACA,aACA,yBACA,KACA,CAAC,4wBC7KD,mSATA,gBACA,cACA,eACA,eACA,eAEA,eACA,iBAOqB,cAQU,iBAAc,QAG3C,kEAMA,aAAK,SAAW,UAAS,mBAQzB,KAAK,MAAQ,cAAc,qBAAgB,IAC3C,CAED,YApBA,aA2BA,wBAKC,IAAM,GAAQ,cAAc,YAAK,KAAK,QAAQ,IAAO,WAAF,OAAY,GAAY,SAE3E,UAA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","file":"ckeditor.compat.js","sourcesContent":["/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module module:engine/view/writer\n */\n\nimport Position from './position';\nimport ContainerElement from './containerelement';\nimport AttributeElement from './attributeelement';\nimport EmptyElement from './emptyelement';\nimport UIElement from './uielement';\nimport Text from './text';\nimport Range from './range';\nimport TreeWalker from './treewalker';\nimport CKEditorError from '@ckeditor/ckeditor5-utils/src/ckeditorerror';\nimport DocumentFragment from './documentfragment';\nimport isIterable from '@ckeditor/ckeditor5-utils/src/isiterable';\n\n/**\n * Contains functions used for composing view tree.\n *\n * @namespace writer\n */\n\nconst writer = {\n\tbreakAttributes,\n\tbreakContainer,\n\tmergeAttributes,\n\tmergeContainers,\n\tinsert,\n\tremove,\n\tclear,\n\tmove,\n\twrap,\n\twrapPosition,\n\tunwrap,\n\trename,\n\tbreakViewRangePerContainer\n};\n\nexport default writer;\n\n/**\n * Breaks attribute nodes at provided position or at boundaries of provided range. It breaks attribute elements inside\n * up to a container element.\n *\n * In following examples `
` is a container, `` and `` are attribute nodes:\n *\n *\t\t
foobar{}
->
foobar[]
\n *\t\t
foo{}bar
->
foo{}bar
\n *\t\t
foob{}ar
->
foob[]ar
\n *\t\t
fo{oba}r
->
foobar
\n *\n * **Note:** {@link module:engine/view/documentfragment~DocumentFragment DocumentFragment} is treated like a container.\n *\n * **Note:** Difference between {@link module:engine/view/writer~writer.breakAttributes breakAttributes} and\n * {@link module:engine/view/writer~writer.breakContainer breakContainer} is that `breakAttributes` breaks all\n * {@link module:engine/view/attributeelement~AttributeElement attribute elements} that are ancestors of given `position`, up to the first\n * encountered {@link module:engine/view/containerelement~ContainerElement container element}. `breakContainer` assumes that given\n * `position`\n * is directly in container element and breaks that container element.\n *\n * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-invalid-range-container`\n * when {@link module:engine/view/range~Range#start start}\n * and {@link module:engine/view/range~Range#end end} positions of a passed range are not placed inside same parent container.\n *\n * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-cannot-break-empty-element`\n * when trying to break attributes\n * inside {@link module:engine/view/emptyelement~EmptyElement EmptyElement}.\n *\n * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-cannot-break-ui-element`\n * when trying to break attributes\n * inside {@link module:engine/view/uielement~UIElement UIElement}.\n *\n * @see module:engine/view/attributeelement~AttributeElement\n * @see module:engine/view/containerelement~ContainerElement\n * @see module:engine/view/writer~writer.breakContainer\n * @function module:engine/view/writer~writer.breakAttributes\n * @param {module:engine/view/position~Position|module:engine/view/range~Range} positionOrRange Position where to break attribute elements.\n * @returns {module:engine/view/position~Position|module:engine/view/range~Range} New position or range, after breaking the attribute\n * elements.\n */\nexport function breakAttributes( positionOrRange ) {\n\tif ( positionOrRange instanceof Position ) {\n\t\treturn _breakAttributes( positionOrRange );\n\t} else {\n\t\treturn _breakAttributesRange( positionOrRange );\n\t}\n}\n\n/**\n * Breaks {@link module:engine/view/containerelement~ContainerElement container view element} into two, at the given position. Position\n * has to be directly inside container element and cannot be in root. Does not break if position is at the beginning\n * or at the end of it's parent element.\n *\n *\t\t
foo^bar
->
foo
bar
\n *\t\t
foo
^
bar
->
foo
bar
\n *\t\t
^foobar
-> ^
foobar
\n *\t\t
foobar^
->
foobar
^\n *\n * **Note:** Difference between {@link module:engine/view/writer~writer.breakAttributes breakAttributes} and\n * {@link module:engine/view/writer~writer.breakContainer breakContainer} is that `breakAttributes` breaks all\n * {@link module:engine/view/attributeelement~AttributeElement attribute elements} that are ancestors of given `position`, up to the first\n * encountered {@link module:engine/view/containerelement~ContainerElement container element}. `breakContainer` assumes that given\n * `position`\n * is directly in container element and breaks that container element.\n *\n * @see module:engine/view/attributeelement~AttributeElement\n * @see module:engine/view/containerelement~ContainerElement\n * @see module:engine/view/writer~writer.breakAttributes\n * @function module:engine/view/writer~writer.breakContainer\n * @param {module:engine/view/position~Position} position Position where to break element.\n * @returns {module:engine/view/position~Position} Position between broken elements. If element has not been broken, the returned position\n * is placed either before it or after it.\n */\nexport function breakContainer( position ) {\n\tconst element = position.parent;\n\n\tif ( !( element.is( 'containerElement' ) ) ) {\n\t\t/**\n\t\t * Trying to break an element which is not a container element.\n\t\t *\n\t\t * @error view-writer-break-non-container-element\n\t\t */\n\t\tthrow new CKEditorError( 'view-writer-break-non-container-element: Trying to break an element which is not a container element.' );\n\t}\n\n\tif ( !element.parent ) {\n\t\t/**\n\t\t * Trying to break root element.\n\t\t *\n\t\t * @error view-writer-break-root\n\t\t */\n\t\tthrow new CKEditorError( 'view-writer-break-root: Trying to break root element.' );\n\t}\n\n\tif ( position.isAtStart ) {\n\t\treturn Position.createBefore( element );\n\t} else if ( !position.isAtEnd ) {\n\t\tconst newElement = element.clone( false );\n\n\t\tinsert( Position.createAfter( element ), newElement );\n\n\t\tconst sourceRange = new Range( position, Position.createAt( element, 'end' ) );\n\t\tconst targetPosition = new Position( newElement, 0 );\n\n\t\tmove( sourceRange, targetPosition );\n\t}\n\n\treturn Position.createAfter( element );\n}\n\n/**\n * Merges {@link module:engine/view/attributeelement~AttributeElement attribute elements}. It also merges text nodes if needed.\n * Only {@link module:engine/view/attributeelement~AttributeElement#isSimilar similar} attribute elements can be merged.\n *\n * In following examples `
` is a container and `` is an attribute element:\n *\n *\t\t
foo[]bar
->
foo{}bar
\n *\t\t
foo[]bar
->
foo{}bar
\n *\t\t
a[]b
->
a[]b
\n *\n * It will also take care about empty attributes when merging:\n *\n *\t\t
[]
->
[]
\n *\t\t
foo[]bar
->
foo{}bar
\n *\n * **Note:** Difference between {@link module:engine/view/writer~writer.mergeAttributes mergeAttributes} and\n * {@link module:engine/view/writer~writer.mergeContainers mergeContainers} is that `mergeAttributes` merges two\n * {@link module:engine/view/attributeelement~AttributeElement attribute elements} or {@link module:engine/view/text~Text text nodes}\n * while `mergeContainer` merges two {@link module:engine/view/containerelement~ContainerElement container elements}.\n *\n * @see module:engine/view/attributeelement~AttributeElement\n * @see module:engine/view/containerelement~ContainerElement\n * @see module:engine/view/writer~writer.mergeContainers\n * @function module:engine/view/writer~writer.mergeAttributes\n * @param {module:engine/view/position~Position} position Merge position.\n * @returns {module:engine/view/position~Position} Position after merge.\n */\nexport function mergeAttributes( position ) {\n\tconst positionOffset = position.offset;\n\tconst positionParent = position.parent;\n\n\t// When inside text node - nothing to merge.\n\tif ( positionParent.is( 'text' ) ) {\n\t\treturn position;\n\t}\n\n\t// When inside empty attribute - remove it.\n\tif ( positionParent.is( 'attributeElement' ) && positionParent.childCount === 0 ) {\n\t\tconst parent = positionParent.parent;\n\t\tconst offset = positionParent.index;\n\t\tpositionParent.remove();\n\n\t\treturn mergeAttributes( new Position( parent, offset ) );\n\t}\n\n\tconst nodeBefore = positionParent.getChild( positionOffset - 1 );\n\tconst nodeAfter = positionParent.getChild( positionOffset );\n\n\t// Position should be placed between two nodes.\n\tif ( !nodeBefore || !nodeAfter ) {\n\t\treturn position;\n\t}\n\n\t// When position is between two text nodes.\n\tif ( nodeBefore.is( 'text' ) && nodeAfter.is( 'text' ) ) {\n\t\treturn mergeTextNodes( nodeBefore, nodeAfter );\n\t}\n\t// When selection is between two same attribute elements.\n\telse if ( nodeBefore.is( 'attributeElement' ) && nodeAfter.is( 'attributeElement' ) && nodeBefore.isSimilar( nodeAfter ) ) {\n\t\t// Move all children nodes from node placed after selection and remove that node.\n\t\tconst count = nodeBefore.childCount;\n\t\tnodeBefore.appendChildren( nodeAfter.getChildren() );\n\t\tnodeAfter.remove();\n\n\t\t// New position is located inside the first node, before new nodes.\n\t\t// Call this method recursively to merge again if needed.\n\t\treturn mergeAttributes( new Position( nodeBefore, count ) );\n\t}\n\n\treturn position;\n}\n\n/**\n * Merges two {@link module:engine/view/containerelement~ContainerElement container elements} that are before and after given position.\n * Precisely, the element after the position is removed and it's contents are moved to element before the position.\n *\n *\t\t
foo
^
bar
->
foo^bar
\n *\t\t
foo
^
bar
->
foo^bar
\n *\n * **Note:** Difference between {@link module:engine/view/writer~writer.mergeAttributes mergeAttributes} and\n * {@link module:engine/view/writer~writer.mergeContainers mergeContainers} is that `mergeAttributes` merges two\n * {@link module:engine/view/attributeelement~AttributeElement attribute elements} or {@link module:engine/view/text~Text text nodes}\n * while `mergeContainer` merges two {@link module:engine/view/containerelement~ContainerElement container elements}.\n *\n * @see module:engine/view/attributeelement~AttributeElement\n * @see module:engine/view/containerelement~ContainerElement\n * @see module:engine/view/writer~writer.mergeAttributes\n * @function module:engine/view/writer~writer.mergeContainers\n * @param {module:engine/view/position~Position} position Merge position.\n * @returns {module:engine/view/position~Position} Position after merge.\n */\nexport function mergeContainers( position ) {\n\tconst prev = position.nodeBefore;\n\tconst next = position.nodeAfter;\n\n\tif ( !prev || !next || !prev.is( 'containerElement' ) || !next.is( 'containerElement' ) ) {\n\t\t/**\n\t\t * Element before and after given position cannot be merged.\n\t\t *\n\t\t * @error view-writer-merge-containers-invalid-position\n\t\t */\n\t\tthrow new CKEditorError( 'view-writer-merge-containers-invalid-position: ' +\n\t\t\t'Element before and after given position cannot be merged.' );\n\t}\n\n\tconst lastChild = prev.getChild( prev.childCount - 1 );\n\tconst newPosition = lastChild instanceof Text ? Position.createAt( lastChild, 'end' ) : Position.createAt( prev, 'end' );\n\n\tmove( Range.createIn( next ), Position.createAt( prev, 'end' ) );\n\tremove( Range.createOn( next ) );\n\n\treturn newPosition;\n}\n\n/**\n * Breaks given `range` on a set of {@link module:engine/view/range~Range ranges}, that each are contained within a\n * {@link module:engine/view/containerelement~ContainerElement container element}. After `range` is broken, it's \"pieces\" can\n * be used by other {@link module:engine/view/writer~writer} methods (which expect that passed ranges are contained within\n * one container element).\n *\n * @function module:engine/view/writer~writer.breakViewRangePerContainer\n * @param {module:engine/view/range~Range} range Range to break.\n * @returns {Array.} Ranges that combine into passed `viewRange`.\n */\nexport function breakViewRangePerContainer( range ) {\n\tconst ranges = [];\n\tconst walker = new TreeWalker( { boundaries: range } );\n\n\tlet start = range.start;\n\n\tfor ( let value of walker ) {\n\t\tif ( value.item.is( 'containerElement' ) ) {\n\t\t\tif ( !start.isEqual( value.previousPosition ) ) {\n\t\t\t\tranges.push( new Range( start, value.previousPosition ) );\n\t\t\t}\n\n\t\t\tstart = value.nextPosition;\n\t\t}\n\t}\n\n\tranges.push( new Range( start, range.end ) );\n\n\treturn ranges;\n}\n\n/**\n * Insert node or nodes at specified position. Takes care about breaking attributes before insertion\n * and merging them afterwards.\n *\n * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-insert-invalid-node` when nodes to insert\n * contains instances that are not {@link module:engine/view/text~Text Texts},\n * {@link module:engine/view/attributeelement~AttributeElement AttributeElements},\n * {@link module:engine/view/containerelement~ContainerElement ContainerElements},\n * {@link module:engine/view/emptyelement~EmptyElement EmptyElements} or\n * {@link module:engine/view/uielement~UIElement UIElements}.\n *\n * @function insert\n * @param {module:engine/view/position~Position} position Insertion position.\n * @param {module:engine/view/text~Text|module:engine/view/attributeelement~AttributeElement|\n * module:engine/view/containerelement~ContainerElement|module:engine/view/emptyelement~EmptyElement|\n * module:engine/view/uielement~UIElement|Iterable.} nodes Node or nodes to insert.\n * @returns {module:engine/view/range~Range} Range around inserted nodes.\n */\nexport function insert( position, nodes ) {\n\tnodes = isIterable( nodes ) ? [ ...nodes ] : [ nodes ];\n\n\t// Check if nodes to insert are instances of AttributeElements, ContainerElements, EmptyElements, UIElements or Text.\n\tvalidateNodesToInsert( nodes );\n\n\tconst container = getParentContainer( position );\n\n\tif ( !container ) {\n\t\t/**\n\t\t * Position's parent container cannot be found.\n\t\t *\n\t\t * @error view-writer-invalid-position-container\n\t\t */\n\t\tthrow new CKEditorError( 'view-writer-invalid-position-container' );\n\t}\n\n\tconst insertionPosition = _breakAttributes( position, true );\n\n\tconst length = container.insertChildren( insertionPosition.offset, nodes );\n\tconst endPosition = insertionPosition.getShiftedBy( length );\n\tconst start = mergeAttributes( insertionPosition );\n\n\t// When no nodes were inserted - return collapsed range.\n\tif ( length === 0 ) {\n\t\treturn new Range( start, start );\n\t} else {\n\t\t// If start position was merged - move end position.\n\t\tif ( !start.isEqual( insertionPosition ) ) {\n\t\t\tendPosition.offset--;\n\t\t}\n\n\t\tconst end = mergeAttributes( endPosition );\n\n\t\treturn new Range( start, end );\n\t}\n}\n\n/**\n * Removes provided range from the container.\n *\n * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-invalid-range-container` when\n * {@link module:engine/view/range~Range#start start} and {@link module:engine/view/range~Range#end end} positions are not placed inside\n * same parent container.\n *\n * @function module:engine/view/writer~writer.remove\n * @param {module:engine/view/range~Range} range Range to remove from container. After removing, it will be updated\n * to a collapsed range showing the new position.\n * @returns {module:engine/view/documentfragment~DocumentFragment} Document fragment containing removed nodes.\n */\nexport function remove( range ) {\n\tvalidateRangeContainer( range );\n\n\t// If range is collapsed - nothing to remove.\n\tif ( range.isCollapsed ) {\n\t\treturn new DocumentFragment();\n\t}\n\n\t// Break attributes at range start and end.\n\tconst { start: breakStart, end: breakEnd } = _breakAttributesRange( range, true );\n\tconst parentContainer = breakStart.parent;\n\n\tconst count = breakEnd.offset - breakStart.offset;\n\n\t// Remove nodes in range.\n\tconst removed = parentContainer.removeChildren( breakStart.offset, count );\n\n\t// Merge after removing.\n\tconst mergePosition = mergeAttributes( breakStart );\n\trange.start = mergePosition;\n\trange.end = Position.createFromPosition( mergePosition );\n\n\t// Return removed nodes.\n\treturn new DocumentFragment( removed );\n}\n\n/**\n * Removes matching elements from given range.\n *\n * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-invalid-range-container` when\n * {@link module:engine/view/range~Range#start start} and {@link module:engine/view/range~Range#end end} positions are not placed inside\n * same parent container.\n *\n * @function module:engine/view/writer~writer.clear\n * @param {module:engine/view/range~Range} range Range to clear.\n * @param {module:engine/view/element~Element} element Element to remove.\n */\nexport function clear( range, element ) {\n\tvalidateRangeContainer( range );\n\n\t// Create walker on given range.\n\t// We walk backward because when we remove element during walk it modifies range end position.\n\tconst walker = range.getWalker( {\n\t\tdirection: 'backward',\n\t\tignoreElementEnd: true\n\t} );\n\n\t// Let's walk.\n\tfor ( const current of walker ) {\n\t\tconst item = current.item;\n\t\tlet rangeToRemove;\n\n\t\t// When current item matches to the given element.\n\t\tif ( item.is( 'element' ) && element.isSimilar( item ) ) {\n\t\t\t// Create range on this element.\n\t\t\trangeToRemove = Range.createOn( item );\n\t\t// When range starts inside Text or TextProxy element.\n\t\t} else if ( !current.nextPosition.isAfter( range.start ) && ( item.is( 'text' ) || item.is( 'textProxy' ) ) ) {\n\t\t\t// We need to check if parent of this text matches to given element.\n\t\t\tconst parentElement = item.getAncestors().find( ( ancestor ) => {\n\t\t\t\treturn ancestor.is( 'element' ) && element.isSimilar( ancestor );\n\t\t\t} );\n\n\t\t\t// If it is then create range inside this element.\n\t\t\tif ( parentElement ) {\n\t\t\t\trangeToRemove = Range.createIn( parentElement );\n\t\t\t}\n\t\t}\n\n\t\t// If we have found element to remove.\n\t\tif ( rangeToRemove ) {\n\t\t\t// We need to check if element range stick out of the given range and truncate if it is.\n\t\t\tif ( rangeToRemove.end.isAfter( range.end ) ) {\n\t\t\t\trangeToRemove.end = range.end;\n\t\t\t}\n\n\t\t\tif ( rangeToRemove.start.isBefore( range.start ) ) {\n\t\t\t\trangeToRemove.start = range.start;\n\t\t\t}\n\n\t\t\t// At the end we remove range with found element.\n\t\t\tremove( rangeToRemove );\n\t\t}\n\t}\n}\n\n/**\n * Moves nodes from provided range to target position.\n *\n * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-invalid-range-container` when\n * {@link module:engine/view/range~Range#start start} and {@link module:engine/view/range~Range#end end} positions are not placed inside\n * same parent container.\n *\n * @function module:engine/view/writer~writer.move\n * @param {module:engine/view/range~Range} sourceRange Range containing nodes to move.\n * @param {module:engine/view/position~Position} targetPosition Position to insert.\n * @returns {module:engine/view/range~Range} Range in target container. Inserted nodes are placed between\n * {@link module:engine/view/range~Range#start start} and {@link module:engine/view/range~Range#end end} positions.\n */\nexport function move( sourceRange, targetPosition ) {\n\tlet nodes;\n\n\tif ( targetPosition.isAfter( sourceRange.end ) ) {\n\t\ttargetPosition = _breakAttributes( targetPosition, true );\n\n\t\tconst parent = targetPosition.parent;\n\t\tconst countBefore = parent.childCount;\n\n\t\tsourceRange = _breakAttributesRange( sourceRange, true );\n\n\t\tnodes = remove( sourceRange );\n\n\t\ttargetPosition.offset += ( parent.childCount - countBefore );\n\t} else {\n\t\tnodes = remove( sourceRange );\n\t}\n\n\treturn insert( targetPosition, nodes );\n}\n\n/**\n * Wraps elements within range with provided {@link module:engine/view/attributeelement~AttributeElement AttributeElement}.\n *\n * Throws {@link module:utils/ckeditorerror~CKEditorError} `view-writer-invalid-range-container`\n * when {@link module:engine/view/range~Range#start}\n * and {@link module:engine/view/range~Range#end} positions are not placed inside same parent container.\n * Throws {@link module:utils/ckeditorerror~CKEditorError} `view-writer-wrap-invalid-attribute` when passed attribute element is not\n * an instance of {module:engine/view/attributeelement~AttributeElement AttributeElement}.\n *\n * @function module:engine/view/writer~writer.wrap\n * @param {module:engine/view/range~Range} range Range to wrap.\n * @param {module:engine/view/attributeelement~AttributeElement} attribute Attribute element to use as wrapper.\n */\nexport function wrap( range, attribute ) {\n\tif ( !( attribute instanceof AttributeElement ) ) {\n\t\t/**\n\t\t * Attribute element need to be instance of attribute element.\n\t\t *\n\t\t * @error view-writer-wrap-invalid-attribute\n\t\t */\n\t\tthrow new CKEditorError( 'view-writer-wrap-invalid-attribute' );\n\t}\n\n\tvalidateRangeContainer( range );\n\n\t// If range is collapsed - nothing to wrap.\n\tif ( range.isCollapsed ) {\n\t\treturn range;\n\t}\n\n\t// Range around one element.\n\tif ( range.end.isEqual( range.start.getShiftedBy( 1 ) ) ) {\n\t\tconst node = range.start.nodeAfter;\n\n\t\tif ( node instanceof AttributeElement && wrapAttributeElement( attribute, node ) ) {\n\t\t\treturn range;\n\t\t}\n\t}\n\n\t// Range is inside single attribute and spans on all children.\n\tif ( rangeSpansOnAllChildren( range ) && wrapAttributeElement( attribute, range.start.parent ) ) {\n\t\tconst parent = range.start.parent.parent;\n\t\tconst index = range.start.parent.index;\n\n\t\treturn Range.createFromParentsAndOffsets( parent, index, parent, index + 1 ) ;\n\t}\n\n\t// Break attributes at range start and end.\n\tconst { start: breakStart, end: breakEnd } = _breakAttributesRange( range, true );\n\tconst parentContainer = breakStart.parent;\n\n\t// Unwrap children located between break points.\n\tconst unwrappedRange = unwrapChildren( parentContainer, breakStart.offset, breakEnd.offset, attribute );\n\n\t// Wrap all children with attribute.\n\tconst newRange = wrapChildren( parentContainer, unwrappedRange.start.offset, unwrappedRange.end.offset, attribute );\n\n\t// Merge attributes at the both ends and return a new range.\n\tconst start = mergeAttributes( newRange.start );\n\n\t// If start position was merged - move end position back.\n\tif ( !start.isEqual( newRange.start ) ) {\n\t\tnewRange.end.offset--;\n\t}\n\tconst end = mergeAttributes( newRange.end );\n\n\treturn new Range( start, end );\n}\n\n/**\n * Wraps position with provided attribute. Returns new position after wrapping. This method will also merge newly\n * added attribute with its siblings whenever possible.\n *\n * Throws {@link module:utils/ckeditorerror~CKEditorError} `view-writer-wrap-invalid-attribute` when passed attribute element is not\n * an instance of {module:engine/view/attributeelement~AttributeElement AttributeElement}.\n *\n * @param {module:engine/view/position~Position} position\n * @param {module:engine/view/attributeelement~AttributeElement} attribute\n * @returns {module:engine/view/position~Position} New position after wrapping.\n */\nexport function wrapPosition( position, attribute ) {\n\tif ( !( attribute instanceof AttributeElement ) ) {\n\t\t/**\n\t\t * Attribute element need to be instance of attribute element.\n\t\t *\n\t\t * @error view-writer-wrap-invalid-attribute\n\t\t */\n\t\tthrow new CKEditorError( 'view-writer-wrap-invalid-attribute' );\n\t}\n\n\t// Return same position when trying to wrap with attribute similar to position parent.\n\tif ( attribute.isSimilar( position.parent ) ) {\n\t\treturn movePositionToTextNode( Position.createFromPosition( position ) );\n\t}\n\n\t// When position is inside text node - break it and place new position between two text nodes.\n\tif ( position.parent.is( 'text' ) ) {\n\t\tposition = breakTextNode( position );\n\t}\n\n\t// Create fake element that will represent position, and will not be merged with other attributes.\n\tconst fakePosition = new AttributeElement();\n\tfakePosition.priority = Number.POSITIVE_INFINITY;\n\tfakePosition.isSimilar = () => false;\n\n\t// Insert fake element in position location.\n\tposition.parent.insertChildren( position.offset, fakePosition );\n\n\t// Range around inserted fake attribute element.\n\tconst wrapRange = new Range( position, position.getShiftedBy( 1 ) );\n\n\t// Wrap fake element with attribute (it will also merge if possible).\n\twrap( wrapRange, attribute );\n\n\t// Remove fake element and place new position there.\n\tconst newPosition = new Position( fakePosition.parent, fakePosition.index );\n\tfakePosition.remove();\n\n\t// If position is placed between text nodes - merge them and return position inside.\n\tconst nodeBefore = newPosition.nodeBefore;\n\tconst nodeAfter = newPosition.nodeAfter;\n\n\tif ( nodeBefore instanceof Text && nodeAfter instanceof Text ) {\n\t\treturn mergeTextNodes( nodeBefore, nodeAfter );\n\t}\n\n\t// If position is next to text node - move position inside.\n\treturn movePositionToTextNode( newPosition );\n}\n\n/**\n * Unwraps nodes within provided range from attribute element.\n *\n * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-invalid-range-container` when\n * {@link module:engine/view/range~Range#start start} and {@link module:engine/view/range~Range#end end} positions are not placed inside\n * same parent container.\n *\n * @param {module:engine/view/range~Range} range\n * @param {module:engine/view/attributeelement~AttributeElement} element\n */\nexport function unwrap( range, attribute ) {\n\tif ( !( attribute instanceof AttributeElement ) ) {\n\t\t/**\n\t\t * Attribute element need to be instance of attribute element.\n\t\t *\n\t\t * @error view-writer-unwrap-invalid-attribute\n\t\t */\n\t\tthrow new CKEditorError( 'view-writer-unwrap-invalid-attribute' );\n\t}\n\n\tvalidateRangeContainer( range );\n\n\t// If range is collapsed - nothing to unwrap.\n\tif ( range.isCollapsed ) {\n\t\treturn range;\n\t}\n\n\t// Range around one element - check if AttributeElement can be unwrapped partially when it's not similar.\n\t// For example:\n\t// unwrap with:\t result: \n\tif ( range.end.isEqual( range.start.getShiftedBy( 1 ) ) ) {\n\t\tconst node = range.start.nodeAfter;\n\n\t\t// Unwrap single attribute element.\n\t\tif ( !attribute.isSimilar( node ) && node instanceof AttributeElement && unwrapAttributeElement( attribute, node ) ) {\n\t\t\treturn range;\n\t\t}\n\t}\n\n\t// Break attributes at range start and end.\n\tconst { start: breakStart, end: breakEnd } = _breakAttributesRange( range, true );\n\tconst parentContainer = breakStart.parent;\n\n\t// Unwrap children located between break points.\n\tconst newRange = unwrapChildren( parentContainer, breakStart.offset, breakEnd.offset, attribute );\n\n\t// Merge attributes at the both ends and return a new range.\n\tconst start = mergeAttributes( newRange.start );\n\n\t// If start position was merged - move end position back.\n\tif ( !start.isEqual( newRange.start ) ) {\n\t\tnewRange.end.offset--;\n\t}\n\tconst end = mergeAttributes( newRange.end );\n\n\treturn new Range( start, end );\n}\n\n/**\n * Renames element by creating a copy of renamed element but with changed name and then moving contents of the\n * old element to the new one. Keep in mind that this will invalidate all {@link module:engine/view/position~Position positions} which\n * has renamed element as {@link module:engine/view/position~Position#parent a parent}.\n *\n * New element has to be created because `Element#tagName` property in DOM is readonly.\n *\n * Since this function creates a new element and removes the given one, the new element is returned to keep reference.\n *\n * @param {module:engine/view/containerelement~ContainerElement} viewElement Element to be renamed.\n * @param {String} newName New name for element.\n */\nexport function rename( viewElement, newName ) {\n\tconst newElement = new ContainerElement( newName, viewElement.getAttributes() );\n\n\tinsert( Position.createAfter( viewElement ), newElement );\n\tmove( Range.createIn( viewElement ), Position.createAt( newElement ) );\n\tremove( Range.createOn( viewElement ) );\n\n\treturn newElement;\n}\n\n// Returns first parent container of specified {@link module:engine/view/position~Position Position}.\n// Position's parent node is checked as first, then next parents are checked.\n// Note that {@link module:engine/view/documentfragment~DocumentFragment DocumentFragment} is treated like a container.\n//\n// @param {module:engine/view/position~Position} position Position used as a start point to locate parent container.\n// @returns {module:engine/view/containerelement~ContainerElement|module:engine/view/documentfragment~DocumentFragment|undefined}\n// Parent container element or `undefined` if container is not found.\nfunction getParentContainer( position ) {\n\tlet parent = position.parent;\n\n\twhile ( !isContainerOrFragment( parent ) ) {\n\t\tif ( !parent ) {\n\t\t\treturn undefined;\n\t\t}\n\t\tparent = parent.parent;\n\t}\n\n\treturn parent;\n}\n\n// Function used by both public breakAttributes (without splitting text nodes) and by other methods (with\n// splitting text nodes).\n//\n// @param {module:engine/view/range~Range} range Range which `start` and `end` positions will be used to break attributes.\n// @param {Boolean} [forceSplitText = false] If set to `true`, will break text nodes even if they are directly in\n// container element. This behavior will result in incorrect view state, but is needed by other view writing methods\n// which then fixes view state. Defaults to `false`.\n// @returns {module:engine/view/range~Range} New range with located at break positions.\nfunction _breakAttributesRange( range, forceSplitText = false ) {\n\tconst rangeStart = range.start;\n\tconst rangeEnd = range.end;\n\n\tvalidateRangeContainer( range );\n\n\t// Break at the collapsed position. Return new collapsed range.\n\tif ( range.isCollapsed ) {\n\t\tconst position = _breakAttributes( range.start, forceSplitText );\n\n\t\treturn new Range( position, position );\n\t}\n\n\tconst breakEnd = _breakAttributes( rangeEnd, forceSplitText );\n\tconst count = breakEnd.parent.childCount;\n\tconst breakStart = _breakAttributes( rangeStart, forceSplitText );\n\n\t// Calculate new break end offset.\n\tbreakEnd.offset += breakEnd.parent.childCount - count;\n\n\treturn new Range( breakStart, breakEnd );\n}\n\n// Function used by public breakAttributes (without splitting text nodes) and by other methods (with\n// splitting text nodes).\n//\n// Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-cannot-break-empty-element` when break position\n// is placed inside {@link module:engine/view/emptyelement~EmptyElement EmptyElement}.\n//\n// Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-cannot-break-ui-element` when break position\n// is placed inside {@link module:engine/view/uielement~UIElement UIElement}.\n//\n// @param {module:engine/view/position~Position} position Position where to break attributes.\n// @param {Boolean} [forceSplitText = false] If set to `true`, will break text nodes even if they are directly in\n// container element. This behavior will result in incorrect view state, but is needed by other view writing methods\n// which then fixes view state. Defaults to `false`.\n// @returns {module:engine/view/position~Position} New position after breaking the attributes.\nfunction _breakAttributes( position, forceSplitText = false ) {\n\tconst positionOffset = position.offset;\n\tconst positionParent = position.parent;\n\n\t// If position is placed inside EmptyElement - throw an exception as we cannot break inside.\n\tif ( position.parent.is( 'emptyElement' ) ) {\n\t\t/**\n\t\t * Cannot break inside EmptyElement instance.\n\t\t *\n\t\t * @error view-writer-cannot-break-empty-element\n\t\t */\n\t\tthrow new CKEditorError( 'view-writer-cannot-break-empty-element' );\n\t}\n\n\t// If position is placed inside UIElement - throw an exception as we cannot break inside.\n\tif ( position.parent.is( 'uiElement' ) ) {\n\t\t/**\n\t\t * Cannot break inside UIElement instance.\n\t\t *\n\t\t * @error view-writer-cannot-break-ui-element\n\t\t */\n\t\tthrow new CKEditorError( 'view-writer-cannot-break-ui-element' );\n\t}\n\n\t// There are no attributes to break and text nodes breaking is not forced.\n\tif ( !forceSplitText && positionParent.is( 'text' ) && isContainerOrFragment( positionParent.parent ) ) {\n\t\treturn Position.createFromPosition( position );\n\t}\n\n\t// Position's parent is container, so no attributes to break.\n\tif ( isContainerOrFragment( positionParent ) ) {\n\t\treturn Position.createFromPosition( position );\n\t}\n\n\t// Break text and start again in new position.\n\tif ( positionParent.is( 'text' ) ) {\n\t\treturn _breakAttributes( breakTextNode( position ), forceSplitText );\n\t}\n\n\tconst length = positionParent.childCount;\n\n\t//
\n\telse {\n\t\tconst offsetAfter = positionParent.index + 1;\n\n\t\t// Break element.\n\t\tconst clonedNode = positionParent.clone();\n\n\t\t// Insert cloned node to position's parent node.\n\t\tpositionParent.parent.insertChildren( offsetAfter, clonedNode );\n\n\t\t// Get nodes to move.\n\t\tconst count = positionParent.childCount - positionOffset;\n\t\tconst nodesToMove = positionParent.removeChildren( positionOffset, count );\n\n\t\t// Move nodes to cloned node.\n\t\tclonedNode.appendChildren( nodesToMove );\n\n\t\t// Create new position to work on.\n\t\tconst newPosition = new Position( positionParent.parent, offsetAfter );\n\n\t\treturn _breakAttributes( newPosition, forceSplitText );\n\t}\n}\n\n// Unwraps children from provided `attribute`. Only children contained in `parent` element between\n// `startOffset` and `endOffset` will be unwrapped.\n//\n// @param {module:engine/view/element~Element} parent\n// @param {Number} startOffset\n// @param {Number} endOffset\n// @param {module:engine/view/element~Element} attribute\nfunction unwrapChildren( parent, startOffset, endOffset, attribute ) {\n\tlet i = startOffset;\n\tconst unwrapPositions = [];\n\n\t// Iterate over each element between provided offsets inside parent.\n\twhile ( i < endOffset ) {\n\t\tconst child = parent.getChild( i );\n\n\t\t// If attributes are the similar, then unwrap.\n\t\tif ( child.isSimilar( attribute ) ) {\n\t\t\tconst unwrapped = child.getChildren();\n\t\t\tconst count = child.childCount;\n\n\t\t\t// Replace wrapper element with its children\n\t\t\tchild.remove();\n\t\t\tparent.insertChildren( i, unwrapped );\n\n\t\t\t// Save start and end position of moved items.\n\t\t\tunwrapPositions.push(\n\t\t\t\tnew Position( parent, i ),\n\t\t\t\tnew Position( parent, i + count )\n\t\t\t);\n\n\t\t\t// Skip elements that were unwrapped. Assuming that there won't be another element to unwrap in child\n\t\t\t// elements.\n\t\t\ti += count;\n\t\t\tendOffset += count - 1;\n\t\t} else {\n\t\t\t// If other nested attribute is found start unwrapping there.\n\t\t\tif ( child.is( 'attributeElement' ) ) {\n\t\t\t\tunwrapChildren( child, 0, child.childCount, attribute );\n\t\t\t}\n\n\t\t\ti++;\n\t\t}\n\t}\n\n\t// Merge at each unwrap.\n\tlet offsetChange = 0;\n\n\tfor ( let position of unwrapPositions ) {\n\t\tposition.offset -= offsetChange;\n\n\t\t// Do not merge with elements outside selected children.\n\t\tif ( position.offset == startOffset || position.offset == endOffset ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst newPosition = mergeAttributes( position );\n\n\t\t// If nodes were merged - other merge offsets will change.\n\t\tif ( !newPosition.isEqual( position ) ) {\n\t\t\toffsetChange++;\n\t\t\tendOffset--;\n\t\t}\n\t}\n\n\treturn Range.createFromParentsAndOffsets( parent, startOffset, parent, endOffset );\n}\n\n// Wraps children with provided `attribute`. Only children contained in `parent` element between\n// `startOffset` and `endOffset` will be wrapped.\n//\n// @param {module:engine/view/element~Element} parent\n// @param {Number} startOffset\n// @param {Number} endOffset\n// @param {module:engine/view/element~Element} attribute\nfunction wrapChildren( parent, startOffset, endOffset, attribute ) {\n\tlet i = startOffset;\n\tconst wrapPositions = [];\n\n\twhile ( i < endOffset ) {\n\t\tconst child = parent.getChild( i );\n\t\tconst isText = child.is( 'text' );\n\t\tconst isAttribute = child.is( 'attributeElement' );\n\t\tconst isEmpty = child.is( 'emptyElement' );\n\t\tconst isUI = child.is( 'uiElement' );\n\n\t\t// Wrap text, empty elements, ui elements or attributes with higher or equal priority.\n\t\tif ( isText || isEmpty || isUI || ( isAttribute && attribute.priority <= child.priority ) ) {\n\t\t\t// Clone attribute.\n\t\t\tconst newAttribute = attribute.clone();\n\n\t\t\t// Wrap current node with new attribute;\n\t\t\tchild.remove();\n\t\t\tnewAttribute.appendChildren( child );\n\t\t\tparent.insertChildren( i, newAttribute );\n\n\t\t\twrapPositions.push(\tnew Position( parent, i ) );\n\t\t}\n\t\t// If other nested attribute is found start wrapping there.\n\t\telse if ( isAttribute ) {\n\t\t\twrapChildren( child, 0, child.childCount, attribute );\n\t\t}\n\n\t\ti++;\n\t}\n\n\t// Merge at each wrap.\n\tlet offsetChange = 0;\n\n\tfor ( let position of wrapPositions ) {\n\t\tposition.offset -= offsetChange;\n\n\t\t// Do not merge with elements outside selected children.\n\t\tif ( position.offset == startOffset ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst newPosition = mergeAttributes( position );\n\n\t\t// If nodes were merged - other merge offsets will change.\n\t\tif ( !newPosition.isEqual( position ) ) {\n\t\t\toffsetChange++;\n\t\t\tendOffset--;\n\t\t}\n\t}\n\n\treturn Range.createFromParentsAndOffsets( parent, startOffset, parent, endOffset );\n}\n\n// Returns new position that is moved to near text node. Returns same position if there is no text node before of after\n// specified position.\n//\n//\t\t
foo[]
->
foo{}
\n//\t\t
[]foo
->
{}foo
\n//\n// @param {module:engine/view/position~Position} position\n// @returns {module:engine/view/position~Position} Position located inside text node or same position if there is no text nodes\n// before or after position location.\nfunction movePositionToTextNode( position ) {\n\tconst nodeBefore = position.nodeBefore;\n\n\tif ( nodeBefore && nodeBefore.is( 'text' ) ) {\n\t\treturn new Position( nodeBefore, nodeBefore.data.length );\n\t}\n\n\tconst nodeAfter = position.nodeAfter;\n\n\tif ( nodeAfter && nodeAfter.is( 'text' ) ) {\n\t\treturn new Position( nodeAfter, 0 );\n\t}\n\n\treturn position;\n}\n\n// Breaks text node into two text nodes when possible.\n//\n//\t\t
foo{}bar
->
foo[]bar
\n//\t\t
{}foobar
->
[]foobar
\n//\t\t
foobar{}
->
foobar[]
\n//\n// @param {module:engine/view/position~Position} position Position that need to be placed inside text node.\n// @returns {module:engine/view/position~Position} New position after breaking text node.\nfunction breakTextNode( position ) {\n\tif ( position.offset == position.parent.data.length ) {\n\t\treturn new Position( position.parent.parent, position.parent.index + 1 );\n\t}\n\n\tif ( position.offset === 0 ) {\n\t\treturn new Position( position.parent.parent, position.parent.index );\n\t}\n\n\t// Get part of the text that need to be moved.\n\tconst textToMove = position.parent.data.slice( position.offset );\n\n\t// Leave rest of the text in position's parent.\n\tposition.parent.data = position.parent.data.slice( 0, position.offset );\n\n\t// Insert new text node after position's parent text node.\n\tposition.parent.parent.insertChildren( position.parent.index + 1, new Text( textToMove ) );\n\n\t// Return new position between two newly created text nodes.\n\treturn new Position( position.parent.parent, position.parent.index + 1 );\n}\n\n// Merges two text nodes into first node. Removes second node and returns merge position.\n//\n// @param {module:engine/view/text~Text} t1 First text node to merge. Data from second text node will be moved at the end of\n// this text node.\n// @param {module:engine/view/text~Text} t2 Second text node to merge. This node will be removed after merging.\n// @returns {module:engine/view/position~Position} Position after merging text nodes.\nfunction mergeTextNodes( t1, t2 ) {\n\t// Merge text data into first text node and remove second one.\n\tconst nodeBeforeLength = t1.data.length;\n\tt1.data += t2.data;\n\tt2.remove();\n\n\treturn new Position( t1, nodeBeforeLength );\n}\n\n// Wraps one {@link module:engine/view/attributeelement~AttributeElement AttributeElement} into another by merging them if possible.\n// Two AttributeElements can be merged when there is no attribute or style conflicts between them.\n// When merging is possible - all attributes, styles and classes are moved from wrapper element to element being\n// wrapped.\n//\n// @param {module:engine/view/attributeelement~AttributeElement} wrapper Wrapper AttributeElement.\n// @param {module:engine/view/attributeelement~AttributeElement} toWrap AttributeElement to wrap using wrapper element.\n// @returns {Boolean} Returns `true` if elements are merged.\nfunction wrapAttributeElement( wrapper, toWrap ) {\n\t// Can't merge if name or priority differs.\n\tif ( wrapper.name !== toWrap.name || wrapper.priority !== toWrap.priority ) {\n\t\treturn false;\n\t}\n\n\t// Check if attributes can be merged.\n\tfor ( let key of wrapper.getAttributeKeys() ) {\n\t\t// Classes and styles should be checked separately.\n\t\tif ( key === 'class' || key === 'style' ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// If some attributes are different we cannot wrap.\n\t\tif ( toWrap.hasAttribute( key ) && toWrap.getAttribute( key ) !== wrapper.getAttribute( key ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t// Check if styles can be merged.\n\tfor ( let key of wrapper.getStyleNames() ) {\n\t\tif ( toWrap.hasStyle( key ) && toWrap.getStyle( key ) !== wrapper.getStyle( key ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t// Move all attributes/classes/styles from wrapper to wrapped AttributeElement.\n\tfor ( let key of wrapper.getAttributeKeys() ) {\n\t\t// Classes and styles should be checked separately.\n\t\tif ( key === 'class' || key === 'style' ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Move only these attributes that are not present - other are similar.\n\t\tif ( !toWrap.hasAttribute( key ) ) {\n\t\t\ttoWrap.setAttribute( key, wrapper.getAttribute( key ) );\n\t\t}\n\t}\n\n\tfor ( let key of wrapper.getStyleNames() ) {\n\t\tif ( !toWrap.hasStyle( key ) ) {\n\t\t\ttoWrap.setStyle( key, wrapper.getStyle( key ) );\n\t\t}\n\t}\n\n\tfor ( let key of wrapper.getClassNames() ) {\n\t\tif ( !toWrap.hasClass( key ) ) {\n\t\t\ttoWrap.addClass( key );\n\t\t}\n\t}\n\n\treturn true;\n}\n\n// Unwraps {@link module:engine/view/attributeelement~AttributeElement AttributeElement} from another by removing corresponding attributes,\n// classes and styles. All attributes, classes and styles from wrapper should be present inside element being unwrapped.\n//\n// @param {module:engine/view/attributeelement~AttributeElement} wrapper Wrapper AttributeElement.\n// @param {module:engine/view/attributeelement~AttributeElement} toUnwrap AttributeElement to unwrap using wrapper element.\n// @returns {Boolean} Returns `true` if elements are unwrapped.\nfunction unwrapAttributeElement( wrapper, toUnwrap ) {\n\t// Can't unwrap if name or priority differs.\n\tif ( wrapper.name !== toUnwrap.name || wrapper.priority !== toUnwrap.priority ) {\n\t\treturn false;\n\t}\n\n\t// Check if AttributeElement has all wrapper attributes.\n\tfor ( let key of wrapper.getAttributeKeys() ) {\n\t\t// Classes and styles should be checked separately.\n\t\tif ( key === 'class' || key === 'style' ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// If some attributes are missing or different we cannot unwrap.\n\t\tif ( !toUnwrap.hasAttribute( key ) || toUnwrap.getAttribute( key ) !== wrapper.getAttribute( key ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t// Check if AttributeElement has all wrapper classes.\n\tif ( !toUnwrap.hasClass( ...wrapper.getClassNames() ) ) {\n\t\treturn false;\n\t}\n\n\t// Check if AttributeElement has all wrapper styles.\n\tfor ( let key of wrapper.getStyleNames() ) {\n\t\t// If some styles are missing or different we cannot unwrap.\n\t\tif ( !toUnwrap.hasStyle( key ) || toUnwrap.getStyle( key ) !== wrapper.getStyle( key ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t// Remove all wrapper's attributes from unwrapped element.\n\tfor ( let key of wrapper.getAttributeKeys() ) {\n\t\t// Classes and styles should be checked separately.\n\t\tif ( key === 'class' || key === 'style' ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\ttoUnwrap.removeAttribute( key );\n\t}\n\n\t// Remove all wrapper's classes from unwrapped element.\n\ttoUnwrap.removeClass( ...wrapper.getClassNames() );\n\n\t// Remove all wrapper's styles from unwrapped element.\n\ttoUnwrap.removeStyle( ...wrapper.getStyleNames() );\n\n\treturn true;\n}\n\n// Returns `true` if range is located in same {@link module:engine/view/attributeelement~AttributeElement AttributeElement}\n// (`start` and `end` positions are located inside same {@link module:engine/view/attributeelement~AttributeElement AttributeElement}),\n// starts on 0 offset and ends after last child node.\n//\n// @param {module:engine/view/range~Range} Range\n// @returns {Boolean}\nfunction rangeSpansOnAllChildren( range ) {\n\treturn range.start.parent == range.end.parent && range.start.parent.is( 'attributeElement' ) &&\n\t\trange.start.offset === 0 && range.end.offset === range.start.parent.childCount;\n}\n\n// Checks if provided nodes are valid to insert. Checks if each node is an instance of\n// {@link module:engine/view/text~Text Text} or {@link module:engine/view/attributeelement~AttributeElement AttributeElement},\n// {@link module:engine/view/containerelement~ContainerElement ContainerElement},\n// {@link module:engine/view/emptyelement~EmptyElement EmptyElement} or\n// {@link module:engine/view/uielement~UIElement UIElement}.\n//\n// Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-insert-invalid-node` when nodes to insert\n// contains instances that are not {@link module:engine/view/text~Text Texts},\n// {@link module:engine/view/emptyelement~EmptyElement EmptyElements},\n// {@link module:engine/view/uielement~UIElement UIElements},\n// {@link module:engine/view/attributeelement~AttributeElement AttributeElements} or\n// {@link module:engine/view/containerelement~ContainerElement ContainerElements}.\n//\n// @param Iterable. nodes\nfunction validateNodesToInsert( nodes ) {\n\tfor ( let node of nodes ) {\n\t\tif ( !validNodesToInsert.some( ( validNode => node instanceof validNode ) ) ) {\n\t\t\t/**\n\t\t\t * Inserted nodes should be valid to insert. of {@link module:engine/view/attributeelement~AttributeElement AttributeElement},\n\t\t\t * {@link module:engine/view/containerelement~ContainerElement ContainerElement},\n\t\t\t * {@link module:engine/view/emptyelement~EmptyElement EmptyElement},\n\t\t\t * {@link module:engine/view/uielement~UIElement UIElement}, {@link module:engine/view/text~Text Text}.\n\t\t\t *\n\t\t\t * @error view-writer-insert-invalid-node\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'view-writer-insert-invalid-node' );\n\t\t}\n\n\t\tif ( !node.is( 'text' ) ) {\n\t\t\tvalidateNodesToInsert( node.getChildren() );\n\t\t}\n\t}\n}\n\nconst validNodesToInsert = [ Text, AttributeElement, ContainerElement, EmptyElement, UIElement ];\n\n// Checks if node is ContainerElement or DocumentFragment, because in most cases they should be treated the same way.\n//\n// @param {module:engine/view/node~Node} node\n// @returns {Boolean} Returns `true` if node is instance of ContainerElement or DocumentFragment.\nfunction isContainerOrFragment( node ) {\n\treturn node && ( node.is( 'containerElement' ) || node.is( 'documentFragment' ) );\n}\n\n// Checks if {@link module:engine/view/range~Range#start range start} and {@link module:engine/view/range~Range#end range end} are placed\n// inside same {@link module:engine/view/containerelement~ContainerElement container element}.\n// Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-invalid-range-container` when validation fails.\n//\n// @param {module:engine/view/range~Range} range\nfunction validateRangeContainer( range ) {\n\tconst startContainer = getParentContainer( range.start );\n\tconst endContainer = getParentContainer( range.end );\n\n\tif ( !startContainer || !endContainer || startContainer !== endContainer ) {\n\t\t/**\n\t\t * Range container is invalid. This can happen if {@link module:engine/view/range~Range#start range start} and\n\t\t * {@link module:engine/view/range~Range#end range end} positions are not placed inside same container or\n\t\t * parent container for these positions cannot be found.\n\t\t *\n\t\t * @error view-writer-invalid-range-container\n\t\t */\n\t\tthrow new CKEditorError( 'view-writer-invalid-range-container' );\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-engine/src/view/writer.js","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module utils/uid\n */\n\n/**\n * Returns a unique id. This id is a number (starting from 1) which will never get repeated on successive calls\n * to this method.\n *\n * @returns {String} A number representing the id.\n */\nexport default function uid() {\n\tlet uuid = 'e'; // Make sure that id does not start with number.\n\n\tfor ( let i = 0; i < 8; i++ ) {\n\t\tuuid += Math.floor( ( 1 + Math.random() ) * 0x10000 ).toString( 16 ).substring( 1 );\n\t}\n\n\treturn uuid;\n}\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-utils/src/uid.js","import apply from './_apply';\nimport toInteger from './toInteger';\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\nfunction rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = nativeMax(start === undefined ? (func.length - 1) : toInteger(start), 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n switch (start) {\n case 0: return func.call(this, array);\n case 1: return func.call(this, args[0], array);\n case 2: return func.call(this, args[0], args[1], array);\n }\n var otherArgs = Array(start + 1);\n index = -1;\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = array;\n return apply(func, this, otherArgs);\n };\n}\n\nexport default rest;\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-utils/src/lib/lodash/rest.js","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module engine/model/position\n */\n\nimport TreeWalker from './treewalker';\nimport last from '@ckeditor/ckeditor5-utils/src/lib/lodash/last';\nimport compareArrays from '@ckeditor/ckeditor5-utils/src/comparearrays';\nimport CKEditorError from '@ckeditor/ckeditor5-utils/src/ckeditorerror';\nimport Text from './text';\n\n/**\n * Represents a position in the model tree.\n *\n * **Note:** Position is based on offsets, not indexes. This means that position in element containing two text nodes\n * with data `foo` and `bar`, position between them has offset `3`, not `1`.\n * See {@link module:engine/model/position~Position#path} for more.\n *\n * Since position in a model is represented by a {@link module:engine/model/position~Position#root position root} and\n * {@link module:engine/model/position~Position#path position path} it is possible to create positions placed in non-existing elements.\n * This requirement is important for {@link module:engine/model/operation/transform~transform operational transformation}.\n *\n * Also, {@link module:engine/model/operation/operation~Operation operations}\n * kept in {@link module:engine/model/document~Document#history document history}\n * are storing positions (and ranges) which were correct when those operations were applied, but may not be correct\n * after document got changed.\n *\n * When changes are applied to model, it may also happen that {@link module:engine/model/position~Position#parent position parent}\n * will change even if position path has not changed. Keep in mind, that if a position leads to non-existing element,\n * {@link module:engine/model/position~Position#parent} and some other properties and methods will throw errors.\n *\n * In most cases, position with wrong path is caused by an error in code, but it is sometimes needed, as described above.\n */\nexport default class Position {\n\t/**\n\t * Creates a position.\n\t *\n\t * @param {module:engine/model/element~Element|module:engine/model/documentfragment~DocumentFragment} root Root of the position.\n\t * @param {Array.} path Position path. See {@link module:engine/model/position~Position#path}.\n\t */\n\tconstructor( root, path ) {\n\t\tif ( !root.is( 'element' ) && !root.is( 'documentFragment' ) ) {\n\t\t\t/**\n\t\t\t * Position root invalid.\n\t\t\t *\n\t\t\t * @error position-root-invalid.\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'model-position-root-invalid: Position root invalid.' );\n\t\t}\n\n\t\tif ( !( path instanceof Array ) || path.length === 0 ) {\n\t\t\t/**\n\t\t\t * Position path must be an Array with at least one item.\n\t\t\t *\n\t\t\t * @error position-path-incorrect\n\t\t\t * @param path\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'model-position-path-incorrect: Position path must be an Array with at least one item.', { path: path } );\n\t\t}\n\n\t\t// Normalize the root and path (if element was passed).\n\t\tpath = root.getPath().concat( path );\n\t\troot = root.root;\n\n\t\t/**\n\t\t * Root of the position path.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:engine/model/element~Element|module:engine/model/documentfragment~DocumentFragment}\n\t\t * module:engine/model/position~Position#root\n\t\t */\n\t\tthis.root = root;\n\n\t\t/**\n\t\t * Position of the node it the tree. Path is described through offsets, not indexes.\n\t\t *\n\t\t * Position can be placed before, after or in a {@link module:engine/model/node~Node node} if that node has\n\t\t * {@link module:engine/model/node~Node#offsetSize} greater than `1`. Items in position path are\n\t\t * {@link module:engine/model/node~Node#startOffset starting offsets} of position ancestors, starting from direct root children,\n\t\t * down to the position offset in it's parent.\n\t\t *\n\t\t *\t\t ROOT\n\t\t *\t\t |- P before: [ 0 ] after: [ 1 ]\n\t\t *\t\t |- UL before: [ 1 ] after: [ 2 ]\n\t\t *\t\t |- LI before: [ 1, 0 ] after: [ 1, 1 ]\n\t\t *\t\t | |- foo before: [ 1, 0, 0 ] after: [ 1, 0, 3 ]\n\t\t *\t\t |- LI before: [ 1, 1 ] after: [ 1, 2 ]\n\t\t *\t\t |- bar before: [ 1, 1, 0 ] after: [ 1, 1, 3 ]\n\t\t *\n\t\t * `foo` and `bar` are representing {@link module:engine/model/text~Text text nodes}. Since text nodes has offset size\n\t\t * greater than `1` you can place position offset between their start and end:\n\t\t *\n\t\t *\t\t ROOT\n\t\t *\t\t |- P\n\t\t *\t\t |- UL\n\t\t *\t\t |- LI\n\t\t *\t\t | |- f^o|o ^ has path: [ 1, 0, 1 ] | has path: [ 1, 0, 2 ]\n\t\t *\t\t |- LI\n\t\t *\t\t |- b^a|r ^ has path: [ 1, 1, 1 ] | has path: [ 1, 1, 2 ]\n\t\t *\n\t\t * @member {Array.} module:engine/model/position~Position#path\n\t\t */\n\t\tthis.path = path;\n\t}\n\n\t/**\n\t * Offset at which this position is located in its {@link module:engine/model/position~Position#parent parent}. It is equal\n\t * to the last item in position {@link module:engine/model/position~Position#path path}.\n\t *\n\t * @type {Number}\n\t */\n\tget offset() {\n\t\treturn last( this.path );\n\t}\n\n\t/**\n\t * @param {Number} newOffset\n\t */\n\tset offset( newOffset ) {\n\t\tthis.path[ this.path.length - 1 ] = newOffset;\n\t}\n\n\t/**\n\t * Parent element of this position.\n\t *\n\t * Keep in mind that `parent` value is calculated when the property is accessed.\n\t * If {@link module:engine/model/position~Position#path position path}\n\t * leads to a non-existing element, `parent` property will throw error.\n\t *\n\t * Also it is a good idea to cache `parent` property if it is used frequently in an algorithm (i.e. in a long loop).\n\t *\n\t * @readonly\n\t * @type {module:engine/model/element~Element}\n\t */\n\tget parent() {\n\t\tlet parent = this.root;\n\n\t\tfor ( let i = 0; i < this.path.length - 1; i++ ) {\n\t\t\tparent = parent.getChild( parent.offsetToIndex( this.path[ i ] ) );\n\t\t}\n\n\t\treturn parent;\n\t}\n\n\t/**\n\t * Position {@link module:engine/model/position~Position#offset offset} converted to an index in position's parent node. It is\n\t * equal to the {@link module:engine/model/node~Node#index index} of a node after this position. If position is placed\n\t * in text node, position index is equal to the index of that text node.\n\t *\n\t * @readonly\n\t * @type {Number}\n\t */\n\tget index() {\n\t\treturn this.parent.offsetToIndex( this.offset );\n\t}\n\n\t/**\n\t * Returns {@link module:engine/model/text~Text text node} instance in which this position is placed or `null` if this\n\t * position is not in a text node.\n\t *\n\t * @readonly\n\t * @type {module:engine/model/text~Text|null}\n\t */\n\tget textNode() {\n\t\tlet node = this.parent.getChild( this.index );\n\n\t\treturn ( node instanceof Text && node.startOffset < this.offset ) ? node : null;\n\t}\n\n\t/**\n\t * Node directly after this position or `null` if this position is in text node.\n\t *\n\t * @readonly\n\t * @type {module:engine/model/node~Node|null}\n\t */\n\tget nodeAfter() {\n\t\treturn this.textNode === null ? this.parent.getChild( this.index ) : null;\n\t}\n\n\t/**\n\t * Node directly before this position or `null` if this position is in text node.\n\t *\n\t * @readonly\n\t * @type {Node}\n\t */\n\tget nodeBefore() {\n\t\treturn this.textNode === null ? this.parent.getChild( this.index - 1 ) : null;\n\t}\n\n\t/**\n\t * Is `true` if position is at the beginning of its {@link module:engine/model/position~Position#parent parent}, `false` otherwise.\n\t *\n\t * @readonly\n\t * @type {Boolean}\n\t */\n\tget isAtStart() {\n\t\treturn this.offset === 0;\n\t}\n\n\t/**\n\t * Is `true` if position is at the end of its {@link module:engine/model/position~Position#parent parent}, `false` otherwise.\n\t *\n\t * @readonly\n\t * @type {Boolean}\n\t */\n\tget isAtEnd() {\n\t\treturn this.offset == this.parent.maxOffset;\n\t}\n\n\t/**\n\t * Checks whether this position is before or after given position.\n\t *\n\t * @param {module:engine/model/position~Position} otherPosition Position to compare with.\n\t * @returns {module:engine/model/position~PositionRelation}\n\t */\n\tcompareWith( otherPosition ) {\n\t\tif ( this.root != otherPosition.root ) {\n\t\t\treturn 'different';\n\t\t}\n\n\t\tconst result = compareArrays( this.path, otherPosition.path );\n\n\t\tswitch ( result ) {\n\t\t\tcase 'same':\n\t\t\t\treturn 'same';\n\n\t\t\tcase 'prefix':\n\t\t\t\treturn 'before';\n\n\t\t\tcase 'extension':\n\t\t\t\treturn 'after';\n\n\t\t\tdefault:\n\t\t\t\tif ( this.path[ result ] < otherPosition.path[ result ] ) {\n\t\t\t\t\treturn 'before';\n\t\t\t\t} else {\n\t\t\t\t\treturn 'after';\n\t\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Gets the farthest position which matches the callback using\n\t * {@link module:engine/model/treewalker~TreeWalker TreeWalker}.\n\t *\n\t * For example:\n\t *\n\t * \t\tgetLastMatchingPosition( value => value.type == 'text' );\n\t * \t\t// []foo -> foo[]\n\t *\n\t * \t\tgetLastMatchingPosition( value => value.type == 'text', { direction: 'backward' } );\n\t * \t\t// foo[] -> []foo\n\t *\n\t * \t\tgetLastMatchingPosition( value => false );\n\t * \t\t// Do not move the position.\n\t *\n\t * @param {Function} skip Callback function. Gets {@link module:engine/model/treewalker~TreeWalkerValue} and should\n\t * return `true` if the value should be skipped or `false` if not.\n\t * @param {Object} options Object with configuration options. See {@link module:engine/model/treewalker~TreeWalker}.\n\t *\n\t * @returns {module:engine/model/position~Position} The position after the last item which matches the `skip` callback test.\n\t */\n\tgetLastMatchingPosition( skip, options = {} ) {\n\t\toptions.startPosition = this;\n\n\t\tconst treeWalker = new TreeWalker( options );\n\t\ttreeWalker.skip( skip );\n\n\t\treturn treeWalker.position;\n\t}\n\n\t/**\n\t * Returns a path to this position's parent. Parent path is equal to position {@link module:engine/model/position~Position#path path}\n\t * but without the last item.\n\t *\n\t * This method returns the parent path even if the parent does not exists.\n\t *\n\t * @returns {Array.} Path to the parent.\n\t */\n\tgetParentPath() {\n\t\treturn this.path.slice( 0, -1 );\n\t}\n\n\t/**\n\t * Returns ancestors array of this position, that is this position's parent and its ancestors.\n\t *\n\t * @returns {Array.} Array with ancestors.\n\t */\n\tgetAncestors() {\n\t\tif ( this.parent.is( 'documentFragment' ) ) {\n\t\t\treturn [ this.parent ];\n\t\t} else {\n\t\t\treturn this.parent.getAncestors( { includeNode: true } );\n\t\t}\n\t}\n\n\t/**\n\t * Returns the slice of two position {@link #path paths} which is identical. The {@link #root roots}\n\t * of these two paths must be identical.\n\t *\n\t * @param {module:engine/model/position~Position} position The second position.\n\t * @returns {Array.} The common path.\n\t */\n\tgetCommonPath( position ) {\n\t\tif ( this.root != position.root ) {\n\t\t\treturn [];\n\t\t}\n\n\t\t// We find on which tree-level start and end have the lowest common ancestor\n\t\tlet cmp = compareArrays( this.path, position.path );\n\t\t// If comparison returned string it means that arrays are same.\n\t\tlet diffAt = ( typeof cmp == 'string' ) ? Math.min( this.path.length, position.path.length ) : cmp;\n\n\t\treturn this.path.slice( 0, diffAt );\n\t}\n\n\t/**\n\t * Returns a new instance of `Position`, that has same {@link #parent parent} but it's offset\n\t * is shifted by `shift` value (can be a negative value).\n\t *\n\t * @param {Number} shift Offset shift. Can be a negative value.\n\t * @returns {module:engine/model/position~Position} Shifted position.\n\t */\n\tgetShiftedBy( shift ) {\n\t\tlet shifted = Position.createFromPosition( this );\n\n\t\tlet offset = shifted.offset + shift;\n\t\tshifted.offset = offset < 0 ? 0 : offset;\n\n\t\treturn shifted;\n\t}\n\n\t/**\n\t * Checks whether this position is after given position.\n\t *\n\t * @see module:engine/model/position~Position#isBefore\n\t *\n\t * @param {module:engine/model/position~Position} otherPosition Position to compare with.\n\t * @returns {Boolean} True if this position is after given position.\n\t */\n\tisAfter( otherPosition ) {\n\t\treturn this.compareWith( otherPosition ) == 'after';\n\t}\n\n\t/**\n\t * Checks whether this position is before given position.\n\t *\n\t * **Note:** watch out when using negation of the value returned by this method, because the negation will also\n\t * be `true` if positions are in different roots and you might not expect this. You should probably use\n\t * `a.isAfter( b ) || a.isEqual( b )` or `!a.isBefore( p ) && a.root == b.root` in most scenarios. If your\n\t * condition uses multiple `isAfter` and `isBefore` checks, build them so they do not use negated values, i.e.:\n\t *\n\t *\t\tif ( a.isBefore( b ) && c.isAfter( d ) ) {\n\t *\t\t\t// do A.\n\t *\t\t} else {\n\t *\t\t\t// do B.\n\t *\t\t}\n\t *\n\t * or, if you have only one if-branch:\n\t *\n\t *\t\tif ( !( a.isBefore( b ) && c.isAfter( d ) ) {\n\t *\t\t\t// do B.\n\t *\t\t}\n\t *\n\t * rather than:\n\t *\n\t *\t\tif ( !a.isBefore( b ) || && !c.isAfter( d ) ) {\n\t *\t\t\t// do B.\n\t *\t\t} else {\n\t *\t\t\t// do A.\n\t *\t\t}\n\t *\n\t * @param {module:engine/model/position~Position} otherPosition Position to compare with.\n\t * @returns {Boolean} True if this position is before given position.\n\t */\n\tisBefore( otherPosition ) {\n\t\treturn this.compareWith( otherPosition ) == 'before';\n\t}\n\n\t/**\n\t * Checks whether this position is equal to given position.\n\t *\n\t * @param {module:engine/model/position~Position} otherPosition Position to compare with.\n\t * @returns {Boolean} True if positions are same.\n\t */\n\tisEqual( otherPosition ) {\n\t\treturn this.compareWith( otherPosition ) == 'same';\n\t}\n\n\t/**\n\t * Checks whether this position is touching given position. Positions touch when there are no text nodes\n\t * or empty nodes in a range between them. Technically, those positions are not equal but in many cases\n\t * they are very similar or even indistinguishable.\n\t *\n\t * **Note:** this method traverses model document so it can be only used when range is up-to-date with model document.\n\t *\n\t * @param {module:engine/model/position~Position} otherPosition Position to compare with.\n\t * @returns {Boolean} True if positions touch.\n\t */\n\tisTouching( otherPosition ) {\n\t\tlet left = null;\n\t\tlet right = null;\n\t\tlet compare = this.compareWith( otherPosition );\n\n\t\tswitch ( compare ) {\n\t\t\tcase 'same':\n\t\t\t\treturn true;\n\n\t\t\tcase 'before':\n\t\t\t\tleft = Position.createFromPosition( this );\n\t\t\t\tright = Position.createFromPosition( otherPosition );\n\t\t\t\tbreak;\n\n\t\t\tcase 'after':\n\t\t\t\tleft = Position.createFromPosition( otherPosition );\n\t\t\t\tright = Position.createFromPosition( this );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t}\n\n\t\t// Cached for optimization purposes.\n\t\tlet leftParent = left.parent;\n\n\t\twhile ( left.path.length + right.path.length ) {\n\t\t\tif ( left.isEqual( right ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif ( left.path.length > right.path.length ) {\n\t\t\t\tif ( left.offset !== leftParent.maxOffset ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tleft.path = left.path.slice( 0, -1 );\n\t\t\t\tleftParent = leftParent.parent;\n\t\t\t\tleft.offset++;\n\t\t\t} else {\n\t\t\t\tif ( right.offset !== 0 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tright.path = right.path.slice( 0, -1 );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Returns a copy of this position that is updated by removing `howMany` nodes starting from `deletePosition`.\n\t * It may happen that this position is in a removed node. If that is the case, `null` is returned instead.\n\t *\n\t * @protected\n\t * @param {module:engine/model/position~Position} deletePosition Position before the first removed node.\n\t * @param {Number} howMany How many nodes are removed.\n\t * @returns {module:engine/model/position~Position|null} Transformed position or `null`.\n\t */\n\t_getTransformedByDeletion( deletePosition, howMany ) {\n\t\tlet transformed = Position.createFromPosition( this );\n\n\t\t// This position can't be affected if deletion was in a different root.\n\t\tif ( this.root != deletePosition.root ) {\n\t\t\treturn transformed;\n\t\t}\n\n\t\tif ( compareArrays( deletePosition.getParentPath(), this.getParentPath() ) == 'same' ) {\n\t\t\t// If nodes are removed from the node that is pointed by this position...\n\t\t\tif ( deletePosition.offset < this.offset ) {\n\t\t\t\t// And are removed from before an offset of that position...\n\t\t\t\tif ( deletePosition.offset + howMany > this.offset ) {\n\t\t\t\t\t// Position is in removed range, it's no longer in the tree.\n\t\t\t\t\treturn null;\n\t\t\t\t} else {\n\t\t\t\t\t// Decrement the offset accordingly.\n\t\t\t\t\ttransformed.offset -= howMany;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ( compareArrays( deletePosition.getParentPath(), this.getParentPath() ) == 'prefix' ) {\n\t\t\t// If nodes are removed from a node that is on a path to this position...\n\t\t\tconst i = deletePosition.path.length - 1;\n\n\t\t\tif ( deletePosition.offset <= this.path[ i ] ) {\n\t\t\t\t// And are removed from before next node of that path...\n\t\t\t\tif ( deletePosition.offset + howMany > this.path[ i ] ) {\n\t\t\t\t\t// If the next node of that path is removed return null\n\t\t\t\t\t// because the node containing this position got removed.\n\t\t\t\t\treturn null;\n\t\t\t\t} else {\n\t\t\t\t\t// Otherwise, decrement index on that path.\n\t\t\t\t\ttransformed.path[ i ] -= howMany;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn transformed;\n\t}\n\n\t/**\n\t * Returns a copy of this position that is updated by inserting `howMany` nodes at `insertPosition`.\n\t *\n\t * @protected\n\t * @param {module:engine/model/position~Position} insertPosition Position where nodes are inserted.\n\t * @param {Number} howMany How many nodes are inserted.\n\t * @param {Boolean} insertBefore Flag indicating whether nodes are inserted before or after `insertPosition`.\n\t * This is important only when `insertPosition` and this position are same. If that is the case and the flag is\n\t * set to `true`, this position will get transformed. If the flag is set to `false`, it won't.\n\t * @returns {module:engine/model/position~Position} Transformed position.\n\t */\n\t_getTransformedByInsertion( insertPosition, howMany, insertBefore ) {\n\t\tlet transformed = Position.createFromPosition( this );\n\n\t\t// This position can't be affected if insertion was in a different root.\n\t\tif ( this.root != insertPosition.root ) {\n\t\t\treturn transformed;\n\t\t}\n\n\t\tif ( compareArrays( insertPosition.getParentPath(), this.getParentPath() ) == 'same' ) {\n\t\t\t// If nodes are inserted in the node that is pointed by this position...\n\t\t\tif ( insertPosition.offset < this.offset || ( insertPosition.offset == this.offset && insertBefore ) ) {\n\t\t\t\t// And are inserted before an offset of that position...\n\t\t\t\t// \"Push\" this positions offset.\n\t\t\t\ttransformed.offset += howMany;\n\t\t\t}\n\t\t} else if ( compareArrays( insertPosition.getParentPath(), this.getParentPath() ) == 'prefix' ) {\n\t\t\t// If nodes are inserted in a node that is on a path to this position...\n\t\t\tconst i = insertPosition.path.length - 1;\n\n\t\t\tif ( insertPosition.offset <= this.path[ i ] ) {\n\t\t\t\t// And are inserted before next node of that path...\n\t\t\t\t// \"Push\" the index on that path.\n\t\t\t\ttransformed.path[ i ] += howMany;\n\t\t\t}\n\t\t}\n\n\t\treturn transformed;\n\t}\n\n\t/**\n\t * Returns a copy of this position that is updated by moving `howMany` nodes from `sourcePosition` to `targetPosition`.\n\t *\n\t * @protected\n\t * @param {module:engine/model/position~Position} sourcePosition Position before the first element to move.\n\t * @param {module:engine/model/position~Position} targetPosition Position where moved elements will be inserted.\n\t * @param {Number} howMany How many consecutive nodes to move, starting from `sourcePosition`.\n\t * @param {Boolean} insertBefore Flag indicating whether moved nodes are pasted before or after `insertPosition`.\n\t * This is important only when `targetPosition` and this position are same. If that is the case and the flag is\n\t * set to `true`, this position will get transformed by range insertion. If the flag is set to `false`, it won't.\n\t * @param {Boolean} [sticky] Flag indicating whether this position \"sticks\" to range, that is if it should be moved\n\t * with the moved range if it is equal to one of range's boundaries.\n\t * @returns {module:engine/model/position~Position} Transformed position.\n\t */\n\t_getTransformedByMove( sourcePosition, targetPosition, howMany, insertBefore, sticky ) {\n\t\t// Moving a range removes nodes from their original position. We acknowledge this by proper transformation.\n\t\tlet transformed = this._getTransformedByDeletion( sourcePosition, howMany );\n\n\t\t// Then we update target position, as it could be affected by nodes removal too.\n\t\ttargetPosition = targetPosition._getTransformedByDeletion( sourcePosition, howMany );\n\n\t\tif ( transformed === null || ( sticky && transformed.isEqual( sourcePosition ) ) ) {\n\t\t\t// This position is inside moved range (or sticks to it).\n\t\t\t// In this case, we calculate a combination of this position, move source position and target position.\n\t\t\ttransformed = this._getCombined( sourcePosition, targetPosition );\n\t\t} else {\n\t\t\t// This position is not inside a removed range.\n\t\t\t// In next step, we simply reflect inserting `howMany` nodes, which might further affect the position.\n\t\t\ttransformed = transformed._getTransformedByInsertion( targetPosition, howMany, insertBefore );\n\t\t}\n\n\t\treturn transformed;\n\t}\n\n\t/**\n\t * Returns a new position that is a combination of this position and given positions.\n\t *\n\t * The combined position is a copy of this position transformed by moving a range starting at `source` position\n\t * to the `target` position. It is expected that this position is inside the moved range.\n\t *\n\t * Example:\n\t *\n\t *\t\tlet original = new Position( root, [ 2, 3, 1 ] );\n\t *\t\tlet source = new Position( root, [ 2, 2 ] );\n\t *\t\tlet target = new Position( otherRoot, [ 1, 1, 3 ] );\n\t *\t\toriginal._getCombined( source, target ); // path is [ 1, 1, 4, 1 ], root is `otherRoot`\n\t *\n\t * Explanation:\n\t *\n\t * We have a position `[ 2, 3, 1 ]` and move some nodes from `[ 2, 2 ]` to `[ 1, 1, 3 ]`. The original position\n\t * was inside moved nodes and now should point to the new place. The moved nodes will be after\n\t * positions `[ 1, 1, 3 ]`, `[ 1, 1, 4 ]`, `[ 1, 1, 5 ]`. Since our position was in the second moved node,\n\t * the transformed position will be in a sub-tree of a node at `[ 1, 1, 4 ]`. Looking at original path, we\n\t * took care of `[ 2, 3 ]` part of it. Now we have to add the rest of the original path to the transformed path.\n\t * Finally, the transformed position will point to `[ 1, 1, 4, 1 ]`.\n\t *\n\t * @protected\n\t * @param {module:engine/model/position~Position} source Beginning of the moved range.\n\t * @param {module:engine/model/position~Position} target Position where the range is moved.\n\t * @returns {module:engine/model/position~Position} Combined position.\n\t */\n\t_getCombined( source, target ) {\n\t\tconst i = source.path.length - 1;\n\n\t\t// The first part of a path to combined position is a path to the place where nodes were moved.\n\t\tlet combined = Position.createFromPosition( target );\n\n\t\t// Then we have to update the rest of the path.\n\n\t\t// Fix the offset because this position might be after `from` position and we have to reflect that.\n\t\tcombined.offset = combined.offset + this.path[ i ] - source.offset;\n\n\t\t// Then, add the rest of the path.\n\t\t// If this position is at the same level as `from` position nothing will get added.\n\t\tcombined.path = combined.path.concat( this.path.slice( i + 1 ) );\n\n\t\treturn combined;\n\t}\n\n\t/**\n\t * Creates position at the given location. The location can be specified as:\n\t *\n\t * * a {@link module:engine/model/position~Position position},\n\t * * parent element and offset (offset defaults to `0`),\n\t * * parent element and `'end'` (sets position at the end of that element),\n\t * * {@link module:engine/model/item~Item model item} and `'before'` or `'after'` (sets position before or after given model item).\n\t *\n\t * This method is a shortcut to other constructors such as:\n\t *\n\t * * {@link module:engine/model/position~Position.createBefore},\n\t * * {@link module:engine/model/position~Position.createAfter},\n\t * * {@link module:engine/model/position~Position.createFromParentAndOffset},\n\t * * {@link module:engine/model/position~Position.createFromPosition}.\n\t *\n\t * @param {module:engine/model/item~Item|module:engine/model/position~Position} itemOrPosition\n\t * @param {Number|'end'|'before'|'after'} [offset=0] Offset or one of the flags. Used only when\n\t * first parameter is a {@link module:engine/model/item~Item model item}.\n\t */\n\tstatic createAt( itemOrPosition, offset ) {\n\t\tif ( itemOrPosition instanceof Position ) {\n\t\t\treturn this.createFromPosition( itemOrPosition );\n\t\t} else {\n\t\t\tconst node = itemOrPosition;\n\n\t\t\tif ( offset == 'end' ) {\n\t\t\t\toffset = node.maxOffset;\n\t\t\t} else if ( offset == 'before' ) {\n\t\t\t\treturn this.createBefore( node );\n\t\t\t} else if ( offset == 'after' ) {\n\t\t\t\treturn this.createAfter( node );\n\t\t\t} else if ( !offset ) {\n\t\t\t\toffset = 0;\n\t\t\t}\n\n\t\t\treturn this.createFromParentAndOffset( node, offset );\n\t\t}\n\t}\n\n\t/**\n\t * Creates a new position, after given {@link module:engine/model/item~Item model item}.\n\t *\n\t * @param {module:engine/model/item~Item} item Item after which the position should be placed.\n\t * @returns {module:engine/model/position~Position}\n\t */\n\tstatic createAfter( item ) {\n\t\tif ( !item.parent ) {\n\t\t\t/**\n\t\t\t * You can not make position after root.\n\t\t\t *\n\t\t\t * @error position-after-root\n\t\t\t * @param {module:engine/model/item~Item} root\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'model-position-after-root: You can not make position after root.', { root: item } );\n\t\t}\n\n\t\treturn this.createFromParentAndOffset( item.parent, item.endOffset );\n\t}\n\n\t/**\n\t * Creates a new position, before the given {@link module:engine/model/item~Item model item}.\n\t *\n\t * @param {module:engine/model/item~Item} item Item before which the position should be placed.\n\t * @returns {module:engine/model/position~Position}\n\t */\n\tstatic createBefore( item ) {\n\t\tif ( !item.parent ) {\n\t\t\t/**\n\t\t\t * You can not make position before root.\n\t\t\t *\n\t\t\t * @error position-before-root\n\t\t\t * @param {module:engine/model/item~Item} root\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'model-position-before-root: You can not make position before root.', { root: item } );\n\t\t}\n\n\t\treturn this.createFromParentAndOffset( item.parent, item.startOffset );\n\t}\n\n\t/**\n\t * Creates a new position from the parent element and an offset in that element.\n\t *\n\t * @param {module:engine/model/element~Element|module:engine/model/documentfragment~DocumentFragment} parent Position's parent.\n\t * @param {Number} offset Position's offset.\n\t * @returns {module:engine/model/position~Position}\n\t */\n\tstatic createFromParentAndOffset( parent, offset ) {\n\t\tif ( !parent.is( 'element' ) && !parent.is( 'documentFragment' ) ) {\n\t\t\t/**\n\t\t\t * Position parent have to be a model element or model document fragment.\n\t\t\t *\n\t\t\t * @error position-parent-incorrect\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'model-position-parent-incorrect: Position parent have to be a element or document fragment.' );\n\t\t}\n\n\t\tconst path = parent.getPath();\n\n\t\tpath.push( offset );\n\n\t\treturn new this( parent.root, path );\n\t}\n\n\t/**\n\t * Creates a new position, which is equal to passed position.\n\t *\n\t * @param {module:engine/model/position~Position} position Position to be cloned.\n\t * @returns {module:engine/model/position~Position}\n\t */\n\tstatic createFromPosition( position ) {\n\t\treturn new this( position.root, position.path.slice() );\n\t}\n\n\t/**\n\t * Creates a `Position` instance from given plain object (i.e. parsed JSON string).\n\t *\n\t * @param {Object} json Plain object to be converted to `Position`.\n\t * @returns {module:engine/model/position~Position} `Position` instance created using given plain object.\n\t */\n\tstatic fromJSON( json, doc ) {\n\t\tif ( json.root === '$graveyard' ) {\n\t\t\treturn new Position( doc.graveyard, json.path );\n\t\t}\n\n\t\tif ( !doc.hasRoot( json.root ) ) {\n\t\t\t/**\n\t\t\t * Cannot create position for document. Root with specified name does not exist.\n\t\t\t *\n\t\t\t * @error position-fromjson-no-root\n\t\t\t * @param {String} rootName\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'model-position-fromjson-no-root: Cannot create position for document. Root with specified name does not exist.',\n\t\t\t\t{ rootName: json.root }\n\t\t\t);\n\t\t}\n\n\t\treturn new Position( doc.getRoot( json.root ), json.path );\n\t}\n}\n\n/**\n * A flag indicating whether this position is `'before'` or `'after'` or `'same'` as given position.\n * If positions are in different roots `'different'` flag is returned.\n *\n * @typedef {String} module:engine/model/position~PositionRelation\n */\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-engine/src/model/position.js","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 534);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 643aff2caba87d8c5a39","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module utils/ckeditorerror\n */\n\n/**\n * The CKEditor error class.\n *\n * All errors will be shortened during the minification process in order to reduce the code size.\n * Therefore, all error messages should be documented in the same way as those in {@link module:utils/log}.\n *\n * Read more in the {@link module:utils/log} module.\n *\n * @extends Error\n */\nexport default class CKEditorError extends Error {\n\t/**\n\t * Creates an instance of the CKEditorError class.\n\t *\n\t * Read more about error logging in the {@link module:utils/log} module.\n\t *\n\t * @param {String} message The error message in an `error-name: Error message.` format.\n\t * During the minification process the \"Error message\" part will be removed to limit the code size\n\t * and a link to this error documentation will be added to the `message`.\n\t * @param {Object} [data] Additional data describing the error. A stringified version of this object\n\t * will be appended to the error message, so the data are quickly visible in the console. The original\n\t * data object will also be later available under the {@link #data} property.\n\t */\n\tconstructor( message, data ) {\n\t\tif ( data ) {\n\t\t\tmessage += ' ' + JSON.stringify( data );\n\t\t}\n\n\t\tsuper( message );\n\n\t\t/**\n\t\t * @member {String}\n\t\t */\n\t\tthis.name = 'CKEditorError';\n\n\t\t/**\n\t\t * The additional error data passed to the constructor.\n\t\t *\n\t\t * @member {Object}\n\t\t */\n\t\tthis.data = data;\n\t}\n\n\t/**\n\t * Checks if error is an instance of CKEditorError class.\n\t *\n\t * @param {Object} error Object to check.\n\t * @returns {Boolean}\n\t */\n\tstatic isCKEditorError( error ) {\n\t\treturn error instanceof CKEditorError;\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-utils/src/ckeditorerror.js","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module engine/model/range\n */\n\nimport Position from './position';\nimport TreeWalker from './treewalker';\nimport CKEditorError from '@ckeditor/ckeditor5-utils/src/ckeditorerror';\n\n/**\n * Range class. Range is iterable.\n */\nexport default class Range {\n\t/**\n\t * Creates a range spanning from `start` position to `end` position.\n\t *\n\t * **Note:** Constructor creates it's own {@link module:engine/model/position~Position Position} instances basing on passed values.\n\t *\n\t * @param {module:engine/model/position~Position} start Start position.\n\t * @param {module:engine/model/position~Position} [end] End position. If not set, range will be collapsed at `start` position.\n\t */\n\tconstructor( start, end = null ) {\n\t\t/**\n\t\t * Start position.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:engine/model/position~Position}\n\t\t */\n\t\tthis.start = Position.createFromPosition( start );\n\n\t\t/**\n\t\t * End position.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:engine/model/position~Position}\n\t\t */\n\t\tthis.end = end ? Position.createFromPosition( end ) : Position.createFromPosition( start );\n\t}\n\n\t/**\n\t * Returns an iterator that iterates over all {@link module:engine/model/item~Item items} that are in this range and returns\n\t * them together with additional information like length or {@link module:engine/model/position~Position positions},\n\t * grouped as {@link module:engine/model/treewalker~TreeWalkerValue}.\n\t * It iterates over all {@link module:engine/model/textproxy~TextProxy text contents} that are inside the range\n\t * and all the {@link module:engine/model/element~Element}s that are entered into when iterating over this range.\n\t *\n\t * This iterator uses {@link module:engine/model/treewalker~TreeWalker} with `boundaries` set to this range\n\t * and `ignoreElementEnd` option set to `true`.\n\t *\n\t * @returns {Iterable.}\n\t */\n\t*[ Symbol.iterator ]() {\n\t\tyield* new TreeWalker( { boundaries: this, ignoreElementEnd: true } );\n\t}\n\n\t/**\n\t * Returns whether the range is collapsed, that is if {@link #start start} and\n\t * {@link #end end} positions are equal.\n\t *\n\t * @type {Boolean}\n\t */\n\tget isCollapsed() {\n\t\treturn this.start.isEqual( this.end );\n\t}\n\n\t/**\n\t * Returns whether this range is flat, that is if {@link #start start} position and\n\t * {@link #end end} position are in the same {@link module:engine/model/position~Position#parent parent}.\n\t *\n\t * @type {Boolean}\n\t */\n\tget isFlat() {\n\t\treturn this.start.parent === this.end.parent;\n\t}\n\n\t/**\n\t * Range root element.\n\t *\n\t * @type {module:engine/model/element~Element|module:engine/model/documentfragment~DocumentFragment}\n\t */\n\tget root() {\n\t\treturn this.start.root;\n\t}\n\n\t/**\n\t * Checks whether this range contains given {@link module:engine/model/position~Position position}.\n\t *\n\t * @param {module:engine/model/position~Position} position Position to check.\n\t * @returns {Boolean} `true` if given {@link module:engine/model/position~Position position} is contained in this range, `false` otherwise.\n\t */\n\tcontainsPosition( position ) {\n\t\treturn position.isAfter( this.start ) && position.isBefore( this.end );\n\t}\n\n\t/**\n\t * Checks whether this range contains given {@link ~Range range}.\n\t *\n\t * @param {module:engine/model/range~Range} otherRange Range to check.\n\t * @returns {Boolean} `true` if given {@link ~Range range} boundaries are contained by this range, `false` otherwise.\n\t */\n\tcontainsRange( otherRange ) {\n\t\treturn this.containsPosition( otherRange.start ) && this.containsPosition( otherRange.end );\n\t}\n\n\t/**\n\t * Two ranges are equal if their {@link #start start} and\n\t * {@link #end end} positions are equal.\n\t *\n\t * @param {module:engine/model/range~Range} otherRange Range to compare with.\n\t * @returns {Boolean} `true` if ranges are equal, `false` otherwise.\n\t */\n\tisEqual( otherRange ) {\n\t\treturn this.start.isEqual( otherRange.start ) && this.end.isEqual( otherRange.end );\n\t}\n\n\t/**\n\t * Checks and returns whether this range intersects with given range.\n\t *\n\t * @param {module:engine/model/range~Range} otherRange Range to compare with.\n\t * @returns {Boolean} `true` if ranges intersect, `false` otherwise.\n\t */\n\tisIntersecting( otherRange ) {\n\t\treturn this.start.isBefore( otherRange.end ) && this.end.isAfter( otherRange.start );\n\t}\n\n\t/**\n\t * Computes which part(s) of this {@link ~Range range} is not a part of given {@link ~Range range}.\n\t * Returned array contains zero, one or two {@link ~Range ranges}.\n\t *\n\t * Examples:\n\t *\n\t *\t\tlet range = new Range( new Position( root, [ 2, 7 ] ), new Position( root, [ 4, 0, 1 ] ) );\n\t *\t\tlet otherRange = new Range( new Position( root, [ 1 ] ), new Position( root, [ 5 ] ) );\n\t *\t\tlet transformed = range.getDifference( otherRange );\n\t *\t\t// transformed array has no ranges because `otherRange` contains `range`\n\t *\n\t *\t\totherRange = new Range( new Position( root, [ 1 ] ), new Position( root, [ 3 ] ) );\n\t *\t\ttransformed = range.getDifference( otherRange );\n\t *\t\t// transformed array has one range: from [ 3 ] to [ 4, 0, 1 ]\n\t *\n\t *\t\totherRange = new Range( new Position( root, [ 3 ] ), new Position( root, [ 4 ] ) );\n\t *\t\ttransformed = range.getDifference( otherRange );\n\t *\t\t// transformed array has two ranges: from [ 2, 7 ] to [ 3 ] and from [ 4 ] to [ 4, 0, 1 ]\n\t *\n\t * @param {module:engine/model/range~Range} otherRange Range to differentiate against.\n\t * @returns {Array.} The difference between ranges.\n\t */\n\tgetDifference( otherRange ) {\n\t\tconst ranges = [];\n\n\t\tif ( this.isIntersecting( otherRange ) ) {\n\t\t\t// Ranges intersect.\n\n\t\t\tif ( this.containsPosition( otherRange.start ) ) {\n\t\t\t\t// Given range start is inside this range. This means that we have to\n\t\t\t\t// add shrunken range - from the start to the middle of this range.\n\t\t\t\tranges.push( new Range( this.start, otherRange.start ) );\n\t\t\t}\n\n\t\t\tif ( this.containsPosition( otherRange.end ) ) {\n\t\t\t\t// Given range end is inside this range. This means that we have to\n\t\t\t\t// add shrunken range - from the middle of this range to the end.\n\t\t\t\tranges.push( new Range( otherRange.end, this.end ) );\n\t\t\t}\n\t\t} else {\n\t\t\t// Ranges do not intersect, return the original range.\n\t\t\tranges.push( Range.createFromRange( this ) );\n\t\t}\n\n\t\treturn ranges;\n\t}\n\n\t/**\n\t * Returns an intersection of this {@link ~Range range} and given {@link ~Range range}.\n\t * Intersection is a common part of both of those ranges. If ranges has no common part, returns `null`.\n\t *\n\t * Examples:\n\t *\n\t *\t\tlet range = new Range( new Position( root, [ 2, 7 ] ), new Position( root, [ 4, 0, 1 ] ) );\n\t *\t\tlet otherRange = new Range( new Position( root, [ 1 ] ), new Position( root, [ 2 ] ) );\n\t *\t\tlet transformed = range.getIntersection( otherRange ); // null - ranges have no common part\n\t *\n\t *\t\totherRange = new Range( new Position( root, [ 3 ] ), new Position( root, [ 5 ] ) );\n\t *\t\ttransformed = range.getIntersection( otherRange ); // range from [ 3 ] to [ 4, 0, 1 ]\n\t *\n\t * @param {module:engine/model/range~Range} otherRange Range to check for intersection.\n\t * @returns {module:engine/model/range~Range|null} A common part of given ranges or `null` if ranges have no common part.\n\t */\n\tgetIntersection( otherRange ) {\n\t\tif ( this.isIntersecting( otherRange ) ) {\n\t\t\t// Ranges intersect, so a common range will be returned.\n\t\t\t// At most, it will be same as this range.\n\t\t\tlet commonRangeStart = this.start;\n\t\t\tlet commonRangeEnd = this.end;\n\n\t\t\tif ( this.containsPosition( otherRange.start ) ) {\n\t\t\t\t// Given range start is inside this range. This means thaNt we have to\n\t\t\t\t// shrink common range to the given range start.\n\t\t\t\tcommonRangeStart = otherRange.start;\n\t\t\t}\n\n\t\t\tif ( this.containsPosition( otherRange.end ) ) {\n\t\t\t\t// Given range end is inside this range. This means that we have to\n\t\t\t\t// shrink common range to the given range end.\n\t\t\t\tcommonRangeEnd = otherRange.end;\n\t\t\t}\n\n\t\t\treturn new Range( commonRangeStart, commonRangeEnd );\n\t\t}\n\n\t\t// Ranges do not intersect, so they do not have common part.\n\t\treturn null;\n\t}\n\n\t/**\n\t * Computes and returns the smallest set of {@link #isFlat flat} ranges, that covers this range in whole.\n\t *\n\t * See an example of a model structure (`[` and `]` are range boundaries):\n\t *\n\t *\t\troot root\n\t *\t\t |- element DIV DIV P2 P3 DIV\n\t *\t\t | |- element H H P1 f o o b a r H P4\n\t *\t\t | | |- \"fir[st\" fir[st lorem se]cond ipsum\n\t *\t\t | |- element P1\n\t *\t\t | | |- \"lorem\" ||\n\t *\t\t |- element P2 ||\n\t *\t\t | |- \"foo\" VV\n\t *\t\t |- element P3\n\t *\t\t | |- \"bar\" root\n\t *\t\t |- element DIV DIV [P2 P3] DIV\n\t *\t\t | |- element H H [P1] f o o b a r H P4\n\t *\t\t | | |- \"se]cond\" fir[st] lorem [se]cond ipsum\n\t *\t\t | |- element P4\n\t *\t\t | | |- \"ipsum\"\n\t *\n\t * As it can be seen, letters contained in the range are: `stloremfoobarse`, spread across different parents.\n\t * We are looking for minimal set of flat ranges that contains the same nodes.\n\t *\n\t * Minimal flat ranges for above range `( [ 0, 0, 3 ], [ 3, 0, 2 ] )` will be:\n\t *\n\t *\t\t( [ 0, 0, 3 ], [ 0, 0, 5 ] ) = \"st\"\n\t *\t\t( [ 0, 1 ], [ 0, 2 ] ) = element P1 (\"lorem\")\n\t *\t\t( [ 1 ], [ 3 ] ) = element P2, element P3 (\"foobar\")\n\t *\t\t( [ 3, 0, 0 ], [ 3, 0, 2 ] ) = \"se\"\n\t *\n\t * **Note:** if an {@link module:engine/model/element~Element element} is not wholly contained in this range, it won't be returned\n\t * in any of the returned flat ranges. See in the example how `H` elements at the beginning and at the end of the range\n\t * were omitted. Only their parts that were wholly in the range were returned.\n\t *\n\t * **Note:** this method is not returning flat ranges that contain no nodes.\n\t *\n\t * @returns {Array.} Array of flat ranges covering this range.\n\t */\n\tgetMinimalFlatRanges() {\n\t\tconst ranges = [];\n\t\tconst diffAt = this.start.getCommonPath( this.end ).length;\n\n\t\tlet pos = Position.createFromPosition( this.start );\n\t\tlet posParent = pos.parent;\n\n\t\t// Go up.\n\t\twhile ( pos.path.length > diffAt + 1 ) {\n\t\t\tlet howMany = posParent.maxOffset - pos.offset;\n\n\t\t\tif ( howMany !== 0 ) {\n\t\t\t\tranges.push( new Range( pos, pos.getShiftedBy( howMany ) ) );\n\t\t\t}\n\n\t\t\tpos.path = pos.path.slice( 0, -1 );\n\t\t\tpos.offset++;\n\t\t\tposParent = posParent.parent;\n\t\t}\n\n\t\t// Go down.\n\t\twhile ( pos.path.length <= this.end.path.length ) {\n\t\t\tlet offset = this.end.path[ pos.path.length - 1 ];\n\t\t\tlet howMany = offset - pos.offset;\n\n\t\t\tif ( howMany !== 0 ) {\n\t\t\t\tranges.push( new Range( pos, pos.getShiftedBy( howMany ) ) );\n\t\t\t}\n\n\t\t\tpos.offset = offset;\n\t\t\tpos.path.push( 0 );\n\t\t}\n\n\t\treturn ranges;\n\t}\n\n\t/**\n\t * Creates a {@link module:engine/model/treewalker~TreeWalker TreeWalker} instance with this range as a boundary.\n\t *\n\t * @param {Object} options Object with configuration options. See {@link module:engine/model/treewalker~TreeWalker}.\n\t * @param {module:engine/model/position~Position} [options.startPosition]\n\t * @param {Boolean} [options.singleCharacters=false]\n\t * @param {Boolean} [options.shallow=false]\n\t * @param {Boolean} [options.ignoreElementEnd=false]\n\t */\n\tgetWalker( options = {} ) {\n\t\toptions.boundaries = this;\n\n\t\treturn new TreeWalker( options );\n\t}\n\n\t/**\n\t * Returns an iterator that iterates over all {@link module:engine/model/item~Item items} that are in this range and returns\n\t * them.\n\t *\n\t * This method uses {@link module:engine/model/treewalker~TreeWalker} with `boundaries` set to this range and `ignoreElementEnd` option\n\t * set to `true`. However it returns only {@link module:engine/model/item~Item model items},\n\t * not {@link module:engine/model/treewalker~TreeWalkerValue}.\n\t *\n\t * You may specify additional options for the tree walker. See {@link module:engine/model/treewalker~TreeWalker} for\n\t * a full list of available options.\n\t *\n\t * @method getItems\n\t * @param {Object} options Object with configuration options. See {@link module:engine/model/treewalker~TreeWalker}.\n\t * @returns {Iterable.}\n\t */\n\t*getItems( options = {} ) {\n\t\toptions.boundaries = this;\n\t\toptions.ignoreElementEnd = true;\n\n\t\tconst treeWalker = new TreeWalker( options );\n\n\t\tfor ( let value of treeWalker ) {\n\t\t\tyield value.item;\n\t\t}\n\t}\n\n\t/**\n\t * Returns an iterator that iterates over all {@link module:engine/model/position~Position positions} that are boundaries or\n\t * contained in this range.\n\t *\n\t * This method uses {@link module:engine/model/treewalker~TreeWalker} with `boundaries` set to this range. However it returns only\n\t * {@link module:engine/model/position~Position positions}, not {@link module:engine/model/treewalker~TreeWalkerValue}.\n\t *\n\t * You may specify additional options for the tree walker. See {@link module:engine/model/treewalker~TreeWalker} for\n\t * a full list of available options.\n\t *\n\t * @param {Object} options Object with configuration options. See {@link module:engine/model/treewalker~TreeWalker}.\n\t * @returns {Iterable.}\n\t */\n\t*getPositions( options = {} ) {\n\t\toptions.boundaries = this;\n\n\t\tconst treeWalker = new TreeWalker( options );\n\n\t\tyield treeWalker.position;\n\n\t\tfor ( let value of treeWalker ) {\n\t\t\tyield value.nextPosition;\n\t\t}\n\t}\n\n\t/**\n\t * Returns a range that is a result of transforming this range by given `delta`.\n\t *\n\t * **Note:** transformation may break one range into multiple ranges (e.g. when a part of the range is\n\t * moved to a different part of document tree). For this reason, an array is returned by this method and it\n\t * may contain one or more `Range` instances.\n\t *\n\t * @param {module:engine/model/delta/delta~Delta} delta Delta to transform range by.\n\t * @returns {Array.} Range which is the result of transformation.\n\t */\n\tgetTransformedByDelta( delta ) {\n\t\tlet ranges = [ Range.createFromRange( this ) ];\n\n\t\t// Operation types that a range can be transformed by.\n\t\tconst supportedTypes = new Set( [ 'insert', 'move', 'remove', 'reinsert' ] );\n\n\t\tfor ( let operation of delta.operations ) {\n\t\t\tif ( supportedTypes.has( operation.type ) ) {\n\t\t\t\tfor ( let i = 0; i < ranges.length; i++ ) {\n\t\t\t\t\tconst result = ranges[ i ]._getTransformedByDocumentChange(\n\t\t\t\t\t\toperation.type,\n\t\t\t\t\t\tdelta.type,\n\t\t\t\t\t\toperation.targetPosition || operation.position,\n\t\t\t\t\t\toperation.howMany || operation.nodes.maxOffset,\n\t\t\t\t\t\toperation.sourcePosition\n\t\t\t\t\t);\n\n\t\t\t\t\tranges.splice( i, 1, ...result );\n\n\t\t\t\t\ti += result.length - 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ranges;\n\t}\n\n\t/**\n\t * Returns a range that is a result of transforming this range by multiple `deltas`.\n\t *\n\t * **Note:** transformation may break one range into multiple ranges (e.g. when a part of the range is\n\t * moved to a different part of document tree). For this reason, an array is returned by this method and it\n\t * may contain one or more `Range` instances.\n\t *\n\t * @param {Iterable.} deltas Deltas to transform the range by.\n\t * @returns {Array.} Range which is the result of transformation.\n\t */\n\tgetTransformedByDeltas( deltas ) {\n\t\tlet ranges = [ Range.createFromRange( this ) ];\n\n\t\tfor ( let delta of deltas ) {\n\t\t\tfor ( let i = 0; i < ranges.length; i++ ) {\n\t\t\t\tlet result = ranges[ i ].getTransformedByDelta( delta );\n\n\t\t\t\tranges.splice( i, 1, ...result );\n\t\t\t\ti += result.length - 1;\n\t\t\t}\n\t\t}\n\n\t\t// It may happen that a range is split into two, and then the part of second \"piece\" is moved into first\n\t\t// \"piece\". In this case we will have incorrect third rage, which should not be included in the result --\n\t\t// because it is already included in first \"piece\". In this loop we are looking for all such ranges that\n\t\t// are inside other ranges and we simply remove them.\n\t\tfor ( let i = 0; i < ranges.length; i++ ) {\n\t\t\tconst range = ranges[ i ];\n\n\t\t\tfor ( let j = i + 1; j < ranges.length; j++ ) {\n\t\t\t\tconst next = ranges[ j ];\n\n\t\t\t\tif ( range.containsRange( next ) || next.containsRange( range ) || range.isEqual( next ) ) {\n\t\t\t\t\tranges.splice( j, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ranges;\n\t}\n\n\t/**\n\t * Returns a range that is a result of transforming this range by a change in the model document.\n\t *\n\t * @protected\n\t * @param {'insert'|'move'|'remove'|'reinsert'} type Change type.\n\t * @param {String} deltaType Type of delta that introduced the change.\n\t * @param {module:engine/model/position~Position} targetPosition Position before the first changed node.\n\t * @param {Number} howMany How many nodes has been changed.\n\t * @param {module:engine/model/position~Position} sourcePosition Source position of changes.\n\t * @returns {Array.}\n\t */\n\t_getTransformedByDocumentChange( type, deltaType, targetPosition, howMany, sourcePosition ) {\n\t\tif ( type == 'insert' ) {\n\t\t\treturn this._getTransformedByInsertion( targetPosition, howMany, false, false );\n\t\t} else {\n\t\t\tconst sourceRange = Range.createFromPositionAndShift( sourcePosition, howMany );\n\n\t\t\tif ( deltaType == 'merge' && this.isCollapsed && ( this.start.isEqual( sourceRange.start ) || this.start.isEqual( sourceRange.end ) ) ) {\n\t\t\t\t// Collapsed range is in merged element.\n\t\t\t\t// Without fix, the range would end up in the graveyard, together with removed element.\n\t\t\t\t//
foo
[]bar
->
foobar
[]
->
foobar
->
foo[]bar
\n\t\t\t\treturn [ new Range( targetPosition.getShiftedBy( this.start.offset ) ) ];\n\t\t\t} else if ( type == 'move' ) {\n\t\t\t\t// In all examples `[]` is `this` and `{}` is `sourceRange`, while `^` is move target position.\n\t\t\t\t//\n\t\t\t\t// Example:\n\t\t\t\t//
\n\t\t\t\tif ( sourceRange.containsPosition( this.end ) && this.containsPosition( sourceRange.start ) && this.start.isBefore( targetPosition ) ) {\n\t\t\t\t\tconst start = this.start._getTransformedByMove( sourcePosition, targetPosition, howMany, true, false );\n\t\t\t\t\tlet end = this.end._getCombined( sourcePosition, targetPosition._getTransformedByDeletion( sourcePosition, howMany ) );\n\n\t\t\t\t\treturn [ new Range( start, end ) ];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this._getTransformedByMove( sourcePosition, targetPosition, howMany );\n\t\t}\n\t}\n\n\t/**\n\t * Returns an array containing one or two {@link ~Range ranges} that are a result of transforming this\n\t * {@link ~Range range} by inserting `howMany` nodes at `insertPosition`. Two {@link ~Range ranges} are\n\t * returned if the insertion was inside this {@link ~Range range} and `spread` is set to `true`.\n\t *\n\t * Examples:\n\t *\n\t *\t\tlet range = new Range( new Position( root, [ 2, 7 ] ), new Position( root, [ 4, 0, 1 ] ) );\n\t *\t\tlet transformed = range._getTransformedByInsertion( new Position( root, [ 1 ] ), 2 );\n\t *\t\t// transformed array has one range from [ 4, 7 ] to [ 6, 0, 1 ]\n\t *\n\t *\t\ttransformed = range._getTransformedByInsertion( new Position( root, [ 4, 0, 0 ] ), 4 );\n\t *\t\t// transformed array has one range from [ 2, 7 ] to [ 4, 0, 5 ]\n\t *\n\t *\t\ttransformed = range._getTransformedByInsertion( new Position( root, [ 3, 2 ] ), 4 );\n\t *\t\t// transformed array has one range, which is equal to original range\n\t *\n\t *\t\ttransformed = range._getTransformedByInsertion( new Position( root, [ 3, 2 ] ), 4, true );\n\t *\t\t// transformed array has two ranges: from [ 2, 7 ] to [ 3, 2 ] and from [ 3, 6 ] to [ 4, 0, 1 ]\n\t *\n\t *\t\ttransformed = range._getTransformedByInsertion( new Position( root, [ 4, 0, 1 ] ), 4, false, false );\n\t *\t\t// transformed array has one range which is equal to original range because insertion is after the range boundary\n\t *\n\t *\t\ttransformed = range._getTransformedByInsertion( new Position( root, [ 4, 0, 1 ] ), 4, false, true );\n\t *\t\t// transformed array has one range: from [ 2, 7 ] to [ 4, 0, 5 ] because range was expanded\n\t *\n\t * @protected\n\t * @param {module:engine/model/position~Position} insertPosition Position where nodes are inserted.\n\t * @param {Number} howMany How many nodes are inserted.\n\t * @param {Boolean} [spread] Flag indicating whether this {~Range range} should be spread if insertion\n\t * was inside the range. Defaults to `false`.\n\t * @param {Boolean} [isSticky] Flag indicating whether insertion should expand a range if it is in a place of\n\t * range boundary. Defaults to `false`.\n\t * @returns {Array.} Result of the transformation.\n\t */\n\t_getTransformedByInsertion( insertPosition, howMany, spread = false, isSticky = false ) {\n\t\tif ( spread && this.containsPosition( insertPosition ) ) {\n\t\t\t// Range has to be spread. The first part is from original start to the spread point.\n\t\t\t// The other part is from spread point to the original end, but transformed by\n\t\t\t// insertion to reflect insertion changes.\n\n\t\t\treturn [\n\t\t\t\tnew Range( this.start, insertPosition ),\n\t\t\t\tnew Range(\n\t\t\t\t\tinsertPosition._getTransformedByInsertion( insertPosition, howMany, true ),\n\t\t\t\t\tthis.end._getTransformedByInsertion( insertPosition, howMany, this.isCollapsed )\n\t\t\t\t)\n\t\t\t];\n\t\t} else {\n\t\t\tconst range = Range.createFromRange( this );\n\n\t\t\tlet insertBeforeStart = range.isCollapsed ? true : !isSticky;\n\t\t\tlet insertBeforeEnd = range.isCollapsed ? true : isSticky;\n\n\t\t\trange.start = range.start._getTransformedByInsertion( insertPosition, howMany, insertBeforeStart );\n\t\t\trange.end = range.end._getTransformedByInsertion( insertPosition, howMany, insertBeforeEnd );\n\n\t\t\treturn [ range ];\n\t\t}\n\t}\n\n\t/**\n\t * Returns an array containing {@link ~Range ranges} that are a result of transforming this\n\t * {@link ~Range range} by moving `howMany` nodes from `sourcePosition` to `targetPosition`.\n\t *\n\t * @protected\n\t * @param {module:engine/model/position~Position} sourcePosition Position from which nodes are moved.\n\t * @param {module:engine/model/position~Position} targetPosition Position to where nodes are moved.\n\t * @param {Number} howMany How many nodes are moved.\n\t * @returns {Array.} Result of the transformation.\n\t */\n\t_getTransformedByMove( sourcePosition, targetPosition, howMany ) {\n\t\tif ( this.isCollapsed ) {\n\t\t\tconst newPos = this.start._getTransformedByMove( sourcePosition, targetPosition, howMany, true, false );\n\n\t\t\treturn [ new Range( newPos ) ];\n\t\t}\n\n\t\tlet result;\n\n\t\tconst moveRange = new Range( sourcePosition, sourcePosition.getShiftedBy( howMany ) );\n\n\t\tconst differenceSet = this.getDifference( moveRange );\n\t\tlet difference = null;\n\n\t\tconst common = this.getIntersection( moveRange );\n\n\t\tif ( differenceSet.length == 1 ) {\n\t\t\t// `moveRange` and this range may intersect.\n\t\t\tdifference = new Range(\n\t\t\t\tdifferenceSet[ 0 ].start._getTransformedByDeletion( sourcePosition, howMany ),\n\t\t\t\tdifferenceSet[ 0 ].end._getTransformedByDeletion( sourcePosition, howMany )\n\t\t\t);\n\t\t} else if ( differenceSet.length == 2 ) {\n\t\t\t// `moveRange` is inside this range.\n\t\t\tdifference = new Range(\n\t\t\t\tthis.start,\n\t\t\t\tthis.end._getTransformedByDeletion( sourcePosition, howMany )\n\t\t\t);\n\t\t} // else, `moveRange` contains this range.\n\n\t\tconst insertPosition = targetPosition._getTransformedByDeletion( sourcePosition, howMany );\n\n\t\tif ( difference ) {\n\t\t\tresult = difference._getTransformedByInsertion( insertPosition, howMany, common !== null );\n\t\t} else {\n\t\t\tresult = [];\n\t\t}\n\n\t\tif ( common ) {\n\t\t\tresult.push( new Range(\n\t\t\t\tcommon.start._getCombined( moveRange.start, insertPosition ),\n\t\t\t\tcommon.end._getCombined( moveRange.start, insertPosition )\n\t\t\t) );\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Creates a new range, spreading from specified {@link module:engine/model/position~Position position} to a position moved by\n\t * given `shift`. If `shift` is a negative value, shifted position is treated as the beginning of the range.\n\t *\n\t * @param {module:engine/model/position~Position} position Beginning of the range.\n\t * @param {Number} shift How long the range should be.\n\t * @returns {module:engine/model/range~Range}\n\t */\n\tstatic createFromPositionAndShift( position, shift ) {\n\t\tconst start = position;\n\t\tconst end = position.getShiftedBy( shift );\n\n\t\treturn shift > 0 ? new this( start, end ) : new this( end, start );\n\t}\n\n\t/**\n\t * Creates a range from given parents and offsets.\n\t *\n\t * @param {module:engine/model/element~Element} startElement Start position parent element.\n\t * @param {Number} startOffset Start position offset.\n\t * @param {module:engine/model/element~Element} endElement End position parent element.\n\t * @param {Number} endOffset End position offset.\n\t * @returns {module:engine/model/range~Range}\n\t */\n\tstatic createFromParentsAndOffsets( startElement, startOffset, endElement, endOffset ) {\n\t\treturn new this(\n\t\t\tPosition.createFromParentAndOffset( startElement, startOffset ),\n\t\t\tPosition.createFromParentAndOffset( endElement, endOffset )\n\t\t);\n\t}\n\n\t/**\n\t * Creates a new instance of `Range` which is equal to passed range.\n\t *\n\t * @param {module:engine/model/range~Range} range Range to clone.\n\t * @returns {module:engine/model/range~Range}\n\t */\n\tstatic createFromRange( range ) {\n\t\treturn new this( range.start, range.end );\n\t}\n\n\t/**\n\t * Creates a range inside an {@link module:engine/model/element~Element element} which starts before the first child of\n\t * that element and ends after the last child of that element.\n\t *\n\t * @param {module:engine/model/element~Element} element Element which is a parent for the range.\n\t * @returns {module:engine/model/range~Range}\n\t */\n\tstatic createIn( element ) {\n\t\treturn this.createFromParentsAndOffsets( element, 0, element, element.maxOffset );\n\t}\n\n\t/**\n\t * Creates a range that starts before given {@link module:engine/model/item~Item model item} and ends after it.\n\t *\n\t * @param {module:engine/model/item~Item} item\n\t * @returns {module:engine/model/range~Range}\n\t */\n\tstatic createOn( item ) {\n\t\treturn this.createFromPositionAndShift( Position.createBefore( item ), item.offsetSize );\n\t}\n\n\t/**\n\t * Combines all ranges from the passed array into a one range. At least one range has to be passed.\n\t * Passed ranges must not have common parts.\n\t *\n\t * The first range from the array is a reference range. If other ranges start or end on the exactly same position where\n\t * the reference range, they get combined into one range.\n\t *\n\t *\t\t[ ][] [ ][ ][ ][ ][] [ ] // Passed ranges, shown sorted\n\t *\t\t[ ] // The result of the function if the first range was a reference range.\n\t *\t [ ] // The result of the function if the third-to-seventh range was a reference range.\n\t *\t [ ] // The result of the function if the last range was a reference range.\n\t *\n\t * @param {Array.} ranges Ranges to combine.\n\t * @returns {module:engine/model/range~Range} Combined range.\n\t */\n\tstatic createFromRanges( ranges ) {\n\t\tif ( ranges.length === 0 ) {\n\t\t\t/**\n\t\t\t * At least one range has to be passed.\n\t\t\t *\n\t\t\t * @error range-create-from-ranges-empty-array\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'range-create-from-ranges-empty-array: At least one range has to be passed.' );\n\t\t} else if ( ranges.length == 1 ) {\n\t\t\treturn this.createFromRange( ranges[ 0 ] );\n\t\t}\n\n\t\t// 1. Set the first range in `ranges` array as a reference range.\n\t\t// If we are going to return just a one range, one of the ranges need to be the reference one.\n\t\t// Other ranges will be stuck to that range, if possible.\n\t\tconst ref = ranges[ 0 ];\n\n\t\t// 2. Sort all the ranges so it's easier to process them.\n\t\tranges.sort( ( a, b ) => a.start.isAfter( b.start ) );\n\n\t\t// 3. Check at which index the reference range is now.\n\t\tconst refIndex = ranges.indexOf( ref );\n\n\t\t// 4. At this moment we don't need the original range.\n\t\t// We are going to modify the result and we need to return a new instance of Range.\n\t\t// We have to create a copy of the reference range.\n\t\tconst result = new this( ref.start, ref.end );\n\n\t\t// 5. Ranges should be checked and glued starting from the range that is closest to the reference range.\n\t\t// Since ranges are sorted, start with the range with index that is closest to reference range index.\n\t\tfor ( let i = refIndex - 1; i >= 0; i++ ) {\n\t\t\tif ( ranges[ i ].end.isEqual( result.start ) ) {\n\t\t\t\tresult.start = Position.createFromPosition( ranges[ i ].start );\n\t\t\t} else {\n\t\t\t\t// If ranges are not starting/ending at the same position there is no point in looking further.\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// 6. Ranges should be checked and glued starting from the range that is closest to the reference range.\n\t\t// Since ranges are sorted, start with the range with index that is closest to reference range index.\n\t\tfor ( let i = refIndex + 1; i < ranges.length; i++ ) {\n\t\t\tif ( ranges[ i ].start.isEqual( result.end ) ) {\n\t\t\t\tresult.end = Position.createFromPosition( ranges[ i ].end );\n\t\t\t} else {\n\t\t\t\t// If ranges are not starting/ending at the same position there is no point in looking further.\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Creates a `Range` instance from given plain object (i.e. parsed JSON string).\n\t *\n\t * @param {Object} json Plain object to be converted to `Range`.\n\t * @param {module:engine/model/document~Document} doc Document object that will be range owner.\n\t * @returns {module:engine/model/element~Element} `Range` instance created using given plain object.\n\t */\n\tstatic fromJSON( json, doc ) {\n\t\treturn new this( Position.fromJSON( json.start, doc ), Position.fromJSON( json.end, doc ) );\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-engine/src/model/range.js","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module core/plugin\n */\n\nimport ObservableMixin from '@ckeditor/ckeditor5-utils/src/observablemixin';\nimport mix from '@ckeditor/ckeditor5-utils/src/mix';\n\n/**\n * The base class for CKEditor plugin classes.\n *\n * @mixes module:utils/observablemixin~ObservaleMixin\n */\nexport default class Plugin {\n\t/**\n\t * Creates a new Plugin instance. This is the first step of a plugin initialization.\n\t * See also {@link #init} and {@link #afterInit}.\n\t *\n\t * A plugin is always instantiated after its {@link module:core/plugin~Plugin.requires dependencies} and the\n\t * {@link #init} and {@link #afterInit} methods are called in the same order.\n\t *\n\t * Usually, you'll want to put your plugin's initialization code in the {@link #init} method.\n\t * The constructor can be understood as \"before init\" and used in special cases, just like\n\t * {@link #afterInit} servers for the special \"after init\" scenarios (e.g. code which depends on other\n\t * plugins, but which doesn't {@link module:core/plugin~Plugin.requires explicitly require} them).\n\t *\n\t * @param {module:core/editor/editor~Editor} editor\n\t */\n\tconstructor( editor ) {\n\t\t/**\n\t\t * The editor instance.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:core/editor/editor~Editor} module:core/plugin~Plugin#editor\n\t\t */\n\t\tthis.editor = editor;\n\t}\n\n\t/**\n\t * An array of plugins required by this plugin.\n\t *\n\t * To keep a plugin class definition tight it's recommended to define this property as a static getter:\n\t *\n\t *\t\timport Image from './image.js';\n\t *\n\t *\t\texport default class ImageCaption extends Plugin {\n *\t\t\tstatic get requires() {\n *\t\t\t\treturn [ Image ];\n *\t\t\t}\n\t *\t\t}\n\t *\n\t * @static\n\t * @member {Array.|undefined} module:core/plugin~Plugin.requires\n\t */\n\n\t/**\n\t * Optional name of the plugin. If set, the plugin will be available in\n\t * {@link module:core/plugincollection~PluginCollection#get} by its\n\t * name and its constructor. If not, then only by its constructor.\n\t *\n\t * The name should reflect the package name + path to that module. E.g. `ckeditor5-image/src/image.js` plugin\n\t * should be named `image/image` (the `ckeditor5-` prefix is stripped during compilation).\n\t *\n\t * To keep a plugin class definition tight it's recommended to define this property as a static getter:\n\t *\n\t *\t\texport default class ImageCaption {\n *\t\t\tstatic get pluginName() {\n *\t\t\t\treturn 'image/imagecaption';\n *\t\t\t}\n\t *\t\t}\n\t *\n\t * @static\n\t * @member {String|undefined} module:core/plugin~Plugin.pluginName\n\t */\n\n\t/**\n\t * The second stage (after plugin {@link #constructor}) of plugin initialization.\n\t * Unlike the plugin constructor this method can perform asynchronous.\n\t *\n\t * A plugin's `init()` method is called after its {@link module:core/plugin~Plugin.requires dependencies} are initialized,\n\t * so in the same order as constructors of these plugins.\n\t *\n\t * @returns {null|Promise}\n\t */\n\tinit() {}\n\n\t/**\n\t * The third (and last) stage of plugin initialization. See also {@link #constructor} and {@link #init}.\n\t *\n\t * @returns {null|Promise}\n\t */\n\tafterInit() {}\n\n\t/**\n\t * Destroys the plugin.\n\t *\n\t * @returns {null|Promise}\n\t */\n\tdestroy() {}\n}\n\nmix( Plugin, ObservableMixin );\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-core/src/plugin.js","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module utils/mix\n */\n\n/**\n * Copies enumerable properties and symbols from the objects given as 2nd+ parameters to the\n * prototype of first object (a constructor).\n *\n *\t\tclass Editor {\n *\t\t\t...\n *\t\t}\n *\n *\t\tconst SomeMixin = {\n *\t\t\ta() {\n *\t\t\t\treturn 'a';\n *\t\t\t}\n *\t\t};\n *\n *\t\tmix( Editor, SomeMixin, ... );\n *\n *\t\tnew Editor().a(); // -> 'a'\n *\n * Note: Properties which already exist in the base class will not be overriden.\n *\n * @param {Function} [baseClass] Class which prototype will be extended.\n * @param {Object} [...mixins] Objects from which to get properties.\n */\nexport default function mix( baseClass, ...mixins ) {\n\tmixins.forEach( ( mixin ) => {\n\t\tObject.getOwnPropertyNames( mixin ).concat( Object.getOwnPropertySymbols( mixin ) )\n\t\t\t.forEach( ( key ) => {\n\t\t\t\tif ( key in baseClass.prototype ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst sourceDescriptor = Object.getOwnPropertyDescriptor( mixin, key );\n\t\t\t\tsourceDescriptor.enumerable = false;\n\n\t\t\t\tObject.defineProperty( baseClass.prototype, key, sourceDescriptor );\n\t\t\t} );\n\t} );\n}\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-utils/src/mix.js","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module engine/model/element\n */\n\nimport Node from './node';\nimport NodeList from './nodelist';\nimport Text from './text';\nimport isIterable from '@ckeditor/ckeditor5-utils/src/isiterable';\n\n/**\n * Model element. Type of {@link module:engine/model/node~Node node} that has a {@link module:engine/model/element~Element#name name} and\n * {@link module:engine/model/element~Element#getChildren child nodes}.\n *\n * **Important**: see {@link module:engine/model/node~Node} to read about restrictions using `Element` and `Node` API.\n */\nexport default class Element extends Node {\n\t/**\n\t * Creates a model element.\n\t *\n\t * @param {String} name Element's name.\n\t * @param {Object} [attrs] Element's attributes. See {@link module:utils/tomap~toMap} for a list of accepted values.\n\t * @param {module:engine/model/node~Node|Iterable.} [children]\n\t * One or more nodes to be inserted as children of created element.\n\t */\n\tconstructor( name, attrs, children ) {\n\t\tsuper( attrs );\n\n\t\t/**\n\t\t * Element name.\n\t\t *\n\t\t * @member {String} module:engine/model/element~Element#name\n\t\t */\n\t\tthis.name = name;\n\n\t\t/**\n\t\t * List of children nodes.\n\t\t *\n\t\t * @private\n\t\t * @member {module:engine/model/nodelist~NodeList} module:engine/model/element~Element#_children\n\t\t */\n\t\tthis._children = new NodeList();\n\n\t\tif ( children ) {\n\t\t\tthis.insertChildren( 0, children );\n\t\t}\n\t}\n\n\t/**\n\t * Number of this element's children.\n\t *\n\t * @readonly\n\t * @type {Number}\n\t */\n\tget childCount() {\n\t\treturn this._children.length;\n\t}\n\n\t/**\n\t * Sum of {module:engine/model/node~Node#offsetSize offset sizes} of all of this element's children.\n\t *\n\t * @readonly\n\t * @type {Number}\n\t */\n\tget maxOffset() {\n\t\treturn this._children.maxOffset;\n\t}\n\n\t/**\n\t * Is `true` if there are no nodes inside this element, `false` otherwise.\n\t *\n\t * @readonly\n\t * @type {Boolean}\n\t */\n\tget isEmpty() {\n\t\treturn this.childCount === 0;\n\t}\n\n\t/**\n\t * Checks whether given model tree object is of given type.\n\t *\n\t *\t\tobj.name; // 'listItem'\n\t *\t\tobj instanceof Element; // true\n\t *\n\t *\t\tobj.is( 'element' ); // true\n\t *\t\tobj.is( 'listItem' ); // true\n\t *\t\tobj.is( 'element', 'listItem' ); // true\n\t *\t\tobj.is( 'text' ); // false\n\t *\t\tobj.is( 'element', 'image' ); // false\n\t *\n\t * Read more in {@link module:engine/model/node~Node#is}.\n\t *\n\t * @param {String} type Type to check when `name` parameter is present.\n\t * Otherwise, it acts like the `name` parameter.\n\t * @param {String} [name] Element name.\n\t * @returns {Boolean}\n\t */\n\tis( type, name = null ) {\n\t\tif ( !name ) {\n\t\t\treturn type == 'element' || type == this.name;\n\t\t} else {\n\t\t\treturn type == 'element' && name == this.name;\n\t\t}\n\t}\n\n\t/**\n\t * Gets the child at the given index.\n\t *\n\t * @param {Number} index Index of child.\n\t * @returns {module:engine/model/node~Node} Child node.\n\t */\n\tgetChild( index ) {\n\t\treturn this._children.getNode( index );\n\t}\n\n\t/**\n\t * Returns an iterator that iterates over all of this element's children.\n\t *\n\t * @returns {Iterable.}\n\t */\n\tgetChildren() {\n\t\treturn this._children[ Symbol.iterator ]();\n\t}\n\n\t/**\n\t * Returns an index of the given child node. Returns `null` if given node is not a child of this element.\n\t *\n\t * @param {module:engine/model/node~Node} node Child node to look for.\n\t * @returns {Number} Child node's index in this element.\n\t */\n\tgetChildIndex( node ) {\n\t\treturn this._children.getNodeIndex( node );\n\t}\n\n\t/**\n\t * Returns the starting offset of given child. Starting offset is equal to the sum of\n\t * {module:engine/model/node~Node#offsetSize offset sizes} of all node's siblings that are before it. Returns `null` if\n\t * given node is not a child of this element.\n\t *\n\t * @param {module:engine/model/node~Node} node Child node to look for.\n\t * @returns {Number} Child node's starting offset.\n\t */\n\tgetChildStartOffset( node ) {\n\t\treturn this._children.getNodeStartOffset( node );\n\t}\n\n\t/**\n\t * Creates a copy of this element and returns it. Created element has same name and attributes as original element.\n\t * If clone is not deep, children of copied element are references to the same nodes as in original element.\n\t * If clone is deep, original element's children are also cloned.\n\t *\n\t * @param {Boolean} [deep=false] Decides whether children of this element should also be cloned (`true`) or not (`false`).\n\t */\n\tclone( deep = false ) {\n\t\tconst children = deep ?\n\t\t\tArray.from( this._children ).map( ( node ) => node.clone() ) :\n\t\t\tArray.from( this._children );\n\n\t\treturn new Element( this.name, this.getAttributes(), children );\n\t}\n\n\t/**\n\t * Returns index of a node that occupies given offset. If given offset is too low, returns `0`. If given offset is\n\t * too high, returns {@link module:engine/model/element~Element#getChildIndex index after last child}.\n\t *\n\t *\t\tconst textNode = new Text( 'foo' );\n\t *\t\tconst pElement = new Element( 'p' );\n\t *\t\tconst divElement = new Element( [ textNode, pElement ] );\n\t *\t\tdivElement.offsetToIndex( -1 ); // Returns 0, because offset is too low.\n\t *\t\tdivElement.offsetToIndex( 0 ); // Returns 0, because offset 0 is taken by `textNode` which is at index 0.\n\t *\t\tdivElement.offsetToIndex( 1 ); // Returns 0, because `textNode` has `offsetSize` equal to 3, so it occupies offset 1 too.\n\t *\t\tdivElement.offsetToIndex( 2 ); // Returns 0.\n\t *\t\tdivElement.offsetToIndex( 3 ); // Returns 1.\n\t *\t\tdivElement.offsetToIndex( 4 ); // Returns 2. There are no nodes at offset 4, so last available index is returned.\n\t *\n\t * @param {Number} offset Offset to look for.\n\t * @returns {Number}\n\t */\n\toffsetToIndex( offset ) {\n\t\treturn this._children.offsetToIndex( offset );\n\t}\n\n\t/**\n\t * {@link module:engine/model/element~Element#insertChildren Inserts} one or more nodes at the end of this element.\n\t *\n\t * @param {module:engine/model/node~Node|Iterable.} nodes Nodes to be inserted.\n\t */\n\tappendChildren( nodes ) {\n\t\tthis.insertChildren( this.childCount, nodes );\n\t}\n\n\t/**\n\t * Inserts one or more nodes at the given index and sets {@link module:engine/model/node~Node#parent parent} of these nodes\n\t * to this element.\n\t *\n\t * @param {Number} index Index at which nodes should be inserted.\n\t * @param {module:engine/model/node~Node|Iterable.} nodes Nodes to be inserted.\n\t */\n\tinsertChildren( index, nodes ) {\n\t\tnodes = normalize( nodes );\n\n\t\tfor ( let node of nodes ) {\n\t\t\tnode.parent = this;\n\t\t}\n\n\t\tthis._children.insertNodes( index, nodes );\n\t}\n\n\t/**\n\t * Removes one or more nodes starting at the given index and sets\n\t * {@link module:engine/model/node~Node#parent parent} of these nodes to `null`.\n\t *\n\t * @param {Number} index Index of the first node to remove.\n\t * @param {Number} [howMany=1] Number of nodes to remove.\n\t * @returns {Array.} Array containing removed nodes.\n\t */\n\tremoveChildren( index, howMany = 1 ) {\n\t\tconst nodes = this._children.removeNodes( index, howMany );\n\n\t\tfor ( let node of nodes ) {\n\t\t\tnode.parent = null;\n\t\t}\n\n\t\treturn nodes;\n\t}\n\n\t/**\n\t * Returns a descendant node by its path relative to this element.\n\t *\n\t *\t\t// ac\n\t *\t\tthis.getNodeByPath( [ 0 ] ); // -> \"a\"\n\t *\t\tthis.getNodeByPath( [ 1 ] ); // -> \n\t *\t\tthis.getNodeByPath( [ 1, 0 ] ); // -> \"c\"\n\t *\n\t * @param {Array.} relativePath Path of the node to find, relative to this element.\n\t * @returns {module:engine/model/node~Node}\n\t */\n\tgetNodeByPath( relativePath ) {\n\t\tlet node = this;\n\n\t\tfor ( const index of relativePath ) {\n\t\t\tnode = node.getChild( index );\n\t\t}\n\n\t\treturn node;\n\t}\n\n\t/**\n\t * Converts `Element` instance to plain object and returns it. Takes care of converting all of this element's children.\n\t *\n\t * @returns {Object} `Element` instance converted to plain object.\n\t */\n\ttoJSON() {\n\t\tlet json = super.toJSON();\n\n\t\tjson.name = this.name;\n\n\t\tif ( this._children.length > 0 ) {\n\t\t\tjson.children = [];\n\n\t\t\tfor ( let node of this._children ) {\n\t\t\t\tjson.children.push( node.toJSON() );\n\t\t\t}\n\t\t}\n\n\t\treturn json;\n\t}\n\n\t/**\n\t * Creates an `Element` instance from given plain object (i.e. parsed JSON string).\n\t * Converts `Element` children to proper nodes.\n\t *\n\t * @param {Object} json Plain object to be converted to `Element`.\n\t * @returns {module:engine/model/element~Element} `Element` instance created using given plain object.\n\t */\n\tstatic fromJSON( json ) {\n\t\tlet children = null;\n\n\t\tif ( json.children ) {\n\t\t\tchildren = [];\n\n\t\t\tfor ( let child of json.children ) {\n\t\t\t\tif ( child.name ) {\n\t\t\t\t\t// If child has name property, it is an Element.\n\t\t\t\t\tchildren.push( Element.fromJSON( child ) );\n\t\t\t\t} else {\n\t\t\t\t\t// Otherwise, it is a Text node.\n\t\t\t\t\tchildren.push( Text.fromJSON( child ) );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn new Element( json.name, json.attributes, children );\n\t}\n}\n\n// Converts strings to Text and non-iterables to arrays.\n//\n// @param {String|module:engine/model/node~Node|Iterable.}\n// @return {Iterable.}\nfunction normalize( nodes ) {\n\t// Separate condition because string is iterable.\n\tif ( typeof nodes == 'string' ) {\n\t\treturn [ new Text( nodes ) ];\n\t}\n\n\tif ( !isIterable( nodes ) ) {\n\t\tnodes = [ nodes ];\n\t}\n\n\t// Array.from to enable .map() on non-arrays.\n\treturn Array.from( nodes ).map( ( node ) => typeof node == 'string' ? new Text( node ) : node );\n}\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-engine/src/model/element.js","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module ui/template\n */\n\n/* global document */\n\nimport CKEditorError from '@ckeditor/ckeditor5-utils/src/ckeditorerror';\nimport mix from '@ckeditor/ckeditor5-utils/src/mix';\nimport EmitterMixin from '@ckeditor/ckeditor5-utils/src/emittermixin';\nimport Collection from '@ckeditor/ckeditor5-utils/src/collection';\nimport View from './view';\nimport ViewCollection from './viewcollection';\nimport cloneDeepWith from '@ckeditor/ckeditor5-utils/src/lib/lodash/cloneDeepWith';\nimport isObject from '@ckeditor/ckeditor5-utils/src/lib/lodash/isObject';\nimport log from '@ckeditor/ckeditor5-utils/src/log';\n\nconst xhtmlNs = 'http://www.w3.org/1999/xhtml';\n\n/**\n * A basic Template class. It renders DOM HTMLElement or Text from {@link module:ui/template~TemplateDefinition} and supports\n * element attributes, children, bindings to {@link module:utils/observablemixin~ObservableMixin} instances and DOM events\n * propagation. For example:\n *\n *\t\tnew Template( {\n *\t\t\ttag: 'p',\n *\t\t\tattributes: {\n *\t\t\t\tclass: 'foo',\n *\t\t\t\tstyle: {\n *\t\t\t\t\tbackgroundColor: 'yellow'\n *\t\t\t\t}\n *\t\t\t},\n *\t\t\tchildren: [\n *\t\t\t\t'A paragraph.'\n *\t\t\t]\n *\t\t} ).render();\n *\n * will render the following HTMLElement:\n *\n *\t\t
A paragraph.
\n *\n * See {@link module:ui/template~TemplateDefinition} to know more about templates and complex template definitions.\n *\n* @mixes module:utils/emittermixin~EmitterMixin\n */\nexport default class Template {\n\t/**\n\t * Creates an instance of the {@link ~Template} class.\n\t *\n\t * @param {module:ui/template~TemplateDefinition} def The definition of the template.\n\t */\n\tconstructor( def ) {\n\t\tObject.assign( this, normalize( clone( def ) ) );\n\n\t\t/**\n\t\t * Indicates whether this particular Template instance has been\n\t\t * {@link #render rendered}.\n\t\t *\n\t\t * @readonly\n\t\t * @protected\n\t\t * @member {Boolean}\n\t\t */\n\t\tthis._isRendered = false;\n\n\t\t/**\n\t\t * Tag of this template, i.e. `div`, indicating that the instance will render\n\t\t * to an HTMLElement.\n\t\t *\n\t\t * @member {String} #tag\n\t\t */\n\n\t\t/**\n\t\t * Text of this template, indicating that the instance will render to a DOM Text.\n\t\t *\n\t\t * @member {Array.} #text\n\t\t */\n\n\t\t/**\n\t\t * Attributes of this template, i.e. `{ id: [ 'ck-id' ] }`, corresponding with\n\t\t * HTML attributes on HTMLElement.\n\t\t *\n\t\t * Note: Only when {@link #tag} is defined.\n\t\t *\n\t\t * @member {Object} #attributes\n\t\t */\n\n\t\t/**\n\t\t * Children of this template; sub–templates. Each one is an independent\n\t\t * instance of {@link ~Template}.\n\t\t *\n\t\t * Note: Only when {@link #tag} is defined.\n\t\t *\n\t\t * @member {module:utils/collection~Collection.} #children\n\t\t */\n\n\t\t/**\n\t\t * DOM event listeners of this template.\n\t\t *\n\t\t * @member {Object} #eventListeners\n\t\t */\n\n\t\t/**\n\t\t * Data used by {@link #revert} method to restore a node\n\t\t * to its original state.\n\t\t *\n\t\t * See: {@link #apply}.\n\t\t *\n\t\t * @readonly\n\t\t * @protected\n\t\t * @member {module:ui/template~RenderData}\n\t\t */\n\t\tthis._revertData = null;\n\t}\n\n\t/**\n\t * Renders a DOM Node (`HTMLElement` or `Text`) out of the template.\n\t *\n\t * @see #apply\n\t *\n\t * @returns {HTMLElement|Text}\n\t */\n\trender() {\n\t\tconst node = this._renderNode( {\n\t\t\tintoFragment: true\n\t\t} );\n\n\t\tthis._isRendered = true;\n\n\t\treturn node;\n\t}\n\n\t/**\n\t * Applies the template to an existing DOM Node, either `HTMLElement` or `Text`.\n\t *\n\t * **Note:** No new DOM nodes (HTMLElement or Text) will be created. Applying extends attributes\n\t * ({@link module:ui/template~TemplateDefinition attributes}) and listeners ({@link module:ui/template~TemplateDefinition on}) only.\n\t *\n\t * **Note:** Existing \"class\" and \"style\" attributes are extended when a template\n\t * is applied to a Node, while other attributes and `textContent` are overridden.\n\t *\n\t * **Note:** The process of applying a template can be easily reverted using\n\t * {@link module:ui/template~Template#revert} method.\n\t *\n\t *\t\tconst element = document.createElement( 'div' );\n\t *\t\tconst bind = Template.bind( observableInstance, emitterInstance );\n\t *\n\t *\t\tnew Template( {\n\t *\t\t\tattrs: {\n\t *\t\t\t\tid: 'first-div',\n\t *\t\t\t\tclass: bind.to( 'divClass' )\n\t *\t\t\t},\n\t *\t\t\ton: {\n\t *\t\t\t\tclick: bind( 'elementClicked' ) // Will be fired by the observableInstance.\n\t *\t\t\t}\n\t *\t\t\tchildren: [\n\t *\t\t\t\t'Div text.'\n\t *\t\t\t]\n\t *\t\t} ).apply( element );\n\t *\n\t *\t\telement.outerHTML == \"
Div text.
\"\n\t *\n\t * @see module:ui/template~Template#render\n\t * @see module:ui/template~Template#revert\n\t * @param {Node} node Root node for the template to apply.\n\t */\n\tapply( node ) {\n\t\tthis._revertData = getEmptyRevertData();\n\n\t\tthis._renderNode( {\n\t\t\tnode: node,\n\t\t\tisApplying: true,\n\t\t\trevertData: this._revertData\n\t\t} );\n\n\t\treturn node;\n\t}\n\n\t/**\n\t * Reverts a template {@link module:ui/template~Template#apply applied} to a DOM Node.\n\t *\n\t * @param {Node} node Root node for the template to revert. In most cases, it's the same node\n\t * that {@link module:ui/template~Template#apply} has used.\n\t */\n\trevert( node ) {\n\t\tif ( !this._revertData ) {\n\t\t\t/**\n\t\t\t * Attempting reverting a template which has not been applied yet.\n\t\t\t *\n\t\t\t * @error ui-template-revert-not-applied\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'ui-template-revert-not-applied: Attempting reverting a template which has not been applied yet.' );\n\t\t}\n\n\t\tthis._revertTemplateFromNode( node, this._revertData );\n\t}\n\n\t/**\n\t * An entry point to the interface which allows binding DOM nodes to {@link module:utils/observablemixin~ObservableMixin}.\n\t * There are two types of bindings:\n\t *\n\t * * `HTMLElement` attributes or Text Node `textContent` can be synchronized with {@link module:utils/observablemixin~ObservableMixin}\n\t * instance attributes. See {@link module:ui/template~BindChain#to} and {@link module:ui/template~BindChain#if}.\n\t *\n\t * * DOM events fired on `HTMLElement` can be propagated through {@link module:utils/observablemixin~ObservableMixin}.\n\t * See {@link module:ui/template~BindChain#to}.\n\t *\n\t * @param {module:utils/observablemixin~ObservableMixin} observable An instance of ObservableMixin class.\n\t * @param {module:utils/emittermixin~EmitterMixin} emitter An instance of `Emitter` class. It listens\n\t * to `observable` attribute changes and DOM Events, depending on the binding. Usually {@link module:ui/view~View} instance.\n\t * @returns {module:ui/template~BindChain}\n\t */\n\tstatic bind( observable, emitter ) {\n\t\treturn {\n\t\t\tto( eventNameOrFunctionOrAttribute, callback ) {\n\t\t\t\treturn new TemplateToBinding( {\n\t\t\t\t\teventNameOrFunction: eventNameOrFunctionOrAttribute,\n\t\t\t\t\tattribute: eventNameOrFunctionOrAttribute,\n\t\t\t\t\tobservable, emitter, callback\n\t\t\t\t} );\n\t\t\t},\n\n\t\t\tif( attribute, valueIfTrue, callback ) {\n\t\t\t\treturn new TemplateIfBinding( {\n\t\t\t\t\tobservable, emitter, attribute, valueIfTrue, callback\n\t\t\t\t} );\n\t\t\t}\n\t\t};\n\t}\n\n\t/**\n\t * Extends {@link module:ui/template~Template} instance with additional content from {@link module:ui/template~TemplateDefinition}.\n\t *\n\t *\t\tconst bind = Template.bind( observable, emitterInstance );\n\t *\t\tconst instance = new Template( {\n\t *\t\t\ttag: 'p',\n\t *\t\t\tattributes: {\n\t *\t\t\t\tclass: 'a',\n\t *\t\t\t\tdata-x: bind.to( 'foo' )\n\t *\t\t\t},\n\t *\t\t\tchildren: [\n\t *\t\t\t\t{\n\t *\t\t\t\t\ttag: 'span',\n\t *\t\t\t\t\tattributes: {\n\t *\t\t\t\t\t\tclass: 'b'\n\t *\t\t\t\t\t},\n\t *\t\t\t\t\tchildren: [\n\t *\t\t\t\t\t\t'Span'\n\t *\t\t\t\t\t]\n\t *\t\t\t\t}\n\t *\t\t\t]\n\t *\t\t } );\n\t *\n\t *\t\t// Instance-level extension.\n\t *\t\tTemplate.extend( instance, {\n\t *\t\t\tattributes: {\n\t *\t\t\t\tclass: 'b',\n\t *\t\t\t\tdata-x: bind.to( 'bar' )\n\t *\t\t\t},\n\t *\t\t\tchildren: [\n\t *\t\t\t\t{\n\t *\t\t\t\t\tattributes: {\n\t *\t\t\t\t\t\tclass: 'c'\n\t *\t\t\t\t\t}\n\t *\t\t\t\t}\n\t *\t\t\t]\n\t *\t\t} );\n\t *\n\t *\t\t// Child extension.\n\t *\t\tTemplate.extend( instance.children.get( 0 ), {\n\t *\t\t\tattributes: {\n\t *\t\t\t\tclass: 'd'\n\t *\t\t\t}\n\t *\t\t} );\n\t *\n\t * the `instance.render().outerHTML` is\n\t *\n\t *\t\t
\n\t *\t\t\tSpan\n\t *\t\t
\n\t *\n\t * @param {module:ui/template~Template} template Existing Template instance to be extended.\n\t * @param {module:ui/template~TemplateDefinition} def An extension to existing an template instance.\n\t */\n\tstatic extend( template, def ) {\n\t\tif ( template._isRendered ) {\n\t\t\t/**\n\t\t\t * Extending a template after rendering may not work as expected. To make sure\n\t\t\t * the {@link #extend extending} works for the rendered element, perform it\n\t\t\t * before {@link #render} is called.\n\t\t\t *\n\t\t\t * @error template-extend-render\n\t\t\t */\n\t\t\tlog.warn( 'template-extend-render: Attempting to extend a template which has already been rendered.' );\n\t\t}\n\n\t\textendTemplate( template, normalize( clone( def ) ) );\n\t}\n\n\t/**\n\t * Renders a DOM Node (either `HTMLElement` or `Text`) out of the template.\n\t *\n\t * @protected\n\t * @param {module:ui/template~RenderData} data Rendering data.\n\t */\n\t_renderNode( data ) {\n\t\tlet isInvalid;\n\n\t\tif ( data.node ) {\n\t\t\t// When applying, a definition cannot have \"tag\" and \"text\" at the same time.\n\t\t\tisInvalid = this.tag && this.text;\n\t\t} else {\n\t\t\t// When rendering, a definition must have either \"tag\" or \"text\": XOR( this.tag, this.text ).\n\t\t\tisInvalid = this.tag ? this.text : !this.text;\n\t\t}\n\n\t\tif ( isInvalid ) {\n\t\t\t/**\n\t\t\t * Node definition cannot have \"tag\" and \"text\" properties at the same time.\n\t\t\t * Node definition must have either \"tag\" or \"text\" when rendering new Node.\n\t\t\t *\n\t\t\t * @error ui-template-wrong-syntax\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'ui-template-wrong-syntax: Node definition must have either \"tag\" or \"text\" when rendering new Node.' );\n\t\t}\n\n\t\tif ( this.text ) {\n\t\t\treturn this._renderText( data );\n\t\t} else {\n\t\t\treturn this._renderElement( data );\n\t\t}\n\t}\n\n\t/**\n\t * Renders an `HTMLElement` out of the template.\n\t *\n\t * @protected\n\t * @param {module:ui/template~RenderData} data Rendering data.\n\t */\n\t_renderElement( data ) {\n\t\tlet node = data.node;\n\n\t\tif ( !node ) {\n\t\t\tnode = data.node = document.createElementNS( this.ns || xhtmlNs, this.tag );\n\t\t}\n\n\t\tthis._renderAttributes( data );\n\t\tthis._renderElementChildren( data );\n\t\tthis._setUpListeners( data );\n\n\t\treturn node;\n\t}\n\n\t/**\n\t * Renders a `Text` node out of {@link module:ui/template~Template#text}.\n\t *\n\t * @protected\n\t * @param {module:ui/template~RenderData} data Rendering data.\n\t */\n\t_renderText( data ) {\n\t\tlet node = data.node;\n\n\t\t// Save the original textContent to revert it in #revert().\n\t\tif ( node ) {\n\t\t\tdata.revertData.text = node.textContent;\n\t\t} else {\n\t\t\tnode = data.node = document.createTextNode( '' );\n\t\t}\n\n\t\t// Check if this Text Node is bound to Observable. Cases:\n\t\t//\n\t\t//\t\ttext: [ Template.bind( ... ).to( ... ) ]\n\t\t//\n\t\t//\t\ttext: [\n\t\t//\t\t\t'foo',\n\t\t//\t\t\tTemplate.bind( ... ).to( ... ),\n\t\t//\t\t\t...\n\t\t//\t\t]\n\t\t//\n\t\tif ( hasTemplateBinding( this.text ) ) {\n\t\t\tthis._bindToObservable( {\n\t\t\t\tschema: this.text,\n\t\t\t\tupdater: getTextUpdater( node ),\n\t\t\t\tdata\n\t\t\t} );\n\t\t}\n\t\t// Simply set text. Cases:\n\t\t//\n\t\t//\t\ttext: [ 'all', 'are', 'static' ]\n\t\t//\n\t\t//\t\ttext: [ 'foo' ]\n\t\t//\n\t\telse {\n\t\t\tnode.textContent = this.text.join( '' );\n\t\t}\n\n\t\treturn node;\n\t}\n\n\t/**\n\t * Renders an `HTMLElement` attributes out of {@link module:ui/template~Template#attributes}.\n\t *\n\t * @protected\n\t * @param {module:ui/template~RenderData} data Rendering data.\n\t */\n\t_renderAttributes( data ) {\n\t\tlet attrName, attrValue, domAttrValue, attrNs;\n\n\t\tif ( !this.attributes ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst node = data.node;\n\t\tconst revertData = data.revertData;\n\n\t\tfor ( attrName in this.attributes ) {\n\t\t\t// Current attribute value in DOM.\n\t\t\tdomAttrValue = node.getAttribute( attrName );\n\n\t\t\t// The value to be set.\n\t\t\tattrValue = this.attributes[ attrName ];\n\n\t\t\t// Save revert data.\n\t\t\tif ( revertData ) {\n\t\t\t\trevertData.attributes[ attrName ] = domAttrValue;\n\t\t\t}\n\n\t\t\t// Detect custom namespace:\n\t\t\t//\n\t\t\t//\t\tclass: {\n\t\t\t//\t\t\tns: 'abc',\n\t\t\t//\t\t\tvalue: Template.bind( ... ).to( ... )\n\t\t\t//\t\t}\n\t\t\t//\n\t\t\tattrNs = ( isObject( attrValue[ 0 ] ) && attrValue[ 0 ].ns ) ? attrValue[ 0 ].ns : null;\n\n\t\t\t// Activate binding if one is found. Cases:\n\t\t\t//\n\t\t\t//\t\tclass: [\n\t\t\t//\t\t\tTemplate.bind( ... ).to( ... )\n\t\t\t//\t\t]\n\t\t\t//\n\t\t\t//\t\tclass: [\n\t\t\t//\t\t\t'bar',\n\t\t\t//\t\t\tTemplate.bind( ... ).to( ... ),\n\t\t\t//\t\t\t'baz'\n\t\t\t//\t\t]\n\t\t\t//\n\t\t\t//\t\tclass: {\n\t\t\t//\t\t\tns: 'abc',\n\t\t\t//\t\t\tvalue: Template.bind( ... ).to( ... )\n\t\t\t//\t\t}\n\t\t\t//\n\t\t\tif ( hasTemplateBinding( attrValue ) ) {\n\t\t\t\t// Normalize attributes with additional data like namespace:\n\t\t\t\t//\n\t\t\t\t//\t\tclass: {\n\t\t\t\t//\t\t\tns: 'abc',\n\t\t\t\t//\t\t\tvalue: [ ... ]\n\t\t\t\t//\t\t}\n\t\t\t\t//\n\t\t\t\tconst valueToBind = attrNs ? attrValue[ 0 ].value : attrValue;\n\n\t\t\t\t// Extend the original value of attributes like \"style\" and \"class\",\n\t\t\t\t// don't override them.\n\t\t\t\tif ( revertData && shouldExtend( attrName ) ) {\n\t\t\t\t\tvalueToBind.unshift( domAttrValue );\n\t\t\t\t}\n\n\t\t\t\tthis._bindToObservable( {\n\t\t\t\t\tschema: valueToBind,\n\t\t\t\t\tupdater: getAttributeUpdater( node, attrName, attrNs ),\n\t\t\t\t\tdata\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\t// Style attribute could be an Object so it needs to be parsed in a specific way.\n\t\t\t//\n\t\t\t//\t\tstyle: {\n\t\t\t//\t\t\twidth: '100px',\n\t\t\t//\t\t\theight: Template.bind( ... ).to( ... )\n\t\t\t//\t\t}\n\t\t\t//\n\t\t\telse if ( attrName == 'style' && typeof attrValue[ 0 ] !== 'string' ) {\n\t\t\t\tthis._renderStyleAttribute( attrValue[ 0 ], data );\n\t\t\t}\n\n\t\t\t// Otherwise simply set the static attribute:\n\t\t\t//\n\t\t\t//\t\tclass: [ 'foo' ]\n\t\t\t//\n\t\t\t//\t\tclass: [ 'all', 'are', 'static' ]\n\t\t\t//\n\t\t\t//\t\tclass: [\n\t\t\t//\t\t\t{\n\t\t\t//\t\t\t\tns: 'abc',\n\t\t\t//\t\t\t\tvalue: [ 'foo' ]\n\t\t\t//\t\t\t}\n\t\t\t//\t\t]\n\t\t\t//\n\t\t\telse {\n\t\t\t\t// Extend the original value of attributes like \"style\" and \"class\",\n\t\t\t\t// don't override them.\n\t\t\t\tif ( revertData && domAttrValue && shouldExtend( attrName ) ) {\n\t\t\t\t\tattrValue.unshift( domAttrValue );\n\t\t\t\t}\n\n\t\t\t\tattrValue = attrValue\n\t\t\t\t\t// Retrieve \"values\" from:\n\t\t\t\t\t//\n\t\t\t\t\t//\t\tclass: [\n\t\t\t\t\t//\t\t\t{\n\t\t\t\t\t//\t\t\t\tns: 'abc',\n\t\t\t\t\t//\t\t\t\tvalue: [ ... ]\n\t\t\t\t\t//\t\t\t}\n\t\t\t\t\t//\t\t]\n\t\t\t\t\t//\n\t\t\t\t\t.map( val => val ? ( val.value || val ) : val )\n\t\t\t\t\t// Flatten the array.\n\t\t\t\t\t.reduce( ( prev, next ) => prev.concat( next ), [] )\n\t\t\t\t\t// Convert into string.\n\t\t\t\t\t.reduce( arrayValueReducer, '' );\n\n\t\t\t\tif ( !isFalsy( attrValue ) ) {\n\t\t\t\t\tnode.setAttributeNS( attrNs, attrName, attrValue );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Renders `style` attribute of an `HTMLElement` based on {@link module:ui/template~Template#attributes}.\n\t *\n\t * Style attribute is an {Object} with static values:\n\t *\n\t *\t\tattributes: {\n\t *\t\t\tstyle: {\n\t *\t\t\t\tcolor: 'red'\n\t *\t\t\t}\n\t *\t\t}\n\t *\n\t * or values bound to {@link module:ui/model~Model} properties:\n\t *\n\t *\t\tattributes: {\n\t *\t\t\tstyle: {\n\t *\t\t\t\tcolor: bind.to( ... )\n\t *\t\t\t}\n\t *\t\t}\n\t *\n\t * Note: `style` attribute is rendered without setting the namespace. It does not seem to be\n\t * needed.\n\t *\n\t * @private\n\t * @param {Object} styles Styles located in `attributes.style` of {@link module:ui/template~TemplateDefinition}.\n\t * @param {module:ui/template~RenderData} data Rendering data.\n\t */\n\t_renderStyleAttribute( styles, data ) {\n\t\tconst node = data.node;\n\n\t\tfor ( let styleName in styles ) {\n\t\t\tconst styleValue = styles[ styleName ];\n\n\t\t\t// Cases:\n\t\t\t//\n\t\t\t//\t\tstyle: {\n\t\t\t//\t\t\tcolor: bind.to( 'attribute' )\n\t\t\t//\t\t}\n\t\t\t//\n\t\t\tif ( hasTemplateBinding( styleValue ) ) {\n\t\t\t\tthis._bindToObservable( {\n\t\t\t\t\tschema: [ styleValue ],\n\t\t\t\t\tupdater: getStyleUpdater( node, styleName ),\n\t\t\t\t\tdata\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\t// Cases:\n\t\t\t//\n\t\t\t//\t\tstyle: {\n\t\t\t//\t\t\tcolor: 'red'\n\t\t\t//\t\t}\n\t\t\t//\n\t\t\telse {\n\t\t\t\tnode.style[ styleName ] = styleValue;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Recursively renders `HTMLElement` children from {@link module:ui/template~Template#children}.\n\t *\n\t * @protected\n\t * @param {module:ui/template~RenderData} data Rendering data.\n\t */\n\t_renderElementChildren( data ) {\n\t\tconst node = data.node;\n\t\tconst container = data.intoFragment ? document.createDocumentFragment() : node;\n\t\tconst isApplying = data.isApplying;\n\t\tlet childIndex = 0;\n\n\t\tfor ( let child of this.children ) {\n\t\t\tif ( isViewCollection( child ) ) {\n\t\t\t\tif ( !isApplying ) {\n\t\t\t\t\tchild.setParent( node );\n\n\t\t\t\t\tfor ( let view of child ) {\n\t\t\t\t\t\tcontainer.appendChild( view.element );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if ( isView( child ) ) {\n\t\t\t\tif ( !isApplying ) {\n\t\t\t\t\tcontainer.appendChild( child.element );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ( isApplying ) {\n\t\t\t\t\tconst revertData = data.revertData;\n\t\t\t\t\tconst childRevertData = getEmptyRevertData();\n\n\t\t\t\t\trevertData.children.push( childRevertData );\n\n\t\t\t\t\tchild._renderNode( {\n\t\t\t\t\t\tnode: container.childNodes[ childIndex++ ],\n\t\t\t\t\t\tisApplying: true,\n\t\t\t\t\t\trevertData: childRevertData\n\t\t\t\t\t} );\n\t\t\t\t} else {\n\t\t\t\t\tcontainer.appendChild( child.render() );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( data.intoFragment ) {\n\t\t\tnode.appendChild( container );\n\t\t}\n\t}\n\n\t/**\n\t * Activates `on` listeners in the {@link module:ui/template~TemplateDefinition}\n\t * on a passed `HTMLElement`.\n\t *\n\t * @protected\n\t * @param {module:ui/template~RenderData} data Rendering data.\n\t */\n\t_setUpListeners( data ) {\n\t\tif ( !this.eventListeners ) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor ( let key in this.eventListeners ) {\n\t\t\tconst revertBindings = this.eventListeners[ key ].map( schemaItem => {\n\t\t\t\tconst [ domEvtName, domSelector ] = key.split( '@' );\n\n\t\t\t\treturn schemaItem.activateDomEventListener( domEvtName, domSelector, data );\n\t\t\t} );\n\n\t\t\tif ( data.revertData ) {\n\t\t\t\tdata.revertData.bindings.push( revertBindings );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * For given {@link module:ui/template~TemplateValueSchema} containing {@link module:ui/template~TemplateBinding} it activates the\n\t * binding and sets its initial value.\n\t *\n\t * Note: {@link module:ui/template~TemplateValueSchema} can be for HTMLElement attributes or Text Node `textContent`.\n\t *\n\t * @protected\n\t * @param {Object} options Binding options.\n\t * @param {module:ui/template~TemplateValueSchema} options.schema\n\t * @param {Function} options.updater A function which updates DOM (like attribute or text).\n\t * @param {module:ui/template~RenderData} options.data Rendering data.\n\t */\n\t_bindToObservable( { schema, updater, data } ) {\n\t\tconst revertData = data.revertData;\n\n\t\t// Set initial values.\n\t\tsyncValueSchemaValue( schema, updater, data );\n\n\t\tconst revertBindings = schema\n\t\t\t// Filter \"falsy\" (false, undefined, null, '') value schema components out.\n\t\t\t.filter( item => !isFalsy( item ) )\n\t\t\t// Filter inactive bindings from schema, like static strings ('foo'), numbers (42), etc.\n\t\t\t.filter( item => item.observable )\n\t\t\t// Once only the actual binding are left, let the emitter listen to observable change:attribute event.\n\t\t\t// TODO: Reduce the number of listeners attached as many bindings may listen\n\t\t\t// to the same observable attribute.\n\t\t\t.map( templateBinding => templateBinding.activateAttributeListener( schema, updater, data ) );\n\n\t\tif ( revertData ) {\n\t\t\trevertData.bindings.push( revertBindings );\n\t\t}\n\t}\n\n\t/**\n\t * Reverts {@link module:ui/template~RenderData#revertData template data} from a node to\n\t * return it to the the original state.\n\t *\n\t * @protected\n\t * @param {HTMLElement|Text} node A node to be reverted.\n\t * @param {module:ui/template~RenderData#revertData} revertData Stores information about\n\t * what changes have been made by {@link #apply} to the node.\n\t */\n\t_revertTemplateFromNode( node, revertData ) {\n\t\tfor ( let binding of revertData.bindings ) {\n\t\t\t// Each binding may consist of several observable+observable#attribute.\n\t\t\t// like the following has 2:\n\t\t\t//\n\t\t\t//\t\tclass: [\n\t\t\t//\t\t\t'x',\n\t\t\t//\t\t\tbind.to( 'foo' ),\n\t\t\t//\t\t\t'y',\n\t\t\t//\t\t\tbind.to( 'bar' )\n\t\t\t//\t\t]\n\t\t\t//\n\t\t\tfor ( let revertBinding of binding ) {\n\t\t\t\trevertBinding();\n\t\t\t}\n\t\t}\n\n\t\tif ( revertData.text ) {\n\t\t\tnode.textContent = revertData.text;\n\n\t\t\treturn;\n\t\t}\n\n\t\tfor ( let attrName in revertData.attributes ) {\n\t\t\tconst attrValue = revertData.attributes[ attrName ];\n\n\t\t\t// When the attribute has **not** been set before #apply().\n\t\t\tif ( attrValue === null ) {\n\t\t\t\tnode.removeAttribute( attrName );\n\t\t\t} else {\n\t\t\t\tnode.setAttribute( attrName, attrValue );\n\t\t\t}\n\t\t}\n\n\t\tfor ( let i = 0; i < revertData.children.length; ++i ) {\n\t\t\tthis._revertTemplateFromNode( node.childNodes[ i ], revertData.children[ i ] );\n\t\t}\n\t}\n}\n\nmix( Template, EmitterMixin );\n\n/**\n * Describes a binding created by {@link module:ui/template~Template.bind} interface.\n *\n * @protected\n */\nexport class TemplateBinding {\n\t/**\n\t * Creates an instance of the {@link module:ui/template~TemplateBinding} class.\n\t *\n\t * @param {module:ui/template~TemplateDefinition} def The definition of the binding.\n\t */\n\tconstructor( def ) {\n\t\tObject.assign( this, def );\n\n\t\t/**\n\t\t * An observable instance of the binding. It provides the attribute\n\t\t * with the value or passes the event when a corresponding DOM event is fired.\n\t\t *\n\t\t * @member {module:utils/observablemixin~ObservableMixin} module:ui/template~TemplateBinding#observable\n\t\t */\n\n\t\t/**\n\t\t * An {@link module:utils/emittermixin~EmitterMixin} instance used by the binding\n\t\t * to (either):\n\t\t *\n\t\t * * listen to the attribute change in the {@link module:ui/template~TemplateBinding#observable},\n\t\t * * listen to the event in the DOM.\n\t\t *\n\t\t * @member {module:utils/emittermixin~EmitterMixin} module:ui/template~TemplateBinding#emitter\n\t\t */\n\n\t\t/**\n\t\t * The name of the attribute of {@link module:ui/template~TemplateBinding#observable} which is observed.\n\t\t *\n\t\t * @member {String} module:ui/template~TemplateBinding#attribute\n\t\t */\n\n\t\t/**\n\t\t * A custom function to process the value of {@link module:ui/template~TemplateBinding#attribute}.\n\t\t *\n\t\t * @member {Function} [module:ui/template~TemplateBinding#callback]\n\t\t */\n\t}\n\n\t/**\n\t * Returns the value of the binding, which is the value of {@link module:ui/template~TemplateBinding#attribute} in\n\t * {@link module:ui/template~TemplateBinding#observable}.\n\t *\n\t * @param {Node} [node] A native DOM node, passed to the custom {@link module:ui/template~TemplateBinding#callback}.\n\t * @returns {*} The value of {@link module:ui/template~TemplateBinding#attribute} in {@link module:ui/template~TemplateBinding#observable}.\n\t */\n\tgetValue( node ) {\n\t\tconst value = this.observable[ this.attribute ];\n\n\t\treturn this.callback ? this.callback( value, node ) : value;\n\t}\n\n\t/**\n\t * Activates the listener for the changes of {@link module:ui/template~TemplateBinding#attribute} in\n\t * {@link module:ui/template~TemplateBinding#observable}, which then updates the DOM with the aggregated\n\t * value of {@link module:ui/template~TemplateValueSchema}.\n\t *\n\t * For instance, the `class` attribute of the `Template` element can be be bound to\n\t * the observable `foo` attribute in `ObservableMixin` instance.\n\t *\n\t * @param {module:ui/template~TemplateValueSchema} schema A full schema to generate an attribute or text in DOM.\n\t * @param {Function} updater A DOM updater function used to update native DOM attribute or text.\n\t * @param {module:ui/template~RenderData} data Rendering data.\n\t * @returns {Function} A function to sever the listener binding.\n\t */\n\tactivateAttributeListener( schema, updater, data ) {\n\t\tconst callback = () => syncValueSchemaValue( schema, updater, data );\n\n\t\tthis.emitter.listenTo( this.observable, 'change:' + this.attribute, callback );\n\n\t\t// Allows revert of the listener.\n\t\treturn () => {\n\t\t\tthis.emitter.stopListening( this.observable, 'change:' + this.attribute, callback );\n\t\t};\n\t}\n}\n\n/**\n * Describes either:\n *\n * * a binding to {@link module:utils/observablemixin~ObservableMixin}\n * * or a native DOM event binding\n *\n * created by {@link module:ui/template~BindChain#to} method.\n *\n * @protected\n */\nexport class TemplateToBinding extends TemplateBinding {\n\t/**\n\t * Activates the listener for the native DOM event, which when fired, is propagated by\n\t * the {@link module:ui/template~TemplateBinding#emitter}.\n\t *\n\t * @param {String} domEvtName A name of the native DOM event.\n\t * @param {String} domSelector A selector in DOM to filter delegated events.\n\t * @param {module:ui/template~RenderData} data Rendering data.\n\t * @returns {Function} A function to sever the listener binding.\n\t */\n\tactivateDomEventListener( domEvtName, domSelector, data ) {\n\t\tconst callback = ( evt, domEvt ) => {\n\t\t\tif ( !domSelector || domEvt.target.matches( domSelector ) ) {\n\t\t\t\tif ( typeof this.eventNameOrFunction == 'function' ) {\n\t\t\t\t\tthis.eventNameOrFunction( domEvt );\n\t\t\t\t} else {\n\t\t\t\t\tthis.observable.fire( this.eventNameOrFunction, domEvt );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tthis.emitter.listenTo( data.node, domEvtName, callback );\n\n\t\t// Allows revert of the listener.\n\t\treturn () => {\n\t\t\tthis.emitter.stopListening( data.node, domEvtName, callback );\n\t\t};\n\t}\n}\n\n/**\n * Describes a binding to {@link module:utils/observablemixin~ObservableMixin} created by {@link module:ui/template~BindChain#if}\n * method.\n *\n * @protected\n */\nexport class TemplateIfBinding extends TemplateBinding {\n\t/**\n\t * @inheritDoc\n\t */\n\tgetValue( node ) {\n\t\tconst value = super.getValue( node );\n\n\t\treturn isFalsy( value ) ? false : ( this.valueIfTrue || true );\n\t}\n\n\t/**\n\t * The value of the DOM attribute/text to be set if the {@link module:ui/template~TemplateBinding#attribute} in\n\t * {@link module:ui/template~TemplateBinding#observable} is `true`.\n\t *\n\t * @member {String} [module:ui/template~TemplateIfBinding#valueIfTrue]\n\t */\n}\n\n// Checks whether given {@link module:ui/template~TemplateValueSchema} contains a\n// {@link module:ui/template~TemplateBinding}.\n//\n// @param {module:ui/template~TemplateValueSchema} schema\n// @returns {Boolean}\nfunction hasTemplateBinding( schema ) {\n\tif ( !schema ) {\n\t\treturn false;\n\t}\n\n\t// Normalize attributes with additional data like namespace:\n\t//\n\t//\t\tclass: {\n\t//\t\t\tns: 'abc',\n\t//\t\t\tvalue: [ ... ]\n\t//\t\t}\n\t//\n\tif ( schema.value ) {\n\t\tschema = schema.value;\n\t}\n\n\tif ( Array.isArray( schema ) ) {\n\t\treturn schema.some( hasTemplateBinding );\n\t} else if ( schema instanceof TemplateBinding ) {\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\n// Assembles the value using {@link module:ui/template~TemplateValueSchema} and stores it in a form of\n// an Array. Each entry of an Array corresponds to one of {@link module:ui/template~TemplateValueSchema}\n// items.\n//\n// @param {module:ui/template~TemplateValueSchema} schema\n// @param {Node} node DOM Node updated when {@link module:utils/observablemixin~ObservableMixin} changes.\n// @return {Array}\nfunction getValueSchemaValue( schema, node ) {\n\treturn schema.map( schemaItem => {\n\t\t// Process {@link module:ui/template~TemplateBinding} bindings.\n\t\tif ( schemaItem instanceof TemplateBinding ) {\n\t\t\treturn schemaItem.getValue( node );\n\t\t}\n\n\t\t// All static values like strings, numbers, and \"falsy\" values (false, null, undefined, '', etc.) just pass.\n\t\treturn schemaItem;\n\t} );\n}\n\n// A function executed each time bound Observable attribute changes, which updates DOM with a value\n// constructed from {@link module:ui/template~TemplateValueSchema}.\n//\n// @param {module:ui/template~TemplateValueSchema} schema\n// @param {Function} updater A function which updates DOM (like attribute or text).\n// @param {Node} node DOM Node updated when {@link module:utils/observablemixin~ObservableMixin} changes.\nfunction syncValueSchemaValue( schema, updater, { node } ) {\n\tlet value = getValueSchemaValue( schema, node );\n\n\t// Check if schema is a single Template.bind.if, like:\n\t//\n\t//\t\tclass: Template.bind.if( 'foo' )\n\t//\n\tif ( schema.length == 1 && schema[ 0 ] instanceof TemplateIfBinding ) {\n\t\tvalue = value[ 0 ];\n\t} else {\n\t\tvalue = value.reduce( arrayValueReducer, '' );\n\t}\n\n\tif ( isFalsy( value ) ) {\n\t\tupdater.remove();\n\t} else {\n\t\tupdater.set( value );\n\t}\n}\n\n// Returns an object consisting of `set` and `remove` functions, which\n// can be used in the context of DOM Node to set or reset `textContent`.\n// @see module:ui/view~View#_bindToObservable\n//\n// @param {Node} node DOM Node to be modified.\n// @returns {Object}\nfunction getTextUpdater( node ) {\n\treturn {\n\t\tset( value ) {\n\t\t\tnode.textContent = value;\n\t\t},\n\n\t\tremove() {\n\t\t\tnode.textContent = '';\n\t\t}\n\t};\n}\n\n// Returns an object consisting of `set` and `remove` functions, which\n// can be used in the context of DOM Node to set or reset an attribute.\n// @see module:ui/view~View#_bindToObservable\n//\n// @param {Node} node DOM Node to be modified.\n// @param {String} attrName Name of the attribute to be modified.\n// @param {String} [ns=null] Namespace to use.\n// @returns {Object}\nfunction getAttributeUpdater( el, attrName, ns ) {\n\treturn {\n\t\tset( value ) {\n\t\t\tel.setAttributeNS( ns, attrName, value );\n\t\t},\n\n\t\tremove() {\n\t\t\tel.removeAttributeNS( ns, attrName );\n\t\t}\n\t};\n}\n\n// Returns an object consisting of `set` and `remove` functions, which\n// can be used in the context of CSSStyleDeclaration to set or remove a style.\n// @see module:ui/view~View#_bindToObservable\n//\n// @param {Node} node DOM Node to be modified.\n// @param {String} styleName Name of the style to be modified.\n// @returns {Object}\nfunction getStyleUpdater( el, styleName ) {\n\treturn {\n\t\tset( value ) {\n\t\t\tel.style[ styleName ] = value;\n\t\t},\n\n\t\tremove() {\n\t\t\tel.style[ styleName ] = null;\n\t\t}\n\t};\n}\n\n// Clones definition of the template.\n//\n// @param {module:ui/template~TemplateDefinition} def\n// @returns {module:ui/template~TemplateDefinition}\nfunction clone( def ) {\n\tconst clone = cloneDeepWith( def, value => {\n\t\t// Don't clone the `Template.bind`* bindings because of the references to Observable\n\t\t// and DomEmitterMixin instances inside, which would also be traversed and cloned by greedy\n\t\t// cloneDeepWith algorithm. There's no point in cloning Observable/DomEmitterMixins\n\t\t// along with the definition.\n\t\t//\n\t\t// Don't clone Template instances if provided as a child. They're simply #render()ed\n\t\t// and nothing should interfere.\n\t\t//\n\t\t// Also don't clone View instances if provided as a child of the Template. The template\n\t\t// instance will be extracted from the View during the normalization and there's no need\n\t\t// to clone it.\n\t\tif ( value && ( value instanceof TemplateBinding || isTemplate( value ) || isView( value ) || isViewCollection( value ) ) ) {\n\t\t\treturn value;\n\t\t}\n\t} );\n\n\treturn clone;\n}\n\n// Normalizes given {@link module:ui/template~TemplateDefinition}.\n//\n// See:\n// * {@link normalizeAttributes}\n// * {@link normalizeListeners}\n// * {@link normalizePlainTextDefinition}\n// * {@link normalizeTextDefinition}\n//\n// @param {module:ui/template~TemplateDefinition} def\n// @returns {module:ui/template~TemplateDefinition} Normalized definition.\nfunction normalize( def ) {\n\tif ( typeof def == 'string' ) {\n\t\tdef = normalizePlainTextDefinition( def );\n\t} else if ( def.text ) {\n\t\tnormalizeTextDefinition( def );\n\t}\n\n\tif ( def.on ) {\n\t\tdef.eventListeners = normalizeListeners( def.on );\n\n\t\t// Template mixes EmitterMixin, so delete #on to avoid collision.\n\t\tdelete def.on;\n\t}\n\n\tif ( !def.text ) {\n\t\tif ( def.attributes ) {\n\t\t\tnormalizeAttributes( def.attributes );\n\t\t}\n\n\t\tconst children = new Collection();\n\n\t\tif ( def.children ) {\n\t\t\tif ( isViewCollection( def.children ) ) {\n\t\t\t\tchildren.add( def.children );\n\t\t\t} else {\n\t\t\t\tfor ( let child of def.children ) {\n\t\t\t\t\tif ( isTemplate( child ) || isView( child ) ) {\n\t\t\t\t\t\tchildren.add( child );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tchildren.add( new Template( child ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdef.children = children;\n\t}\n\n\treturn def;\n}\n\n// Normalizes \"attributes\" section of {@link module:ui/template~TemplateDefinition}.\n//\n//\t\tattributes: {\n//\t\t\ta: 'bar',\n//\t\t\tb: {@link module:ui/template~TemplateBinding},\n//\t\t\tc: {\n//\t\t\t\tvalue: 'bar'\n//\t\t\t}\n//\t\t}\n//\n// becomes\n//\n//\t\tattributes: {\n//\t\t\ta: [ 'bar' ],\n//\t\t\tb: [ {@link module:ui/template~TemplateBinding} ],\n//\t\t\tc: {\n//\t\t\t\tvalue: [ 'bar' ]\n//\t\t\t}\n//\t\t}\n//\n// @param {Object} attrs\nfunction normalizeAttributes( attrs ) {\n\tfor ( let a in attrs ) {\n\t\tif ( attrs[ a ].value ) {\n\t\t\tattrs[ a ].value = [].concat( attrs[ a ].value );\n\t\t}\n\n\t\tarrayify( attrs, a );\n\t}\n}\n\n// Normalizes \"on\" section of {@link module:ui/template~TemplateDefinition}.\n//\n//\t\ton: {\n//\t\t\ta: 'bar',\n//\t\t\tb: {@link module:ui/template~TemplateBinding},\n//\t\t\tc: [ {@link module:ui/template~TemplateBinding}, () => { ... } ]\n//\t\t}\n//\n// becomes\n//\n//\t\ton: {\n//\t\t\ta: [ 'bar' ],\n//\t\t\tb: [ {@link module:ui/template~TemplateBinding} ],\n//\t\t\tc: [ {@link module:ui/template~TemplateBinding}, () => { ... } ]\n//\t\t}\n//\n// @param {Object} listeners\n// @returns {Object} Object containing normalized listeners.\nfunction normalizeListeners( listeners ) {\n\tfor ( let l in listeners ) {\n\t\tarrayify( listeners, l );\n\t}\n\n\treturn listeners;\n}\n\n// Normalizes \"string\" {@link module:ui/template~TemplateDefinition}.\n//\n//\t\t\"foo\"\n//\n// becomes\n//\n//\t\t{ text: [ 'foo' ] },\n//\n// @param {String} def\n// @returns {module:ui/template~TemplateDefinition} Normalized template definition.\nfunction normalizePlainTextDefinition( def ) {\n\treturn {\n\t\ttext: [ def ]\n\t};\n}\n\n// Normalizes text {@link module:ui/template~TemplateDefinition}.\n//\n//\t\tchildren: [\n//\t\t\t{ text: 'def' },\n//\t\t\t{ text: {@link module:ui/template~TemplateBinding} }\n//\t\t]\n//\n// becomes\n//\n//\t\tchildren: [\n//\t\t\t{ text: [ 'def' ] },\n//\t\t\t{ text: [ {@link module:ui/template~TemplateBinding} ] }\n//\t\t]\n//\n// @param {module:ui/template~TemplateDefinition} def\nfunction normalizeTextDefinition( def ) {\n\tif ( !Array.isArray( def.text ) ) {\n\t\tdef.text = [ def.text ];\n\t}\n}\n\n// Wraps an entry in Object in an Array, if not already one.\n//\n//\t\t{\n//\t\t\tx: 'y',\n//\t\t\ta: [ 'b' ]\n//\t\t}\n//\n// becomes\n//\n//\t\t{\n//\t\t\tx: [ 'y' ],\n//\t\t\ta: [ 'b' ]\n//\t\t}\n//\n// @param {Object} obj\n// @param {String} key\nfunction arrayify( obj, key ) {\n\tif ( !Array.isArray( obj[ key ] ) ) {\n\t\tobj[ key ] = [ obj[ key ] ];\n\t}\n}\n\n// A helper which concatenates the value avoiding unwanted\n// leading white spaces.\n//\n// @param {String} prev\n// @param {String} cur\n// @returns {String}\nfunction arrayValueReducer( prev, cur ) {\n\tif ( isFalsy( cur ) ) {\n\t\treturn prev;\n\t} else if ( isFalsy( prev ) ) {\n\t\treturn cur;\n\t} else {\n\t\treturn `${prev} ${cur}`;\n\t}\n}\n\n// Extends one object defined in the following format:\n//\n//\t\t{\n//\t\t\tkey1: [Array1],\n//\t\t\tkey2: [Array2],\n//\t\t\t...\n//\t\t\tkeyN: [ArrayN]\n//\t\t}\n//\n// with another object of the same data format.\n//\n// @param {Object} obj Base object.\n// @param {Object} ext Object extending base.\n// @returns {String}\nfunction extendObjectValueArray( obj, ext ) {\n\tfor ( let a in ext ) {\n\t\tif ( obj[ a ] ) {\n\t\t\tobj[ a ].push( ...ext[ a ] );\n\t\t} else {\n\t\t\tobj[ a ] = ext[ a ];\n\t\t}\n\t}\n}\n\n// A helper for {@link module:ui/template~Template#extend}. Recursively extends {@link module:ui/template~Template} instance\n// with content from {module:ui/template~TemplateDefinition}. See {@link module:ui/template~Template#extend} to learn more.\n//\n// @param {module:ui/template~Template} def A template instance to be extended.\n// @param {module:ui/template~TemplateDefinition} def A definition which is to extend the template instance.\nfunction extendTemplate( template, def ) {\n\tif ( def.attributes ) {\n\t\tif ( !template.attributes ) {\n\t\t\ttemplate.attributes = {};\n\t\t}\n\n\t\textendObjectValueArray( template.attributes, def.attributes );\n\t}\n\n\tif ( def.eventListeners ) {\n\t\tif ( !template.eventListeners ) {\n\t\t\ttemplate.eventListeners = {};\n\t\t}\n\n\t\textendObjectValueArray( template.eventListeners, def.eventListeners );\n\t}\n\n\tif ( def.text ) {\n\t\ttemplate.text.push( ...def.text );\n\t}\n\n\tif ( def.children && def.children.length ) {\n\t\tif ( template.children.length != def.children.length ) {\n\t\t\t/**\n\t\t\t * The number of children in extended definition does not match.\n\t\t\t *\n\t\t\t * @error ui-template-extend-children-mismatch\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'ui-template-extend-children-mismatch: The number of children in extended definition does not match.' );\n\t\t}\n\n\t\tlet childIndex = 0;\n\n\t\tfor ( let childDef of def.children ) {\n\t\t\textendTemplate( template.children.get( childIndex++ ), childDef );\n\t\t}\n\t}\n}\n\n// Checks if value is \"falsy\".\n// Note: 0 (Number) is not \"falsy\" in this context.\n//\n// @private\n// @param {*} value Value to be checked.\nfunction isFalsy( value ) {\n\treturn !value && value !== 0;\n}\n\n// Checks if the item is an instance of {@link module:ui/view~View}\n//\n// @private\n// @param {*} value Value to be checked.\nfunction isView( item ) {\n\treturn item instanceof View;\n}\n\n// Checks if the item is an instance of {@link module:ui/template~Template}\n//\n// @private\n// @param {*} value Value to be checked.\nfunction isTemplate( item ) {\n\treturn item instanceof Template;\n}\n\n// Checks if the item is an instance of {@link module:ui/viewcollection~ViewCollection}\n//\n// @private\n// @param {*} value Value to be checked.\nfunction isViewCollection( item ) {\n\treturn item instanceof ViewCollection;\n}\n\n// Creates an empty skeleton for {@link module:ui/template~Template#revert}\n// data.\n//\n// @private\nfunction getEmptyRevertData() {\n\treturn {\n\t\tchildren: [],\n\t\tbindings: [],\n\t\tattributes: {}\n\t};\n}\n\n// Checks whether an attribute should be extended when\n// {@link module:ui/template~Template#apply} is called.\n//\n// @private\n// @param {String} attrName Attribute name to check.\nfunction shouldExtend( attrName ) {\n\treturn attrName == 'class' || attrName == 'style';\n}\n\n/**\n * A definition of {@link module:ui/template~Template}.\n * See: {@link module:ui/template~TemplateValueSchema}.\n *\n *\t\tnew Template( {\n *\t\t\ttag: 'p',\n *\t\t\tchildren: [\n *\t\t\t\t{\n *\t\t\t\t\ttag: 'span',\n *\t\t\t\t\tattributes: { ... },\n *\t\t\t\t\tchildren: [ ... ],\n *\t\t\t\t\t...\n *\t\t\t\t},\n *\t\t\t\t{\n *\t\t\t\t\ttext: 'static–text'\n *\t\t\t\t},\n *\t\t\t\t'also-static–text',\n *\t\t\t\t<{@link module:ui/view~View} instance>\n *\t\t\t\t<{@link module:ui/template~Template} instance>\n *\t\t\t\t...\n *\t\t\t],\n *\t\t\tattributes: {\n *\t\t\t\tclass: {@link module:ui/template~TemplateValueSchema},\n *\t\t\t\tid: {@link module:ui/template~TemplateValueSchema},\n *\t\t\t\tstyle: {@link module:ui/template~TemplateValueSchema}\n *\t\t\t\t...\n *\t\t\t},\n *\t\t\ton: {\n *\t\t\t\t'click': {@link module:ui/template~TemplateListenerSchema}\n *\t\t\t\t'keyup@.some-class': {@link module:ui/template~TemplateListenerSchema},\n *\t\t\t\t...\n *\t\t\t}\n *\t\t} );\n *\n *\t\t// An entire view collection can be used as a child in the definition.\n *\t\tnew Template( {\n *\t\t\ttag: 'p',\n *\t\t\tchildren: <{@link module:ui/viewcollection~ViewCollection} instance>\n *\t\t} );\n *\n * @typedef module:ui/template~TemplateDefinition\n * @type Object\n * @property {String} tag\n * @property {Array.} [children]\n * @property {Object.} [attributes]\n * @property {String|module:ui/template~TemplateValueSchema|Array.} [text]\n * @property {Object.} [on]\n */\n\n/**\n * Describes a value of HTMLElement attribute or `textContent`. See:\n * * {@link module:ui/template~TemplateDefinition},\n * * {@link module:ui/template~Template.bind},\n *\n *\t\tconst bind = Template.bind( observableInstance, emitterInstance );\n *\n *\t\tnew Template( {\n *\t\t\ttag: 'p',\n *\t\t\tattributes: {\n *\t\t\t\t// Plain String schema.\n *\t\t\t\tclass: 'static-text'\n *\n *\t\t\t\t// Object schema, an `ObservableMixin` binding.\n *\t\t\t\tclass: bind.to( 'foo' )\n *\n *\t\t\t\t// Array schema, combines the above.\n *\t\t\t\tclass: [\n *\t\t\t\t\t'static-text',\n *\t\t\t\t\tbind.to( 'bar', () => { ... } )\n *\t\t\t\t],\n *\n *\t\t\t\t// Array schema, with custom namespace.\n *\t\t\t\tclass: {\n *\t\t\t\t\tns: 'http://ns.url',\n *\t\t\t\t\tvalue: [\n *\t\t\t\t\t\tbind.if( 'baz', 'value-when-true' )\n *\t\t\t\t\t\t'static-text'\n *\t\t\t\t\t]\n *\t\t\t\t},\n *\n *\t\t\t\t// Object literal schema, specific for styles.\n *\t\t\t\tstyle: {\n *\t\t\t\t\tcolor: 'red',\n *\t\t\t\t\tbackgroundColor: bind.to( 'qux', () => { ... } )\n *\t\t\t\t}\n *\t\t\t}\n *\t\t} );\n *\n * @typedef module:ui/template~TemplateValueSchema\n * @type {Object|String|Array}\n */\n\n/**\n * Describes a listener attached to HTMLElement. See: {@link module:ui/template~TemplateDefinition}.\n *\n *\t\tnew Template( {\n *\t\t\ttag: 'p',\n *\t\t\ton: {\n *\t\t\t\t// Plain String schema.\n *\t\t\t\tclick: 'clicked'\n *\n *\t\t\t\t// Object schema, an `ObservableMixin` binding.\n *\t\t\t\tclick: {@link module:ui/template~TemplateBinding}\n *\n *\t\t\t\t// Array schema, combines the above.\n *\t\t\t\tclick: [\n *\t\t\t\t\t'clicked',\n *\t\t\t\t\t{@link module:ui/template~TemplateBinding}\n *\t\t\t\t],\n *\n *\t\t\t\t// Array schema, with custom callback.\n *\t\t\t\t// Note: It will work for \"click\" event on class=\".foo\" children only.\n *\t\t\t\t'click@.foo': {\n *\t\t\t\t\t'clicked',\n *\t\t\t\t\t{@link module:ui/template~TemplateBinding},\n *\t\t\t\t\t() => { ... }\n *\t\t\t\t}\n *\t\t\t}\n *\t\t} );\n *\n * @typedef module:ui/template~TemplateListenerSchema\n * @type {Object|String|Array}\n */\n\n/**\n * The type of {@link ~Template.bind}'s return value.\n *\n * @interface module:ui/template~BindChain\n */\n\n/**\n * Binds {@link module:utils/observablemixin~ObservableMixin} instance to:\n *\n * * HTMLElement attribute or Text Node `textContent` so remains in sync with the Observable when it changes:\n * * HTMLElement DOM event, so the DOM events are propagated through Observable.\n *\n *\t\tconst bind = Template.bind( observableInstance, emitterInstance );\n *\n *\t\tnew Template( {\n *\t\t\ttag: 'p',\n *\t\t\tattributes: {\n *\t\t\t\t// class=\"...\" attribute gets bound to `observableInstance#a`\n *\t\t\t\t'class': bind.to( 'a' )\n *\t\t\t},\n *\t\t\tchildren: [\n *\t\t\t\t//
...
gets bound to `observableInstance#b`; always `toUpperCase()`.\n *\t\t\t\t{ text: bind.to( 'b', ( value, node ) => value.toUpperCase() ) }\n *\t\t\t],\n *\t\t\ton: {\n *\t\t\t\tclick: [\n *\t\t\t\t\t// \"clicked\" event will be fired on `observableInstance` when \"click\" fires in DOM.\n *\t\t\t\t\tbind.to( 'clicked' ),\n *\n *\t\t\t\t\t// A custom callback function will be executed when \"click\" fires in DOM.\n *\t\t\t\t\tbind.to( () => {\n *\t\t\t\t\t\t...\n *\t\t\t\t\t} )\n *\t\t\t\t]\n *\t\t\t}\n *\t\t} ).render();\n *\n *\t\tconst bind = Template.bind( observableInstance, emitterInstance );\n *\n *\t\tnew Template( {\n *\t\t\ttag: 'p',\n *\t\t} ).render();\n *\n * @method #to\n * @param {String|Function} eventNameOrFunctionOrAttribute An attribute name of\n * {@link module:utils/observablemixin~ObservableMixin} or a DOM event name or an event callback.\n * @param {Function} [callback] Allows processing of the value. Accepts `Node` and `value` as arguments.\n * @return {module:ui/template~TemplateBinding}\n */\n\n/**\n * Binds {@link module:utils/observablemixin~ObservableMixin} to HTMLElement attribute or Text Node `textContent`\n * so remains in sync with the Model when it changes. Unlike {@link module:ui/template~BindChain#to},\n * it controls the presence of the attribute/`textContent` depending on the \"falseness\" of\n * {@link module:utils/observablemixin~ObservableMixin} attribute.\n *\n *\t\tconst bind = Template.bind( observableInstance, emitterInstance );\n *\n *\t\tnew Template( {\n *\t\t\ttag: 'input',\n *\t\t\tattributes: {\n *\t\t\t\t// when `observableInstance#a` is not undefined/null/false/''\n *\t\t\t\t// when `observableInstance#a` is undefined/null/false\n *\t\t\t\tchecked: bind.if( 'a' )\n *\t\t\t},\n *\t\t\tchildren: [\n *\t\t\t\t{\n *\t\t\t\t\t// \"b-is-not-set\" when `observableInstance#b` is undefined/null/false/''\n *\t\t\t\t\t// when `observableInstance#b` is not \"falsy\"\n *\t\t\t\t\ttext: bind.if( 'b', 'b-is-not-set', ( value, node ) => !value )\n *\t\t\t\t}\n *\t\t\t]\n *\t\t} ).render();\n *\n * @method #if\n * @param {String} attribute An attribute name of {@link module:utils/observablemixin~ObservableMixin} used in the binding.\n * @param {String} [valueIfTrue] Value set when {@link module:utils/observablemixin~ObservableMixin} attribute is not\n * undefined/null/false/''.\n * @param {Function} [callback] Allows processing of the value. Accepts `Node` and `value` as arguments.\n * @return {module:ui/template~TemplateBinding}\n */\n\n/**\n * The {@link module:ui/template~Template#_renderNode} configuration.\n *\n * @private\n * @interface module:ui/template~RenderData\n */\n\n/**\n * Tells {@link module:ui/template~Template#_renderNode} to render\n * children into `DocumentFragment` first and then append the fragment\n * to the parent element. It's a speed optimization.\n *\n * @member {Boolean} #intoFragment\n */\n\n/**\n * A node which is being rendered.\n *\n * @member {HTMLElement|Text} #node\n */\n\n/**\n * Indicates whether the {@module:ui/template~RenderNodeOptions#node} has\n * been provided by {@module:ui/template~Template#apply}.\n *\n * @member {Boolean} #isApplying\n */\n\n/**\n * An object storing the data that helps {@module:ui/template~Template#revert}\n * bringing back an element to its initial state, i.e. before\n * {@module:ui/template~Template#apply} was called.\n *\n * @member {Object} #revertData\n */\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-ui/src/template.js","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module utils/emittermixin\n */\n\nimport EventInfo from './eventinfo';\nimport uid from './uid';\nimport priorities from './priorities';\n\nconst _listeningTo = Symbol( 'listeningTo' );\nconst _emitterId = Symbol( 'emitterId' );\n\n/**\n * Mixin that injects the events API into its host.\n *\n * @mixin EmitterMixin\n * @implements module:utils/emittermixin~Emitter\n */\nconst EmitterMixin = {\n\t/**\n\t * Registers a callback function to be executed when an event is fired. Events can be grouped in namespaces using `:`.\n\t * When namespaced event is fired, it additionaly fires all callbacks for that namespace.\n\t *\n\t *\t\tmyEmitter.on( 'myGroup', genericCallback );\n\t *\t\tmyEmitter.on( 'myGroup:myEvent', specificCallback );\n\t *\t\tmyEmitter.fire( 'myGroup' ); // genericCallback is fired.\n\t *\t\tmyEmitter.fire( 'myGroup:myEvent' ); // both genericCallback and specificCallback are fired.\n\t *\t\tmyEmitter.fire( 'myGroup:foo' ); // genericCallback is fired even though there are no callbacks for \"foo\".\n\t *\n\t * @method #on\n\t * @param {String} event The name of the event.\n\t * @param {Function} callback The function to be called on event.\n\t * @param {Object} [options={}] Additional options.\n\t * @param {module:utils/priorities~PriorityString|Number} [options.priority='normal'] The priority of this event callback. The higher\n\t * the priority value the sooner the callback will be fired. Events having the same priority are called in the\n\t * order they were added.\n\t * @param {Object} [options.context] The object that represents `this` in the callback. Defaults to the object firing the event.\n\t */\n\ton( event, callback, options = {} ) {\n\t\tcreateEventNamespace( this, event );\n\t\tconst lists = getCallbacksListsForNamespace( this, event );\n\t\tconst priority = priorities.get( options.priority );\n\n\t\tcallback = {\n\t\t\tcallback: callback,\n\t\t\tcontext: options.context || this,\n\t\t\tpriority: priority\n\t\t};\n\n\t\t// Add the callback to all callbacks list.\n\t\tfor ( let callbacks of lists ) {\n\t\t\t// Add the callback to the list in the right priority position.\n\t\t\tlet added = false;\n\n\t\t\tfor ( let i = 0; i < callbacks.length; i++ ) {\n\t\t\t\tif ( callbacks[ i ].priority < priority ) {\n\t\t\t\t\tcallbacks.splice( i, 0, callback );\n\t\t\t\t\tadded = true;\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add at the end, if right place was not found.\n\t\t\tif ( !added ) {\n\t\t\t\tcallbacks.push( callback );\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Registers a callback function to be executed on the next time the event is fired only. This is similar to\n\t * calling {@link #on} followed by {@link #off} in the callback.\n\t *\n\t * @method #once\n\t * @param {String} event The name of the event.\n\t * @param {Function} callback The function to be called on event.\n\t * @param {Object} [options={}] Additional options.\n\t * @param {module:utils/priorities~PriorityString|Number} [options.priority='normal'] The priority of this event callback. The higher\n\t * the priority value the sooner the callback will be fired. Events having the same priority are called in the\n\t * order they were added.\n\t * @param {Object} [options.context] The object that represents `this` in the callback. Defaults to the object firing the event.\n\t */\n\tonce( event, callback, options ) {\n\t\tconst onceCallback = function( event ) {\n\t\t\t// Go off() at the first call.\n\t\t\tevent.off();\n\n\t\t\t// Go with the original callback.\n\t\t\tcallback.apply( this, arguments );\n\t\t};\n\n\t\t// Make a similar on() call, simply replacing the callback.\n\t\tthis.on( event, onceCallback, options );\n\t},\n\n\t/**\n\t * Stops executing the callback on the given event.\n\t *\n\t * @method #off\n\t * @param {String} event The name of the event.\n\t * @param {Function} callback The function to stop being called.\n\t * @param {Object} [context] The context object to be removed, pared with the given callback. To handle cases where\n\t * the same callback is used several times with different contexts.\n\t */\n\toff( event, callback, context ) {\n\t\tconst lists = getCallbacksListsForNamespace( this, event );\n\n\t\tfor ( let callbacks of lists ) {\n\t\t\tfor ( let i = 0; i < callbacks.length; i++ ) {\n\t\t\t\tif ( callbacks[ i ].callback == callback ) {\n\t\t\t\t\tif ( !context || context == callbacks[ i ].context ) {\n\t\t\t\t\t\t// Remove the callback from the list (fixing the next index).\n\t\t\t\t\t\tcallbacks.splice( i, 1 );\n\t\t\t\t\t\ti--;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Registers a callback function to be executed when an event is fired in a specific (emitter) object.\n\t *\n\t * @method #listenTo\n\t * @param {module:utils/emittermixin~Emitter} emitter The object that fires the event.\n\t * @param {String} event The name of the event.\n\t * @param {Function} callback The function to be called on event.\n\t * @param {Object} [options={}] Additional options.\n\t * @param {module:utils/priorities~PriorityString|Number} [options.priority='normal'] The priority of this event callback. The higher\n\t * the priority value the sooner the callback will be fired. Events having the same priority are called in the\n\t * order they were added.\n\t * @param {Object} [options.context] The object that represents `this` in the callback. Defaults to the object firing the event.\n\t */\n\tlistenTo( emitter, event, callback, options ) {\n\t\tlet emitters, emitterId, emitterInfo, eventCallbacks;\n\n\t\t// _listeningTo contains a list of emitters that this object is listening to.\n\t\t// This list has the following format:\n\t\t//\n\t\t// _listeningTo: {\n\t\t// emitterId: {\n\t\t// emitter: emitter,\n\t\t// callbacks: {\n\t\t// event1: [ callback1, callback2, ... ]\n\t\t// ....\n\t\t// }\n\t\t// },\n\t\t// ...\n\t\t// }\n\n\t\tif ( !this[ _listeningTo ] ) {\n\t\t\tthis[ _listeningTo ] = {};\n\t\t}\n\n\t\temitters = this[ _listeningTo ];\n\n\t\tif ( !_getEmitterId( emitter ) ) {\n\t\t\t_setEmitterId( emitter );\n\t\t}\n\n\t\temitterId = _getEmitterId( emitter );\n\n\t\tif ( !( emitterInfo = emitters[ emitterId ] ) ) {\n\t\t\temitterInfo = emitters[ emitterId ] = {\n\t\t\t\temitter: emitter,\n\t\t\t\tcallbacks: {}\n\t\t\t};\n\t\t}\n\n\t\tif ( !( eventCallbacks = emitterInfo.callbacks[ event ] ) ) {\n\t\t\teventCallbacks = emitterInfo.callbacks[ event ] = [];\n\t\t}\n\n\t\teventCallbacks.push( callback );\n\n\t\t// Finally register the callback to the event.\n\t\temitter.on( event, callback, options );\n\t},\n\n\t/**\n\t * Stops listening for events. It can be used at different levels:\n\t *\n\t * * To stop listening to a specific callback.\n\t * * To stop listening to a specific event.\n\t * * To stop listening to all events fired by a specific object.\n\t * * To stop listening to all events fired by all object.\n\t *\n\t * @method #stopListening\n\t * @param {module:utils/emittermixin~Emitter} [emitter] The object to stop listening to. If omitted, stops it for all objects.\n\t * @param {String} [event] (Requires the `emitter`) The name of the event to stop listening to. If omitted, stops it\n\t * for all events from `emitter`.\n\t * @param {Function} [callback] (Requires the `event`) The function to be removed from the call list for the given\n\t * `event`.\n\t */\n\tstopListening( emitter, event, callback ) {\n\t\tlet emitters = this[ _listeningTo ];\n\t\tlet emitterId = emitter && _getEmitterId( emitter );\n\t\tlet emitterInfo = emitters && emitterId && emitters[ emitterId ];\n\t\tlet eventCallbacks = emitterInfo && event && emitterInfo.callbacks[ event ];\n\n\t\t// Stop if nothing has been listened.\n\t\tif ( !emitters || ( emitter && !emitterInfo ) || ( event && !eventCallbacks ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// All params provided. off() that single callback.\n\t\tif ( callback ) {\n\t\t\temitter.off( event, callback );\n\t\t}\n\t\t// Only `emitter` and `event` provided. off() all callbacks for that event.\n\t\telse if ( eventCallbacks ) {\n\t\t\twhile ( ( callback = eventCallbacks.pop() ) ) {\n\t\t\t\temitter.off( event, callback );\n\t\t\t}\n\t\t\tdelete emitterInfo.callbacks[ event ];\n\t\t}\n\t\t// Only `emitter` provided. off() all events for that emitter.\n\t\telse if ( emitterInfo ) {\n\t\t\tfor ( event in emitterInfo.callbacks ) {\n\t\t\t\tthis.stopListening( emitter, event );\n\t\t\t}\n\t\t\tdelete emitters[ emitterId ];\n\t\t}\n\t\t// No params provided. off() all emitters.\n\t\telse {\n\t\t\tfor ( emitterId in emitters ) {\n\t\t\t\tthis.stopListening( emitters[ emitterId ].emitter );\n\t\t\t}\n\t\t\tdelete this[ _listeningTo ];\n\t\t}\n\t},\n\n\t/**\n\t * Fires an event, executing all callbacks registered for it.\n\t *\n\t * The first parameter passed to callbacks is an {@link module:utils/eventinfo~EventInfo} object,\n\t * followed by the optional `args` provided in the `fire()` method call.\n\t *\n\t * @method #fire\n\t * @param {String|module:utils/eventinfo~EventInfo} eventOrInfo The name of the event or `EventInfo` object if event is delegated.\n\t * @param {...*} [args] Additional arguments to be passed to the callbacks.\n\t */\n\tfire( eventOrInfo, ...args ) {\n\t\tconst eventInfo = eventOrInfo instanceof EventInfo ? eventOrInfo : new EventInfo( this, eventOrInfo );\n\t\tconst event = eventInfo.name;\n\t\tlet callbacks = getCallbacksForEvent( this, event );\n\n\t\t// Record that the event passed this emitter on its path.\n\t\teventInfo.path.push( this );\n\n\t\t// Handle event listener callbacks first.\n\t\tif ( callbacks ) {\n\t\t\t// Arguments passed to each callback.\n\t\t\tconst callbackArgs = [ eventInfo, ...args ];\n\n\t\t\t// Copying callbacks array is the easiest and most secure way of preventing infinite loops, when event callbacks\n\t\t\t// are added while processing other callbacks. Previous solution involved adding counters (unique ids) but\n\t\t\t// failed if callbacks were added to the queue before currently processed callback.\n\t\t\t// If this proves to be too inefficient, another method is to change `.on()` so callbacks are stored if same\n\t\t\t// event is currently processed. Then, `.fire()` at the end, would have to add all stored events.\n\t\t\tcallbacks = Array.from( callbacks );\n\n\t\t\tfor ( let i = 0; i < callbacks.length; i++ ) {\n\t\t\t\tcallbacks[ i ].callback.apply( callbacks[ i ].context, callbackArgs );\n\n\t\t\t\t// Remove the callback from future requests if off() has been called.\n\t\t\t\tif ( eventInfo.off.called ) {\n\t\t\t\t\t// Remove the called mark for the next calls.\n\t\t\t\t\tdelete eventInfo.off.called;\n\n\t\t\t\t\tthis.off( event, callbacks[ i ].callback, callbacks[ i ].context );\n\t\t\t\t}\n\n\t\t\t\t// Do not execute next callbacks if stop() was called.\n\t\t\t\tif ( eventInfo.stop.called ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Delegate event to other emitters if needed.\n\t\tif ( this._delegations ) {\n\t\t\tconst destinations = this._delegations.get( event );\n\t\t\tconst passAllDestinations = this._delegations.get( '*' );\n\n\t\t\tif ( destinations ) {\n\t\t\t\tfireDelegatedEvents( destinations, eventInfo, args );\n\t\t\t}\n\n\t\t\tif ( passAllDestinations ) {\n\t\t\t\tfireDelegatedEvents( passAllDestinations, eventInfo, args );\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Delegates selected events to another {@link module:utils/emittermixin~Emitter}. For instance:\n\t *\n\t *\t\temitterA.delegate( 'eventX' ).to( emitterB );\n\t *\t\temitterA.delegate( 'eventX', 'eventY' ).to( emitterC );\n\t *\n\t * then `eventX` is delegated (fired by) `emitterB` and `emitterC` along with `data`:\n\t *\n\t *\t\temitterA.fire( 'eventX', data );\n\t *\n\t * and `eventY` is delegated (fired by) `emitterC` along with `data`:\n\t *\n\t *\t\temitterA.fire( 'eventY', data );\n\t *\n\t * @method #delegate\n\t * @param {...String} events Event names that will be delegated to another emitter.\n\t * @returns {module:utils/emittermixin~EmitterMixinDelegateChain}\n\t */\n\tdelegate( ...events ) {\n\t\treturn {\n\t\t\tto: ( emitter, nameOrFunction ) => {\n\t\t\t\tif ( !this._delegations ) {\n\t\t\t\t\tthis._delegations = new Map();\n\t\t\t\t}\n\n\t\t\t\tfor ( let eventName of events ) {\n\t\t\t\t\tlet destinations = this._delegations.get( eventName );\n\n\t\t\t\t\tif ( !destinations ) {\n\t\t\t\t\t\tthis._delegations.set( eventName, new Map( [ [ emitter, nameOrFunction ] ] ) );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdestinations.set( emitter, nameOrFunction );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t},\n\n\t/**\n\t * Stops delegating events. It can be used at different levels:\n\t *\n\t * * To stop delegating all events.\n\t * * To stop delegating a specific event to all emitters.\n\t * * To stop delegating a specific event to a specific emitter.\n\t *\n\t * @method #stopDelegating\n\t * @param {String} [event] The name of the event to stop delegating. If omitted, stops it all delegations.\n\t * @param {module:utils/emittermixin~Emitter} [emitter] (requires `event`) The object to stop delegating a particular event to.\n\t * If omitted, stops delegation of `event` to all emitters.\n\t */\n\tstopDelegating( event, emitter ) {\n\t\tif ( !this._delegations ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !event ) {\n\t\t\tthis._delegations.clear();\n\t\t} else if ( !emitter ) {\n\t\t\tthis._delegations.delete( event );\n\t\t} else {\n\t\t\tconst destinations = this._delegations.get( event );\n\n\t\t\tif ( destinations ) {\n\t\t\t\tdestinations.delete( emitter );\n\t\t\t}\n\t\t}\n\t}\n};\n\nexport default EmitterMixin;\n\n/**\n * Checks if `listeningEmitter` listens to an emitter with given `listenedToEmitterId` and if so, returns that emitter.\n * If not, returns `null`.\n *\n * @protected\n * @param {module:utils/emittermixin~EmitterMixin} listeningEmitter Emitter that listens.\n * @param {String} listenedToEmitterId Unique emitter id of emitter listened to.\n * @returns {module:utils/emittermixin~EmitterMixin|null}\n */\nexport function _getEmitterListenedTo( listeningEmitter, listenedToEmitterId ) {\n\tif ( listeningEmitter[ _listeningTo ] && listeningEmitter[ _listeningTo ][ listenedToEmitterId ] ) {\n\t\treturn listeningEmitter[ _listeningTo ][ listenedToEmitterId ].emitter;\n\t}\n\n\treturn null;\n}\n\n/**\n * Sets emitter's unique id.\n *\n * **Note:** `_emitterId` can be set only once.\n *\n * @protected\n * @param {module:utils/emittermixin~EmitterMixin} emitter Emitter for which id will be set.\n * @param {String} [id] Unique id to set. If not passed, random unique id will be set.\n */\nexport function _setEmitterId( emitter, id ) {\n\tif ( !emitter[ _emitterId ] ) {\n\t\temitter[ _emitterId ] = id || uid();\n\t}\n}\n\n/**\n * Returns emitter's unique id.\n *\n * @protected\n * @param {module:utils/emittermixin~EmitterMixin} emitter Emitter which id will be returned.\n */\nexport function _getEmitterId( emitter ) {\n\treturn emitter[ _emitterId ];\n}\n\n// Gets the internal `_events` property of the given object.\n// `_events` property store all lists with callbacks for registered event names.\n// If there were no events registered on the object, empty `_events` object is created.\nfunction getEvents( source ) {\n\tif ( !source._events ) {\n\t\tObject.defineProperty( source, '_events', {\n\t\t\tvalue: {}\n\t\t} );\n\t}\n\n\treturn source._events;\n}\n\n// Creates event node for generic-specific events relation architecture.\nfunction makeEventNode() {\n\treturn {\n\t\tcallbacks: [],\n\t\tchildEvents: []\n\t};\n}\n\n// Creates an architecture for generic-specific events relation.\n// If needed, creates all events for given eventName, i.e. if the first registered event\n// is foo:bar:abc, it will create foo:bar:abc, foo:bar and foo event and tie them together.\n// It also copies callbacks from more generic events to more specific events when\n// specific events are created.\nfunction createEventNamespace( source, eventName ) {\n\tconst events = getEvents( source );\n\n\t// First, check if the event we want to add to the structure already exists.\n\tif ( events[ eventName ] ) {\n\t\t// If it exists, we don't have to do anything.\n\t\treturn;\n\t}\n\n\t// In other case, we have to create the structure for the event.\n\t// Note, that we might need to create intermediate events too.\n\t// I.e. if foo:bar:abc is being registered and we only have foo in the structure,\n\t// we need to also register foo:bar.\n\n\t// Currently processed event name.\n\tlet name = eventName;\n\t// Name of the event that is a child event for currently processed event.\n\tlet childEventName = null;\n\n\t// Array containing all newly created specific events.\n\tconst newEventNodes = [];\n\n\t// While loop can't check for ':' index because we have to handle generic events too.\n\t// In each loop, we truncate event name, going from the most specific name to the generic one.\n\t// I.e. foo:bar:abc -> foo:bar -> foo.\n\twhile ( name !== '' ) {\n\t\tif ( events[ name ] ) {\n\t\t\t// If the currently processed event name is already registered, we can be sure\n\t\t\t// that it already has all the structure created, so we can break the loop here\n\t\t\t// as no more events need to be registered.\n\t\t\tbreak;\n\t\t}\n\n\t\t// If this event is not yet registered, create a new object for it.\n\t\tevents[ name ] = makeEventNode();\n\t\t// Add it to the array with newly created events.\n\t\tnewEventNodes.push( events[ name ] );\n\n\t\t// Add previously processed event name as a child of this event.\n\t\tif ( childEventName ) {\n\t\t\tevents[ name ].childEvents.push( childEventName );\n\t\t}\n\n\t\tchildEventName = name;\n\t\t// If `.lastIndexOf()` returns -1, `.substr()` will return '' which will break the loop.\n\t\tname = name.substr( 0, name.lastIndexOf( ':' ) );\n\t}\n\n\tif ( name !== '' ) {\n\t\t// If name is not empty, we found an already registered event that was a parent of the\n\t\t// event we wanted to register.\n\n\t\t// Copy that event's callbacks to newly registered events.\n\t\tfor ( let node of newEventNodes ) {\n\t\t\tnode.callbacks = events[ name ].callbacks.slice();\n\t\t}\n\n\t\t// Add last newly created event to the already registered event.\n\t\tevents[ name ].childEvents.push( childEventName );\n\t}\n}\n\n// Gets an array containing callbacks list for a given event and it's more specific events.\n// I.e. if given event is foo:bar and there is also foo:bar:abc event registered, this will\n// return callback list of foo:bar and foo:bar:abc (but not foo).\n// Returns empty array if given event has not been yet registered.\nfunction getCallbacksListsForNamespace( source, eventName ) {\n\tconst eventNode = getEvents( source )[ eventName ];\n\n\tif ( !eventNode ) {\n\t\treturn [];\n\t}\n\n\tlet callbacksLists = [ eventNode.callbacks ];\n\n\tfor ( let i = 0; i < eventNode.childEvents.length; i++ ) {\n\t\tlet childCallbacksLists = getCallbacksListsForNamespace( source, eventNode.childEvents[ i ] );\n\n\t\tcallbacksLists = callbacksLists.concat( childCallbacksLists );\n\t}\n\n\treturn callbacksLists;\n}\n\n// Get the list of callbacks for a given event, but only if there any callbacks have been registered.\n// If there are no callbacks registered for given event, it checks if this is a specific event and looks\n// for callbacks for it's more generic version.\nfunction getCallbacksForEvent( source, eventName ) {\n\tlet event;\n\n\tif ( !source._events || !( event = source._events[ eventName ] ) || !event.callbacks.length ) {\n\t\t// There are no callbacks registered for specified eventName.\n\t\t// But this could be a specific-type event that is in a namespace.\n\t\tif ( eventName.indexOf( ':' ) > -1 ) {\n\t\t\t// If the eventName is specific, try to find callback lists for more generic event.\n\t\t\treturn getCallbacksForEvent( source, eventName.substr( 0, eventName.lastIndexOf( ':' ) ) );\n\t\t} else {\n\t\t\t// If this is a top-level generic event, return null;\n\t\t\treturn null;\n\t\t}\n\t}\n\n\treturn event.callbacks;\n}\n\n// Fires delegated events for given map of destinations.\n//\n// @private\n// * @param {Map.} destinations A map containing `[ {@link utils.Emitter}, \"event name\" ]` pair destinations.\n// * @param {utils.EventInfo} eventInfo The original event info object.\n// * @param {Array.<*>} fireArgs Arguments the original event was fired with.\nfunction fireDelegatedEvents( destinations, eventInfo, fireArgs ) {\n\tfor ( let [ emitter, name ] of destinations ) {\n\t\tif ( !name ) {\n\t\t\tname = eventInfo.name;\n\t\t} else if ( typeof name == 'function' ) {\n\t\t\tname = name( eventInfo.name );\n\t\t}\n\n\t\tconst delegatedInfo = new EventInfo( eventInfo.source, name );\n\n\t\tdelegatedInfo.path = [ ...eventInfo.path ];\n\n\t\temitter.fire( delegatedInfo, ...fireArgs );\n\t}\n}\n\n/**\n * Interface representing classes which mix in {@link module:utils/emittermixin~EmitterMixin}.\n *\n * @interface Emitter\n */\n\n/**\n * The return value of {@link ~EmitterMixin#delegate}.\n *\n * @interface module:utils/emittermixin~EmitterMixinDelegateChain\n */\n\n/**\n * Selects destination for {@link module:utils/emittermixin~EmitterMixin#delegate} events.\n *\n * @method #to\n * @param {module:utils/emittermixin~Emitter} emitter An `EmitterMixin` instance which is the destination for delegated events.\n * @param {String|Function} nameOrFunction A custom event name or function which converts the original name string.\n */\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-utils/src/emittermixin.js","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module ui/view\n */\n\nimport CKEditorError from '@ckeditor/ckeditor5-utils/src/ckeditorerror';\nimport ViewCollection from './viewcollection';\nimport Template from './template';\nimport DomEmmiterMixin from '@ckeditor/ckeditor5-utils/src/dom/emittermixin';\nimport ObservableMixin from '@ckeditor/ckeditor5-utils/src/observablemixin';\nimport Collection from '@ckeditor/ckeditor5-utils/src/collection';\nimport mix from '@ckeditor/ckeditor5-utils/src/mix';\nimport isIterable from '@ckeditor/ckeditor5-utils/src/isiterable';\n\n/**\n * Basic View class.\n *\n *\t\tclass SampleView extends View {\n *\t\t\tconstructor( locale ) {\n *\t\t\t\tsuper( locale );\n *\n *\t\t\t\tthis.template = new Template( {\n *\t\t\t\t\ttag: 'p',\n *\t\t\t\t\tchildren: [\n *\t\t\t\t\t\t'Hello',\n *\t\t\t\t\t\t{\n *\t\t\t\t\t\t\ttag: 'b',\n *\t\t\t\t\t\t\tchildren: [\n *\t\t\t\t\t\t\t\t'world!'\n *\t\t\t\t\t\t\t]\n *\t\t\t\t\t\t}\n *\t\t\t\t\t],\n *\t\t\t\t\tattributes: {\n *\t\t\t\t\t\tclass: 'foo'\n *\t\t\t\t\t}\n *\t\t\t\t} );\n *\t\t\t}\n *\t\t}\n *\n *\t\tconst view = new SampleView( locale );\n *\n *\t\tview.init().then( () => {\n *\t\t\t// Will append
Helloworld
\n *\t\t\tdocument.body.appendChild( view.element );\n *\t\t} );\n *\n * @mixes module:utils/dom/emittermixin~EmmiterMixin\n * @mixes module:utils/observablemixin~ObservableMixin\n */\nexport default class View {\n\t/**\n\t * Creates an instance of the {@link module:ui/view~View} class.\n\t *\n\t * @param {module:utils/locale~Locale} [locale] The {@link module:core/editor/editor~Editor editor's locale} instance.\n\t */\n\tconstructor( locale ) {\n\t\t/**\n\t\t * A set of tools to localize the user interface. See {@link module:core/editor/editor~Editor}.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:utils/locale~Locale}\n\t\t */\n\t\tthis.locale = locale;\n\n\t\t/**\n\t\t * Shorthand for {@link module:utils/locale~Locale#t}.\n\t\t *\n\t\t * Note: If locale instance hasn't been passed to the view this method may not be available.\n\t\t *\n\t\t * @see module:utils/locale~Locale#t\n\t\t * @method\n\t\t */\n\t\tthis.t = locale && locale.t;\n\n\t\t/**\n\t\t * Set `true` after {@link #init}, which can be asynchronous.\n\t\t *\n\t\t * @readonly\n\t\t * @observable\n\t\t * @member {Boolean} #ready\n\t\t */\n\t\tthis.set( 'ready', false );\n\n\t\t/**\n\t\t * Collections registered with {@link #createCollection}.\n\t\t *\n\t\t * @protected\n\t\t * @member {Set.}\n\t\t */\n\t\tthis._viewCollections = new Collection();\n\n\t\t/**\n\t\t * A collection of view instances, which have been added directly\n\t\t * into the {@link module:ui/template~Template#children}.\n\t\t *\n\t\t * @protected\n\t\t * @member {module:ui/viewcollection~ViewCollection}\n\t\t */\n\t\tthis._unboundChildren = this.createCollection();\n\n\t\t// Pass parent locale to its children.\n\t\tthis._viewCollections.on( 'add', ( evt, collection ) => {\n\t\t\tcollection.locale = locale;\n\t\t} );\n\n\t\t/**\n\t\t * Template of this view.\n\t\t *\n\t\t * @member {module:ui/template~Template} #template\n\t\t */\n\n\t\t/**\n\t\t * Element of this view.\n\t\t *\n\t\t * @private\n\t\t * @member {HTMLElement} #_element\n\t\t */\n\n\t\t/**\n\t\t * Cached {@link module:ui/template~Template} binder object specific for this instance.\n\t\t * See {@link #bindTemplate}.\n\t\t *\n\t\t * @private\n\t\t * @member {Object} #_bindTemplate\n\t\t */\n\t}\n\n\t/**\n\t * Element of this view. The element is rendered on first reference\n\t * using {@link #template} definition.\n\t *\n\t * @type {HTMLElement}\n\t */\n\tget element() {\n\t\tif ( this._element ) {\n\t\t\treturn this._element;\n\t\t}\n\n\t\t// No template means no element (a virtual view).\n\t\tif ( !this.template ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tthis._addTemplateChildren();\n\n\t\treturn ( this._element = this.template.render() );\n\t}\n\n\t/**\n\t * @type {HTMLElement}\n\t */\n\tset element( el ) {\n\t\tthis._element = el;\n\t}\n\n\t/**\n\t * Shorthand for {@link module:ui/template~Template.bind}, bound to {@link ~View} on the first access.\n\t *\n\t * Cached {@link module:ui/template~Template.bind} object is stored in {@link #_bindTemplate}.\n\t *\n\t * @method #bindTemplate\n\t */\n\tget bindTemplate() {\n\t\tif ( this._bindTemplate ) {\n\t\t\treturn this._bindTemplate;\n\t\t}\n\n\t\treturn ( this._bindTemplate = Template.bind( this, this ) );\n\t}\n\n\t/**\n\t * Creates a new collection of views, which can be used in this view instance,\n\t * e.g. as a member of {@link module:ui/template~TemplateDefinition TemplateDefinition} children.\n\t *\n\t *\t\tclass SampleView extends View {\n\t *\t\t\tconstructor( locale ) {\n\t *\t\t\t\tsuper( locale );\n\t *\n\t *\t\t\t\tthis.items = this.createCollection();\n \t *\n\t *\t\t\t\tthis.template = new Template( {\n\t *\t\t\t\t\ttag: 'p',\n\t *\n\t *\t\t\t\t\t// `items` collection will render here.\n\t *\t\t\t\t\tchildren: this.items\n\t *\t\t\t\t} );\n\t *\t\t\t}\n\t *\t\t}\n\t *\n\t *\t\tconst view = new SampleView( locale );\n\t *\t\tconst anotherView = new AnotherSampleView( locale );\n\t *\n\t *\t\tview.init().then( () => {\n\t *\t\t\t// Will append \n\t *\t\t\tdocument.body.appendChild( view.element );\n\t *\n\t *\t\t\t// `anotherView` becomes a child of the view, which is reflected in DOM\n\t *\t\t\t//
\n\t *\t\t\tview.items.add( anotherView );\n\t *\t\t} );\n\t *\n\t * @returns {module:ui/viewcollection~ViewCollection} A new collection of view instances.\n\t */\n\tcreateCollection() {\n\t\tconst collection = new ViewCollection();\n\n\t\tthis._viewCollections.add( collection );\n\n\t\treturn collection;\n\t}\n\n\t/**\n\t * Registers a new child view under this view instance. Once registered, a child\n\t * view is managed by its parent, including initialization ({@link #init})\n\t * and destruction ({@link #destroy}).\n\t *\n\t *\t\tclass SampleView extends View {\n\t *\t\t\tconstructor( locale ) {\n\t *\t\t\t\tsuper( locale );\n\t *\n\t *\t\t\t\tthis.childA = new SomeChildView( locale );\n\t *\t\t\t\tthis.childB = new SomeChildView( locale );\n\t *\n\t *\t\t\t\tthis.template = new Template( { tag: 'p' } );\n\t *\n\t *\t\t\t\t// Register children.\n\t *\t\t\t\tthis.addChildren( [ this.childA, this.childB ] );\n\t *\t\t\t}\n\t *\n\t *\t\t\tinit() {\n\t *\t\t\t\tthis.element.appendChild( this.childA.element );\n\t *\t\t\t\tthis.element.appendChild( this.childB.element );\n\t *\n\t *\t\t\t\treturn super.init();\n\t *\t\t\t}\n\t *\t\t}\n\t *\n\t *\t\tconst view = new SampleView( locale );\n\t *\n\t *\t\tview.init().then( () => {\n\t *\t\t\t// Will append
\n\t *\t\t\tdocument.body.appendChild( view.element );\n\t *\t\t} );\n\t *\n\t * **Note**: There's no need to add child views if they're used in the\n\t * {@link #template} explicitly:\n\t *\n\t *\t\tclass SampleView extends View {\n\t *\t\t\tconstructor( locale ) {\n\t *\t\t\t\tsuper( locale );\n\t *\n\t *\t\t\t\tthis.childA = new SomeChildView( locale );\n\t *\t\t\t\tthis.childB = new SomeChildView( locale );\n\t *\n\t *\t\t\t\tthis.template = new Template( {\n\t *\t\t\t\t\ttag: 'p',\n\t *\n \t *\t\t\t\t\t// These children will be added automatically. There's no\n \t *\t\t\t\t\t// need to call {@link #addChildren} for any of them.\n\t *\t\t\t\t\tchildren: [ this.childA, this.childB ]\n\t *\t\t\t\t} );\n\t *\t\t\t}\n\t *\n\t *\t\t\t...\n\t *\t\t}\n\t *\n\t * @param {module:ui/view~View|Iterable.} children Children views to be registered.\n\t */\n\taddChildren( children ) {\n\t\tif ( !isIterable( children ) ) {\n\t\t\tchildren = [ children ];\n\t\t}\n\n\t\tfor ( let child of children ) {\n\t\t\tthis._unboundChildren.add( child );\n\t\t}\n\t}\n\n\t/**\n\t * Initializes the view and child views located in {@link #_viewCollections}.\n\t *\n\t * @returns {Promise} A Promise resolved when the initialization process is finished.\n\t */\n\tinit() {\n\t\tif ( this.ready ) {\n\t\t\t/**\n\t\t\t * This View has already been initialized.\n\t\t\t *\n\t\t\t * @error ui-view-init-reinit\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'ui-view-init-reinit: This View has already been initialized.' );\n\t\t}\n\n\t\treturn Promise.resolve()\n\t\t\t// Initialize collections in #_viewCollections.\n\t\t\t.then( () => {\n\t\t\t\treturn Promise.all( this._viewCollections.map( c => c.init() ) );\n\t\t\t} )\n\t\t\t// Spread the word that this view is ready!\n\t\t\t.then( () => {\n\t\t\t\tthis.ready = true;\n\t\t\t} );\n\t}\n\n\t/**\n\t * Destroys the view instance and child views located in {@link #_viewCollections}.\n\t *\n\t * @returns {Promise} A Promise resolved when the destruction process is finished.\n\t */\n\tdestroy() {\n\t\tthis.stopListening();\n\n\t\tconst promises = this._viewCollections.map( c => c.destroy() );\n\n\t\tthis._unboundChildren.clear();\n\t\tthis._viewCollections.clear();\n\n\t\tthis.element = this.template = this.locale = this.t =\n\t\t\tthis._viewCollections = this._unboundChildren = null;\n\n\t\treturn Promise.all( promises );\n\t}\n\n\t/**\n\t * Recursively traverses {@link #template} in search of {@link module:ui/view~View}\n\t * instances and automatically registers them using {@link #addChildren} method.\n\t *\n\t * @protected\n\t */\n\t_addTemplateChildren() {\n\t\tconst search = ( def ) => {\n\t\t\tif ( def.children ) {\n\t\t\t\tfor ( let defOrView of def.children ) {\n\t\t\t\t\tif ( defOrView instanceof View ) {\n\t\t\t\t\t\tthis.addChildren( defOrView );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsearch( defOrView );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tsearch( this.template );\n\t}\n}\n\nmix( View, DomEmmiterMixin );\nmix( View, ObservableMixin );\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-ui/src/view.js","import baseMatches from './_baseMatches';\nimport baseMatchesProperty from './_baseMatchesProperty';\nimport identity from './identity';\nimport isArray from './isArray';\nimport property from './property';\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nexport default baseIteratee;\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-utils/src/lib/lodash/_baseIteratee.js","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @type {Function}\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-utils/src/lib/lodash/isArray.js","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module core/command/command\n */\n\nimport ObservableMixin from '@ckeditor/ckeditor5-utils/src/observablemixin';\nimport mix from '@ckeditor/ckeditor5-utils/src/mix';\n\n/**\n * The base class for CKEditor commands.\n *\n * Commands are main way to manipulate editor contents and state. They are mostly used by UI elements (or by other\n * commands) to make changes in Tree Model. Commands are available in every part of code that has access to\n * {@link module:core/editor/editor~Editor} instance, since they are registered in it and executed through\n * {@link module:core/editor/editor~Editor#execute}.\n * Commands instances are available through {@link module:core/editor/editor~Editor#commands}.\n *\n * This is an abstract base class for all commands.\n *\n * @mixes module:utils/observablemixin~ObservaleMixin\n */\nexport default class Command {\n\t/**\n\t * Creates a new Command instance.\n\t *\n\t * @param {module:core/editor/editor~Editor} editor Editor on which this command will be used.\n\t */\n\tconstructor( editor ) {\n\t\t/**\n\t\t * Editor on which this command will be used.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:core/editor/editor~Editor} #editor\n\t\t */\n\t\tthis.editor = editor;\n\n\t\t/**\n\t\t * Flag indicating whether a command is enabled or disabled.\n\t\t * A disabled command should do nothing upon it's execution.\n\t\t *\n\t\t * @observable\n\t\t * @member {Boolean} #isEnabled\n\t\t */\n\t\tthis.set( 'isEnabled', true );\n\n\t\t// If schema checking function is specified, add it to the `refreshState` listeners.\n\t\t// Feature will be disabled if it does not apply to schema requirements.\n\t\tif ( this._checkEnabled ) {\n\t\t\tthis.on( 'refreshState', ( evt, data ) => {\n\t\t\t\tdata.isEnabled = this._checkEnabled();\n\t\t\t} );\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tthis.stopListening();\n\t}\n\n\t/**\n\t * Fires `refreshState` event and checks it's resolve value to decide whether command should be enabled or not.\n\t * Other parts of code might listen to `refreshState` event on this command and add their callbacks. This\n\t * way the responsibility of deciding whether a command should be enabled is shared.\n\t *\n\t * @fires refreshState\n\t */\n\trefreshState() {\n\t\tconst data = { isEnabled: true };\n\t\tthis.fire( 'refreshState', data );\n\n\t\tthis.isEnabled = data.isEnabled;\n\t}\n\n\t/**\n\t * Executes the command if it is enabled.\n\t *\n\t * @protected\n\t * @param {*} param Parameter passed to {@link module:core/editor/editor~Editor#execute execute} method of this command.\n\t */\n\t_execute( param ) {\n\t\tif ( this.isEnabled ) {\n\t\t\tthis._doExecute( param );\n\t\t}\n\t}\n\n\t/**\n\t * Disables the command. This should be used only by the command itself. Other parts of code should add\n\t * listeners to `refreshState` event.\n\t *\n\t * @protected\n\t */\n\t_disable() {\n\t\tthis.on( 'refreshState', disableCallback );\n\t\tthis.refreshState();\n\t}\n\n\t/**\n\t * Enables the command (internally). This should be used only by the command itself. Command will be enabled if\n\t * other listeners does not return false on `refreshState` event callbacks. Firing {@link #_enable}\n\t * does not guarantee that {@link #isEnabled} will be set to true, as it depends on other listeners.\n\t *\n\t * @protected\n\t */\n\t_enable() {\n\t\tthis.off( 'refreshState', disableCallback );\n\t\tthis.refreshState();\n\t}\n\n\t/**\n\t * Executes command.\n\t * This is an abstract method that should be overwritten in child classes.\n\t *\n\t * @protected\n\t */\n\t_doExecute() {}\n\n\t/**\n\t * Checks if a command should be enabled according to its own rules. Mostly it will check schema to see if the command\n\t * is allowed to be executed in given position. This method can be defined in child class (but is not obligatory).\n\t * If it is defined, it will be added as a callback to `refreshState` event.\n\t *\n\t * @protected\n\t * @method #_checkEnabled\n\t * @returns {Boolean} `true` if command should be enabled according to\n\t * {@link module:engine/model/document~Document#schema}. `false` otherwise.\n\t */\n}\n\nfunction disableCallback( evt, data ) {\n\tdata.isEnabled = false;\n}\n\nmix( Command, ObservableMixin );\n\n/**\n * Fired whenever command has to have its {@link #isEnabled} property refreshed. Every feature,\n * command or other class which needs to disable command (set `isEnabled` to `false`) should listen to this\n * event.\n *\n * @event refreshState\n * @param {Object} data\n * @param {Boolean} [data.isEnabled=true]\n */\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-core/src/command/command.js","import isArrayLike from './isArrayLike';\nimport isObjectLike from './isObjectLike';\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nexport default isArrayLikeObject;\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-utils/src/lib/lodash/isArrayLikeObject.js","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-utils/src/lib/lodash/isObject.js","import toFinite from './toFinite';\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This function is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/6.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nexport default toInteger;\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-utils/src/lib/lodash/toInteger.js","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module engine/model/batch\n */\n\nimport CKEditorError from '@ckeditor/ckeditor5-utils/src/ckeditorerror';\n\n/**\n * `Batch` instance groups document changes ({@link module:engine/model/delta/delta~Delta deltas}). All deltas grouped in a single `Batch`\n * can be reverted together, so you can think about `Batch` as of a single undo step. If you want to extend given undo step you\n * can call another method on the same `Batch` object. If you want to create a separate undo step you can create a new `Batch`.\n *\n * For example to create two separate undo steps you can call:\n *\n *\t\tdoc.batch().insert( firstPosition, 'foo' );\n *\t\tdoc.batch().insert( secondPosition, 'bar' );\n *\n * To create a single undo step:\n *\n *\t\tconst batch = doc.batch();\n *\t\tbatch.insert( firstPosition, 'foo' );\n *\t\tbatch.insert( secondPosition, 'bar' );\n *\n * Note that all document modification methods (insert, remove, split, etc.) are chainable so you can shorten code to:\n *\n *\t\tdoc.batch().insert( firstPosition, 'foo' ).insert( secondPosition, 'bar' );\n */\nexport default class Batch {\n\t/**\n\t * Creates `Batch` instance. Not recommended to use directly, use {@link module:engine/model/document~Document#batch} instead.\n\t *\n\t * @param {module:engine/model/document~Document} document Document which this Batch changes.\n\t * @param {'transparent'|'default'} [type='default'] Type of the batch.\n\t */\n\tconstructor( document, type = 'default' ) {\n\t\t/**\n\t\t * Document which this batch changes.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:engine/model/document~Document} module:engine/model/batch~Batch#document\n\t\t */\n\t\tthis.document = document;\n\n\t\t/**\n\t\t * Array of deltas which compose this batch.\n\t\t *\n\t\t * @readonly\n\t\t * @member {Array.} module:engine/model/batch~Batch#deltas\n\t\t */\n\t\tthis.deltas = [];\n\n\t\t/**\n\t\t * Type of the batch.\n\t\t *\n\t\t * Can be one of the following values:\n\t\t * * `'default'` - all \"normal\" batches, most commonly used type.\n\t\t * * `'transparent'` - batch that should be ignored by other features, i.e. initial batch or collaborative editing changes.\n\t\t *\n\t\t * @readonly\n\t\t * @member {'transparent'|'default'} module:engine/model/batch~Batch#type\n\t\t */\n\t\tthis.type = type;\n\t}\n\n\t/**\n\t * Returns this batch base version, which is equal to the base version of first delta in the batch.\n\t * If there are no deltas in the batch, it returns `null`.\n\t *\n\t * @readonly\n\t * @type {Number|null}\n\t */\n\tget baseVersion() {\n\t\treturn this.deltas.length > 0 ? this.deltas[ 0 ].baseVersion : null;\n\t}\n\n\t/**\n\t * Adds delta to the batch instance. All modification methods (insert, remove, split, etc.) use this method\n\t * to add created deltas.\n\t *\n\t * @param {module:engine/model/delta/delta~Delta} delta Delta to add.\n\t * @return {module:engine/model/delta/delta~Delta} Added delta.\n\t */\n\taddDelta( delta ) {\n\t\tdelta.batch = this;\n\t\tthis.deltas.push( delta );\n\n\t\treturn delta;\n\t}\n\n\t/**\n\t * Gets an iterable collection of operations.\n\t *\n\t * @returns {Iterable.}\n\t */\n\t*getOperations() {\n\t\tfor ( let delta of this.deltas ) {\n\t\t\tyield* delta.operations;\n\t\t}\n\t}\n}\n\n/**\n * Function to register batch methods. To make code scalable `Batch` do not have modification\n * methods built in. They can be registered using this method.\n *\n * This method checks if there is no naming collision and throws `batch-register-taken` if the method name\n * is already taken.\n *\n * Besides that no magic happens here, the method is added to the `Batch` class prototype.\n *\n * For example:\n *\n *\t\tBatch.register( 'insert', function( position, nodes ) {\n *\t\t\t// You can use a class inheriting from `Delta` if that class should handle OT in a special way.\n *\t\t\tconst delta = new Delta();\n *\n *\t\t\t// Add delta to the Batch instance. It is important to add a delta to the batch before applying any operation.\n *\t\t\tthis.addDelta( delta );\n *\n *\t\t\t// Create operations which should be components of this delta.\n *\t\t\tconst operation = new InsertOperation( position, nodes, this.document.version );\n *\n *\t\t\t// Add operation to the delta. It is important to add operation before applying it.\n *\t\t\tdelta.addOperation( operation );\n *\n *\t\t\t// Remember to apply every operation, no magic, you need to do it manually.\n *\t\t\tthis.document.applyOperation( operation );\n *\n *\t\t\t// Make this method chainable.\n *\t\t\treturn this;\n *\t\t} );\n *\n * @method module:engine/model/batch~Batch.register\n * @param {String} name Method name.\n * @param {Function} creator Method body.\n */\nexport function register( name, creator ) {\n\tif ( Batch.prototype[ name ] ) {\n\t\t/**\n\t\t * This batch method name is already taken.\n\t\t *\n\t\t * @error batch-register-taken\n\t\t * @param {String} name\n\t\t */\n\t\tthrow new CKEditorError(\n\t\t\t'model-batch-register-taken: This batch method name is already taken.',\n\t\t\t{ name: name } );\n\t}\n\n\tBatch.prototype[ name ] = creator;\n}\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-engine/src/model/batch.js","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module engine/model/delta/deltafactory\n */\n\nimport CKEditorError from '@ckeditor/ckeditor5-utils/src/ckeditorerror';\n\nimport OperationFactory from '../operation/operationfactory';\n\nconst deserializers = new Map();\n\n/**\n * A factory class for creating operations.\n *\n * Delta is a single, from the user action point of view, change in the editable document, like insert, split or\n * rename element. Delta is composed of operations, which are unit changes needed to be done to execute user action.\n *\n * Multiple deltas are grouped into a single {@link module:engine/model/batch~Batch}.\n */\nexport default class DeltaFactory {\n\t/**\n\t * Creates InsertDelta from deserialized object, i.e. from parsed JSON string.\n\t *\n\t * @param {Object} json\n\t * @param {module:engine/model/document~Document} doc Document on which this delta will be applied.\n\t * @returns {module:engine/model/delta/insertdelta~InsertDelta}\n\t */\n\tstatic fromJSON( json, doc ) {\n\t\tif ( !deserializers.has( json.__className ) ) {\n\t\t\t/**\n\t\t\t * This delta has no defined deserializer.\n\t\t\t *\n\t\t\t * @error delta-fromjson-no-deserializer\n\t\t\t * @param {String} name\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'delta-fromjson-no-deserializer: This delta has no defined deserializer',\n\t\t\t\t{ name: json.__className }\n\t\t\t);\n\t\t}\n\n\t\tlet Delta = deserializers.get( json.__className );\n\n\t\tlet delta = new Delta();\n\n\t\tfor ( let operation of json.operations ) {\n\t\t\tdelta.addOperation( OperationFactory.fromJSON( operation, doc ) );\n\t\t}\n\n\t\treturn delta;\n\t}\n\n\t/**\n\t * Registers a class for delta factory.\n\t *\n\t * @param {Function} Delta A delta class to register.\n\t */\n\tstatic register( Delta ) {\n\t\tdeserializers.set( Delta.className, Delta );\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-engine/src/model/delta/deltafactory.js","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module engine/model/writer\n */\n\nimport Node from './node';\nimport Text from './text';\nimport TextProxy from './textproxy';\nimport Range from './range';\nimport DocumentFragment from './documentfragment';\nimport NodeList from './nodelist';\nimport CKEditorError from '@ckeditor/ckeditor5-utils/src/ckeditorerror';\n\n/**\n * Contains functions used for composing model tree, grouped together under \"model writer\" name. Those functions\n * are built on top of {@link module:engine/model/node~Node node}, and it's child classes', APIs.\n *\n * Model writer API has multiple advantages and it is highly recommended to use it when changing model tree and nodes:\n * * model writer API {@link module:engine/model/writer~writer.normalizeNodes normalizes inserted nodes}, which means that you can insert\n * not only {@link module:engine/model/node~Node nodes}, but also `String`s, {@link module:engine/model/textproxy~TextProxy text proxies}\n * and\n * {@link module:engine/model/documentfragment~DocumentFragment document fragments},\n * * model writer API operates on {@link module:engine/model/position~Position positions}, which means that you have\n * better control over manipulating model tree as positions operate on offsets rather than indexes,\n * * model writer API automatically merges {@link module:engine/model/text~Text text nodes} with same attributes, which means\n * lower memory usage and better efficiency.\n *\n * @namespace writer\n */\nconst writer = {\n\tinsert,\n\tremove,\n\tmove,\n\tsetAttribute,\n\tremoveAttribute,\n\tnormalizeNodes\n};\n\nexport default writer;\n\n/**\n * Inserts given nodes at given position.\n *\n * @function module:engine/model/writer~writer.insert\n * @param {module:engine/model/position~Position} position Position at which nodes should be inserted.\n * @param {module:engine/model/node~NodeSet} nodes Nodes to insert.\n * @returns {module:engine/model/range~Range} Range spanning over inserted elements.\n */\nexport function insert( position, nodes ) {\n\tnodes = normalizeNodes( nodes );\n\n\t// We have to count offset before inserting nodes because they can get merged and we would get wrong offsets.\n\tconst offset = nodes.reduce( ( sum, node ) => sum + node.offsetSize, 0 );\n\tconst parent = position.parent;\n\n\t// Insertion might be in a text node, we should split it if that's the case.\n\t_splitNodeAtPosition( position );\n\tconst index = position.index;\n\n\t// Insert nodes at given index. After splitting we have a proper index and insertion is between nodes,\n\t// using basic `Element` API.\n\tparent.insertChildren( index, nodes );\n\n\t// Merge text nodes, if possible. Merging is needed only at points where inserted nodes \"touch\" \"old\" nodes.\n\t_mergeNodesAtIndex( parent, index + nodes.length );\n\t_mergeNodesAtIndex( parent, index );\n\n\treturn new Range( position, position.getShiftedBy( offset ) );\n}\n\n/**\n * Removed nodes in given range. Only {@link module:engine/model/range~Range#isFlat flat} ranges are accepted.\n *\n * @function module:engine/model/writer~writer.remove\n * @param {module:engine/model/range~Range} range Range containing nodes to remove.\n * @returns {Array.}\n */\nexport function remove( range ) {\n\tif ( !range.isFlat ) {\n\t\t/**\n\t\t * Trying to remove a range that starts and ends in different element.\n\t\t *\n\t\t * @error model-writer-remove-range-not-flat\n\t\t */\n\t\tthrow new CKEditorError( 'model-writer-remove-range-not-flat: ' +\n\t\t\t'Trying to remove a range that starts and ends in different element.' );\n\t}\n\n\tconst parent = range.start.parent;\n\n\t// Range may be inside text nodes, we have to split them if that's the case.\n\t_splitNodeAtPosition( range.start );\n\t_splitNodeAtPosition( range.end );\n\n\t// Remove the text nodes using basic `Element` API.\n\tconst removed = parent.removeChildren( range.start.index, range.end.index - range.start.index );\n\n\t// Merge text nodes, if possible. After some nodes were removed, node before and after removed range will be\n\t// touching at the position equal to the removed range beginning. We check merging possibility there.\n\t_mergeNodesAtIndex( parent, range.start.index );\n\n\treturn removed;\n}\n\n/**\n * Moves nodes in given range to given target position. Only {@link module:engine/model/range~Range#isFlat flat} ranges are accepted.\n *\n * @param {module:engine/model/range~Range} sourceRange Range containing nodes to move.\n * @param {module:engine/model/position~Position} targetPosition Position to which nodes should be moved.\n * @returns {module:engine/model/range~Range} Range containing moved nodes.\n */\nexport function move( sourceRange, targetPosition ) {\n\t/* jshint validthis:true */\n\tif ( !sourceRange.isFlat ) {\n\t\t/**\n\t\t * Trying to move a range that starts and ends in different element.\n\t\t *\n\t\t * @error model-writer-move-range-not-flat\n\t\t */\n\t\tthrow new CKEditorError( 'model-writer-move-range-not-flat: ' +\n\t\t\t'Trying to move a range that starts and ends in different element.' );\n\t}\n\n\tconst nodes = this.remove( sourceRange );\n\n\t// We have to fix `targetPosition` because model changed after nodes from `sourceRange` got removed and\n\t// that change might have an impact on `targetPosition`.\n\ttargetPosition = targetPosition._getTransformedByDeletion( sourceRange.start, sourceRange.end.offset - sourceRange.start.offset );\n\n\treturn this.insert( targetPosition, nodes );\n}\n\n/**\n * Sets given attribute on nodes in given range.\n *\n * @param {module:engine/model/range~Range} range Range containing nodes that should have the attribute set.\n * @param {String} key Key of attribute to set.\n * @param {*} value Attribute value.\n */\nexport function setAttribute( range, key, value ) {\n\t// Range might start or end in text nodes, so we have to split them.\n\t_splitNodeAtPosition( range.start );\n\t_splitNodeAtPosition( range.end );\n\n\t// Iterate over all items in the range.\n\tfor ( let item of range.getItems() ) {\n\t\t// Iterator will return `TextProxy` instances but we know that those text proxies will\n\t\t// always represent full text nodes (this is guaranteed thanks to splitting we did before).\n\t\t// So, we can operate on those text proxies' text nodes.\n\t\tlet node = item.is( 'textProxy' ) ? item.textNode : item;\n\n\t\tif ( value !== null ) {\n\t\t\tnode.setAttribute( key, value );\n\t\t} else {\n\t\t\tnode.removeAttribute( key );\n\t\t}\n\n\t\t// After attributes changing it may happen that some text nodes can be merged. Try to merge with previous node.\n\t\t_mergeNodesAtIndex( node.parent, node.index );\n\t}\n\n\t// Try to merge last changed node with it's previous sibling (not covered by the loop above).\n\t_mergeNodesAtIndex( range.end.parent, range.end.index );\n}\n\n/**\n * Removes given attribute from nodes in given range.\n *\n * @param {module:engine/model/range~Range} range Range containing nodes that should have the attribute removed.\n * @param {String} key Key of attribute to remove.\n */\nexport function removeAttribute( range, key ) {\n\t/* jshint validthis:true */\n\tthis.setAttribute( range, key, null );\n}\n\n/**\n * Normalizes given object or an array of objects to an array of {@link module:engine/model/node~Node nodes}. See\n * {@link module:engine/model/node~NodeSet NodeSet} for details on how normalization is performed.\n *\n * @param {module:engine/model/node~NodeSet} nodes Objects to normalize.\n * @returns {Array.} Normalized nodes.\n */\nexport function normalizeNodes( nodes ) {\n\tconst normalized = [];\n\n\tif ( !( nodes instanceof Array ) ) {\n\t\tnodes = [ nodes ];\n\t}\n\n\t// Convert instances of classes other than Node.\n\tfor ( let i = 0; i < nodes.length; i++ ) {\n\t\tif ( typeof nodes[ i ] == 'string' ) {\n\t\t\tnormalized.push( new Text( nodes[ i ] ) );\n\t\t} else if ( nodes[ i ] instanceof TextProxy ) {\n\t\t\tnormalized.push( new Text( nodes[ i ].data, nodes[ i ].getAttributes() ) );\n\t\t} else if ( nodes[ i ] instanceof DocumentFragment || nodes[ i ] instanceof NodeList ) {\n\t\t\tfor ( let child of nodes[ i ] ) {\n\t\t\t\tnormalized.push( child );\n\t\t\t}\n\t\t} else if ( nodes[ i ] instanceof Node ) {\n\t\t\tnormalized.push( nodes[ i ] );\n\t\t}\n\t\t// Skip unrecognized type.\n\t}\n\n\t// Merge text nodes.\n\tfor ( let i = 1; i < normalized.length; i++ ) {\n\t\tconst node = normalized[ i ];\n\t\tconst prev = normalized[ i - 1 ];\n\n\t\tif ( node instanceof Text && prev instanceof Text && _haveSameAttributes( node, prev ) ) {\n\t\t\t// Doing this instead changing prev.data because .data is readonly.\n\t\t\tnormalized.splice( i - 1, 2, new Text( prev.data + node.data, prev.getAttributes() ) );\n\t\t\ti--;\n\t\t}\n\t}\n\n\treturn normalized;\n}\n\n/**\n * Checks if nodes before and after given index in given element are {@link module:engine/model/text~Text text nodes} and\n * merges them into one node if they have same attributes.\n *\n * Merging is done by removing two text nodes and inserting a new text node containing data from both merged text nodes.\n *\n * @ignore\n * @private\n * @param {module:engine/model/element~Element} element Parent element of nodes to merge.\n * @param {Number} index Index between nodes to merge.\n */\nfunction _mergeNodesAtIndex( element, index ) {\n\tconst nodeBefore = element.getChild( index - 1 );\n\tconst nodeAfter = element.getChild( index );\n\n\t// Check if both of those nodes are text objects with same attributes.\n\tif ( nodeBefore && nodeAfter && nodeBefore.is( 'text' ) && nodeAfter.is( 'text' ) && _haveSameAttributes( nodeBefore, nodeAfter ) ) {\n\t\t// Append text of text node after index to the before one.\n\t\tconst mergedNode = new Text( nodeBefore.data + nodeAfter.data, nodeBefore.getAttributes() );\n\n\t\t// Remove separate text nodes.\n\t\telement.removeChildren( index - 1, 2 );\n\n\t\t// Insert merged text node.\n\t\telement.insertChildren( index - 1, mergedNode );\n\t}\n}\n\n/**\n * Checks if given position is in a text node, and if so, splits the text node in two text nodes, each of them\n * containing a part of original text node.\n *\n * @ignore\n * @private\n * @param {module:engine/model/position~Position} position Position at which node should be split.\n */\nfunction _splitNodeAtPosition( position ) {\n\tconst textNode = position.textNode;\n\tconst element = position.parent;\n\n\tif ( textNode ) {\n\t\tconst offsetDiff = position.offset - textNode.startOffset;\n\t\tconst index = textNode.index;\n\n\t\telement.removeChildren( index, 1 );\n\n\t\tconst firstPart = new Text( textNode.data.substr( 0, offsetDiff ), textNode.getAttributes() );\n\t\tconst secondPart = new Text( textNode.data.substr( offsetDiff ), textNode.getAttributes() );\n\n\t\telement.insertChildren( index, [ firstPart, secondPart ] );\n\t}\n}\n\n/**\n * Checks whether two given nodes have same attributes.\n *\n * @ignore\n * @private\n * @param {module:engine/model/node~Node} nodeA Node to check.\n * @param {module:engine/model/node~Node} nodeB Node to check.\n * @returns {Boolean} `true` if nodes have same attributes, `false` otherwise.\n */\nfunction _haveSameAttributes( nodeA, nodeB ) {\n\tconst iteratorA = nodeA.getAttributes();\n\tconst iteratorB = nodeB.getAttributes();\n\n\tfor ( let attr of iteratorA ) {\n\t\tif ( attr[ 1 ] !== nodeB.getAttribute( attr[ 0 ] ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\titeratorB.next();\n\t}\n\n\treturn iteratorB.next().done;\n}\n\n/**\n * Value that can be normalized to an array of {@link module:engine/model/node~Node nodes}.\n *\n * Non-arrays are normalized as follows:\n * * {@link module:engine/model/node~Node Node} is left as is,\n * * {@link module:engine/model/textproxy~TextProxy TextProxy} and `String` are normalized to {@link module:engine/model/text~Text Text},\n * * {@link module:engine/model/nodelist~NodeList NodeList} is normalized to an array containing all nodes that are in that node list,\n * * {@link module:engine/model/documentfragment~DocumentFragment DocumentFragment} is normalized to an array containing all of it's\n * * children.\n *\n * Arrays are processed item by item like non-array values and flattened to one array. Normalization always results in\n * a flat array of {@link module:engine/model/node~Node nodes}. Consecutive text nodes (or items normalized to text nodes) will be\n * merged if they have same attributes.\n *\n * @typedef {module:engine/model/node~Node|module:engine/model/textproxy~TextProxy|String|\n * module:engine/model/nodelist~NodeList|module:engine/model/documentfragment~DocumentFragment|Iterable}\n * module:engine/model/node~NodeSet\n */\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-engine/src/model/writer.js","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array ? array.length : 0;\n return length ? array[length - 1] : undefined;\n}\n\nexport default last;\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-utils/src/lib/lodash/last.js","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module engine/model/delta/delta\n */\n\nimport clone from '@ckeditor/ckeditor5-utils/src/lib/lodash/clone';\nimport DeltaFactory from './deltafactory';\n\n/**\n * Base class for all deltas.\n *\n * Delta is a single, from the user action point of view, change in the editable document, like insert, split or\n * rename element. Delta is composed of operations, which are unit changes needed to be done to execute user action.\n *\n * Multiple deltas are grouped into a single {@link module:engine/model/batch~Batch}.\n */\nexport default class Delta {\n\t/**\n\t * Creates a delta instance.\n\t */\n\tconstructor() {\n\t\t/**\n\t\t * {@link module:engine/model/batch~Batch} which delta is a part of. This property is null by default and set by the\n\t\t * {@link module:engine/model/batch~Batch#addDelta} method.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:engine/model/batch~Batch} module:engine/model/delta/delta~Delta#batch\n\t\t */\n\t\tthis.batch = null;\n\n\t\t/**\n\t\t * Array of operations which compose delta.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:engine/model/operation/operation~Operation[]} module:engine/model/delta/delta~Delta#operations\n\t\t */\n\t\tthis.operations = [];\n\t}\n\n\t/**\n\t * Returns delta base version which is equal to the base version of the first operation in delta. If there\n\t * are no operations in delta, returns `null`.\n\t *\n\t * @see module:engine/model/document~Document\n\t * @type {Number|null}\n\t */\n\tget baseVersion() {\n\t\tif ( this.operations.length > 0 ) {\n\t\t\treturn this.operations[ 0 ].baseVersion;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * @param {Number} baseVersion\n\t */\n\tset baseVersion( baseVersion ) {\n\t\tfor ( let operation of this.operations ) {\n\t\t\toperation.baseVersion = baseVersion++;\n\t\t}\n\t}\n\n\t/**\n\t * A class that will be used when creating reversed delta.\n\t *\n\t * @private\n\t * @type {Function}\n\t */\n\tget _reverseDeltaClass() {\n\t\treturn Delta;\n\t}\n\n\t/**\n\t * Delta type.\n\t *\n\t * @readonly\n\t * @member {String} #type\n\t */\n\n\t/**\n\t * Add operation to the delta.\n\t *\n\t * @param {module:engine/model/operation/operation~Operation} operation Operation instance.\n\t */\n\taddOperation( operation ) {\n\t\toperation.delta = this;\n\t\tthis.operations.push( operation );\n\n\t\treturn operation;\n\t}\n\n\t/**\n\t * Creates and returns a delta that has the same parameters as this delta.\n\t *\n\t * @returns {module:engine/model/delta/delta~Delta} Clone of this delta.\n\t */\n\tclone() {\n\t\tlet delta = new this.constructor();\n\n\t\tfor ( let op of this.operations ) {\n\t\t\tdelta.addOperation( op.clone() );\n\t\t}\n\n\t\treturn delta;\n\t}\n\n\t/**\n\t * Creates and returns a reverse delta. Reverse delta when executed right after the original delta will bring back\n\t * tree model state to the point before the original delta execution. In other words, it reverses changes done\n\t * by the original delta.\n\t *\n\t * Keep in mind that tree model state may change since executing the original delta, so reverse delta may be \"outdated\".\n\t * In that case you will need to {@link module:engine/model/delta/transform~transform} it by all deltas that were executed after\n\t * the original delta.\n\t *\n\t * @returns {module:engine/model/delta/delta~Delta} Reversed delta.\n\t */\n\tgetReversed() {\n\t\tlet delta = new this._reverseDeltaClass();\n\n\t\tfor ( let op of this.operations ) {\n\t\t\tdelta.addOperation( op.getReversed() );\n\t\t}\n\n\t\tdelta.operations.reverse();\n\n\t\tfor ( let i = 0; i < delta.operations.length; i++ ) {\n\t\t\tdelta.operations[ i ].baseVersion = this.operations[ this.operations.length - 1 ].baseVersion + i + 1;\n\t\t}\n\n\t\treturn delta;\n\t}\n\n\t/**\n\t * Custom toJSON method to make deltas serializable.\n\t *\n\t * @returns {Object} Clone of this delta with added class name.\n\t */\n\ttoJSON() {\n\t\tlet json = clone( this );\n\n\t\tjson.__className = this.constructor.className;\n\n\t\t// Remove parent batch to avoid circular dependencies.\n\t\tdelete json.batch;\n\n\t\treturn json;\n\t}\n\n\t/**\n\t * Delta class name. Used by {@link #toJSON} method for serialization and\n\t * {@link module:engine/model/delta/deltafactory~DeltaFactory.fromJSON} during deserialization.\n\t *\n\t * @type {String}\n\t * @readonly\n\t */\n\tstatic get className() {\n\t\treturn 'engine.model.delta.Delta';\n\t}\n\n\t/**\n\t * Delta priority. Used in {@link module:engine/model/delta/transform~transform delta transformations}. Delta with the higher\n\t * priority will be treated as more important when resolving transformation conflicts. If deltas have same\n\t * priority, other factors will be used to determine which delta is more important.\n\t *\n\t * @private\n\t * @type {Number}\n\t */\n\tstatic get _priority() {\n\t\treturn 0;\n\t}\n}\n\nDeltaFactory.register( Delta );\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-engine/src/model/delta/delta.js","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module engine/view/element\n */\n\nimport Node from './node';\nimport Text from './text';\nimport objectToMap from '@ckeditor/ckeditor5-utils/src/objecttomap';\nimport isIterable from '@ckeditor/ckeditor5-utils/src/isiterable';\nimport isPlainObject from '@ckeditor/ckeditor5-utils/src/lib/lodash/isPlainObject';\nimport Matcher from './matcher';\n\n/**\n * View element.\n *\n * Editing engine does not define fixed HTML DTD. This is why the type of the {@link module:engine/view/element~Element} need to\n * be defined by the feature developer. Creating an element you should use {@link module:engine/view/containerelement~ContainerElement}\n * class, {@link module:engine/view/attributeelement~AttributeElement} class or {@link module:engine/view/emptyelement~EmptyElement} class.\n *\n * Note that for view elements which are not created from model, like elements from mutations, paste or\n * {@link module:engine/controller/datacontroller~DataController#set data.set} it is not possible to define the type of the element, so\n * these will be instances of the {@link module:engine/view/element~Element}.\n *\n * @extends module:engine/view/node~Node\n */\nexport default class Element extends Node {\n\t/**\n\t * Creates a view element.\n\t *\n\t * Attributes can be passed in various formats:\n\t *\n\t *\t\tnew Element( 'div', { 'class': 'editor', 'contentEditable': 'true' } ); // object\n\t *\t\tnew Element( 'div', [ [ 'class', 'editor' ], [ 'contentEditable', 'true' ] ] ); // map-like iterator\n\t *\t\tnew Element( 'div', mapOfAttributes ); // map\n\t *\n\t * @param {String} name Node name.\n\t * @param {Object|Iterable} [attrs] Collection of attributes.\n\t * @param {module:engine/view/node~Node|Iterable.} [children]\n\t * List of nodes to be inserted into created element.\n\t */\n\tconstructor( name, attrs, children ) {\n\t\tsuper();\n\n\t\t/**\n\t\t * Name of the element.\n\t\t *\n\t\t * @readonly\n\t\t * @member {String}\n\t\t */\n\t\tthis.name = name;\n\n\t\t/**\n\t\t * Map of attributes, where attributes names are keys and attributes values are values.\n\t\t *\n\t\t * @protected\n\t\t * @member {Map} #_attrs\n\t\t */\n\t\tif ( isPlainObject( attrs ) ) {\n\t\t\tthis._attrs = objectToMap( attrs );\n\t\t} else {\n\t\t\tthis._attrs = new Map( attrs );\n\t\t}\n\n\t\t/**\n\t\t * Array of child nodes.\n\t\t *\n\t\t * @protected\n\t\t * @member {Array.}\n\t\t */\n\t\tthis._children = [];\n\n\t\tif ( children ) {\n\t\t\tthis.insertChildren( 0, children );\n\t\t}\n\n\t\t/**\n\t\t * Set of classes associated with element instance.\n\t\t *\n\t\t * @protected\n\t\t * @member {Set}\n\t\t */\n\t\tthis._classes = new Set();\n\n\t\tif ( this._attrs.has( 'class' ) ) {\n\t\t\t// Remove class attribute and handle it by class set.\n\t\t\tconst classString = this._attrs.get( 'class' );\n\t\t\tparseClasses( this._classes, classString );\n\t\t\tthis._attrs.delete( 'class' );\n\t\t}\n\n\t\t/**\n\t\t * Map of styles.\n\t\t *\n\t\t * @protected\n\t\t * @member {Set} module:engine/view/element~Element#_styles\n\t\t */\n\t\tthis._styles = new Map();\n\n\t\tif ( this._attrs.has( 'style' ) ) {\n\t\t\t// Remove style attribute and handle it by styles map.\n\t\t\tparseInlineStyles( this._styles, this._attrs.get( 'style' ) );\n\t\t\tthis._attrs.delete( 'style' );\n\t\t}\n\n\t\t/**\n\t\t * Map of custom properties.\n\t\t * Custom properties can be added to element instance, will be cloned but not rendered into DOM.\n\t\t *\n\t\t * @protected\n\t\t * @memeber {Map}\n\t\t */\n\t\tthis._customProperties = new Map();\n\t}\n\n\t/**\n\t * Number of element's children.\n\t *\n\t * @readonly\n\t * @type {Number}\n\t */\n\tget childCount() {\n\t\treturn this._children.length;\n\t}\n\n\t/**\n\t * Is `true` if there are no nodes inside this element, `false` otherwise.\n\t *\n\t * @readonly\n\t * @type {Boolean}\n\t */\n\tget isEmpty() {\n\t\treturn this._children.length === 0;\n\t}\n\n\t/**\n\t * Checks whether given view tree object is of given type.\n\t *\n\t * Read more in {@link module:engine/view/node~Node#is}.\n\t *\n\t * @param {String} type\n\t * @param {String} [name] Element name.\n\t * @returns {Boolean}\n\t */\n\tis( type, name = null ) {\n\t\tif ( !name ) {\n\t\t\treturn type == 'element' || type == this.name;\n\t\t} else {\n\t\t\treturn type == 'element' && name == this.name;\n\t\t}\n\t}\n\n\t/**\n\t * Clones provided element.\n\t *\n\t * @param {Boolean} deep If set to `true` clones element and all its children recursively. When set to `false`,\n\t * element will be cloned without any children.\n\t * @returns {module:engine/view/element~Element} Clone of this element.\n\t */\n\tclone( deep ) {\n\t\tconst childrenClone = [];\n\n\t\tif ( deep ) {\n\t\t\tfor ( let child of this.getChildren() ) {\n\t\t\t\tchildrenClone.push( child.clone( deep ) );\n\t\t\t}\n\t\t}\n\n\t\t// ContainerElement and AttributeElement should be also cloned properly.\n\t\tconst cloned = new this.constructor( this.name, this._attrs, childrenClone );\n\n\t\t// Classes and styles are cloned separately - this solution is faster than adding them back to attributes and\n\t\t// parse once again in constructor.\n\t\tcloned._classes = new Set( this._classes );\n\t\tcloned._styles = new Map( this._styles );\n\n\t\t// Clone custom properties.\n\t\tcloned._customProperties = new Map( this._customProperties );\n\n\t\t// Clone filler offset method.\n\t\tcloned.getFillerOffset = this.getFillerOffset;\n\n\t\treturn cloned;\n\t}\n\n\t/**\n\t * {@link module:engine/view/element~Element#insertChildren Insert} a child node or a list of child nodes at the end of this node and sets\n\t * the parent of these nodes to this element.\n\t *\n\t * @fires module:engine/view/node~Node#change\n\t * @param {module:engine/view/node~Node|Iterable.} nodes Node or the list of nodes to be inserted.\n\t * @returns {Number} Number of appended nodes.\n\t */\n\tappendChildren( nodes ) {\n\t\treturn this.insertChildren( this.childCount, nodes );\n\t}\n\n\t/**\n\t * Gets child at the given index.\n\t *\n\t * @param {Number} index Index of child.\n\t * @returns {module:engine/view/node~Node} Child node.\n\t */\n\tgetChild( index ) {\n\t\treturn this._children[ index ];\n\t}\n\n\t/**\n\t * Gets index of the given child node. Returns `-1` if child node is not found.\n\t *\n\t * @param {module:engine/view/node~Node} node Child node.\n\t * @returns {Number} Index of the child node.\n\t */\n\tgetChildIndex( node ) {\n\t\treturn this._children.indexOf( node );\n\t}\n\n\t/**\n\t * Gets child nodes iterator.\n\t *\n\t * @returns {Iterable.} Child nodes iterator.\n\t */\n\tgetChildren() {\n\t\treturn this._children[ Symbol.iterator ]();\n\t}\n\n\t/**\n\t * Returns an iterator that contains the keys for attributes. Order of inserting attributes is not preserved.\n\t *\n\t * @returns {Iterator.} Keys for attributes.\n\t */\n\t*getAttributeKeys() {\n\t\tif ( this._classes.size > 0 ) {\n\t\t\tyield 'class';\n\t\t}\n\n\t\tif ( this._styles.size > 0 ) {\n\t\t\tyield 'style';\n\t\t}\n\n\t\t// This is not an optimal solution because of https://github.com/ckeditor/ckeditor5-engine/issues/454.\n\t\t// It can be simplified to `yield* this._attrs.keys();`.\n\t\tfor ( let key of this._attrs.keys() ) {\n\t\t\tyield key;\n\t\t}\n\t}\n\n\t/**\n\t * Returns iterator that iterates over this element's attributes.\n\t *\n\t * Attributes are returned as arrays containing two items. First one is attribute key and second is attribute value.\n\t * This format is accepted by native `Map` object and also can be passed in `Node` constructor.\n\t *\n\t * @returns {Iterable.<*>}\n\t */\n\t*getAttributes() {\n\t\tyield* this._attrs.entries();\n\n\t\tif ( this._classes.size > 0 ) {\n\t\t\tyield [ 'class', this.getAttribute( 'class' ) ];\n\t\t}\n\n\t\tif ( this._styles.size > 0 ) {\n\t\t\tyield [ 'style', this.getAttribute( 'style' ) ];\n\t\t}\n\t}\n\n\t/**\n\t * Gets attribute by key. If attribute is not present - returns undefined.\n\t *\n\t * @param {String} key Attribute key.\n\t * @returns {String|undefined} Attribute value.\n\t */\n\tgetAttribute( key ) {\n\t\tif ( key == 'class' ) {\n\t\t\tif ( this._classes.size > 0 ) {\n\t\t\t\treturn [ ...this._classes ].join( ' ' );\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( key == 'style' ) {\n\t\t\tif ( this._styles.size > 0 ) {\n\t\t\t\tlet styleString = '';\n\n\t\t\t\tfor ( let [ property, value ] of this._styles ) {\n\t\t\t\t\tstyleString += `${ property }:${ value };`;\n\t\t\t\t}\n\n\t\t\t\treturn styleString;\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn this._attrs.get( key );\n\t}\n\n\t/**\n\t * Returns a boolean indicating whether an attribute with the specified key exists in the element.\n\t *\n\t * @param {String} key Attribute key.\n\t * @returns {Boolean} `true` if attribute with the specified key exists in the element, false otherwise.\n\t */\n\thasAttribute( key ) {\n\t\tif ( key == 'class' ) {\n\t\t\treturn this._classes.size > 0;\n\t\t}\n\n\t\tif ( key == 'style' ) {\n\t\t\treturn this._styles.size > 0;\n\t\t}\n\n\t\treturn this._attrs.has( key );\n\t}\n\n\t/**\n\t * Adds or overwrite attribute with a specified key and value.\n\t *\n\t * @param {String} key Attribute key.\n\t * @param {String} value Attribute value.\n\t * @fires module:engine/view/node~Node#change\n\t */\n\tsetAttribute( key, value ) {\n\t\tthis._fireChange( 'attributes', this );\n\n\t\tif ( key == 'class' ) {\n\t\t\tparseClasses( this._classes, value );\n\t\t} else if ( key == 'style' ) {\n\t\t\tparseInlineStyles( this._styles, value );\n\t\t} else {\n\t\t\tthis._attrs.set( key, value );\n\t\t}\n\t}\n\n\t/**\n\t * Inserts a child node or a list of child nodes on the given index and sets the parent of these nodes to\n\t * this element.\n\t *\n\t * @param {Number} index Position where nodes should be inserted.\n\t * @param {module:engine/view/node~Node|Iterable.} nodes Node or the list of nodes to be inserted.\n\t * @fires module:engine/view/node~Node#change\n\t * @returns {Number} Number of inserted nodes.\n\t */\n\tinsertChildren( index, nodes ) {\n\t\tthis._fireChange( 'children', this );\n\t\tlet count = 0;\n\n\t\tnodes = normalize( nodes );\n\n\t\tfor ( let node of nodes ) {\n\t\t\tnode.parent = this;\n\n\t\t\tthis._children.splice( index, 0, node );\n\t\t\tindex++;\n\t\t\tcount++;\n\t\t}\n\n\t\treturn count;\n\t}\n\n\t/**\n\t * Removes attribute from the element.\n\t *\n\t * @param {String} key Attribute key.\n\t * @returns {Boolean} Returns true if an attribute existed and has been removed.\n\t * @fires module:engine/view/node~Node#change\n\t */\n\tremoveAttribute( key ) {\n\t\tthis._fireChange( 'attributes', this );\n\n\t\t// Remove class attribute.\n\t\tif ( key == 'class' ) {\n\t\t\tif ( this._classes.size > 0 ) {\n\t\t\t\tthis._classes.clear();\n\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\t// Remove style attribute.\n\t\tif ( key == 'style' ) {\n\t\t\tif ( this._styles.size > 0 ) {\n\t\t\t\tthis._styles.clear();\n\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\t// Remove other attributes.\n\t\treturn this._attrs.delete( key );\n\t}\n\n\t/**\n\t * Removes number of child nodes starting at the given index and set the parent of these nodes to `null`.\n\t *\n\t * @param {Number} index Number of the first node to remove.\n\t * @param {Number} [howMany=1] Number of nodes to remove.\n\t * @returns {Array.} The array of removed nodes.\n\t * @fires module:engine/view/node~Node#change\n\t */\n\tremoveChildren( index, howMany = 1 ) {\n\t\tthis._fireChange( 'children', this );\n\n\t\tfor ( let i = index; i < index + howMany; i++ ) {\n\t\t\tthis._children[ i ].parent = null;\n\t\t}\n\n\t\treturn this._children.splice( index, howMany );\n\t}\n\n\t/**\n\t * Checks if this element is similar to other element.\n\t * Both elements should have the same name and attributes to be considered as similar. Two similar elements\n\t * can contain different set of children nodes.\n\t *\n\t * @param {module:engine/view/element~Element} otherElement\n\t * @returns {Boolean}\n\t */\n\tisSimilar( otherElement ) {\n\t\tif ( !( otherElement instanceof Element ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// If exactly the same Element is provided - return true immediately.\n\t\tif ( this === otherElement ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Check element name.\n\t\tif ( this.name != otherElement.name ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Check number of attributes, classes and styles.\n\t\tif ( this._attrs.size !== otherElement._attrs.size || this._classes.size !== otherElement._classes.size ||\n\t\t\tthis._styles.size !== otherElement._styles.size ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Check if attributes are the same.\n\t\tfor ( let [ key, value ] of this._attrs ) {\n\t\t\tif ( !otherElement._attrs.has( key ) || otherElement._attrs.get( key ) !== value ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\t// Check if classes are the same.\n\t\tfor ( let className of this._classes ) {\n\t\t\tif ( !otherElement._classes.has( className ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\t// Check if styles are the same.\n\t\tfor ( let [ property, value ] of this._styles ) {\n\t\t\tif ( !otherElement._styles.has( property ) || otherElement._styles.get( property ) !== value ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Adds specified class.\n\t *\n\t *\t\telement.addClass( 'foo' ); // Adds 'foo' class.\n\t *\t\telement.addClass( 'foo', 'bar' ); // Adds 'foo' and 'bar' classes.\n\t *\n\t * @param {...String} className\n\t * @fires module:engine/view/node~Node#change\n\t */\n\taddClass( ...className ) {\n\t\tthis._fireChange( 'attributes', this );\n\t\tclassName.forEach( name => this._classes.add( name ) );\n\t}\n\n\t/**\n\t * Removes specified class.\n\t *\n \t *\t\telement.removeClass( 'foo' ); // Removes 'foo' class.\n\t *\t\telement.removeClass( 'foo', 'bar' ); // Removes both 'foo' and 'bar' classes.\n\t *\n\t * @param {...String} className\n\t * @fires module:engine/view/node~Node#change\n\t */\n\tremoveClass( ...className ) {\n\t\tthis._fireChange( 'attributes', this );\n\t\tclassName.forEach( name => this._classes.delete( name ) );\n\t}\n\n\t/**\n\t * Returns true if class is present.\n\t * If more then one class is provided - returns true only when all classes are present.\n\t *\n\t *\t\telement.hasClass( 'foo' ); // Returns true if 'foo' class is present.\n\t *\t\telement.hasClass( 'foo', 'bar' ); // Returns true if 'foo' and 'bar' classes are both present.\n\t *\n\t * @param {...String} className\n\t */\n\thasClass( ...className ) {\n\t\tfor ( let name of className ) {\n\t\t\tif ( !this._classes.has( name ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Returns iterator that contains all class names.\n\t *\n\t * @returns {Iterator.}\n\t */\n\tgetClassNames() {\n\t\treturn this._classes.keys();\n\t}\n\n\t/**\n\t * Adds style to the element.\n\t *\n\t *\t\telement.setStyle( 'color', 'red' );\n\t *\t\telement.setStyle( {\n\t *\t\t\tcolor: 'red',\n\t *\t\t\tposition: 'fixed'\n\t *\t\t} );\n\t *\n\t * @param {String|Object} property Property name or object with key - value pairs.\n\t * @param {String} [value] Value to set. This parameter is ignored if object is provided as the first parameter.\n\t * @fires module:engine/view/node~Node#change\n\t */\n\tsetStyle( property, value ) {\n\t\tthis._fireChange( 'attributes', this );\n\n\t\tif ( isPlainObject( property ) ) {\n\t\t\tconst keys = Object.keys( property );\n\n\t\t\tfor ( let key of keys ) {\n\t\t\t\tthis._styles.set( key, property[ key ] );\n\t\t\t}\n\t\t} else {\n\t\t\tthis._styles.set( property, value );\n\t\t}\n\t}\n\n\t/**\n\t * Returns style value for given property.\n\t * Undefined is returned if style does not exist.\n\t *\n\t * @param {String} property\n\t * @returns {String|undefined}\n\t */\n\tgetStyle( property ) {\n\t\treturn this._styles.get( property );\n\t}\n\n\t/**\n\t * Returns iterator that contains all style names.\n\t *\n\t * @returns {Iterator.}\n\t */\n\tgetStyleNames() {\n\t\treturn this._styles.keys();\n\t}\n\n\t/**\n\t * Returns true if style keys are present.\n\t * If more then one style property is provided - returns true only when all properties are present.\n\t *\n\t *\t\telement.hasStyle( 'color' ); // Returns true if 'border-top' style is present.\n\t *\t\telement.hasStyle( 'color', 'border-top' ); // Returns true if 'color' and 'border-top' styles are both present.\n\t *\n\t * @param {...String} property\n\t */\n\thasStyle( ...property ) {\n\t\tfor ( let name of property ) {\n\t\t\tif ( !this._styles.has( name ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Removes specified style.\n\t *\n\t *\t\telement.removeStyle( 'color' ); // Removes 'color' style.\n\t *\t\telement.removeStyle( 'color', 'border-top' ); // Removes both 'color' and 'border-top' styles.\n\t *\n\t * @param {...String} property\n\t * @fires module:engine/view/node~Node#change\n\t */\n\tremoveStyle( ...property ) {\n\t\tthis._fireChange( 'attributes', this );\n\t\tproperty.forEach( name => this._styles.delete( name ) );\n\t}\n\n\t/**\n\t * Returns ancestor element that match specified pattern.\n\t * Provided patterns should be compatible with {@link module:engine/view/matcher~Matcher Matcher} as it is used internally.\n\t *\n\t * @see module:engine/view/matcher~Matcher\n\t * @param {Object|String|RegExp|Function} patterns Patterns used to match correct ancestor.\n\t * See {@link module:engine/view/matcher~Matcher}.\n\t * @returns {module:engine/view/element~Element|null} Found element or `null` if no matching ancestor was found.\n\t */\n\tfindAncestor( ...patterns ) {\n\t\tconst matcher = new Matcher( ...patterns );\n\t\tlet parent = this.parent;\n\n\t\twhile ( parent ) {\n\t\t\tif ( matcher.match( parent ) ) {\n\t\t\t\treturn parent;\n\t\t\t}\n\n\t\t\tparent = parent.parent;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Sets a custom property. Unlike attributes, custom properties are not rendered to the DOM,\n\t * so they can be used to add special data to elements.\n\t *\n\t * @param {String|Symbol} key\n\t * @param {*} value\n\t */\n\tsetCustomProperty( key, value ) {\n\t\tthis._customProperties.set( key, value );\n\t}\n\n\t/**\n\t * Returns the custom property value for the given key.\n\t *\n\t * @param {String|Symbol} key\n\t * @returns {*}\n\t */\n\tgetCustomProperty( key ) {\n\t\treturn this._customProperties.get( key );\n\t}\n\n\t/**\n\t * Removes the custom property stored under the given key.\n\t *\n\t * @param {String|Symbol} key\n\t * @returns {Boolean} Returns true if property was removed.\n\t */\n\tremoveCustomProperty( key ) {\n\t\treturn this._customProperties.delete( key );\n\t}\n\n\t/**\n\t * Returns an iterator which iterates over this element's custom properties.\n\t * Iterator provides [key, value] pair for each stored property.\n\t *\n\t * @returns {Iterable.<*>}\n\t */\n\t*getCustomProperties() {\n\t\tyield* this._customProperties.entries();\n\t}\n\n\t/**\n\t * Returns block {@link module:engine/view/filler filler} offset or `null` if block filler is not needed.\n\t *\n\t * @abstract\n\t * @method module:engine/view/element~Element#getFillerOffset\n\t */\n}\n\n// Parses inline styles and puts property - value pairs into styles map.\n// Styles map is cleared before insertion.\n//\n// @param {Map.} stylesMap Map to insert parsed properties and values.\n// @param {String} stylesString Styles to parse.\nfunction parseInlineStyles( stylesMap, stylesString ) {\n\tconst regex = /\\s*([^:;\\s]+)\\s*:\\s*([^;]+)\\s*(?=;|$)/g;\n\tlet matchStyle;\n\tstylesMap.clear();\n\n\twhile ( ( matchStyle = regex.exec( stylesString ) ) !== null ) {\n\t\tstylesMap.set( matchStyle[ 1 ], matchStyle[ 2 ].trim() );\n\t}\n}\n\n// Parses class attribute and puts all classes into classes set.\n// Classes set s cleared before insertion.\n//\n// @param {Set.} classesSet Set to insert parsed classes.\n// @param {String} classesString String with classes to parse.\nfunction parseClasses( classesSet, classesString ) {\n\tconst classArray = classesString.split( /\\s+/ );\n\tclassesSet.clear();\n\tclassArray.forEach( name => classesSet.add( name ) );\n}\n\n// Converts strings to Text and non-iterables to arrays.\n//\n// @param {String|module:engine/view/node~Node|Iterable.}\n// @return {Iterable.}\nfunction normalize( nodes ) {\n\t// Separate condition because string is iterable.\n\tif ( typeof nodes == 'string' ) {\n\t\treturn [ new Text( nodes ) ];\n\t}\n\n\tif ( !isIterable( nodes ) ) {\n\t\tnodes = [ nodes ];\n\t}\n\n\t// Array.from to enable .map() on non-arrays.\n\treturn Array.from( nodes ).map( ( node ) => typeof node == 'string' ? new Text( node ) : node );\n}\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-engine/src/view/element.js","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * Set of utils related to keyboard support.\n *\n * @module utils/keyboard\n */\n\nimport CKEditorError from './ckeditorerror';\nimport env from './env';\n\n/**\n * Object with `keyName => keyCode` pairs for a set of known keys.\n *\n * Contains:\n *\n * * `a-z`,\n * * `0-9`,\n * * `f1-f12`,\n * * `arrow(left|up|right|bottom)`,\n * * `backspace`, `delete`, `enter`, `esc`, `tab`,\n * * `ctrl`, `cmd`, `shift`, `alt`.\n */\nexport const keyCodes = generateKnownKeyCodes();\n\n/**\n * Converts a key name or a {@link module:utils/keyboard~KeystrokeInfo keystroke info} into a key code.\n *\n * Note: Key names are matched with {@link module:utils/keyboard~keyCodes} in a case-insensitive way.\n *\n * @param {String|module:utils/keyboard~KeystrokeInfo} Key name (see {@link module:utils/keyboard~keyCodes})\n * or a keystroke data object.\n * @returns {Number} Key or keystroke code.\n */\nexport function getCode( key ) {\n\tlet keyCode;\n\n\tif ( typeof key == 'string' ) {\n\t\tkeyCode = keyCodes[ key.toLowerCase() ];\n\n\t\tif ( !keyCode ) {\n\t\t\t/**\n\t\t\t * Unknown key name. Only key names contained by the {@link module:utils/keyboard~keyCodes} can be used.\n\t\t\t *\n\t\t\t * @errror keyboard-unknown-key\n\t\t\t * @param {String} key\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'keyboard-unknown-key: Unknown key name.', { key } );\n\t\t}\n\t} else {\n\t\tkeyCode = key.keyCode +\n\t\t\t( key.altKey ? keyCodes.alt : 0 ) +\n\t\t\t( key.ctrlKey ? keyCodes.ctrl : 0 ) +\n\t\t\t( key.shiftKey ? keyCodes.shift : 0 );\n\t}\n\n\treturn keyCode;\n}\n\n/**\n * Parses keystroke and returns a keystroke code that will match the code returned by\n * link {@link module:utils/keyboard.getCode} for a corresponding {@link module:utils/keyboard~KeystrokeInfo keystroke info}.\n *\n * The keystroke can be passed in two formats:\n *\n * * as a single string – e.g. `ctrl + A`,\n * * as an array of {@link module:utils/keyboard~keyCodes known key names} and key codes – e.g.:\n * * `[ 'ctrl', 32 ]` (ctrl + space),\n * * `[ 'ctrl', 'a' ]` (ctrl + A).\n *\n * Note: Key names are matched with {@link module:utils/keyboard~keyCodes} in a case-insensitive way.\n *\n * Note: Only keystrokes with a single non-modifier key are supported (e.g. `ctrl+A` is OK, but `ctrl+A+B` is not).\n *\n * @param {String|Array.} keystroke Keystroke definition.\n * @returns {Number} Keystroke code.\n */\nexport function parseKeystroke( keystroke ) {\n\tif ( typeof keystroke == 'string' ) {\n\t\tkeystroke = splitKeystrokeText( keystroke );\n\t}\n\n\treturn keystroke\n\t\t.map( key => ( typeof key == 'string' ) ? getCode( key ) : key )\n\t\t.reduce( ( key, sum ) => sum + key, 0 );\n}\n\n/**\n * It translates any keystroke string text like `\"CTRL+A\"` to an\n * environment–specific keystroke, i.e. `\"⌘A\"` on Mac OSX.\n *\n * @param {String} keystroke Keystroke text.\n * @returns {String} Keystroke text specific for the environment.\n */\nexport function getEnvKeystrokeText( keystroke ) {\n\tconst split = splitKeystrokeText( keystroke );\n\n\tif ( env.mac ) {\n\t\tif ( split[ 0 ].toLowerCase() == 'ctrl' ) {\n\t\t\treturn '⌘' + ( split[ 1 ] || '' );\n\t\t}\n\t}\n\n\treturn keystroke;\n}\n\nfunction generateKnownKeyCodes() {\n\tconst keyCodes = {\n\t\tarrowleft: 37,\n\t\tarrowup: 38,\n\t\tarrowright: 39,\n\t\tarrowdown: 40,\n\t\tbackspace: 8,\n\t\tdelete: 46,\n\t\tenter: 13,\n\t\tesc: 27,\n\t\ttab: 9,\n\n\t\t// The idea about these numbers is that they do not collide with any real key codes, so we can use them\n\t\t// like bit masks.\n\t\tctrl: 0x110000,\n\t\t// Has the same code as ctrl, because their behaviour should be unified across the editor.\n\t\t// See http://ckeditor.github.io/editor-recommendations/general-policies#ctrl-vs-cmd\n\t\tcmd: 0x110000,\n\t\tshift: 0x220000,\n\t\talt: 0x440000\n\t};\n\n\t// a-z\n\tfor ( let code = 65; code <= 90; code++ ) {\n\t\tconst letter = String.fromCharCode( code );\n\n\t\tkeyCodes[ letter.toLowerCase() ] = code;\n\t}\n\n\t// 0-9\n\tfor ( let code = 48; code <= 57; code++ ) {\n\t\tkeyCodes[ code - 48 ] = code;\n\t}\n\n\t// F1-F12\n\tfor ( let code = 112; code <= 123; code++ ) {\n\t\tkeyCodes[ 'f' + ( code - 111 ) ] = code;\n\t}\n\n\treturn keyCodes;\n}\n\nfunction splitKeystrokeText( keystroke ) {\n\treturn keystroke.split( /\\s*\\+\\s*/ );\n}\n\n/**\n * Information about a keystroke.\n *\n * @interface module:utils/keyboard~KeystrokeInfo\n */\n\n/**\n * The [key code](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode).\n *\n * @member {Number} module:utils/keyboard~KeystrokeInfo#keyCode\n */\n\n/**\n * Whether the Alt modifier was pressed.\n *\n * @member {Bolean} module:utils/keyboard~KeystrokeInfo#altKey\n */\n\n/**\n * Whether the Ctrl or Cmd modifier was pressed.\n *\n * @member {Bolean} module:utils/keyboard~KeystrokeInfo#ctrlKey\n */\n\n/**\n * Whether the Shift modifier was pressed.\n *\n * @member {Bolean} module:utils/keyboard~KeystrokeInfo#shiftKey\n */\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-utils/src/keyboard.js","import arrayPush from './_arrayPush';\nimport isFlattenable from './_isFlattenable';\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nexport default baseFlatten;\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-utils/src/lib/lodash/_baseFlatten.js","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module engine/model/text\n */\n\nimport Node from './node';\n\n/**\n * Model text node. Type of {@link module:engine/model/node~Node node} that contains {@link module:engine/model/text~Text#data text data}.\n *\n * **Important:** see {@link module:engine/model/node~Node} to read about restrictions using `Text` and `Node` API.\n *\n * **Note:** keep in mind that `Text` instances might indirectly got removed from model tree when model is changed.\n * This happens when {@link module:engine/model/writer~writer model writer} is used to change model and the text node is merged with\n * another text node. Then, both text nodes are removed and a new text node is inserted into the model. Because of\n * this behavior, keeping references to `Text` is not recommended. Instead, consider creating\n * {@link module:engine/model/liveposition~LivePosition live position} placed before the text node.\n */\nexport default class Text extends Node {\n\t/**\n\t * Creates a text node.\n\t *\n\t * @param {String} data Node's text.\n\t * @param {Object} [attrs] Node's attributes. See {@link module:utils/tomap~toMap} for a list of accepted values.\n\t */\n\tconstructor( data, attrs ) {\n\t\tsuper( attrs );\n\n\t\t/**\n\t\t * Text data contained in this text node.\n\t\t *\n\t\t * @type {String}\n\t\t */\n\t\tthis.data = data || '';\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tget offsetSize() {\n\t\treturn this.data.length;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tis( type ) {\n\t\treturn type == 'text';\n\t}\n\n\t/**\n\t * Creates a copy of this text node and returns it. Created text node has same text data and attributes as original text node.\n\t */\n\tclone() {\n\t\treturn new Text( this.data, this.getAttributes() );\n\t}\n\n\t/**\n\t * Converts `Text` instance to plain object and returns it.\n\t *\n\t * @returns {Object} `Text` instance converted to plain object.\n\t */\n\ttoJSON() {\n\t\tlet json = super.toJSON();\n\n\t\tjson.data = this.data;\n\n\t\treturn json;\n\t}\n\n\t/**\n\t * Creates a `Text` instance from given plain object (i.e. parsed JSON string).\n\t *\n\t * @param {Object} json Plain object to be converted to `Text`.\n\t * @returns {module:engine/model/text~Text} `Text` instance created using given plain object.\n\t */\n\tstatic fromJSON( json ) {\n\t\treturn new Text( json.data, json.attributes );\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-engine/src/model/text.js","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module engine/view/position\n */\n\nimport TreeWalker from './treewalker';\n\nimport compareArrays from '@ckeditor/ckeditor5-utils/src/comparearrays';\nimport CKEditorError from '@ckeditor/ckeditor5-utils/src/ckeditorerror';\nimport EditableElement from './editableelement';\n\n/**\n * Position in the tree. Position is always located before or after a node.\n */\nexport default class Position {\n\t/**\n\t * Creates a position.\n\t *\n\t * @param {module:engine/view/node~Node|module:engine/view/documentfragment~DocumentFragment} parent Position parent.\n\t * @param {Number} offset Position offset.\n\t */\n\tconstructor( parent, offset ) {\n\t\t/**\n\t\t * Position parent.\n\t\t *\n\t\t * @member {module:engine/view/node~Node|module:engine/view/documentfragment~DocumentFragment}\n\t\t * module:engine/view/position~Position#parent\n\t\t */\n\t\tthis.parent = parent;\n\n\t\t/**\n\t\t * Position offset.\n\t\t *\n\t\t * @member {Number} module:engine/view/position~Position#offset\n\t\t */\n\t\tthis.offset = offset;\n\t}\n\n\t/**\n\t * Node directly after the position. Equals `null` when there is no node after position or position is located\n\t * inside text node.\n\t *\n\t * @readonly\n\t * @type {module:engine/view/node~Node|null}\n\t */\n\tget nodeAfter() {\n\t\tif ( this.parent.is( 'text' ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this.parent.getChild( this.offset ) || null;\n\t}\n\n\t/**\n\t * Node directly before the position. Equals `null` when there is no node before position or position is located\n\t * inside text node.\n\t *\n\t * @readonly\n\t * @type {module:engine/view/node~Node|null}\n\t */\n\tget nodeBefore() {\n\t\tif ( this.parent.is( 'text' ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this.parent.getChild( this.offset - 1 ) || null;\n\t}\n\n\t/**\n\t * Is `true` if position is at the beginning of its {@link module:engine/view/position~Position#parent parent}, `false` otherwise.\n\t *\n\t * @readonly\n\t * @type {Boolean}\n\t */\n\tget isAtStart() {\n\t\treturn this.offset === 0;\n\t}\n\n\t/**\n\t * Is `true` if position is at the end of its {@link module:engine/view/position~Position#parent parent}, `false` otherwise.\n\t *\n\t * @readonly\n\t * @type {Boolean}\n\t */\n\tget isAtEnd() {\n\t\tconst endOffset = this.parent.is( 'text' ) ? this.parent.data.length : this.parent.childCount;\n\n\t\treturn this.offset === endOffset;\n\t}\n\n\t/**\n\t * Position's root, that is the root of the position's parent element.\n\t *\n\t * @readonly\n\t * @type {module:engine/view/node~Node|module:engine/view/documentfragment~DocumentFragment}\n\t */\n\tget root() {\n\t\treturn this.parent.root;\n\t}\n\n\t/**\n\t * {@link module:engine/view/editableelement~EditableElement EditableElement} instance that contains this position, or `null` if\n\t * position is not inside an editable element.\n\t *\n\t * @type {module:engine/view/editableelement~EditableElement|null}\n\t */\n\tget editableElement() {\n\t\tlet editable = this.parent;\n\n\t\twhile ( !( editable instanceof EditableElement ) ) {\n\t\t\tif ( editable.parent ) {\n\t\t\t\teditable = editable.parent;\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\treturn editable;\n\t}\n\n\t/**\n\t * Returns a new instance of Position with offset incremented by `shift` value.\n\t *\n\t * @param {Number} shift How position offset should get changed. Accepts negative values.\n\t * @returns {module:engine/view/position~Position} Shifted position.\n\t */\n\tgetShiftedBy( shift ) {\n\t\tlet shifted = Position.createFromPosition( this );\n\n\t\tlet offset = shifted.offset + shift;\n\t\tshifted.offset = offset < 0 ? 0 : offset;\n\n\t\treturn shifted;\n\t}\n\n\t/**\n\t * Gets the farthest position which matches the callback using\n\t * {@link module:engine/view/treewalker~TreeWalker TreeWalker}.\n\t *\n\t * For example:\n\t *\n\t * \t\tgetLastMatchingPosition( value => value.type == 'text' ); //
\n\t * \t\tgetLastMatchingPosition( value => false ); // Do not move the position.\n\t *\n\t * @param {Function} skip Callback function. Gets {@link module:engine/view/treewalker~TreeWalkerValue} and should\n\t * return `true` if the value should be skipped or `false` if not.\n\t * @param {Object} options Object with configuration options. See {@link module:engine/view/treewalker~TreeWalker}.\n\t *\n\t * @returns {module:engine/view/position~Position} The position after the last item which matches the `skip` callback test.\n\t */\n\tgetLastMatchingPosition( skip, options = {} ) {\n\t\toptions.startPosition = this;\n\n\t\tconst treeWalker = new TreeWalker( options );\n\t\ttreeWalker.skip( skip );\n\n\t\treturn treeWalker.position;\n\t}\n\n\t/**\n\t * Returns ancestors array of this position, that is this position's parent and it's ancestors.\n\t *\n\t * @returns {Array} Array with ancestors.\n\t */\n\tgetAncestors() {\n\t\tif ( this.parent.is( 'documentFragment' ) ) {\n\t\t\treturn [ this.parent ];\n\t\t} else {\n\t\t\treturn this.parent.getAncestors( { includeNode: true } );\n\t\t}\n\t}\n\n\t/**\n\t * Checks whether this position equals given position.\n\t *\n\t * @param {module:engine/view/position~Position} otherPosition Position to compare with.\n\t * @returns {Boolean} True if positions are same.\n\t */\n\tisEqual( otherPosition ) {\n\t\treturn ( this.parent == otherPosition.parent && this.offset == otherPosition.offset );\n\t}\n\n\t/**\n\t * Checks whether this position is located before given position. When method returns `false` it does not mean that\n\t * this position is after give one. Two positions may be located inside separate roots and in that situation this\n\t * method will still return `false`.\n\t *\n\t * @see module:engine/view/position~Position#isAfter\n\t * @see module:engine/view/position~Position#compareWith\n\t * @param {module:engine/view/position~Position} otherPosition Position to compare with.\n\t * @returns {Boolean} Returns `true` if this position is before given position.\n\t */\n\tisBefore( otherPosition ) {\n\t\treturn this.compareWith( otherPosition ) == 'before';\n\t}\n\n\t/**\n\t * Checks whether this position is located after given position. When method returns `false` it does not mean that\n\t * this position is before give one. Two positions may be located inside separate roots and in that situation this\n\t * method will still return `false`.\n\t *\n\t * @see module:engine/view/position~Position#isBefore\n\t * @see module:engine/view/position~Position#compareWith\n\t * @param {module:engine/view/position~Position} otherPosition Position to compare with.\n\t * @returns {Boolean} Returns `true` if this position is after given position.\n\t */\n\tisAfter( otherPosition ) {\n\t\treturn this.compareWith( otherPosition ) == 'after';\n\t}\n\n\t/**\n\t * Checks whether this position is before, after or in same position that other position. Two positions may be also\n\t * different when they are located in separate roots.\n\t *\n\t * @param {module:engine/view/position~Position} otherPosition Position to compare with.\n\t * @returns {module:engine/view/position~PositionRelation}\n\t */\n\tcompareWith( otherPosition ) {\n\t\tif ( this.isEqual( otherPosition ) ) {\n\t\t\treturn 'same';\n\t\t}\n\n\t\t// If positions have same parent.\n\t\tif ( this.parent === otherPosition.parent ) {\n\t\t\treturn this.offset - otherPosition.offset < 0 ? 'before' : 'after';\n\t\t}\n\n\t\t// Get path from root to position's parent element.\n\t\tconst path = this.getAncestors();\n\t\tconst otherPath = otherPosition.getAncestors();\n\n\t\t// Compare both path arrays to find common ancestor.\n\t\tconst result = compareArrays( path, otherPath );\n\n\t\tlet commonAncestorIndex;\n\n\t\tswitch ( result ) {\n\t\t\tcase 0:\n\t\t\t\t// No common ancestors found.\n\t\t\t\treturn 'different';\n\n\t\t\tcase 'prefix':\n\t\t\t\tcommonAncestorIndex = path.length - 1;\n\t\t\t\tbreak;\n\n\t\t\tcase 'extension':\n\t\t\t\tcommonAncestorIndex = otherPath.length - 1;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tcommonAncestorIndex = result - 1;\n\t\t}\n\n\t\t// Common ancestor of two positions.\n\t\tconst commonAncestor = path[ commonAncestorIndex ];\n\t\tconst nextAncestor1 = path[ commonAncestorIndex + 1 ];\n\t\tconst nextAncestor2 = otherPath[ commonAncestorIndex + 1 ];\n\n\t\t// Check if common ancestor is not one of the parents.\n\t\tif ( commonAncestor === this.parent ) {\n\t\t\tconst index = this.offset - nextAncestor2.index;\n\n\t\t\treturn index <= 0 ? 'before' : 'after';\n\t\t} else if ( commonAncestor === otherPosition.parent ) {\n\t\t\tconst index = nextAncestor1.index - otherPosition.offset;\n\n\t\t\treturn index < 0 ? 'before' : 'after';\n\t\t}\n\n\t\tconst index = nextAncestor1.index - nextAncestor2.index;\n\n\t\t// Compare indexes of next ancestors inside common one.\n\t\treturn index < 0 ? 'before' : 'after';\n\t}\n\n\t/**\n\t * Creates position at the given location. The location can be specified as:\n\t *\n\t * * a {@link module:engine/view/position~Position position},\n\t * * parent element and offset (offset defaults to `0`),\n\t * * parent element and `'end'` (sets position at the end of that element),\n\t * * {@link module:engine/view/item~Item view item} and `'before'` or `'after'` (sets position before or after given view item).\n\t *\n\t * This method is a shortcut to other constructors such as:\n\t *\n\t * * {@link module:engine/view/position~Position.createBefore},\n\t * * {@link module:engine/view/position~Position.createAfter},\n\t * * {@link module:engine/view/position~Position.createFromPosition}.\n\t *\n\t * @param {module:engine/view/item~Item|module:engine/model/position~Position} itemOrPosition\n\t * @param {Number|'end'|'before'|'after'} [offset=0] Offset or one of the flags. Used only when\n\t * first parameter is a {@link module:engine/view/item~Item view item}.\n\t */\n\tstatic createAt( itemOrPosition, offset ) {\n\t\tif ( itemOrPosition instanceof Position ) {\n\t\t\treturn this.createFromPosition( itemOrPosition );\n\t\t} else {\n\t\t\tlet node = itemOrPosition;\n\n\t\t\tif ( offset == 'end' ) {\n\t\t\t\toffset = node.is( 'text' ) ? node.data.length : node.childCount;\n\t\t\t} else if ( offset == 'before' ) {\n\t\t\t\treturn this.createBefore( node );\n\t\t\t} else if ( offset == 'after' ) {\n\t\t\t\treturn this.createAfter( node );\n\t\t\t} else if ( !offset ) {\n\t\t\t\toffset = 0;\n\t\t\t}\n\n\t\t\treturn new Position( node, offset );\n\t\t}\n\t}\n\n\t/**\n\t * Creates a new position after given view item.\n\t *\n\t * @param {module:engine/view/item~Item} item View item after which the position should be located.\n\t * @returns {module:engine/view/position~Position}\n\t */\n\tstatic createAfter( item ) {\n\t\t// TextProxy is not a instance of Node so we need do handle it in specific way.\n\t\tif ( item.is( 'textProxy' ) ) {\n\t\t\treturn new Position( item.textNode, item.offsetInText + item.data.length );\n\t\t}\n\n\t\tif ( !item.parent ) {\n\t\t\t/**\n\t\t\t * You can not make a position after a root.\n\t\t\t *\n\t\t\t * @error position-after-root\n\t\t\t * @param {module:engine/view/node~Node} root\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'view-position-after-root: You can not make position after root.', { root: item } );\n\t\t}\n\n\t\treturn new Position( item.parent, item.index + 1 );\n\t}\n\n\t/**\n\t * Creates a new position before given view item.\n\t *\n\t * @param {module:engine/view/item~Item} item View item before which the position should be located.\n\t * @returns {module:engine/view/position~Position}\n\t */\n\tstatic createBefore( item ) {\n\t\t// TextProxy is not a instance of Node so we need do handle it in specific way.\n\t\tif ( item.is( 'textProxy' ) ) {\n\t\t\treturn new Position( item.textNode, item.offsetInText );\n\t\t}\n\n\t\tif ( !item.parent ) {\n\t\t\t/**\n\t\t\t * You cannot make a position before a root.\n\t\t\t *\n\t\t\t * @error position-before-root\n\t\t\t * @param {module:engine/view/node~Node} root\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'view-position-before-root: You can not make position before root.', { root: item } );\n\t\t}\n\n\t\treturn new Position( item.parent, item.index );\n\t}\n\n\t/**\n\t * Creates and returns a new instance of `Position`, which is equal to the passed position.\n\t *\n\t * @param {module:engine/view/position~Position} position Position to be cloned.\n\t * @returns {module:engine/view/position~Position}\n\t */\n\tstatic createFromPosition( position ) {\n\t\treturn new this( position.parent, position.offset );\n\t}\n}\n\n/**\n * A flag indicating whether this position is `'before'` or `'after'` or `'same'` as given position.\n * If positions are in different roots `'different'` flag is returned.\n *\n * @typedef {String} module:engine/view/position~PositionRelation\n */\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-engine/src/view/position.js","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module ui/button/buttonview\n */\n\nimport View from '../view';\nimport Template from '../template';\nimport IconView from '../icon/iconview';\n\nimport { getEnvKeystrokeText } from '@ckeditor/ckeditor5-utils/src/keyboard';\n\n/**\n * The button view class.\n *\n * @extends module:ui/view~View\n */\nexport default class ButtonView extends View {\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( locale ) {\n\t\tsuper( locale );\n\n\t\t/**\n\t\t * The label of the button view visible to the user.\n\t\t *\n\t\t * @observable\n\t\t * @member {String} #label\n\t\t */\n\t\tthis.set( 'label' );\n\n\t\t/**\n\t\t * (Optional) The keystroke associated with the button, i.e. CTRL+B,\n\t\t * in the string format compatible with {@link module:utils/keyboard}.\n\t\t *\n\t\t * @observable\n\t\t * @member {Boolean} #keystroke\n\t\t */\n\t\tthis.set( 'keystroke' );\n\n\t\t/**\n\t\t * (Optional) Tooltip of the button, i.e. displayed when hovering the button with the mouse cursor.\n\t\t *\n\t\t * * If defined as a `Boolean` (e.g. `true`), then combination of `label` and `keystroke` will be set as a tooltip.\n\t\t * * If defined as a `String`, tooltip will equal the exact text of that `String`.\n\t\t * * If defined as a `Function`, `label` and `keystroke` will be passed to that function, which is to return\n\t\t * a string with the tooltip text.\n\t\t *\n\t\t *\t\tconst view = new ButtonView( locale );\n\t\t *\t\tview.tooltip = ( label, keystroke ) => `A tooltip for ${ label } and ${ keystroke }.`\n\t\t *\n\t\t * @observable\n\t\t * @default false\n\t\t * @member {Boolean|String|Function} #tooltip\n\t\t */\n\t\tthis.set( 'tooltip' );\n\n\t\t/**\n\t\t * The HTML type of the button. Default `button`.\n\t\t *\n\t\t * @observable\n\t\t * @member {'button'|'submit'|'reset'|'menu'} #type\n\t\t */\n\t\tthis.set( 'type', 'button' );\n\n\t\t/**\n\t\t * Controls whether the button view is \"on\", e.g. some feature which it represents\n\t\t * is currently enabled.\n\t\t *\n\t\t * @observable\n\t\t * @member {Boolean} #isOn\n\t\t */\n\t\tthis.set( 'isOn', false );\n\n\t\t/**\n\t\t * Controls whether the button view is enabled (can be clicked).\n\t\t *\n\t\t * @observable\n\t\t * @member {Boolean} #isEnabled\n\t\t */\n\t\tthis.set( 'isEnabled', true );\n\n\t\t/**\n\t\t * (Optional) Whether the label of the button is hidden (e.g. button with icon only).\n\t\t *\n\t\t * @observable\n\t\t * @member {Boolean} #withText\n\t\t */\n\t\tthis.set( 'withText', false );\n\n\t\t/**\n\t\t * (Optional) Source of the icon. See {@link module:ui/icon/iconview~IconView#content}.\n\t\t *\n\t\t * @observable\n\t\t * @member {String} #icon\n\t\t */\n\t\tthis.set( 'icon' );\n\n\t\t/**\n\t\t * Controls the `tabindex` attribute of the button.\n\t\t *\n\t\t * @observable\n\t\t * @default -1\n\t\t * @member {String} #tabindex\n\t\t */\n\t\tthis.set( 'tabindex', -1 );\n\n\t\t/**\n\t\t * Tooltip of the button bound to the template.\n\t\t *\n\t\t * @see #tooltip\n\t\t * @see #_getTooltipString\n\t\t * @private\n\t\t * @observable\n\t\t * @member {Boolean} #_tooltipString\n\t\t */\n\t\tthis.bind( '_tooltipString' ).to(\n\t\t\tthis, 'tooltip',\n\t\t\tthis, 'label',\n\t\t\tthis, 'keystroke',\n\t\t\tthis._getTooltipString.bind( this )\n\t\t);\n\n\t\t/**\n\t\t * Icon of the button view.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:ui/icon/iconview~IconView} #iconView\n\t\t */\n\n\t\tconst bind = this.bindTemplate;\n\n\t\tthis.template = new Template( {\n\t\t\ttag: 'button',\n\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck-button',\n\t\t\t\t\tbind.if( '_tooltipString', 'ck-tooltip_s' ),\n\t\t\t\t\tbind.to( 'isEnabled', value => value ? 'ck-enabled' : 'ck-disabled' ),\n\t\t\t\t\tbind.to( 'isOn', value => value ? 'ck-on' : 'ck-off' ),\n\t\t\t\t\tbind.if( 'withText', 'ck-button_with-text' )\n\t\t\t\t],\n\t\t\t\ttype: bind.to( 'type', value => value ? value : 'button' ),\n\t\t\t\t'data-ck-tooltip': [\n\t\t\t\t\tbind.to( '_tooltipString' )\n\t\t\t\t],\n\t\t\t\ttabindex: bind.to( 'tabindex' )\n\t\t\t},\n\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\ttag: 'span',\n\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\tclass: [ 'ck-button__label' ]\n\t\t\t\t\t},\n\n\t\t\t\t\tchildren: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttext: bind.to( 'label' )\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t],\n\n\t\t\ton: {\n\t\t\t\tmousedown: bind.to( evt => {\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t} ),\n\n\t\t\t\tclick: bind.to( evt => {\n\t\t\t\t\t// We can't make the button disabled using the disabled attribute, because it won't be focusable.\n\t\t\t\t\t// Though, shouldn't this condition be moved to the button controller?\n\t\t\t\t\tif ( this.isEnabled ) {\n\t\t\t\t\t\tthis.fire( 'execute' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Prevent the default when button is disabled, to block e.g.\n\t\t\t\t\t\t// automatic form submitting. See ckeditor/ckeditor5-link#74.\n\t\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t} )\n\t\t\t}\n\t\t} );\n\n\t\t/**\n\t\t * Fired when the button view is clicked. It won't be fired when the button is disabled.\n\t\t *\n\t\t * @event #execute\n\t\t */\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tinit() {\n\t\tlet promise = Promise.resolve();\n\n\t\tif ( this.icon && !this.iconView ) {\n\t\t\tconst iconView = this.iconView = new IconView();\n\n\t\t\ticonView.bind( 'content' ).to( this, 'icon' );\n\n\t\t\tthis.element.insertBefore( iconView.element, this.element.firstChild );\n\n\t\t\t// Make sure the icon view will be destroyed along with button.\n\t\t\tpromise = promise.then( () => this.addChildren( iconView ) );\n\t\t}\n\n\t\treturn promise.then( () => super.init() );\n\t}\n\n\t/**\n\t * Focuses the button.\n\t */\n\tfocus() {\n\t\tthis.element.focus();\n\t}\n\n\t/**\n\t * Gets value for the `data-ck-tooltip` attribute from the combination of\n\t * {@link #tooltip}, {@link #label} and {@link #keystroke} attributes.\n\t *\n\t * @private\n\t * @see #tooltip\n\t * @see #_tooltipString\n\t * @param {Boolean|String|Function} tooltip Button tooltip.\n\t * @param {String} label Button label.\n\t * @param {String} keystroke Button keystroke.\n\t * @returns {String}\n\t */\n\t_getTooltipString( tooltip, label, keystroke ) {\n\t\tif ( tooltip ) {\n\t\t\tif ( typeof tooltip == 'string' ) {\n\t\t\t\treturn tooltip;\n\t\t\t} else {\n\t\t\t\tif ( keystroke ) {\n\t\t\t\t\tkeystroke = getEnvKeystrokeText( keystroke );\n\t\t\t\t}\n\n\t\t\t\tif ( tooltip instanceof Function ) {\n\t\t\t\t\treturn tooltip( label, keystroke );\n\t\t\t\t} else if ( tooltip === true ) {\n\t\t\t\t\treturn `${ label }${ keystroke ? ` (${ keystroke })` : '' }`;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-ui/src/button/buttonview.js","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-utils/src/lib/lodash/_arrayMap.js","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module engine/model/operation/moveoperation\n */\n\nimport Operation from './operation';\nimport Position from '../position';\nimport Range from '../range';\nimport CKEditorError from '@ckeditor/ckeditor5-utils/src/ckeditorerror';\nimport compareArrays from '@ckeditor/ckeditor5-utils/src/comparearrays';\nimport writer from './../writer';\n\n/**\n * Operation to move a range of {@link module:engine/model/item~Item model items}\n * to given {@link module:engine/model/position~Position target position}.\n */\nexport default class MoveOperation extends Operation {\n\t/**\n\t * Creates a move operation.\n\t *\n\t * @param {module:engine/model/position~Position} sourcePosition\n\t * Position before the first {@link module:engine/model/item~Item model item} to move.\n\t * @param {Number} howMany Offset size of moved range. Moved range will start from `sourcePosition` and end at\n\t * `sourcePosition` with offset shifted by `howMany`.\n\t * @param {module:engine/model/position~Position} targetPosition Position at which moved nodes will be inserted.\n\t * @param {Number} baseVersion {@link module:engine/model/document~Document#version} on which operation can be applied.\n\t */\n\tconstructor( sourcePosition, howMany, targetPosition, baseVersion ) {\n\t\tsuper( baseVersion );\n\n\t\t/**\n\t\t * Position before the first {@link module:engine/model/item~Item model item} to move.\n\t\t *\n\t\t * @member {module:engine/model/position~Position} module:engine/model/operation/moveoperation~MoveOperation#sourcePosition\n\t\t */\n\t\tthis.sourcePosition = Position.createFromPosition( sourcePosition );\n\n\t\t/**\n\t\t * Offset size of moved range.\n\t\t *\n\t\t * @member {Number} module:engine/model/operation/moveoperation~MoveOperation#howMany\n\t\t */\n\t\tthis.howMany = howMany;\n\n\t\t/**\n\t\t * Position at which moved nodes will be inserted.\n\t\t *\n\t\t * @member {module:engine/model/position~Position} module:engine/model/operation/moveoperation~MoveOperation#targetPosition\n\t\t */\n\t\tthis.targetPosition = Position.createFromPosition( targetPosition );\n\n\t\t/**\n\t\t * Defines whether `MoveOperation` is sticky. If `MoveOperation` is sticky, during\n\t\t * {@link module:engine/model/operation/transform~transform operational transformation} if there will be an operation that\n\t\t * inserts some nodes at the position equal to the boundary of this `MoveOperation`, that operation will\n\t\t * get their insertion path updated to the position where this `MoveOperation` moves the range.\n\t\t *\n\t\t * @member {Boolean} module:engine/model/operation/moveoperation~MoveOperation#isSticky\n\t\t */\n\t\tthis.isSticky = false;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tget type() {\n\t\treturn 'move';\n\t}\n\n\t/**\n\t * @inheritDoc\n\t * @returns {module:engine/model/operation/moveoperation~MoveOperation}\n\t */\n\tclone() {\n\t\tconst op = new this.constructor( this.sourcePosition, this.howMany, this.targetPosition, this.baseVersion );\n\t\top.isSticky = this.isSticky;\n\n\t\treturn op;\n\t}\n\n\t/**\n\t * Returns the start position of the moved range after it got moved. This may be different than\n\t * {@link module:engine/model/operation/moveoperation~MoveOperation#targetPosition} in some cases, i.e. when a range is moved\n\t * inside the same parent but {@link module:engine/model/operation/moveoperation~MoveOperation#targetPosition targetPosition}\n\t * is after {@link module:engine/model/operation/moveoperation~MoveOperation#sourcePosition sourcePosition}.\n\t *\n\t *\t\t vv vv\n\t *\t\tabcdefg ===> adefbcg\n\t *\t\t ^ ^\n\t *\t\t targetPos\tmovedRangeStart\n\t *\t\t offset 6\toffset 4\n\t *\n\t * @returns {module:engine/model/position~Position}\n\t */\n\tgetMovedRangeStart() {\n\t\treturn this.targetPosition._getTransformedByDeletion( this.sourcePosition, this.howMany );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t * @returns {module:engine/model/operation/moveoperation~MoveOperation}\n\t */\n\tgetReversed() {\n\t\tlet newTargetPosition = this.sourcePosition._getTransformedByInsertion( this.targetPosition, this.howMany );\n\n\t\tconst op = new this.constructor( this.getMovedRangeStart(), this.howMany, newTargetPosition, this.baseVersion + 1 );\n\t\top.isSticky = this.isSticky;\n\n\t\treturn op;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\t_execute() {\n\t\tlet sourceElement = this.sourcePosition.parent;\n\t\tlet targetElement = this.targetPosition.parent;\n\t\tlet sourceOffset = this.sourcePosition.offset;\n\t\tlet targetOffset = this.targetPosition.offset;\n\n\t\t// Validate whether move operation has correct parameters.\n\t\t// Validation is pretty complex but move operation is one of the core ways to manipulate the document state.\n\t\t// We expect that many errors might be connected with one of scenarios described below.\n\t\tif ( !sourceElement || !targetElement ) {\n\t\t\t/**\n\t\t\t * Source position or target position is invalid.\n\t\t\t *\n\t\t\t * @error move-operation-position-invalid\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'move-operation-position-invalid: Source position or target position is invalid.'\n\t\t\t);\n\t\t} else if ( sourceOffset + this.howMany > sourceElement.maxOffset ) {\n\t\t\t/**\n\t\t\t * The nodes which should be moved do not exist.\n\t\t\t *\n\t\t\t * @error move-operation-nodes-do-not-exist\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'move-operation-nodes-do-not-exist: The nodes which should be moved do not exist.'\n\t\t\t);\n\t\t} else if ( sourceElement === targetElement && sourceOffset < targetOffset && targetOffset < sourceOffset + this.howMany ) {\n\t\t\t/**\n\t\t\t * Trying to move a range of nodes into the middle of that range.\n\t\t\t *\n\t\t\t * @error move-operation-range-into-itself\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'move-operation-range-into-itself: Trying to move a range of nodes to the inside of that range.'\n\t\t\t);\n\t\t} else if ( this.sourcePosition.root == this.targetPosition.root ) {\n\t\t\tif ( compareArrays( this.sourcePosition.getParentPath(), this.targetPosition.getParentPath() ) == 'prefix' ) {\n\t\t\t\tlet i = this.sourcePosition.path.length - 1;\n\n\t\t\t\tif ( this.targetPosition.path[ i ] >= sourceOffset && this.targetPosition.path[ i ] < sourceOffset + this.howMany ) {\n\t\t\t\t\t/**\n\t\t\t\t\t * Trying to move a range of nodes into one of nodes from that range.\n\t\t\t\t\t *\n\t\t\t\t\t * @error move-operation-node-into-itself\n\t\t\t\t\t */\n\t\t\t\t\tthrow new CKEditorError(\n\t\t\t\t\t\t'move-operation-node-into-itself: Trying to move a range of nodes into one of nodes from that range.'\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst range = writer.move( Range.createFromPositionAndShift( this.sourcePosition, this.howMany ), this.targetPosition );\n\n\t\treturn {\n\t\t\tsourcePosition: this.sourcePosition,\n\t\t\trange: range\n\t\t};\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tstatic get className() {\n\t\treturn 'engine.model.operation.MoveOperation';\n\t}\n\n\t/**\n\t * Creates `MoveOperation` object from deserilized object, i.e. from parsed JSON string.\n\t *\n\t * @param {Object} json Deserialized JSON object.\n\t * @param {module:engine/model/document~Document} document Document on which this operation will be applied.\n\t * @returns {module:engine/model/operation/moveoperation~MoveOperation}\n\t */\n\tstatic fromJSON( json, document ) {\n\t\tlet sourcePosition = Position.fromJSON( json.sourcePosition, document );\n\t\tlet targetPosition = Position.fromJSON( json.targetPosition, document );\n\n\t\tconst move = new this( sourcePosition, json.howMany, targetPosition, json.baseVersion );\n\n\t\tif ( json.isSticky ) {\n\t\t\tmove.isSticky = true;\n\t\t}\n\n\t\treturn move;\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-engine/src/model/operation/moveoperation.js","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module engine/view/text\n */\n\nimport Node from './node';\n\n/**\n * Tree view text node.\n *\n * @extends module:engine/view/node~Node\n */\nexport default class Text extends Node {\n\t/**\n\t * Creates a tree view text node.\n\t *\n\t * @param {String} data Text.\n\t */\n\tconstructor( data ) {\n\t\tsuper();\n\n\t\t/**\n\t\t * The text content.\n\t\t *\n\t\t * Setting the data fires the {@link module:engine/view/node~Node#event:change:text change event}.\n\t\t *\n\t\t * @private\n\t\t * @member {String} module:engine/view/text~Text#_data\n\t\t */\n\t\tthis._data = data;\n\t}\n\n\t/**\n\t * Clones this node.\n\t *\n\t * @returns {module:engine/view/text~Text} Text node that is a clone of this node.\n\t */\n\tclone() {\n\t\treturn new Text( this.data );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tis( type ) {\n\t\treturn type == 'text';\n\t}\n\n\t/**\n\t * The text content.\n\t *\n\t * Setting the data fires the {@link module:engine/view/node~Node#event:change:text change event}.\n\t */\n\tget data() {\n\t\treturn this._data;\n\t}\n\n\tset data( data ) {\n\t\tthis._fireChange( 'text', this );\n\n\t\tthis._data = data;\n\t}\n\n\t/**\n\t * Checks if this text node is similar to other text node.\n\t * Both nodes should have the same data to be considered as similar.\n\t *\n\t * @param {module:engine/view/text~Text} otherNode Node to check if it is same as this node.\n\t * @returns {Boolean}\n\t */\n\tisSimilar( otherNode ) {\n\t\tif ( !( otherNode instanceof Text ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn this === otherNode || this.data === otherNode.data;\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-engine/src/view/text.js","import checkGlobal from './_checkGlobal';\n\n/** Used to determine if values are of the language type `Object`. */\nvar objectTypes = {\n 'function': true,\n 'object': true\n};\n\n/** Detect free variable `exports`. */\nvar freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType)\n ? exports\n : undefined;\n\n/** Detect free variable `module`. */\nvar freeModule = (objectTypes[typeof module] && module && !module.nodeType)\n ? module\n : undefined;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = checkGlobal(freeExports && freeModule && typeof global == 'object' && global);\n\n/** Detect free variable `self`. */\nvar freeSelf = checkGlobal(objectTypes[typeof self] && self);\n\n/** Detect free variable `window`. */\nvar freeWindow = checkGlobal(objectTypes[typeof window] && window);\n\n/** Detect `this` as the global object. */\nvar thisGlobal = checkGlobal(objectTypes[typeof this] && this);\n\n/**\n * Used as a reference to the global object.\n *\n * The `this` value is used if it's the global object to avoid Greasemonkey's\n * restricted `window` object, otherwise the `window` object is used.\n */\nvar root = freeGlobal ||\n ((freeWindow !== (thisGlobal && thisGlobal.window)) && freeWindow) ||\n freeSelf || thisGlobal || Function('return this')();\n\nexport default root;\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-utils/src/lib/lodash/_root.js","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module utils/observablemixin\n */\n\nimport EmitterMixin from './emittermixin';\nimport CKEditorError from './ckeditorerror';\nimport extend from './lib/lodash/extend';\nimport isObject from './lib/lodash/isObject';\n\nconst attributesSymbol = Symbol( 'attributes' );\nconst boundObservablesSymbol = Symbol( 'boundObservables' );\nconst boundAttributesSymbol = Symbol( 'boundAttributes' );\n\n/**\n * Mixin that injects the \"observable attributes\" and data binding functionality.\n * Used mainly in the {@link module:ui/model~Model} class.\n *\n * @mixin ObservableMixin\n * @mixes module:utils/emittermixin~EmitterMixin\n * @implements module:utils/observablemixin~Observable\n */\nconst ObservableMixin = {\n\t/**\n\t * Creates and sets the value of an observable attribute of this object. Such an attribute becomes a part\n\t * of the state and is be observable.\n\t *\n\t * It accepts also a single object literal containing key/value pairs with attributes to be set.\n\t *\n\t * This method throws the observable-set-cannot-override error if the observable instance already\n\t * have a property with a given attribute name. This prevents from mistakenly overriding existing\n\t * properties and methods, but means that `foo.set( 'bar', 1 )` may be slightly slower than `foo.bar = 1`.\n\t *\n\t * @method #set\n\t * @param {String} name The attributes name.\n\t * @param {*} value The attributes value.\n\t */\n\tset( name, value ) {\n\t\t// If the first parameter is an Object, iterate over its properties.\n\t\tif ( isObject( name ) ) {\n\t\t\tObject.keys( name ).forEach( ( attr ) => {\n\t\t\t\tthis.set( attr, name[ attr ] );\n\t\t\t}, this );\n\n\t\t\treturn;\n\t\t}\n\n\t\tinitObservable( this );\n\n\t\tconst attributes = this[ attributesSymbol ];\n\n\t\tif ( ( name in this ) && !attributes.has( name ) ) {\n\t\t\t/**\n\t\t\t * Cannot override an existing property.\n\t\t\t *\n\t\t\t * This error is thrown when trying to {@link ~Observable#set set} an attribute with\n\t\t\t * a name of an already existing property. For example:\n\t\t\t *\n\t\t\t *\t\tlet observable = new Model();\n\t\t\t *\t\tobservable.property = 1;\n\t\t\t *\t\tobservable.set( 'property', 2 );\t\t// throws\n\t\t\t *\n\t\t\t *\t\tobservable.set( 'attr', 1 );\n\t\t\t *\t\tobservable.set( 'attr', 2 );\t\t\t// ok, because this is an existing attribute.\n\t\t\t *\n\t\t\t * @error observable-set-cannot-override\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'observable-set-cannot-override: Cannot override an existing property.' );\n\t\t}\n\n\t\tObject.defineProperty( this, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget() {\n\t\t\t\treturn attributes.get( name );\n\t\t\t},\n\n\t\t\tset( value ) {\n\t\t\t\tconst oldValue = attributes.get( name );\n\n\t\t\t\t// Allow undefined as an initial value like A.define( 'x', undefined ) (#132).\n\t\t\t\t// Note: When attributes map has no such own property, then its value is undefined.\n\t\t\t\tif ( oldValue !== value || !attributes.has( name ) ) {\n\t\t\t\t\tattributes.set( name, value );\n\t\t\t\t\tthis.fire( 'change:' + name, name, value, oldValue );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\tthis[ name ] = value;\n\t},\n\n\t/**\n\t * Binds observable attributes to another objects implementing {@link ~ObservableMixin}\n\t * interface (like {@link module:ui/model~Model}).\n\t *\n\t * Once bound, the observable will immediately share the current state of attributes\n\t * of the observable it is bound to and react to the changes to these attributes\n\t * in the future.\n\t *\n\t * **Note**: To release the binding use {@link module:utils/observablemixin~ObservableMixin#unbind}.\n\t *\n\t *\t\tA.bind( 'a' ).to( B );\n\t *\t\tA.bind( 'a' ).to( B, 'b' );\n\t *\t\tA.bind( 'a', 'b' ).to( B, 'c', 'd' );\n\t *\t\tA.bind( 'a' ).to( B, 'b', C, 'd', ( b, d ) => b + d );\n\t *\n\t * @method #bind\n\t * @param {...String} bindAttrs Observable attributes that will be bound to another observable(s).\n\t * @returns {module:utils/observablemixin~BindChain}\n\t */\n\tbind( ...bindAttrs ) {\n\t\tif ( !bindAttrs.length || !isStringArray( bindAttrs ) ) {\n\t\t\t/**\n\t\t\t * All attributes must be strings.\n\t\t\t *\n\t\t\t * @error observable-bind-wrong-attrs\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'observable-bind-wrong-attrs: All attributes must be strings.' );\n\t\t}\n\n\t\tif ( ( new Set( bindAttrs ) ).size !== bindAttrs.length ) {\n\t\t\t/**\n\t\t\t * Attributes must be unique.\n\t\t\t *\n\t\t\t * @error observable-bind-duplicate-attrs\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'observable-bind-duplicate-attrs: Attributes must be unique.' );\n\t\t}\n\n\t\tinitObservable( this );\n\n\t\tconst boundAttributes = this[ boundAttributesSymbol ];\n\n\t\tbindAttrs.forEach( attrName => {\n\t\t\tif ( boundAttributes.has( attrName ) ) {\n\t\t\t\t/**\n\t\t\t\t * Cannot bind the same attribute more that once.\n\t\t\t\t *\n\t\t\t\t * @error observable-bind-rebind\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError( 'observable-bind-rebind: Cannot bind the same attribute more that once.' );\n\t\t\t}\n\t\t} );\n\n\t\tconst bindings = new Map();\n\n\t\t/**\n\t\t * @typedef Binding\n\t\t * @type Object\n\t\t * @property {Array} attr Attribute which is bound.\n\t\t * @property {Array} to Array of observable–attribute components of the binding (`{ observable: ..., attr: .. }`).\n\t\t * @property {Array} callback A function which processes `to` components.\n\t\t */\n\t\tbindAttrs.forEach( a => {\n\t\t\tconst binding = { attr: a, to: [] };\n\n\t\t\tboundAttributes.set( a, binding );\n\t\t\tbindings.set( a, binding );\n\t\t} );\n\n\t\t/**\n\t\t * @typedef BindChain\n\t\t * @type Object\n\t\t * @property {Function} to See {@link ~ObservableMixin#_bindTo}.\n\t\t * @property {module:utils/observablemixin~Observable} _observable The observable which initializes the binding.\n\t\t * @property {Array} _bindAttrs Array of `_observable` attributes to be bound.\n\t\t * @property {Array} _to Array of `to()` observable–attributes (`{ observable: toObservable, attrs: ...toAttrs }`).\n\t\t * @property {Map} _bindings Stores bindings to be kept in\n\t\t * {@link ~ObservableMixin#_boundAttributes}/{@link ~ObservableMixin#_boundObservables}\n\t\t * initiated in this binding chain.\n\t\t */\n\t\treturn {\n\t\t\tto: bindTo,\n\n\t\t\t_observable: this,\n\t\t\t_bindAttrs: bindAttrs,\n\t\t\t_to: [],\n\t\t\t_bindings: bindings\n\t\t};\n\t},\n\n\t/**\n\t * Removes the binding created with {@link ~ObservableMixin#bind}.\n\t *\n\t *\t\tA.unbind( 'a' );\n\t *\t\tA.unbind();\n\t *\n\t * @method #unbind\n\t * @param {...String} [unbindAttrs] Observable attributes to be unbound. All the bindings will\n\t * be released if no attributes provided.\n\t */\n\tunbind( ...unbindAttrs ) {\n\t\t// Nothing to do here if not inited yet.\n\t\tif ( !( attributesSymbol in this ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst boundAttributes = this[ boundAttributesSymbol ];\n\t\tconst boundObservables = this[ boundObservablesSymbol ];\n\n\t\tif ( unbindAttrs.length ) {\n\t\t\tif ( !isStringArray( unbindAttrs ) ) {\n\t\t\t\t/**\n\t\t\t\t * Attributes must be strings.\n\t\t\t\t *\n\t\t\t\t * @error observable-unbind-wrong-attrs\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError( 'observable-unbind-wrong-attrs: Attributes must be strings.' );\n\t\t\t}\n\n\t\t\tunbindAttrs.forEach( attrName => {\n\t\t\t\tconst binding = boundAttributes.get( attrName );\n\t\t\t\tlet toObservable, toAttr, toAttrs, toAttrBindings;\n\n\t\t\t\tbinding.to.forEach( to => {\n\t\t\t\t\t// TODO: ES6 destructuring.\n\t\t\t\t\ttoObservable = to[ 0 ];\n\t\t\t\t\ttoAttr = to[ 1 ];\n\t\t\t\t\ttoAttrs = boundObservables.get( toObservable );\n\t\t\t\t\ttoAttrBindings = toAttrs[ toAttr ];\n\n\t\t\t\t\ttoAttrBindings.delete( binding );\n\n\t\t\t\t\tif ( !toAttrBindings.size ) {\n\t\t\t\t\t\tdelete toAttrs[ toAttr ];\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !Object.keys( toAttrs ).length ) {\n\t\t\t\t\t\tboundObservables.delete( toObservable );\n\t\t\t\t\t\tthis.stopListening( toObservable, 'change' );\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\tboundAttributes.delete( attrName );\n\t\t\t} );\n\t\t} else {\n\t\t\tboundObservables.forEach( ( bindings, boundObservable ) => {\n\t\t\t\tthis.stopListening( boundObservable, 'change' );\n\t\t\t} );\n\n\t\t\tboundObservables.clear();\n\t\t\tboundAttributes.clear();\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t * @member ~ObservableMixin#_boundAttributes\n\t */\n\n\t/**\n\t * @private\n\t * @member ~ObservableMixin#_boundObservables\n\t */\n\n\t/**\n\t * @private\n\t * @member ~ObservableMixin#_bindTo\n\t */\n};\n\nexport default ObservableMixin;\n\n// Init symbol properties needed to for the observable mechanism to work.\n//\n// @private\n// @param {module:utils/observablemixin~ObservableMixin} observable\nfunction initObservable( observable ) {\n\t// Do nothing if already inited.\n\tif ( attributesSymbol in observable ) {\n\t\treturn;\n\t}\n\n\t// The internal hash containing the observable's state.\n\t//\n\t// @private\n\t// @type {Map}\n\tObject.defineProperty( observable, attributesSymbol, {\n\t\tvalue: new Map()\n\t} );\n\n\t// Map containing bindings to external observables. It shares the binding objects\n\t// (`{ observable: A, attr: 'a', to: ... }`) with {@link module:utils/observablemixin~ObservableMixin#_boundAttributes} and\n\t// it is used to observe external observables to update own attributes accordingly.\n\t// See {@link module:utils/observablemixin~ObservableMixin#bind}.\n\t//\n\t//\t\tA.bind( 'a', 'b', 'c' ).to( B, 'x', 'y', 'x' );\n\t//\t\tconsole.log( A._boundObservables );\n\t//\n\t//\t\t\tMap( {\n\t//\t\t\t\tB: {\n\t//\t\t\t\t\tx: Set( [\n\t//\t\t\t\t\t\t{ observable: A, attr: 'a', to: [ [ B, 'x' ] ] },\n\t//\t\t\t\t\t\t{ observable: A, attr: 'c', to: [ [ B, 'x' ] ] }\n\t//\t\t\t\t\t] ),\n\t//\t\t\t\t\ty: Set( [\n\t//\t\t\t\t\t\t{ observable: A, attr: 'b', to: [ [ B, 'y' ] ] },\n\t//\t\t\t\t\t] )\n\t//\t\t\t\t}\n\t//\t\t\t} )\n\t//\n\t//\t\tA.bind( 'd' ).to( B, 'z' ).to( C, 'w' ).as( callback );\n\t//\t\tconsole.log( A._boundObservables );\n\t//\n\t//\t\t\tMap( {\n\t//\t\t\t\tB: {\n\t//\t\t\t\t\tx: Set( [\n\t//\t\t\t\t\t\t{ observable: A, attr: 'a', to: [ [ B, 'x' ] ] },\n\t//\t\t\t\t\t\t{ observable: A, attr: 'c', to: [ [ B, 'x' ] ] }\n\t//\t\t\t\t\t] ),\n\t//\t\t\t\t\ty: Set( [\n\t//\t\t\t\t\t\t{ observable: A, attr: 'b', to: [ [ B, 'y' ] ] },\n\t//\t\t\t\t\t] ),\n\t//\t\t\t\t\tz: Set( [\n\t//\t\t\t\t\t\t{ observable: A, attr: 'd', to: [ [ B, 'z' ], [ C, 'w' ] ], callback: callback }\n\t//\t\t\t\t\t] )\n\t//\t\t\t\t},\n\t//\t\t\t\tC: {\n\t//\t\t\t\t\tw: Set( [\n\t//\t\t\t\t\t\t{ observable: A, attr: 'd', to: [ [ B, 'z' ], [ C, 'w' ] ], callback: callback }\n\t//\t\t\t\t\t] )\n\t//\t\t\t\t}\n\t//\t\t\t} )\n\t//\n\t// @private\n\t// @type {Map}\n\tObject.defineProperty( observable, boundObservablesSymbol, {\n\t\tvalue: new Map()\n\t} );\n\n\t// Object that stores which attributes of this observable are bound and how. It shares\n\t// the binding objects (`{ observable: A, attr: 'a', to: ... }`) with {@link utils.ObservableMixin#_boundObservables}.\n\t// This data structure is a reverse of {@link utils.ObservableMixin#_boundObservables} and it is helpful for\n\t// {@link utils.ObservableMixin#unbind}.\n\t//\n\t// See {@link utils.ObservableMixin#bind}.\n\t//\n\t//\t\tA.bind( 'a', 'b', 'c' ).to( B, 'x', 'y', 'x' );\n\t//\t\tconsole.log( A._boundAttributes );\n\t//\n\t//\t\t\tMap( {\n\t//\t\t\t\ta: { observable: A, attr: 'a', to: [ [ B, 'x' ] ] },\n\t//\t\t\t\tb: { observable: A, attr: 'b', to: [ [ B, 'y' ] ] },\n\t//\t\t\t\tc: { observable: A, attr: 'c', to: [ [ B, 'x' ] ] }\n\t//\t\t\t} )\n\t//\n\t//\t\tA.bind( 'd' ).to( B, 'z' ).to( C, 'w' ).as( callback );\n\t//\t\tconsole.log( A._boundAttributes );\n\t//\n\t//\t\t\tMap( {\n\t//\t\t\t\ta: { observable: A, attr: 'a', to: [ [ B, 'x' ] ] },\n\t//\t\t\t\tb: { observable: A, attr: 'b', to: [ [ B, 'y' ] ] },\n\t//\t\t\t\tc: { observable: A, attr: 'c', to: [ [ B, 'x' ] ] },\n\t//\t\t\t\td: { observable: A, attr: 'd', to: [ [ B, 'z' ], [ C, 'w' ] ], callback: callback }\n\t//\t\t\t} )\n\t//\n\t// @private\n\t// @type {Map}\n\tObject.defineProperty( observable, boundAttributesSymbol, {\n\t\tvalue: new Map()\n\t} );\n}\n\n// A chaining for {@link module:utils/observablemixin~ObservableMixin#bind} providing `.to()` interface.\n//\n// @private\n// @param {...[Observable|String|Function]} args Arguments of the `.to( args )` binding.\nfunction bindTo( ...args ) {\n\t/* jshint validthis: true */\n\tconst parsedArgs = parseBindToArgs( ...args );\n\tconst bindingsKeys = Array.from( this._bindings.keys() );\n\tconst numberOfBindings = bindingsKeys.length;\n\n\t// Eliminate A.bind( 'x' ).to( B, C )\n\tif ( !parsedArgs.callback && parsedArgs.to.length > 1 ) {\n\t\t/**\n\t\t * Binding multiple observables only possible with callback.\n\t\t *\n\t\t * @error observable-bind-no-callback\n\t\t */\n\t\tthrow new CKEditorError( 'observable-bind-to-no-callback: Binding multiple observables only possible with callback.' ) ;\n\t}\n\n\t// Eliminate A.bind( 'x', 'y' ).to( B, callback )\n\tif ( numberOfBindings > 1 && parsedArgs.callback ) {\n\t\t/**\n\t\t * Cannot bind multiple attributes and use a callback in one binding.\n\t\t *\n\t\t * @error observable-bind-to-extra-callback\n\t\t */\n\t\tthrow new CKEditorError( 'observable-bind-to-extra-callback: Cannot bind multiple attributes and use a callback in one binding.' ) ;\n\t}\n\n\tparsedArgs.to.forEach( to => {\n\t\t// Eliminate A.bind( 'x', 'y' ).to( B, 'a' )\n\t\tif ( to.attrs.length && to.attrs.length !== numberOfBindings ) {\n\t\t\t/**\n\t\t\t * The number of attributes must match.\n\t\t\t *\n\t\t\t * @error observable-bind-to-attrs-length\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'observable-bind-to-attrs-length: The number of attributes must match.' );\n\t\t}\n\n\t\t// When no to.attrs specified, observing source attributes instead i.e.\n\t\t// A.bind( 'x', 'y' ).to( B ) -> Observe B.x and B.y\n\t\tif ( !to.attrs.length ) {\n\t\t\tto.attrs = this._bindAttrs;\n\t\t}\n\t} );\n\n\tthis._to = parsedArgs.to;\n\n\t// Fill {@link BindChain#_bindings} with callback. When the callback is set there's only one binding.\n\tif ( parsedArgs.callback ) {\n\t\tthis._bindings.get( bindingsKeys[ 0 ] ).callback = parsedArgs.callback;\n\t}\n\n\tattachBindToListeners( this._observable, this._to );\n\n\t// Update observable._boundAttributes and observable._boundObservables.\n\tupdateBindToBound( this );\n\n\t// Set initial values of bound attributes.\n\tthis._bindAttrs.forEach( attrName => {\n\t\tupdateBoundObservableAttr( this._observable, attrName );\n\t} );\n}\n\n// Check if all entries of the array are of `String` type.\n//\n// @private\n// @param {Array} arr An array to be checked.\n// @returns {Boolean}\nfunction isStringArray( arr ) {\n\treturn arr.every( a => typeof a == 'string' );\n}\n\n// Parses and validates {@link Observable#bind}`.to( args )` arguments and returns\n// an object with a parsed structure. For example\n//\n//\t\tA.bind( 'x' ).to( B, 'a', C, 'b', call );\n//\n// becomes\n//\n//\t\t{\n//\t\t\tto: [\n//\t\t\t\t{ observable: B, attrs: [ 'a' ] },\n//\t\t\t\t{ observable: C, attrs: [ 'b' ] },\n//\t\t\t],\n//\t\t\tcallback: call\n// \t\t}\n//\n// @private\n// @param {...*} args Arguments of {@link Observable#bind}`.to( args )`.\n// @returns {Object}\nfunction parseBindToArgs( ...args ) {\n\t// Eliminate A.bind( 'x' ).to()\n\tif ( !args.length ) {\n\t\t/**\n\t\t * Invalid argument syntax in `to()`.\n\t\t *\n\t\t * @error observable-bind-to-parse-error\n\t\t */\n\t\tthrow new CKEditorError( 'observable-bind-to-parse-error: Invalid argument syntax in `to()`.' );\n\t}\n\n\tconst parsed = { to: [] };\n\tlet lastObservable;\n\n\tif ( typeof args[ args.length - 1 ] == 'function' ) {\n\t\tparsed.callback = args.pop();\n\t}\n\n\targs.forEach( a => {\n\t\tif ( typeof a == 'string' ) {\n\t\t\tlastObservable.attrs.push( a );\n\t\t} else if ( typeof a == 'object' ) {\n\t\t\tlastObservable = { observable: a, attrs: [] };\n\t\t\tparsed.to.push( lastObservable );\n\t\t} else {\n\t\t\tthrow new CKEditorError( 'observable-bind-to-parse-error: Invalid argument syntax in `to()`.' );\n\t\t}\n\t} );\n\n\treturn parsed;\n}\n\n// Synchronizes {@link module:utils/observablemixin#_boundObservables} with {@link Binding}.\n//\n// @private\n// @param {Binding} binding A binding to store in {@link Observable#_boundObservables}.\n// @param {Observable} toObservable A observable, which is a new component of `binding`.\n// @param {String} toAttrName A name of `toObservable`'s attribute, a new component of the `binding`.\nfunction updateBoundObservables( observable, binding, toObservable, toAttrName ) {\n\tconst boundObservables = observable[ boundObservablesSymbol ];\n\tconst bindingsToObservable = boundObservables.get( toObservable );\n\tconst bindings = bindingsToObservable || {};\n\n\tif ( !bindings[ toAttrName ] ) {\n\t\tbindings[ toAttrName ] = new Set();\n\t}\n\n\t// Pass the binding to a corresponding Set in `observable._boundObservables`.\n\tbindings[ toAttrName ].add( binding );\n\n\tif ( !bindingsToObservable ) {\n\t\tboundObservables.set( toObservable, bindings );\n\t}\n}\n\n// Synchronizes {@link Observable#_boundAttributes} and {@link Observable#_boundObservables}\n// with {@link BindChain}.\n//\n// Assuming the following binding being created\n//\n// \t\tA.bind( 'a', 'b' ).to( B, 'x', 'y' );\n//\n// the following bindings were initialized by {@link Observable#bind} in {@link BindChain#_bindings}:\n//\n// \t\t{\n// \t\t\ta: { observable: A, attr: 'a', to: [] },\n// \t\t\tb: { observable: A, attr: 'b', to: [] },\n// \t\t}\n//\n// Iterate over all bindings in this chain and fill their `to` properties with\n// corresponding to( ... ) arguments (components of the binding), so\n//\n// \t\t{\n// \t\t\ta: { observable: A, attr: 'a', to: [ B, 'x' ] },\n// \t\t\tb: { observable: A, attr: 'b', to: [ B, 'y' ] },\n// \t\t}\n//\n// Then update the structure of {@link Observable#_boundObservables} with updated\n// binding, so it becomes:\n//\n// \t\tMap( {\n// \t\t\tB: {\n// \t\t\t\tx: Set( [\n// \t\t\t\t\t{ observable: A, attr: 'a', to: [ [ B, 'x' ] ] }\n// \t\t\t\t] ),\n// \t\t\t\ty: Set( [\n// \t\t\t\t\t{ observable: A, attr: 'b', to: [ [ B, 'y' ] ] },\n// \t\t\t\t] )\n//\t\t\t}\n// \t\t} )\n//\n// @private\n// @param {BindChain} chain The binding initialized by {@link Observable#bind}.\nfunction updateBindToBound( chain ) {\n\tlet toAttr;\n\n\tchain._bindings.forEach( ( binding, attrName ) => {\n\t\t// Note: For a binding without a callback, this will run only once\n\t\t// like in A.bind( 'x', 'y' ).to( B, 'a', 'b' )\n\t\t// TODO: ES6 destructuring.\n\t\tchain._to.forEach( to => {\n\t\t\ttoAttr = to.attrs[ binding.callback ? 0 : chain._bindAttrs.indexOf( attrName ) ];\n\n\t\t\tbinding.to.push( [ to.observable, toAttr ] );\n\t\t\tupdateBoundObservables( chain._observable, binding, to.observable, toAttr );\n\t\t} );\n\t} );\n}\n\n// Updates an attribute of a {@link Observable} with a value\n// determined by an entry in {@link Observable#_boundAttributes}.\n//\n// @private\n// @param {Observable} observable A observable which attribute is to be updated.\n// @param {String} attrName An attribute to be updated.\nfunction updateBoundObservableAttr( observable, attrName ) {\n\tconst boundAttributes = observable[ boundAttributesSymbol ];\n\tconst binding = boundAttributes.get( attrName );\n\tlet attrValue;\n\n\t// When a binding with callback is created like\n\t//\n\t// \t\tA.bind( 'a' ).to( B, 'b', C, 'c', callback );\n\t//\n\t// collect B.b and C.c, then pass them to callback to set A.a.\n\tif ( binding.callback ) {\n\t\tattrValue = binding.callback.apply( observable, binding.to.map( to => to[ 0 ][ to[ 1 ] ] ) );\n\t} else {\n\t\tattrValue = binding.to[ 0 ];\n\t\tattrValue = attrValue[ 0 ][ attrValue[ 1 ] ];\n\t}\n\n\tif ( observable.hasOwnProperty( attrName ) ) {\n\t\tobservable[ attrName ] = attrValue;\n\t} else {\n\t\tobservable.set( attrName, attrValue );\n\t}\n}\n\n// Starts listening to changes in {@link BindChain._to} observables to update\n// {@link BindChain._observable} {@link BindChain._bindAttrs}. Also sets the\n// initial state of {@link BindChain._observable}.\n//\n// @private\n// @param {BindChain} chain The chain initialized by {@link Observable#bind}.\nfunction attachBindToListeners( observable, toBindings ) {\n\ttoBindings.forEach( to => {\n\t\tconst boundObservables = observable[ boundObservablesSymbol ];\n\t\tlet bindings;\n\n\t\t// If there's already a chain between the observables (`observable` listens to\n\t\t// `to.observable`), there's no need to create another `change` event listener.\n\t\tif ( !boundObservables.get( to.observable ) ) {\n\t\t\tobservable.listenTo( to.observable, 'change', ( evt, attrName ) => {\n\t\t\t\tbindings = boundObservables.get( to.observable )[ attrName ];\n\n\t\t\t\t// Note: to.observable will fire for any attribute change, react\n\t\t\t\t// to changes of attributes which are bound only.\n\t\t\t\tif ( bindings ) {\n\t\t\t\t\tbindings.forEach( binding => {\n\t\t\t\t\t\tupdateBoundObservableAttr( observable, binding.attr );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t} );\n}\n\nextend( ObservableMixin, EmitterMixin );\n\n/**\n * Fired when an attribute changed value.\n *\n * @event module:utils/observablemixin~ObservableMixin#change:{attribute}\n * @param {String} name The attribute name.\n * @param {*} value The new attribute value.\n * @param {*} oldValue The previous attribute value.\n */\n\n/**\n * Interface representing classes which mix in {@link module:utils/observablemixin~ObservableMixin}.\n *\n * @interface Observable\n */\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-utils/src/observablemixin.js","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function() {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\tvar result = [];\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar item = this[i];\n\t\t\tif(item[2]) {\n\t\t\t\tresult.push(\"@media \" + item[2] + \"{\" + item[1] + \"}\");\n\t\t\t} else {\n\t\t\t\tresult.push(item[1]);\n\t\t\t}\n\t\t}\n\t\treturn result.join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\n\n\n// WEBPACK FOOTER //\n// /workspace/ckeditor5/~/css-loader/lib/css-base.js","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module engine/model/operation/operation\n */\n\nimport clone from '@ckeditor/ckeditor5-utils/src/lib/lodash/clone';\n\n/**\n * Abstract base operation class.\n *\n * @abstract\n */\nexport default class Operation {\n\t/**\n\t * Base operation constructor.\n\t * @param {Number} baseVersion {@link module:engine/model/document~Document#version} on which the operation can be applied.\n\t */\n\tconstructor( baseVersion ) {\n\t\t/**\n\t\t * {@link module:engine/model/document~Document#version} on which operation can be applied. If you try to\n\t\t * {@link module:engine/model/document~Document#applyOperation apply} operation with different base version than the\n\t\t * {@link module:engine/model/document~Document#version document version} the\n\t\t * {@link module:utils/ckeditorerror~CKEditorError model-document-applyOperation-wrong-version} error is thrown.\n\t\t *\n\t\t * @member {Number}\n\t\t */\n\t\tthis.baseVersion = baseVersion;\n\n\t\t/**\n\t\t * Operation type.\n\t\t *\n\t\t * @readonly\n\t\t * @member {String} #type\n\t\t */\n\n\t\t/**\n\t\t * {@link module:engine/model/delta/delta~Delta Delta} which the operation is a part of. This property is set by the\n\t\t * {@link module:engine/model/delta/delta~Delta delta} when the operations is added to it by the\n\t\t * {@link module:engine/model/delta/delta~Delta#addOperation} method.\n\t\t *\n\t\t * @member {module:engine/model/delta/delta~Delta} #delta\n\t\t */\n\n\t\t/**\n\t\t * Creates and returns an operation that has the same parameters as this operation.\n\t\t *\n\t\t * @method #clone\n\t\t * @returns {module:engine/model/operation/operation~Operation} Clone of this operation.\n\t\t */\n\n\t\t/**\n\t\t * Creates and returns a reverse operation. Reverse operation when executed right after\n\t\t * the original operation will bring back tree model state to the point before the original\n\t\t * operation execution. In other words, it reverses changes done by the original operation.\n\t\t *\n\t\t * Keep in mind that tree model state may change since executing the original operation,\n\t\t * so reverse operation will be \"outdated\". In that case you will need to\n\t\t * {@link module:engine/model/operation/transform~transform} it by all operations that were executed after the original operation.\n\t\t *\n\t\t * @method #getReversed\n\t\t * @returns {module:engine/model/operation/operation~Operation} Reversed operation.\n\t\t */\n\n\t\t/**\n\t\t * Executes the operation - modifications described by the operation attributes\n\t\t * will be applied to the tree model.\n\t\t *\n\t\t * @protected\n\t\t * @method #_execute\n\t\t * @returns {Object} Object with additional information about the applied changes. It properties depends on the\n\t\t * operation type.\n\t\t */\n\t}\n\n\t/**\n\t * Custom toJSON method to solve child-parent circular dependencies.\n\t *\n\t * @method #toJSON\n\t * @returns {Object} Clone of this object with the delta property replaced with string.\n\t */\n\ttoJSON() {\n\t\tconst json = clone( this, true );\n\n\t\tjson.__className = this.constructor.className;\n\n\t\t// Remove parent delta to avoid circular dependencies.\n\t\tdelete json.delta;\n\n\t\treturn json;\n\t}\n\n\t/**\n\t * Name of the operation class used for serialization.\n\t *\n\t * @type {String}\n\t */\n\tstatic get className() {\n\t\treturn 'engine.model.operation.Operation';\n\t}\n\n\t/**\n\t * Creates Operation object from deserilized object, i.e. from parsed JSON string.\n\t *\n\t * @param {Object} json Deserialized JSON object.\n\t * @param {module:engine/model/document~Document} doc Document on which this operation will be applied.\n\t * @returns {module:engine/model/operation/operation~Operation}\n\t */\n\tstatic fromJSON( json ) {\n\t\treturn new this( json.baseVersion );\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-engine/src/model/operation/operation.js","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module engine/model/treewalker\n */\n\nimport Text from './text';\nimport TextProxy from './textproxy';\nimport Element from './element';\nimport Position from './position';\nimport CKEditorError from '@ckeditor/ckeditor5-utils/src/ckeditorerror';\n\n/**\n * Position iterator class. It allows to iterate forward and backward over the document.\n */\nexport default class TreeWalker {\n\t/**\n\t * Creates a range iterator. All parameters are optional, but you have to specify either `boundaries` or `startPosition`.\n\t *\n\t * @constructor\n\t * @param {Object} [options={}] Object with configuration.\n\t * @param {'forward'|'backward'} [options.direction='forward'] Walking direction.\n\t * @param {module:engine/model/range~Range} [options.boundaries=null] Range to define boundaries of the iterator.\n\t * @param {module:engine/model/position~Position} [options.startPosition] Starting position.\n\t * @param {Boolean} [options.singleCharacters=false] Flag indicating whether all consecutive characters with the same attributes\n\t * should be returned one by one as multiple {@link module:engine/model/textproxy~TextProxy} (`true`) objects or as one\n\t * {@link module:engine/model/textproxy~TextProxy} (`false`).\n\t * @param {Boolean} [options.shallow=false] Flag indicating whether iterator should enter elements or not. If the\n\t * iterator is shallow child nodes of any iterated node will not be returned along with `elementEnd` tag.\n\t * @param {Boolean} [options.ignoreElementEnd=false] Flag indicating whether iterator should ignore `elementEnd`\n\t * tags. If the option is true walker will not return a parent node of start position. If this option is `true`\n\t * each {@link module:engine/model/element~Element} will be returned once, while if the option is `false` they might be returned\n\t * twice: for `'elementStart'` and `'elementEnd'`.\n\t */\n\tconstructor( options = {} ) {\n\t\tif ( !options.boundaries && !options.startPosition ) {\n\t\t\t/**\n\t\t\t * Neither boundaries nor starting position have been defined.\n\t\t\t *\n\t\t\t * @error tree-walker-no-start-position\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'model-tree-walker-no-start-position: Neither boundaries nor starting position have been defined.' );\n\t\t}\n\n\t\tconst direction = options.direction || 'forward';\n\n\t\tif ( direction != 'forward' && direction != 'backward' ) {\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'model-tree-walker-unknown-direction: Only `backward` and `forward` direction allowed.',\n\t\t\t\t{ direction }\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Walking direction. Defaults `'forward'`.\n\t\t *\n\t\t * @readonly\n\t\t * @member {'backward'|'forward'} module:engine/model/treewalker~TreeWalker#direction\n\t\t */\n\t\tthis.direction = direction;\n\n\t\t/**\n\t\t * Iterator boundaries.\n\t\t *\n\t\t * When the iterator is walking `'forward'` on the end of boundary or is walking `'backward'`\n\t\t * on the start of boundary, then `{ done: true }` is returned.\n\t\t *\n\t\t * If boundaries are not defined they are set before first and after last child of the root node.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:engine/model/range~Range} module:engine/model/treewalker~TreeWalker#boundaries\n\t\t */\n\t\tthis.boundaries = options.boundaries || null;\n\n\t\t/**\n\t\t * Iterator position. This is always static position, even if the initial position was a\n\t\t * {@link module:engine/model/liveposition~LivePosition live position}. If start position is not defined then position depends\n\t\t * on {@link #direction}. If direction is `'forward'` position starts form the beginning, when direction\n\t\t * is `'backward'` position starts from the end.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:engine/model/position~Position} module:engine/model/treewalker~TreeWalker#position\n\t\t */\n\t\tif ( options.startPosition ) {\n\t\t\tthis.position = Position.createFromPosition( options.startPosition );\n\t\t} else {\n\t\t\tthis.position = Position.createFromPosition( this.boundaries[ this.direction == 'backward' ? 'end' : 'start' ] );\n\t\t}\n\n\t\t/**\n\t\t * Flag indicating whether all consecutive characters with the same attributes should be\n\t\t * returned as one {@link module:engine/model/textproxy~TextProxy} (`true`) or one by one (`false`).\n\t\t *\n\t\t * @readonly\n\t\t * @member {Boolean} module:engine/model/treewalker~TreeWalker#singleCharacters\n\t\t */\n\t\tthis.singleCharacters = !!options.singleCharacters;\n\n\t\t/**\n\t\t * Flag indicating whether iterator should enter elements or not. If the iterator is shallow child nodes of any\n\t\t * iterated node will not be returned along with `elementEnd` tag.\n\t\t *\n\t\t * @readonly\n\t\t * @member {Boolean} module:engine/model/treewalker~TreeWalker#shallow\n\t\t */\n\t\tthis.shallow = !!options.shallow;\n\n\t\t/**\n\t\t * Flag indicating whether iterator should ignore `elementEnd` tags. If the option is true walker will not\n\t\t * return a parent node of the start position. If this option is `true` each {@link module:engine/model/element~Element} will\n\t\t * be returned once, while if the option is `false` they might be returned twice:\n\t\t * for `'elementStart'` and `'elementEnd'`.\n\t\t *\n\t\t * @readonly\n\t\t * @member {Boolean} module:engine/model/treewalker~TreeWalker#ignoreElementEnd\n\t\t */\n\t\tthis.ignoreElementEnd = !!options.ignoreElementEnd;\n\n\t\t/**\n\t\t * Start boundary cached for optimization purposes.\n\t\t *\n\t\t * @private\n\t\t * @member {module:engine/model/element~Element} module:engine/model/treewalker~TreeWalker#_boundaryStartParent\n\t\t */\n\t\tthis._boundaryStartParent = this.boundaries ? this.boundaries.start.parent : null;\n\n\t\t/**\n\t\t * End boundary cached for optimization purposes.\n\t\t *\n\t\t * @private\n\t\t * @member {module:engine/model/element~Element} module:engine/model/treewalker~TreeWalker#_boundaryEndParent\n\t\t */\n\t\tthis._boundaryEndParent = this.boundaries ? this.boundaries.end.parent : null;\n\n\t\t/**\n\t\t * Parent of the most recently visited node. Cached for optimization purposes.\n\t\t *\n\t\t * @private\n\t\t * @member {module:engine/model/element~Element|module:engine/model/documentfragment~DocumentFragment}\n\t\t * module:engine/model/treewalker~TreeWalker#_visitedParent\n\t\t */\n\t\tthis._visitedParent = this.position.parent;\n\t}\n\n\t/**\n\t * Iterator interface.\n\t */\n\t[ Symbol.iterator ]() {\n\t\treturn this;\n\t}\n\n\t/**\n\t * Moves {@link #position} in the {@link #direction} skipping values as long as the callback function returns `true`.\n\t *\n\t * For example:\n\t *\n\t * \t\twalker.skip( value => value.type == 'text' ); // []foo -> foo[]\n\t * \t\twalker.skip( () => true ); // Move the position to the end: []foo -> foo[]\n\t * \t\twalker.skip( () => false ); // Do not move the position.\n\t *\n\t * @param {Function} skip Callback function. Gets {@link module:engine/model/treewalker~TreeWalkerValue} and should\n\t * return `true` if the value should be skipped or `false` if not.\n\t */\n\tskip( skip ) {\n\t\tlet done, value, prevPosition, prevVisitedParent;\n\n\t\tdo {\n\t\t\tprevPosition = this.position;\n\t\t\tprevVisitedParent = this._visitedParent;\n\n\t\t\t( { done, value } = this.next() );\n\t\t} while ( !done && skip( value ) );\n\n\t\tif ( !done ) {\n\t\t\tthis.position = prevPosition;\n\t\t\tthis._visitedParent = prevVisitedParent;\n\t\t}\n\t}\n\n\t/**\n\t * Iterator interface method.\n\t * Detects walking direction and makes step forward or backward.\n\t *\n\t * @returns {Object} Object implementing iterator interface, returning information about taken step.\n\t */\n\tnext() {\n\t\tif ( this.direction == 'forward' ) {\n\t\t\treturn this._next();\n\t\t} else {\n\t\t\treturn this._previous();\n\t\t}\n\t}\n\n\t/**\n\t * Makes a step forward in model. Moves the {@link #position} to the next position and returns the encountered value.\n\t *\n\t * @private\n\t * @returns {Object}\n\t * @returns {Boolean} return.done True if iterator is done.\n\t * @returns {module:engine/model/treewalker~TreeWalkerValue} return.value Information about taken step.\n\t */\n\t_next() {\n\t\tconst previousPosition = this.position;\n\t\tconst position = Position.createFromPosition( this.position );\n\t\tconst parent = this._visitedParent;\n\n\t\t// We are at the end of the root.\n\t\tif ( parent.parent === null && position.offset === parent.maxOffset ) {\n\t\t\treturn { done: true };\n\t\t}\n\n\t\t// We reached the walker boundary.\n\t\tif ( parent === this._boundaryEndParent && position.offset == this.boundaries.end.offset ) {\n\t\t\treturn { done: true };\n\t\t}\n\n\t\tconst node = position.textNode ? position.textNode : position.nodeAfter;\n\n\t\tif ( node instanceof Element ) {\n\t\t\tif ( !this.shallow ) {\n\t\t\t\t// Manual operations on path internals for optimization purposes. Here and in the rest of the method.\n\t\t\t\tposition.path.push( 0 );\n\t\t\t\tthis._visitedParent = node;\n\t\t\t} else {\n\t\t\t\tposition.offset++;\n\t\t\t}\n\n\t\t\tthis.position = position;\n\n\t\t\treturn formatReturnValue( 'elementStart', node, previousPosition, position, 1 );\n\t\t} else if ( node instanceof Text ) {\n\t\t\tlet charactersCount, offsetInTextNode;\n\n\t\t\tif ( this.singleCharacters ) {\n\t\t\t\tcharactersCount = 1;\n\t\t\t} else {\n\t\t\t\tlet offset = node.endOffset;\n\n\t\t\t\tif ( this._boundaryEndParent == parent && this.boundaries.end.offset < offset ) {\n\t\t\t\t\toffset = this.boundaries.end.offset;\n\t\t\t\t}\n\n\t\t\t\tcharactersCount = offset - position.offset;\n\t\t\t}\n\n\t\t\toffsetInTextNode = position.offset - node.startOffset;\n\n\t\t\tconst item = new TextProxy( node, offsetInTextNode, charactersCount );\n\n\t\t\tposition.offset += charactersCount;\n\t\t\tthis.position = position;\n\n\t\t\treturn formatReturnValue( 'text', item, previousPosition, position, charactersCount );\n\t\t} else {\n\t\t\t// `node` is not set, we reached the end of current `parent`.\n\t\t\tposition.path.pop();\n\t\t\tposition.offset++;\n\t\t\tthis.position = position;\n\t\t\tthis._visitedParent = parent.parent;\n\n\t\t\tif ( this.ignoreElementEnd ) {\n\t\t\t\treturn this._next();\n\t\t\t} else {\n\t\t\t\treturn formatReturnValue( 'elementEnd', parent, previousPosition, position );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Makes a step backward in model. Moves the {@link #position} to the previous position and returns the encountered value.\n\t *\n\t * @private\n\t * @returns {Object}\n\t * @returns {Boolean} return.done True if iterator is done.\n\t * @returns {module:engine/model/treewalker~TreeWalkerValue} return.value Information about taken step.\n\t */\n\t_previous() {\n\t\tconst previousPosition = this.position;\n\t\tconst position = Position.createFromPosition( this.position );\n\t\tconst parent = this._visitedParent;\n\n\t\t// We are at the beginning of the root.\n\t\tif ( parent.parent === null && position.offset === 0 ) {\n\t\t\treturn { done: true };\n\t\t}\n\n\t\t// We reached the walker boundary.\n\t\tif ( parent == this._boundaryStartParent && position.offset == this.boundaries.start.offset ) {\n\t\t\treturn { done: true };\n\t\t}\n\n\t\t// Get node just before current position\n\t\tconst node = position.textNode ? position.textNode : position.nodeBefore;\n\n\t\tif ( node instanceof Element ) {\n\t\t\tposition.offset--;\n\n\t\t\tif ( !this.shallow ) {\n\t\t\t\tposition.path.push( node.maxOffset );\n\t\t\t\tthis.position = position;\n\t\t\t\tthis._visitedParent = node;\n\n\t\t\t\tif ( this.ignoreElementEnd ) {\n\t\t\t\t\treturn this._previous();\n\t\t\t\t} else {\n\t\t\t\t\treturn formatReturnValue( 'elementEnd', node, previousPosition, position );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.position = position;\n\n\t\t\t\treturn formatReturnValue( 'elementStart', node, previousPosition, position, 1 );\n\t\t\t}\n\t\t} else if ( node instanceof Text ) {\n\t\t\tlet charactersCount, offsetInTextNode;\n\n\t\t\tif ( this.singleCharacters ) {\n\t\t\t\tcharactersCount = 1;\n\t\t\t} else {\n\t\t\t\tlet offset = node.startOffset;\n\n\t\t\t\tif ( this._boundaryStartParent == parent && this.boundaries.start.offset > offset ) {\n\t\t\t\t\toffset = this.boundaries.start.offset;\n\t\t\t\t}\n\n\t\t\t\tcharactersCount = position.offset - offset;\n\t\t\t}\n\n\t\t\toffsetInTextNode = position.offset - node.startOffset;\n\n\t\t\tconst item = new TextProxy( node, offsetInTextNode - charactersCount, charactersCount );\n\n\t\t\tposition.offset -= charactersCount;\n\t\t\tthis.position = position;\n\n\t\t\treturn formatReturnValue( 'text', item, previousPosition, position, charactersCount );\n\t\t} else {\n\t\t\t// `node` is not set, we reached the beginning of current `parent`.\n\t\t\tposition.path.pop();\n\t\t\tthis.position = position;\n\t\t\tthis._visitedParent = parent.parent;\n\n\t\t\treturn formatReturnValue( 'elementStart', parent, previousPosition, position, 1 );\n\t\t}\n\t}\n}\n\nfunction formatReturnValue( type, item, previousPosition, nextPosition, length ) {\n\treturn {\n\t\tdone: false,\n\t\tvalue: {\n\t\t\ttype: type,\n\t\t\titem: item,\n\t\t\tpreviousPosition: previousPosition,\n\t\t\tnextPosition: nextPosition,\n\t\t\tlength: length\n\t\t}\n\t};\n}\n\n/**\n * Type of the step made by {@link module:engine/model/treewalker~TreeWalker}.\n * Possible values: `'elementStart'` if walker is at the beginning of a node, `'elementEnd'` if walker is at the end of node,\n * `'character'` if walker traversed over a character, or `'text'` if walker traversed over multiple characters (available in\n * character merging mode, see {@link module:engine/model/treewalker~TreeWalker#constructor}).\n *\n * @typedef {'elementStart'|'elementEnd'|'character'|'text'} module:engine/model/treewalker~TreeWalkerValueType\n */\n\n/**\n * Object returned by {@link module:engine/model/treewalker~TreeWalker} when traversing tree model.\n *\n * @typedef {Object} module:engine/model/treewalker~TreeWalkerValue\n * @property {module:engine/model/treewalker~TreeWalkerValueType} type\n * @property {module:engine/model/item~Item} item Item between old and new positions of {@link module:engine/model/treewalker~TreeWalker}.\n * @property {module:engine/model/position~Position} previousPosition Previous position of the iterator.\n * * Forward iteration: For `'elementEnd'` it is the last position inside the element. For all other types it is the\n * position before the item. Note that it is more efficient to use this position then calculate the position before\n * the node using {@link module:engine/model/position~Position.createBefore}. It is also more efficient to get the\n * position after node by shifting `previousPosition` by `length`, using {@link module:engine/model/position~Position#getShiftedBy},\n * then calculate the position using {@link module:engine/model/position~Position.createAfter}.\n * * Backward iteration: For `'elementStart'` it is the first position inside the element. For all other types it is\n * the position after item.\n * @property {module:engine/model/position~Position} nextPosition Next position of the iterator.\n * * Forward iteration: For `'elementStart'` it is the first position inside the element. For all other types it is\n * the position after the item.\n * * Backward iteration: For `'elementEnd'` it is last position inside element. For all other types it is the position\n * before the item.\n * @property {Number} [length] Length of the item. For `'elementStart'` and `'character'` it is 1. For `'text'` it is\n * the length of the text. For `'elementEnd'` it is undefined.\n */\n\n/**\n * Tree walking directions.\n *\n * @typedef {'forward'|'backward'} module:engine/view/treewalker~TreeWalkerDirection\n */\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-engine/src/model/treewalker.js","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module engine/view/range\n */\n\nimport Position from './position';\nimport TreeWalker from './treewalker';\n\n/**\n * Tree view range.\n */\nexport default class Range {\n\t/**\n\t * Creates a range spanning from `start` position to `end` position.\n\t *\n\t * **Note:** Constructor creates it's own {@link module:engine/view/position~Position} instances basing on passed values.\n\t *\n\t * @param {module:engine/view/position~Position} start Start position.\n\t * @param {module:engine/view/position~Position} [end] End position. If not set, range will be collapsed at `start` position.\n\t */\n\tconstructor( start, end = null ) {\n\t\t/**\n\t\t * Start position.\n\t\t *\n\t\t * @member {module:engine/view/position~Position}\n\t\t */\n\t\tthis.start = Position.createFromPosition( start );\n\n\t\t/**\n\t\t * End position.\n\t\t *\n\t\t * @member {module:engine/view/position~Position}\n\t\t */\n\t\tthis.end = end ? Position.createFromPosition( end ) : Position.createFromPosition( start );\n\t}\n\n\t/**\n\t * Returns an iterator that iterates over all {@link module:engine/view/item~Item view items} that are in this range and returns\n\t * them together with additional information like length or {@link module:engine/view/position~Position positions},\n\t * grouped as {@link module:engine/view/treewalker~TreeWalkerValue}.\n\t *\n\t * This iterator uses {@link module:engine/view/treewalker~TreeWalker TreeWalker} with `boundaries` set to this range and\n\t * `ignoreElementEnd` option\n\t * set to `true`.\n\t *\n\t * @returns {Iterable.}\n\t */\n\t*[ Symbol.iterator ]() {\n\t\tyield* new TreeWalker( { boundaries: this, ignoreElementEnd: true } );\n\t}\n\n\t/**\n\t * Returns whether the range is collapsed, that is it start and end positions are equal.\n\t *\n\t * @type {Boolean}\n\t */\n\tget isCollapsed() {\n\t\treturn this.start.isEqual( this.end );\n\t}\n\n\t/**\n\t * Returns whether this range is flat, that is if {@link module:engine/view/range~Range#start start} position and\n\t * {@link module:engine/view/range~Range#end end} position are in the same {@link module:engine/view/position~Position#parent parent}.\n\t *\n\t * @type {Boolean}\n\t */\n\tget isFlat() {\n\t\treturn this.start.parent === this.end.parent;\n\t}\n\n\t/**\n\t * Range root element.\n\t *\n\t * @type {module:engine/view/element~Element|module:engine/view/documentfragment~DocumentFragment}\n\t */\n\tget root() {\n\t\treturn this.start.root;\n\t}\n\n\t/**\n\t * Creates a maximal range that has the same content as this range but is expanded in both ways (at the beginning\n\t * and at the end).\n\t *\n\t * For example:\n\t *\n\t * \t\t
Foo
{Bar}
->
Foo
[
Bar]
\n\t * \t\t
foo{bar}
->
foo[bar]
\n\t *\n\t * Note that in the sample above:\n\t * - `
` have type of {@link module:engine/view/containerelement~ContainerElement},\n\t * - `` have type of {@link module:engine/view/attributeelement~AttributeElement},\n\t * - `` have type of {@link module:engine/view/uielement~UIElement}.\n\t *\n\t * @returns {module:engine/view/range~Range} Enlarged range.\n\t */\n\tgetEnlarged() {\n\t\tlet start = this.start.getLastMatchingPosition( enlargeShrinkSkip, { direction: 'backward' } );\n\t\tlet end = this.end.getLastMatchingPosition( enlargeShrinkSkip );\n\n\t\t// Fix positions, in case if they are in Text node.\n\t\tif ( start.parent.is( 'text' ) && start.isAtStart ) {\n\t\t\tstart = Position.createBefore( start.parent );\n\t\t}\n\n\t\tif ( end.parent.is( 'text' ) && end.isAtEnd ) {\n\t\t\tend = Position.createAfter( end.parent );\n\t\t}\n\n\t\treturn new Range( start, end );\n\t}\n\n\t/**\n\t * Creates a minimum range that has the same content as this range but is trimmed in both ways (at the beginning\n\t * and at the end).\n\t *\n\t * For example:\n\t *\n\t * \t\t
Foo
[
Bar]
->
Foo
{Bar}
\n\t * \t\t
foo[bar]
->
foo{bar}
\n\t *\n\t * Note that in the sample above:\n\t * - `
` have type of {@link module:engine/view/containerelement~ContainerElement},\n\t * - `` have type of {@link module:engine/view/attributeelement~AttributeElement},\n\t * - `` have type of {@link module:engine/view/uielement~UIElement}.\n\t *\n\t * @returns {module:engine/view/range~Range} Shrink range.\n\t */\n\tgetTrimmed() {\n\t\tlet start = this.start.getLastMatchingPosition( enlargeShrinkSkip );\n\t\tlet end = this.end.getLastMatchingPosition( enlargeShrinkSkip, { direction: 'backward' } );\n\t\tlet nodeAfterStart = start.nodeAfter;\n\t\tlet nodeBeforeEnd = end.nodeBefore;\n\n\t\t// Because TreeWalker prefers positions next to text node, we need to move them manually into these text nodes.\n\t\tif ( nodeAfterStart && nodeAfterStart.is( 'text' ) ) {\n\t\t\tstart = new Position( nodeAfterStart, 0 );\n\t\t}\n\n\t\tif ( nodeBeforeEnd && nodeBeforeEnd.is( 'text' ) ) {\n\t\t\tend = new Position( nodeBeforeEnd, nodeBeforeEnd.data.length );\n\t\t}\n\n\t\treturn new Range( start, end );\n\t}\n\n\t/**\n\t * Two ranges are equal if their start and end positions are equal.\n\t *\n\t * @param {module:engine/view/range~Range} otherRange Range to compare with.\n\t * @returns {Boolean} `true` if ranges are equal, `false` otherwise\n\t */\n\tisEqual( otherRange ) {\n\t\treturn this == otherRange || ( this.start.isEqual( otherRange.start ) && this.end.isEqual( otherRange.end ) );\n\t}\n\n\t/**\n\t * Checks whether this range contains given {@link module:engine/view/position~Position position}.\n\t *\n\t * @param {module:engine/view/position~Position} position Position to check.\n\t * @returns {Boolean} `true` if given {@link module:engine/view/position~Position position} is contained in this range, `false` otherwise.\n\t */\n\tcontainsPosition( position ) {\n\t\treturn position.isAfter( this.start ) && position.isBefore( this.end );\n\t}\n\n\t/**\n\t * Checks whether this range contains given {@link module:engine/view/range~Range range}.\n\t *\n\t * @param {module:engine/view/range~Range} otherRange Range to check.\n\t * @returns {Boolean} `true` if given {@link module:engine/view/range~Range range} boundaries are contained by this range, `false`\n\t * otherwise.\n\t */\n\tcontainsRange( otherRange ) {\n\t\treturn this.containsPosition( otherRange.start ) && this.containsPosition( otherRange.end );\n\t}\n\n\t/**\n\t * Computes which part(s) of this {@link module:engine/view/range~Range range} is not a part of given\n\t * {@link module:engine/view/range~Range range}.\n\t * Returned array contains zero, one or two {@link module:engine/view/range~Range ranges}.\n\t *\n\t * Examples:\n\t *\n\t *\t\tlet foo = new Text( 'foo' );\n\t *\t\tlet img = new ContainerElement( 'img' );\n\t *\t\tlet bar = new Text( 'bar' );\n\t *\t\tlet p = new ContainerElement( 'p', null, [ foo, img, bar ] );\n\t *\n\t *\t\tlet range = new Range( new Position( foo, 2 ), new Position( bar, 1 ); // \"o\", img, \"b\" are in range.\n\t *\t\tlet otherRange = new Range( new Position( foo, 1 ), new Position( bar, 2 ); \"oo\", img, \"ba\" are in range.\n\t *\t\tlet transformed = range.getDifference( otherRange );\n\t *\t\t// transformed array has no ranges because `otherRange` contains `range`\n\t *\n\t *\t\totherRange = new Range( new Position( foo, 1 ), new Position( p, 2 ); // \"oo\", img are in range.\n\t *\t\ttransformed = range.getDifference( otherRange );\n\t *\t\t// transformed array has one range: from ( p, 2 ) to ( bar, 1 )\n\t *\n\t *\t\totherRange = new Range( new Position( p, 1 ), new Position( p, 2 ) ); // img is in range.\n\t *\t\ttransformed = range.getDifference( otherRange );\n\t *\t\t// transformed array has two ranges: from ( foo, 1 ) to ( p, 1 ) and from ( p, 2 ) to ( bar, 1 )\n\t *\n\t * @param {module:engine/view/range~Range} otherRange Range to differentiate against.\n\t * @returns {Array.} The difference between ranges.\n\t */\n\tgetDifference( otherRange ) {\n\t\tconst ranges = [];\n\n\t\tif ( this.isIntersecting( otherRange ) ) {\n\t\t\t// Ranges intersect.\n\n\t\t\tif ( this.containsPosition( otherRange.start ) ) {\n\t\t\t\t// Given range start is inside this range. This means that we have to\n\t\t\t\t// add shrunken range - from the start to the middle of this range.\n\t\t\t\tranges.push( new Range( this.start, otherRange.start ) );\n\t\t\t}\n\n\t\t\tif ( this.containsPosition( otherRange.end ) ) {\n\t\t\t\t// Given range end is inside this range. This means that we have to\n\t\t\t\t// add shrunken range - from the middle of this range to the end.\n\t\t\t\tranges.push( new Range( otherRange.end, this.end ) );\n\t\t\t}\n\t\t} else {\n\t\t\t// Ranges do not intersect, return the original range.\n\t\t\tranges.push( Range.createFromRange( this ) );\n\t\t}\n\n\t\treturn ranges;\n\t}\n\n\t/**\n\t * Returns an intersection of this {@link module:engine/view/range~Range range} and given {@link module:engine/view/range~Range range}.\n\t * Intersection is a common part of both of those ranges. If ranges has no common part, returns `null`.\n\t *\n\t * Examples:\n\t *\n\t *\t\tlet foo = new Text( 'foo' );\n\t *\t\tlet img = new ContainerElement( 'img' );\n\t *\t\tlet bar = new Text( 'bar' );\n\t *\t\tlet p = new ContainerElement( 'p', null, [ foo, img, bar ] );\n\t *\n\t *\t\tlet range = new Range( new Position( foo, 2 ), new Position( bar, 1 ); // \"o\", img, \"b\" are in range.\n\t *\t\tlet otherRange = new Range( new Position( foo, 1 ), new Position( p, 2 ); // \"oo\", img are in range.\n\t *\t\tlet transformed = range.getIntersection( otherRange ); // range from ( foo, 1 ) to ( p, 2 ).\n\t *\n\t *\t\totherRange = new Range( new Position( bar, 1 ), new Position( bar, 3 ); \"ar\" is in range.\n\t *\t\ttransformed = range.getIntersection( otherRange ); // null - no common part.\n\t *\n\t * @param {module:engine/view/range~Range} otherRange Range to check for intersection.\n\t * @returns {module:engine/view/range~Range|null} A common part of given ranges or `null` if ranges have no common part.\n\t */\n\tgetIntersection( otherRange ) {\n\t\tif ( this.isIntersecting( otherRange ) ) {\n\t\t\t// Ranges intersect, so a common range will be returned.\n\t\t\t// At most, it will be same as this range.\n\t\t\tlet commonRangeStart = this.start;\n\t\t\tlet commonRangeEnd = this.end;\n\n\t\t\tif ( this.containsPosition( otherRange.start ) ) {\n\t\t\t\t// Given range start is inside this range. This means thaNt we have to\n\t\t\t\t// shrink common range to the given range start.\n\t\t\t\tcommonRangeStart = otherRange.start;\n\t\t\t}\n\n\t\t\tif ( this.containsPosition( otherRange.end ) ) {\n\t\t\t\t// Given range end is inside this range. This means that we have to\n\t\t\t\t// shrink common range to the given range end.\n\t\t\t\tcommonRangeEnd = otherRange.end;\n\t\t\t}\n\n\t\t\treturn new Range( commonRangeStart, commonRangeEnd );\n\t\t}\n\n\t\t// Ranges do not intersect, so they do not have common part.\n\t\treturn null;\n\t}\n\n\t/**\n\t * Creates a {@link module:engine/view/treewalker~TreeWalker TreeWalker} instance with this range as a boundary.\n\t *\n\t * @param {Object} options Object with configuration options. See {@link module:engine/view/treewalker~TreeWalker}.\n\t * @param {module:engine/view/position~Position} [options.startPosition]\n\t * @param {Boolean} [options.singleCharacters=false]\n\t * @param {Boolean} [options.shallow=false]\n\t * @param {Boolean} [options.ignoreElementEnd=false]\n\t */\n\tgetWalker( options = {} ) {\n\t\toptions.boundaries = this;\n\n\t\treturn new TreeWalker( options );\n\t}\n\n\t/**\n\t * Returns an iterator that iterates over all {@link module:engine/view/item~Item view items} that are in this range and returns\n\t * them.\n\t *\n\t * This method uses {@link module:engine/view/treewalker~TreeWalker} with `boundaries` set to this range and `ignoreElementEnd` option\n\t * set to `true`. However it returns only {@link module:engine/view/item~Item items},\n\t * not {@link module:engine/view/treewalker~TreeWalkerValue}.\n\t *\n\t * You may specify additional options for the tree walker. See {@link module:engine/view/treewalker~TreeWalker} for\n\t * a full list of available options.\n\t *\n\t * @param {Object} options Object with configuration options. See {@link module:engine/view/treewalker~TreeWalker}.\n\t * @returns {Iterable.}\n\t */\n\t*getItems( options = {} ) {\n\t\toptions.boundaries = this;\n\t\toptions.ignoreElementEnd = true;\n\n\t\tconst treeWalker = new TreeWalker( options );\n\n\t\tfor ( let value of treeWalker ) {\n\t\t\tyield value.item;\n\t\t}\n\t}\n\n\t/**\n\t * Returns an iterator that iterates over all {@link module:engine/view/position~Position positions} that are boundaries or\n\t * contained in this range.\n\t *\n\t * This method uses {@link module:engine/view/treewalker~TreeWalker} with `boundaries` set to this range. However it returns only\n\t * {@link module:engine/view/position~Position positions}, not {@link module:engine/view/treewalker~TreeWalkerValue}.\n\t *\n\t * You may specify additional options for the tree walker. See {@link module:engine/view/treewalker~TreeWalker} for\n\t * a full list of available options.\n\t *\n\t * @param {Object} options Object with configuration options. See {@link module:engine/view/treewalker~TreeWalker}.\n\t * @returns {Iterable.}\n\t */\n\t*getPositions( options = {} ) {\n\t\toptions.boundaries = this;\n\n\t\tconst treeWalker = new TreeWalker( options );\n\n\t\tyield treeWalker.position;\n\n\t\tfor ( let value of treeWalker ) {\n\t\t\tyield value.nextPosition;\n\t\t}\n\t}\n\n\t/**\n\t * Checks and returns whether this range intersects with given range.\n\t *\n\t * @param {module:engine/view/range~Range} otherRange Range to compare with.\n\t * @returns {Boolean} True if ranges intersect.\n\t */\n\tisIntersecting( otherRange ) {\n\t\treturn this.start.isBefore( otherRange.end ) && this.end.isAfter( otherRange.start );\n\t}\n\n\t/**\n\t * Creates a range from given parents and offsets.\n\t *\n\t * @param {module:engine/view/element~Element} startElement Start position parent element.\n\t * @param {Number} startOffset Start position offset.\n\t * @param {module:engine/view/element~Element} endElement End position parent element.\n\t * @param {Number} endOffset End position offset.\n\t * @returns {module:engine/view/range~Range} Created range.\n\t */\n\tstatic createFromParentsAndOffsets( startElement, startOffset, endElement, endOffset ) {\n\t\treturn new this(\n\t\t\tnew Position( startElement, startOffset ),\n\t\t\tnew Position( endElement, endOffset )\n\t\t);\n\t}\n\n\t/**\n\t * Creates and returns a new instance of Range which is equal to passed range.\n\t *\n\t * @param {module:engine/view/range~Range} range Range to clone.\n\t * @returns {module:engine/view/range~Range}\n\t */\n\tstatic createFromRange( range ) {\n\t\treturn new this( range.start, range.end );\n\t}\n\n\t/**\n\t * Creates a new range, spreading from specified {@link module:engine/view/position~Position position} to a position moved by\n\t * given `shift`. If `shift` is a negative value, shifted position is treated as the beginning of the range.\n\t *\n\t * @param {module:engine/view/position~Position} position Beginning of the range.\n\t * @param {Number} shift How long the range should be.\n\t * @returns {module:engine/view/range~Range}\n\t */\n\tstatic createFromPositionAndShift( position, shift ) {\n\t\tconst start = position;\n\t\tconst end = position.getShiftedBy( shift );\n\n\t\treturn shift > 0 ? new this( start, end ) : new this( end, start );\n\t}\n\n\t/**\n\t * Creates a range inside an {@link module:engine/view/element~Element element} which starts before the first child of\n\t * that element and ends after the last child of that element.\n\t *\n\t * @param {module:engine/view/element~Element} element Element which is a parent for the range.\n\t * @returns {module:engine/view/range~Range}\n\t */\n\tstatic createIn( element ) {\n\t\treturn this.createFromParentsAndOffsets( element, 0, element, element.childCount );\n\t}\n\n\t/**\n\t * Creates a range that starts before given {@link module:engine/view/item~Item view item} and ends after it.\n\t *\n\t * @param {module:engine/view/item~Item} item\n\t * @returns {module:engine/view/range~Range}\n\t */\n\tstatic createOn( item ) {\n\t\treturn this.createFromPositionAndShift( Position.createBefore( item ), 1 );\n\t}\n}\n\n// Function used by getEnlagred and getShrinked methods.\nfunction enlargeShrinkSkip( value ) {\n\tif ( value.item.is( 'attributeElement' ) || value.item.is( 'uiElement' ) ) {\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-engine/src/view/range.js","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nexport default baseSlice;\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-utils/src/lib/lodash/_baseSlice.js","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n\n\n\n// WEBPACK FOOTER //\n// ../ckeditor5-utils/src/lib/lodash/_isIndex.js","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\nvar stylesInDom = {},\n\tmemoize = function(fn) {\n\t\tvar memo;\n\t\treturn function () {\n\t\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\t\treturn memo;\n\t\t};\n\t},\n\tisOldIE = memoize(function() {\n\t\treturn /msie [6-9]\\b/.test(self.navigator.userAgent.toLowerCase());\n\t}),\n\tgetHeadElement = memoize(function () {\n\t\treturn document.head || document.getElementsByTagName(\"head\")[0];\n\t}),\n\tsingletonElement = null,\n\tsingletonCounter = 0,\n\tstyleElementsInsertedAtTop = [];\n\nmodule.exports = function(list, options) {\n\tif(typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif(typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of