ckeditor5-symfony 1.8.0 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/dist/elements/editor/editor.d.ts.map +1 -1
  2. package/dist/elements/editor/types/editor-relaxed-constructor.type.d.ts +6 -0
  3. package/dist/elements/editor/types/editor-relaxed-constructor.type.d.ts.map +1 -0
  4. package/dist/elements/editor/types/index.d.ts +2 -0
  5. package/dist/elements/editor/types/index.d.ts.map +1 -0
  6. package/dist/elements/editor/utils/assign-initial-data-to-editor-config.d.ts +10 -0
  7. package/dist/elements/editor/utils/assign-initial-data-to-editor-config.d.ts.map +1 -0
  8. package/dist/elements/editor/utils/assign-source-elements-to-editor-config.d.ts +12 -0
  9. package/dist/elements/editor/utils/assign-source-elements-to-editor-config.d.ts.map +1 -0
  10. package/dist/elements/editor/utils/create-editor-in-context.d.ts +1 -3
  11. package/dist/elements/editor/utils/create-editor-in-context.d.ts.map +1 -1
  12. package/dist/elements/editor/utils/index.d.ts +2 -0
  13. package/dist/elements/editor/utils/index.d.ts.map +1 -1
  14. package/dist/index.cjs +2 -2
  15. package/dist/index.cjs.map +1 -1
  16. package/dist/index.mjs +207 -163
  17. package/dist/index.mjs.map +1 -1
  18. package/package.json +3 -3
  19. package/src/elements/editable.ts +1 -1
  20. package/src/elements/editor/editor.ts +19 -23
  21. package/src/elements/editor/types/editor-relaxed-constructor.type.ts +6 -0
  22. package/src/elements/editor/types/index.ts +1 -0
  23. package/src/elements/editor/utils/assign-initial-data-to-editor-config.ts +47 -0
  24. package/src/elements/editor/utils/assign-source-elements-to-editor-config.ts +60 -0
  25. package/src/elements/editor/utils/create-editor-in-context.ts +2 -5
  26. package/src/elements/editor/utils/index.ts +2 -0
@@ -1 +1 @@
1
- {"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../../../src/elements/editor/editor.ts"],"names":[],"mappings":"AA4BA;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,WAAW;IACrD;;OAEG;IACH,OAAO,CAAC,aAAa,CAA6B;IAElD;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAKxC;;OAEG;YACW,gBAAgB;IAwD9B;;;OAGG;IACH,oBAAoB;IASpB;;OAEG;YACW,YAAY;CAoJ3B"}
1
+ {"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../../../src/elements/editor/editor.ts"],"names":[],"mappings":"AA8BA;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,WAAW;IACrD;;OAEG;IACH,OAAO,CAAC,aAAa,CAA6B;IAElD;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAKxC;;OAEG;YACW,gBAAgB;IAwD9B;;;OAGG;IACH,oBAAoB;IASpB;;OAEG;YACW,YAAY;CA8I3B"}
@@ -0,0 +1,6 @@
1
+ import { Editor } from 'ckeditor5';
2
+ export type EditorRelaxedConstructor<TEditor extends Editor = Editor> = {
3
+ create: (...args: any) => Promise<TEditor>;
4
+ editorName?: string;
5
+ };
6
+ //# sourceMappingURL=editor-relaxed-constructor.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor-relaxed-constructor.type.d.ts","sourceRoot":"","sources":["../../../../../src/elements/editor/types/editor-relaxed-constructor.type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,MAAM,wBAAwB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,IAAI;IACtE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './editor-relaxed-constructor.type';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/elements/editor/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,mCAAmC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { EditorConfig } from 'ckeditor5';
2
+ /**
3
+ * Assigns initial data to specified editor config.
4
+ *
5
+ * @param dataOrMap Initial data to be assigned to config.
6
+ * @param config Config of the editor.
7
+ * @returns The updated configuration object.
8
+ */
9
+ export declare function assignInitialDataToEditorConfig<C extends EditorConfig>(dataOrMap: string | Record<string, string>, config: C): C;
10
+ //# sourceMappingURL=assign-initial-data-to-editor-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assign-initial-data-to-editor-config.d.ts","sourceRoot":"","sources":["../../../../../src/elements/editor/utils/assign-initial-data-to-editor-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9C;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAAC,CAAC,SAAS,YAAY,EACpE,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC1C,MAAM,EAAE,CAAC,GACR,CAAC,CA8BH"}
@@ -0,0 +1,12 @@
1
+ import { EditorConfig } from 'ckeditor5';
2
+ import { EditorRelaxedConstructor } from '../types/editor-relaxed-constructor.type';
3
+ /**
4
+ * Assigns a DOM element to the editor configuration in a way that is compatible with the specific editor type.
5
+ *
6
+ * @param Editor Constructor of the editor used to determine the location of element config entry.
7
+ * @param elementOrMap Element to be assigned to config.
8
+ * @param config Config of the editor.
9
+ * @returns The updated configuration object.
10
+ */
11
+ export declare function assignSourceElementsToEditorConfig<C extends EditorConfig>(Editor: EditorRelaxedConstructor, elementOrMap: HTMLElement | Record<string, HTMLElement>, config: C): C;
12
+ //# sourceMappingURL=assign-source-elements-to-editor-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assign-source-elements-to-editor-config.d.ts","sourceRoot":"","sources":["../../../../../src/elements/editor/utils/assign-source-elements-to-editor-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AAEzF;;;;;;;GAOG;AACH,wBAAgB,kCAAkC,CAAC,CAAC,SAAS,YAAY,EACvE,MAAM,EAAE,wBAAwB,EAChC,YAAY,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACvD,MAAM,EAAE,CAAC,GACR,CAAC,CAuCH"}
@@ -3,13 +3,12 @@ import { Context, ContextWatchdog, Editor, EditorConfig } from 'ckeditor5';
3
3
  * Creates a CKEditor 5 editor instance within a given context watchdog.
4
4
  *
5
5
  * @param params Parameters for editor creation.
6
- * @param params.element The DOM element or data for the editor.
7
6
  * @param params.context The context watchdog instance.
8
7
  * @param params.creator The editor creator utility.
9
8
  * @param params.config The editor configuration object.
10
9
  * @returns The created editor instance.
11
10
  */
12
- export declare function createEditorInContext({ element, context, creator, config }: Attrs): Promise<{
11
+ export declare function createEditorInContext({ context, creator, config }: Attrs): Promise<{
13
12
  editor: Editor;
14
13
  state: "available" | "unavailable";
15
14
  editorContextId: string;
@@ -28,7 +27,6 @@ export declare function unwrapEditorContext(editor: Editor): EditorContextDescri
28
27
  type Attrs = {
29
28
  context: ContextWatchdog<Context>;
30
29
  creator: EditorCreator;
31
- element: HTMLElement;
32
30
  config: EditorConfig;
33
31
  };
34
32
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"create-editor-in-context.d.ts","sourceRoot":"","sources":["../../../../../src/elements/editor/utils/create-editor-in-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAUhF;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK;;WAgE/E,WAAW,GAAG,aAAa;qBACjB,MAAM;aACd,eAAe,CAAC,OAAO,CAAC;GAhClC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,uBAAuB,GAAG,IAAI,CAMlF;AAED;;GAEG;AACH,KAAK,KAAK,GAAG;IACX,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IAClC,OAAO,EAAE,aAAa,CAAC;IACvB,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAEF;;GAEG;AACH,KAAK,uBAAuB,GAAG;IAC7B,KAAK,EAAE,WAAW,GAAG,aAAa,CAAC;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;CACnC,CAAC;AAEF;;GAEG;AACH,KAAK,aAAa,GAAG;IACnB,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC3C,CAAC"}
1
+ {"version":3,"file":"create-editor-in-context.d.ts","sourceRoot":"","sources":["../../../../../src/elements/editor/utils/create-editor-in-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAUhF;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK;;WA8DtE,WAAW,GAAG,aAAa;qBACjB,MAAM;aACd,eAAe,CAAC,OAAO,CAAC;GA/BlC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,uBAAuB,GAAG,IAAI,CAMlF;AAED;;GAEG;AACH,KAAK,KAAK,GAAG;IACX,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IAClC,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAEF;;GAEG;AACH,KAAK,uBAAuB,GAAG;IAC7B,KAAK,EAAE,WAAW,GAAG,aAAa,CAAC;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;CACnC,CAAC;AAEF;;GAEG;AACH,KAAK,aAAa,GAAG;IACnB,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC3C,CAAC"}
@@ -1,3 +1,5 @@
1
+ export * from './assign-initial-data-to-editor-config';
2
+ export * from './assign-source-elements-to-editor-config';
1
3
  export * from './cleanup-orphan-editor-elements';
2
4
  export * from './create-editor-in-context';
3
5
  export * from './get-editor-roots-values';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/elements/editor/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6CAA6C,CAAC;AAC5D,cAAc,sCAAsC,CAAC;AACrD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/elements/editor/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC;AACvD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6CAA6C,CAAC;AAC5D,cAAc,sCAAsC,CAAC;AACrD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC"}
package/dist/index.cjs CHANGED
@@ -1,5 +1,5 @@
1
- "use strict";var rt=Object.create;var W=Object.defineProperty;var it=Object.getOwnPropertyDescriptor;var at=Object.getOwnPropertyNames;var nt=Object.getPrototypeOf,st=Object.prototype.hasOwnProperty;var ot=(i,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of at(t))!st.call(i,n)&&n!==r&&W(i,n,{get:()=>t[n],enumerable:!(a=it(t,n))||a.enumerable});return i};var e=(i,t,r)=>(r=i!=null?rt(nt(i)):{},ot(t||!i||!i.__esModule?W(r,"default",{value:i,enumerable:!0}):r,i));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function j(i,t){if(!i||i.size!==t.size)return!1;for(const[r,a]of i)if(!t.has(r)||t.get(r)!==a)return!1;return!0}class B{items=new Map;initializationErrors=new Map;pendingCallbacks=new Map;watchers=new Set;batchDepth=0;lastNotifiedItems=null;lastNotifiedErrors=null;execute(t,r,a){const n=this.items.get(t),s=this.initializationErrors.get(t);return s?(a?.(s),Promise.reject(s)):n?Promise.resolve(r(n)):new Promise((o,l)=>{const u=this.getPendingCallbacks(t);u.success.push(async c=>{o(await r(c))}),a?u.error.push(a):u.error.push(l)})}mountEffect(t,r){let a,n,s=!1;const o=this.watch(l=>{const u=l.get(t);if(u!==n&&(a?.(),a=void 0,n=u,!!u))try{const c=r(u);s?(c?.(),o()):a=c}catch(c){throw console.error(c),c}});return()=>{s=!0,n&&(o(),a?.(),a=void 0)}}register(t,r){this.batch(()=>{if(this.items.has(t))throw new Error(`Item with ID "${t}" is already registered.`);this.resetErrors(t),this.items.set(t,r);const a=this.pendingCallbacks.get(t);a&&(a.success.forEach(n=>n(r)),this.pendingCallbacks.delete(t)),this.items.size===1&&t!==null&&this.register(null,r)})}error(t,r){this.batch(()=>{this.items.delete(t),this.initializationErrors.set(t,r);const a=this.pendingCallbacks.get(t);a&&(a.error.forEach(n=>n(r)),this.pendingCallbacks.delete(t)),this.initializationErrors.size===1&&!this.items.size&&this.error(null,r)})}resetErrors(t){const{initializationErrors:r}=this;r.has(null)&&r.get(null)===r.get(t)&&r.delete(null),r.delete(t)}unregister(t,r=!0){this.batch(()=>{t&&this.items.get(null)===this.items.get(t)&&this.unregister(null,!1),this.items.delete(t),r&&this.pendingCallbacks.delete(t),this.resetErrors(t)})}getItems(){return Array.from(this.items.values())}getItem(t){return this.items.get(t)}hasItem(t){return this.items.has(t)}waitFor(t){return new Promise((r,a)=>{this.execute(t,r,a)})}async destroyAll(){const t=Array.from(new Set(this.items.values())).map(r=>r.destroy());this.items.clear(),this.pendingCallbacks.clear(),await Promise.all(t),this.flushWatchers()}async reset(){await this.destroyAll(),this.watchers.clear()}batch(t){this.batchDepth++;try{return t()}finally{this.batchDepth--,this.batchDepth===0&&this.flushWatchers()}}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)}flushWatchers(){j(this.lastNotifiedItems,this.items)&&j(this.lastNotifiedErrors,this.initializationErrors)||(this.lastNotifiedItems=new Map(this.items),this.lastNotifiedErrors=new Map(this.initializationErrors),this.watchers.forEach(t=>t(new Map(this.items),new Map(this.initializationErrors))))}getPendingCallbacks(t){let r=this.pendingCallbacks.get(t);return r||(r={success:[],error:[]},this.pendingCallbacks.set(t,r)),r}}function $(i,t){let r=null;return(...a)=>{r&&clearTimeout(r),r=setTimeout(()=>{t(...a)},i)}}function ct(i,t){const r=Object.entries(i).filter(([a,n])=>t(n,a));return Object.fromEntries(r)}function F(i){return Object.keys(i).length===0&&i.constructor===Object}function z(i,t){const r=Object.entries(i).map(([a,n])=>[a,t(n,a)]);return Object.fromEntries(r)}function ut(){return Math.random().toString(36).substring(2)}function lt(i,{timeOutAfter:t=500,retryAfter:r=100}={}){return new Promise((a,n)=>{const s=Date.now();let o=null;const l=setTimeout(()=>{n(o??new Error("Timeout"))},t),u=async()=>{try{const c=await i();clearTimeout(l),a(c)}catch(c){o=c,Date.now()-s>t?n(c):setTimeout(u,r)}};u()})}function T(){return new Promise(i=>{switch(document.readyState){case"loading":document.addEventListener("DOMContentLoaded",()=>i(),{once:!0});break;case"interactive":case"complete":setTimeout(i,0);break;default:console.warn("Unexpected document.readyState:",document.readyState),setTimeout(i,0)}})}const M=Symbol.for("context-editor-watchdog");async function mt({element:i,context:t,creator:r,config:a}){const n=ut();await t.add({creator:(u,c)=>r.create(u,c),id:n,sourceElementOrData:i,type:"editor",config:a});const s=t.getItem(n),o={state:"available",editorContextId:n,context:t};s[M]=o;const l=t.destroy.bind(t);return t.destroy=async()=>(o.state="unavailable",l()),{...o,editor:s}}function dt(i){return M in i?i[M]:null}function ht(i){return Array.from(i.model.document.getRoots()).reduce((t,r)=>(r.rootName==="$graveyard"||(t[r.rootName]=i.getData({rootName:r.rootName})),t),Object.create({}))}function H(i){return"addEditable"in i.ui}function v(i){return["inline","classic","balloon","decoupled"].includes(i)}class w extends Error{constructor(t){super(t),this.name="CKEditor5SymfonyError"}}async function pt(i){const t=await import("ckeditor5"),a={inline:t.InlineEditor,balloon:t.BalloonEditor,classic:t.ClassicEditor,decoupled:t.DecoupledEditor,multiroot:t.MultiRootEditor}[i];if(!a)throw new w(`Unsupported editor type: ${i}`);return a}class x{static the=new x;plugins=new Map;constructor(){}register(t,r){if(this.plugins.has(t))throw new w(`Plugin with name "${t}" is already registered.`);return this.plugins.set(t,r),this.unregister.bind(this,t)}unregister(t){if(!this.plugins.has(t))throw new w(`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 J(i){const t=await import("ckeditor5");let r=null;const a=i.map(async n=>{const s=await x.the.get(n);if(s)return s;const{[n]:o}=t;if(o)return o;if(!r)try{r=await import("ckeditor5-premium-features")}catch(u){throw console.error(`Failed to load premium package: ${u}`),new w(`Plugin "${n}" not found in base package and failed to load premium package.`)}const{[n]:l}=r||{};if(l)return l;throw new w(`Plugin "${n}" not found in base or premium packages.`)});return{loadedPlugins:await Promise.all(a),hasPremium:!!r}}async function K(i,t){const r=[i.ui,i.content];return await Promise.all([U("ckeditor5",r),t&&U("ckeditor5-premium-features",r)].filter(n=>!!n)).then(n=>n.flat())}async function U(i,t){return await Promise.all(t.filter(r=>r!=="en").map(async r=>{const a=await wt(i,r);return a?.default??a}).filter(Boolean))}async function wt(i,t){try{if(i==="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(r){return console.error(`Failed to load translation for ${i}/${t}:`,r),null}}function _(i){return z(i,t=>({dictionary:t}))}function G(){return Array.from(document.querySelectorAll("cke5-editor")).map(i=>i.getAttribute("data-cke-editor-id")).filter(i=>i!==null)}function Y(i){const t=X(i);return z(t,({element:r})=>r)}function V(i){const t=X(i),r=z(t,({content:a})=>a);return ct(r,a=>typeof a=="string")}function X(i){const t=Array.from(document.querySelectorAll(`cke5-editable[data-cke-editor-id="${i}"]`)).reduce((o,l)=>{const u=l.getAttribute("data-cke-root-name"),c=l.getAttribute("data-cke-content");return o[u]={element:l.querySelector("[data-cke-editable-content]"),content:c},o},Object.create({})),r=document.querySelector(`cke5-editor[data-cke-editor-id="${i}"]`);if(!r)return t;const a=t.main,n=JSON.parse(r.getAttribute("data-cke-content")),s=document.querySelector(`#${i}_editor `);return a&&n?.main?{...t,main:{...a,content:a.content||n.main}}:s?{...t,main:{element:s,content:n?.main||null}}:t}function I(i){if(!i||typeof i!="object")return i;if(Array.isArray(i))return i.map(a=>I(a));const t=i;if(t.$element&&typeof t.$element=="string"){const a=document.querySelector(t.$element);return a||console.warn(`Element not found for selector: ${t.$element}`),a||null}const r=Object.create(null);for(const[a,n]of Object.entries(i))r[a]=I(n);return r}function P(i,t,r){if(!r||typeof r!="object")return r;if(Array.isArray(r))return r.map(s=>P(i,t,s));const a=r;if(a.$translation&&typeof a.$translation=="string"){const s=a.$translation,o=ft(i,s,t);return o===void 0&&console.warn(`Translation not found for key: ${s}`),o!==void 0?o:null}const n=Object.create(null);for(const[s,o]of Object.entries(r))n[s]=P(i,t,o);return n}function ft(i,t,r){for(const a of i){const n=a[r];if(n?.dictionary&&t in n.dictionary)return n.dictionary[t]}}function gt(i,t){const{editing:r}=i;r.view.change(a=>{a.setStyle("height",`${t}px`,r.view.document.getRoot())})}const N=Symbol.for("symfony-editor-watchdog");async function yt(i,t){const{EditorWatchdog:r}=await import("ckeditor5"),a=new r(null,{crashNumberLimit:10,minimumNonErrorTimePeriod:5e3});return a.setCreator(async()=>{const n=await i();return n[N]=a,n}),a}function Et(i){return N in i?i[N]:null}class y extends B{static the=new y}class bt extends HTMLElement{contextPromise=null;async connectedCallback(){await T();const t=this.getAttribute("data-cke-context-id"),r=JSON.parse(this.getAttribute("data-cke-language")),a=JSON.parse(this.getAttribute("data-cke-context")),{customTranslations:n,watchdogConfig:s,config:{plugins:o,...l}}=a,{loadedPlugins:u,hasPremium:c}=await J(o??[]),f=[...await K(r,c),_(n||{})].filter(k=>!F(k));this.contextPromise=(async()=>{const{ContextWatchdog:k,Context:A}=await import("ckeditor5"),g=new k(A,{crashNumberLimit:10,...s});let E=I(l);return E=P([...f].reverse(),r.ui,E),await g.create({...E,language:r,plugins:u,...f.length&&{translations:f}}),g.on("itemError",(...p)=>{console.error("Context item error:",...p)}),g})();const b=await this.contextPromise;this.isConnected&&y.the.register(t,b)}async disconnectedCallback(){const t=this.getAttribute("data-cke-context-id");this.style.display="none";try{await(await this.contextPromise)?.destroy()}finally{this.contextPromise=null,t&&y.the.hasItem(t)&&y.the.unregister(t)}}}class m extends B{static the=new m}class Q extends HTMLElement{unmountEffect=null;async connectedCallback(){await T(),this.hasAttribute("data-cke-editor-id")||this.setAttribute("data-cke-editor-id",G()[0]);const t=this.getAttribute("data-cke-editor-id"),r=this.getAttribute("data-cke-root-name"),a=this.getAttribute("data-cke-content"),n=Number.parseInt(this.getAttribute("data-cke-save-debounce-ms"),10);if(!t||!r)throw new w("Editor ID or Root Name is missing.");this.style.display="block",this.unmountEffect=m.the.mountEffect(t,s=>{if(!this.isConnected)return;const o=this.querySelector("input");if(s.model.document.getRoot(r)){if(a!==null){const c=s.getData({rootName:r});c&&c!==a&&s.setData({[r]:a})}return}if(H(s)){const{ui:c,editing:d}=s;s.addRoot(r,{isUndoable:!1,...a!==null&&{data:a}});const f=this.querySelector("[data-cke-editable-content]"),b=c.view.createEditable(r,f);c.addEditable(b),d.view.forceRender()}const l=()=>{const c=s.getData({rootName:r});o&&(o.value=c,o.dispatchEvent(new Event("input"))),this.dispatchEvent(new CustomEvent("change",{detail:{value:c}}))},u=$(n,l);return s.model.document.on("change:data",u),l(),()=>{if(s.model.document.off("change:data",u),s.state!=="destroyed"&&r){const c=s.model.document.getRoot(r);if(c&&H(s)){try{s.ui.view.editables[r]&&s.detachEditable(c)}catch(d){console.error("Unable unmount editable from root:",d)}c.isAttached()&&s.detachRoot(r,!1)}}}})}disconnectedCallback(){this.style.display="none",this.unmountEffect?.(),this.unmountEffect=null}}async function kt({saveDebounceMs:i,editorId:t,targetElement:r}){const{Plugin:a}=await import("ckeditor5");return class extends a{static get pluginName(){return"DispatchEditorRootsChangeEvent"}afterInit(){const s=$(i,this.dispatch);this.editor.model.document.on("change:data",s),this.editor.once("ready",this.dispatch)}dispatch=()=>{r.dispatchEvent(new CustomEvent("ckeditor5:change:data",{detail:{editorId:t,editor:this.editor,roots:ht(this.editor)},bubbles:!0}))}}}async function Ct(i){const{Plugin:t}=await import("ckeditor5");return class extends t{input=null;form=null;static get pluginName(){return"SyncEditorWithInput"}afterInit(){const{editor:a}=this,s=a.sourceElement.id.replace(/_editor$/,"");this.input=document.getElementById(`${s}_input`),this.input&&(a.model.document.on("change:data",$(i,()=>this.sync())),a.once("ready",this.sync),this.form=this.input.closest("form"),this.form?.addEventListener("submit",this.sync))}sync=()=>{if(this.input){const a=this.editor.getData();this.input.value=a,this.input.dispatchEvent(new Event("input",{bubbles:!0}))}};destroy(){this.form&&this.form.removeEventListener("submit",this.sync),this.input=null,this.form=null}}}class Z extends HTMLElement{unmountEffect=null;async connectedCallback(){await T(),await this.initializeEditor()}async initializeEditor(){const t=this.getAttribute("data-cke-editor-id");m.the.resetErrors(t);try{this.style.display="block";const r=await this.createEditor(),a=dt(r),n=Et(r);if(this.isConnected){const s=m.the.mountEffect(t,o=>{o.once("destroy",()=>{m.the.unregister(t,!1)},{priority:"highest"})});this.unmountEffect=async()=>{m.the.unregister(t),s(),a?a.state!=="unavailable"&&await a.context.remove(a.editorContextId):n?await n.destroy():await r.destroy()},m.the.register(t,r)}}catch(r){console.error(`Error initializing CKEditor5 instance with ID "${t}":`,r),this.unmountEffect=null,m.the.error(t,r)}}disconnectedCallback(){this.style.display="none",this.unmountEffect?.(),this.unmountEffect=null}async createEditor(){const t=this.getAttribute("data-cke-editor-id"),r=JSON.parse(this.getAttribute("data-cke-preset")),a=this.getAttribute("data-cke-context-id"),n=this.getAttribute("data-cke-editable-height")?Number.parseInt(this.getAttribute("data-cke-editable-height"),10):null,s=Number.parseInt(this.getAttribute("data-cke-save-debounce-ms"),10),o=JSON.parse(this.getAttribute("data-cke-language")),l=this.hasAttribute("data-cke-watchdog"),u=JSON.parse(this.getAttribute("data-cke-content")),{customTranslations:c,editorType:d,licenseKey:f,config:{plugins:b,...k}}=r,A=await pt(d),g=await(a?y.the.waitFor(a):null),E=async()=>{const{loadedPlugins:p,hasPremium:O}=await J(b);p.push(await kt({saveDebounceMs:s,editorId:t,targetElement:this})),v(d)&&p.push(await Ct(s));const S=[...await K(o,O),_(c||{})].filter(h=>!F(h));let C={...u,...V(t)};v(d)&&(C=C.main||"");const R=await(async()=>{let h=Y(t);if(!h.main){const q=v(d)?["main"]:Object.keys(C);tt(h,q)||(h=await vt(t,q),C={...u,...V(t)})}v(d)&&"main"in h&&(h=h.main);let D=I(k);D=P([...S].reverse(),o.ui,D);const L={...D,initialData:C,licenseKey:f,plugins:p,language:o,...S.length&&{translations:S}};return!g||!(h instanceof HTMLElement)?A.create(h,L):(await mt({context:g,element:h,creator:A,config:L})).editor})();return v(d)&&n&&gt(R,n),R};if(l&&!g){const p=await yt(E);return p.on("restart",()=>{const O=p.editor;m.the.register(t,O)}),await p.create({}),p.editor}return E()}}function tt(i,t){return t.every(r=>i[r])}async function vt(i,t){return lt(()=>{const r=Y(i);if(!tt(r,t))throw new Error(`It looks like not all required root elements are present yet.
1
+ "use strict";var et=Object.create;var L=Object.defineProperty;var rt=Object.getOwnPropertyDescriptor;var it=Object.getOwnPropertyNames;var at=Object.getPrototypeOf,nt=Object.prototype.hasOwnProperty;var st=(i,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of it(t))!nt.call(i,n)&&n!==r&&L(i,n,{get:()=>t[n],enumerable:!(a=rt(t,n))||a.enumerable});return i};var e=(i,t,r)=>(r=i!=null?et(at(i)):{},st(t||!i||!i.__esModule?L(r,"default",{value:i,enumerable:!0}):r,i));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function q(i,t){if(!i||i.size!==t.size)return!1;for(const[r,a]of i)if(!t.has(r)||t.get(r)!==a)return!1;return!0}class V{items=new Map;initializationErrors=new Map;pendingCallbacks=new Map;watchers=new Set;batchDepth=0;lastNotifiedItems=null;lastNotifiedErrors=null;execute(t,r,a){const n=this.items.get(t),s=this.initializationErrors.get(t);return s?(a?.(s),Promise.reject(s)):n?Promise.resolve(r(n)):new Promise((o,l)=>{const u=this.getPendingCallbacks(t);u.success.push(async c=>{o(await r(c))}),a?u.error.push(a):u.error.push(l)})}mountEffect(t,r){let a,n,s=!1;const o=this.watch(l=>{const u=l.get(t);if(u!==n&&(a?.(),a=void 0,n=u,!!u))try{const c=r(u);s?(c?.(),o()):a=c}catch(c){throw console.error(c),c}});return()=>{s=!0,n&&(o(),a?.(),a=void 0)}}register(t,r){this.batch(()=>{if(this.items.has(t))throw new Error(`Item with ID "${t}" is already registered.`);this.resetErrors(t),this.items.set(t,r);const a=this.pendingCallbacks.get(t);a&&(a.success.forEach(n=>n(r)),this.pendingCallbacks.delete(t)),this.items.size===1&&t!==null&&this.register(null,r)})}error(t,r){this.batch(()=>{this.items.delete(t),this.initializationErrors.set(t,r);const a=this.pendingCallbacks.get(t);a&&(a.error.forEach(n=>n(r)),this.pendingCallbacks.delete(t)),this.initializationErrors.size===1&&!this.items.size&&this.error(null,r)})}resetErrors(t){const{initializationErrors:r}=this;r.has(null)&&r.get(null)===r.get(t)&&r.delete(null),r.delete(t)}unregister(t,r=!0){this.batch(()=>{t&&this.items.get(null)===this.items.get(t)&&this.unregister(null,!1),this.items.delete(t),r&&this.pendingCallbacks.delete(t),this.resetErrors(t)})}getItems(){return Array.from(this.items.values())}getItem(t){return this.items.get(t)}hasItem(t){return this.items.has(t)}waitFor(t){return new Promise((r,a)=>{this.execute(t,r,a)})}async destroyAll(){const t=Array.from(new Set(this.items.values())).map(r=>r.destroy());this.items.clear(),this.pendingCallbacks.clear(),await Promise.all(t),this.flushWatchers()}async reset(){await this.destroyAll(),this.watchers.clear()}batch(t){this.batchDepth++;try{return t()}finally{this.batchDepth--,this.batchDepth===0&&this.flushWatchers()}}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)}flushWatchers(){q(this.lastNotifiedItems,this.items)&&q(this.lastNotifiedErrors,this.initializationErrors)||(this.lastNotifiedItems=new Map(this.items),this.lastNotifiedErrors=new Map(this.initializationErrors),this.watchers.forEach(t=>t(new Map(this.items),new Map(this.initializationErrors))))}getPendingCallbacks(t){let r=this.pendingCallbacks.get(t);return r||(r={success:[],error:[]},this.pendingCallbacks.set(t,r)),r}}function $(i,t){let r=null;return(...a)=>{r&&clearTimeout(r),r=setTimeout(()=>{t(...a)},i)}}function ot(i,t){const r=Object.entries(i).filter(([a,n])=>t(n,a));return Object.fromEntries(r)}function B(i){return Object.keys(i).length===0&&i.constructor===Object}function z(i,t){const r=Object.entries(i).map(([a,n])=>[a,t(n,a)]);return Object.fromEntries(r)}function ct(){return Math.random().toString(36).substring(2)}function ut(i,{timeOutAfter:t=500,retryAfter:r=100}={}){return new Promise((a,n)=>{const s=Date.now();let o=null;const l=setTimeout(()=>{n(o??new Error("Timeout"))},t),u=async()=>{try{const c=await i();clearTimeout(l),a(c)}catch(c){o=c,Date.now()-s>t?n(c):setTimeout(u,r)}};u()})}function O(){return new Promise(i=>{switch(document.readyState){case"loading":document.addEventListener("DOMContentLoaded",()=>i(),{once:!0});break;case"interactive":case"complete":setTimeout(i,0);break;default:console.warn("Unexpected document.readyState:",document.readyState),setTimeout(i,0)}})}function lt(i,t){const r=mt(i),a=new Set([...Object.keys(r),...Object.keys(t.roots??{})]),n=Array.from(a).reduce((o,l)=>({...o,[l]:{...t.roots?.[l],...l==="main"?t.root:{},...l in r?{initialData:r[l]}:{}}}),Object.create(t.roots||{})),s={...t,roots:n};return delete s.root,s}function mt(i){return typeof i=="string"?{main:i}:{...i}}function dt(i,t,r){const a=ht(t);if(!i.editorName||i.editorName==="ClassicEditor")return{...r,attachTo:a.main};const n=new Set([...Object.keys(a),...Object.keys(r.roots??{})]),s=Array.from(n).reduce((l,u)=>({...l,[u]:{...r.roots?.[u],...u==="main"?r.root:{},...u in a?{element:a[u]}:{}}}),Object.create(r.roots||{})),o={...r,roots:s};return delete o.root,o}function ht(i){return i instanceof HTMLElement?{main:i}:{...i}}const D=Symbol.for("context-editor-watchdog");async function pt({context:i,creator:t,config:r}){const a=ct();await i.add({creator:t.create.bind(t),id:a,type:"editor",config:r});const n=i.getItem(a),s={state:"available",editorContextId:a,context:i};n[D]=s;const o=i.destroy.bind(i);return i.destroy=async()=>(s.state="unavailable",o()),{...s,editor:n}}function wt(i){return D in i?i[D]:null}function ft(i){return Array.from(i.model.document.getRoots()).reduce((t,r)=>(r.rootName==="$graveyard"||(t[r.rootName]=i.getData({rootName:r.rootName})),t),Object.create({}))}function W(i){return"addEditable"in i.ui}function I(i){return["inline","classic","balloon","decoupled"].includes(i)}class f extends Error{constructor(t){super(t),this.name="CKEditor5SymfonyError"}}async function gt(i){const t=await import("ckeditor5"),a={inline:t.InlineEditor,balloon:t.BalloonEditor,classic:t.ClassicEditor,decoupled:t.DecoupledEditor,multiroot:t.MultiRootEditor}[i];if(!a)throw new f(`Unsupported editor type: ${i}`);return a}class x{static the=new x;plugins=new Map;constructor(){}register(t,r){if(this.plugins.has(t))throw new f(`Plugin with name "${t}" is already registered.`);return this.plugins.set(t,r),this.unregister.bind(this,t)}unregister(t){if(!this.plugins.has(t))throw new f(`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 F(i){const t=await import("ckeditor5");let r=null;const a=i.map(async n=>{const s=await x.the.get(n);if(s)return s;const{[n]:o}=t;if(o)return o;if(!r)try{r=await import("ckeditor5-premium-features")}catch(u){throw console.error(`Failed to load premium package: ${u}`),new f(`Plugin "${n}" not found in base package and failed to load premium package.`)}const{[n]:l}=r||{};if(l)return l;throw new f(`Plugin "${n}" not found in base or premium packages.`)});return{loadedPlugins:await Promise.all(a),hasPremium:!!r}}async function J(i,t){const r=[i.ui,i.content];return await Promise.all([H("ckeditor5",r),t&&H("ckeditor5-premium-features",r)].filter(n=>!!n)).then(n=>n.flat())}async function H(i,t){return await Promise.all(t.filter(r=>r!=="en").map(async r=>{const a=await yt(i,r);return a?.default??a}).filter(Boolean))}async function yt(i,t){try{if(i==="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(r){return console.error(`Failed to load translation for ${i}/${t}:`,r),null}}function _(i){return z(i,t=>({dictionary:t}))}function G(){return Array.from(document.querySelectorAll("cke5-editor")).map(i=>i.getAttribute("data-cke-editor-id")).filter(i=>i!==null)}function Y(i){const t=X(i);return z(t,({element:r})=>r)}function U(i){const t=X(i),r=z(t,({content:a})=>a);return ot(r,a=>typeof a=="string")}function X(i){const t=Array.from(document.querySelectorAll(`cke5-editable[data-cke-editor-id="${i}"]`)).reduce((o,l)=>{const u=l.getAttribute("data-cke-root-name"),c=l.getAttribute("data-cke-content");return o[u]={element:l.querySelector("[data-cke-editable-content]"),content:c},o},Object.create({})),r=document.querySelector(`cke5-editor[data-cke-editor-id="${i}"]`);if(!r)return t;const a=t.main,n=JSON.parse(r.getAttribute("data-cke-content")),s=document.querySelector(`#${i}_editor `);return a&&n?.main?{...t,main:{...a,content:a.content||n.main}}:s?{...t,main:{element:s,content:n?.main||null}}:t}function P(i){if(!i||typeof i!="object")return i;if(Array.isArray(i))return i.map(a=>P(a));const t=i;if(t.$element&&typeof t.$element=="string"){const a=document.querySelector(t.$element);return a||console.warn(`Element not found for selector: ${t.$element}`),a||null}const r=Object.create(null);for(const[a,n]of Object.entries(i))r[a]=P(n);return r}function T(i,t,r){if(!r||typeof r!="object")return r;if(Array.isArray(r))return r.map(s=>T(i,t,s));const a=r;if(a.$translation&&typeof a.$translation=="string"){const s=a.$translation,o=Et(i,s,t);return o===void 0&&console.warn(`Translation not found for key: ${s}`),o!==void 0?o:null}const n=Object.create(null);for(const[s,o]of Object.entries(r))n[s]=T(i,t,o);return n}function Et(i,t,r){for(const a of i){const n=a[r];if(n?.dictionary&&t in n.dictionary)return n.dictionary[t]}}function bt(i,t){const{editing:r}=i;r.view.change(a=>{a.setStyle("height",`${t}px`,r.view.document.getRoot())})}const N=Symbol.for("symfony-editor-watchdog");async function kt(i,t){const{EditorWatchdog:r}=await import("ckeditor5"),a=new r(null,{crashNumberLimit:10,minimumNonErrorTimePeriod:5e3});return a.setCreator(async()=>{const n=await i();return n[N]=a,n}),a}function Ct(i){return N in i?i[N]:null}class E extends V{static the=new E}class vt extends HTMLElement{contextPromise=null;async connectedCallback(){await O();const t=this.getAttribute("data-cke-context-id"),r=JSON.parse(this.getAttribute("data-cke-language")),a=JSON.parse(this.getAttribute("data-cke-context")),{customTranslations:n,watchdogConfig:s,config:{plugins:o,...l}}=a,{loadedPlugins:u,hasPremium:c}=await F(o??[]),g=[...await J(r,c),_(n||{})].filter(C=>!B(C));this.contextPromise=(async()=>{const{ContextWatchdog:C,Context:v}=await import("ckeditor5"),y=new C(v,{crashNumberLimit:10,...s});let b=P(l);return b=T([...g].reverse(),r.ui,b),await y.create({...b,language:r,plugins:u,...g.length&&{translations:g}}),y.on("itemError",(...h)=>{console.error("Context item error:",...h)}),y})();const k=await this.contextPromise;this.isConnected&&E.the.register(t,k)}async disconnectedCallback(){const t=this.getAttribute("data-cke-context-id");this.style.display="none";try{await(await this.contextPromise)?.destroy()}finally{this.contextPromise=null,t&&E.the.hasItem(t)&&E.the.unregister(t)}}}class m extends V{static the=new m}class K extends HTMLElement{unmountEffect=null;async connectedCallback(){await O(),this.hasAttribute("data-cke-editor-id")||this.setAttribute("data-cke-editor-id",G()[0]);const t=this.getAttribute("data-cke-editor-id"),r=this.getAttribute("data-cke-root-name"),a=this.getAttribute("data-cke-content"),n=Number.parseInt(this.getAttribute("data-cke-save-debounce-ms"),10);if(!t||!r)throw new f("Editor ID or Root Name is missing.");this.style.display="block",this.unmountEffect=m.the.mountEffect(t,s=>{if(!this.isConnected)return;const o=this.querySelector("input");if(s.model.document.getRoot(r)){if(a!==null){const c=s.getData({rootName:r});c&&c!==a&&s.setData({[r]:a})}return}if(W(s)){const{ui:c,editing:d}=s;s.addRoot(r,{isUndoable:!1,...a!==null&&{initialData:a}});const g=this.querySelector("[data-cke-editable-content]"),k=c.view.createEditable(r,g);c.addEditable(k),d.view.forceRender()}const l=()=>{const c=s.getData({rootName:r});o&&(o.value=c,o.dispatchEvent(new Event("input"))),this.dispatchEvent(new CustomEvent("change",{detail:{value:c}}))},u=$(n,l);return s.model.document.on("change:data",u),l(),()=>{if(s.model.document.off("change:data",u),s.state!=="destroyed"&&r){const c=s.model.document.getRoot(r);if(c&&W(s)){try{s.ui.view.editables[r]&&s.detachEditable(c)}catch(d){console.error("Unable unmount editable from root:",d)}c.isAttached()&&s.detachRoot(r,!1)}}}})}disconnectedCallback(){this.style.display="none",this.unmountEffect?.(),this.unmountEffect=null}}async function At({saveDebounceMs:i,editorId:t,targetElement:r}){const{Plugin:a}=await import("ckeditor5");return class extends a{static get pluginName(){return"DispatchEditorRootsChangeEvent"}afterInit(){const s=$(i,this.dispatch);this.editor.model.document.on("change:data",s),this.editor.once("ready",this.dispatch)}dispatch=()=>{r.dispatchEvent(new CustomEvent("ckeditor5:change:data",{detail:{editorId:t,editor:this.editor,roots:ft(this.editor)},bubbles:!0}))}}}async function It(i){const{Plugin:t}=await import("ckeditor5");return class extends t{input=null;form=null;static get pluginName(){return"SyncEditorWithInput"}afterInit(){const{editor:a}=this,s=a.sourceElement.id.replace(/_editor$/,"");this.input=document.getElementById(`${s}_input`),this.input&&(a.model.document.on("change:data",$(i,()=>this.sync())),a.once("ready",this.sync),this.form=this.input.closest("form"),this.form?.addEventListener("submit",this.sync))}sync=()=>{if(this.input){const a=this.editor.getData();this.input.value=a,this.input.dispatchEvent(new Event("input",{bubbles:!0}))}};destroy(){this.form&&this.form.removeEventListener("submit",this.sync),this.input=null,this.form=null}}}class Q extends HTMLElement{unmountEffect=null;async connectedCallback(){await O(),await this.initializeEditor()}async initializeEditor(){const t=this.getAttribute("data-cke-editor-id");m.the.resetErrors(t);try{this.style.display="block";const r=await this.createEditor(),a=wt(r),n=Ct(r);if(this.isConnected){const s=m.the.mountEffect(t,o=>{o.once("destroy",()=>{m.the.unregister(t,!1)},{priority:"highest"})});this.unmountEffect=async()=>{m.the.unregister(t),s(),a?a.state!=="unavailable"&&await a.context.remove(a.editorContextId):n?await n.destroy():await r.destroy()},m.the.register(t,r)}}catch(r){console.error(`Error initializing CKEditor5 instance with ID "${t}":`,r),this.unmountEffect=null,m.the.error(t,r)}}disconnectedCallback(){this.style.display="none",this.unmountEffect?.(),this.unmountEffect=null}async createEditor(){const t=this.getAttribute("data-cke-editor-id"),r=JSON.parse(this.getAttribute("data-cke-preset")),a=this.getAttribute("data-cke-context-id"),n=this.getAttribute("data-cke-editable-height")?Number.parseInt(this.getAttribute("data-cke-editable-height"),10):null,s=Number.parseInt(this.getAttribute("data-cke-save-debounce-ms"),10),o=JSON.parse(this.getAttribute("data-cke-language")),l=this.hasAttribute("data-cke-watchdog"),u=JSON.parse(this.getAttribute("data-cke-content")),{customTranslations:c,editorType:d,licenseKey:g,config:{plugins:k,...C}}=r,v=await gt(d),y=await(a?E.the.waitFor(a):null),b=async()=>{const{loadedPlugins:h,hasPremium:S}=await F(k);h.push(await At({saveDebounceMs:s,editorId:t,targetElement:this})),I(d)&&h.push(await It(s));const M=[...await J(o,S),_(c||{})].filter(w=>!B(w));let A={...u,...U(t)};I(d)&&(A=A.main||"");const R=await(async()=>{let w=Y(t);if(!w.main){const j=I(d)?["main"]:Object.keys(A);Z(w,j)||(w=await Pt(t,j),A={...u,...U(t)})}I(d)&&"main"in w&&(w=w.main);let p={...C,licenseKey:g,plugins:h,language:o,...M.length&&{translations:M}};return p=P(p),p=T([...M].reverse(),o.ui,p),p=dt(v,w,p),p=lt(A,p),y?(await pt({context:y,creator:v,config:p})).editor:v.create(p)})();return I(d)&&n&&bt(R,n),R};if(l&&!y){const h=await kt(b);return h.on("restart",()=>{const S=h.editor;m.the.register(t,S)}),await h.create({}),h.editor}return b()}}function Z(i,t){return t.every(r=>i[r])}async function Pt(i,t){return ut(()=>{const r=Y(i);if(!Z(r,t))throw new Error(`It looks like not all required root elements are present yet.
2
2
  * If you want to wait for them, ensure they are registered before editor initialization.
3
3
  * If you want lazy initialize roots, consider removing root values from the \`initialData\` config and assign initial data in editable components.
4
- Missing roots: ${t.filter(a=>!r[a]).join(", ")}.`);return r},{timeOutAfter:2e3,retryAfter:100})}class et extends HTMLElement{unmountEffect=null;async connectedCallback(){await T();const t=this.getAttribute("data-cke-editor-id")||G()[0],r=this.getAttribute("data-cke-name");!t||!r||(this.style.display="block",this.unmountEffect=m.the.mountEffect(t,a=>{if(!this.isConnected)return;const{ui:n}=a,s=At(r),o=n.view[s];if(!o)throw new w(`Unknown UI part name: "${r}". Supported names are "toolbar" and "menubar".`);return this.appendChild(o.element),()=>{this.innerHTML=""}}))}disconnectedCallback(){this.style.display="none",this.unmountEffect?.(),this.unmountEffect=null}}function At(i){switch(i){case"toolbar":return"toolbar";case"menubar":return"menuBarView";default:return null}}const It={"cke5-editor":Z,"cke5-context":bt,"cke5-ui-part":et,"cke5-editable":Q};function Pt(){for(const[i,t]of Object.entries(It))window.customElements.get(i)||window.customElements.define(i,t)}Pt();exports.CKEditor5SymfonyError=w;exports.ContextsRegistry=y;exports.CustomEditorPluginsRegistry=x;exports.EditableComponentElement=Q;exports.EditorComponentElement=Z;exports.EditorsRegistry=m;exports.UIPartComponentElement=et;
4
+ Missing roots: ${t.filter(a=>!r[a]).join(", ")}.`);return r},{timeOutAfter:2e3,retryAfter:100})}class tt extends HTMLElement{unmountEffect=null;async connectedCallback(){await O();const t=this.getAttribute("data-cke-editor-id")||G()[0],r=this.getAttribute("data-cke-name");!t||!r||(this.style.display="block",this.unmountEffect=m.the.mountEffect(t,a=>{if(!this.isConnected)return;const{ui:n}=a,s=Tt(r),o=n.view[s];if(!o)throw new f(`Unknown UI part name: "${r}". Supported names are "toolbar" and "menubar".`);return this.appendChild(o.element),()=>{this.innerHTML=""}}))}disconnectedCallback(){this.style.display="none",this.unmountEffect?.(),this.unmountEffect=null}}function Tt(i){switch(i){case"toolbar":return"toolbar";case"menubar":return"menuBarView";default:return null}}const Ot={"cke5-editor":Q,"cke5-context":vt,"cke5-ui-part":tt,"cke5-editable":K};function xt(){for(const[i,t]of Object.entries(Ot))window.customElements.get(i)||window.customElements.define(i,t)}xt();exports.CKEditor5SymfonyError=f;exports.ContextsRegistry=E;exports.CustomEditorPluginsRegistry=x;exports.EditableComponentElement=K;exports.EditorComponentElement=Q;exports.EditorsRegistry=m;exports.UIPartComponentElement=tt;
5
5
  //# sourceMappingURL=index.cjs.map