ckeditor5-blazor 1.10.3 → 1.11.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 (33) hide show
  1. package/dist/elements/context/context.d.ts.map +1 -1
  2. package/dist/elements/editor/editor.d.ts.map +1 -1
  3. package/dist/elements/editor/types/editor-relaxed-constructor.type.d.ts +6 -0
  4. package/dist/elements/editor/types/editor-relaxed-constructor.type.d.ts.map +1 -0
  5. package/dist/elements/editor/types/index.d.ts +2 -0
  6. package/dist/elements/editor/types/index.d.ts.map +1 -0
  7. package/dist/elements/editor/utils/assign-initial-data-to-editor-config.d.ts +10 -0
  8. package/dist/elements/editor/utils/assign-initial-data-to-editor-config.d.ts.map +1 -0
  9. package/dist/elements/editor/utils/assign-source-elements-to-editor-config.d.ts +12 -0
  10. package/dist/elements/editor/utils/assign-source-elements-to-editor-config.d.ts.map +1 -0
  11. package/dist/elements/editor/utils/create-editor-in-context.d.ts +1 -3
  12. package/dist/elements/editor/utils/create-editor-in-context.d.ts.map +1 -1
  13. package/dist/elements/editor/utils/index.d.ts +3 -0
  14. package/dist/elements/editor/utils/index.d.ts.map +1 -1
  15. package/dist/elements/editor/utils/normalize-editor-language.d.ts +9 -0
  16. package/dist/elements/editor/utils/normalize-editor-language.d.ts.map +1 -0
  17. package/dist/index.cjs +2 -2
  18. package/dist/index.cjs.map +1 -1
  19. package/dist/index.mjs +410 -353
  20. package/dist/index.mjs.map +1 -1
  21. package/package.json +3 -3
  22. package/src/elements/context/context.test.ts +107 -66
  23. package/src/elements/context/context.ts +9 -3
  24. package/src/elements/editable.ts +2 -2
  25. package/src/elements/editor/editor.ts +33 -29
  26. package/src/elements/editor/types/editor-relaxed-constructor.type.ts +6 -0
  27. package/src/elements/editor/types/index.ts +1 -0
  28. package/src/elements/editor/utils/assign-initial-data-to-editor-config.ts +47 -0
  29. package/src/elements/editor/utils/assign-source-elements-to-editor-config.ts +59 -0
  30. package/src/elements/editor/utils/create-editor-in-context.ts +2 -5
  31. package/src/elements/editor/utils/index.ts +3 -0
  32. package/src/elements/editor/utils/normalize-editor-language.test.ts +50 -0
  33. package/src/elements/editor/utils/normalize-editor-language.ts +25 -0
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/elements/context/context.ts"],"names":[],"mappings":"AAeA;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,WAAW;IACtD;;OAEG;IACH,OAAO,CAAC,cAAc,CAAkD;IAExE;;OAEG;IACH,OAAO,CAAC,eAAe,CAAC,CAA2B;IAEnD;;OAEG;IACG,iBAAiB;IAYvB;;OAEG;YACW,iBAAiB;IAsD/B;;OAEG;IACG,oBAAoB;CAuB3B"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/elements/context/context.ts"],"names":[],"mappings":"AAgBA;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,WAAW;IACtD;;OAEG;IACH,OAAO,CAAC,cAAc,CAAkD;IAExE;;OAEG;IACH,OAAO,CAAC,eAAe,CAAC,CAA2B;IAEnD;;OAEG;IACG,iBAAiB;IAYvB;;OAEG;YACW,iBAAiB;IA2D/B;;OAEG;IACG,oBAAoB;CAuB3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../../../src/elements/editor/editor.ts"],"names":[],"mappings":"AAiCA;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,WAAW;IACrD;;OAEG;IACH,OAAO,CAAC,aAAa,CAA6B;IAElD;;OAEG;IACH,OAAO,CAAC,eAAe,CAAC,CAA2B;IAEnD;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBxC;;OAEG;YACW,gBAAgB;IA0D9B;;;OAGG;IACG,oBAAoB;IAM1B;;OAEG;YACW,YAAY;CAuK3B"}
1
+ {"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../../../src/elements/editor/editor.ts"],"names":[],"mappings":"AAoCA;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,WAAW;IACrD;;OAEG;IACH,OAAO,CAAC,aAAa,CAA6B;IAElD;;OAEG;IACH,OAAO,CAAC,eAAe,CAAC,CAA2B;IAEnD;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBxC;;OAEG;YACW,gBAAgB;IA0D9B;;;OAGG;IACG,oBAAoB;IAM1B;;OAEG;YACW,YAAY;CAwK3B"}
@@ -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 { EditorRelaxedConstructor } from '../types/editor-relaxed-constructor.type';
2
+ import { EditorConfig } from 'ckeditor5';
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,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACzF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9C;;;;;;;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';
@@ -6,6 +8,7 @@ export * from './load-editor-constructor';
6
8
  export * from './load-editor-plugins';
7
9
  export * from './load-editor-translations';
8
10
  export * from './normalize-custom-translations';
11
+ export * from './normalize-editor-language';
9
12
  export * from './query-all-editor-ids';
10
13
  export * from './query-editor-editables';
11
14
  export * from './resolve-editor-config-elements-references';
@@ -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,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,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6CAA6C,CAAC;AAC5D,cAAc,sCAAsC,CAAC;AACrD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { EditorLanguage } from '../typings';
2
+ /**
3
+ * Normalize editor language into object.
4
+ *
5
+ * @param lang Editor language.
6
+ * @returns Language object.
7
+ */
8
+ export declare function normalizeEditorLanguage(lang: EditorLanguage | string): EditorLanguage;
9
+ //# sourceMappingURL=normalize-editor-language.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-editor-language.d.ts","sourceRoot":"","sources":["../../../../../src/elements/editor/utils/normalize-editor-language.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,GAAG,cAAc,CAgBrF"}
package/dist/index.cjs CHANGED
@@ -1,5 +1,5 @@
1
- "use strict";var ht=Object.create;var J=Object.defineProperty;var ft=Object.getOwnPropertyDescriptor;var pt=Object.getOwnPropertyNames;var wt=Object.getPrototypeOf,gt=Object.prototype.hasOwnProperty;var bt=(r,t,e,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of pt(t))!gt.call(r,n)&&n!==e&&J(r,n,{get:()=>t[n],enumerable:!(i=ft(t,n))||i.enumerable});return r};var a=(r,t,e)=>(e=r!=null?ht(wt(r)):{},bt(t||!r||!r.__esModule?J(e,"default",{value:r,enumerable:!0}):e,r));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class E extends Error{constructor(t){super(t),this.name="CKEditor5BlazorError"}}function K(r,t){if(!r||r.size!==t.size)return!1;for(const[e,i]of r)if(!t.has(e)||t.get(e)!==i)return!1;return!0}class Q{items=new Map;initializationErrors=new Map;pendingCallbacks=new Map;watchers=new Set;batchDepth=0;lastNotifiedItems=null;lastNotifiedErrors=null;execute(t,e,i){const n=this.items.get(t),o=this.initializationErrors.get(t);return o?(i?.(o),Promise.reject(o)):n?Promise.resolve(e(n)):new Promise((s,u)=>{const l=this.getPendingCallbacks(t);l.success.push(async c=>{s(await e(c))}),i?l.error.push(i):l.error.push(u)})}mountEffect(t,e){let i,n,o=!1;const s=this.watch(u=>{const l=u.get(t);if(l!==n&&(i?.(),i=void 0,n=l,!!l))try{const c=e(l);o?(c?.(),s()):i=c}catch(c){throw console.error(c),c}});return()=>{o=!0,n&&(s(),i?.(),i=void 0)}}register(t,e){this.batch(()=>{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.items.size===1&&t!==null&&this.register(null,e)})}error(t,e){this.batch(()=>{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)})}resetErrors(t){const{initializationErrors:e}=this;e.has(null)&&e.get(null)===e.get(t)&&e.delete(null),e.delete(t)}unregister(t,e=!0){this.batch(()=>{t&&this.items.get(null)===this.items.get(t)&&this.unregister(null,!1),this.items.delete(t),e&&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((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.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(){K(this.lastNotifiedItems,this.items)&&K(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 e=this.pendingCallbacks.get(t);return e||(e={success:[],error:[]},this.pendingCallbacks.set(t,e)),e}}function L(r,t){let e=null;return(...i)=>{e&&clearTimeout(e),e=setTimeout(()=>{t(...i)},r)}}function yt(r,t){const e=Object.entries(r).filter(([i,n])=>t(n,i));return Object.fromEntries(e)}function S(r){return Object.keys(r).length===0&&r.constructor===Object}function _(r,t){const e=Object.entries(r).map(([i,n])=>[i,t(n,i)]);return Object.fromEntries(e)}function Et(r,t){if(r===t)return!0;const e=Object.keys(r),i=Object.keys(t);if(e.length!==i.length)return!1;for(const n of e)if(r[n]!==t[n]||!Object.prototype.hasOwnProperty.call(t,n))return!1;return!0}function kt(){return Math.random().toString(36).substring(2)}function vt(r,{timeOutAfter:t=500,retryAfter:e=100}={}){return new Promise((i,n)=>{const o=Date.now();let s=null;const u=setTimeout(()=>{n(s??new Error("Timeout"))},t),l=async()=>{try{const c=await r();clearTimeout(u),i(c)}catch(c){s=c,Date.now()-o>t?n(c):setTimeout(l,e)}};l()})}function M(){return new Promise(r=>{switch(document.readyState){case"loading":document.addEventListener("DOMContentLoaded",()=>r(),{once:!0});break;case"interactive":case"complete":setTimeout(r,0);break;default:console.warn("Unexpected document.readyState:",document.readyState),setTimeout(r,0)}})}function q(r){if(r.hasAttribute("data-cke-interactive"))return{promise:Promise.resolve(),disconnect:()=>{}};let t;return{promise:new Promise(i=>{t=new MutationObserver(n=>{for(const o of n)if(o.type==="attributes"&&o.attributeName==="data-cke-interactive"&&r.hasAttribute("data-cke-interactive")){t.disconnect(),i();break}}),t.observe(r,{attributes:!0})}),disconnect:()=>t?.disconnect()}}function x(r){r.setAttribute("data-cke-interactive","true")}function Ct(r){const t=[r.ui?.element,r.ui?.view?.toolbar?.element,r.ui?.view?.menuBarView?.element].filter(Boolean);for(const o of t)n(o);const e=r.ui?.view?.body?._bodyCollectionContainer;e?.isConnected&&n(e);const i=r.editing?.view;if(i)for(const o of i.domRoots.values())o instanceof HTMLElement&&(o.removeAttribute("contenteditable"),o.removeAttribute("role"),o.removeAttribute("aria-label"),o.removeAttribute("aria-multiline"),o.removeAttribute("spellcheck"),o.classList.remove("ck","ck-content","ck-editor__editable","ck-rounded-corners","ck-editor__editable_inline","ck-blurred","ck-focused"),n(o));function n(o){o.hasAttribute("data-cke-controlled")?o.innerHTML="":o.remove()}}const $=Symbol.for("context-editor-watchdog");async function At({element:r,context:t,creator:e,config:i}){const n=kt();await t.add({creator:(l,c)=>e.create(l,c),id:n,sourceElementOrData:r,type:"editor",config:i});const o=t.getItem(n),s={state:"available",editorContextId:n,context:t};o[$]=s;const u=t.destroy.bind(t);return t.destroy=async()=>(s.state="unavailable",u()),{...s,editor:o}}function It(r){return $ in r?r[$]:null}function Z(r){return Array.from(r.model.document.getRoots()).reduce((t,e)=>(e.rootName==="$graveyard"||(t[e.rootName]=r.getData({rootName:e.rootName})),t),Object.create({}))}function T(r){return["inline","classic","balloon","decoupled"].includes(r)}async function G(r){const t=await import("ckeditor5"),i={inline:t.InlineEditor,balloon:t.BalloonEditor,classic:t.ClassicEditor,decoupled:t.DecoupledEditor,multiroot:t.MultiRootEditor}[r];if(!i)throw new E(`Unsupported editor type: ${r}`);return i}class V{static the=new V;plugins=new Map;constructor(){}register(t,e){if(this.plugins.has(t))throw new E(`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 E(`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 tt(r){const t=await import("ckeditor5");let e=null;const i=r.map(async n=>{if(Ot(n)){const{name:l,path:c}=n.$import,d=await import(c),w=(Object.prototype.hasOwnProperty.call(d,l)?d[l]:void 0)??(Object.prototype.hasOwnProperty.call(d,"default")?d.default:void 0);if(!w)throw new E(`Plugin "${l}" not found in module "${c}".`);return w}const o=await V.the.get(n);if(o)return o;const{[n]:s}=t;if(s)return s;if(!e)try{e=await import("ckeditor5-premium-features")}catch(l){throw console.error(`Failed to load premium package: ${l}`),new E(`Plugin "${n}" not found in base package and failed to load premium package.`)}const{[n]:u}=e||{};if(u)return u;throw new E(`Plugin "${n}" not found in base or premium packages.`)});return{loadedPlugins:await Promise.all(i),hasPremium:!!e}}function Ot(r){return typeof r=="object"&&r!==null&&"$import"in r}async function et(r,t){const e=[r.ui,r.content];return await Promise.all([Y("ckeditor5",e),t&&Y("ckeditor5-premium-features",e)].filter(n=>!!n)).then(n=>n.flat())}async function Y(r,t){return await Promise.all(t.filter(e=>e!=="en").map(async e=>{const i=await Tt(r,e);return i?.default??i}).filter(Boolean))}async function Tt(r,t){try{if(r==="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 ${r}/${t}:`,e),null}}function rt(r){return _(r,t=>({dictionary:t}))}function F(){return Array.from(document.querySelectorAll("cke5-editor")).map(r=>r.getAttribute("data-cke-editor-id")).filter(r=>r!==null)}function at(r){const t=it(r);return _(t,({element:e})=>e)}function X(r){const t=it(r),e=_(t,({content:i})=>i);return yt(e,i=>typeof i=="string")}function it(r){const t=Array.from(document.querySelectorAll(`cke5-editable[data-cke-editor-id="${r}"]`)).reduce((s,u)=>{const l=u.getAttribute("data-cke-root-name"),c=u.getAttribute("data-cke-content");return s[l]={element:u.querySelector("[data-cke-editable-content]"),content:c},s},Object.create({})),e=document.querySelector(`cke5-editor[data-cke-editor-id="${r}"]`);if(!e)return t;const i=t.main,n=JSON.parse(e.getAttribute("data-cke-content")),o=document.querySelector(`#${r}_editor `);return i&&n?.main?{...t,main:{...i,content:i.content||n.main}}:o?{...t,main:{element:o,content:n?.main||null}}:t}function R(r){if(!r||typeof r!="object")return r;if(Array.isArray(r))return r.map(i=>R(i));const t=r;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(r))e[i]=R(n);return e}function D(r,t,e){if(!e||typeof e!="object")return e;if(Array.isArray(e))return e.map(o=>D(r,t,o));const i=e;if(i.$translation&&typeof i.$translation=="string"){const o=i.$translation,s=Pt(r,o,t);return s===void 0&&console.warn(`Translation not found for key: ${o}`),s!==void 0?s:null}const n=Object.create(null);for(const[o,s]of Object.entries(e))n[o]=D(r,t,s);return n}function Pt(r,t,e){for(const i of r){const n=i[e];if(n?.dictionary&&t in n.dictionary)return n.dictionary[t]}}function Nt(r,t){const{editing:e}=r;e.view.change(i=>{i.setStyle("height",`${t}px`,e.view.document.getRoot())})}const W=Symbol.for("elixir-editor-watchdog");async function St(r,t){const{EditorWatchdog:e}=await import("ckeditor5"),i=new e(null,t??{crashNumberLimit:10,minimumNonErrorTimePeriod:5e3});return i.setCreator(async()=>{const n=await r();return n[W]=i,n}),i}function Rt(r){return W in r?r[W]:null}class A extends Q{static the=new A}class Dt extends HTMLElement{contextPromise=null;interactiveWait;async connectedCallback(){await M(),this.interactiveWait=q(this),await this.interactiveWait.promise,await this.initializeContext()}async initializeContext(){const t=this.getAttribute("data-cke-context-id"),e=JSON.parse(this.getAttribute("data-cke-language")),i=JSON.parse(this.getAttribute("data-cke-context")),{customTranslations:n,watchdogConfig:o,config:{plugins:s,...u}}=i,{loadedPlugins:l,hasPremium:c}=await tt(s??[]),d=[...await et(e,c),rt(n||{})].filter(b=>!S(b));this.contextPromise=(async()=>{const{ContextWatchdog:b,Context:k}=await import("ckeditor5"),v=new b(k,{crashNumberLimit:10,...o});let f=R(u);return f=D([...d].reverse(),e.ui,f),await v.create({...f,language:e,plugins:l,...d.length&&{translations:d}}),v.on("itemError",(...C)=>{console.error("Context item error:",...C)}),v})();const w=await this.contextPromise;this.isConnected&&A.the.register(t,w)}async disconnectedCallback(){this.interactiveWait?.disconnect();const t=this.getAttribute("data-cke-context-id");this.style.display="none";try{await(await this.contextPromise)?.destroy()}finally{this.contextPromise=null,t&&A.the.hasItem(t)&&A.the.unregister(t)}}}class h extends Q{static the=new h}class nt extends HTMLElement{unmountEffect=null;interactiveWait;async connectedCallback(){await M(),this.interactiveWait=q(this),await this.interactiveWait.promise,await this.initializeEditable()}async initializeEditable(){this.hasAttribute("data-cke-editor-id")||this.setAttribute("data-cke-editor-id",F()[0]);const t=this.getAttribute("data-cke-editor-id"),e=this.getAttribute("data-cke-root-name"),i=JSON.parse(this.getAttribute("data-cke-root-attributes")||"{}"),n=this.getAttribute("data-cke-content"),o=Number.parseInt(this.getAttribute("data-cke-save-debounce-ms"),10);if(!t||!e)throw new E("Editor ID or Root Name is missing.");this.style.display="block",this.unmountEffect=h.the.mountEffect(t,s=>{if(!this.isConnected)return;const{ui:u,editing:l,model:c}=s,m=this.querySelector("input"),d=c.document.getRoot(e);if(d?.isAttached()){if(n!==null){const f=s.getData({rootName:e});f&&f!==n&&s.setData({[e]:n})}S(i)||s.model.change(f=>{f.setAttributes(i,d)});return}s.addRoot(e,{isUndoable:!1,attributes:{...i},...n!==null&&{data:n}});const w=this.querySelector("[data-cke-editable-content]"),b=u.view.createEditable(e,w);u.addEditable(b),l.view.forceRender();const k=()=>{if(!c.document.getRoot(e)?.isAttached())return;const f=s.getData({rootName:e});m&&(m.value=f,m.dispatchEvent(new Event("input"))),this.dispatchEvent(new CustomEvent("change",{detail:{value:f}}))},v=L(o,k);return s.model.document.on("change:data",v),k(),()=>{if(s.model.document.off("change:data",v),s.state!=="destroyed"&&e){const f=s.model.document.getRoot(e);if(f&&"detachEditable"in s){try{s.ui.view.editables[e]&&s.detachEditable(f)}catch(C){console.error("Unable unmount editable from root:",C)}f.isAttached()&&s.detachRoot(e,!1)}}}})}disconnectedCallback(){this.interactiveWait?.disconnect(),this.style.display="none",this.unmountEffect?.(),this.unmountEffect=null}}async function Mt({saveDebounceMs:r,editorId:t,targetElement:e}){const{Plugin:i}=await import("ckeditor5");return class extends i{static get pluginName(){return"DispatchEditorRootsChangeEvent"}afterInit(){const{editor:o}=this,s=L(r,this.dispatch);o.model.document.on("change:data",s),o.once("ready",this.dispatch)}dispatch=()=>{const{editor:o}=this;e.dispatchEvent(new g({editorId:t,editor:o,roots:Z(o)}))}}}class g extends CustomEvent{static EVENT_NAME="ckeditor5:change:data";constructor(t){super(g.EVENT_NAME,{detail:t,bubbles:!0})}}async function xt(r){const{Plugin:t}=await import("ckeditor5");return class extends t{input=null;form=null;static get pluginName(){return"SyncEditorWithInput"}afterInit(){const{editor:i}=this,o=i.sourceElement.id.replace(/_editor$/,"");this.input=document.getElementById(`${o}_input`),this.input&&(i.model.document.on("change:data",L(r,()=>this.sync())),i.once("ready",this.sync),this.form=this.input.closest("form"),this.form?.addEventListener("submit",this.sync))}sync=()=>{if(this.input){const i=this.editor.getData();this.input.value=i,this.input.dispatchEvent(new Event("input",{bubbles:!0}))}};destroy(){this.form&&this.form.removeEventListener("submit",this.sync),this.input=null,this.form=null}}}class ot extends HTMLElement{unmountEffect=null;interactiveWait;async connectedCallback(){await M(),this.interactiveWait=q(this),G("classic"),await this.interactiveWait.promise,await this.initializeEditor()}async initializeEditor(){const t=this.getAttribute("data-cke-editor-id");h.the.resetErrors(t);try{this.style.display="block";const e=await this.createEditor(),i=It(e),n=Rt(e);if(this.isConnected){const o=h.the.mountEffect(t,s=>{s.once("destroy",()=>{h.the.unregister(t,!1)},{priority:"highest"})});this.unmountEffect=async()=>{h.the.unregister(t),o(),i?i.state!=="unavailable"&&await i.context.remove(i.editorContextId):n?await n.destroy():await e.destroy()},h.the.register(t,e)}}catch(e){console.error(`Error initializing CKEditor5 instance with ID "${t}":`,e),h.the.error(t,e)}}async disconnectedCallback(){this.interactiveWait?.disconnect(),this.style.display="none",this.unmountEffect?.()}async createEditor(){const t=this.getAttribute("data-cke-editor-id"),e=JSON.parse(this.getAttribute("data-cke-preset")),i=this.getAttribute("data-cke-context-id"),n=JSON.parse(this.getAttribute("data-cke-root-attributes")||"{}"),o=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),u=JSON.parse(this.getAttribute("data-cke-language")),l=this.hasAttribute("data-cke-watchdog"),c=JSON.parse(this.getAttribute("data-cke-content")),{customTranslations:m,editorType:d,licenseKey:w,watchdogConfig:b,config:{plugins:k,...v}}=e,f=await G(d),C=await(i?A.the.waitFor(i):null),U=async()=>{const{loadedPlugins:y,hasPremium:P}=await tt(k);y.push(await Mt({saveDebounceMs:s,editorId:t,targetElement:this})),T(d)&&y.push(await xt(s));const I=[...await et(u,P),rt(m||{})].filter(p=>!S(p));let O={...c,...X(t)};T(d)&&(O=O.main||"");const N=await(async()=>{let p=at(t);if(!p.main){const H=T(d)?["main"]:Object.keys(O);st(p,H)||(p=await Vt(t,H),O={...c,...X(t)})}T(d)&&"main"in p&&(p=p.main);let z=R(v);z=D([...I].reverse(),u.ui,z);const B={...z,initialData:O,licenseKey:w,plugins:y,language:u,...I.length&&{translations:I}};return!C||!(p instanceof HTMLElement)?f.create(p,B):(await At({context:C,element:p,creator:f,config:B})).editor})();return S(n)||N.model.change(p=>{p.setAttributes(n,N.model.document.getRoot())}),T(d)&&o&&Nt(N,o),N};if(l&&!C){const y=await St(U,b);return y.on("error",(P,{causesRestart:j})=>{if(j){const I=h.the.getItem(t);I&&(Ct(I),h.the.unregister(t))}}),y.on("restart",()=>{const P=y.editor;h.the.register(t,P)}),await y.create({}),y.editor}return U()}}function st(r,t){return t.every(e=>r[e])}async function Vt(r,t){return vt(()=>{const e=at(r);if(!st(e,t))throw new Error(`It looks like not all required root elements are present yet.
1
+ "use strict";var ht=Object.create;var H=Object.defineProperty;var ft=Object.getOwnPropertyDescriptor;var pt=Object.getOwnPropertyNames;var wt=Object.getPrototypeOf,gt=Object.prototype.hasOwnProperty;var bt=(r,t,e,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of pt(t))!gt.call(r,i)&&i!==e&&H(r,i,{get:()=>t[i],enumerable:!(a=ft(t,i))||a.enumerable});return r};var n=(r,t,e)=>(e=r!=null?ht(wt(r)):{},bt(t||!r||!r.__esModule?H(e,"default",{value:r,enumerable:!0}):e,r));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class C extends Error{constructor(t){super(t),this.name="CKEditor5BlazorError"}}function J(r,t){if(!r||r.size!==t.size)return!1;for(const[e,a]of r)if(!t.has(e)||t.get(e)!==a)return!1;return!0}class X{items=new Map;initializationErrors=new Map;pendingCallbacks=new Map;watchers=new Set;batchDepth=0;lastNotifiedItems=null;lastNotifiedErrors=null;execute(t,e,a){const i=this.items.get(t),o=this.initializationErrors.get(t);return o?(a?.(o),Promise.reject(o)):i?Promise.resolve(e(i)):new Promise((s,c)=>{const u=this.getPendingCallbacks(t);u.success.push(async l=>{s(await e(l))}),a?u.error.push(a):u.error.push(c)})}mountEffect(t,e){let a,i,o=!1;const s=this.watch(c=>{const u=c.get(t);if(u!==i&&(a?.(),a=void 0,i=u,!!u))try{const l=e(u);o?(l?.(),s()):a=l}catch(l){throw console.error(l),l}});return()=>{o=!0,i&&(s(),a?.(),a=void 0)}}register(t,e){this.batch(()=>{if(this.items.has(t))throw new Error(`Item with ID "${t}" is already registered.`);this.resetErrors(t),this.items.set(t,e);const a=this.pendingCallbacks.get(t);a&&(a.success.forEach(i=>i(e)),this.pendingCallbacks.delete(t)),this.items.size===1&&t!==null&&this.register(null,e)})}error(t,e){this.batch(()=>{this.items.delete(t),this.initializationErrors.set(t,e);const a=this.pendingCallbacks.get(t);a&&(a.error.forEach(i=>i(e)),this.pendingCallbacks.delete(t)),this.initializationErrors.size===1&&!this.items.size&&this.error(null,e)})}resetErrors(t){const{initializationErrors:e}=this;e.has(null)&&e.get(null)===e.get(t)&&e.delete(null),e.delete(t)}unregister(t,e=!0){this.batch(()=>{t&&this.items.get(null)===this.items.get(t)&&this.unregister(null,!1),this.items.delete(t),e&&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((e,a)=>{this.execute(t,e,a)})}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.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 e=this.pendingCallbacks.get(t);return e||(e={success:[],error:[]},this.pendingCallbacks.set(t,e)),e}}function j(r,t){let e=null;return(...a)=>{e&&clearTimeout(e),e=setTimeout(()=>{t(...a)},r)}}function Et(r,t){const e=Object.entries(r).filter(([a,i])=>t(i,a));return Object.fromEntries(e)}function M(r){return Object.keys(r).length===0&&r.constructor===Object}function L(r,t){const e=Object.entries(r).map(([a,i])=>[a,t(i,a)]);return Object.fromEntries(e)}function yt(r,t){if(r===t)return!0;const e=Object.keys(r),a=Object.keys(t);if(e.length!==a.length)return!1;for(const i of e)if(r[i]!==t[i]||!Object.prototype.hasOwnProperty.call(t,i))return!1;return!0}function kt(){return Math.random().toString(36).substring(2)}function vt(r,{timeOutAfter:t=500,retryAfter:e=100}={}){return new Promise((a,i)=>{const o=Date.now();let s=null;const c=setTimeout(()=>{i(s??new Error("Timeout"))},t),u=async()=>{try{const l=await r();clearTimeout(c),a(l)}catch(l){s=l,Date.now()-o>t?i(l):setTimeout(u,e)}};u()})}function x(){return new Promise(r=>{switch(document.readyState){case"loading":document.addEventListener("DOMContentLoaded",()=>r(),{once:!0});break;case"interactive":case"complete":setTimeout(r,0);break;default:console.warn("Unexpected document.readyState:",document.readyState),setTimeout(r,0)}})}function _(r){if(r.hasAttribute("data-cke-interactive"))return{promise:Promise.resolve(),disconnect:()=>{}};let t;return{promise:new Promise(a=>{t=new MutationObserver(i=>{for(const o of i)if(o.type==="attributes"&&o.attributeName==="data-cke-interactive"&&r.hasAttribute("data-cke-interactive")){t.disconnect(),a();break}}),t.observe(r,{attributes:!0})}),disconnect:()=>t?.disconnect()}}function V(r){r.setAttribute("data-cke-interactive","true")}function Ct(r,t){const e=At(r),a=new Set([...Object.keys(e),...Object.keys(t.roots??{})]),i=Array.from(a).reduce((s,c)=>({...s,[c]:{...t.roots?.[c],...c==="main"?t.root:{},...c in e?{initialData:e[c]}:{}}}),Object.create(t.roots||{})),o={...t,roots:i};return delete o.root,o}function At(r){return typeof r=="string"?{main:r}:{...r}}function It(r,t,e){const a=Ot(t);if(!r.editorName||r.editorName==="ClassicEditor")return{...e,attachTo:a.main};const i=new Set([...Object.keys(a),...Object.keys(e.roots??{})]),o=Array.from(i).reduce((c,u)=>({...c,[u]:{...e.roots?.[u],...u==="main"?e.root:{},...u in a?{element:a[u]}:{}}}),Object.create(e.roots||{})),s={...e,roots:o};return delete s.root,s}function Ot(r){return r instanceof HTMLElement?{main:r}:{...r}}function Tt(r){const t=[r.ui?.element,r.ui?.view?.toolbar?.element,r.ui?.view?.menuBarView?.element].filter(Boolean);for(const o of t)i(o);const e=r.ui?.view?.body?._bodyCollectionContainer;e?.isConnected&&i(e);const a=r.editing?.view;if(a)for(const o of a.domRoots.values())o instanceof HTMLElement&&(o.removeAttribute("contenteditable"),o.removeAttribute("role"),o.removeAttribute("aria-label"),o.removeAttribute("aria-multiline"),o.removeAttribute("spellcheck"),o.classList.remove("ck","ck-content","ck-editor__editable","ck-rounded-corners","ck-editor__editable_inline","ck-blurred","ck-focused"),i(o));function i(o){o.hasAttribute("data-cke-controlled")?o.innerHTML="":o.remove()}}const $=Symbol.for("context-editor-watchdog");async function Nt({context:r,creator:t,config:e}){const a=kt();await r.add({creator:t.create.bind(t),id:a,type:"editor",config:e});const i=r.getItem(a),o={state:"available",editorContextId:a,context:r};i[$]=o;const s=r.destroy.bind(r);return r.destroy=async()=>(o.state="unavailable",s()),{...o,editor:i}}function Pt(r){return $ in r?r[$]:null}function Q(r){return Array.from(r.model.document.getRoots()).reduce((t,e)=>(e.rootName==="$graveyard"||(t[e.rootName]=r.getData({rootName:e.rootName})),t),Object.create({}))}function N(r){return["inline","classic","balloon","decoupled"].includes(r)}async function G(r){const t=await import("ckeditor5"),a={inline:t.InlineEditor,balloon:t.BalloonEditor,classic:t.ClassicEditor,decoupled:t.DecoupledEditor,multiroot:t.MultiRootEditor}[r];if(!a)throw new C(`Unsupported editor type: ${r}`);return a}class z{static the=new z;plugins=new Map;constructor(){}register(t,e){if(this.plugins.has(t))throw new C(`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 C(`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 Z(r){const t=await import("ckeditor5");let e=null;const a=r.map(async i=>{if(St(i)){const{name:u,path:l}=i.$import,m=await import(l),p=(Object.prototype.hasOwnProperty.call(m,u)?m[u]:void 0)??(Object.prototype.hasOwnProperty.call(m,"default")?m.default:void 0);if(!p)throw new C(`Plugin "${u}" not found in module "${l}".`);return p}const o=await z.the.get(i);if(o)return o;const{[i]:s}=t;if(s)return s;if(!e)try{e=await import("ckeditor5-premium-features")}catch(u){throw console.error(`Failed to load premium package: ${u}`),new C(`Plugin "${i}" not found in base package and failed to load premium package.`)}const{[i]:c}=e||{};if(c)return c;throw new C(`Plugin "${i}" not found in base or premium packages.`)});return{loadedPlugins:await Promise.all(a),hasPremium:!!e}}function St(r){return typeof r=="object"&&r!==null&&"$import"in r}async function tt(r,t){const e=[r.ui,r.content];return await Promise.all([K("ckeditor5",e),t&&K("ckeditor5-premium-features",e)].filter(i=>!!i)).then(i=>i.flat())}async function K(r,t){return await Promise.all(t.filter(e=>e!=="en").map(async e=>{const a=await Mt(r,e);return a?.default??a}).filter(Boolean))}async function Mt(r,t){try{if(r==="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 ${r}/${t}:`,e),null}}function et(r){return L(r,t=>({dictionary:t}))}function rt(r){return r?typeof r=="string"?{ui:r,content:r}:r:{ui:"en",content:"en"}}function q(){return Array.from(document.querySelectorAll("cke5-editor")).map(r=>r.getAttribute("data-cke-editor-id")).filter(r=>r!==null)}function nt(r){const t=at(r);return L(t,({element:e})=>e)}function Y(r){const t=at(r),e=L(t,({content:a})=>a);return Et(e,a=>typeof a=="string")}function at(r){const t=Array.from(document.querySelectorAll(`cke5-editable[data-cke-editor-id="${r}"]`)).reduce((s,c)=>{const u=c.getAttribute("data-cke-root-name"),l=c.getAttribute("data-cke-content");return s[u]={element:c.querySelector("[data-cke-editable-content]"),content:l},s},Object.create({})),e=document.querySelector(`cke5-editor[data-cke-editor-id="${r}"]`);if(!e)return t;const a=t.main,i=JSON.parse(e.getAttribute("data-cke-content")),o=document.querySelector(`#${r}_editor `);return a&&i?.main?{...t,main:{...a,content:a.content||i.main}}:o?{...t,main:{element:o,content:i?.main||null}}:t}function R(r){if(!r||typeof r!="object")return r;if(Array.isArray(r))return r.map(a=>R(a));const t=r;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 e=Object.create(null);for(const[a,i]of Object.entries(r))e[a]=R(i);return e}function D(r,t,e){if(!e||typeof e!="object")return e;if(Array.isArray(e))return e.map(o=>D(r,t,o));const a=e;if(a.$translation&&typeof a.$translation=="string"){const o=a.$translation,s=Rt(r,o,t);return s===void 0&&console.warn(`Translation not found for key: ${o}`),s!==void 0?s:null}const i=Object.create(null);for(const[o,s]of Object.entries(e))i[o]=D(r,t,s);return i}function Rt(r,t,e){for(const a of r){const i=a[e];if(i?.dictionary&&t in i.dictionary)return i.dictionary[t]}}function Dt(r,t){const{editing:e}=r;e.view.change(a=>{a.setStyle("height",`${t}px`,e.view.document.getRoot())})}const W=Symbol.for("elixir-editor-watchdog");async function xt(r,t){const{EditorWatchdog:e}=await import("ckeditor5"),a=new e(null,t??{crashNumberLimit:10,minimumNonErrorTimePeriod:5e3});return a.setCreator(async()=>{const i=await r();return i[W]=a,i}),a}function Vt(r){return W in r?r[W]:null}class I extends X{static the=new I}class zt extends HTMLElement{contextPromise=null;interactiveWait;async connectedCallback(){await x(),this.interactiveWait=_(this),await this.interactiveWait.promise,await this.initializeContext()}async initializeContext(){const t=JSON.parse(this.getAttribute("data-cke-context")),{customTranslations:e,watchdogConfig:a,config:{plugins:i,...o}}=t,s=this.getAttribute("data-cke-context-id"),c=this.getAttribute("data-cke-language")?JSON.parse(this.getAttribute("data-cke-language")):rt(o.language),{loadedPlugins:u,hasPremium:l}=await Z(i??[]),m=[...await tt(c,l),et(e||{})].filter(y=>!M(y));this.contextPromise=(async()=>{const{ContextWatchdog:y,Context:k}=await import("ckeditor5"),g=new y(k,{crashNumberLimit:10,...a});let f=R(o);return f=D([...m].reverse(),c.ui,f),await g.create({...f,language:c,plugins:u,...m.length&&{translations:m}}),g.on("itemError",(...A)=>{console.error("Context item error:",...A)}),g})();const p=await this.contextPromise;this.isConnected&&I.the.register(s,p)}async disconnectedCallback(){this.interactiveWait?.disconnect();const t=this.getAttribute("data-cke-context-id");this.style.display="none";try{await(await this.contextPromise)?.destroy()}finally{this.contextPromise=null,t&&I.the.hasItem(t)&&I.the.unregister(t)}}}class h extends X{static the=new h}class it extends HTMLElement{unmountEffect=null;interactiveWait;async connectedCallback(){await x(),this.interactiveWait=_(this),await this.interactiveWait.promise,await this.initializeEditable()}async initializeEditable(){this.hasAttribute("data-cke-editor-id")||this.setAttribute("data-cke-editor-id",q()[0]);const t=this.getAttribute("data-cke-editor-id"),e=this.getAttribute("data-cke-root-name"),a=JSON.parse(this.getAttribute("data-cke-root-attributes")||"{}"),i=this.getAttribute("data-cke-content"),o=Number.parseInt(this.getAttribute("data-cke-save-debounce-ms"),10);if(!t||!e)throw new C("Editor ID or Root Name is missing.");this.style.display="block",this.unmountEffect=h.the.mountEffect(t,s=>{if(!this.isConnected)return;const{ui:c,editing:u,model:l}=s,d=this.querySelector("input"),m=l.document.getRoot(e);if(m?.isAttached()){if(i!==null){const f=s.getData({rootName:e});f&&f!==i&&s.setData({[e]:i})}M(a)||s.model.change(f=>{f.setAttributes(a,m)});return}s.addRoot(e,{isUndoable:!1,modelAttributes:{...a},...i!==null&&{initialData:i}});const p=this.querySelector("[data-cke-editable-content]"),y=c.view.createEditable(e,p);c.addEditable(y),u.view.forceRender();const k=()=>{if(!l.document.getRoot(e)?.isAttached())return;const f=s.getData({rootName:e});d&&(d.value=f,d.dispatchEvent(new Event("input"))),this.dispatchEvent(new CustomEvent("change",{detail:{value:f}}))},g=j(o,k);return s.model.document.on("change:data",g),k(),()=>{if(s.model.document.off("change:data",g),s.state!=="destroyed"&&e){const f=s.model.document.getRoot(e);if(f&&"detachEditable"in s){try{s.ui.view.editables[e]&&s.detachEditable(f)}catch(A){console.error("Unable unmount editable from root:",A)}f.isAttached()&&s.detachRoot(e,!1)}}}})}disconnectedCallback(){this.interactiveWait?.disconnect(),this.style.display="none",this.unmountEffect?.(),this.unmountEffect=null}}async function $t({saveDebounceMs:r,editorId:t,targetElement:e}){const{Plugin:a}=await import("ckeditor5");return class extends a{static get pluginName(){return"DispatchEditorRootsChangeEvent"}afterInit(){const{editor:o}=this,s=j(r,this.dispatch);o.model.document.on("change:data",s),o.once("ready",this.dispatch)}dispatch=()=>{const{editor:o}=this;e.dispatchEvent(new E({editorId:t,editor:o,roots:Q(o)}))}}}class E extends CustomEvent{static EVENT_NAME="ckeditor5:change:data";constructor(t){super(E.EVENT_NAME,{detail:t,bubbles:!0})}}async function Wt(r){const{Plugin:t}=await import("ckeditor5");return class extends t{input=null;form=null;static get pluginName(){return"SyncEditorWithInput"}afterInit(){const{editor:a}=this,o=a.sourceElement.id.replace(/_editor$/,"");this.input=document.getElementById(`${o}_input`),this.input&&(a.model.document.on("change:data",j(r,()=>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 ot extends HTMLElement{unmountEffect=null;interactiveWait;async connectedCallback(){await x(),this.interactiveWait=_(this),G("classic"),await this.interactiveWait.promise,await this.initializeEditor()}async initializeEditor(){const t=this.getAttribute("data-cke-editor-id");h.the.resetErrors(t);try{this.style.display="block";const e=await this.createEditor(),a=Pt(e),i=Vt(e);if(this.isConnected){const o=h.the.mountEffect(t,s=>{s.once("destroy",()=>{h.the.unregister(t,!1)},{priority:"highest"})});this.unmountEffect=async()=>{h.the.unregister(t),o(),a?a.state!=="unavailable"&&await a.context.remove(a.editorContextId):i?await i.destroy():await e.destroy()},h.the.register(t,e)}}catch(e){console.error(`Error initializing CKEditor5 instance with ID "${t}":`,e),h.the.error(t,e)}}async disconnectedCallback(){this.interactiveWait?.disconnect(),this.style.display="none",this.unmountEffect?.()}async createEditor(){const t=JSON.parse(this.getAttribute("data-cke-preset")),{customTranslations:e,editorType:a,licenseKey:i,watchdogConfig:o,config:{plugins:s,...c}}=t,u=this.getAttribute("data-cke-editor-id"),l=this.getAttribute("data-cke-context-id"),d=JSON.parse(this.getAttribute("data-cke-root-attributes")||"{}"),m=this.getAttribute("data-cke-editable-height")?Number.parseInt(this.getAttribute("data-cke-editable-height"),10):null,p=Number.parseInt(this.getAttribute("data-cke-save-debounce-ms"),10),y=this.hasAttribute("data-cke-watchdog"),k=JSON.parse(this.getAttribute("data-cke-content")),g=this.getAttribute("data-cke-language")?JSON.parse(this.getAttribute("data-cke-language")):rt(t.config.language),f=await G(a),A=await(l?I.the.waitFor(l):null),F=async()=>{const{loadedPlugins:v,hasPremium:P}=await Z(s);v.push(await $t({saveDebounceMs:p,editorId:u,targetElement:this})),N(a)&&v.push(await Wt(p));const O=[...await tt(g,P),et(e||{})].filter(w=>!M(w));let T={...k,...Y(u)};N(a)&&(T=T.main||"");const S=await(async()=>{let w=nt(u);if(!w.main){const B=N(a)?["main"]:Object.keys(T);st(w,B)||(w=await jt(u,B),T={...k,...Y(u)})}N(a)&&"main"in w&&(w=w.main);let b={...c,licenseKey:i,plugins:v,language:g,...O.length&&{translations:O}};return b=R(b),b=D([...O].reverse(),g.ui,b),b=It(f,w,b),b=Ct(T,b),A?(await Nt({context:A,creator:f,config:b})).editor:f.create(b)})();return M(d)||S.model.change(w=>{w.setAttributes(d,S.model.document.getRoot())}),N(a)&&m&&Dt(S,m),S};if(y&&!A){const v=await xt(F,o);return v.on("error",(P,{causesRestart:U})=>{if(U){const O=h.the.getItem(u);O&&(Tt(O),h.the.unregister(u))}}),v.on("restart",()=>{const P=v.editor;h.the.register(u,P)}),await v.create({}),v.editor}return F()}}function st(r,t){return t.every(e=>r[e])}async function jt(r,t){return vt(()=>{const e=nt(r);if(!st(e,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(i=>!e[i]).join(", ")}.`);return e},{timeOutAfter:2e3,retryAfter:100})}class ct extends HTMLElement{unmountEffect=null;async connectedCallback(){await M();const t=this.getAttribute("data-cke-editor-id")||F()[0],e=this.getAttribute("data-cke-name");!t||!e||(this.style.display="block",this.unmountEffect=h.the.mountEffect(t,i=>{if(!this.isConnected)return;const{ui:n}=i,o=zt(e),s=n.view[o];if(!s)throw new E(`Unknown UI part name: "${e}". Supported names are "toolbar" and "menubar".`);return this.appendChild(s.element),()=>{this.innerHTML=""}}))}disconnectedCallback(){this.style.display="none",this.unmountEffect?.(),this.unmountEffect=null}}function zt(r){switch(r){case"toolbar":return"toolbar";case"menubar":return"menuBarView";default:return null}}const $t={"cke5-editor":ot,"cke5-context":Dt,"cke5-ui-part":ct,"cke5-editable":nt};function ut(){for(const[r,t]of Object.entries($t))window.customElements.get(r)||window.customElements.define(r,t)}function Wt(r){return x(r),{unmount(){}}}function lt(r,t){const e={pendingValue:null,lastSyncedValue:null},i=()=>{e.pendingValue=null},n=(o,s,u)=>{if(u||e.pendingValue===null)return;const l=t.getCurrentValue();t.isEqual(l,e.pendingValue)||t.applyValue(e.pendingValue),e.pendingValue=null};return r.model.document.on("change:data",i),r.ui.focusTracker.on("change:isFocused",n),{unmount(){r.model.document.off("change:data",i),r.ui.focusTracker.off("change:isFocused",n)},shouldNotify(o){return e.lastSyncedValue!==null&&t.isEqual(e.lastSyncedValue,o)?!1:(e.lastSyncedValue=o,!0)},setValue(o){if(r.ui.focusTracker.isFocused){e.pendingValue=o;return}e.lastSyncedValue!==null&&t.isEqual(e.lastSyncedValue,o)||(e.lastSyncedValue=o,t.applyValue(o))}}}function dt(){return{unmount(){},shouldNotify(r){return!1},setValue(r){}}}function mt(r,t){const e=new Set;return i=>{r.model.enqueueChange({isUndoable:!1},n=>{const o=r.model.document.getRoot(t);if(o){for(const s of e)i&&s in i||(n.removeAttribute(s,o),e.delete(s));for(const[s,u]of Object.entries(i??{}))n.setAttribute(s,u,o),e.add(s)}})}}function Lt(r,t){const e=r.getAttribute("data-cke-editor-id")??F()[0],i=r.getAttribute("data-cke-root-name")??"main";let n=!1,o=null,s=null,u=dt(),l=null;const c=m=>{if(!(m instanceof g)||m.detail.editorId!==e)return;const d=m.detail.roots[i];d!==void 0&&u.shouldNotify(d)&&t.invokeMethodAsync("OnChangeEditableData",s,d)};return o=h.the.mountEffect(e,m=>(s=globalThis.DotNet.createJSObjectReference(m),u=lt(m,{getCurrentValue:()=>m.getData({rootName:i})??"",applyValue:d=>m.setData({[i]:d}),isEqual:(d,w)=>d===w}),l=mt(m,i),()=>{u.unmount(),s&&(globalThis.DotNet?.disposeJSObjectReference(s),s=null),l=null})),document.body.addEventListener(g.EVENT_NAME,c),x(r),{unmount(){n||(document.body.removeEventListener(g.EVENT_NAME,c),o?.(),o=null,n=!0)},setValue:async m=>{n||(await h.the.waitFor(e),u.setValue(m))},setRootAttributes:async m=>{n||(await h.the.waitFor(e),l?.(m))}}}function _t(r,t){const e=r.getAttribute("data-cke-editor-id");let i=!1,n=null,o=dt(),s=null,u=null;const l=c=>{!(c instanceof g)||c.detail.editorId!==e||o.shouldNotify(c.detail.roots)&&t.invokeMethodAsync("OnChangeEditorData",u,c.detail.roots)};return n=h.the.mountEffect(e,c=>{u=globalThis.DotNet.createJSObjectReference(c),o=lt(c,{getCurrentValue:()=>Z(c),applyValue:d=>c.setData(d),isEqual:Et}),s=mt(c,"main");const m=(d,w,b)=>{const k=b?"OnEditorFocus":"OnEditorBlur";t.invokeMethodAsync(k,u)};return c.ui.focusTracker.on("change:isFocused",m),t.invokeMethodAsync("OnEditorReady",u),()=>{c.ui.focusTracker.off("change:isFocused",m),o.unmount(),u&&(globalThis.DotNet?.disposeJSObjectReference(u),u=null),s=null}}),document.body.addEventListener(g.EVENT_NAME,l),ut(),x(r),{setValue:async c=>{i||(await h.the.waitFor(e),o.setValue(c))},setRootAttributes:async c=>{i||(await h.the.waitFor(e),s?.(c))},unmount(){i||(document.body.removeEventListener(g.EVENT_NAME,l),n?.(),n=null,i=!0)},attachImageUploadAdapter:async()=>{i||h.the.mountEffect(e,c=>{qt(c,t)})}}}function qt(r,t){if(!r.plugins.has("FileRepository"))return;const e=r.plugins.get("FileRepository");e.createUploadAdapter=i=>{let n=!1;return{async upload(){const o=await i.file;if(n)throw new Error("Upload aborted.");const s=await Ft(o),u=await t.invokeMethodAsync("OnEditorImageUpload",{fileName:o.name,mimeType:o.type,payload:s});if(!u)throw new Error("OnImageUpload handler returned null. Make sure the OnImageUpload parameter is set on the <CKE5Editor> component.");return{default:u}},abort(){n=!0}}}}function Ft(r){return new Promise((t,e)=>{const i=new FileReader;i.onload=()=>{const n=i.result,o=n.split(",")[1]??n;t(o)},i.onerror=()=>e(i.error),i.readAsDataURL(r)})}function Ut(r){return x(r),{unmount(){}}}exports.CKEditor5BlazorError=E;exports.CKEditor5ChangeDataEvent=g;exports.ContextsRegistry=A;exports.CustomEditorPluginsRegistry=V;exports.EditableComponentElement=nt;exports.EditorComponentElement=ot;exports.EditorsRegistry=h;exports.UIPartComponentElement=ct;exports.createContextBlazorInterop=Wt;exports.createEditableBlazorInterop=Lt;exports.createEditorBlazorInterop=_t;exports.createUIPartBlazorInterop=Ut;exports.ensureEditorElementsRegistered=ut;
4
+ Missing roots: ${t.filter(a=>!e[a]).join(", ")}.`);return e},{timeOutAfter:2e3,retryAfter:100})}class ct extends HTMLElement{unmountEffect=null;async connectedCallback(){await x();const t=this.getAttribute("data-cke-editor-id")||q()[0],e=this.getAttribute("data-cke-name");!t||!e||(this.style.display="block",this.unmountEffect=h.the.mountEffect(t,a=>{if(!this.isConnected)return;const{ui:i}=a,o=Lt(e),s=i.view[o];if(!s)throw new C(`Unknown UI part name: "${e}". Supported names are "toolbar" and "menubar".`);return this.appendChild(s.element),()=>{this.innerHTML=""}}))}disconnectedCallback(){this.style.display="none",this.unmountEffect?.(),this.unmountEffect=null}}function Lt(r){switch(r){case"toolbar":return"toolbar";case"menubar":return"menuBarView";default:return null}}const _t={"cke5-editor":ot,"cke5-context":zt,"cke5-ui-part":ct,"cke5-editable":it};function ut(){for(const[r,t]of Object.entries(_t))window.customElements.get(r)||window.customElements.define(r,t)}function qt(r){return V(r),{unmount(){}}}function lt(r,t){const e={pendingValue:null,lastSyncedValue:null},a=()=>{e.pendingValue=null},i=(o,s,c)=>{if(c||e.pendingValue===null)return;const u=t.getCurrentValue();t.isEqual(u,e.pendingValue)||t.applyValue(e.pendingValue),e.pendingValue=null};return r.model.document.on("change:data",a),r.ui.focusTracker.on("change:isFocused",i),{unmount(){r.model.document.off("change:data",a),r.ui.focusTracker.off("change:isFocused",i)},shouldNotify(o){return e.lastSyncedValue!==null&&t.isEqual(e.lastSyncedValue,o)?!1:(e.lastSyncedValue=o,!0)},setValue(o){if(r.ui.focusTracker.isFocused){e.pendingValue=o;return}e.lastSyncedValue!==null&&t.isEqual(e.lastSyncedValue,o)||(e.lastSyncedValue=o,t.applyValue(o))}}}function dt(){return{unmount(){},shouldNotify(r){return!1},setValue(r){}}}function mt(r,t){const e=new Set;return a=>{r.model.enqueueChange({isUndoable:!1},i=>{const o=r.model.document.getRoot(t);if(o){for(const s of e)a&&s in a||(i.removeAttribute(s,o),e.delete(s));for(const[s,c]of Object.entries(a??{}))i.setAttribute(s,c,o),e.add(s)}})}}function Ft(r,t){const e=r.getAttribute("data-cke-editor-id")??q()[0],a=r.getAttribute("data-cke-root-name")??"main";let i=!1,o=null,s=null,c=dt(),u=null;const l=d=>{if(!(d instanceof E)||d.detail.editorId!==e)return;const m=d.detail.roots[a];m!==void 0&&c.shouldNotify(m)&&t.invokeMethodAsync("OnChangeEditableData",s,m)};return o=h.the.mountEffect(e,d=>(s=globalThis.DotNet.createJSObjectReference(d),c=lt(d,{getCurrentValue:()=>d.getData({rootName:a})??"",applyValue:m=>d.setData({[a]:m}),isEqual:(m,p)=>m===p}),u=mt(d,a),()=>{c.unmount(),s&&(globalThis.DotNet?.disposeJSObjectReference(s),s=null),u=null})),document.body.addEventListener(E.EVENT_NAME,l),V(r),{unmount(){i||(document.body.removeEventListener(E.EVENT_NAME,l),o?.(),o=null,i=!0)},setValue:async d=>{i||(await h.the.waitFor(e),c.setValue(d))},setRootAttributes:async d=>{i||(await h.the.waitFor(e),u?.(d))}}}function Ut(r,t){const e=r.getAttribute("data-cke-editor-id");let a=!1,i=null,o=dt(),s=null,c=null;const u=l=>{!(l instanceof E)||l.detail.editorId!==e||o.shouldNotify(l.detail.roots)&&t.invokeMethodAsync("OnChangeEditorData",c,l.detail.roots)};return i=h.the.mountEffect(e,l=>{c=globalThis.DotNet.createJSObjectReference(l),o=lt(l,{getCurrentValue:()=>Q(l),applyValue:m=>l.setData(m),isEqual:yt}),s=mt(l,"main");const d=(m,p,y)=>{const k=y?"OnEditorFocus":"OnEditorBlur";t.invokeMethodAsync(k,c)};return l.ui.focusTracker.on("change:isFocused",d),t.invokeMethodAsync("OnEditorReady",c),()=>{l.ui.focusTracker.off("change:isFocused",d),o.unmount(),c&&(globalThis.DotNet?.disposeJSObjectReference(c),c=null),s=null}}),document.body.addEventListener(E.EVENT_NAME,u),ut(),V(r),{setValue:async l=>{a||(await h.the.waitFor(e),o.setValue(l))},setRootAttributes:async l=>{a||(await h.the.waitFor(e),s?.(l))},unmount(){a||(document.body.removeEventListener(E.EVENT_NAME,u),i?.(),i=null,a=!0)},attachImageUploadAdapter:async()=>{a||h.the.mountEffect(e,l=>{Bt(l,t)})}}}function Bt(r,t){if(!r.plugins.has("FileRepository"))return;const e=r.plugins.get("FileRepository");e.createUploadAdapter=a=>{let i=!1;return{async upload(){const o=await a.file;if(i)throw new Error("Upload aborted.");const s=await Ht(o),c=await t.invokeMethodAsync("OnEditorImageUpload",{fileName:o.name,mimeType:o.type,payload:s});if(!c)throw new Error("OnImageUpload handler returned null. Make sure the OnImageUpload parameter is set on the <CKE5Editor> component.");return{default:c}},abort(){i=!0}}}}function Ht(r){return new Promise((t,e)=>{const a=new FileReader;a.onload=()=>{const i=a.result,o=i.split(",")[1]??i;t(o)},a.onerror=()=>e(a.error),a.readAsDataURL(r)})}function Jt(r){return V(r),{unmount(){}}}exports.CKEditor5BlazorError=C;exports.CKEditor5ChangeDataEvent=E;exports.ContextsRegistry=I;exports.CustomEditorPluginsRegistry=z;exports.EditableComponentElement=it;exports.EditorComponentElement=ot;exports.EditorsRegistry=h;exports.UIPartComponentElement=ct;exports.createContextBlazorInterop=qt;exports.createEditableBlazorInterop=Ft;exports.createEditorBlazorInterop=Ut;exports.createUIPartBlazorInterop=Jt;exports.ensureEditorElementsRegistered=ut;
5
5
  //# sourceMappingURL=index.cjs.map