File: //home/arjun/projects/buyercall/node_modules/@ckeditor/ckeditor5-heading/build/heading.js.map
{"version":3,"sources":["webpack://CKEditor5.heading/./theme/heading.css","webpack://CKEditor5.heading/../node_modules/css-loader/dist/runtime/api.js","webpack://CKEditor5.heading/../node_modules/css-loader/dist/runtime/cssWithMappingToString.js","webpack://CKEditor5.heading/./theme/icons/heading1.svg","webpack://CKEditor5.heading/./theme/icons/heading2.svg","webpack://CKEditor5.heading/./theme/icons/heading3.svg","webpack://CKEditor5.heading/./theme/icons/heading4.svg","webpack://CKEditor5.heading/./theme/icons/heading5.svg","webpack://CKEditor5.heading/./theme/icons/heading6.svg","webpack://CKEditor5.heading/./theme/heading.css?b2a0","webpack://CKEditor5.heading/../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://CKEditor5.heading/./src/heading.js","webpack://CKEditor5.heading/./src/headingbuttonsui.js","webpack://CKEditor5.heading/./src/headingcommand.js","webpack://CKEditor5.heading/./src/headingediting.js","webpack://CKEditor5.heading/./src/headingui.js","webpack://CKEditor5.heading/./src/title.js","webpack://CKEditor5.heading/./src/utils.js","webpack://CKEditor5.heading/delegated \"./src/core.js\" from dll-reference CKEditor5.dll","webpack://CKEditor5.heading/delegated \"./src/engine.js\" from dll-reference CKEditor5.dll","webpack://CKEditor5.heading/delegated \"./src/paragraph.js\" from dll-reference CKEditor5.dll","webpack://CKEditor5.heading/delegated \"./src/ui.js\" from dll-reference CKEditor5.dll","webpack://CKEditor5.heading/delegated \"./src/utils.js\" from dll-reference CKEditor5.dll","webpack://CKEditor5.heading/external var \"CKEditor5.dll\"","webpack://CKEditor5.heading/webpack/bootstrap","webpack://CKEditor5.heading/webpack/runtime/compat get default export","webpack://CKEditor5.heading/webpack/runtime/define property getters","webpack://CKEditor5.heading/webpack/runtime/hasOwnProperty shorthand","webpack://CKEditor5.heading/webpack/runtime/make namespace object","webpack://CKEditor5.heading/./src/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAC4H;AAC7B;AAC/F,8BAA8B,mFAA2B,CAAC,wGAAqC;AAC/F;AACA,kEAAkE,eAAe,wBAAwB,eAAe,wBAAwB,eAAe,+BAA+B,gBAAgB,2EAA2E,UAAU,uEAAuE,eAAe,OAAO,odAAod,oBAAoB,GAAG,6BAA6B,oBAAoB,GAAG,6BAA6B,oBAAoB,GAAG,wCAAwC,sBAAsB,GAAG,+PAA+P,8CAA8C,iBAAiB,KAAK,4CAA4C,sBAAsB,KAAK,GAAG,qBAAqB;AACt7C;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;ACP1B;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA,4CAA4C,qBAAqB;AACjE;;AAEA;AACA,KAAK;AACL,KAAK;AACL;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,sBAAsB,iBAAiB;AACvC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB,qBAAqB;AAC1C;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;ACjEa;;AAEb,kCAAkC;;AAElC,8BAA8B;;AAE9B,kDAAkD,gBAAgB,gEAAgE,wDAAwD,6DAA6D,sDAAsD;;AAE7S,uCAAuC,uDAAuD,uCAAuC,SAAS,OAAO,oBAAoB;;AAEzK,yCAAyC,8FAA8F,wBAAwB,eAAe,eAAe,gBAAgB,YAAY,MAAM,wBAAwB,+BAA+B,aAAa,qBAAqB,uCAAuC,cAAc,WAAW,YAAY,UAAU,MAAM,mDAAmD,UAAU,sBAAsB;;AAEve,gCAAgC;;AAEhC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,uDAAuD,cAAc;AACrE;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;;;;;;;;;;;;;;ACnCA,iEAAe,uQAAuQ;;;;;;;;;;;;;;;ACAtR,iEAAe,ovBAAovB;;;;;;;;;;;;;;;ACAnwB,iEAAe,47BAA47B;;;;;;;;;;;;;;;ACA38B,iEAAe,qWAAqW;;;;;;;;;;;;;;;ACApX,iEAAe,+pBAA+pB;;;;;;;;;;;;;;;ACA9qB,iEAAe,+3BAA+3B;;;;;;;;;;;;;;;;;;ACA/yB;AAC/F,YAA4K;;AAE5K,eAAe,+CAA+C;;AAE9D;AACA;;AAEA,aAAa,0GAAG,CAAC,wJAAO;;;;AAIxB,iEAAe,+JAAc,MAAM;;;;;;;;;;;ACZtB;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,wDAAwD;;AAExD;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;;AAEA,kBAAkB,wBAAwB;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB,iBAAiB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gBAAgB,KAAwC,GAAG,sBAAiB,GAAG,CAAI;;AAEnF;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA,qEAAqE,qBAAqB,cAAc;;AAExG;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA,yDAAyD;AACzD,IAAI;;AAEJ;;;AAGA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA,2BAA2B;AAC3B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAoB,4BAA4B;AAChD;AACA;AACA;AACA;;AAEA;;AAEA,qBAAqB,6BAA6B;AAClD;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC5QA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAE4C;;AAEE;AACV;;AAEN;;AAE9B;AACA;AACA;AACA,uCAAuC;AACvC,YAAY,gCAAgC;AAC5C;AACA,4CAA4C;AAC5C,QAAQ,4DAA4D;AACpE;AACA;AACA;AACe,sBAAsB,sDAAM;AAC3C;AACA;AACA;AACA;AACA,WAAW,uDAAc,EAAE,kDAAS;AACpC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gEAAgE,oDAAoD;AACpH;AACA,iBAAiB,2CAA2C;AAC5D;AACA,YAAY,sCAAsC;AAClD;;AAEA;AACA;AACA,8BAA8B,oDAAoD;AAClF;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,QAAQ,sEAAsE;AAC9E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,uEAAuE;AAC/E,QAAQ,iFAAiF;AACzF,QAAQ,iFAAiF;AACzF,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,4CAA4C;AACpD,QAAQ,oDAAoD;AAC5D;AACA;AACA,QAAQ,mCAAmC;AAC3C;AACA;AACA,+CAA+C,+CAA+C;AAC9F;AACA;AACA;AACA;AACA;AACA,iCAAiC,oBAAoB;AACrD;AACA,YAAY,8CAA8C;AAC1D;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,cAAc,QAAQ;AACtB,cAAc,wDAAwD;AACtE,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,cAAc,QAAQ,qBAAqB,uDAAuD;AAClG;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;ACtHA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAE4C;AACE;;AAEA;AACS;AACA;AACA;AACA;AACA;AACA;;AAEvD;AACA,WAAW,iEAAY;AACvB,WAAW,iEAAY;AACvB,WAAW,iEAAY;AACvB,WAAW,iEAAY;AACvB,WAAW,iEAAY;AACvB,WAAW,iEAAY;AACvB;;AAEA;AACA;AACA;AACA;AACA,kDAAkD,sCAAsC;AACxF;AACA;AACA,wFAAwF,2CAA2C;AACnI;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,uEAAuE;AACjF,UAAU,iFAAiF;AAC3F,UAAU,iFAAiF;AAC3F,UAAU;AACV;AACA,QAAQ;AACR;AACA,OAAO;AACP;AACA;AACA;AACA,wDAAwD,4DAA4D;AACpH;AACA;AACA,4EAA4E,2CAA2C;AACvH;AACA;AACA;AACA;AACe,+BAA+B,sDAAM;AACpD;AACA;AACA;AACA;AACA,kBAAkB,2DAAmB;;AAErC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;;AAEA;AACA,oBAAoB,wDAAU;AAC9B;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAiC,sBAAsB;AACvD;AACA,KAAK;;AAEL;AACA,IAAI;AACJ;AACA;;;;;;;;;;;;;;;;;;ACtGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAE6C;AACD;;AAE5C;AACA,2CAA2C,sDAAsD;AACjG;AACA;AACA;AACe,6BAA6B,uDAAO;AACnD;AACA;AACA;AACA,YAAY,kCAAkC;AAC9C,YAAY,gBAAgB;AAC5B;AACA;AACA;;AAEA;AACA,kDAAkD,kDAAkD;AACpG;AACA;AACA;AACA;AACA;AACA,cAAc,gBAAgB;AAC9B;;AAEA;AACA;AACA,UAAU,2CAA2C;AACrD;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB,0DAAK;;AAErB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY,QAAQ;AACpB,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA,WAAW,qCAAqC;AAChD,WAAW,2DAA2D;AACtE,WAAW,mCAAmC;AAC9C,aAAa;AACb;AACA;AACA;;;;;;;;;;;;;;;;;;;;AC/FA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAE4C;AACQ;AACH;;AAEH;;AAE9C;;AAEA;AACA,mFAAmF;AACnF,2EAA2E,qCAAqC;AAChH;AACA;AACA;AACA;AACe,6BAA6B,sDAAM;AAClD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM,uEAAuE;AAC7E,MAAM,iFAAiF;AACvF,MAAM,iFAAiF;AACvF,MAAM;AACN;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA,WAAW,8DAAS;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,sCAAsC,uDAAc;AACpD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY,kCAAkC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+DAAc;AACpC,IAAI;AACJ;AACA;;;;;;;;;;;;;;;;;;;;;ACzHA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAE4C;AACgC;AAC3B;;AAEH;;AAEhB;;AAE9B;AACA;AACA;AACA;AACA;AACe,wBAAwB,sDAAM;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,2DAAmB;AACrC;AACA;;AAEA;AACA;AACA;AACA,+BAA+B,2DAAU;;AAEzC;AACA;;AAEA;;AAEA;AACA;AACA;AACA,gBAAgB,mDAAK;AACrB;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;;AAEA,wBAAwB,gEAAc;AACtC,GAAG,mEAAiB;;AAEpB;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,wEAAwE,iCAAiC;AACzG;AACA,KAAK;;AAEL;AACA,IAAI;AACJ;AACA;;;;;;;;;;;;;;;;;;;AClHA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAE4C;;AAEA;AAOd;;AAE9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,oBAAoB,sDAAM;AACzC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,kCAAkC;AACtE,4CAA4C,oEAAoE;AAChH,kCAAkC,2BAA2B;;AAE7D;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;;AAEA;AACA,0DAA0D,qCAAqC;AAC/F;AACA;AACA,6EAA6E,mBAAmB;AAChG,6EAA6E,mBAAmB;AAChG,6EAA6E,mBAAmB;;AAEhG;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAQ;AACpB,SAAS,sFAAsF;AAC/F,cAAc,QAAQ;AACtB;AACA,wBAAwB;AACxB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAQ;AACpB,SAAS,sFAAsF;AAC/F,cAAc,QAAQ;AACtB;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,yBAAyB,gEAAc;;AAEvC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,mCAAmC;AAC/C,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,mCAAmC;AAC/C,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,mCAAmC;AAC/C,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,mCAAmC;AAC/C,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG,uEAAiB;AACpB;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;;AAEJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK,qEAAe;AACpB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ,sEAAgB;AACxB,iBAAiB,qEAAe;AAChC;AACA,KAAK;AACL,iBAAiB,qEAAe;AAChC;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;;AAEJ;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,4BAA4B,0DAAK;AACjC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA,WAAW,kCAAkC;AAC7C,WAAW,QAAQ;AACnB,WAAW,+DAA+D;AAC1E;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qDAAqD,aAAa;AAClE;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,8BAA8B;AACzC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,qCAAqC;AAChD,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA,WAAW,qCAAqC;AAChD,WAAW,mCAAmC;AAC9C,WAAW,iCAAiC;AAC5C;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,6CAA6C;AACxD,WAAW,mCAAmC;AAC9C,WAAW,iCAAiC;AAC5C,aAAa,SAAS;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,qCAAqC;AAChD,WAAW,mCAAmC;AAC9C,WAAW,iCAAiC;AAC5C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,6CAA6C;AACxD,WAAW,qCAAqC;AAChD,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,6BAA6B,+CAA+C;AAC5E;AACA,iBAAiB,uCAAuC;AACxD;AACA,YAAY,kCAAkC;AAC9C;;AAEA;AACA,6BAA6B,+CAA+C;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA,QAAQ,oFAAoF;AAC5F;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,uCAAuC;AACxD;AACA,YAAY,QAAQ;AACpB;;;;;;;;;;;;;;;;ACrlBA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA,uEAAuE;AACvE;AACA;AACA,WAAW,kCAAkC;AAC7C,aAAa,6CAA6C;AAC1D;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;;;;;;;;;;ACzCA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;;;;;;;;;;ACNA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAE+C;AACc;AACV;AACc;AACtB","file":"heading.js","sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-heading_heading1{font-size:20px}.ck.ck-heading_heading2{font-size:17px}.ck.ck-heading_heading3{font-size:14px}.ck[class*=ck-heading_heading]{font-weight:700}.ck.ck-dropdown.ck-heading-dropdown .ck-dropdown__button .ck-button__label{width:8em}.ck.ck-dropdown.ck-heading-dropdown .ck-dropdown__panel .ck-list__item{min-width:18em}\", \"\",{\"version\":3,\"sources\":[\"webpack://./theme/heading.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-heading/heading.css\"],\"names\":[],\"mappings\":\"AAKA,wBACC,cACD,CAEA,wBACC,cACD,CAEA,wBACC,cACD,CAEA,+BACC,eACD,CCZC,2EACC,SACD,CAEA,uEACC,cACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck.ck-heading_heading1 {\\n\\tfont-size: 20px;\\n}\\n\\n.ck.ck-heading_heading2 {\\n\\tfont-size: 17px;\\n}\\n\\n.ck.ck-heading_heading3 {\\n\\tfont-size: 14px;\\n}\\n\\n.ck[class*=\\\"ck-heading_heading\\\"] {\\n\\tfont-weight: bold;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/* Resize dropdown's button label. */\\n.ck.ck-dropdown.ck-heading-dropdown {\\n\\t& .ck-dropdown__button .ck-button__label {\\n\\t\\twidth: 8em;\\n\\t}\\n\\n\\t& .ck-dropdown__panel .ck-list__item {\\n\\t\\tmin-width: 18em;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === \"string\") {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, \"\"]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nmodule.exports = function cssWithMappingToString(item) {\n var _item = _slicedToArray(item, 4),\n content = _item[1],\n cssMapping = _item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (typeof btoa === \"function\") {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M19 9v10h-2v-8h-2V9h4zM4 8.5h5V4a1 1 0 0 1 1-1h.5a1 1 0 0 1 1 1v11.5a1 1 0 0 1-1 1H10a1 1 0 0 1-1-1V11H4v4.5a1 1 0 0 1-1 1h-.5a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1H3a1 1 0 0 1 1 1v4.5z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M3 8.5h5V4a1 1 0 0 1 1-1h.5a1 1 0 0 1 1 1v11.5a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1V11H3v4.5a1 1 0 0 1-1 1h-.5a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1H2a1 1 0 0 1 1 1v4.5zm16.076 8.343V18.5h-6.252c.067-.626.27-1.22.61-1.78.338-.561 1.006-1.305 2.005-2.232.804-.749 1.297-1.257 1.479-1.523.245-.368.368-.732.368-1.092 0-.398-.107-.703-.32-.917-.214-.214-.51-.32-.886-.32-.372 0-.669.111-.889.336-.22.224-.347.596-.38 1.117l-1.778-.178c.106-.982.438-1.686.997-2.114.558-.427 1.257-.64 2.095-.64.918 0 1.64.247 2.164.742.525.495.787 1.11.787 1.847 0 .419-.075.818-.225 1.197-.15.378-.388.775-.714 1.19-.216.275-.605.67-1.168 1.187-.563.516-.92.859-1.07 1.028a3.11 3.11 0 0 0-.365.495h3.542z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M3 8.5h5V4a1 1 0 0 1 1-1h.5a1 1 0 0 1 1 1v11.5a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1V11H3v4.5a1 1 0 0 1-1 1h-.5a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1H2a1 1 0 0 1 1 1v4.5zm9.989 7.53 1.726-.209c.055.44.203.777.445 1.01.24.232.533.349.876.349.368 0 .678-.14.93-.42.251-.279.377-.655.377-1.13 0-.448-.12-.803-.362-1.066a1.153 1.153 0 0 0-.882-.393c-.228 0-.501.044-.819.133l.197-1.453c.482.012.85-.092 1.105-.315.253-.222.38-.517.38-.885 0-.313-.093-.563-.279-.75-.186-.185-.434-.278-.743-.278a1.07 1.07 0 0 0-.78.317c-.216.212-.347.52-.394.927l-1.644-.28c.114-.562.287-1.012.517-1.348.231-.337.553-.601.965-.794a3.24 3.24 0 0 1 1.387-.289c.876 0 1.579.28 2.108.838.436.457.653.973.653 1.549 0 .817-.446 1.468-1.339 1.955.533.114.96.37 1.28.768.319.398.478.878.478 1.441 0 .817-.298 1.513-.895 2.088-.596.576-1.339.864-2.228.864-.842 0-1.54-.243-2.094-.727-.555-.485-.876-1.118-.965-1.901z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M3.5 8.5h5V4a1 1 0 0 1 1-1h.5a1 1 0 0 1 1 1v11.5a1 1 0 0 1-1 1h-.5a1 1 0 0 1-1-1V11h-5v4.5a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h.5a1 1 0 0 1 1 1v4.5zm13.55 10v-1.873h-3.81v-1.561l4.037-5.91h1.498v5.904h1.156v1.567h-1.156V18.5H17.05zm0-3.44v-3.18l-2.14 3.18h2.14z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M3.5 8.5h5V4a1 1 0 0 1 1-1h.5a1 1 0 0 1 1 1v11.5a1 1 0 0 1-1 1h-.5a1 1 0 0 1-1-1V11h-5v4.5a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h.5a1 1 0 0 1 1 1v4.5zm9.578 7.607 1.777-.184c.05.402.201.72.45.955a1.223 1.223 0 0 0 1.81-.101c.258-.303.387-.759.387-1.368 0-.572-.128-1-.384-1.286-.256-.285-.59-.428-1-.428-.512 0-.971.226-1.377.679l-1.448-.21.915-4.843h4.716v1.67H15.56l-.28 1.58a2.697 2.697 0 0 1 1.219-.298 2.68 2.68 0 0 1 2.012.863c.55.576.825 1.323.825 2.241a3.36 3.36 0 0 1-.666 2.05c-.605.821-1.445 1.232-2.52 1.232-.86 0-1.56-.23-2.101-.692-.542-.461-.866-1.081-.971-1.86z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M3.5 8.5h5V4a1 1 0 0 1 1-1h.5a1 1 0 0 1 1 1v11.5a1 1 0 0 1-1 1h-.5a1 1 0 0 1-1-1V11h-5v4.5a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h.5a1 1 0 0 1 1 1v4.5zm15.595 2.973-1.726.19c-.043-.355-.153-.617-.33-.787-.178-.169-.409-.253-.692-.253-.377 0-.695.169-.956.507-.26.339-.424 1.043-.492 2.114.445-.525.997-.787 1.657-.787.745 0 1.383.284 1.914.85.531.568.797 1.3.797 2.197 0 .952-.28 1.716-.838 2.291-.559.576-1.276.864-2.152.864-.94 0-1.712-.365-2.317-1.095-.605-.73-.908-1.927-.908-3.59 0-1.705.316-2.935.946-3.688.63-.753 1.45-1.13 2.457-1.13.706 0 1.291.198 1.755.594.463.395.758.97.885 1.723zm-4.043 3.891c0 .58.133 1.028.4 1.343.266.315.57.473.914.473.33 0 .605-.13.825-.388.22-.258.33-.68.33-1.27 0-.604-.118-1.047-.355-1.329a1.115 1.115 0 0 0-.89-.422c-.342 0-.632.134-.869.403s-.355.666-.355 1.19z\\\"/></svg>\";","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./heading.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","\"use strict\";\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && typeof btoa !== 'undefined') {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n // tags it will allow on a page\n\n if (!options.singleton && typeof options.singleton !== 'boolean') {\n options.singleton = isOldIE();\n }\n\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n if (Object.prototype.toString.call(newList) !== '[object Array]') {\n return;\n }\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDom[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDom[_index].references === 0) {\n stylesInDom[_index].updater();\n\n stylesInDom.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};","/**\n * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module heading/heading\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\n\nimport HeadingEditing from './headingediting';\nimport HeadingUI from './headingui';\n\nimport '../theme/heading.css';\n\n/**\n * The headings feature.\n *\n * For a detailed overview, check the {@glink features/headings Headings feature documentation}\n * and the {@glink api/heading package page}.\n *\n * This is a \"glue\" plugin which loads the {@link module:heading/headingediting~HeadingEditing heading editing feature}\n * and {@link module:heading/headingui~HeadingUI heading UI feature}.\n *\n * @extends module:core/plugin~Plugin\n */\nexport default class Heading extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tstatic get requires() {\n\t\treturn [ HeadingEditing, HeadingUI ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tstatic get pluginName() {\n\t\treturn 'Heading';\n\t}\n}\n\n/**\n * The configuration of the heading feature. Introduced by the {@link module:heading/headingediting~HeadingEditing} feature.\n *\n * Read more in {@link module:heading/heading~HeadingConfig}.\n *\n * @member {module:heading/heading~HeadingConfig} module:core/editor/editorconfig~EditorConfig#heading\n */\n\n/**\n * The configuration of the heading feature.\n * The option is used by the {@link module:heading/headingediting~HeadingEditing} feature.\n *\n *\t\tClassicEditor\n *\t\t\t.create( {\n * \t\t\t\theading: ... // Heading feature config.\n *\t\t\t} )\n *\t\t\t.then( ... )\n *\t\t\t.catch( ... );\n *\n * See {@link module:core/editor/editorconfig~EditorConfig all editor options}.\n *\n * @interface HeadingConfig\n */\n\n/**\n * The available heading options.\n *\n * The default value is:\n *\n *\t\tconst headingConfig = {\n *\t\t\toptions: [\n *\t\t\t\t{ model: 'paragraph', title: 'Paragraph', class: 'ck-heading_paragraph' },\n *\t\t\t\t{ model: 'heading1', view: 'h2', title: 'Heading 1', class: 'ck-heading_heading1' },\n *\t\t\t\t{ model: 'heading2', view: 'h3', title: 'Heading 2', class: 'ck-heading_heading2' },\n *\t\t\t\t{ model: 'heading3', view: 'h4', title: 'Heading 3', class: 'ck-heading_heading3' }\n *\t\t\t]\n *\t\t};\n *\n * It defines 3 levels of headings. In the editor model they will use `heading1`, `heading2`, and `heading3` elements.\n * Their respective view elements (so the elements output by the editor) will be: `h2`, `h3`, and `h4`. This means that\n * if you choose \"Heading 1\" in the headings dropdown the editor will turn the current block to `<heading1>` in the model\n * which will result in rendering (and outputting to data) the `<h2>` element.\n *\n * The `title` and `class` properties will be used by the `headings` dropdown to render available options.\n * Usually, the first option in the headings dropdown is the \"Paragraph\" option, hence it's also defined on the list.\n * However, you don't need to define its view representation because it's handled by\n * the {@link module:paragraph/paragraph~Paragraph} feature (which is required by\n * the {@link module:heading/headingediting~HeadingEditing} feature).\n *\n * You can **read more** about configuring heading levels and **see more examples** in\n * the {@glink features/headings Headings} guide.\n *\n * Note: In the model you should always start from `heading1`, regardless of how the headings are represented in the view.\n * That's assumption is used by features like {@link module:autoformat/autoformat~Autoformat} to know which element\n * they should use when applying the first level heading.\n *\n * The defined headings are also available as values passed to the `'heading'` command under their model names.\n * For example, the below code will apply `<heading1>` to the current selection:\n *\n *\t\teditor.execute( 'heading', { value: 'heading1' } );\n *\n * @member {Array.<module:heading/heading~HeadingOption>} module:heading/heading~HeadingConfig#options\n */\n\n/**\n * Heading option descriptor.\n *\n * @typedef {Object} module:heading/heading~HeadingOption\n * @property {String} model Name of the model element to convert.\n * @property {module:engine/view/elementdefinition~ElementDefinition} view Definition of a view element to convert from/to.\n * @property {String} title The user-readable title of the option.\n * @property {String} class The class which will be added to the dropdown item representing this option.\n * @property {String} [icon] Icon used by {@link module:heading/headingbuttonsui~HeadingButtonsUI}. It can be omitted when using\n * the default configuration.\n * @extends module:engine/conversion/conversion~ConverterDefinition\n */\n","/**\n * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module heading/headingbuttonsui\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport { ButtonView } from 'ckeditor5/src/ui';\n\nimport { getLocalizedOptions } from './utils';\nimport iconHeading1 from '../theme/icons/heading1.svg';\nimport iconHeading2 from '../theme/icons/heading2.svg';\nimport iconHeading3 from '../theme/icons/heading3.svg';\nimport iconHeading4 from '../theme/icons/heading4.svg';\nimport iconHeading5 from '../theme/icons/heading5.svg';\nimport iconHeading6 from '../theme/icons/heading6.svg';\n\nconst defaultIcons = {\n\theading1: iconHeading1,\n\theading2: iconHeading2,\n\theading3: iconHeading3,\n\theading4: iconHeading4,\n\theading5: iconHeading5,\n\theading6: iconHeading6\n};\n\n/**\n * The `HeadingButtonsUI` plugin defines a set of UI buttons that can be used instead of the\n * standard drop down component.\n *\n * This feature is not enabled by default by the {@link module:heading/heading~Heading} plugin and needs to be\n * installed manually to the editor configuration.\n *\n * Plugin introduces button UI elements, which names are same as `model` property from {@link module:heading/heading~HeadingOption}.\n *\n *\t\tClassicEditor\n *\t\t\t.create( {\n *\t\t\t\tplugins: [ ..., Heading, Paragraph, HeadingButtonsUI, ParagraphButtonUI ]\n *\t\t\t\theading: {\n *\t\t\t\t\toptions: [\n *\t\t\t\t\t\t{ model: 'paragraph', title: 'Paragraph', class: 'ck-heading_paragraph' },\n *\t\t\t\t\t\t{ model: 'heading1', view: 'h2', title: 'Heading 1', class: 'ck-heading_heading1' },\n *\t\t\t\t\t\t{ model: 'heading2', view: 'h3', title: 'Heading 2', class: 'ck-heading_heading2' },\n *\t\t\t\t\t\t{ model: 'heading3', view: 'h4', title: 'Heading 3', class: 'ck-heading_heading3' }\n *\t\t\t\t\t]\n * \t\t\t\t},\n * \t\t\t\ttoolbar: [ 'paragraph', 'heading1', 'heading2', 'heading3' ]\n *\t\t\t} )\n *\t\t\t.then( ... )\n *\t\t\t.catch( ... );\n *\n * NOTE: The `'paragraph'` button is defined in by the {@link module:paragraph/paragraphbuttonui~ParagraphButtonUI} plugin\n * which needs to be loaded manually as well.\n *\n * It is possible to use custom icons by providing `icon` config option in {@link module:heading/heading~HeadingOption}.\n * For the default configuration standard icons are used.\n *\n * @extends module:core/plugin~Plugin\n */\nexport default class HeadingButtonsUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tinit() {\n\t\tconst options = getLocalizedOptions( this.editor );\n\n\t\toptions\n\t\t\t.filter( item => item.model !== 'paragraph' )\n\t\t\t.map( item => this._createButton( item ) );\n\t}\n\n\t/**\n\t * Creates single button view from provided configuration option.\n\t *\n\t * @private\n\t * @param {Object} option\n\t */\n\t_createButton( option ) {\n\t\tconst editor = this.editor;\n\n\t\teditor.ui.componentFactory.add( option.model, locale => {\n\t\t\tconst view = new ButtonView( locale );\n\t\t\tconst command = editor.commands.get( 'heading' );\n\n\t\t\tview.label = option.title;\n\t\t\tview.icon = option.icon || defaultIcons[ option.model ];\n\t\t\tview.tooltip = true;\n\t\t\tview.isToggleable = true;\n\t\t\tview.bind( 'isEnabled' ).to( command );\n\t\t\tview.bind( 'isOn' ).to( command, 'value', value => value == option.model );\n\n\t\t\tview.on( 'execute', () => {\n\t\t\t\teditor.execute( 'heading', { value: option.model } );\n\t\t\t\teditor.editing.view.focus();\n\t\t\t} );\n\n\t\t\treturn view;\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module heading/headingcommand\n */\n\nimport { Command } from 'ckeditor5/src/core';\nimport { first } from 'ckeditor5/src/utils';\n\n/**\n * The heading command. It is used by the {@link module:heading/heading~Heading heading feature} to apply headings.\n *\n * @extends module:core/command~Command\n */\nexport default class HeadingCommand extends Command {\n\t/**\n\t * Creates an instance of the command.\n\t *\n\t * @param {module:core/editor/editor~Editor} editor Editor instance.\n\t * @param {Array.<String>} modelElements Names of the element which this command can apply in the model.\n\t */\n\tconstructor( editor, modelElements ) {\n\t\tsuper( editor );\n\n\t\t/**\n\t\t * If the selection starts in a heading (which {@link #modelElements is supported by this command})\n\t\t * the value is set to the name of that heading model element.\n\t\t * It is set to `false` otherwise.\n\t\t *\n\t\t * @observable\n\t\t * @readonly\n\t\t * @member {Boolean|String} #value\n\t\t */\n\n\t\t/**\n\t\t * Set of defined model's elements names that this command support.\n\t\t * See {@link module:heading/heading~HeadingOption}.\n\t\t *\n\t\t * @readonly\n\t\t * @member {Array.<String>}\n\t\t */\n\t\tthis.modelElements = modelElements;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\trefresh() {\n\t\tconst block = first( this.editor.model.document.selection.getSelectedBlocks() );\n\n\t\tthis.value = !!block && this.modelElements.includes( block.name ) && block.name;\n\t\tthis.isEnabled = !!block && this.modelElements.some( heading => checkCanBecomeHeading( block, heading, this.editor.model.schema ) );\n\t}\n\n\t/**\n\t * Executes the command. Applies the heading to the selected blocks or, if the first selected\n\t * block is a heading already, turns selected headings (of this level only) to paragraphs.\n\t *\n\t * @param {Object} options\n\t * @param {String} options.value Name of the element which this command will apply in the model.\n\t * @fires execute\n\t */\n\texecute( options ) {\n\t\tconst model = this.editor.model;\n\t\tconst document = model.document;\n\n\t\tconst modelElement = options.value;\n\n\t\tmodel.change( writer => {\n\t\t\tconst blocks = Array.from( document.selection.getSelectedBlocks() )\n\t\t\t\t.filter( block => {\n\t\t\t\t\treturn checkCanBecomeHeading( block, modelElement, model.schema );\n\t\t\t\t} );\n\n\t\t\tfor ( const block of blocks ) {\n\t\t\t\tif ( !block.is( 'element', modelElement ) ) {\n\t\t\t\t\twriter.rename( block, modelElement );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n}\n\n// Checks whether the given block can be replaced by a specific heading.\n//\n// @private\n// @param {module:engine/model/element~Element} block A block to be tested.\n// @param {module:heading/headingcommand~HeadingCommand#modelElement} heading Command element name in the model.\n// @param {module:engine/model/schema~Schema} schema The schema of the document.\n// @returns {Boolean}\nfunction checkCanBecomeHeading( block, heading, schema ) {\n\treturn schema.checkChild( block.parent, heading ) && !schema.isObject( block );\n}\n","/**\n * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module heading/headingediting\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport { Paragraph } from 'ckeditor5/src/paragraph';\nimport { priorities } from 'ckeditor5/src/utils';\n\nimport HeadingCommand from './headingcommand';\n\nconst defaultModelElement = 'paragraph';\n\n/**\n * The headings engine feature. It handles switching between block formats – headings and paragraph.\n * This class represents the engine part of the heading feature. See also {@link module:heading/heading~Heading}.\n * It introduces `heading1`-`headingN` commands which allow to convert paragraphs into headings.\n *\n * @extends module:core/plugin~Plugin\n */\nexport default class HeadingEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tstatic get pluginName() {\n\t\treturn 'HeadingEditing';\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor ) {\n\t\tsuper( editor );\n\n\t\teditor.config.define( 'heading', {\n\t\t\toptions: [\n\t\t\t\t{ model: 'paragraph', title: 'Paragraph', class: 'ck-heading_paragraph' },\n\t\t\t\t{ model: 'heading1', view: 'h2', title: 'Heading 1', class: 'ck-heading_heading1' },\n\t\t\t\t{ model: 'heading2', view: 'h3', title: 'Heading 2', class: 'ck-heading_heading2' },\n\t\t\t\t{ model: 'heading3', view: 'h4', title: 'Heading 3', class: 'ck-heading_heading3' }\n\t\t\t]\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tstatic get requires() {\n\t\treturn [ Paragraph ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst options = editor.config.get( 'heading.options' );\n\n\t\tconst modelElements = [];\n\n\t\tfor ( const option of options ) {\n\t\t\t// Skip paragraph - it is defined in required Paragraph feature.\n\t\t\tif ( option.model !== defaultModelElement ) {\n\t\t\t\t// Schema.\n\t\t\t\teditor.model.schema.register( option.model, {\n\t\t\t\t\tinheritAllFrom: '$block'\n\t\t\t\t} );\n\n\t\t\t\teditor.conversion.elementToElement( option );\n\n\t\t\t\tmodelElements.push( option.model );\n\t\t\t}\n\t\t}\n\n\t\tthis._addDefaultH1Conversion( editor );\n\n\t\t// Register the heading command for this option.\n\t\teditor.commands.add( 'heading', new HeadingCommand( editor, modelElements ) );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tafterInit() {\n\t\t// If the enter command is added to the editor, alter its behavior.\n\t\t// Enter at the end of a heading element should create a paragraph.\n\t\tconst editor = this.editor;\n\t\tconst enterCommand = editor.commands.get( 'enter' );\n\t\tconst options = editor.config.get( 'heading.options' );\n\n\t\tif ( enterCommand ) {\n\t\t\tthis.listenTo( enterCommand, 'afterExecute', ( evt, data ) => {\n\t\t\t\tconst positionParent = editor.model.document.selection.getFirstPosition().parent;\n\t\t\t\tconst isHeading = options.some( option => positionParent.is( 'element', option.model ) );\n\n\t\t\t\tif ( isHeading && !positionParent.is( 'element', defaultModelElement ) && positionParent.childCount === 0 ) {\n\t\t\t\t\tdata.writer.rename( positionParent, defaultModelElement );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t}\n\n\t/**\n\t * Adds default conversion for `h1` -> `heading1` with a low priority.\n\t *\n\t * @private\n\t * @param {module:core/editor/editor~Editor} editor Editor instance on which to add the `h1` conversion.\n\t */\n\t_addDefaultH1Conversion( editor ) {\n\t\teditor.conversion.for( 'upcast' ).elementToElement( {\n\t\t\tmodel: 'heading1',\n\t\t\tview: 'h1',\n\t\t\t// With a `low` priority, `paragraph` plugin autoparagraphing mechanism is executed. Make sure\n\t\t\t// this listener is called before it. If not, `h1` will be transformed into a paragraph.\n\t\t\tconverterPriority: priorities.get( 'low' ) + 1\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module heading/headingui\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport { Model, createDropdown, addListToDropdown } from 'ckeditor5/src/ui';\nimport { Collection } from 'ckeditor5/src/utils';\n\nimport { getLocalizedOptions } from './utils';\n\nimport '../theme/heading.css';\n\n/**\n * The headings UI feature. It introduces the `headings` dropdown.\n *\n * @extends module:core/plugin~Plugin\n */\nexport default class HeadingUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tstatic get pluginName() {\n\t\treturn 'HeadingUI';\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst options = getLocalizedOptions( editor );\n\t\tconst defaultTitle = t( 'Choose heading' );\n\t\tconst dropdownTooltip = t( 'Heading' );\n\n\t\t// Register UI component.\n\t\teditor.ui.componentFactory.add( 'heading', locale => {\n\t\t\tconst titles = {};\n\t\t\tconst itemDefinitions = new Collection();\n\n\t\t\tconst headingCommand = editor.commands.get( 'heading' );\n\t\t\tconst paragraphCommand = editor.commands.get( 'paragraph' );\n\n\t\t\tconst commands = [ headingCommand ];\n\n\t\t\tfor ( const option of options ) {\n\t\t\t\tconst def = {\n\t\t\t\t\ttype: 'button',\n\t\t\t\t\tmodel: new Model( {\n\t\t\t\t\t\tlabel: option.title,\n\t\t\t\t\t\tclass: option.class,\n\t\t\t\t\t\twithText: true\n\t\t\t\t\t} )\n\t\t\t\t};\n\n\t\t\t\tif ( option.model === 'paragraph' ) {\n\t\t\t\t\tdef.model.bind( 'isOn' ).to( paragraphCommand, 'value' );\n\t\t\t\t\tdef.model.set( 'commandName', 'paragraph' );\n\t\t\t\t\tcommands.push( paragraphCommand );\n\t\t\t\t} else {\n\t\t\t\t\tdef.model.bind( 'isOn' ).to( headingCommand, 'value', value => value === option.model );\n\t\t\t\t\tdef.model.set( {\n\t\t\t\t\t\tcommandName: 'heading',\n\t\t\t\t\t\tcommandValue: option.model\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t// Add the option to the collection.\n\t\t\t\titemDefinitions.add( def );\n\n\t\t\t\ttitles[ option.model ] = option.title;\n\t\t\t}\n\n\t\t\tconst dropdownView = createDropdown( locale );\n\t\t\taddListToDropdown( dropdownView, itemDefinitions );\n\n\t\t\tdropdownView.buttonView.set( {\n\t\t\t\tisOn: false,\n\t\t\t\twithText: true,\n\t\t\t\ttooltip: dropdownTooltip\n\t\t\t} );\n\n\t\t\tdropdownView.extendTemplate( {\n\t\t\t\tattributes: {\n\t\t\t\t\tclass: [\n\t\t\t\t\t\t'ck-heading-dropdown'\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tdropdownView.bind( 'isEnabled' ).toMany( commands, 'isEnabled', ( ...areEnabled ) => {\n\t\t\t\treturn areEnabled.some( isEnabled => isEnabled );\n\t\t\t} );\n\n\t\t\tdropdownView.buttonView.bind( 'label' ).to( headingCommand, 'value', paragraphCommand, 'value', ( value, para ) => {\n\t\t\t\tconst whichModel = value || para && 'paragraph';\n\t\t\t\t// If none of the commands is active, display default title.\n\t\t\t\treturn titles[ whichModel ] ? titles[ whichModel ] : defaultTitle;\n\t\t\t} );\n\n\t\t\t// Execute command when an item from the dropdown is selected.\n\t\t\tthis.listenTo( dropdownView, 'execute', evt => {\n\t\t\t\teditor.execute( evt.source.commandName, evt.source.commandValue ? { value: evt.source.commandValue } : undefined );\n\t\t\t\teditor.editing.view.focus();\n\t\t\t} );\n\n\t\t\treturn dropdownView;\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module heading/title\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\n\nimport { first } from 'ckeditor5/src/utils';\nimport {\n\tDowncastWriter,\n\tneedsPlaceholder,\n\tshowPlaceholder,\n\thidePlaceholder,\n\tenablePlaceholder\n} from 'ckeditor5/src/engine';\n\n// A list of element names that should be treated by the Title plugin as title-like.\n// This means that an element of a type from this list will be changed to a title element\n// when it is the first element in the root.\nconst titleLikeElements = new Set( [ 'paragraph', 'heading1', 'heading2', 'heading3', 'heading4', 'heading5', 'heading6' ] );\n\n/**\n * The Title plugin.\n *\n * It splits the document into `Title` and `Body` sections.\n *\n * @extends module:core/plugin~Plugin\n */\nexport default class Title extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tstatic get pluginName() {\n\t\treturn 'Title';\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tstatic get requires() {\n\t\treturn [ 'Paragraph' ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\n\t\t/**\n\t\t * A reference to an empty paragraph in the body\n\t\t * created when there is no element in the body for the placeholder purposes.\n\t\t *\n\t\t * @private\n\t\t * @type {null|module:engine/model/element~Element}\n\t\t */\n\t\tthis._bodyPlaceholder = null;\n\n\t\t// To use the schema for disabling some features when the selection is inside the title element\n\t\t// it is needed to create the following structure:\n\t\t//\n\t\t// <title>\n\t\t// <title-content>The title text</title-content>\n\t\t// </title>\n\t\t//\n\t\t// See: https://github.com/ckeditor/ckeditor5/issues/2005.\n\t\tmodel.schema.register( 'title', { isBlock: true, allowIn: '$root' } );\n\t\tmodel.schema.register( 'title-content', { isBlock: true, allowIn: 'title', allowAttributes: [ 'alignment' ] } );\n\t\tmodel.schema.extend( '$text', { allowIn: 'title-content' } );\n\n\t\t// Disallow all attributes in `title-content`.\n\t\tmodel.schema.addAttributeCheck( context => {\n\t\t\tif ( context.endsWith( 'title-content $text' ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} );\n\n\t\t// Because `title` is represented by two elements in the model\n\t\t// but only one in the view, it is needed to adjust Mapper.\n\t\teditor.editing.mapper.on( 'modelToViewPosition', mapModelPositionToView( editor.editing.view ) );\n\t\teditor.data.mapper.on( 'modelToViewPosition', mapModelPositionToView( editor.editing.view ) );\n\n\t\t// Conversion.\n\t\teditor.conversion.for( 'downcast' ).elementToElement( { model: 'title-content', view: 'h1' } );\n\t\t// Custom converter is used for data v -> m conversion to avoid calling post-fixer when setting data.\n\t\t// See https://github.com/ckeditor/ckeditor5/issues/2036.\n\t\teditor.data.upcastDispatcher.on( 'element:h1', dataViewModelH1Insertion, { priority: 'high' } );\n\t\teditor.data.upcastDispatcher.on( 'element:h2', dataViewModelH1Insertion, { priority: 'high' } );\n\t\teditor.data.upcastDispatcher.on( 'element:h3', dataViewModelH1Insertion, { priority: 'high' } );\n\n\t\t// Take care about correct `title` element structure.\n\t\tmodel.document.registerPostFixer( writer => this._fixTitleContent( writer ) );\n\n\t\t// Create and take care of correct position of a `title` element.\n\t\tmodel.document.registerPostFixer( writer => this._fixTitleElement( writer ) );\n\n\t\t// Create element for `Body` placeholder if it is missing.\n\t\tmodel.document.registerPostFixer( writer => this._fixBodyElement( writer ) );\n\n\t\t// Prevent from adding extra at the end of the document.\n\t\tmodel.document.registerPostFixer( writer => this._fixExtraParagraph( writer ) );\n\n\t\t// Attach `Title` and `Body` placeholders to the empty title and/or content.\n\t\tthis._attachPlaceholders();\n\n\t\t// Attach Tab handling.\n\t\tthis._attachTabPressHandling();\n\t}\n\n\t/**\n\t * Returns the title of the document. Note that because this plugin does not allow any formatting inside\n\t * the title element, the output of this method will be a plain text, with no HTML tags.\n\t *\n\t * It is not recommended to use this method together with features that insert markers to the\n\t * data output, like comments or track changes features. If such markers start in the title and end in the\n\t * body, the result of this method might be incorrect.\n\t *\n\t * @param {Object} [options] Additional configuration passed to the conversion process.\n\t * See {@link module:engine/controller/datacontroller~DataController#get `DataController#get`}.\n\t * @returns {String} The title of the document.\n\t */\n\tgetTitle( options = {} ) {\n\t\tconst titleElement = this._getTitleElement();\n\t\tconst titleContentElement = titleElement.getChild( 0 );\n\n\t\treturn this.editor.data.stringify( titleContentElement, options );\n\t}\n\n\t/**\n\t * Returns the body of the document.\n\t *\n\t * Note that it is not recommended to use this method together with features that insert markers to the\n\t * data output, like comments or track changes features. If such markers start in the title and end in the\n\t * body, the result of this method might be incorrect.\n\t *\n\t * @param {Object} [options] Additional configuration passed to the conversion process.\n\t * See {@link module:engine/controller/datacontroller~DataController#get `DataController#get`}.\n\t * @returns {String} The body of the document.\n\t */\n\tgetBody( options = {} ) {\n\t\tconst editor = this.editor;\n\t\tconst data = editor.data;\n\t\tconst model = editor.model;\n\t\tconst root = editor.model.document.getRoot();\n\t\tconst view = editor.editing.view;\n\t\tconst viewWriter = new DowncastWriter( view.document );\n\n\t\tconst rootRange = model.createRangeIn( root );\n\t\tconst viewDocumentFragment = viewWriter.createDocumentFragment();\n\n\t\tdata.downcastDispatcher.conversionApi.options = options;\n\n\t\t// Convert the entire root to view.\n\t\tdata.mapper.clearBindings();\n\t\tdata.mapper.bindElements( root, viewDocumentFragment );\n\t\tdata.downcastDispatcher.convertInsert( rootRange, viewWriter );\n\n\t\t// Convert all markers that intersects with body.\n\t\tconst bodyStartPosition = model.createPositionAfter( root.getChild( 0 ) );\n\t\tconst bodyRange = model.createRange( bodyStartPosition, model.createPositionAt( root, 'end' ) );\n\n\t\tfor ( const marker of model.markers ) {\n\t\t\tconst intersection = bodyRange.getIntersection( marker.getRange() );\n\n\t\t\tif ( intersection ) {\n\t\t\t\tdata.downcastDispatcher.convertMarkerAdd( marker.name, intersection, viewWriter );\n\t\t\t}\n\t\t}\n\n\t\t// Clean `conversionApi`.\n\t\tdelete data.downcastDispatcher.conversionApi.options;\n\n\t\t// Remove title element from view.\n\t\tviewWriter.remove( viewWriter.createRangeOn( viewDocumentFragment.getChild( 0 ) ) );\n\n\t\t// view -> data\n\t\treturn editor.data.processor.toData( viewDocumentFragment );\n\t}\n\n\t/**\n\t * Returns the `title` element when it is in the document. Returns `undefined` otherwise.\n\t *\n\t * @private\n\t * @returns {module:engine/model/element~Element|undefined}\n\t */\n\t_getTitleElement() {\n\t\tconst root = this.editor.model.document.getRoot();\n\n\t\tfor ( const child of root.getChildren() ) {\n\t\t\tif ( isTitle( child ) ) {\n\t\t\t\treturn child;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Model post-fixer callback that ensures that `title` has only one `title-content` child.\n\t * All additional children should be moved after the `title` element and renamed to a paragraph.\n\t *\n\t * @private\n\t * @param {module:engine/model/writer~Writer} writer\n\t * @returns {Boolean}\n\t */\n\t_fixTitleContent( writer ) {\n\t\tconst title = this._getTitleElement();\n\n\t\t// There's no title in the content - it will be created by _fixTitleElement post-fixer.\n\t\tif ( !title || title.maxOffset === 1 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst titleChildren = Array.from( title.getChildren() );\n\n\t\t// Skip first child because it is an allowed element.\n\t\ttitleChildren.shift();\n\n\t\tfor ( const titleChild of titleChildren ) {\n\t\t\twriter.move( writer.createRangeOn( titleChild ), title, 'after' );\n\t\t\twriter.rename( titleChild, 'paragraph' );\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Model post-fixer callback that creates a title element when it is missing,\n\t * takes care of the correct position of it and removes additional title elements.\n\t *\n\t * @private\n\t * @param {module:engine/model/writer~Writer} writer\n\t * @returns {Boolean}\n\t */\n\t_fixTitleElement( writer ) {\n\t\tconst model = this.editor.model;\n\t\tconst modelRoot = model.document.getRoot();\n\n\t\tconst titleElements = Array.from( modelRoot.getChildren() ).filter( isTitle );\n\t\tconst firstTitleElement = titleElements[ 0 ];\n\t\tconst firstRootChild = modelRoot.getChild( 0 );\n\n\t\t// When title element is at the beginning of the document then try to fix additional\n\t\t// title elements (if there are any) and stop post-fixer as soon as possible.\n\t\tif ( firstRootChild.is( 'element', 'title' ) ) {\n\t\t\treturn fixAdditionalTitleElements( titleElements, writer, model );\n\t\t}\n\n\t\t// When there is no title in the document and first element in the document cannot be changed\n\t\t// to the title then create an empty title element at the beginning of the document.\n\t\tif ( !firstTitleElement && !titleLikeElements.has( firstRootChild.name ) ) {\n\t\t\tconst title = writer.createElement( 'title' );\n\n\t\t\twriter.insert( title, modelRoot );\n\t\t\twriter.insertElement( 'title-content', title );\n\n\t\t\treturn true;\n\t\t}\n\n\t\t// At this stage, we are sure the title is somewhere in the content. It has to be fixed.\n\n\t\t// Change the first element in the document to the title if it can be changed (is title-like).\n\t\tif ( titleLikeElements.has( firstRootChild.name ) ) {\n\t\t\tchangeElementToTitle( firstRootChild, writer, model );\n\t\t// Otherwise, move the first occurrence of the title element to the beginning of the document.\n\t\t} else {\n\t\t\twriter.move( writer.createRangeOn( firstTitleElement ), modelRoot, 0 );\n\t\t}\n\n\t\tfixAdditionalTitleElements( titleElements, writer, model );\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Model post-fixer callback that adds an empty paragraph at the end of the document\n\t * when it is needed for the placeholder purposes.\n\t *\n\t * @private\n\t * @param {module:engine/model/writer~Writer} writer\n\t * @returns {Boolean}\n\t */\n\t_fixBodyElement( writer ) {\n\t\tconst modelRoot = this.editor.model.document.getRoot();\n\n\t\tif ( modelRoot.childCount < 2 ) {\n\t\t\tthis._bodyPlaceholder = writer.createElement( 'paragraph' );\n\t\t\twriter.insert( this._bodyPlaceholder, modelRoot, 1 );\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Model post-fixer callback that removes a paragraph from the end of the document\n\t * if it was created for the placeholder purposes and is not needed anymore.\n\t *\n\t * @private\n\t * @param {module:engine/model/writer~Writer} writer\n\t * @returns {Boolean}\n\t */\n\t_fixExtraParagraph( writer ) {\n\t\tconst root = this.editor.model.document.getRoot();\n\t\tconst placeholder = this._bodyPlaceholder;\n\n\t\tif ( shouldRemoveLastParagraph( placeholder, root ) ) {\n\t\t\tthis._bodyPlaceholder = null;\n\t\t\twriter.remove( placeholder );\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Attaches the `Title` and `Body` placeholders to the title and/or content.\n\t *\n\t * @private\n\t */\n\t_attachPlaceholders() {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst view = editor.editing.view;\n\t\tconst viewRoot = view.document.getRoot();\n\t\tconst sourceElement = editor.sourceElement;\n\n\t\tconst titlePlaceholder = editor.config.get( 'title.placeholder' ) || t( 'Type your title' );\n\t\tconst bodyPlaceholder = editor.config.get( 'placeholder' ) ||\n\t\t\tsourceElement && sourceElement.tagName.toLowerCase() === 'textarea' && sourceElement.getAttribute( 'placeholder' ) ||\n\t\t\tt( 'Type or paste your content here.' );\n\n\t\t// Attach placeholder to the view title element.\n\t\teditor.editing.downcastDispatcher.on( 'insert:title-content', ( evt, data, conversionApi ) => {\n\t\t\tenablePlaceholder( {\n\t\t\t\tview,\n\t\t\t\telement: conversionApi.mapper.toViewElement( data.item ),\n\t\t\t\ttext: titlePlaceholder,\n\t\t\t\tkeepOnFocus: true\n\t\t\t} );\n\t\t} );\n\n\t\t// Attach placeholder to first element after a title element and remove it if it's not needed anymore.\n\t\t// First element after title can change so we need to observe all changes keep placeholder in sync.\n\t\tlet oldBody;\n\n\t\t// This post-fixer runs after the model post-fixer so we can assume that\n\t\t// the second child in view root will always exist.\n\t\tview.document.registerPostFixer( writer => {\n\t\t\tconst body = viewRoot.getChild( 1 );\n\t\t\tlet hasChanged = false;\n\n\t\t\t// If body element has changed we need to disable placeholder on the previous element\n\t\t\t// and enable on the new one.\n\t\t\tif ( body !== oldBody ) {\n\t\t\t\tif ( oldBody ) {\n\t\t\t\t\thidePlaceholder( writer, oldBody );\n\t\t\t\t\twriter.removeAttribute( 'data-placeholder', oldBody );\n\t\t\t\t}\n\n\t\t\t\twriter.setAttribute( 'data-placeholder', bodyPlaceholder, body );\n\t\t\t\toldBody = body;\n\t\t\t\thasChanged = true;\n\t\t\t}\n\n\t\t\t// Then we need to display placeholder if it is needed.\n\t\t\t// See: https://github.com/ckeditor/ckeditor5/issues/8689.\n\t\t\tif ( needsPlaceholder( body, true ) && viewRoot.childCount === 2 && body.name === 'p' ) {\n\t\t\t\thasChanged = showPlaceholder( writer, body ) ? true : hasChanged;\n\t\t\t// Or hide if it is not needed.\n\t\t\t} else {\n\t\t\t\thasChanged = hidePlaceholder( writer, body ) ? true : hasChanged;\n\t\t\t}\n\n\t\t\treturn hasChanged;\n\t\t} );\n\t}\n\n\t/**\n\t * Creates navigation between the title and body sections using <kbd>Tab</kbd> and <kbd>Shift</kbd>+<kbd>Tab</kbd> keys.\n\t *\n\t * @private\n\t */\n\t_attachTabPressHandling() {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\n\t\t// Pressing <kbd>Tab</kbd> inside the title should move the caret to the body.\n\t\teditor.keystrokes.set( 'TAB', ( data, cancel ) => {\n\t\t\tmodel.change( writer => {\n\t\t\t\tconst selection = model.document.selection;\n\t\t\t\tconst selectedElements = Array.from( selection.getSelectedBlocks() );\n\n\t\t\t\tif ( selectedElements.length === 1 && selectedElements[ 0 ].is( 'element', 'title-content' ) ) {\n\t\t\t\t\tconst firstBodyElement = model.document.getRoot().getChild( 1 );\n\t\t\t\t\twriter.setSelection( firstBodyElement, 0 );\n\t\t\t\t\tcancel();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\n\t\t// Pressing <kbd>Shift</kbd>+<kbd>Tab</kbd> at the beginning of the body should move the caret to the title.\n\t\teditor.keystrokes.set( 'SHIFT + TAB', ( data, cancel ) => {\n\t\t\tmodel.change( writer => {\n\t\t\t\tconst selection = model.document.selection;\n\n\t\t\t\tif ( !selection.isCollapsed ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst root = editor.model.document.getRoot();\n\t\t\t\tconst selectedElement = first( selection.getSelectedBlocks() );\n\t\t\t\tconst selectionPosition = selection.getFirstPosition();\n\n\t\t\t\tconst title = root.getChild( 0 );\n\t\t\t\tconst body = root.getChild( 1 );\n\n\t\t\t\tif ( selectedElement === body && selectionPosition.isAtStart ) {\n\t\t\t\t\twriter.setSelection( title.getChild( 0 ), 0 );\n\t\t\t\t\tcancel();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n}\n\n// A view-to-model converter for the h1 that appears at the beginning of the document (a title element).\n//\n// @see module:engine/conversion/upcastdispatcher~UpcastDispatcher#event:element\n// @param {module:utils/eventinfo~EventInfo} evt An object containing information about the fired event.\n// @param {Object} data An object containing conversion input, a placeholder for conversion output and possibly other values.\n// @param {module:engine/conversion/upcastdispatcher~UpcastConversionApi} conversionApi Conversion interface to be used by the callback.\nfunction dataViewModelH1Insertion( evt, data, conversionApi ) {\n\tconst modelCursor = data.modelCursor;\n\tconst viewItem = data.viewItem;\n\n\tif ( !modelCursor.isAtStart || !modelCursor.parent.is( 'element', '$root' ) ) {\n\t\treturn;\n\t}\n\n\tif ( !conversionApi.consumable.consume( viewItem, { name: true } ) ) {\n\t\treturn;\n\t}\n\n\tconst modelWriter = conversionApi.writer;\n\n\tconst title = modelWriter.createElement( 'title' );\n\tconst titleContent = modelWriter.createElement( 'title-content' );\n\n\tmodelWriter.append( titleContent, title );\n\tmodelWriter.insert( title, modelCursor );\n\n\tconversionApi.convertChildren( viewItem, titleContent );\n\n\tconversionApi.updateConversionResult( title, data );\n}\n\n// Maps position from the beginning of the model `title` element to the beginning of the view `h1` element.\n//\n// <title>^<title-content>Foo</title-content></title> -> <h1>^Foo</h1>\n//\n// @param {module:editor/view/view~View} editingView\nfunction mapModelPositionToView( editingView ) {\n\treturn ( evt, data ) => {\n\t\tconst positionParent = data.modelPosition.parent;\n\n\t\tif ( !positionParent.is( 'element', 'title' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst modelTitleElement = positionParent.parent;\n\t\tconst viewElement = data.mapper.toViewElement( modelTitleElement );\n\n\t\tdata.viewPosition = editingView.createPositionAt( viewElement, 0 );\n\t\tevt.stop();\n\t};\n}\n\n// Returns true when given element is a title. Returns false otherwise.\n//\n// @param {module:engine/model/element~Element} element\n// @returns {Boolean}\nfunction isTitle( element ) {\n\treturn element.is( 'element', 'title' );\n}\n\n// Changes the given element to the title element.\n//\n// @param {module:engine/model/element~Element} element\n// @param {module:engine/model/writer~Writer} writer\n// @param {module:engine/model/model~Model} model\nfunction changeElementToTitle( element, writer, model ) {\n\tconst title = writer.createElement( 'title' );\n\n\twriter.insert( title, element, 'before' );\n\twriter.insert( element, title, 0 );\n\twriter.rename( element, 'title-content' );\n\tmodel.schema.removeDisallowedAttributes( [ element ], writer );\n}\n\n// Loops over the list of title elements and fixes additional ones.\n//\n// @param {Array.<module:engine/model/element~Element>} titleElements\n// @param {module:engine/model/writer~Writer} writer\n// @param {module:engine/model/model~Model} model\n// @returns {Boolean} Returns true when there was any change. Returns false otherwise.\nfunction fixAdditionalTitleElements( titleElements, writer, model ) {\n\tlet hasChanged = false;\n\n\tfor ( const title of titleElements ) {\n\t\tif ( title.index !== 0 ) {\n\t\t\tfixTitleElement( title, writer, model );\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\n\treturn hasChanged;\n}\n\n// Changes given title element to a paragraph or removes it when it is empty.\n//\n// @param {module:engine/model/element~Element} title\n// @param {module:engine/model/writer~Writer} writer\n// @param {module:engine/model/model~Model} model\nfunction fixTitleElement( title, writer, model ) {\n\tconst child = title.getChild( 0 );\n\n\t// Empty title should be removed.\n\t// It is created as a result of pasting to the title element.\n\tif ( child.isEmpty ) {\n\t\twriter.remove( title );\n\n\t\treturn;\n\t}\n\n\twriter.move( writer.createRangeOn( child ), title, 'before' );\n\twriter.rename( child, 'paragraph' );\n\twriter.remove( title );\n\tmodel.schema.removeDisallowedAttributes( [ child ], writer );\n}\n\n// Returns true when the last paragraph in the document was created only for the placeholder\n// purpose and it's not needed anymore. Returns false otherwise.\n//\n// @param {module:engine/model/rootelement~RootElement} root\n// @param {module:engine/model/element~Element} placeholder\n// @returns {Boolean}\nfunction shouldRemoveLastParagraph( placeholder, root ) {\n\tif ( !placeholder || !placeholder.is( 'element', 'paragraph' ) || placeholder.childCount ) {\n\t\treturn false;\n\t}\n\n\tif ( root.childCount <= 2 || root.getChild( root.childCount - 1 ) !== placeholder ) {\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\n/**\n * The configuration of the {@link module:heading/title~Title title feature}.\n *\n * Read more in {@link module:heading/title~TitleConfig}.\n *\n * @member {module:heading/title~TitleConfig} module:core/editor/editorconfig~EditorConfig#title\n */\n\n/**\n * The configuration of the {@link module:heading/title~Title title feature}.\n *\n *\t\tClassicEditor\n *\t\t\t.create( document.querySelector( '#editor' ), {\n *\t\t\t\tplugins: [ Title, ... ],\n *\t\t\t\ttitle: {\n *\t\t\t\t\tplaceholder: 'My custom placeholder for the title'\n *\t\t\t\t},\n *\t\t\t\tplaceholder: 'My custom placeholder for the body'\n *\t\t\t} )\n *\t\t\t.then( ... )\n *\t\t\t.catch( ... );\n *\n * See {@link module:core/editor/editorconfig~EditorConfig all editor configuration options}.\n *\n * @interface TitleConfig\n */\n\n/**\n * Defines a custom value of the placeholder for the title field.\n *\n * Read more in {@link module:heading/title~TitleConfig}.\n *\n * @member {String} module:heading/title~TitleConfig#placeholder\n */\n","/**\n * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module heading/utils\n */\n\n/**\n * Returns heading options as defined in `config.heading.options` but processed to consider\n * the editor localization, i.e. to display {@link module:heading/heading~HeadingOption}\n * in the correct language.\n *\n * Note: The reason behind this method is that there is no way to use {@link module:utils/locale~Locale#t}\n * when the user configuration is defined because the editor does not exist yet.\n *\n * @param {module:core/editor/editor~Editor} editor\n * @returns {Array.<module:heading/heading~HeadingOption>}.\n */\nexport function getLocalizedOptions( editor ) {\n\tconst t = editor.t;\n\tconst localizedTitles = {\n\t\tParagraph: t( 'Paragraph' ),\n\t\t'Heading 1': t( 'Heading 1' ),\n\t\t'Heading 2': t( 'Heading 2' ),\n\t\t'Heading 3': t( 'Heading 3' ),\n\t\t'Heading 4': t( 'Heading 4' ),\n\t\t'Heading 5': t( 'Heading 5' ),\n\t\t'Heading 6': t( 'Heading 6' )\n\t};\n\n\treturn editor.config.get( 'heading.options' ).map( option => {\n\t\tconst title = localizedTitles[ option.title ];\n\n\t\tif ( title && title != option.title ) {\n\t\t\toption.title = title;\n\t\t}\n\n\t\treturn option;\n\t} );\n}\n","module.exports = (__webpack_require__(/*! dll-reference CKEditor5.dll */ \"dll-reference CKEditor5.dll\"))(\"./src/core.js\");","module.exports = (__webpack_require__(/*! dll-reference CKEditor5.dll */ \"dll-reference CKEditor5.dll\"))(\"./src/engine.js\");","module.exports = (__webpack_require__(/*! dll-reference CKEditor5.dll */ \"dll-reference CKEditor5.dll\"))(\"./src/paragraph.js\");","module.exports = (__webpack_require__(/*! dll-reference CKEditor5.dll */ \"dll-reference CKEditor5.dll\"))(\"./src/ui.js\");","module.exports = (__webpack_require__(/*! dll-reference CKEditor5.dll */ \"dll-reference CKEditor5.dll\"))(\"./src/utils.js\");","module.exports = CKEditor5.dll;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module heading\n */\n\nexport { default as Heading } from './heading';\nexport { default as HeadingEditing } from './headingediting';\nexport { default as HeadingUI } from './headingui';\nexport { default as HeadingButtonsUI } from './headingbuttonsui';\nexport { default as Title } from './title';\n"],"sourceRoot":""}