ckeditor5-livewire 1.11.0 → 1.12.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.
- package/dist/hooks/editor/editor.d.ts.map +1 -1
- package/dist/hooks/editor/types/editor-relaxed-constructor.type.d.ts +6 -0
- package/dist/hooks/editor/types/editor-relaxed-constructor.type.d.ts.map +1 -0
- package/dist/hooks/editor/types/index.d.ts +2 -0
- package/dist/hooks/editor/types/index.d.ts.map +1 -0
- package/dist/hooks/editor/utils/assign-initial-data-to-editor-config.d.ts +10 -0
- package/dist/hooks/editor/utils/assign-initial-data-to-editor-config.d.ts.map +1 -0
- package/dist/hooks/editor/utils/assign-source-elements-to-editor-config.d.ts +12 -0
- package/dist/hooks/editor/utils/assign-source-elements-to-editor-config.d.ts.map +1 -0
- package/dist/hooks/editor/utils/create-editor-in-context.d.ts +1 -3
- package/dist/hooks/editor/utils/create-editor-in-context.d.ts.map +1 -1
- package/dist/hooks/editor/utils/index.d.ts +2 -0
- package/dist/hooks/editor/utils/index.d.ts.map +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +166 -126
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
- package/src/hooks/editable.ts +1 -1
- package/src/hooks/editor/editor.ts +8 -6
- package/src/hooks/editor/types/editor-relaxed-constructor.type.ts +6 -0
- package/src/hooks/editor/types/index.ts +1 -0
- package/src/hooks/editor/utils/assign-initial-data-to-editor-config.ts +48 -0
- package/src/hooks/editor/utils/assign-source-elements-to-editor-config.ts +61 -0
- package/src/hooks/editor/utils/create-editor-in-context.ts +2 -5
- package/src/hooks/editor/utils/index.ts +2 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../../../src/hooks/editor/editor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAY,cAAc,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAIxE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../../../src/hooks/editor/editor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAY,cAAc,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAIxE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AA2BpC;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,SAAS,CAAC,QAAQ,CAAC;IAC1D;;OAEG;IACH,OAAO,CAAC,qBAAqB,CAAsC;IAEnE;;OAEG;IACY,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAuDvC;;;OAGG;IACY,SAAS;IAKxB;;OAEG;IACY,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAUjD;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;OAEG;YACW,YAAY;CAoK3B;AA4CD;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAEzB;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,MAAM,EAAE,YAAY,CAAC;IAErB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEhC;;OAEG;IACH,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAE9B;;OAEG;IACH,QAAQ,EAAE,cAAc,CAAC;IAEzB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"editor-relaxed-constructor.type.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/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 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/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/hooks/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,CA+BH"}
|
|
@@ -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/hooks/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,CAwCH"}
|
|
@@ -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({
|
|
11
|
+
export declare function createEditorInContext({ context, creator, config }: Attrs): Promise<{
|
|
13
12
|
editor: Editor;
|
|
14
13
|
state: "available" | "unavailable";
|
|
15
14
|
editorContextId: string;
|
|
@@ -34,7 +33,6 @@ type EditorCreator = {
|
|
|
34
33
|
type Attrs = {
|
|
35
34
|
context: ContextWatchdog<Context>;
|
|
36
35
|
creator: EditorCreator;
|
|
37
|
-
element: HTMLElement;
|
|
38
36
|
config: EditorConfig;
|
|
39
37
|
};
|
|
40
38
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-editor-in-context.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/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
|
|
1
|
+
{"version":3,"file":"create-editor-in-context.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/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;;WAoEtE,WAAW,GAAG,aAAa;qBACjB,MAAM;aACd,eAAe,CAAC,OAAO,CAAC;GArClC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,uBAAuB,GAAG,IAAI,CAMlF;AAED;;GAEG;AACH,KAAK,aAAa,GAAG;IACnB,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC3C,CAAC;AACF;;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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/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,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/hooks/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,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
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=class{state=`mounting`;_beforeDestroyCallbacks=[];constructor(e){this.livewireComponent=e}onBeforeDestroy(e){this._beforeDestroyCallbacks.push(e)}get canonical(){return this.livewireComponent.canonical}get element(){return this.livewireComponent.el}get $wire(){return this.livewireComponent.$wire}isBeingDestroyed(){return[`destroyed`,`destroying`].includes(this.state)}_runBeforeDestroyCallbacks(){for(let e of this._beforeDestroyCallbacks.reverse())e();this._beforeDestroyCallbacks=[]}};function t(e,t){let n=new Map;window.Livewire?.hook(`component.init`,async({component:r,cleanup:i})=>{if(r.name!==e)return;let a=new t(r);n.set(r.id,a),i(async()=>{a.state=`destroying`,a._runBeforeDestroyCallbacks(),await a.destroyed(),a.state=`destroyed`,n.delete(r.id)}),await a.mounted(),a.state=`mounted`}),window.Livewire?.hook(`commit`,async({component:t,succeed:r})=>{t.name===e&&r(()=>{let e=n.get(t.id);e?.state===`mounted`&&e?.afterCommitSynced?.()})})}function n(e,t){if(!e||e.size!==t.size)return!1;for(let[n,r]of e)if(!t.has(n)||t.get(n)!==r)return!1;return!0}var r=class{items=new Map;initializationErrors=new Map;pendingCallbacks=new Map;watchers=new Set;batchDepth=0;lastNotifiedItems=null;lastNotifiedErrors=null;execute(e,t,n){let r=this.items.get(e),i=this.initializationErrors.get(e);return i?(n?.(i),Promise.reject(i)):r?Promise.resolve(t(r)):new Promise((r,i)=>{let a=this.getPendingCallbacks(e);a.success.push(async e=>{r(await t(e))}),n?a.error.push(n):a.error.push(i)})}mountEffect(e,t){let n,r,i=!1,a=this.watch(o=>{let s=o.get(e);if(s!==r&&(n?.(),n=void 0,r=s,s))try{let e=t(s);i?(e?.(),a()):n=e}catch(e){throw console.error(e),e}});return()=>{i=!0,r&&(a(),n?.(),n=void 0)}}register(e,t){this.batch(()=>{if(this.items.has(e))throw Error(`Item with ID "${e}" is already registered.`);this.resetErrors(e),this.items.set(e,t);let n=this.pendingCallbacks.get(e);n&&(n.success.forEach(e=>e(t)),this.pendingCallbacks.delete(e)),this.items.size===1&&e!==null&&this.register(null,t)})}error(e,t){this.batch(()=>{this.items.delete(e),this.initializationErrors.set(e,t);let n=this.pendingCallbacks.get(e);n&&(n.error.forEach(e=>e(t)),this.pendingCallbacks.delete(e)),this.initializationErrors.size===1&&!this.items.size&&this.error(null,t)})}resetErrors(e){let{initializationErrors:t}=this;t.has(null)&&t.get(null)===t.get(e)&&t.delete(null),t.delete(e)}unregister(e,t=!0){this.batch(()=>{e&&this.items.get(null)===this.items.get(e)&&this.unregister(null,!1),this.items.delete(e),t&&this.pendingCallbacks.delete(e),this.resetErrors(e)})}getItems(){return Array.from(this.items.values())}getItem(e){return this.items.get(e)}hasItem(e){return this.items.has(e)}waitFor(e){return new Promise((t,n)=>{this.execute(e,t,n)})}async destroyAll(){let e=Array.from(new Set(this.items.values())).map(e=>e.destroy());this.items.clear(),this.pendingCallbacks.clear(),await Promise.all(e),this.flushWatchers()}async reset(){await this.destroyAll(),this.watchers.clear()}batch(e){this.batchDepth++;try{return e()}finally{this.batchDepth--,this.batchDepth===0&&this.flushWatchers()}}watch(e){return this.watchers.add(e),e(new Map(this.items),new Map(this.initializationErrors)),this.unwatch.bind(this,e)}unwatch(e){this.watchers.delete(e)}flushWatchers(){n(this.lastNotifiedItems,this.items)&&n(this.lastNotifiedErrors,this.initializationErrors)||(this.lastNotifiedItems=new Map(this.items),this.lastNotifiedErrors=new Map(this.initializationErrors),this.watchers.forEach(e=>e(new Map(this.items),new Map(this.initializationErrors))))}getPendingCallbacks(e){let t=this.pendingCallbacks.get(e);return t||(t={success:[],error:[]},this.pendingCallbacks.set(e,t)),t}};function i(e,t){let n=null;return(...r)=>{n&&clearTimeout(n),n=setTimeout(()=>{t(...r)},e)}}function a(e,t){let n=Object.entries(e).filter(([e,n])=>t(n,e));return Object.fromEntries(n)}function o(e){return Object.keys(e).length===0&&e.constructor===Object}function s(e,t){let n=Object.entries(e).map(([e,n])=>[e,t(n,e)]);return Object.fromEntries(n)}function c(e,t){if(e===t)return!0;let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r of n)if(e[r]!==t[r]||!Object.prototype.hasOwnProperty.call(t,r))return!1;return!0}function l(){return Math.random().toString(36).substring(2)}function u(e,{timeOutAfter:t=500,retryAfter:n=100}={}){return new Promise((r,i)=>{let a=Date.now(),o=null,s=setTimeout(()=>{i(o??Error(`Timeout`))},t),c=async()=>{try{let t=await e();clearTimeout(s),r(t)}catch(e){o=e,Date.now()-a>t?i(e):setTimeout(c,n)}};c()})}function d(e){let t=[e.ui?.element,e.ui?.view?.toolbar?.element,e.ui?.view?.menuBarView?.element].filter(Boolean);for(let e of t)i(e);let n=e.ui?.view?.body?._bodyCollectionContainer;n?.isConnected&&i(n);let r=e.editing?.view;if(r)for(let e of r.domRoots.values())e instanceof HTMLElement&&(e.removeAttribute(`contenteditable`),e.removeAttribute(`role`),e.removeAttribute(`aria-label`),e.removeAttribute(`aria-multiline`),e.removeAttribute(`spellcheck`),e.classList.remove(`ck`,`ck-content`,`ck-editor__editable`,`ck-rounded-corners`,`ck-editor__editable_inline`,`ck-blurred`,`ck-focused`),i(e));function i(e){e.hasAttribute(`data-cke-controlled`)?e.innerHTML=``:e.remove()}}var f=Symbol.for(`context-editor-watchdog`);async function p({element:e,context:t,creator:n,config:r}){let i=l();await t.add({creator:(e,t)=>n.create(e,t),id:i,sourceElementOrData:e,type:`editor`,config:r});let a=t.getItem(i),o={state:`available`,editorContextId:i,context:t};a[f]=o;let s=t.destroy.bind(t);return t.destroy=async()=>(o.state=`unavailable`,s()),{...o,editor:a}}function m(e){return f in e?e[f]:null}function h(e){return e.model.document.getRootNames().reduce((t,n)=>(t[n]=e.getData({rootName:n}),t),Object.create({}))}function g(e){return`addEditable`in e.ui}function _(e){return[`inline`,`classic`,`balloon`,`decoupled`].includes(e)}async function v(e){let t=await import(`ckeditor5`),n={inline:t.InlineEditor,balloon:t.BalloonEditor,classic:t.ClassicEditor,decoupled:t.DecoupledEditor,multiroot:t.MultiRootEditor}[e];if(!n)throw Error(`Unsupported editor type: ${e}`);return n}var y=class e{static the=new e;plugins=new Map;constructor(){}register(e,t){if(this.plugins.has(e))throw Error(`Plugin with name "${e}" is already registered.`);return this.plugins.set(e,t),this.unregister.bind(this,e)}unregister(e){if(!this.plugins.has(e))throw Error(`Plugin with name "${e}" is not registered.`);this.plugins.delete(e)}unregisterAll(){this.plugins.clear()}async get(e){return this.plugins.get(e)?.()}has(e){return this.plugins.has(e)}};async function b(e){let t=await import(`ckeditor5`),n=null,r=e.map(async e=>{let r=await y.the.get(e);if(r)return r;let{[e]:i}=t;if(i)return i;if(!n)try{n=await import(`ckeditor5-premium-features`)}catch(e){console.error(`Failed to load premium package: ${e}`)}let{[e]:a}=n||{};if(a)return a;throw Error(`Plugin "${e}" not found in base or premium packages.`)});return{loadedPlugins:await Promise.all(r),hasPremium:!!n}}async function x(e,t){let n=[e.ui,e.content],r=[S(`ckeditor5`,n)];return t&&r.push(S(`ckeditor5-premium-features`,n)),await Promise.all(r).then(e=>e.flat())}async function S(e,t){return await Promise.all(t.filter(e=>e!==`en`).map(async t=>{let n=await C(e,t);return n?.default??n}).filter(Boolean))}async function C(e,t){try{if(e===`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(n){return console.error(`Failed to load translation for ${e}/${t}:`,n),null}}function w(e){return s(e,e=>({dictionary:e}))}function T(e){return s(E(e),({element:e})=>e)}function E(e){let t=window.Livewire.all().filter(({name:t,canonical:n})=>t===`ckeditor5-editable`&&n.editorId===e).reduce((e,{canonical:t,el:n})=>({...e,[t.rootName]:{element:n.querySelector(`[data-cke-editable-content]`),content:t.content}}),Object.create({})),n=window.Livewire.all().find(({name:t,canonical:n})=>t===`ckeditor5`&&n.editorId===e)?.canonical.content,r=document.querySelector(`#${e}_editor `),i=t.main;return i&&n?.main?{...t,main:{...i,content:i.content||n.main}}:r?{...t,main:{element:r,content:n?.main||null}}:t}function D(e){return a(s(E(e),({content:e})=>e),e=>typeof e==`string`)}function O(e){if(!e||typeof e!=`object`)return e;if(Array.isArray(e))return e.map(e=>O(e));let t=e;if(t.$element&&typeof t.$element==`string`){let e=document.querySelector(t.$element);return e||console.warn(`Element not found for selector: ${t.$element}`),e||null}let n=Object.create(null);for(let[t,r]of Object.entries(e))n[t]=O(r);return n}function k(e,t,n){if(!n||typeof n!=`object`)return n;if(Array.isArray(n))return n.map(n=>k(e,t,n));let r=n;if(r.$translation&&typeof r.$translation==`string`){let n=r.$translation,i=A(e,n,t);return i===void 0&&console.warn(`Translation not found for key: ${n}`),i===void 0?null:i}let i=Object.create(null);for(let[r,a]of Object.entries(n))i[r]=k(e,t,a);return i}function A(e,t,n){for(let r of e){let e=r[n];if(e?.dictionary&&t in e.dictionary)return e.dictionary[t]}}function j(e,t){let{editing:n}=e;n.view.change(e=>{e.setStyle(`height`,`${t}px`,n.view.document.getRoot())})}var M=Symbol.for(`livewire-editor-watchdog`);async function N(e,t){let{EditorWatchdog:n}=await import(`ckeditor5`),r=new n(null,t??{crashNumberLimit:10,minimumNonErrorTimePeriod:5e3});return r.setCreator(async()=>{let t=await e();return t[M]=r,t}),r}function P(e){return M in e?e[M]:null}var F=class e extends r{static the=new e},I=class extends e{contextPromise=null;async mounted(){let{contextId:e,language:t,context:n}=this.canonical,{customTranslations:r,watchdogConfig:i,config:{plugins:a,...s}}=n,{loadedPlugins:c,hasPremium:l}=await b(a??[]),u=[...await x(t,l),w(r||{})].filter(e=>!o(e));this.contextPromise=(async()=>{let{ContextWatchdog:e,Context:n}=await import(`ckeditor5`),r=new e(n,{crashNumberLimit:10,...i}),a=O(s);return a=k([...u].reverse(),t.ui,a),await r.create({...a,language:t,plugins:c,...u.length&&{translations:u}}),r.on(`itemError`,(...e)=>{console.error(`Context item error:`,...e)}),r})();let d=await this.contextPromise;this.isBeingDestroyed()||F.the.register(e,d)}async destroyed(){let{contextId:e}=this.canonical;this.element.style.display=`none`;try{await(await this.contextPromise)?.destroy()}finally{this.contextPromise=null,F.the.hasItem(e)&&F.the.unregister(e)}}},L=class e extends r{static the=new e};function R(e){let t=e;for(;t;){for(let e of t.attributes)if(e.name.startsWith(`wire:model`))return!0;t=t.parentElement}return!1}function z(e,t){let n=new Set;return r=>{e.model.enqueueChange({isUndoable:!1},i=>{let a=e.model.document.getRoot(t);if(a){for(let e of n)r&&e in r||(i.removeAttribute(e,a),n.delete(e));for(let[e,t]of Object.entries(r??{}))i.setAttribute(e,t,a),n.add(e)}})}}var B=class extends e{rootAttributesUpdater=null;pendingContent=null;mounted(){let{editorId:e,rootName:t,content:n}=this.canonical,r=L.the.mountEffect(e,e=>{if(this.isBeingDestroyed())return;let r=e.model.document.getRoot(t);if(r?.isAttached()&&n!==null){let r=e.getData({rootName:t});r&&r!==n&&e.setData({[t]:n})}if(!r&&g(e)){let{ui:r,editing:i}=e;e.addRoot(t,{isUndoable:!1,...n!==null&&{data:n}});let a=this.element.querySelector(`[data-cke-editable-content]`),o=r.view.createEditable(t,a);r.addEditable(o),i.view.forceRender()}let i=this.syncTypingContentPush(e),a=this.setupPendingReceivedContentHandlers(e);return this.applyRootAttributes(e),()=>{if(i(),a(),this.rootAttributesUpdater?.(null),e.state!==`destroyed`){let n=e.model.document.getRoot(t);if(n&&g(e)){try{e.ui.view.editables[t]&&e.detachEditable(n)}catch(e){console.error(`Unable unmount editable from root:`,e)}n.isAttached()&&e.detachRoot(t,!1)}}}});this.onBeforeDestroy(r)}async afterCommitSynced(){let{editorId:e}=this.canonical,t=await L.the.waitFor(e);this.applyCanonicalContentToEditor(t),this.applyRootAttributes(t)}destroyed(){this.element.style.display=`none`}syncTypingContentPush(e){let{rootName:t,saveDebounceMs:n}=this.canonical,r=this.element.querySelector(`input`),a=!1,o=()=>{if(a||!e.model.document.getRoot(t)?.isAttached())return;let n=e.getData({rootName:t});r&&(r.value=n),this.$wire.set(`content`,n)},s=i(n,o),c=()=>{e.ui.focusTracker.isFocused?s():o()};return e.model.document.on(`change:data`,c),o(),()=>{a=!0,e.model.document.off(`change:data`,c)}}setupPendingReceivedContentHandlers(e){let{ui:t,model:n}=e,{focusTracker:r}=t,{rootName:i}=this.canonical,a=()=>{this.pendingContent=null},o=()=>{!r.isFocused&&this.pendingContent!==null&&(e.setData({[i]:this.pendingContent}),this.pendingContent=null)};return n.document.on(`change:data`,a),r.on(`change:isFocused`,o),()=>{n.document.off(`change:data`,a),r.off(`change:isFocused`,o)}}applyCanonicalContentToEditor(e){if(!R(this.element))return;let{content:t,rootName:n}=this.canonical,{ui:r}=e;if(e.getData({rootName:n})!==(t??``)){if(r.focusTracker.isFocused){this.pendingContent=t??``;return}e.setData({[n]:t??``})}}applyRootAttributes(e){let{rootName:t,rootAttributes:n}=this.canonical;this.rootAttributesUpdater??=z(e,t),this.rootAttributesUpdater(n)}};async function V({saveDebounceMs:e,component:t}){let{Plugin:n}=await import(`ckeditor5`);return class extends n{static get pluginName(){return`LivewireSync`}init(){this.setupTypingContentPush(),this.setupFocusableEventPush(),this.setupAfterCommitHandler(),this.setupSetEditorContentHandler(),this.setupReadyDispatch()}setupAfterCommitHandler(){let{editor:e}=this,{model:n,ui:{focusTracker:r}}=e,i=null;e.on(`afterCommitSynced`,()=>{if(!R(t.element))return;let{content:n}=t.canonical,a=this.getEditorRootsValues();if(r.isFocused){c(n,a)||(i=n);return}c(n,a)||e.setData(n)}),n.document.on(`change:data`,()=>{i=null}),r.on(`change:isFocused`,()=>{!r.isFocused&&i!==null&&(e.setData(i),i=null)})}setupReadyDispatch(){let{$wire:e}=t;this.editor.once(`ready`,()=>{e.dispatch(`editor-ready`,{editorId:t.canonical.editorId})})}setupSetEditorContentHandler(){let{editor:e}=this,n=Livewire.on(`set-editor-content`,({editorId:n,content:r})=>{n===t.canonical.editorId&&(c(this.getEditorRootsValues(),r)||e.setData(r))});typeof n==`function`&&e.once(`destroy`,n)}setupTypingContentPush(){let{editor:n}=this,{model:r,ui:a}=n,{$wire:o}=t,s=!1,l=()=>{if(s)return;let e=this.getEditorRootsValues();c(e,t.canonical.content??{})||(o.set(`content`,e),o.dispatch(`editor-content-changed`,{editorId:t.canonical.editorId,content:e}))},u=i(e,l);r.document.on(`change:data`,i(10,()=>{a.focusTracker.isFocused?u():l()})),n.once(`ready`,l),n.once(`destroy`,()=>{s=!0})}setupFocusableEventPush(){let{ui:e}=this.editor,{$wire:n}=t;e.focusTracker.on(`change:isFocused`,()=>{let r=this.getEditorRootsValues();n.set(`focused`,e.focusTracker.isFocused),c(r,t.canonical.content??{})||n.set(`content`,r)})}getEditorRootsValues(){return h(this.editor)}}}async function H(e){let{Plugin:t}=await import(`ckeditor5`);return class extends t{input=null;form=null;static get pluginName(){return`SyncEditorWithInput`}afterInit(){let{editor:t}=this,n=t.sourceElement.id.replace(/_editor$/,``);this.input=document.getElementById(`${n}_input`),this.input&&(t.model.document.on(`change:data`,i(e,()=>this.sync())),t.once(`ready`,this.sync),this.form=this.input.closest(`form`),this.form?.addEventListener(`submit`,this.sync))}sync=()=>{if(this.input){let e=this.editor.getData();this.input.value=e,this.input.dispatchEvent(new Event(`input`,{bubbles:!0}))}};destroy(){this.form&&this.form.removeEventListener(`submit`,this.sync),this.input=null,this.form=null}}}var U=class extends e{rootAttributesUpdater=null;async mounted(){let{editorId:e}=this.canonical;L.the.resetErrors(e);try{let t=await this.createEditor(),n=m(t),r=P(t);if(this.isBeingDestroyed())return;let i=L.the.mountEffect(e,t=>{t.once(`destroy`,()=>{L.the.unregister(e,!1)},{priority:`highest`})});this.onBeforeDestroy(async()=>{L.the.unregister(e),i(),n?n.state!==`unavailable`&&await n.context.remove(n.editorContextId):r?await r.destroy():await t.destroy()}),L.the.register(e,t)}catch(t){console.error(`Error initializing CKEditor5 instance with ID "${e}":`,t),L.the.error(e,t)}}async destroyed(){this.element.style.display=`none`}async afterCommitSynced(){let e=await L.the.waitFor(this.canonical.editorId);e&&(e.fire(`afterCommitSynced`),this.applyRootAttributes(e))}applyRootAttributes(e){let{rootAttributes:t}=this.canonical;this.rootAttributesUpdater??=z(e,`main`),this.rootAttributesUpdater(t)}async createEditor(){let{preset:e,editorId:t,contextId:n,editableHeight:r,saveDebounceMs:i,language:a,watchdog:s,content:c}=this.canonical,{customTranslations:l,editorType:u,licenseKey:f,watchdogConfig:m,config:{plugins:h,...g}}=e,y=await v(u),S=await(n?F.the.waitFor(n):null),C=async()=>{let{loadedPlugins:e,hasPremium:n}=await b(h);e.push(await V({saveDebounceMs:i,component:this})),_(u)&&e.push(await H(i));let s=[...await x(a,n),w(l||{})].filter(e=>!o(e)),d={...c,...D(t)};_(u)&&(d=d.main||``);let m=await(async()=>{let n=T(t);if(!(n instanceof HTMLElement)&&!(`main`in n)){let e=u===`decoupled`?[`main`]:Object.keys(d);W(n,e)||(n=await G(t,e),d={...c,...D(t)})}_(u)&&`main`in n&&(n=n.main);let r=O(g);r=k([...s].reverse(),a.ui,r);let i={...r,initialData:d,licenseKey:f,plugins:e,language:a,...s.length&&{translations:s}};return!S||!(n instanceof HTMLElement)?y.create(n,i):(await p({context:S,element:n,creator:y,config:i})).editor})();return _(u)&&r&&j(m,r),this.applyRootAttributes(m),m};if(s&&!S){let e=await N(C,m);return e.on(`error`,(e,{causesRestart:n})=>{if(n){let e=L.the.getItem(t);e&&(d(e),L.the.unregister(t))}}),e.on(`restart`,()=>{L.the.register(t,e.editor)}),await e.create({}),e.editor}return C()}};function W(e,t){return t.every(t=>e[t])}async function G(e,t){return u(()=>{let n=T(e);if(!W(n,t))throw Error(`It looks like not all required root elements are present yet.
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=class{state=`mounting`;_beforeDestroyCallbacks=[];constructor(e){this.livewireComponent=e}onBeforeDestroy(e){this._beforeDestroyCallbacks.push(e)}get canonical(){return this.livewireComponent.canonical}get element(){return this.livewireComponent.el}get $wire(){return this.livewireComponent.$wire}isBeingDestroyed(){return[`destroyed`,`destroying`].includes(this.state)}_runBeforeDestroyCallbacks(){for(let e of this._beforeDestroyCallbacks.reverse())e();this._beforeDestroyCallbacks=[]}};function t(e,t){let n=new Map;window.Livewire?.hook(`component.init`,async({component:r,cleanup:i})=>{if(r.name!==e)return;let a=new t(r);n.set(r.id,a),i(async()=>{a.state=`destroying`,a._runBeforeDestroyCallbacks(),await a.destroyed(),a.state=`destroyed`,n.delete(r.id)}),await a.mounted(),a.state=`mounted`}),window.Livewire?.hook(`commit`,async({component:t,succeed:r})=>{t.name===e&&r(()=>{let e=n.get(t.id);e?.state===`mounted`&&e?.afterCommitSynced?.()})})}function n(e,t){if(!e||e.size!==t.size)return!1;for(let[n,r]of e)if(!t.has(n)||t.get(n)!==r)return!1;return!0}var r=class{items=new Map;initializationErrors=new Map;pendingCallbacks=new Map;watchers=new Set;batchDepth=0;lastNotifiedItems=null;lastNotifiedErrors=null;execute(e,t,n){let r=this.items.get(e),i=this.initializationErrors.get(e);return i?(n?.(i),Promise.reject(i)):r?Promise.resolve(t(r)):new Promise((r,i)=>{let a=this.getPendingCallbacks(e);a.success.push(async e=>{r(await t(e))}),n?a.error.push(n):a.error.push(i)})}mountEffect(e,t){let n,r,i=!1,a=this.watch(o=>{let s=o.get(e);if(s!==r&&(n?.(),n=void 0,r=s,s))try{let e=t(s);i?(e?.(),a()):n=e}catch(e){throw console.error(e),e}});return()=>{i=!0,r&&(a(),n?.(),n=void 0)}}register(e,t){this.batch(()=>{if(this.items.has(e))throw Error(`Item with ID "${e}" is already registered.`);this.resetErrors(e),this.items.set(e,t);let n=this.pendingCallbacks.get(e);n&&(n.success.forEach(e=>e(t)),this.pendingCallbacks.delete(e)),this.items.size===1&&e!==null&&this.register(null,t)})}error(e,t){this.batch(()=>{this.items.delete(e),this.initializationErrors.set(e,t);let n=this.pendingCallbacks.get(e);n&&(n.error.forEach(e=>e(t)),this.pendingCallbacks.delete(e)),this.initializationErrors.size===1&&!this.items.size&&this.error(null,t)})}resetErrors(e){let{initializationErrors:t}=this;t.has(null)&&t.get(null)===t.get(e)&&t.delete(null),t.delete(e)}unregister(e,t=!0){this.batch(()=>{e&&this.items.get(null)===this.items.get(e)&&this.unregister(null,!1),this.items.delete(e),t&&this.pendingCallbacks.delete(e),this.resetErrors(e)})}getItems(){return Array.from(this.items.values())}getItem(e){return this.items.get(e)}hasItem(e){return this.items.has(e)}waitFor(e){return new Promise((t,n)=>{this.execute(e,t,n)})}async destroyAll(){let e=Array.from(new Set(this.items.values())).map(e=>e.destroy());this.items.clear(),this.pendingCallbacks.clear(),await Promise.all(e),this.flushWatchers()}async reset(){await this.destroyAll(),this.watchers.clear()}batch(e){this.batchDepth++;try{return e()}finally{this.batchDepth--,this.batchDepth===0&&this.flushWatchers()}}watch(e){return this.watchers.add(e),e(new Map(this.items),new Map(this.initializationErrors)),this.unwatch.bind(this,e)}unwatch(e){this.watchers.delete(e)}flushWatchers(){n(this.lastNotifiedItems,this.items)&&n(this.lastNotifiedErrors,this.initializationErrors)||(this.lastNotifiedItems=new Map(this.items),this.lastNotifiedErrors=new Map(this.initializationErrors),this.watchers.forEach(e=>e(new Map(this.items),new Map(this.initializationErrors))))}getPendingCallbacks(e){let t=this.pendingCallbacks.get(e);return t||(t={success:[],error:[]},this.pendingCallbacks.set(e,t)),t}};function i(e,t){let n=null;return(...r)=>{n&&clearTimeout(n),n=setTimeout(()=>{t(...r)},e)}}function a(e,t){let n=Object.entries(e).filter(([e,n])=>t(n,e));return Object.fromEntries(n)}function o(e){return Object.keys(e).length===0&&e.constructor===Object}function s(e,t){let n=Object.entries(e).map(([e,n])=>[e,t(n,e)]);return Object.fromEntries(n)}function c(e,t){if(e===t)return!0;let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r of n)if(e[r]!==t[r]||!Object.prototype.hasOwnProperty.call(t,r))return!1;return!0}function l(){return Math.random().toString(36).substring(2)}function u(e,{timeOutAfter:t=500,retryAfter:n=100}={}){return new Promise((r,i)=>{let a=Date.now(),o=null,s=setTimeout(()=>{i(o??Error(`Timeout`))},t),c=async()=>{try{let t=await e();clearTimeout(s),r(t)}catch(e){o=e,Date.now()-a>t?i(e):setTimeout(c,n)}};c()})}function d(e,t){let n=f(e),r=new Set([...Object.keys(n),...Object.keys(t.roots??{})]),i=Array.from(r).reduce((e,r)=>({...e,[r]:{...t.roots?.[r],...r===`main`?t.root:{},...r in n?{initialData:n[r]}:{}}}),Object.create(t.roots||{})),a={...t,roots:i};return delete a.root,a}function f(e){return typeof e==`string`?{main:e}:{...e}}function p(e,t,n){let r=m(t);if(!e.editorName||e.editorName===`ClassicEditor`)return{...n,attachTo:r.main};let i=new Set([...Object.keys(r),...Object.keys(n.roots??{})]),a=Array.from(i).reduce((e,t)=>({...e,[t]:{...n.roots?.[t],...t===`main`?n.root:{},...t in r?{element:r[t]}:{}}}),Object.create(n.roots||{})),o={...n,roots:a};return delete o.root,o}function m(e){return e instanceof HTMLElement?{main:e}:{...e}}function h(e){let t=[e.ui?.element,e.ui?.view?.toolbar?.element,e.ui?.view?.menuBarView?.element].filter(Boolean);for(let e of t)i(e);let n=e.ui?.view?.body?._bodyCollectionContainer;n?.isConnected&&i(n);let r=e.editing?.view;if(r)for(let e of r.domRoots.values())e instanceof HTMLElement&&(e.removeAttribute(`contenteditable`),e.removeAttribute(`role`),e.removeAttribute(`aria-label`),e.removeAttribute(`aria-multiline`),e.removeAttribute(`spellcheck`),e.classList.remove(`ck`,`ck-content`,`ck-editor__editable`,`ck-rounded-corners`,`ck-editor__editable_inline`,`ck-blurred`,`ck-focused`),i(e));function i(e){e.hasAttribute(`data-cke-controlled`)?e.innerHTML=``:e.remove()}}var g=Symbol.for(`context-editor-watchdog`);async function _({context:e,creator:t,config:n}){let r=l();await e.add({creator:t.create.bind(t),id:r,type:`editor`,config:n});let i=e.getItem(r),a={state:`available`,editorContextId:r,context:e};i[g]=a;let o=e.destroy.bind(e);return e.destroy=async()=>(a.state=`unavailable`,o()),{...a,editor:i}}function v(e){return g in e?e[g]:null}function y(e){return e.model.document.getRootNames().reduce((t,n)=>(t[n]=e.getData({rootName:n}),t),Object.create({}))}function b(e){return`addEditable`in e.ui}function x(e){return[`inline`,`classic`,`balloon`,`decoupled`].includes(e)}async function S(e){let t=await import(`ckeditor5`),n={inline:t.InlineEditor,balloon:t.BalloonEditor,classic:t.ClassicEditor,decoupled:t.DecoupledEditor,multiroot:t.MultiRootEditor}[e];if(!n)throw Error(`Unsupported editor type: ${e}`);return n}var C=class e{static the=new e;plugins=new Map;constructor(){}register(e,t){if(this.plugins.has(e))throw Error(`Plugin with name "${e}" is already registered.`);return this.plugins.set(e,t),this.unregister.bind(this,e)}unregister(e){if(!this.plugins.has(e))throw Error(`Plugin with name "${e}" is not registered.`);this.plugins.delete(e)}unregisterAll(){this.plugins.clear()}async get(e){return this.plugins.get(e)?.()}has(e){return this.plugins.has(e)}};async function w(e){let t=await import(`ckeditor5`),n=null,r=e.map(async e=>{let r=await C.the.get(e);if(r)return r;let{[e]:i}=t;if(i)return i;if(!n)try{n=await import(`ckeditor5-premium-features`)}catch(e){console.error(`Failed to load premium package: ${e}`)}let{[e]:a}=n||{};if(a)return a;throw Error(`Plugin "${e}" not found in base or premium packages.`)});return{loadedPlugins:await Promise.all(r),hasPremium:!!n}}async function T(e,t){let n=[e.ui,e.content],r=[E(`ckeditor5`,n)];return t&&r.push(E(`ckeditor5-premium-features`,n)),await Promise.all(r).then(e=>e.flat())}async function E(e,t){return await Promise.all(t.filter(e=>e!==`en`).map(async t=>{let n=await D(e,t);return n?.default??n}).filter(Boolean))}async function D(e,t){try{if(e===`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(n){return console.error(`Failed to load translation for ${e}/${t}:`,n),null}}function O(e){return s(e,e=>({dictionary:e}))}function k(e){return s(A(e),({element:e})=>e)}function A(e){let t=window.Livewire.all().filter(({name:t,canonical:n})=>t===`ckeditor5-editable`&&n.editorId===e).reduce((e,{canonical:t,el:n})=>({...e,[t.rootName]:{element:n.querySelector(`[data-cke-editable-content]`),content:t.content}}),Object.create({})),n=window.Livewire.all().find(({name:t,canonical:n})=>t===`ckeditor5`&&n.editorId===e)?.canonical.content,r=document.querySelector(`#${e}_editor `),i=t.main;return i&&n?.main?{...t,main:{...i,content:i.content||n.main}}:r?{...t,main:{element:r,content:n?.main||null}}:t}function j(e){return a(s(A(e),({content:e})=>e),e=>typeof e==`string`)}function M(e){if(!e||typeof e!=`object`)return e;if(Array.isArray(e))return e.map(e=>M(e));let t=e;if(t.$element&&typeof t.$element==`string`){let e=document.querySelector(t.$element);return e||console.warn(`Element not found for selector: ${t.$element}`),e||null}let n=Object.create(null);for(let[t,r]of Object.entries(e))n[t]=M(r);return n}function N(e,t,n){if(!n||typeof n!=`object`)return n;if(Array.isArray(n))return n.map(n=>N(e,t,n));let r=n;if(r.$translation&&typeof r.$translation==`string`){let n=r.$translation,i=P(e,n,t);return i===void 0&&console.warn(`Translation not found for key: ${n}`),i===void 0?null:i}let i=Object.create(null);for(let[r,a]of Object.entries(n))i[r]=N(e,t,a);return i}function P(e,t,n){for(let r of e){let e=r[n];if(e?.dictionary&&t in e.dictionary)return e.dictionary[t]}}function F(e,t){let{editing:n}=e;n.view.change(e=>{e.setStyle(`height`,`${t}px`,n.view.document.getRoot())})}var I=Symbol.for(`livewire-editor-watchdog`);async function L(e,t){let{EditorWatchdog:n}=await import(`ckeditor5`),r=new n(null,t??{crashNumberLimit:10,minimumNonErrorTimePeriod:5e3});return r.setCreator(async()=>{let t=await e();return t[I]=r,t}),r}function R(e){return I in e?e[I]:null}var z=class e extends r{static the=new e},B=class extends e{contextPromise=null;async mounted(){let{contextId:e,language:t,context:n}=this.canonical,{customTranslations:r,watchdogConfig:i,config:{plugins:a,...s}}=n,{loadedPlugins:c,hasPremium:l}=await w(a??[]),u=[...await T(t,l),O(r||{})].filter(e=>!o(e));this.contextPromise=(async()=>{let{ContextWatchdog:e,Context:n}=await import(`ckeditor5`),r=new e(n,{crashNumberLimit:10,...i}),a=M(s);return a=N([...u].reverse(),t.ui,a),await r.create({...a,language:t,plugins:c,...u.length&&{translations:u}}),r.on(`itemError`,(...e)=>{console.error(`Context item error:`,...e)}),r})();let d=await this.contextPromise;this.isBeingDestroyed()||z.the.register(e,d)}async destroyed(){let{contextId:e}=this.canonical;this.element.style.display=`none`;try{await(await this.contextPromise)?.destroy()}finally{this.contextPromise=null,z.the.hasItem(e)&&z.the.unregister(e)}}},V=class e extends r{static the=new e};function H(e){let t=e;for(;t;){for(let e of t.attributes)if(e.name.startsWith(`wire:model`))return!0;t=t.parentElement}return!1}function U(e,t){let n=new Set;return r=>{e.model.enqueueChange({isUndoable:!1},i=>{let a=e.model.document.getRoot(t);if(a){for(let e of n)r&&e in r||(i.removeAttribute(e,a),n.delete(e));for(let[e,t]of Object.entries(r??{}))i.setAttribute(e,t,a),n.add(e)}})}}var W=class extends e{rootAttributesUpdater=null;pendingContent=null;mounted(){let{editorId:e,rootName:t,content:n}=this.canonical,r=V.the.mountEffect(e,e=>{if(this.isBeingDestroyed())return;let r=e.model.document.getRoot(t);if(r?.isAttached()&&n!==null){let r=e.getData({rootName:t});r&&r!==n&&e.setData({[t]:n})}if(!r&&b(e)){let{ui:r,editing:i}=e;e.addRoot(t,{isUndoable:!1,...n!==null&&{initialData:n}});let a=this.element.querySelector(`[data-cke-editable-content]`),o=r.view.createEditable(t,a);r.addEditable(o),i.view.forceRender()}let i=this.syncTypingContentPush(e),a=this.setupPendingReceivedContentHandlers(e);return this.applyRootAttributes(e),()=>{if(i(),a(),this.rootAttributesUpdater?.(null),e.state!==`destroyed`){let n=e.model.document.getRoot(t);if(n&&b(e)){try{e.ui.view.editables[t]&&e.detachEditable(n)}catch(e){console.error(`Unable unmount editable from root:`,e)}n.isAttached()&&e.detachRoot(t,!1)}}}});this.onBeforeDestroy(r)}async afterCommitSynced(){let{editorId:e}=this.canonical,t=await V.the.waitFor(e);this.applyCanonicalContentToEditor(t),this.applyRootAttributes(t)}destroyed(){this.element.style.display=`none`}syncTypingContentPush(e){let{rootName:t,saveDebounceMs:n}=this.canonical,r=this.element.querySelector(`input`),a=!1,o=()=>{if(a||!e.model.document.getRoot(t)?.isAttached())return;let n=e.getData({rootName:t});r&&(r.value=n),this.$wire.set(`content`,n)},s=i(n,o),c=()=>{e.ui.focusTracker.isFocused?s():o()};return e.model.document.on(`change:data`,c),o(),()=>{a=!0,e.model.document.off(`change:data`,c)}}setupPendingReceivedContentHandlers(e){let{ui:t,model:n}=e,{focusTracker:r}=t,{rootName:i}=this.canonical,a=()=>{this.pendingContent=null},o=()=>{!r.isFocused&&this.pendingContent!==null&&(e.setData({[i]:this.pendingContent}),this.pendingContent=null)};return n.document.on(`change:data`,a),r.on(`change:isFocused`,o),()=>{n.document.off(`change:data`,a),r.off(`change:isFocused`,o)}}applyCanonicalContentToEditor(e){if(!H(this.element))return;let{content:t,rootName:n}=this.canonical,{ui:r}=e;if(e.getData({rootName:n})!==(t??``)){if(r.focusTracker.isFocused){this.pendingContent=t??``;return}e.setData({[n]:t??``})}}applyRootAttributes(e){let{rootName:t,rootAttributes:n}=this.canonical;this.rootAttributesUpdater??=U(e,t),this.rootAttributesUpdater(n)}};async function G({saveDebounceMs:e,component:t}){let{Plugin:n}=await import(`ckeditor5`);return class extends n{static get pluginName(){return`LivewireSync`}init(){this.setupTypingContentPush(),this.setupFocusableEventPush(),this.setupAfterCommitHandler(),this.setupSetEditorContentHandler(),this.setupReadyDispatch()}setupAfterCommitHandler(){let{editor:e}=this,{model:n,ui:{focusTracker:r}}=e,i=null;e.on(`afterCommitSynced`,()=>{if(!H(t.element))return;let{content:n}=t.canonical,a=this.getEditorRootsValues();if(r.isFocused){c(n,a)||(i=n);return}c(n,a)||e.setData(n)}),n.document.on(`change:data`,()=>{i=null}),r.on(`change:isFocused`,()=>{!r.isFocused&&i!==null&&(e.setData(i),i=null)})}setupReadyDispatch(){let{$wire:e}=t;this.editor.once(`ready`,()=>{e.dispatch(`editor-ready`,{editorId:t.canonical.editorId})})}setupSetEditorContentHandler(){let{editor:e}=this,n=Livewire.on(`set-editor-content`,({editorId:n,content:r})=>{n===t.canonical.editorId&&(c(this.getEditorRootsValues(),r)||e.setData(r))});typeof n==`function`&&e.once(`destroy`,n)}setupTypingContentPush(){let{editor:n}=this,{model:r,ui:a}=n,{$wire:o}=t,s=!1,l=()=>{if(s)return;let e=this.getEditorRootsValues();c(e,t.canonical.content??{})||(o.set(`content`,e),o.dispatch(`editor-content-changed`,{editorId:t.canonical.editorId,content:e}))},u=i(e,l);r.document.on(`change:data`,i(10,()=>{a.focusTracker.isFocused?u():l()})),n.once(`ready`,l),n.once(`destroy`,()=>{s=!0})}setupFocusableEventPush(){let{ui:e}=this.editor,{$wire:n}=t;e.focusTracker.on(`change:isFocused`,()=>{let r=this.getEditorRootsValues();n.set(`focused`,e.focusTracker.isFocused),c(r,t.canonical.content??{})||n.set(`content`,r)})}getEditorRootsValues(){return y(this.editor)}}}async function K(e){let{Plugin:t}=await import(`ckeditor5`);return class extends t{input=null;form=null;static get pluginName(){return`SyncEditorWithInput`}afterInit(){let{editor:t}=this,n=t.sourceElement.id.replace(/_editor$/,``);this.input=document.getElementById(`${n}_input`),this.input&&(t.model.document.on(`change:data`,i(e,()=>this.sync())),t.once(`ready`,this.sync),this.form=this.input.closest(`form`),this.form?.addEventListener(`submit`,this.sync))}sync=()=>{if(this.input){let e=this.editor.getData();this.input.value=e,this.input.dispatchEvent(new Event(`input`,{bubbles:!0}))}};destroy(){this.form&&this.form.removeEventListener(`submit`,this.sync),this.input=null,this.form=null}}}var q=class extends e{rootAttributesUpdater=null;async mounted(){let{editorId:e}=this.canonical;V.the.resetErrors(e);try{let t=await this.createEditor(),n=v(t),r=R(t);if(this.isBeingDestroyed())return;let i=V.the.mountEffect(e,t=>{t.once(`destroy`,()=>{V.the.unregister(e,!1)},{priority:`highest`})});this.onBeforeDestroy(async()=>{V.the.unregister(e),i(),n?n.state!==`unavailable`&&await n.context.remove(n.editorContextId):r?await r.destroy():await t.destroy()}),V.the.register(e,t)}catch(t){console.error(`Error initializing CKEditor5 instance with ID "${e}":`,t),V.the.error(e,t)}}async destroyed(){this.element.style.display=`none`}async afterCommitSynced(){let e=await V.the.waitFor(this.canonical.editorId);e&&(e.fire(`afterCommitSynced`),this.applyRootAttributes(e))}applyRootAttributes(e){let{rootAttributes:t}=this.canonical;this.rootAttributesUpdater??=U(e,`main`),this.rootAttributesUpdater(t)}async createEditor(){let{preset:e,editorId:t,contextId:n,editableHeight:r,saveDebounceMs:i,language:a,watchdog:s,content:c}=this.canonical,{customTranslations:l,editorType:u,licenseKey:f,watchdogConfig:m,config:{plugins:g,...v}}=e,y=await S(u),b=await(n?z.the.waitFor(n):null),C=async()=>{let{loadedPlugins:e,hasPremium:n}=await w(g);e.push(await G({saveDebounceMs:i,component:this})),x(u)&&e.push(await K(i));let s=[...await T(a,n),O(l||{})].filter(e=>!o(e)),m={...c,...j(t)};x(u)&&(m=m.main||``);let h=await(async()=>{let n=k(t);if(!(n instanceof HTMLElement)&&!(`main`in n)){let e=u===`decoupled`?[`main`]:Object.keys(m);J(n,e)||(n=await Y(t,e),m={...c,...j(t)})}x(u)&&`main`in n&&(n=n.main);let r={...v};r=M(r),r=N([...s].reverse(),a.ui,r),r=p(y,n,r),r=d(m,r);let i={...r,licenseKey:f,plugins:e,language:a,...s.length&&{translations:s}};return!b||!(n instanceof HTMLElement)?y.create(i):(await _({context:b,creator:y,config:i})).editor})();return x(u)&&r&&F(h,r),this.applyRootAttributes(h),h};if(s&&!b){let e=await L(C,m);return e.on(`error`,(e,{causesRestart:n})=>{if(n){let e=V.the.getItem(t);e&&(h(e),V.the.unregister(t))}}),e.on(`restart`,()=>{V.the.register(t,e.editor)}),await e.create({}),e.editor}return C()}};function J(e,t){return t.every(t=>e[t])}async function Y(e,t){return u(()=>{let n=k(e);if(!J(n,t))throw 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(e=>!n[e]).join(`, `)}.`);return n},{timeOutAfter:2e3,retryAfter:100})}var
|
|
4
|
+
Missing roots: ${t.filter(e=>!n[e]).join(`, `)}.`);return n},{timeOutAfter:2e3,retryAfter:100})}var X=class extends e{mounted(){let{editorId:e,name:t}=this.canonical,n=V.the.mountEffect(e,e=>{if(this.isBeingDestroyed())return;let{ui:n}=e,r=Z(t),i=n.view[r];if(!i){console.error(`Unknown UI part name: "${t}". Supported names are "toolbar" and "menubar".`);return}return this.element.appendChild(i.element),()=>{this.element.innerHTML=``}});this.onBeforeDestroy(n)}destroyed(){this.element.style.display=`none`}};function Z(e){switch(e){case`toolbar`:return`toolbar`;case`menubar`:return`menuBarView`;default:return null}}var Q={ckeditor5:q,"ckeditor5-context":B,"ckeditor5-ui-part":X,"ckeditor5-editable":W};function $(){for(let[e,n]of Object.entries(Q))t(e,n)}$(),exports.ClassHook=e,exports.ContextsRegistry=z,exports.CustomEditorPluginsRegistry=C,exports.EditableComponentHook=W,exports.EditorComponentHook=q,exports.EditorsRegistry=V,exports.UIPartComponentHook=X,exports.registerLivewireComponentHook=t;
|
|
5
5
|
//# sourceMappingURL=index.cjs.map
|