Current section

Files

Jump to
ckeditor5_phoenix dist index.cjs
Raw

dist/index.cjs

"use strict";var X=Object.create;var z=Object.defineProperty;var Q=Object.getOwnPropertyDescriptor;var Z=Object.getOwnPropertyNames;var tt=Object.getPrototypeOf,et=Object.prototype.hasOwnProperty;var rt=(a,t,e,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Z(t))!et.call(a,n)&&n!==e&&z(a,n,{get:()=>t[n],enumerable:!(i=Q(t,n))||i.enumerable});return a};var r=(a,t,e)=>(e=a!=null?X(tt(a)):{},rt(t||!a||!a.__esModule?z(e,"default",{value:a,enumerable:!0}):e,a));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class q{items=new Map;initializationErrors=new Map;pendingCallbacks=new Map;watchers=new Set;execute(t,e,i){const n=this.items.get(t),s=this.initializationErrors.get(t);return s?(i?.(s),Promise.reject(s)):n?Promise.resolve(e(n)):new Promise((o,c)=>{const u=this.getPendingCallbacks(t);u.success.push(async p=>{o(await e(p))}),i?u.error.push(i):u.error.push(c)})}register(t,e){if(this.items.has(t))throw new Error(`Item with ID "${t}" is already registered.`);this.resetErrors(t),this.items.set(t,e);const i=this.pendingCallbacks.get(t);i&&(i.success.forEach(n=>n(e)),this.pendingCallbacks.delete(t)),this.registerAsDefault(t,e),this.notifyWatchers()}error(t,e){this.items.delete(t),this.initializationErrors.set(t,e);const i=this.pendingCallbacks.get(t);i&&(i.error.forEach(n=>n(e)),this.pendingCallbacks.delete(t)),this.initializationErrors.size===1&&!this.items.size&&this.error(null,e),this.notifyWatchers()}resetErrors(t){const{initializationErrors:e}=this;e.has(null)&&e.get(null)===e.get(t)&&e.delete(null),e.delete(t)}unregister(t){if(!this.items.has(t))throw new Error(`Item with ID "${t}" is not registered.`);t&&this.items.get(null)===this.items.get(t)&&this.unregister(null),this.items.delete(t),this.pendingCallbacks.delete(t),this.notifyWatchers()}getItems(){return Array.from(this.items.values())}hasItem(t){return this.items.has(t)}waitFor(t){return new Promise((e,i)=>{this.execute(t,e,i)})}async destroyAll(){const t=Array.from(new Set(this.items.values())).map(e=>e.destroy());this.items.clear(),this.pendingCallbacks.clear(),await Promise.all(t),this.notifyWatchers()}watch(t){return this.watchers.add(t),t(new Map(this.items),new Map(this.initializationErrors)),this.unwatch.bind(this,t)}unwatch(t){this.watchers.delete(t)}notifyWatchers(){this.watchers.forEach(t=>t(new Map(this.items),new Map(this.initializationErrors)))}getPendingCallbacks(t){let e=this.pendingCallbacks.get(t);return e||(e={success:[],error:[]},this.pendingCallbacks.set(t,e)),e}registerAsDefault(t,e){this.items.size===1&&t!==null&&this.register(null,e)}}function at(a){return a.replace(/[-_\s]+(.)?/g,(t,e)=>e?e.toUpperCase():"").replace(/^./,t=>t.toLowerCase())}function A(a,t){let e=null;return(...i)=>{e&&clearTimeout(e),e=setTimeout(()=>{t(...i)},a)}}function it(a){if(Object.prototype.toString.call(a)!=="[object Object]")return!1;const t=Object.getPrototypeOf(a);return t===Object.prototype||t===null}function E(a){if(Array.isArray(a))return a.map(E);if(it(a)){const t=Object.create(null);for(const[e,i]of Object.entries(a))t[at(e)]=E(i);return t}return a}class k{state="mounting";el;liveSocket;pushEvent;pushEventTo;handleEvent;isBeingDestroyed(){return this.state==="destroyed"||this.state==="destroying"}}function P(a){return{async mounted(){const t=new a;this.el.instance=t,t.el=this.el,t.liveSocket=this.liveSocket,t.pushEvent=(i,n,s)=>this.pushEvent?.(i,n,s),t.pushEventTo=(i,n,s,o)=>this.pushEventTo?.(i,n,s,o),t.handleEvent=(i,n)=>this.handleEvent?.(i,n),t.state="mounting";const e=await t.mounted?.();return t.state="mounted",e},beforeUpdate(){this.el.instance.beforeUpdate?.()},async destroyed(){const{instance:t}=this.el;t.state="destroying",await t.destroyed?.(),t.state="destroyed"},disconnected(){this.el.instance.disconnected?.()},reconnected(){this.el.instance.reconnected?.()}}}function B(a){return Object.keys(a).length===0&&a.constructor===Object}function D(a,t){const e=Object.entries(a).map(([i,n])=>[i,t(n,i)]);return Object.fromEntries(e)}function R(a){if(a===null)return null;const t=Number.parseInt(a,10);return Number.isNaN(t)?null:t}function nt(){return Math.random().toString(36).substring(2)}const T=Symbol.for("context-editor-watchdog");async function st({element:a,context:t,creator:e,config:i}){const n=nt();await t.add({creator:(u,p)=>e.create(u,p),id:n,sourceElementOrData:a,type:"editor",config:i});const s=t.getItem(n),o={state:"available",editorContextId:n,context:t};s[T]=o;const c=t.destroy.bind(t);return t.destroy=async()=>(o.state="unavailable",c()),{...o,editor:s}}function L(a){return T in a?a[T]:null}function $(a){return["inline","classic","balloon","decoupled"].includes(a)}async function ot(a){const t=await import("ckeditor5"),i={inline:t.InlineEditor,balloon:t.BalloonEditor,classic:t.ClassicEditor,decoupled:t.DecoupledEditor,multiroot:t.MultiRootEditor}[a];if(!i)throw new Error(`Unsupported editor type: ${a}`);return i}class v{static the=new v;plugins=new Map;constructor(){}register(t,e){if(this.plugins.has(t))throw new Error(`Plugin with name "${t}" is already registered.`);return this.plugins.set(t,e),this.unregister.bind(this,t)}unregister(t){if(!this.plugins.has(t))throw new Error(`Plugin with name "${t}" is not registered.`);this.plugins.delete(t)}unregisterAll(){this.plugins.clear()}async get(t){return this.plugins.get(t)?.()}has(t){return this.plugins.has(t)}}async function U(a){const t=await import("ckeditor5");let e=null;const i=a.map(async n=>{const s=await v.the.get(n);if(s)return s;const{[n]:o}=t;if(o)return o;if(!e)try{e=await import("ckeditor5-premium-features")}catch(u){console.error(`Failed to load premium package: ${u}`)}const{[n]:c}=e||{};if(c)return c;throw new Error(`Plugin "${n}" not found in base or premium packages.`)});return{loadedPlugins:await Promise.all(i),hasPremium:!!e}}async function _(a,t){const e=[a.ui,a.content];return await Promise.all([N("ckeditor5",e),t&&N("ckeditor5-premium-features",e)].filter(n=>!!n)).then(n=>n.flat())}async function N(a,t){return await Promise.all(t.filter(e=>e!=="en").map(async e=>{const i=await ct(a,e);return i?.default??i}).filter(Boolean))}async function ct(a,t){try{if(a==="ckeditor5")switch(t){case"af":return await import("ckeditor5/translations/af.js");case"ar":return await import("ckeditor5/translations/ar.js");case"ast":return await import("ckeditor5/translations/ast.js");case"az":return await import("ckeditor5/translations/az.js");case"bg":return await import("ckeditor5/translations/bg.js");case"bn":return await import("ckeditor5/translations/bn.js");case"bs":return await import("ckeditor5/translations/bs.js");case"ca":return await import("ckeditor5/translations/ca.js");case"cs":return await import("ckeditor5/translations/cs.js");case"da":return await import("ckeditor5/translations/da.js");case"de":return await import("ckeditor5/translations/de.js");case"de-ch":return await import("ckeditor5/translations/de-ch.js");case"el":return await import("ckeditor5/translations/el.js");case"en":return await import("ckeditor5/translations/en.js");case"en-au":return await import("ckeditor5/translations/en-au.js");case"en-gb":return await import("ckeditor5/translations/en-gb.js");case"eo":return await import("ckeditor5/translations/eo.js");case"es":return await import("ckeditor5/translations/es.js");case"es-co":return await import("ckeditor5/translations/es-co.js");case"et":return await import("ckeditor5/translations/et.js");case"eu":return await import("ckeditor5/translations/eu.js");case"fa":return await import("ckeditor5/translations/fa.js");case"fi":return await import("ckeditor5/translations/fi.js");case"fr":return await import("ckeditor5/translations/fr.js");case"gl":return await import("ckeditor5/translations/gl.js");case"gu":return await import("ckeditor5/translations/gu.js");case"he":return await import("ckeditor5/translations/he.js");case"hi":return await import("ckeditor5/translations/hi.js");case"hr":return await import("ckeditor5/translations/hr.js");case"hu":return await import("ckeditor5/translations/hu.js");case"hy":return await import("ckeditor5/translations/hy.js");case"id":return await import("ckeditor5/translations/id.js");case"it":return await import("ckeditor5/translations/it.js");case"ja":return await import("ckeditor5/translations/ja.js");case"jv":return await import("ckeditor5/translations/jv.js");case"kk":return await import("ckeditor5/translations/kk.js");case"km":return await import("ckeditor5/translations/km.js");case"kn":return await import("ckeditor5/translations/kn.js");case"ko":return await import("ckeditor5/translations/ko.js");case"ku":return await import("ckeditor5/translations/ku.js");case"lt":return await import("ckeditor5/translations/lt.js");case"lv":return await import("ckeditor5/translations/lv.js");case"ms":return await import("ckeditor5/translations/ms.js");case"nb":return await import("ckeditor5/translations/nb.js");case"ne":return await import("ckeditor5/translations/ne.js");case"nl":return await import("ckeditor5/translations/nl.js");case"no":return await import("ckeditor5/translations/no.js");case"oc":return await import("ckeditor5/translations/oc.js");case"pl":return await import("ckeditor5/translations/pl.js");case"pt":return await import("ckeditor5/translations/pt.js");case"pt-br":return await import("ckeditor5/translations/pt-br.js");case"ro":return await import("ckeditor5/translations/ro.js");case"ru":return await import("ckeditor5/translations/ru.js");case"si":return await import("ckeditor5/translations/si.js");case"sk":return await import("ckeditor5/translations/sk.js");case"sl":return await import("ckeditor5/translations/sl.js");case"sq":return await import("ckeditor5/translations/sq.js");case"sr":return await import("ckeditor5/translations/sr.js");case"sr-latn":return await import("ckeditor5/translations/sr-latn.js");case"sv":return await import("ckeditor5/translations/sv.js");case"th":return await import("ckeditor5/translations/th.js");case"tk":return await import("ckeditor5/translations/tk.js");case"tr":return await import("ckeditor5/translations/tr.js");case"tt":return await import("ckeditor5/translations/tt.js");case"ug":return await import("ckeditor5/translations/ug.js");case"uk":return await import("ckeditor5/translations/uk.js");case"ur":return await import("ckeditor5/translations/ur.js");case"uz":return await import("ckeditor5/translations/uz.js");case"vi":return await import("ckeditor5/translations/vi.js");case"zh":return await import("ckeditor5/translations/zh.js");case"zh-cn":return await import("ckeditor5/translations/zh-cn.js");default:return console.warn(`Language ${t} not found in ckeditor5 translations`),null}else switch(t){case"af":return await import("ckeditor5-premium-features/translations/af.js");case"ar":return await import("ckeditor5-premium-features/translations/ar.js");case"ast":return await import("ckeditor5-premium-features/translations/ast.js");case"az":return await import("ckeditor5-premium-features/translations/az.js");case"bg":return await import("ckeditor5-premium-features/translations/bg.js");case"bn":return await import("ckeditor5-premium-features/translations/bn.js");case"bs":return await import("ckeditor5-premium-features/translations/bs.js");case"ca":return await import("ckeditor5-premium-features/translations/ca.js");case"cs":return await import("ckeditor5-premium-features/translations/cs.js");case"da":return await import("ckeditor5-premium-features/translations/da.js");case"de":return await import("ckeditor5-premium-features/translations/de.js");case"de-ch":return await import("ckeditor5-premium-features/translations/de-ch.js");case"el":return await import("ckeditor5-premium-features/translations/el.js");case"en":return await import("ckeditor5-premium-features/translations/en.js");case"en-au":return await import("ckeditor5-premium-features/translations/en-au.js");case"en-gb":return await import("ckeditor5-premium-features/translations/en-gb.js");case"eo":return await import("ckeditor5-premium-features/translations/eo.js");case"es":return await import("ckeditor5-premium-features/translations/es.js");case"es-co":return await import("ckeditor5-premium-features/translations/es-co.js");case"et":return await import("ckeditor5-premium-features/translations/et.js");case"eu":return await import("ckeditor5-premium-features/translations/eu.js");case"fa":return await import("ckeditor5-premium-features/translations/fa.js");case"fi":return await import("ckeditor5-premium-features/translations/fi.js");case"fr":return await import("ckeditor5-premium-features/translations/fr.js");case"gl":return await import("ckeditor5-premium-features/translations/gl.js");case"gu":return await import("ckeditor5-premium-features/translations/gu.js");case"he":return await import("ckeditor5-premium-features/translations/he.js");case"hi":return await import("ckeditor5-premium-features/translations/hi.js");case"hr":return await import("ckeditor5-premium-features/translations/hr.js");case"hu":return await import("ckeditor5-premium-features/translations/hu.js");case"hy":return await import("ckeditor5-premium-features/translations/hy.js");case"id":return await import("ckeditor5-premium-features/translations/id.js");case"it":return await import("ckeditor5-premium-features/translations/it.js");case"ja":return await import("ckeditor5-premium-features/translations/ja.js");case"jv":return await import("ckeditor5-premium-features/translations/jv.js");case"kk":return await import("ckeditor5-premium-features/translations/kk.js");case"km":return await import("ckeditor5-premium-features/translations/km.js");case"kn":return await import("ckeditor5-premium-features/translations/kn.js");case"ko":return await import("ckeditor5-premium-features/translations/ko.js");case"ku":return await import("ckeditor5-premium-features/translations/ku.js");case"lt":return await import("ckeditor5-premium-features/translations/lt.js");case"lv":return await import("ckeditor5-premium-features/translations/lv.js");case"ms":return await import("ckeditor5-premium-features/translations/ms.js");case"nb":return await import("ckeditor5-premium-features/translations/nb.js");case"ne":return await import("ckeditor5-premium-features/translations/ne.js");case"nl":return await import("ckeditor5-premium-features/translations/nl.js");case"no":return await import("ckeditor5-premium-features/translations/no.js");case"oc":return await import("ckeditor5-premium-features/translations/oc.js");case"pl":return await import("ckeditor5-premium-features/translations/pl.js");case"pt":return await import("ckeditor5-premium-features/translations/pt.js");case"pt-br":return await import("ckeditor5-premium-features/translations/pt-br.js");case"ro":return await import("ckeditor5-premium-features/translations/ro.js");case"ru":return await import("ckeditor5-premium-features/translations/ru.js");case"si":return await import("ckeditor5-premium-features/translations/si.js");case"sk":return await import("ckeditor5-premium-features/translations/sk.js");case"sl":return await import("ckeditor5-premium-features/translations/sl.js");case"sq":return await import("ckeditor5-premium-features/translations/sq.js");case"sr":return await import("ckeditor5-premium-features/translations/sr.js");case"sr-latn":return await import("ckeditor5-premium-features/translations/sr-latn.js");case"sv":return await import("ckeditor5-premium-features/translations/sv.js");case"th":return await import("ckeditor5-premium-features/translations/th.js");case"tk":return await import("ckeditor5-premium-features/translations/tk.js");case"tr":return await import("ckeditor5-premium-features/translations/tr.js");case"tt":return await import("ckeditor5-premium-features/translations/tt.js");case"ug":return await import("ckeditor5-premium-features/translations/ug.js");case"uk":return await import("ckeditor5-premium-features/translations/uk.js");case"ur":return await import("ckeditor5-premium-features/translations/ur.js");case"uz":return await import("ckeditor5-premium-features/translations/uz.js");case"vi":return await import("ckeditor5-premium-features/translations/vi.js");case"zh":return await import("ckeditor5-premium-features/translations/zh.js");case"zh-cn":return await import("ckeditor5-premium-features/translations/zh-cn.js");default:return console.warn(`Language ${t} not found in premium translations`),await import("ckeditor5-premium-features/translations/en.js")}}catch(e){return console.error(`Failed to load translation for ${a}/${t}:`,e),null}}function K(a){return D(a,t=>({dictionary:t}))}function j(a){const t=document.querySelectorAll([`[data-cke-editor-id="${a}"][data-cke-editable-root-name]`,"[data-cke-editable-root-name]:not([data-cke-editor-id])"].join(", "));return Array.from(t).reduce((e,i)=>{const n=i.getAttribute("data-cke-editable-root-name"),s=i.getAttribute("data-cke-editable-initial-value")||"",o=i.querySelector("[data-cke-editable-content]");return!n||!o?e:{...e,[n]:{content:o,initialValue:s}}},Object.create({}))}const V=["inline","classic","balloon","decoupled","multiroot"];function ut(a){const t=a.getAttribute("cke-preset");if(!t)throw new Error('CKEditor5 hook requires a "cke-preset" attribute on the element.');const{type:e,config:i,license:n,...s}=JSON.parse(t);if(!e||!i||!n)throw new Error('CKEditor5 hook configuration must include "editor", "config", and "license" properties.');if(!V.includes(e))throw new Error(`Invalid editor type: ${e}. Must be one of: ${V.join(", ")}.`);return{type:e,license:n,config:E(i),customTranslations:s.customTranslations||s.custom_translations}}function x(a){if(!a||typeof a!="object")return a;if(Array.isArray(a))return a.map(i=>x(i));const t=a;if(t.$element&&typeof t.$element=="string"){const i=document.querySelector(t.$element);return i||console.warn(`Element not found for selector: ${t.$element}`),i||null}const e=Object.create(null);for(const[i,n]of Object.entries(a))e[i]=x(n);return e}function lt(a,t){const{editing:e}=a;e.view.change(i=>{i.setStyle("height",`${t}px`,e.view.document.getRoot())})}const O=Symbol.for("elixir-editor-watchdog");async function dt(a){const{EditorWatchdog:t}=await import("ckeditor5"),e=new t(a);return e.setCreator(async(...i)=>{const n=await a.create(...i);return n[O]=e,n}),{watchdog:e,Constructor:{create:async(...i)=>(await e.create(...i),e.editor)}}}function F(a){return O in a?a[O]:null}class g extends q{static the=new g}function mt(a){const t=a.getAttribute("cke-context");if(!t)throw new Error('CKEditor5 hook requires a "cke-context" attribute on the element.');const{config:e,...i}=JSON.parse(t);return{config:E(e),customTranslations:i.customTranslations||i.custom_translations,watchdogConfig:i.watchdogConfig||i.watchdog_config}}class pt extends k{contextPromise=null;get attrs(){const t=i=>this.el.getAttribute(i)||null,e={id:this.el.id,config:mt(this.el),language:{ui:t("cke-language")||"en",content:t("cke-content-language")||"en"}};return Object.defineProperty(this,"attrs",{value:e,writable:!1,configurable:!1,enumerable:!0}),e}async mounted(){const{id:t,language:e}=this.attrs,{customTranslations:i,watchdogConfig:n,config:{plugins:s,...o}}=this.attrs.config,{loadedPlugins:c,hasPremium:u}=await U(s??[]),m=[...await _(e,u),K(i?.dictionary||{})].filter(b=>!B(b));this.contextPromise=(async()=>{const{ContextWatchdog:b,Context:C}=await import("ckeditor5"),h=new b(C,{crashNumberLimit:10,...n});return await h.create({...o,language:e,plugins:c,...m.length&&{translations:m}}),h.on("itemError",(...y)=>{console.error("Context item error:",...y)}),h})();const f=await this.contextPromise;this.isBeingDestroyed()||g.the.register(t,f)}async destroyed(){const{id:t}=this.attrs;this.el.style.display="none";try{await(await this.contextPromise)?.destroy()}finally{this.contextPromise=null,g.the.hasItem(t)&&g.the.unregister(t)}}}function ht(a){return a.hasAttribute("cke-context")}function wt(a){let t=a;for(;t;){if(ht(t))return t;t=t.parentElement}return null}async function gt(a){const t=wt(a);return t?g.the.waitFor(t.id):null}const ft=P(pt);class d extends q{static the=new d}class bt extends k{editorPromise=null;get attrs(){const t={editableId:this.el.getAttribute("id"),editorId:this.el.getAttribute("data-cke-editor-id")||null,rootName:this.el.getAttribute("data-cke-editable-root-name"),initialValue:this.el.getAttribute("data-cke-editable-initial-value")||""};return Object.defineProperty(this,"attrs",{value:t,writable:!1,configurable:!1,enumerable:!0}),t}async mounted(){const{editableId:t,editorId:e,rootName:i,initialValue:n}=this.attrs,s=this.el.querySelector(`#${t}_input`);this.editorPromise=d.the.execute(e,o=>{const{ui:c,editing:u,model:p}=o;if(p.document.getRoot(i))return o;o.addRoot(i,{isUndoable:!1,data:n});const m=this.el.querySelector("[data-cke-editable-content]"),f=c.view.createEditable(i,m);return c.addEditable(f),u.view.forceRender(),s&&Et(s,o,i),o})}async destroyed(){const{rootName:t}=this.attrs;this.el.style.display="none";const e=await this.editorPromise;if(this.editorPromise=null,e&&e.state!=="destroyed"){const i=e.model.document.getRoot(t);i&&"detachEditable"in e&&(e.detachEditable(i),e.detachRoot(t,!1))}}}const yt=P(bt);function Et(a,t,e){const i=()=>{a.value=t.getData({rootName:e})};t.model.document.on("change:data",A(100,i)),i()}class kt extends k{editorPromise=null;get attrs(){const{el:t}=this,e=t.getAttribute.bind(t),i=t.hasAttribute.bind(t),n={editorId:e("id"),contextId:e("cke-context-id"),preset:ut(t),editableHeight:R(e("cke-editable-height")),watchdog:i("cke-watchdog"),events:{change:i("cke-change-event"),blur:i("cke-blur-event"),focus:i("cke-focus-event")},saveDebounceMs:R(e("cke-save-debounce-ms"))??400,language:{ui:e("cke-language")||"en",content:e("cke-content-language")||"en"}};return Object.defineProperty(this,"attrs",{value:n,writable:!1,configurable:!1,enumerable:!0}),n}async mounted(){const{editorId:t}=this.attrs;d.the.resetErrors(t);try{this.editorPromise=this.createEditor();const e=await this.editorPromise;this.isBeingDestroyed()||(d.the.register(t,e),e.once("destroy",()=>{d.the.hasItem(t)&&d.the.unregister(t)}))}catch(e){this.editorPromise=null,d.the.error(t,e)}return this}async destroyed(){this.el.style.display="none";try{const t=await this.editorPromise;if(!t)return;const e=L(t),i=F(t);e?e.state!=="unavailable"&&await e.context.remove(e.editorContextId):i?await i.destroy():await t.destroy()}finally{this.editorPromise=null}}async createEditor(){const{preset:t,editorId:e,contextId:i,editableHeight:n,events:s,saveDebounceMs:o,language:c,watchdog:u}=this.attrs,{customTranslations:p,type:m,license:f,config:{plugins:b,...C}}=t;let h=await ot(m);const y=await(i?g.the.waitFor(i):gt(this.el));if(u&&!y){const l=await dt(h);({Constructor:h}=l),l.watchdog.on("restart",()=>{const H=l.watchdog.editor;this.editorPromise=Promise.resolve(H),d.the.register(e,H)})}const{loadedPlugins:Y,hasPremium:J}=await U(b),S=[...await _(c,J),K(p?.dictionary||{})].filter(l=>!B(l)),I=Ct(e,m),M={...x(C),initialData:It(e,m),licenseKey:f.key,plugins:Y,language:c,...S.length&&{translations:S}},w=await(async()=>!y||!(I instanceof HTMLElement)?h.create(I,M):(await st({context:y,element:I,creator:h,config:M})).editor)();if(s.change&&this.setupTypingContentPush(e,w,o),s.blur&&this.setupEventPush(e,w,"blur"),s.focus&&this.setupEventPush(e,w,"focus"),this.handleEvent("ckeditor5:set-data",({data:l})=>{w.setData(l)}),$(m)){const l=document.getElementById(`${e}_input`);l&&Pt(l,w,o),n&&lt(w,n)}return w}setupTypingContentPush(t,e,i){const n=()=>{this.pushEvent("ckeditor5:change",{editorId:t,data:W(e)})};e.model.document.on("change:data",A(i,n)),n()}setupEventPush(t,e,i){const n=()=>{const{isFocused:s}=e.ui.focusTracker;(s?"focus":"blur")===i&&this.pushEvent(`ckeditor5:${i}`,{editorId:t,data:W(e)})};e.ui.focusTracker.on("change:isFocused",n)}}function W(a){return a.model.document.getRootNames().reduce((e,i)=>(e[i]=a.getData({rootName:i}),e),Object.create({}))}function Pt(a,t,e){const i=()=>{const n=t.getData();a.value=n,a.dispatchEvent(new Event("input",{bubbles:!0}))};t.model.document.on("change:data",A(e,i)),vt(a)?.addEventListener("submit",i),i()}function vt(a){return a.closest("form")}function Ct(a,t){if(t==="decoupled"){const{content:i}=G(a);return i}if($(t))return document.getElementById(`${a}_editor`);const e=j(a);return D(e,({content:i})=>i)}function It(a,t){if(t==="decoupled"){const{initialValue:i}=G(a);if(i)return i}if($(t))return document.getElementById(a)?.getAttribute("cke-initial-value")||"";const e=j(a);return D(e,({initialValue:i})=>i)}function G(a){const t=j(a).main;if(!t)throw new Error(`No "main" editable found for editor with ID "${a}".`);return t}const Tt=P(kt);class xt extends k{mountedPromise=null;get attrs(){const t={editorId:this.el.getAttribute("data-cke-editor-id")||null,name:this.el.getAttribute("data-cke-ui-part-name")};return Object.defineProperty(this,"attrs",{value:t,writable:!1,configurable:!1,enumerable:!0}),t}async mounted(){const{editorId:t,name:e}=this.attrs;this.mountedPromise=d.the.execute(t,i=>{const{ui:n}=i,s=Ot(e),o=n.view[s];if(!o){console.error(`Unknown UI part name: "${e}". Supported names are "toolbar" and "menubar".`);return}this.el.appendChild(o.element)})}async destroyed(){this.el.style.display="none",await this.mountedPromise,this.mountedPromise=null,this.el.innerHTML=""}}function Ot(a){switch(a){case"toolbar":return"toolbar";case"menubar":return"menuBarView";default:return null}}const At=P(xt),Dt={CKEditor5:Tt,CKEditable:yt,CKUIPart:At,CKContext:ft};exports.CustomEditorPluginsRegistry=v;exports.EditorsRegistry=d;exports.Hooks=Dt;exports.unwrapEditorContext=L;exports.unwrapEditorWatchdog=F;
//# sourceMappingURL=index.cjs.map