1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4607],{9556:(e,t,i)=>{i.d(t,{zT:()=>j});var s=i(76936),o=i(76564),n=i(34396),r=i(65669),l=i(50451),a=i(18045),c=i(7614),d=i(44400);function h(e){let t=function(){try{return document.createElement("canvas").getContext("2d",{willReadFrequently:!0})}catch{return null}}();if(!t)return!1;t.font=Math.floor(12.5)+"px Arial, Sans-Serif",t.textBaseline="top",t.canvas.width=40,t.canvas.height=25,t.clearRect(0,0,40,25),t.fillStyle="#FF0000",t.fillText(e,0,22),t.fillStyle="#0000FF",t.fillText(e,20,22);let i=t.getImageData(0,0,20,25).data,s=i.length,o=0;for(;o<s&&!i[o+3];o+=4);if(o>=s)return!1;let n=20+o/4%20,r=Math.floor(o/4/20),l=t.getImageData(n,r,1,1).data;return i[o]===l[0]&&i[o+2]===l[2]&&!(t.measureText(e).width>=20)}let u={0:"default",1:"light",2:"medium-light",3:"medium",4:"medium-dark",5:"dark"},m={"\uD83E\uDEE9":16,"\uD83E\uDEE8":15.1,"\uD83E\uDEE0":14,"\uD83D\uDE36â\uD83C\uDF2Bï¸":13.1,"\uD83E\uDDD1â\uD83D\uDCBB":12.1,"\uD83E\uDD70":11,"\uD83E\uDD2A":5,"âï¸":4,"\uD83E\uDD23":3,"\uD83D\uDC4B\uD83C\uDFFD":2,"\uD83D\uDE00":1,"\uD83D\uDE10":.7,"\uD83D\uDE02":.6};class g extends s.k_{_emojiCanvas=null;static get pluginName(){return"EmojiUtils"}static get isOfficialPlugin(){return!0}init(){this._emojiCanvas=document.createElement("canvas").getContext("2d")}isEmojiSupported(e,t,i){return e.version<=t&&(!this.hasZwj(e.emoji)||this.isEmojiZwjSupported(e,i))}getEmojiSupportedVersionByOs(){for(let[e,t]of Object.entries(m))if(g._isEmojiSupported(e))return t;return 0}hasZwj(e){return e.includes("â")}isEmojiZwjSupported(e,t){return 43.2>this.getNodeWidthUsingCanvas(t,e.emoji)||43.2>this.getNodeWidth(t,e.emoji)}getNodeWidth(e,t){let i=document.createElement("span");i.textContent=t,e.appendChild(i);let s=i.offsetWidth;return e.removeChild(i),s}getNodeWidthUsingCanvas(e,t){let i=getComputedStyle(e);return this._emojiCanvas.font=[i.fontStyle,i.fontVariant,i.fontWeight,"24px",`"Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", ${i.fontFamily}`].join(" "),Math.ceil(this._emojiCanvas.measureText(t).width)}createEmojiWidthTestingContainer(){let e=document.createElement("div");return e.setAttribute("aria-hidden","true"),e.style.position="absolute",e.style.left="-9999px",e.style.whiteSpace="nowrap",e.style.fontSize="24px",e}normalizeEmojiSkinTone(e){let t={...e,skins:{default:e.emoji}};return e.skins&&e.skins.forEach(e=>{let i=u[e.tone];t.skins[i]=e.emoji}),t}isEmojiCategoryAllowed(e){return 2!==e.group}static _isEmojiSupported=h}class f extends s.k_{_items;_url;_repositoryPromise;static get requires(){return[g]}static get pluginName(){return"EmojiRepository"}static get isOfficialPlugin(){return!0}constructor(e){super(e),e.config.define("emoji",{version:void 0,skinTone:"default",definitionsUrl:void 0,useCustomFont:!1}),this._url=this._getUrl(),this._repositoryPromise=new Promise(e=>{this._repositoryPromiseResolveCallback=e}),this._items=null}async init(){return(this._warnAboutCdnUse(),await this._loadAndCacheEmoji(),this._items=this._getItems(),this._items)?this._repositoryPromiseResolveCallback(!0):((0,o.FF)("emoji-repository-empty"),this._repositoryPromiseResolveCallback(!1))}getEmojiByQuery(e){return this._items&&e.split(/\s/).filter(Boolean).some(e=>e.length>=2)?r.go(e,this._items,{threshold:.6,keys:["emoticon","annotation",t=>e.split(/\s/).filter(Boolean).flatMap(e=>t.tags?.filter(t=>t.startsWith(e))).join()]}).map(e=>e.obj):[]}getEmojiCategories(){let e=this._getItems();if(!e)return[];let{t}=this.editor.locale,i=[{title:t("Smileys & Expressions"),icon:"\uD83D\uDE04",groupId:0},{title:t("Gestures & People"),icon:"\uD83D\uDC4B",groupId:1},{title:t("Animals & Nature"),icon:"\uD83D\uDC3B",groupId:3},{title:t("Food & Drinks"),icon:"\uD83C\uDF4E",groupId:4},{title:t("Travel & Places"),icon:"\uD83D\uDE98",groupId:5},{title:t("Activities"),icon:"\uD83C\uDFC0",groupId:6},{title:t("Objects"),icon:"\uD83D\uDCA1",groupId:7},{title:t("Symbols"),icon:"\uD83D\uDD35",groupId:8},{title:t("Flags"),icon:"\uD83C\uDFC1",groupId:9}],s=(0,l.$)(e,e=>e.group);return i.map(e=>({...e,items:s[e.groupId]}))}
1getSkinTones(){let{t:e}=this.editor.locale;return[{id:"default",icon:"\uD83D\uDC4B",tooltip:e("Default skin tone")},{id:"light",icon:"\uD83D\uDC4B\uD83C\uDFFB",tooltip:e("Light skin tone")},{id:"medium-light",icon:"\uD83D\uDC4B\uD83C\uDFFC",tooltip:e("Medium Light skin tone")},{id:"medium",icon:"\uD83D\uDC4B\uD83C\uDFFD",tooltip:e("Medium skin tone")},{id:"medium-dark",icon:"\uD83D\uDC4B\uD83C\uDFFE",tooltip:e("Medium Dark skin tone")},{id:"dark",icon:"\uD83D\uDC4B\uD83C\uDFFF",tooltip:e("Dark skin tone")}]}isReady(){return this._repositoryPromise}_getUrl(){let{definitionsUrl:e,version:t}=this.editor.config.get("emoji");if(!e||"cdn"===e){let e=new URL("https://cdn.ckeditor.com/ckeditor5/data/emoji/{version}/en.json".replace("{version}",(t||16).toString()));return e.searchParams.set("editorVersion",o.rE),e}return t&&(0,o.FF)("emoji-repository-redundant-version"),new URL(e)}_warnAboutCdnUse(){let e=this.editor,t=e.config.get("emoji"),i=e.config.get("licenseKey"),s=window[Symbol.for("cke distribution")];"GPL"!==i&&"cloud"!==s&&(t&&t.definitionsUrl||(0,o.FF)("emoji-repository-cdn-use"))}_getItems(){let e=f._results[this._url.href];return e&&e.length?e:null}async _loadAndCacheEmoji(){if(f._results[this._url.href])return;let e=await fetch(this._url,{cache:"force-cache"}).then(e=>e.ok?e.json():[]).catch(()=>[]);f._results[this._url.href]=this._normalizeEmoji(e)}_normalizeEmoji(e){let t=this.editor,i=t.config.get("emoji.useCustomFont"),s=t.plugins.get("EmojiUtils"),o=e.filter(e=>s.isEmojiCategoryAllowed(e));if(i)return o.map(e=>s.normalizeEmojiSkinTone(e));let n=s.getEmojiSupportedVersionByOs(),r=s.createEmojiWidthTestingContainer();document.body.appendChild(r);let l=o.filter(e=>s.isEmojiSupported(e,n,r)).map(e=>s.normalizeEmojiSkinTone(e));return r.remove(),l}static _results={}}let p=":__EMOJI_SHOW_ALL:",w=":__EMOJI_HINT:";class k extends s.k_{_emojiDropdownLimit;_skinTone;static get requires(){return[f,n.IG,"Mention"]}static get pluginName(){return"EmojiMention"}static get isOfficialPlugin(){return!0}constructor(e){super(e),this.editor.config.define("emoji",{dropdownLimit:6}),this._emojiDropdownLimit=e.config.get("emoji.dropdownLimit"),this._skinTone=e.config.get("emoji.skinTone"),this._setupMentionConfiguration(e)}_setupMentionConfiguration(e){let t=e.config.get("mergeFields.prefix"),i=e.config.get("mention.feeds"),s=!!t&&":"===t[0];if(i.filter(e=>!e._isEmojiMarker).some(e=>":"===e.marker)||s)return void(0,o.FF)("emoji-config-marker-already-used",{marker:":"});if(i.some(e=>e._isEmojiMarker))return;let n={_isEmojiMarker:!0,marker:":",dropdownLimit:this._emojiDropdownLimit,itemRenderer:this._customItemRendererFactory(this.editor.t),feed:this._queryEmojiCallbackFactory()};this.editor.config.set("mention.feeds",[...i,n])}
1async init(){let e=this.editor;this.emojiPickerPlugin=e.plugins.has("EmojiPicker")?e.plugins.get("EmojiPicker"):null,this.emojiRepositoryPlugin=e.plugins.get("EmojiRepository"),this._isEmojiRepositoryAvailable=await this.emojiRepositoryPlugin.isReady(),this._isEmojiRepositoryAvailable&&e.once("ready",this._overrideMentionExecuteListener.bind(this))}_customItemRendererFactory(e){return t=>{let i=document.createElement("button");i.classList.add("ck"),i.classList.add("ck-button"),i.classList.add("ck-button_with-text"),i.id=`mention-list-item-id${t.id.slice(0,-1)}`,i.type="button",i.tabIndex=-1;let s=document.createElement("span");return s.classList.add("ck"),s.classList.add("ck-button__label"),i.appendChild(s),t.id===w?(i.classList.add("ck-list-item-button"),i.classList.add("ck-disabled"),s.textContent=e("Keep on typing to see the emoji.")):t.id===p?s.textContent=e("Show all emoji..."):s.textContent=`${t.text} ${t.id}`,i}}_overrideMentionExecuteListener(){let e=this.editor;e.commands.get("mention").on("execute",(t,i)=>{let s=i[0];if(":"===s.marker&&(t.stop(),s.mention.id!==w))if(s.mention.id===p){let t=[...s.range.getItems()].filter(e=>e.is("$textProxy")).map(e=>e.data).reduce((e,t)=>e+t,"");e.model.change(t=>{e.model.deleteContent(t.createSelection(s.range))});let i=this.emojiPickerPlugin;i.showUI(t.slice(1)),setTimeout(()=>{i.emojiPickerView.focus()})}else e.execute("insertText",{text:s.mention.text,range:s.range})},{priority:"high"})}_queryEmojiCallbackFactory(){return e=>{if(e.startsWith(" ")||e.startsWith(":")||!this._isEmojiRepositoryAvailable)return[];let t=this.emojiRepositoryPlugin.getEmojiByQuery(e).map(e=>{let t=e.skins[this._skinTone]||e.skins.default;return this.emojiPickerPlugin&&(t=e.skins[this.emojiPickerPlugin.skinTone]||e.skins.default),{id:`:${e.annotation}:`,text:t}});if(!this.emojiPickerPlugin)return t.slice(0,this._emojiDropdownLimit);let i={id:e.length>1?p:w};return[...t.slice(0,this._emojiDropdownLimit-1),i]}}}class b extends s.uB{refresh(){let e=this.editor.model,t=e.schema,i=e.document.selection;this.isEnabled=t.checkChild(i.getFirstPosition(),"$text")}execute(e=""){this.editor.plugins.get("EmojiPicker").showUI(e)}}class _ extends c.Ss{tiles;focusTracker;keystrokes;emojiCategories;cachedTiles;_getEmojiByQuery;constructor(e,{categoryName:t,emojiCategories:i,getEmojiByQuery:s,skinTone:n}){super(e),this.set("isEmpty",!0),this.set("categoryName",t),this.set("skinTone",n),this.tiles=this.createCollection(),this.cachedTiles=this.createCollection(),this.focusTracker=new o.$x,this.keystrokes=new o.EP,this._getEmojiByQuery=s,this.emojiCategories=i;let r=this.bindTemplate;this.setTemplate({tag:"div",children:[{tag:"div",attributes:{role:"grid",class:["ck","ck-emoji__grid"]},children:this.tiles}],attributes:{role:"tabpanel",class:["ck","ck-emoji__tiles",r.if("isEmpty","ck-hidden",e=>e)]}}),(0,c.l1)({keystrokeHandler:this.keystrokes,focusTracker:this.focusTracker,gridItems:this.tiles,numberOfColumns:()=>o.Sf.window.getComputedStyle(this.element.firstChild).getPropertyValue("grid-template-columns").split(" ").length,uiLanguageDirection:this.locale&&this.locale.uiLanguageDirection})}render(){super.render(),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.keystrokes.destroy(),this.focusTracker.destroy()}focus(){let e=this.tiles.first;e&&e.focus()}filter(e){let{matchingItems:t,allItems:i}=e?this._getItemsByQuery(e.source):this._getItemsByCategory();return this._updateGrid(t),this.set("isEmpty",0===t.length),{resultsCount:t.length,totalItemsCount:i.length}}_getItemsByQuery(e){return{matchingItems:this._getEmojiByQuery(e),allItems:this.emojiCategories.flatMap(e=>e.items)}}_getItemsByCategory(){let{items:e}=this.emojiCategories.find(e=>e.title===this.categoryName);return{matchingItems:e,allItems:e}}_updateGrid(e){[...this.tiles].forEach(e=>{this.focusTracker.remove(e),this.tiles.remove(e)}),e.map(e=>{let t=e.skins[this.skinTone]||e.skins.default;return this.cachedTiles.get(t)||this._createTile(t,e.annotation)}).forEach(e=>{this.tiles.add(e),this.focusTracker.add(e)})}_createTile(e,t){let i=new c._(this.locale);return i.viewUid=e,i.extendTemplate({attributes:{class:["ck-emoji__tile"]}}),i.set({label:e,tooltip:t,withText:!0,ariaLabel:t,ariaLabelledBy:void 0}),i.on("execute",()=>{this.fire("execute",{name:t,emoji:e})}),this.cachedTiles.add(i),i}}
1class y extends c.Ss{focusTracker;keystrokes;focusCycler;buttonViews;constructor(e,{emojiCategories:t,categoryName:i}){super(e),this.buttonViews=this.createCollection(t.map(e=>this._createCategoryButton(e))),this.focusTracker=new o.$x,this.keystrokes=new o.EP,this.focusCycler=new c.H({focusables:this.buttonViews,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"arrowleft",focusNext:"arrowright"}}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-emoji__categories-list"],role:"tablist"},children:this.buttonViews}),this.on("change:categoryName",(e,t,i,s)=>{let o=this.buttonViews.find(e=>e.tooltip===s);o&&(o.isOn=!1),this.buttonViews.find(e=>e.tooltip===i).isOn=!0}),this.set("categoryName",i)}render(){super.render(),this.buttonViews.forEach(e=>{this.focusTracker.add(e)}),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy(),this.buttonViews.destroy()}focus(){this.buttonViews.first.focus()}enableCategories(){this.buttonViews.forEach(e=>{e.isEnabled=!0})}disableCategories(){this.buttonViews.forEach(e=>{e.set({class:"",isEnabled:!1,isOn:!1})})}_createCategoryButton(e){let t=new c._,i=t.bindTemplate;return t.extendTemplate({attributes:{"aria-selected":i.to("isOn",e=>e.toString()),class:["ck-emoji__category-item"]}}),t.set({ariaLabel:e.title,label:e.icon,role:"tab",tooltip:e.title,withText:!0,ariaLabelledBy:void 0}),t.on("execute",()=>{this.categoryName=e.title}),t.on("change:isEnabled",()=>{t.isEnabled&&t.tooltip===this.categoryName&&(t.isOn=!0)}),t}}class x extends c.Ss{inputView;gridView;constructor(e,{gridView:t,resultsView:i}){super(e),this.gridView=t;let s=e.t;this.inputView=new c.b8(this.locale,{queryView:{label:s("Find an emoji (min. 2 characters)"),creator:c.Vr},filteredView:this.gridView,infoView:{instance:i}}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-search"],tabindex:"-1"},children:[this.inputView.queryView]}),this.inputView.delegate("search").to(this)}destroy(){super.destroy(),this.inputView.destroy()}search(e){let t=e?RegExp((0,a.N)(e),"ig"):null,i=this.gridView.filter(t);this.inputView.fire("search",{query:e,...i})}setInputValue(e){e?this.inputView.queryView.fieldView.value=e:this.inputView.queryView.fieldView.reset()}getInputValue(){return this.inputView.queryView.fieldView.element.value}focus(){this.inputView.focus()}}class V extends c.Ss{dropdownView;_skinTones;constructor(e,{skinTone:t,skinTones:i}
1){super(e),this.set("skinTone",t),this._skinTones=i;let s=(0,e.t)("Select skin tone"),n=(0,c.yu)(e),r=new o.pM;for(let{id:e,icon:t,tooltip:i}of this._skinTones){let s={type:"button",model:new c.e_({value:e,label:t,ariaLabel:i,tooltip:i,tooltipPosition:"e",role:"menuitemradio",withText:!0,ariaLabelledBy:void 0})};s.model.bind("isOn").to(this,"skinTone",t=>t===e),r.add(s)}(0,c.O)(n,r,{ariaLabel:s,role:"menu"}),n.buttonView.set({label:this._getSkinTone().icon,ariaLabel:s,ariaLabelledBy:void 0,isOn:!1,withText:!0,tooltip:s}),this.dropdownView=n,this.listenTo(n,"execute",e=>{this.skinTone=e.source.value}),n.buttonView.bind("label").to(this,"skinTone",()=>this._getSkinTone().icon),n.buttonView.bind("ariaLabel").to(this,"skinTone",()=>`${this._getSkinTone().tooltip}, ${s}`),this.setTemplate({tag:"div",attributes:{class:["ck","ck-emoji__skin-tone"]},children:[n]})}focus(){this.dropdownView.buttonView.focus()}_getSkinTone(){return this._skinTones.find(e=>e.id===this.skinTone)}}class v extends c.Ss{items;focusTracker;keystrokes;focusCycler;searchView;toneView;categoriesView;gridView;infoView;constructor(e,{emojiCategories:t,getEmojiByQuery:i,skinTone:s,skinTones:n}){super(e);let r=t[0].title;this.gridView=new _(e,{categoryName:r,emojiCategories:t,getEmojiByQuery:i,skinTone:s}),this.infoView=new c.wD,this.searchView=new x(e,{gridView:this.gridView,resultsView:this.infoView}),this.categoriesView=new y(e,{emojiCategories:t,categoryName:r}),this.toneView=new V(e,{skinTone:s,skinTones:n}),this.items=this.createCollection([this.searchView,this.toneView,this.categoriesView,this.gridView,this.infoView]),this.focusTracker=new o.$x,this.keystrokes=new o.EP,this.focusCycler=new c.H({focusables:this.items,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"div",children:[{tag:"div",children:[this.searchView,this.toneView],attributes:{class:["ck","ck-emoji__search"]}},this.categoriesView,this.gridView,{tag:"div",children:[this.infoView],attributes:{class:["ck","ck-search__results"]}}],attributes:{tabindex:"-1",class:["ck","ck-emoji","ck-search"]}}),this._setupEventListeners()}render(){super.render(),this.focusTracker.add(this.searchView.element),this.focusTracker.add(this.toneView.element),this.focusTracker.add(this.categoriesView.element),this.focusTracker.add(this.gridView.element),this.focusTracker.add(this.infoView.element),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this.searchView.focus()}_setupEventListeners(){let e=this.locale.t;this.searchView.on("search",(e,t)=>{t.query?this.categoriesView.disableCategories():this.categoriesView.enableCategories()}),this.searchView.on("search",(t,i)=>{1===i.query.length?this.infoView.set({primaryText:e("Keep on typing to see the emoji."),secondaryText:e("The query must contain at least two characters."),isVisible:!0}):i.resultsCount?this.infoView.set({isVisible:!1}):this.infoView.set({primaryText:e('No emojis were found matching "%0".',i.query
1),secondaryText:e("Please try a different phrase or check the spelling."),isVisible:!0})}),this.searchView.on("search",()=>{this.fire("update"),this.gridView.element.scrollTo(0,0)}),this.categoriesView.on("change:categoryName",(e,t,i)=>{this.gridView.categoryName=i,this.searchView.search("")}),this.toneView.on("change:skinTone",(e,t,i)=>{this.gridView.skinTone=i,this.searchView.search(this.searchView.getInputValue())})}}class T extends c.Ss{backButtonView;focusTracker=new o.$x;keystrokes=new o.EP;children;_focusables=new c.s3;_focusCycler;constructor(e){super(e),this.backButtonView=this._createBackButton(),this.children=this.createCollection([this._createHeaderView()]),this._focusCycler=new c.H({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-form","ck-emoji-picker-form","ck-responsive-form"],tabindex:"-1"},children:this.children})}render(){super.render(),[...this.children.filter(c.MM),this.backButtonView].forEach(e=>{this._focusables.add(e),this.focusTracker.add(e.element),(0,c.eG)(e)&&this._focusCycler.chain(e.focusCycler)}),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}_createBackButton(){let e=this.locale.t,t=new c._(this.locale);return t.set({class:"ck-button-back",label:e("Back"),icon:d.saM,tooltip:!0}),t.delegate("execute").to(this,"cancel"),t}_createHeaderView(){let e=this.locale.t,t=new c.Dy(this.locale,{label:e("Emoji picker")});return t.children.add(this.backButtonView,0),t}}let C="emoji-picker";class E extends s.k_{static get requires(){return[f,c.pU,c.lG,n.IG]}static get pluginName(){return"EmojiPicker"}static get isOfficialPlugin(){return!0}
1async init(){let e=this.editor;if(this.balloonPlugin=e.plugins.get("ContextualBalloon"),this.emojiRepositoryPlugin=e.plugins.get("EmojiRepository"),!await this.emojiRepositoryPlugin.isReady())return;let t=new b(e);e.commands.add("emoji",t),e.ui.componentFactory.add("emoji",()=>{let e=this._createButton(c._,t);return e.set({tooltip:!0}),e}),e.ui.componentFactory.add("menuBar:emoji",()=>this._createButton(c.kS,t)),this._setupConversion()}destroy(){super.destroy(),this.emojiPickerView&&this.emojiPickerView.destroy()}get skinTone(){return this.emojiPickerView?this.emojiPickerView.gridView.skinTone:this.editor.config.get("emoji.skinTone")}showUI(e=""){this._showFakeVisualSelection(),this.emojiPickerView||(this.emojiPickerView=this._createEmojiPickerView()),e&&this.emojiPickerView.searchView.setInputValue(e),this.emojiPickerView.searchView.search(e),this.emojiPickerFormView||(this.emojiPickerFormView=this._createEmojiPickerFormView()),this.balloonPlugin.hasView(this.emojiPickerFormView)||(this.emojiPickerFormView.backButtonView.isVisible=!!this.balloonPlugin.visibleView,this.balloonPlugin.add({view:this.emojiPickerFormView,position:this._getBalloonPositionData(),balloonClassName:"ck-emoji-picker-balloon"})),this.emojiPickerView.focus()}_createButton(e,t){let i=new e(this.editor.locale),s=this.editor.locale.t;return i.bind("isEnabled").to(t,"isEnabled"),i.set({label:s("Emoji"),icon:d.YSL,isToggleable:!0}),i.on("execute",()=>{this.editor.editing.view.scrollToTheSelection(),this.showUI()}),i}_createEmojiPickerView(){let e=new v(this.editor.locale,{emojiCategories:this.emojiRepositoryPlugin.getEmojiCategories(),skinTone:this.editor.config.get("emoji.skinTone"),skinTones:this.emojiRepositoryPlugin.getSkinTones(),getEmojiByQuery:e=>this.emojiRepositoryPlugin.getEmojiByQuery(e)});return this.listenTo(e.gridView,"execute",(e,t)=>{let i=this.editor,s=t.emoji;this._hideUI(),i.execute("insertText",{text:s})}),e}_createEmojiPickerFormView(){let e=new T(this.editor.locale);return e.children.add(this.emojiPickerView),this.listenTo(this.emojiPickerView,"update",()=>{this.balloonPlugin.visibleView===e&&this.balloonPlugin.updatePosition()}),this.listenTo(e,"cancel",()=>{this._hideUI()}),e.keystrokes.set("Esc",(e,t)=>{this._hideUI(),t()}),(0,c.wy)({emitter:e,contextElements:[this.balloonPlugin.view.element],callback:()=>{this._hideUI(!1)},activator:()=>this.balloonPlugin.visibleView===e}),e}_hideUI(e=!0){this.balloonPlugin.remove(this.emojiPickerFormView),this.emojiPickerView.searchView.setInputValue(""),e&&this.editor.editing.view.focus(),this._hideFakeVisualSelection()}_setupConversion(){let e=this.editor;e.conversion.for("editingDowncast").markerToHighlight({model:C,view:{classes:["ck-fake-emoji-selection"]}}),e.conversion.for("editingDowncast").markerToElement({model:C,view:(e,{writer:t})=>{if(!e.markerRange.isCollapsed)return null;let i=t.createUIElement("span");return t.addClass(["ck-fake-emoji-selection","ck-fake-emoji-selection_collapsed"],i),i}})}_getBalloonPositionData(){let e=this.editor.editing.view,t=e.document;return{target:()=>e.domConverter.viewRangeToDom(t.selection.getFirstRange())}}_showFakeVisualSelection(){let e=this.editor.model;e.change(t=>{let i=e.document.selection.getFirstRange();if(e.markers.has(C))t.updateMarker(C,{range:i});else if(i.start.isAtEnd){let s=i.start.getLastMatchingPosition(({item:t})=>!e.schema.isContent(t),{boundaries:i});t.addMarker(C,{usingOperation:!1,affectsData:!1,range:t.createRange(s,i.end)})}else t.addMarker(C,{usingOperation:!1,affectsData:!1,range:i})})}_hideFakeVisualSelection(){let e=this.editor.model;e.markers.has(C)&&e.change(e=>{e.removeMarker(C)})}}class j extends s.k_{static get requires(){return[k,E]}static get pluginName(){return"Emoji"}static get isOfficialPlugin(){return!0}}},15174:(e,t,i)=>{i.d(t,{Ne:()=>x});var s=i(76936),o=i(44400),n=i(7614),r=i(76564),l=i(18045),a=i(81659);class c extends n.Ss{children;_findInputView;_replaceInputView;_findButtonView;_findPrevButtonView;_findNextButtonView;_advancedOptionsCollapsibleView;_matchCaseSwitchView;_wholeWordsOnlySwitchView;_replaceButtonView;_replaceAllButtonView;_inputsDivView;_actionButtonsDivView;_focusTracker;_keystrokes;_focusables;focusCycler;constructor(e){super(e);let t=e.t;this.children=this.createCollection(),this.set("matchCount",0),this.set("highlightOffset",0),this.set("isDirty",!1),this.set("_areCommandsEnabled",{}),this.set("_resultsCounterText",""),this.set("_matchCase",!1),this.set("_wholeWordsOnly",!1),this.bind("_searchResultsFound").to(this,"matchCount",this,"isDirty",(e,t)=>e>
10&&!t),this._findInputView=this._createInputField(t("Find in textâ¦")),this._findPrevButtonView=this._createButton({label:t("Previous result"),class:"ck-button-prev",icon:o.saM,keystroke:"Shift+F3",tooltip:!0}),this._findNextButtonView=this._createButton({label:t("Next result"),class:"ck-button-next",icon:o.saM,keystroke:"F3",tooltip:!0}),this._replaceInputView=this._createInputField(t("Replace withâ¦"),"ck-labeled-field-replace"),this._inputsDivView=this._createInputsDiv(),this._matchCaseSwitchView=this._createMatchCaseSwitch(),this._wholeWordsOnlySwitchView=this._createWholeWordsOnlySwitch(),this._advancedOptionsCollapsibleView=this._createAdvancedOptionsCollapsible(),this._replaceAllButtonView=this._createButton({label:t("Replace all"),class:"ck-button-replaceall",withText:!0}),this._replaceButtonView=this._createButton({label:t("Replace"),class:"ck-button-replace",withText:!0}),this._findButtonView=this._createButton({label:t("Find"),class:"ck-button-find ck-button-action",withText:!0}),this._actionButtonsDivView=this._createActionButtonsDiv(),this._focusTracker=new r.$x,this._keystrokes=new r.EP,this._focusables=new n.s3,this.focusCycler=new n.H({focusables:this._focusables,focusTracker:this._focusTracker,keystrokeHandler:this._keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.children.addMany([this._inputsDivView,this._advancedOptionsCollapsibleView,this._actionButtonsDivView]),this.setTemplate({tag:"form",attributes:{class:["ck","ck-find-and-replace-form"],tabindex:"-1"},children:this.children})}render(){super.render(),(0,n.Z5)({view:this}),this._initFocusCycling(),this._initKeystrokeHandling()}destroy(){super.destroy(),this._focusTracker.destroy(),this._keystrokes.destroy()}focus(e){-1===e?this.focusCycler.focusLast():this.focusCycler.focusFirst()}reset(){this._findInputView.errorText=null,this.isDirty=!0}get _textToFind(){return this._findInputView.fieldView.element.value}get _textToReplace(){return this._replaceInputView.fieldView.element.value}_createInputsDiv(){let e=this.locale,t=e.t,i=new n.Ss(e);return this._findInputView.fieldView.on("input",()=>{this.isDirty=!0}),this._findPrevButtonView.delegate("execute").to(this,"findPrevious"),this._findNextButtonView.delegate("execute").to(this,"findNext"),this._findPrevButtonView.bind("isEnabled").to(this,"_areCommandsEnabled",({findPrevious:e})=>e),this._findNextButtonView.bind("isEnabled").to(this,"_areCommandsEnabled",({findNext:e})=>e),this._injectFindResultsCounter(),this._replaceInputView.bind("isEnabled").to(this,"_areCommandsEnabled",this,"_searchResultsFound",({replace:e},t)=>e&&t),this._replaceInputView.bind("infoText").to(this._replaceInputView,"isEnabled",this._replaceInputView,"isFocused",(e,i)=>e||!i?"":t("Tip: Find some text first in order to replace it.")),i.setTemplate({tag:"div",attributes:{class:["ck","ck-find-and-replace-form__inputs"]},children:[this._findInputView,this._findPrevButtonView,this._findNextButtonView,this._replaceInputView]}),i}_onFindButtonExecute(){if(!this._textToFind){let e=this.t;this._findInputView.errorText=e("Text to find must not be empty.");return}this.isDirty=!1,this.fire("findNext",{searchText:this._textToFind,matchCase:this._matchCase,wholeWords:this._wholeWordsOnly})}_injectFindResultsCounter(){let e=this.locale,t=e.t,i=this.bindTemplate,s=new n.Ss(this.locale);this.bind("_resultsCounterText").to(this,"highlightOffset",this,"matchCount",(e,i)=>t("%0 of %1",[e,i])),s.setTemplate({tag:"span",attributes:{class:["ck","ck-results-counter",i.if("isDirty","ck-hidden")]},children:[{text:i.to("_resultsCounterText")}]});let o=()=>{let t=this._findInputView.fieldView.element;if(!t||!(0,r.zN)(t))return;let i=new r.rw(s.element).width,o="ltr"===e.uiLanguageDirection?"paddingRight":"paddingLeft";i?t.style[o]=`calc( 2 * var(--ck-spacing-standard) + ${i}px )`:t.style[o]=""};this.on("change:_resultsCounterText",o,{priority:"low"}),this.on("change:isDirty",o,{priority:"low"}),this._findInputView.template.children[0].children.push(s)}_createAdvancedOptionsCollapsible(){let e=this.locale.t,t=new n.Kn(this.locale,[this._matchCaseSwitchView,this._wholeWordsOnlySwitchView]);return t.set({label:e("Advanced options"),isCollapsed:!0}),t}_createActionButtonsDiv(){let e=new n.Ss(this.locale);return this._replaceButtonView.bind("isEnabled").to(this,"_areCommandsEnabled",this,"_searchResultsFound",({replace:e},t)=>e&&t),this._replaceAllButtonView.bind("isEnabled").to(this,"_areCommandsEnabled",this,"_searchResultsFound",({replaceAll:e},t)=>e&&t),this._replaceButtonView.on("execute",()=>{this.fire("replace",{searchText:this._textToFind,replaceText:this._textToReplace})}),this._replaceAllButtonView.on("execute",()=>{this.fire("replaceAll",{searchText:this._textToFind,replaceText:this._textToReplace}),this.focus()}
1),this._findButtonView.on("execute",this._onFindButtonExecute.bind(this)),e.setTemplate({tag:"div",attributes:{class:["ck","ck-find-and-replace-form__actions"]},children:[this._replaceAllButtonView,this._replaceButtonView,this._findButtonView]}),e}_createMatchCaseSwitch(){let e=this.locale.t,t=new n.Wm(this.locale);return t.set({label:e("Match case"),withText:!0}),t.bind("isOn").to(this,"_matchCase"),t.on("execute",()=>{this._matchCase=!this._matchCase,this.isDirty=!0}),t}_createWholeWordsOnlySwitch(){let e=this.locale.t,t=new n.Wm(this.locale);return t.set({label:e("Whole words only"),withText:!0}),t.bind("isOn").to(this,"_wholeWordsOnly"),t.on("execute",()=>{this._wholeWordsOnly=!this._wholeWordsOnly,this.isDirty=!0}),t}_initFocusCycling(){[this._findInputView,this._findPrevButtonView,this._findNextButtonView,this._replaceInputView,this._advancedOptionsCollapsibleView.buttonView,this._matchCaseSwitchView,this._wholeWordsOnlySwitchView,this._replaceAllButtonView,this._replaceButtonView,this._findButtonView].forEach(e=>{this._focusables.add(e),this._focusTracker.add(e.element)})}_initKeystrokeHandling(){let e=e=>e.stopPropagation(),t=e=>{e.stopPropagation(),e.preventDefault()};this._keystrokes.listenTo(this.element),this._keystrokes.set("f3",e=>{t(e),this._findNextButtonView.fire("execute")}),this._keystrokes.set("shift+f3",e=>{t(e),this._findPrevButtonView.fire("execute")}),this._keystrokes.set("enter",e=>{let i=e.target;i===this._findInputView.fieldView.element?(this._areCommandsEnabled.findNext?this._findNextButtonView.fire("execute"):this._findButtonView.fire("execute"),t(e)):i!==this._replaceInputView.fieldView.element||this.isDirty||(this._replaceButtonView.fire("execute"),t(e))}),this._keystrokes.set("shift+enter",e=>{e.target===this._findInputView.fieldView.element&&(this._areCommandsEnabled.findPrevious?this._findPrevButtonView.fire("execute"):this._findButtonView.fire("execute"),t(e))}),this._keystrokes.set("arrowright",e),this._keystrokes.set("arrowleft",e),this._keystrokes.set("arrowup",e),this._keystrokes.set("arrowdown",e)}_createButton(e){let t=new n._(this.locale);return t.set(e),t}_createInputField(e,t){let i=new n.xE(this.locale,n.Vr);return i.label=e,i.class=t,i}}class d extends s.k_{static get requires(){return[n.lG]}static get pluginName(){return"FindAndReplaceUI"}static get isOfficialPlugin(){return!0}formView;constructor(e){super(e),e.config.define("findAndReplace.uiType","dialog"),this.formView=null}init(){let e=this.editor,t="dropdown"===e.config.get("findAndReplace.uiType"),i=e.commands.get("find"),s=this.editor.t;e.ui.componentFactory.add("findAndReplace",()=>{let s;return t?(s=this._createDropdown()).bind("isEnabled").to(i):s=this._createDialogButtonForToolbar(),e.keystrokes.set("Ctrl+F",(t,o)=>{if(i.isEnabled){if(s instanceof n.BO){let e=s.buttonView;e.isOn||e.fire("execute")}else s.isOn?e.plugins.get("Dialog").view.focus():s.fire("execute");o()}}),s}),t||e.ui.componentFactory.add("menuBar:findAndReplace",()=>this._createDialogButtonForMenuBar()),e.accessibility.addKeystrokeInfos({keystrokes:[{label:s("Find in the document"),keystroke:"CTRL+F"}]})}_createDropdown(){let e=this.editor,t=e.locale.t,i=(0,n.yu)(e.locale);return i.once("change:isOpen",()=>{this.formView=this._createFormView(),this.formView.children.add(new n.Dy(e.locale,{label:t("Find and replace")}),0),i.panelView.children.add(this.formView)}),i.on("change:isOpen",(e,t,i)=>{i?this._setupFormView():this.fire("searchReseted")},{priority:"low"}),i.buttonView.set({icon:o.rT9,label:t("Find and replace"),keystroke:"CTRL+F",tooltip:!0}),i}_createDialogButtonForToolbar(){let e=this.editor,t=this._createButton(n._),i=e.plugins.get("Dialog");return t.set({tooltip:!0}),t.bind("isOn").to(i,"id",e=>"findAndReplace"===e),t.on("execute",()=>{t.isOn?i.hide():this._showDialog()}),t}_createDialogButtonForMenuBar(){let e=this._createButton(n.kS),t=this.editor.plugins.get("Dialog"),i=this.editor.plugins.get("Dialog");return e.set({role:"menuitemcheckbox",isToggleable:!0}),e.bind("isOn").to(i,"id",e=>"findAndReplace"===e),e.on("execute",()=>{if("findAndReplace"===t.id)return void t.hide();this._showDialog()}),e}_createButton(e){let t=this.editor,i=t.commands.get("find"),s=new e(t.locale),n=t.locale.t;return s.bind("isEnabled").to(i),s.set({icon:o.rT9,label:n("Find and replace"),keystroke:"CTRL+F"}),s}_showDialog(){let e=this.editor,t=e.plugins.get("Dialog"),i=e.locale.t;this.formView||(this.formView=this._createFormView()),t.show({id:"findAndReplace",title:i("Find and replace"),content:this.formView,position:n.nu.EDITOR_TOP_S
1IDE,onShow:()=>{this._setupFormView()},onHide:()=>{this.fire("searchReseted")}})}_createFormView(){let e=this.editor,t=new((0,n.wi)(c))(e.locale),i=e.commands,s=this.editor.plugins.get("FindAndReplaceEditing").state;t.bind("highlightOffset").to(s,"highlightedOffset"),t.listenTo(s.results,"change",()=>{t.matchCount=s.results.length});let o=i.get("findNext"),r=i.get("findPrevious"),l=i.get("replace"),a=i.get("replaceAll");return t.bind("_areCommandsEnabled").to(o,"isEnabled",r,"isEnabled",l,"isEnabled",a,"isEnabled",(e,t,i,s)=>({findNext:e,findPrevious:t,replace:i,replaceAll:s})),t.delegate("findNext","findPrevious","replace","replaceAll").to(this),t.on("change:isDirty",(e,t,i)=>{i&&this.fire("searchReseted")}),t}_setupFormView(){this.formView.disableCssTransitions(),this.formView.reset(),this.formView._findInputView.fieldView.select(),this.formView.enableCssTransitions()}}class h extends s.uB{_state;constructor(e,t){super(e),this.isEnabled=!0,this.affectsData=!1,this._state=t}execute(e,{matchCase:t,wholeWords:i}={}){let s,{editor:o}=this,{model:n}=o,r=o.plugins.get("FindAndReplaceUtils"),l="",a=s="string"==typeof e?(...s)=>({results:r.findByTextCallback(e,{matchCase:t,wholeWords:i})(...s),searchText:e}):e;s=(...e)=>{let t=a(...e);return t&&"searchText"in t&&(l=t.searchText),t};let c=n.document.getRootNames().reduce((e,t)=>r.updateFindResultFromRange(n.createRangeIn(n.document.getRoot(t)),n,s,e),null);return this._state.clear(n),this._state.results.addMany(c),this._state.highlightedResult=c.get(0),this._state.searchText=l,s&&(this._state.lastSearchCallback=s),this._state.matchCase=!!t,this._state.matchWholeWords=!!i,{results:c,findCallback:s}}}class u extends(0,r.VM)(){constructor(e){super(),this.set("results",new r.pM),this.set("highlightedResult",null),this.set("highlightedOffset",0),this.set("searchText",""),this.set("replaceText",""),this.set("lastSearchCallback",null),this.set("matchCase",!1),this.set("matchWholeWords",!1),this.results.on("change",(t,{removed:i,index:s})=>{if(Array.from(i).length){let t=!1;if(e.change(s=>{for(let o of i)this.highlightedResult===o&&(t=!0),e.markers.has(o.marker.name)&&s.removeMarker(o.marker)}),t){let e=s>=this.results.length?0:s;this.highlightedResult=this.results.get(e)}}}),this.on("change:highlightedResult",()=>{this.refreshHighlightOffset(e)})}clear(e){this.searchText="",e.change(t=>{if(this.highlightedResult){let i=this.highlightedResult.marker.name.split(":")[1],s=e.markers.get(`findResultHighlighted:${i}`);s&&t.removeMarker(s)}[...this.results].forEach(({marker:e})=>{t.removeMarker(e)})}),this.results.clear()}refreshHighlightOffset(e){let{highlightedResult:t,results:i}=this;t?this.highlightedOffset=m(e,[...i]).indexOf(t)+1:this.highlightedOffset=0}}function m(e,t){let i={before:-1,same:0,after:1,different:1};return e.document.getRootNames().flatMap(e=>t.filter(t=>t.marker.getStart().root.rootName===e).sort((e,t)=>i[e.marker.getStart().compareWith(t.marker.getStart())]))}class g extends s.uB{_state;constructor(e,t){super(e),this.isEnabled=!0,this._state=t,this._isEnabledBasedOnSelection=!1}_replace(e,t){let{model:i}=this.editor,s=t.marker.getRange();i.canEditAt(s)&&i.change(o=>{if("$graveyard"===s.root.rootName)return void this._state.results.remove(t);let n={};for(let e of s.getItems())if(e.is("$text")||e.is("$textProxy")){n=e.getAttributes();break}i.insertContent(o.createText(e,n),s),this._state.results.has(t)&&this._state.results.remove(t)})}}class f extends g{execute(e,t){let i=Math.max(this._state.highlightedOffset-1,0);if(this._replace(e,t),this._state.results.length){let e=m(this.editor.model,[...this._state.results]);this._state.highlightedResult=e[i%e.length]}}}class p extends g{execute(e,t){let{editor:i}=this,{model:s}=i,o=i.plugins.get("FindAndReplaceUtils"),n=t instanceof r.pM?t:s.document.getRootNames().reduce((e,i)=>o.updateFindResultFromRange(s.createRangeIn(s.document.getRoot(i)),s,o.findByTextCallback(t,this._state),e),null);n.length&&s.change(()=>{[...n].forEach(t=>{this._replace(e,t)})})}}class w extends s.uB{_state;constructor(e,t){super(e),this.affectsData=!1,this._state=t,this.isEnabled=!1,this.listenTo(this._state.results,"change",()=>{this.isEnabled=this._state.results.length>1})}refresh(){this.isEnabled=this._state.results.length>1}execute(){let e=this._state.results,t=e.getIndex(this._state.highlightedResult),i=t+1>=e.length?0:t+1;this._state.highlightedResult=this._state.results.get(i)}}class k extends w{execute(){let e=this._state.results.getIndex(this._state.highlightedResult),t=e-1<0?this._state.results.length-1:e-1;this._state.highlightedResult=this._state.results.get(t)}}class b extends s.k_{static get pluginName(){return"FindAndReplaceUtils"}static get isOfficialPlugin(){return!0}updateFindResultFromRange(e,t,i,s){let o=s||new r.pM;return t.change(s=>{[...e].forEach(({type:e,item:n})=>{if("elementStart"===e&&t.schema.checkChild(n,"$text")){let e=i({item:n,text:this.rangeToText(t.createRangeIn(n))});
1e&&("results"in e&&(e=e.results),e.forEach(e=>{let t=`findResult:${(0,r.Ld)()}`,i=s.addMarker(t,{usingOperation:!1,affectsData:!1,range:s.createRange(s.createPositionAt(n,e.start),s.createPositionAt(n,e.end))}),l=function(e,t){let i=e.find(({marker:e})=>t.getStart().isBefore(e.getStart()));return i?e.getIndex(i):e.length}(o,i);o.find(e=>{let{marker:t}=e,s=t.getRange(),o=i.getRange();return s.isEqual(o)})||o.add({id:t,label:e.label,marker:i},l)}))}})}),o}rangeToText(e){return Array.from(e.getItems({shallow:!0})).reduce((e,t)=>t.is("$text")||t.is("$textProxy")?e+t.data:`${e} 2`,"")}findByTextCallback(e,t){let i="gu";t.matchCase||(i+="i");let s=`(${(0,l.N)(e)})`;if(t.wholeWords){let t="[^a-zA-Z\xc0-Éá¸-ỿ]";RegExp("^"+t).test(e)||(s=`(^|${t}|_)${s}`),RegExp(t+"$").test(e)||(s=`${s}(?=_|${t}|$)`)}let o=new RegExp(s,i);return function({text:e}){return[...e.matchAll(o)].map(_)}}}function _(e){let t=e.length-1,i=e.index;return 3===e.length&&(i+=e[1].length),{label:e[t],start:i,end:i+e[t].length}}class y extends s.k_{static get requires(){return[b]}static get pluginName(){return"FindAndReplaceEditing"}static get licenseFeatureCode(){return"FAR"}static get isPremiumPlugin(){return!0}static get isOfficialPlugin(){return!0}state;init(){this.state=new u(this.editor.model),this.set("_isSearchActive",!1),this._defineConverters(),this._defineCommands(),this.listenTo(this.state,"change:highlightedResult",(e,t,i,s)=>{let{model:o}=this.editor;o.change(e=>{if(s){let t=s.marker.name.split(":")[1],i=o.markers.get(`findResultHighlighted:${t}`);i&&e.removeMarker(i)}if(i){let t=i.marker.name.split(":")[1];e.addMarker(`findResultHighlighted:${t}`,{usingOperation:!1,affectsData:!1,range:i.marker.getRange()})}})});let e=(e,t,i)=>{if(i){let e=this.editor.editing.view.domConverter,t=this.editor.editing.mapper.toViewRange(i.marker.getRange());(0,r.vK)({target:e.viewRangeToDom(t),viewportOffset:40})}},t=(0,a.s)(e.bind(this),32);this.listenTo(this.state,"change:highlightedResult",t,{priority:"low"}),this.listenTo(this.editor,"destroy",t.cancel),this.on("change:_isSearchActive",(e,t,i)=>{i?this.listenTo(this.editor.model.document,"change:data",this._onDocumentChange):this.stopListening(this.editor.model.document,"change:data",this._onDocumentChange)})}find(e,t){return this._isSearchActive=!0,this.editor.execute("find",e,t),this.state.results}stop(){this.state.clear(this.editor.model),this._isSearchActive=!1}_defineCommands(){this.editor.commands.add("find",new h(this.editor,this.state)),this.editor.commands.add("findNext",new w(this.editor,this.state)),this.editor.commands.add("findPrevious",new k(this.editor,this.state)),this.editor.commands.add("replace",new f(this.editor,this.state)),this.editor.commands.add("replaceAll",new p(this.editor,this.state))}_defineConverters(){let{editor:e}=this;e.conversion.for("editingDowncast").markerToHighlight({model:"findResult",view:({markerName:e})=>{let[,t]=e.split(":");return{name:"span",classes:["ck-find-result"],attributes:{"data-find-result":t}}}}),e.conversion.for("editingDowncast").markerToHighlight({model:"findResultHighlighted",view:({markerName:e})=>{let[,t]=e.split(":");return{name:"span",classes:["ck-find-result_selected"],attributes:{"data-find-result":t}}}})}_onDocumentChange=()=>{let e=new Set,t=new Set,i=this.editor.model,{results:s}=this.state,o=i.document.differ.getChanges(),n=i.document.differ.getChangedMarkers();o.forEach(s=>{s.position&&("$text"===s.name||s.position.nodeAfter&&i.schema.isInline(s.position.nodeAfter)?(e.add(s.position.parent),[...i.markers.getMarkersAtPosition(s.position)].forEach(e=>{t.add(e.name)})):"insert"===s.type&&s.position.nodeAfter&&e.add(s.position.nodeAfter))}),n.forEach(({name:e,data:{newRange:i}})=>{i&&"$graveyard"===i.start.root.rootName&&t.add(e)}),e.forEach(e=>{[...i.markers.getMarkersIntersectingRange(i.createRangeIn(e))].forEach(e=>t.add(e.name))}),t.forEach(e=>{s.has(e)&&(s.get(e)===this.state.highlightedResult&&(this.state.highlightedResult=null),s.remove(e))});let r=[],l=this.editor.plugins.get("FindAndReplaceUtils");e.forEach(e=>{let t=l.updateFindResultFromRange(i.createRangeOn(e),i,this.state.lastSearchCallback,s);r.push(...t)}
2),n.forEach(e=>{if(e.data.newRange){let t=l.updateFindResultFromRange(e.data.newRange,i,this.state.lastSearchCallback,s);r.push(...t)}}),!this.state.highlightedResult&&r.length?this.state.highlightedResult=r[0]:this.state.refreshHighlightOffset(i)}}class x extends s.k_{static get requires(){return[y,d]}static get pluginName(){return"FindAndReplace"}static get isOfficialPlugin(){return!0}init(){let e=this.editor.plugins.get("FindAndReplaceUI"),t=this.editor.plugins.get("FindAndReplaceEditing"),i=t.state;e.on("findNext",(e,s)=>{s?(i.searchText=s.searchText,t.find(s.searchText,s)):this.editor.execute("findNext")}),e.on("findPrevious",(e,s)=>{s&&i.searchText!==s.searchText?t.find(s.searchText):this.editor.execute("findPrevious")}),e.on("replace",(e,s)=>{i.searchText!==s.searchText&&t.find(s.searchText);let o=i.highlightedResult;o&&this.editor.execute("replace",s.replaceText,o)}),e.on("replaceAll",(e,s)=>{i.searchText!==s.searchText&&t.find(s.searchText),this.editor.execute("replaceAll",s.replaceText,i.results)}),e.on("searchReseted",()=>{i.clear(this.editor.model),t.stop()})}}},51756:(e,t,i)=>{i(76936),i(2904),i(62780),i(83822),i(34396),i(82062)},62780:(e,t,i)=>{i.d(t,{DQ:()=>f,xy:()=>h});var s=i(76936),o=i(34958),n=i(76564);function*r(e,t){for(let i of t)i&&e.getAttributeProperties(i[0]).copyOnEnter&&(yield i)}class l extends s.uB{execute(){this.editor.model.change(e=>{this.enterBlock(e),this.fire("afterExecute",{writer:e})})}enterBlock(e){let t=this.editor.model,i=t.document.selection,s=t.schema,o=i.isCollapsed,n=i.getFirstRange(),l=n.start.parent,c=n.end.parent;if(s.isLimit(l)||s.isLimit(c))return o||l!=c||t.deleteContent(i),!1;if(o){let t=r(e.model.schema,i.getAttributes());return a(e,n.start),e.setSelectionAttribute(t),!0}{let s=!(n.start.isAtStart&&n.end.isAtEnd),o=l==c;if(t.deleteContent(i,{leaveUnmerged:s}),s)if(o)return a(e,i.focus),!0;else e.setSelection(c,0)}return!1}}function a(e,t){e.split(t),e.setSelection(t.parent.nextSibling,0)}let c={insertParagraph:{isSoft:!1},insertLineBreak:{isSoft:!0}};class d extends o.nun{constructor(e){super(e);let t=this.document,i=!1;t.on("keydown",(e,t)=>{i=t.shiftKey}),t.on("beforeinput",(s,r)=>{if(!this.isEnabled)return;let l=r.inputType;n._K.isSafari&&i&&"insertParagraph"==l&&(l="insertLineBreak");let a=r.domEvent,d=c[l];if(!d)return;let h=new o.cJK(t,"enter",r.targetRanges[0]);t.fire(h,new o.Nu4(e,a,{isSoft:d.isSoft})),h.stop.called&&s.stop()})}observe(){}stopObserving(){}}class h extends s.k_{static get pluginName(){return"Enter"}static get isOfficialPlugin(){return!0}init(){let e=this.editor,t=e.editing.view,i=t.document,s=this.editor.t;t.addObserver(d),e.commands.add("enter",new l(e)),this.listenTo(i,"enter",(s,o)=>{i.isComposing||o.preventDefault(),o.isSoft||(e.execute("enter"),t.scrollToTheSelection())},{priority:"low"}),e.accessibility.addKeystrokeInfos({keystrokes:[{label:s("Insert a hard break (a new paragraph)"),keystroke:"Enter"}]})}}class u extends s.uB{execute(){let e=this.editor.model,t=e.document;e.change(i=>{(function(e,t,i){let s=i.isCollapsed,o=i.getFirstRange(),n=o.start.parent,l=o.end.parent,a=n==l;if(s){let s=r(e.schema,i.getAttributes());m(e,t,o.end),t.removeSelectionAttribute(i.getAttributeKeys()),t.setSelectionAttribute(s)}else{let s=!(o.start.isAtStart&&o.end.isAtEnd);e.deleteContent(i,{leaveUnmerged:s}),a?m(e,t,i.focus):s&&t.setSelection(l,0)}})(e,i,t.selection),this.fire("afterExecute",{writer:i})})}refresh(){let e=this.editor.model,t=e.document;this.isEnabled=function(e,t){if(t.rangeCount>1)return!1;let i=t.anchor;if(!i||!e.checkChild(i,"softBreak"))return!1;let s=t.getFirstRange(),o=s.start.parent,n=s.end.parent;return!(g(o,e)||g(n,e))||o===n}(e.schema,t.selection)}}function m(e,t,i){let s=t.createElement("softBreak");e.insertContent(s,i),t.setSelection(s,"after")}function g(e,t){return!e.is("rootElement")&&(t.isLimit(e)||g(e.parent,t))}class f extends s.k_{static get pluginName(){return"ShiftEnter"}static get isOfficialPlugin(){return!0}init(){let e=this.editor,t=e.model.schema,i=e.conversion,s=e.editing.view,o=s.document,n=this.editor.t;t.register("softBreak",{allowWhere:"$text",isInline:!0}),i.for("upcast").elementToElement({model:"softBreak",view:"br"}),i.for("downcast").elementToElement({model:"softBreak",view:(e,{writer
2:t})=>t.createEmptyElement("br")}),s.addObserver(d),e.commands.add("shiftEnter",new u(e)),this.listenTo(o,"enter",(t,i)=>{o.isComposing||i.preventDefault(),i.isSoft&&(e.execute("shiftEnter"),s.scrollToTheSelection())},{priority:"low"}),e.accessibility.addKeystrokeInfos({keystrokes:[{label:n("Insert a soft break (a <code><br></code> element)"),keystroke:"Shift+Enter"}]})}}},84020:(e,t,i)=>{i.d(t,{Lc:()=>M,Z4:()=>F,ay:()=>V,rw:()=>I,zJ:()=>T});var s=i(76936),o=i(7614),n=i(76564),r=i(44400),l=i(34958);class a extends s.uB{attributeKey;constructor(e,t){super(e),this.attributeKey=t}refresh(){let e=this.editor.model,t=e.document;this.value=t.selection.getAttribute(this.attributeKey),this.isEnabled=e.schema.checkAttributeInSelection(t.selection,this.attributeKey)}execute(e={}){let t=this.editor.model,i=t.document.selection,s=e.value,o=e.batch,n=e=>{if(i.isCollapsed)s?e.setSelectionAttribute(this.attributeKey,s):e.removeSelectionAttribute(this.attributeKey);else for(let o of t.schema.getValidRanges(i.getRanges(),this.attributeKey))s?e.setAttribute(this.attributeKey,s,o):e.removeAttribute(this.attributeKey,o)};o?t.enqueueChange(o,e=>{n(e)}):t.change(e=>{n(e)})}}
2let c="fontSize",d="fontFamily",h="fontColor",u="fontBackgroundColor";function m(e,t){let i={model:{key:e,values:[]},view:{},upcastAlso:{}};for(let e of t)i.model.values.push(e.model),i.view[e.model]=e.view,e.upcastAlso&&(i.upcastAlso[e.model]=e.upcastAlso);return i}function g(e){return t=>t.getStyle(e).replace(/\s/g,"")}function f(e){return(t,{writer:i})=>i.createAttributeElement("span",{style:`${e}:${t}`},{priority:7})}class p extends a{constructor(e){super(e,d)}}function w(e){return e.map(b).filter(e=>void 0!==e)}function k(e){return e.replace(/["']/g,"").split(",").map(e=>e.trim())}function b(e){return"object"==typeof e?e:"default"===e?{title:"Default",model:void 0}:"string"==typeof e?function(e){let t=k(e),i=t[0],s=t.map(_).join(", ");return{title:i,model:s,view:{name:"span",styles:{"font-family":s},priority:7}}}(e):void 0}function _(e){return(e=e.trim()).indexOf(" ")>0&&(e=`'${e}'`),e}class y extends s.k_{static get pluginName(){return"FontFamilyEditing"}static get isOfficialPlugin(){return!0}constructor(e){super(e),e.config.define(d,{options:["default","Arial, Helvetica, sans-serif","Courier New, Courier, monospace","Georgia, serif","Lucida Sans Unicode, Lucida Grande, sans-serif","Tahoma, Geneva, sans-serif","Times New Roman, Times, serif","Trebuchet MS, Helvetica, sans-serif","Verdana, Geneva, sans-serif"],supportAllValues:!1})}init(){let e=this.editor;e.model.schema.extend("$text",{allowAttributes:d}),e.model.schema.setAttributeProperties(d,{isFormatting:!0,copyOnEnter:!0});let t=m(d,w(e.config.get("fontFamily.options")).filter(e=>e.model));e.config.get("fontFamily.supportAllValues")?(this._prepareAnyValueConverters(),this._prepareCompatibilityConverter()):e.conversion.attributeToElement(t),e.commands.add(d,new p(e))}_prepareAnyValueConverters(){let e=this.editor;e.conversion.for("downcast").attributeToElement({model:d,view:(e,{writer:t})=>t.createAttributeElement("span",{style:"font-family:"+e},{priority:7})}),e.conversion.for("upcast").elementToAttribute({model:{key:d,value:e=>e.getStyle("font-family")},view:{name:"span",styles:{"font-family":/.*/}}})}_prepareCompatibilityConverter(){this.editor.conversion.for("upcast").elementToAttribute({view:{name:"font",attributes:{face:/.*/}},model:{key:d,value:e=>e.getAttribute("face")}})}}class x extends s.k_{static get pluginName(){return"FontFamilyUI"}static get isOfficialPlugin(){return!0}init(){let e=this.editor,t=e.t,i=this._getLocalizedOptions(),s=e.commands.get(d),l=t("Font Family"),a=function(e,t){let i=new n.pM;for(let s of e){let e={type:"button",model:new o.e_({commandName:d,commandParam:s.model,label:s.title,role:"menuitemradio",withText:!0})};e.model.bind("isOn").to(t,"value",e=>e===s.model||!!e&&!!s.model&&k(e)[0].toLowerCase()===k(s.model)[0].toLowerCase()),s.view&&"string"!=typeof s.view&&s.view.styles&&e.model.set("labelStyle",`font-family: ${s.view.styles["font-family"]}`),i.add(e)}return i}(i,s);e.ui.componentFactory.add(d,t=>{let i=(0,o.yu)(t);return(0,o.O)(i,a,{role:"menu",ariaLabel:l}),i.buttonView.set({label:l,icon:r.DPE,tooltip:!0}),i.extendTemplate({attributes:{class:"ck-font-family-dropdown"}}),i.bind("isEnabled").to(s),this.listenTo(i,"execute",t=>{e.execute(t.source.commandName,{value:t.source.commandParam}),e.editing.view.focus()}),i}),e.ui.componentFactory.add(`menuBar:${d}`,t=>{let i=new o.zj(t);i.buttonView.set({label:l,icon:r.DPE}),i.bind("isEnabled").to(s);let n=new o.BY(t);for(let s of a){let r=new o.I8(t,i),l=new o.kS(t);l.set({role:"menuitemradio",isToggleable:!0}),l.bind(...Object.keys(s.model)).to(s.model),l.delegate("execute").to(i),l.on("execute",()=>{e.execute(s.model.commandName,{value:s.model.commandParam}),e.editing.view.focus()}),r.children.add(l),n.items.add(r)}return i.panelView.children.add(n),i})}_getLocalizedOptions(){let e=this.editor,t=e.t;return w(e.config.get(d).options).map(e=>("Default"===e.title&&(e.title=t("Default")),e))}}class V extends s.k_{static get requires(){return[y,x]}static get pluginName(){return"FontFamily"}static get isOfficialPlugin(){return!0}}class v extends a{constructor(e){super(e,c)}}function T(e){return e.map(e=>(function(e){var t,i,s;if("number"==typeof e&&(e=String(e)),"object"==typeof e&&(t=e).title&&t.model&&t.view)return E(e);let o="string"==typeof(i=e)?C[i]:C[i.model];return o?E(o):"default"===e?{model:void 0,title:"Default"}:!function(e){let t;if("object"==typeof e)if(e.model)t=parseFloat(e.model);else throw new n.Yb("font-size-invalid-definition",null,e);else t=parseFloat(e);return isNaN(t)}(e)?("string"==typeof(s=e)&&(s={title:s,model:`${parseFloat(s)}px`}),s.view={name:"span",styles:{"font-size":s.model}},E(s)):void 0})(e)).filter(e=>void 0!==e)}let C={get tiny(){return{title:"Tiny",model:"tiny",view:{name:"span",classes:"text-tiny",priority:7}}}
2,get small(){return{title:"Small",model:"small",view:{name:"span",classes:"text-small",priority:7}}},get big(){return{title:"Big",model:"big",view:{name:"span",classes:"text-big",priority:7}}},get huge(){return{title:"Huge",model:"huge",view:{name:"span",classes:"text-huge",priority:7}}}};function E(e){return e.view&&"string"!=typeof e.view&&!e.view.priority&&(e.view.priority=7),e}let j=["x-small","x-small","small","medium","large","x-large","xx-large","xxx-large"];class P extends s.k_{static get pluginName(){return"FontSizeEditing"}static get isOfficialPlugin(){return!0}constructor(e){super(e),e.config.define(c,{options:["tiny","small","default","big","huge"],supportAllValues:!1})}init(){let e=this.editor;e.model.schema.extend("$text",{allowAttributes:c}),e.model.schema.setAttributeProperties(c,{isFormatting:!0,copyOnEnter:!0});let t=e.config.get("fontSize.supportAllValues"),i=m(c,T(this.editor.config.get("fontSize.options")).filter(e=>e.model));t?(this._prepareAnyValueConverters(i),this._prepareCompatibilityConverter()):e.conversion.attributeToElement(i),e.commands.add(c,new v(e))}_prepareAnyValueConverters(e){let t=this.editor,i=e.model.values.filter(e=>!(0,l.n0Z)(String(e))&&!(0,l.r_y)(String(e)));if(i.length)throw new n.Yb("font-size-invalid-use-of-named-presets",null,{presets:i});t.conversion.for("downcast").attributeToElement({model:c,view:(e,{writer:t})=>{if(e)return t.createAttributeElement("span",{style:"font-size:"+e},{priority:7})}}),t.conversion.for("upcast").elementToAttribute({model:{key:c,value:e=>e.getStyle("font-size")},view:{name:"span",styles:{"font-size":/.*/}}})}_prepareCompatibilityConverter(){this.editor.conversion.for("upcast").elementToAttribute({view:{name:"font",attributes:{size:/^[+-]?\d{1,3}$/}},model:{key:c,value:e=>{let t=e.getAttribute("size"),i="-"===t[0]||"+"===t[0],s=parseInt(t,10);i&&(s=3+s);let o=Math.min(Math.max(s,0),j.length-1);return j[o]}}})}}class B extends s.k_{static get pluginName(){return"FontSizeUI"}static get isOfficialPlugin(){return!0}init(){let e=this.editor,t=e.t,i=this._getLocalizedOptions(),s=e.commands.get(c),l=t("Font Size"),a=function(e,t){let i=new n.pM;for(let s of e){let e={type:"button",model:new o.e_({commandName:c,commandParam:s.model,label:s.title,class:"ck-fontsize-option",role:"menuitemradio",withText:!0})};s.view&&"string"!=typeof s.view&&(s.view.styles&&e.model.set("labelStyle",`font-size:${s.view.styles["font-size"]}`),s.view.classes&&e.model.set("class",`${e.model.class} ${s.view.classes}`)),e.model.bind("isOn").to(t,"value",e=>e===s.model),i.add(e)}return i}(i,s);e.ui.componentFactory.add(c,t=>{let i=(0,o.yu)(t);return(0,o.O)(i,a,{role:"menu",ariaLabel:l}),i.buttonView.set({label:l,icon:r.mW7,tooltip:!0}),i.extendTemplate({attributes:{class:["ck-font-size-dropdown"]}}),i.bind("isEnabled").to(s),this.listenTo(i,"execute",t=>{e.execute(t.source.commandName,{value:t.source.commandParam}),e.editing.view.focus()}),i}),e.ui.componentFactory.add(`menuBar:${c}`,t=>{let i=new o.zj(t);i.buttonView.set({label:l,icon:r.mW7}),i.bind("isEnabled").to(s);let n=new o.BY(t);for(let s of a){let r=new o.I8(t,i),l=new o.kS(t);l.set({role:"menuitemradio",isToggleable:!0}),l.bind(...Object.keys(s.model)).to(s.model),l.delegate("execute").to(i),l.on("execute",()=>{e.execute(s.model.commandName,{value:s.model.commandParam}),e.editing.view.focus()}),r.children.add(l),n.items.add(r)}return i.panelView.children.add(n),i})}_getLocalizedOptions(){let e=this.editor,t=e.t,i={Default:t("Default"),Tiny:t("Tiny"),Small:t("Small"),Big:t("Big"),Huge:t("Huge")};return T(e.config.get(c).options).map(e=>{let t=i[e.title];return t&&t!=e.title&&(e=Object.assign({},e,{title:t})),e})}}class F extends s.k_{static get requires(){return[P,B]}static get pluginName(){return"FontSize"}static get isOfficialPlugin(){return!0}normalizeSizeOptions(e){return T(e)}}class S extends a{constructor(e){super(e,h)}}class R extends s.k_{static get pluginName(){return"FontColorEditing"}static get isOfficialPlugin(){return!0}constructor(e){super(e),e.config.define(h,{colors:[{color:"hsl(0, 0%, 0%)",label:"Black"},{color:"hsl(0, 0%, 30%)",label:"Dim grey"},{color:"hsl(0, 0%, 60%)",label:"Grey"},{color:"hsl(0, 0%, 90%)",label:"Light grey"},{color:"hsl(0, 0%, 100%)",label:"White",hasBorder:!0},{color:"hsl(0, 75%, 60%)",label:"Red"},{color:"hsl(30, 75%, 60%)",label:"Orange"},{color:"hsl(60, 75%, 60%)",label:"Yellow"},{color:"hsl(90, 75%, 60%)",label:"Light green"},{color:"hsl(120, 75%, 60%)",label:"Green"},{color:"hsl(150, 75%, 60%)",label:"Aquamarine"},{color:"hsl(180, 75%, 60%)",label:"Turquoise"},{color:"hsl(210, 75%, 60%)",label:"Light blue"},{color:"hsl(240, 75%, 60%)",label:"Blue"},{color:"hsl(270, 75%, 60%)",label:"Purple"}],columns:5}),e.conversion.for("upcast").elementToAttribute({view:{name:"span",styles:{color:/[\s\S]+/}},model:{key:h,value:g("color")}}),e.conversion.for("upcast").elementToAttribute({view:{name:"font",attributes:{color:/^#?\w+$/}},model:{key:h,value:e=>e.getAttribute("color")}}),e.conversion.for("downcast").attributeToElement({model:h,view:f("color")}),e.commands.add(h,new S(e)),e.model.schema.extend("$text",{allowAttributes:h}),e.model.schema.setAttributeProperties(h,{isFormatting:!0,copyOnEnter:!0})}}class A extends s.k_{commandName;componentName;icon;dropdownLabel;columns;constructor(e,{commandName:t,componentName:i,icon:s,dropdownLabel:o}){super(e),this.commandName=t,this.componentName=i,this.icon=s,this.dropdownLabel=o,this.columns=e.config.get(`${this.componentName}.columns`)}init(){let e=this.editor,t=e.locale,i=t.t,s=e.commands.get(this.commandName),n=e.config.get(this.componentName),r=(0,o.lF)(n.colors),l=(0,o.b2)(t,r),a=n.documentColors,c=!1!==n.colorPicker;e.ui.componentFactory.add(this.componentName,t=>{let r=(0,o.yu)(t),d=!1,h=function({dropdownView:e,colors:t,columns:i,removeButtonLabel:s,colorPickerLabel:n,documentColorsLabel:r,documentColorsCount:l,colorPickerViewConfig:a}){let c=e.locale,d=new o.oB(c,{colors:t,columns:i,removeButtonLabel:s,colorPickerLabel:n,documentColorsLabel:r,documentColorsCount:l,colorPickerViewConfig:a});return e.colorSelectorView=d,e.panelView.children.add(d),d}({dropdownView:r,colors:l.map(e=>({label:e.label,color:e.model,options:{hasBorder:e.hasBorder}}
2)),columns:this.columns,removeButtonLabel:i("Remove color"),colorPickerLabel:i("Color picker"),documentColorsLabel:0!==a?i("Document colors"):"",documentColorsCount:void 0===a?this.columns:a,colorPickerViewConfig:!!c&&(n.colorPicker||{})});return h.bind("selectedColor").to(s,"value"),r.buttonView.set({label:this.dropdownLabel,icon:this.icon,tooltip:!0}),r.extendTemplate({attributes:{class:"ck-color-ui-dropdown"}}),r.bind("isEnabled").to(s),h.on("execute",(t,i)=>{r.isOpen&&e.execute(this.commandName,{value:i.value,batch:this._undoStepBatch}),"colorPicker"!==i.source&&e.editing.view.focus(),"colorPickerSaveButton"===i.source&&(r.isOpen=!1)}),h.on("colorPicker:show",()=>{this._undoStepBatch=e.model.createBatch()}),h.on("colorPicker:cancel",()=>{this._undoStepBatch.operations.length&&(r.isOpen=!1,e.execute("undo",this._undoStepBatch)),e.editing.view.focus()}),r.on("change:isOpen",(t,i,s)=>{d||(d=!0,r.colorSelectorView.appendUI()),s&&(0!==a&&h.updateDocumentColors(e.model,this.componentName),h.updateSelectedColors(),h.showColorGridsFragment())}),(0,o.Zn)(r,()=>r.colorSelectorView.colorGridsFragmentView.staticColorsGrid.items.find(e=>e.isOn)),r}),e.ui.componentFactory.add(`menuBar:${this.componentName}`,t=>{let n=new o.zj(t);n.buttonView.set({label:this.dropdownLabel,icon:this.icon}),n.bind("isEnabled").to(s);let r=!1,c=new o.oB(t,{colors:l.map(e=>({label:e.label,color:e.model,options:{hasBorder:e.hasBorder}})),columns:this.columns,removeButtonLabel:i("Remove color"),colorPickerLabel:i("Color picker"),documentColorsLabel:0!==a?i("Document colors"):"",documentColorsCount:void 0===a?this.columns:a,colorPickerViewConfig:!1});return c.bind("selectedColor").to(s,"value"),c.delegate("execute").to(n),c.on("execute",(t,i)=>{e.execute(this.commandName,{value:i.value,batch:this._undoStepBatch}),e.editing.view.focus()}),n.on("change:isOpen",(t,i,s)=>{r||(r=!0,c.appendUI()),s&&(0!==a&&c.updateDocumentColors(e.model,this.componentName),c.updateSelectedColors(),c.showColorGridsFragment())}),n.panelView.children.add(c),n})}}class O extends A{constructor(e){super(e,{commandName:h,componentName:h,icon:r.S_R,dropdownLabel:e.locale.t("Font Color")})}static get pluginName(){return"FontColorUI"}}class I extends s.k_{static get requires(){return[R,O]}static get pluginName(){return"FontColor"}static get isOfficialPlugin(){return!0}}class N extends a{constructor(e){super(e,u)}}class D extends s.k_{static get pluginName(){return"FontBackgroundColorEditing"}static get isOfficialPlugin(){return!0}constructor(e){super(e),e.config.define(u,{colors:[{color:"hsl(0, 0%, 0%)",label:"Black"},{color:"hsl(0, 0%, 30%)",label:"Dim grey"},{color:"hsl(0, 0%, 60%)",label:"Grey"},{color:"hsl(0, 0%, 90%)",label:"Light grey"},{color:"hsl(0, 0%, 100%)",label:"White",hasBorder:!0},{color:"hsl(0, 75%, 60%)",label:"Red"},{color:"hsl(30, 75%, 60%)",label:"Orange"},{color:"hsl(60, 75%, 60%)",label:"Yellow"},{color:"hsl(90, 75%, 60%)",label:"Light green"},{color:"hsl(120, 75%, 60%)",label:"Green"},{color:"hsl(150, 75%, 60%)",label:"Aquamarine"},{color:"hsl(180, 75%, 60%)",label:"Turquoise"},{color:"hsl(210, 75%, 60%)",label:"Light blue"},{color:"hsl(240, 75%, 60%)",label:"Blue"},{color:"hsl(270, 75%, 60%)",label:"Purple"}],columns:5}),e.data.addStyleProcessorRules(l.$xF),e.conversion.for("upcast").elementToAttribute({view:{name:"span",styles:{"background-color":/[\s\S]+/}},model:{key:u,value:g("background-color")}}),e.conversion.for("downcast").attributeToElement({model:u,view:f("background-color")}),e.commands.add(u,new N(e)),e.model.schema.extend("$text",{allowAttributes:u}),e.model.schema.setAttributeProperties(u,{isFormatting:!0,copyOnEnter:!0})}}class L extends A{constructor(e){super(e,{commandName:u,componentName:u,icon:r.zbU,dropdownLabel:e.locale.t("Font Background Color")})}static get pluginName(){return"FontBackgroundColorUI"}}class M extends s.k_{static get requires(){return[D,L]}static get pluginName(){return"FontBackgroundColor"}static get isOfficialPlugin(){return!0}}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.