ckeditor5-symfony 1.4.1 → 1.5.1
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/elements/context/context.d.ts.map +1 -1
- package/dist/elements/editor/editor.d.ts.map +1 -1
- package/dist/elements/editor/utils/index.d.ts +1 -0
- package/dist/elements/editor/utils/index.d.ts.map +1 -1
- package/dist/elements/editor/utils/load-editor-translations.d.ts +2 -1
- package/dist/elements/editor/utils/load-editor-translations.d.ts.map +1 -1
- package/dist/elements/editor/utils/resolve-editor-config-translations.d.ts +25 -0
- package/dist/elements/editor/utils/resolve-editor-config-translations.d.ts.map +1 -0
- package/dist/index.cjs +2 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +184 -151
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/elements/context/context.test.ts +31 -0
- package/src/elements/context/context.ts +13 -1
- package/src/elements/editor/editor.test.ts +28 -0
- package/src/elements/editor/editor.ts +12 -2
- package/src/elements/editor/utils/index.ts +1 -0
- package/src/elements/editor/utils/load-editor-translations.ts +3 -1
- package/src/elements/editor/utils/resolve-editor-config-translations.test.ts +131 -0
- package/src/elements/editor/utils/resolve-editor-config-translations.ts +77 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/elements/context/context.ts"],"names":[],"mappings":"
|
|
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;IACG,iBAAiB;IA4DvB;;OAEG;IACG,oBAAoB;CAoB3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../../../src/elements/editor/editor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../../../src/elements/editor/editor.ts"],"names":[],"mappings":"AA6BA;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,WAAW;IACrD;;OAEG;IACH,OAAO,CAAC,aAAa,CAAgC;IAErD;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAiCxC;;;OAGG;IACG,oBAAoB;IAmC1B;;OAEG;YACW,YAAY;CA6I3B"}
|
|
@@ -8,6 +8,7 @@ export * from './normalize-custom-translations';
|
|
|
8
8
|
export * from './query-all-editor-ids';
|
|
9
9
|
export * from './query-editor-editables';
|
|
10
10
|
export * from './resolve-editor-config-elements-references';
|
|
11
|
+
export * from './resolve-editor-config-translations';
|
|
11
12
|
export * from './set-editor-editable-height';
|
|
12
13
|
export * from './wrap-with-watchdog';
|
|
13
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/elements/editor/utils/index.ts"],"names":[],"mappings":"AAAA,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,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,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,3 +1,4 @@
|
|
|
1
|
+
import { Translations } from 'ckeditor5';
|
|
1
2
|
/**
|
|
2
3
|
* Loads all required translations for the editor based on the language configuration.
|
|
3
4
|
*
|
|
@@ -10,5 +11,5 @@
|
|
|
10
11
|
export declare function loadAllEditorTranslations(language: {
|
|
11
12
|
ui: string;
|
|
12
13
|
content: string;
|
|
13
|
-
}, hasPremium: boolean): Promise<
|
|
14
|
+
}, hasPremium: boolean): Promise<Translations[]>;
|
|
14
15
|
//# sourceMappingURL=load-editor-translations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-editor-translations.d.ts","sourceRoot":"","sources":["../../../../../src/elements/editor/utils/load-editor-translations.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;CAAE,EAC1C,UAAU,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"load-editor-translations.d.ts","sourceRoot":"","sources":["../../../../../src/elements/editor/utils/load-editor-translations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9C;;;;;;;;GAQG;AACH,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;CAAE,EAC1C,UAAU,EAAE,OAAO,GAClB,OAAO,CAAC,YAAY,EAAE,CAAC,CAYzB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Translations } from 'ckeditor5';
|
|
2
|
+
/**
|
|
3
|
+
* Resolves translation references in a configuration object.
|
|
4
|
+
*
|
|
5
|
+
* The configuration may contain objects with the form `{ $translation: "some.key" }`.
|
|
6
|
+
* These are replaced with the actual string from the provided translations map.
|
|
7
|
+
*
|
|
8
|
+
* The function will walk the provided object recursively, handling arrays and
|
|
9
|
+
* nested objects. Primitive values are returned as-is. If a translation key is
|
|
10
|
+
* not present in the map, a warning is logged and `null` is returned for that
|
|
11
|
+
* value.
|
|
12
|
+
*
|
|
13
|
+
* @param translations - An array of CKEditor `Translations` objects. Each translation
|
|
14
|
+
* pack will be searched in order for the requested key, and the
|
|
15
|
+
* first matching value will be returned. This mirrors the format
|
|
16
|
+
* returned by `loadAllEditorTranslations` and simplifies the
|
|
17
|
+
* caller's API.
|
|
18
|
+
* @param language - Language identifier to look up in the packs. Only this locale
|
|
19
|
+
* will be consulted, ensuring that keys from other languages are
|
|
20
|
+
* ignored even if they appear earlier in the array.
|
|
21
|
+
* @param obj - Configuration object to process
|
|
22
|
+
* @returns Processed configuration object with resolved translations.
|
|
23
|
+
*/
|
|
24
|
+
export declare function resolveEditorConfigTranslations<T>(translations: Translations[], language: string, obj: T): T;
|
|
25
|
+
//# sourceMappingURL=resolve-editor-config-translations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-editor-config-translations.d.ts","sourceRoot":"","sources":["../../../../../src/elements/editor/utils/resolve-editor-config-translations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,+BAA+B,CAAC,CAAC,EAC/C,YAAY,EAAE,YAAY,EAAE,EAC5B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,CAAC,GACL,CAAC,CA6BH"}
|
package/dist/index.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
"use strict";var X=Object.create;var z=Object.defineProperty;var Q=Object.getOwnPropertyDescriptor;var Z=Object.getOwnPropertyNames;var tt=Object.getPrototypeOf,et=Object.prototype.hasOwnProperty;var rt=(i,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Z(t))!et.call(i,n)&&n!==r&&z(i,n,{get:()=>t[n],enumerable:!(a=Q(t,n))||a.enumerable});return i};var e=(i,t,r)=>(r=i!=null?X(tt(i)):{},rt(t||!i||!i.__esModule?z(r,"default",{value:i,enumerable:!0}):r,i));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class W{items=new Map;initializationErrors=new Map;pendingCallbacks=new Map;watchers=new Set;execute(t,r,a){const n=this.items.get(t),s=this.initializationErrors.get(t);return s?(a?.(s),Promise.reject(s)):n?Promise.resolve(r(n)):new Promise((o,c)=>{const u=this.getPendingCallbacks(t);u.success.push(async l=>{o(await r(l))}),a?u.error.push(a):u.error.push(c)})}register(t,r){if(this.items.has(t))throw new Error(`Item with ID "${t}" is already registered.`);this.resetErrors(t),this.items.set(t,r);const a=this.pendingCallbacks.get(t);a&&(a.success.forEach(n=>n(r)),this.pendingCallbacks.delete(t)),this.registerAsDefault(t,r),this.notifyWatchers()}error(t,r){this.items.delete(t),this.initializationErrors.set(t,r);const a=this.pendingCallbacks.get(t);a&&(a.error.forEach(n=>n(r)),this.pendingCallbacks.delete(t)),this.initializationErrors.size===1&&!this.items.size&&this.error(null,r),this.notifyWatchers()}resetErrors(t){const{initializationErrors:r}=this;r.has(null)&&r.get(null)===r.get(t)&&r.delete(null),r.delete(t)}unregister(t){if(!this.items.has(t))throw new Error(`Item with ID "${t}" is not registered.`);t&&this.items.get(null)===this.items.get(t)&&this.unregister(null),this.items.delete(t),this.pendingCallbacks.delete(t),this.notifyWatchers()}getItems(){return Array.from(this.items.values())}hasItem(t){return this.items.has(t)}waitFor(t,r){return new Promise((a,n)=>{let s=!1,o=null;this.execute(t,c=>{s||(o!==null&&clearTimeout(o),a(c))},c=>{s||(o!==null&&clearTimeout(o),n(c))}),r&&(o=setTimeout(()=>{s=!0,n(new Error(`Timeout waiting for item with ID "${t}" to be registered.`))},r))})}async destroyAll(){const t=Array.from(new Set(this.items.values())).map(r=>r.destroy());this.items.clear(),this.pendingCallbacks.clear(),await Promise.all(t),this.notifyWatchers()}watch(t){return this.watchers.add(t),t(new Map(this.items),new Map(this.initializationErrors)),this.unwatch.bind(this,t)}unwatch(t){this.watchers.delete(t)}reset(){this.items.clear(),this.initializationErrors.clear(),this.pendingCallbacks.clear(),this.notifyWatchers()}notifyWatchers(){this.watchers.forEach(t=>t(new Map(this.items),new Map(this.initializationErrors)))}getPendingCallbacks(t){let r=this.pendingCallbacks.get(t);return r||(r={success:[],error:[]},this.pendingCallbacks.set(t,r)),r}registerAsDefault(t,r){this.items.size===1&&t!==null&&this.register(null,r)}}function O(i,t){let r=null;return(...a)=>{r&&clearTimeout(r),r=setTimeout(()=>{t(...a)},i)}}function it(i,t){const r=Object.entries(i).filter(([a,n])=>t(n,a));return Object.fromEntries(r)}function j(i){return Object.keys(i).length===0&&i.constructor===Object}function D(i,t){const r=Object.entries(i).map(([a,n])=>[a,t(n,a)]);return Object.fromEntries(r)}function at(){return Math.random().toString(36).substring(2)}function nt(i,{timeOutAfter:t=500,retryAfter:r=100}={}){return new Promise((a,n)=>{const s=Date.now();let o=null;const c=setTimeout(()=>{n(o??new Error("Timeout"))},t),u=async()=>{try{const l=await i();clearTimeout(c),a(l)}catch(l){o=l,Date.now()-s>t?n(l):setTimeout(u,r)}};u()})}function A(){return new Promise(i=>{switch(document.readyState){case"loading":document.addEventListener("DOMContentLoaded",()=>i(),{once:!0});break;case"interactive":case"complete":setTimeout(i,0);break;default:console.warn("Unexpected document.readyState:",document.readyState),setTimeout(i,0)}})}const T=Symbol.for("context-editor-watchdog");async function st({element:i,context:t,creator:r,config:a}){const n=at();await t.add({creator:(u,l)=>r.create(u,l),id:n,sourceElementOrData:i,type:"editor",config:a});const s=t.getItem(n),o={state:"available",editorContextId:n,context:t};s[T]=o;const c=t.destroy.bind(t);return t.destroy=async()=>(o.state="unavailable",c()),{...o,editor:s}}function ot(i){return T in i?i[T]:null}function ct(i){return Array.from(i.model.document.getRoots()).reduce((t,r)=>(r.rootName==="$graveyard"||(t[r.rootName]=i.getData({rootName:r.rootName})),t),Object.create({}))}function v(i){return["inline","classic","balloon","decoupled"].includes(i)}class w extends Error{constructor(t){super(t),this.name="CKEditor5SymfonyError"}}async function ut(i){const t=await import("ckeditor5"),a={inline:t.InlineEditor,balloon:t.BalloonEditor,classic:t.ClassicEditor,decoupled:t.DecoupledEditor,multiroot:t.MultiRootEditor}[i];if(!a)throw new w(`Unsupported editor type: ${i}`);return a}class I{static the=new I;plugins=new Map;constructor(){}register(t,r){if(this.plugins.has(t))throw new w(`Plugin with name "${t}" is already registered.`);return this.plugins.set(t,r),this.unregister.bind(this,t)}unregister(t){if(!this.plugins.has(t))throw new w(`Plugin with name "${t}" is not registered.`);this.plugins.delete(t)}unregisterAll(){this.plugins.clear()}async get(t){return this.plugins.get(t)?.()}has(t){return this.plugins.has(t)}}async function q(i){const t=await import("ckeditor5");let r=null;const a=i.map(async n=>{const s=await I.the.get(n);if(s)return s;const{[n]:o}=t;if(o)return o;if(!r)try{r=await import("ckeditor5-premium-features")}catch(u){throw console.error(`Failed to load premium package: ${u}`),new w(`Plugin "${n}" not found in base package and failed to load premium package.`)}const{[n]:c}=r||{};if(c)return c;throw new w(`Plugin "${n}" not found in base or premium packages.`)});return{loadedPlugins:await Promise.all(a),hasPremium:!!r}}async function H(i,t){const r=[i.ui,i.content];return await Promise.all([N("ckeditor5",r),t&&N("ckeditor5-premium-features",r)].filter(n=>!!n)).then(n=>n.flat())}async function N(i,t){return await Promise.all(t.filter(r=>r!=="en").map(async r=>{const a=await lt(i,r);return a?.default??a}).filter(Boolean))}async function lt(i,t){try{if(i==="ckeditor5")switch(t){case"af":return await import("ckeditor5/translations/af.js");case"ar":return await import("ckeditor5/translations/ar.js");case"ast":return await import("ckeditor5/translations/ast.js");case"az":return await import("ckeditor5/translations/az.js");case"bg":return await import("ckeditor5/translations/bg.js");case"bn":return await import("ckeditor5/translations/bn.js");case"bs":return await import("ckeditor5/translations/bs.js");case"ca":return await import("ckeditor5/translations/ca.js");case"cs":return await import("ckeditor5/translations/cs.js");case"da":return await import("ckeditor5/translations/da.js");case"de":return await import("ckeditor5/translations/de.js");case"de-ch":return await import("ckeditor5/translations/de-ch.js");case"el":return await import("ckeditor5/translations/el.js");case"en":return await import("ckeditor5/translations/en.js");case"en-au":return await import("ckeditor5/translations/en-au.js");case"en-gb":return await import("ckeditor5/translations/en-gb.js");case"eo":return await import("ckeditor5/translations/eo.js");case"es":return await import("ckeditor5/translations/es.js");case"es-co":return await import("ckeditor5/translations/es-co.js");case"et":return await import("ckeditor5/translations/et.js");case"eu":return await import("ckeditor5/translations/eu.js");case"fa":return await import("ckeditor5/translations/fa.js");case"fi":return await import("ckeditor5/translations/fi.js");case"fr":return await import("ckeditor5/translations/fr.js");case"gl":return await import("ckeditor5/translations/gl.js");case"gu":return await import("ckeditor5/translations/gu.js");case"he":return await import("ckeditor5/translations/he.js");case"hi":return await import("ckeditor5/translations/hi.js");case"hr":return await import("ckeditor5/translations/hr.js");case"hu":return await import("ckeditor5/translations/hu.js");case"hy":return await import("ckeditor5/translations/hy.js");case"id":return await import("ckeditor5/translations/id.js");case"it":return await import("ckeditor5/translations/it.js");case"ja":return await import("ckeditor5/translations/ja.js");case"jv":return await import("ckeditor5/translations/jv.js");case"kk":return await import("ckeditor5/translations/kk.js");case"km":return await import("ckeditor5/translations/km.js");case"kn":return await import("ckeditor5/translations/kn.js");case"ko":return await import("ckeditor5/translations/ko.js");case"ku":return await import("ckeditor5/translations/ku.js");case"lt":return await import("ckeditor5/translations/lt.js");case"lv":return await import("ckeditor5/translations/lv.js");case"ms":return await import("ckeditor5/translations/ms.js");case"nb":return await import("ckeditor5/translations/nb.js");case"ne":return await import("ckeditor5/translations/ne.js");case"nl":return await import("ckeditor5/translations/nl.js");case"no":return await import("ckeditor5/translations/no.js");case"oc":return await import("ckeditor5/translations/oc.js");case"pl":return await import("ckeditor5/translations/pl.js");case"pt":return await import("ckeditor5/translations/pt.js");case"pt-br":return await import("ckeditor5/translations/pt-br.js");case"ro":return await import("ckeditor5/translations/ro.js");case"ru":return await import("ckeditor5/translations/ru.js");case"si":return await import("ckeditor5/translations/si.js");case"sk":return await import("ckeditor5/translations/sk.js");case"sl":return await import("ckeditor5/translations/sl.js");case"sq":return await import("ckeditor5/translations/sq.js");case"sr":return await import("ckeditor5/translations/sr.js");case"sr-latn":return await import("ckeditor5/translations/sr-latn.js");case"sv":return await import("ckeditor5/translations/sv.js");case"th":return await import("ckeditor5/translations/th.js");case"tk":return await import("ckeditor5/translations/tk.js");case"tr":return await import("ckeditor5/translations/tr.js");case"tt":return await import("ckeditor5/translations/tt.js");case"ug":return await import("ckeditor5/translations/ug.js");case"uk":return await import("ckeditor5/translations/uk.js");case"ur":return await import("ckeditor5/translations/ur.js");case"uz":return await import("ckeditor5/translations/uz.js");case"vi":return await import("ckeditor5/translations/vi.js");case"zh":return await import("ckeditor5/translations/zh.js");case"zh-cn":return await import("ckeditor5/translations/zh-cn.js");default:return console.warn(`Language ${t} not found in ckeditor5 translations`),null}else switch(t){case"af":return await import("ckeditor5-premium-features/translations/af.js");case"ar":return await import("ckeditor5-premium-features/translations/ar.js");case"ast":return await import("ckeditor5-premium-features/translations/ast.js");case"az":return await import("ckeditor5-premium-features/translations/az.js");case"bg":return await import("ckeditor5-premium-features/translations/bg.js");case"bn":return await import("ckeditor5-premium-features/translations/bn.js");case"bs":return await import("ckeditor5-premium-features/translations/bs.js");case"ca":return await import("ckeditor5-premium-features/translations/ca.js");case"cs":return await import("ckeditor5-premium-features/translations/cs.js");case"da":return await import("ckeditor5-premium-features/translations/da.js");case"de":return await import("ckeditor5-premium-features/translations/de.js");case"de-ch":return await import("ckeditor5-premium-features/translations/de-ch.js");case"el":return await import("ckeditor5-premium-features/translations/el.js");case"en":return await import("ckeditor5-premium-features/translations/en.js");case"en-au":return await import("ckeditor5-premium-features/translations/en-au.js");case"en-gb":return await import("ckeditor5-premium-features/translations/en-gb.js");case"eo":return await import("ckeditor5-premium-features/translations/eo.js");case"es":return await import("ckeditor5-premium-features/translations/es.js");case"es-co":return await import("ckeditor5-premium-features/translations/es-co.js");case"et":return await import("ckeditor5-premium-features/translations/et.js");case"eu":return await import("ckeditor5-premium-features/translations/eu.js");case"fa":return await import("ckeditor5-premium-features/translations/fa.js");case"fi":return await import("ckeditor5-premium-features/translations/fi.js");case"fr":return await import("ckeditor5-premium-features/translations/fr.js");case"gl":return await import("ckeditor5-premium-features/translations/gl.js");case"gu":return await import("ckeditor5-premium-features/translations/gu.js");case"he":return await import("ckeditor5-premium-features/translations/he.js");case"hi":return await import("ckeditor5-premium-features/translations/hi.js");case"hr":return await import("ckeditor5-premium-features/translations/hr.js");case"hu":return await import("ckeditor5-premium-features/translations/hu.js");case"hy":return await import("ckeditor5-premium-features/translations/hy.js");case"id":return await import("ckeditor5-premium-features/translations/id.js");case"it":return await import("ckeditor5-premium-features/translations/it.js");case"ja":return await import("ckeditor5-premium-features/translations/ja.js");case"jv":return await import("ckeditor5-premium-features/translations/jv.js");case"kk":return await import("ckeditor5-premium-features/translations/kk.js");case"km":return await import("ckeditor5-premium-features/translations/km.js");case"kn":return await import("ckeditor5-premium-features/translations/kn.js");case"ko":return await import("ckeditor5-premium-features/translations/ko.js");case"ku":return await import("ckeditor5-premium-features/translations/ku.js");case"lt":return await import("ckeditor5-premium-features/translations/lt.js");case"lv":return await import("ckeditor5-premium-features/translations/lv.js");case"ms":return await import("ckeditor5-premium-features/translations/ms.js");case"nb":return await import("ckeditor5-premium-features/translations/nb.js");case"ne":return await import("ckeditor5-premium-features/translations/ne.js");case"nl":return await import("ckeditor5-premium-features/translations/nl.js");case"no":return await import("ckeditor5-premium-features/translations/no.js");case"oc":return await import("ckeditor5-premium-features/translations/oc.js");case"pl":return await import("ckeditor5-premium-features/translations/pl.js");case"pt":return await import("ckeditor5-premium-features/translations/pt.js");case"pt-br":return await import("ckeditor5-premium-features/translations/pt-br.js");case"ro":return await import("ckeditor5-premium-features/translations/ro.js");case"ru":return await import("ckeditor5-premium-features/translations/ru.js");case"si":return await import("ckeditor5-premium-features/translations/si.js");case"sk":return await import("ckeditor5-premium-features/translations/sk.js");case"sl":return await import("ckeditor5-premium-features/translations/sl.js");case"sq":return await import("ckeditor5-premium-features/translations/sq.js");case"sr":return await import("ckeditor5-premium-features/translations/sr.js");case"sr-latn":return await import("ckeditor5-premium-features/translations/sr-latn.js");case"sv":return await import("ckeditor5-premium-features/translations/sv.js");case"th":return await import("ckeditor5-premium-features/translations/th.js");case"tk":return await import("ckeditor5-premium-features/translations/tk.js");case"tr":return await import("ckeditor5-premium-features/translations/tr.js");case"tt":return await import("ckeditor5-premium-features/translations/tt.js");case"ug":return await import("ckeditor5-premium-features/translations/ug.js");case"uk":return await import("ckeditor5-premium-features/translations/uk.js");case"ur":return await import("ckeditor5-premium-features/translations/ur.js");case"uz":return await import("ckeditor5-premium-features/translations/uz.js");case"vi":return await import("ckeditor5-premium-features/translations/vi.js");case"zh":return await import("ckeditor5-premium-features/translations/zh.js");case"zh-cn":return await import("ckeditor5-premium-features/translations/zh-cn.js");default:return console.warn(`Language ${t} not found in premium translations`),await import("ckeditor5-premium-features/translations/en.js")}}catch(r){return console.error(`Failed to load translation for ${i}/${t}:`,r),null}}function U(i){return D(i,t=>({dictionary:t}))}function V(){return Array.from(document.querySelectorAll("cke5-editor")).map(i=>i.getAttribute("data-cke-editor-id")).filter(i=>i!==null)}function B(i){const t=F(i);return D(t,({element:r})=>r)}function L(i){const t=F(i),r=D(t,({content:a})=>a);return it(r,a=>typeof a=="string")}function F(i){const t=Array.from(document.querySelectorAll(`cke5-editable[data-cke-editor-id="${i}"]`)).reduce((o,c)=>{const u=c.getAttribute("data-cke-root-name"),l=c.getAttribute("data-cke-content");return o[u]={element:c.querySelector("[data-cke-editable-content]"),content:l},o},Object.create({})),r=document.querySelector(`cke5-editor[data-cke-editor-id="${i}"]`);if(!r)return t;const a=t.main,n=JSON.parse(r.getAttribute("data-cke-content")),s=document.querySelector(`#${i}_editor `);return a&&n?.main?{...t,main:{...a,content:a.content||n.main}}:s?{...t,main:{element:s,content:n?.main||null}}:t}function x(i){if(!i||typeof i!="object")return i;if(Array.isArray(i))return i.map(a=>x(a));const t=i;if(t.$element&&typeof t.$element=="string"){const a=document.querySelector(t.$element);return a||console.warn(`Element not found for selector: ${t.$element}`),a||null}const r=Object.create(null);for(const[a,n]of Object.entries(i))r[a]=x(n);return r}function mt(i,t){const{editing:r}=i;r.view.change(a=>{a.setStyle("height",`${t}px`,r.view.document.getRoot())})}const S=Symbol.for("elixir-editor-watchdog");async function dt(i){const{EditorWatchdog:t}=await import("ckeditor5"),r=new t(i);return r.setCreator(async(...a)=>{const n=await i.create(...a);return n[S]=r,n}),{watchdog:r,Constructor:{create:async(...a)=>(await r.create(...a),r.editor)}}}function pt(i){return S in i?i[S]:null}class g extends W{static the=new g}class ht extends HTMLElement{contextPromise=null;async connectedCallback(){await A();const t=this.getAttribute("data-cke-context-id"),r=JSON.parse(this.getAttribute("data-cke-language")),a=JSON.parse(this.getAttribute("data-cke-context")),{customTranslations:n,watchdogConfig:s,config:{plugins:o,...c}}=a,{loadedPlugins:u,hasPremium:l}=await q(o??[]),y=[...await H(r,l),U(n||{})].filter(d=>!j(d));this.contextPromise=(async()=>{const{ContextWatchdog:d,Context:E}=await import("ckeditor5"),f=new d(E,{crashNumberLimit:10,...s});return await f.create({...c,language:r,plugins:u,...y.length&&{translations:y}}),f.on("itemError",(...k)=>{console.error("Context item error:",...k)}),f})();const b=await this.contextPromise;this.isConnected&&g.the.register(t,b)}async disconnectedCallback(){const t=this.getAttribute("data-cke-context-id");this.style.display="none";try{await(await this.contextPromise)?.destroy()}finally{this.contextPromise=null,t&&g.the.hasItem(t)&&g.the.unregister(t)}}}class p extends W{static the=new p}class J extends HTMLElement{editorPromise=null;async connectedCallback(){await A(),this.hasAttribute("data-cke-editor-id")||this.setAttribute("data-cke-editor-id",V()[0]);const t=this.getAttribute("data-cke-editor-id"),r=this.getAttribute("data-cke-root-name"),a=this.getAttribute("data-cke-content"),n=Number.parseInt(this.getAttribute("data-cke-save-debounce-ms"),10);if(!t||!r)throw new w("Editor ID or Root Name is missing.");this.style.display="block",this.editorPromise=p.the.execute(t,async s=>{if(!this.isConnected)return null;const o=this.querySelector("input"),{ui:c,editing:u,model:l}=s;if(l.document.getRoot(r)){if(a!==null){const d=s.getData({rootName:r});d&&d!==a&&s.setData({[r]:a})}return s}s.addRoot(r,{isUndoable:!1,...a!==null&&{data:a}});const h=this.querySelector("[data-cke-editable-content]"),y=c.view.createEditable(r,h);c.addEditable(y),u.view.forceRender();const b=()=>{const d=s.getData({rootName:r});o&&(o.value=d,o.dispatchEvent(new Event("input"))),this.dispatchEvent(new CustomEvent("change",{detail:{value:d}}))};return s.model.document.on("change:data",O(n,b)),b(),s})}async disconnectedCallback(){const t=this.getAttribute("data-cke-root-name");this.style.display="none";const r=await this.editorPromise;if(this.editorPromise=null,r&&r.state!=="destroyed"&&t){const a=r.model.document.getRoot(t);if(a&&"detachEditable"in r){try{r.detachEditable(a)}catch(n){console.error("Unable unmount editable from root:",n)}r.detachRoot(t,!1)}}}}async function wt({saveDebounceMs:i,editorId:t,targetElement:r}){const{Plugin:a}=await import("ckeditor5");return class extends a{static get pluginName(){return"DispatchEditorRootsChangeEvent"}afterInit(){const s=O(i,this.dispatch);this.editor.model.document.on("change:data",s),this.editor.once("ready",this.dispatch)}dispatch=()=>{r.dispatchEvent(new CustomEvent("ckeditor5:change:data",{detail:{editorId:t,editor:this.editor,roots:ct(this.editor)},bubbles:!0}))}}}async function ft(i){const{Plugin:t}=await import("ckeditor5");return class extends t{input=null;form=null;static get pluginName(){return"SyncEditorWithInput"}afterInit(){const{editor:a}=this,s=a.sourceElement.id.replace(/_editor$/,"");this.input=document.getElementById(`${s}_input`),this.input&&(a.model.document.on("change:data",O(i,()=>this.sync())),a.once("ready",this.sync),this.form=this.input.closest("form"),this.form?.addEventListener("submit",this.sync))}sync=()=>{if(this.input){const a=this.editor.getData();this.input.value=a,this.input.dispatchEvent(new Event("input",{bubbles:!0}))}};destroy(){this.form&&this.form.removeEventListener("submit",this.sync),this.input=null,this.form=null}}}class K extends HTMLElement{editorPromise=null;async connectedCallback(){await A();const t=this.getAttribute("data-cke-editor-id");p.the.resetErrors(t);try{this.style.display="block",this.editorPromise=this.createEditor();const r=await this.editorPromise;this.isConnected&&(p.the.register(t,r),r.once("destroy",()=>{p.the.hasItem(t)&&p.the.unregister(t)}))}catch(r){console.error(`Error initializing CKEditor5 instance with ID "${t}":`,r),this.editorPromise=null,p.the.error(t,r)}}async disconnectedCallback(){this.style.display="none";try{const t=await this.editorPromise;if(!t)return;const r=ot(t),a=pt(t);r?r.state!=="unavailable"&&await r.context.remove(r.editorContextId):a?await a.destroy():await t.destroy()}finally{this.editorPromise=null}}async createEditor(){const t=this.getAttribute("data-cke-editor-id"),r=JSON.parse(this.getAttribute("data-cke-preset")),a=this.getAttribute("data-cke-context-id"),n=this.getAttribute("data-cke-editable-height")?Number.parseInt(this.getAttribute("data-cke-editable-height"),10):null,s=Number.parseInt(this.getAttribute("data-cke-save-debounce-ms"),10),o=JSON.parse(this.getAttribute("data-cke-language")),c=this.hasAttribute("data-cke-watchdog"),u=JSON.parse(this.getAttribute("data-cke-content")),{customTranslations:l,editorType:h,licenseKey:y,config:{plugins:b,...d}}=r;let E=await ut(h);const f=await(a?g.the.waitFor(a):null);if(c&&!f){const m=await dt(E);({Constructor:E}=m),m.watchdog.on("restart",()=>{const P=m.watchdog.editor;this.editorPromise=Promise.resolve(P),p.the.register(t,P)})}const{loadedPlugins:k,hasPremium:Y}=await q(b);k.push(await wt({saveDebounceMs:s,editorId:t,targetElement:this})),v(h)&&k.push(await ft(s));const M=[...await H(o,Y),U(l||{})].filter(m=>!j(m));let C={...u,...L(t)};v(h)&&(C=C.main||"");const $=await(async()=>{let m=B(t);if(!m.main){const R=v(h)?["main"]:Object.keys(C);_(m,R)||(m=await gt(t,R),C={...u,...L(t)})}v(h)&&"main"in m&&(m=m.main);const P={...x(d),initialData:C,licenseKey:y,plugins:k,language:o,...M.length&&{translations:M}};return!f||!(m instanceof HTMLElement)?E.create(m,P):(await st({context:f,element:m,creator:E,config:P})).editor})();return v(h)&&n&&mt($,n),$}}function _(i,t){return t.every(r=>i[r])}async function gt(i,t){return nt(()=>{const r=B(i);if(!_(r,t))throw new Error(`It looks like not all required root elements are present yet.
|
|
1
|
+
"use strict";var Z=Object.create;var W=Object.defineProperty;var tt=Object.getOwnPropertyDescriptor;var et=Object.getOwnPropertyNames;var rt=Object.getPrototypeOf,it=Object.prototype.hasOwnProperty;var at=(i,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of et(t))!it.call(i,n)&&n!==r&&W(i,n,{get:()=>t[n],enumerable:!(a=tt(t,n))||a.enumerable});return i};var e=(i,t,r)=>(r=i!=null?Z(rt(i)):{},at(t||!i||!i.__esModule?W(r,"default",{value:i,enumerable:!0}):r,i));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class H{items=new Map;initializationErrors=new Map;pendingCallbacks=new Map;watchers=new Set;execute(t,r,a){const n=this.items.get(t),s=this.initializationErrors.get(t);return s?(a?.(s),Promise.reject(s)):n?Promise.resolve(r(n)):new Promise((o,c)=>{const u=this.getPendingCallbacks(t);u.success.push(async l=>{o(await r(l))}),a?u.error.push(a):u.error.push(c)})}register(t,r){if(this.items.has(t))throw new Error(`Item with ID "${t}" is already registered.`);this.resetErrors(t),this.items.set(t,r);const a=this.pendingCallbacks.get(t);a&&(a.success.forEach(n=>n(r)),this.pendingCallbacks.delete(t)),this.registerAsDefault(t,r),this.notifyWatchers()}error(t,r){this.items.delete(t),this.initializationErrors.set(t,r);const a=this.pendingCallbacks.get(t);a&&(a.error.forEach(n=>n(r)),this.pendingCallbacks.delete(t)),this.initializationErrors.size===1&&!this.items.size&&this.error(null,r),this.notifyWatchers()}resetErrors(t){const{initializationErrors:r}=this;r.has(null)&&r.get(null)===r.get(t)&&r.delete(null),r.delete(t)}unregister(t){if(!this.items.has(t))throw new Error(`Item with ID "${t}" is not registered.`);t&&this.items.get(null)===this.items.get(t)&&this.unregister(null),this.items.delete(t),this.pendingCallbacks.delete(t),this.notifyWatchers()}getItems(){return Array.from(this.items.values())}hasItem(t){return this.items.has(t)}waitFor(t,r){return new Promise((a,n)=>{let s=!1,o=null;this.execute(t,c=>{s||(o!==null&&clearTimeout(o),a(c))},c=>{s||(o!==null&&clearTimeout(o),n(c))}),r&&(o=setTimeout(()=>{s=!0,n(new Error(`Timeout waiting for item with ID "${t}" to be registered.`))},r))})}async destroyAll(){const t=Array.from(new Set(this.items.values())).map(r=>r.destroy());this.items.clear(),this.pendingCallbacks.clear(),await Promise.all(t),this.notifyWatchers()}watch(t){return this.watchers.add(t),t(new Map(this.items),new Map(this.initializationErrors)),this.unwatch.bind(this,t)}unwatch(t){this.watchers.delete(t)}reset(){this.items.clear(),this.initializationErrors.clear(),this.pendingCallbacks.clear(),this.notifyWatchers()}notifyWatchers(){this.watchers.forEach(t=>t(new Map(this.items),new Map(this.initializationErrors)))}getPendingCallbacks(t){let r=this.pendingCallbacks.get(t);return r||(r={success:[],error:[]},this.pendingCallbacks.set(t,r)),r}registerAsDefault(t,r){this.items.size===1&&t!==null&&this.register(null,r)}}function M(i,t){let r=null;return(...a)=>{r&&clearTimeout(r),r=setTimeout(()=>{t(...a)},i)}}function nt(i,t){const r=Object.entries(i).filter(([a,n])=>t(n,a));return Object.fromEntries(r)}function U(i){return Object.keys(i).length===0&&i.constructor===Object}function R(i,t){const r=Object.entries(i).map(([a,n])=>[a,t(n,a)]);return Object.fromEntries(r)}function st(){return Math.random().toString(36).substring(2)}function ot(i,{timeOutAfter:t=500,retryAfter:r=100}={}){return new Promise((a,n)=>{const s=Date.now();let o=null;const c=setTimeout(()=>{n(o??new Error("Timeout"))},t),u=async()=>{try{const l=await i();clearTimeout(c),a(l)}catch(l){o=l,Date.now()-s>t?n(l):setTimeout(u,r)}};u()})}function I(){return new Promise(i=>{switch(document.readyState){case"loading":document.addEventListener("DOMContentLoaded",()=>i(),{once:!0});break;case"interactive":case"complete":setTimeout(i,0);break;default:console.warn("Unexpected document.readyState:",document.readyState),setTimeout(i,0)}})}const D=Symbol.for("context-editor-watchdog");async function ct({element:i,context:t,creator:r,config:a}){const n=st();await t.add({creator:(u,l)=>r.create(u,l),id:n,sourceElementOrData:i,type:"editor",config:a});const s=t.getItem(n),o={state:"available",editorContextId:n,context:t};s[D]=o;const c=t.destroy.bind(t);return t.destroy=async()=>(o.state="unavailable",c()),{...o,editor:s}}function ut(i){return D in i?i[D]:null}function lt(i){return Array.from(i.model.document.getRoots()).reduce((t,r)=>(r.rootName==="$graveyard"||(t[r.rootName]=i.getData({rootName:r.rootName})),t),Object.create({}))}function v(i){return["inline","classic","balloon","decoupled"].includes(i)}class w extends Error{constructor(t){super(t),this.name="CKEditor5SymfonyError"}}async function mt(i){const t=await import("ckeditor5"),a={inline:t.InlineEditor,balloon:t.BalloonEditor,classic:t.ClassicEditor,decoupled:t.DecoupledEditor,multiroot:t.MultiRootEditor}[i];if(!a)throw new w(`Unsupported editor type: ${i}`);return a}class x{static the=new x;plugins=new Map;constructor(){}register(t,r){if(this.plugins.has(t))throw new w(`Plugin with name "${t}" is already registered.`);return this.plugins.set(t,r),this.unregister.bind(this,t)}unregister(t){if(!this.plugins.has(t))throw new w(`Plugin with name "${t}" is not registered.`);this.plugins.delete(t)}unregisterAll(){this.plugins.clear()}async get(t){return this.plugins.get(t)?.()}has(t){return this.plugins.has(t)}}async function V(i){const t=await import("ckeditor5");let r=null;const a=i.map(async n=>{const s=await x.the.get(n);if(s)return s;const{[n]:o}=t;if(o)return o;if(!r)try{r=await import("ckeditor5-premium-features")}catch(u){throw console.error(`Failed to load premium package: ${u}`),new w(`Plugin "${n}" not found in base package and failed to load premium package.`)}const{[n]:c}=r||{};if(c)return c;throw new w(`Plugin "${n}" not found in base or premium packages.`)});return{loadedPlugins:await Promise.all(a),hasPremium:!!r}}async function B(i,t){const r=[i.ui,i.content];return await Promise.all([q("ckeditor5",r),t&&q("ckeditor5-premium-features",r)].filter(n=>!!n)).then(n=>n.flat())}async function q(i,t){return await Promise.all(t.filter(r=>r!=="en").map(async r=>{const a=await dt(i,r);return a?.default??a}).filter(Boolean))}async function dt(i,t){try{if(i==="ckeditor5")switch(t){case"af":return await import("ckeditor5/translations/af.js");case"ar":return await import("ckeditor5/translations/ar.js");case"ast":return await import("ckeditor5/translations/ast.js");case"az":return await import("ckeditor5/translations/az.js");case"bg":return await import("ckeditor5/translations/bg.js");case"bn":return await import("ckeditor5/translations/bn.js");case"bs":return await import("ckeditor5/translations/bs.js");case"ca":return await import("ckeditor5/translations/ca.js");case"cs":return await import("ckeditor5/translations/cs.js");case"da":return await import("ckeditor5/translations/da.js");case"de":return await import("ckeditor5/translations/de.js");case"de-ch":return await import("ckeditor5/translations/de-ch.js");case"el":return await import("ckeditor5/translations/el.js");case"en":return await import("ckeditor5/translations/en.js");case"en-au":return await import("ckeditor5/translations/en-au.js");case"en-gb":return await import("ckeditor5/translations/en-gb.js");case"eo":return await import("ckeditor5/translations/eo.js");case"es":return await import("ckeditor5/translations/es.js");case"es-co":return await import("ckeditor5/translations/es-co.js");case"et":return await import("ckeditor5/translations/et.js");case"eu":return await import("ckeditor5/translations/eu.js");case"fa":return await import("ckeditor5/translations/fa.js");case"fi":return await import("ckeditor5/translations/fi.js");case"fr":return await import("ckeditor5/translations/fr.js");case"gl":return await import("ckeditor5/translations/gl.js");case"gu":return await import("ckeditor5/translations/gu.js");case"he":return await import("ckeditor5/translations/he.js");case"hi":return await import("ckeditor5/translations/hi.js");case"hr":return await import("ckeditor5/translations/hr.js");case"hu":return await import("ckeditor5/translations/hu.js");case"hy":return await import("ckeditor5/translations/hy.js");case"id":return await import("ckeditor5/translations/id.js");case"it":return await import("ckeditor5/translations/it.js");case"ja":return await import("ckeditor5/translations/ja.js");case"jv":return await import("ckeditor5/translations/jv.js");case"kk":return await import("ckeditor5/translations/kk.js");case"km":return await import("ckeditor5/translations/km.js");case"kn":return await import("ckeditor5/translations/kn.js");case"ko":return await import("ckeditor5/translations/ko.js");case"ku":return await import("ckeditor5/translations/ku.js");case"lt":return await import("ckeditor5/translations/lt.js");case"lv":return await import("ckeditor5/translations/lv.js");case"ms":return await import("ckeditor5/translations/ms.js");case"nb":return await import("ckeditor5/translations/nb.js");case"ne":return await import("ckeditor5/translations/ne.js");case"nl":return await import("ckeditor5/translations/nl.js");case"no":return await import("ckeditor5/translations/no.js");case"oc":return await import("ckeditor5/translations/oc.js");case"pl":return await import("ckeditor5/translations/pl.js");case"pt":return await import("ckeditor5/translations/pt.js");case"pt-br":return await import("ckeditor5/translations/pt-br.js");case"ro":return await import("ckeditor5/translations/ro.js");case"ru":return await import("ckeditor5/translations/ru.js");case"si":return await import("ckeditor5/translations/si.js");case"sk":return await import("ckeditor5/translations/sk.js");case"sl":return await import("ckeditor5/translations/sl.js");case"sq":return await import("ckeditor5/translations/sq.js");case"sr":return await import("ckeditor5/translations/sr.js");case"sr-latn":return await import("ckeditor5/translations/sr-latn.js");case"sv":return await import("ckeditor5/translations/sv.js");case"th":return await import("ckeditor5/translations/th.js");case"tk":return await import("ckeditor5/translations/tk.js");case"tr":return await import("ckeditor5/translations/tr.js");case"tt":return await import("ckeditor5/translations/tt.js");case"ug":return await import("ckeditor5/translations/ug.js");case"uk":return await import("ckeditor5/translations/uk.js");case"ur":return await import("ckeditor5/translations/ur.js");case"uz":return await import("ckeditor5/translations/uz.js");case"vi":return await import("ckeditor5/translations/vi.js");case"zh":return await import("ckeditor5/translations/zh.js");case"zh-cn":return await import("ckeditor5/translations/zh-cn.js");default:return console.warn(`Language ${t} not found in ckeditor5 translations`),null}else switch(t){case"af":return await import("ckeditor5-premium-features/translations/af.js");case"ar":return await import("ckeditor5-premium-features/translations/ar.js");case"ast":return await import("ckeditor5-premium-features/translations/ast.js");case"az":return await import("ckeditor5-premium-features/translations/az.js");case"bg":return await import("ckeditor5-premium-features/translations/bg.js");case"bn":return await import("ckeditor5-premium-features/translations/bn.js");case"bs":return await import("ckeditor5-premium-features/translations/bs.js");case"ca":return await import("ckeditor5-premium-features/translations/ca.js");case"cs":return await import("ckeditor5-premium-features/translations/cs.js");case"da":return await import("ckeditor5-premium-features/translations/da.js");case"de":return await import("ckeditor5-premium-features/translations/de.js");case"de-ch":return await import("ckeditor5-premium-features/translations/de-ch.js");case"el":return await import("ckeditor5-premium-features/translations/el.js");case"en":return await import("ckeditor5-premium-features/translations/en.js");case"en-au":return await import("ckeditor5-premium-features/translations/en-au.js");case"en-gb":return await import("ckeditor5-premium-features/translations/en-gb.js");case"eo":return await import("ckeditor5-premium-features/translations/eo.js");case"es":return await import("ckeditor5-premium-features/translations/es.js");case"es-co":return await import("ckeditor5-premium-features/translations/es-co.js");case"et":return await import("ckeditor5-premium-features/translations/et.js");case"eu":return await import("ckeditor5-premium-features/translations/eu.js");case"fa":return await import("ckeditor5-premium-features/translations/fa.js");case"fi":return await import("ckeditor5-premium-features/translations/fi.js");case"fr":return await import("ckeditor5-premium-features/translations/fr.js");case"gl":return await import("ckeditor5-premium-features/translations/gl.js");case"gu":return await import("ckeditor5-premium-features/translations/gu.js");case"he":return await import("ckeditor5-premium-features/translations/he.js");case"hi":return await import("ckeditor5-premium-features/translations/hi.js");case"hr":return await import("ckeditor5-premium-features/translations/hr.js");case"hu":return await import("ckeditor5-premium-features/translations/hu.js");case"hy":return await import("ckeditor5-premium-features/translations/hy.js");case"id":return await import("ckeditor5-premium-features/translations/id.js");case"it":return await import("ckeditor5-premium-features/translations/it.js");case"ja":return await import("ckeditor5-premium-features/translations/ja.js");case"jv":return await import("ckeditor5-premium-features/translations/jv.js");case"kk":return await import("ckeditor5-premium-features/translations/kk.js");case"km":return await import("ckeditor5-premium-features/translations/km.js");case"kn":return await import("ckeditor5-premium-features/translations/kn.js");case"ko":return await import("ckeditor5-premium-features/translations/ko.js");case"ku":return await import("ckeditor5-premium-features/translations/ku.js");case"lt":return await import("ckeditor5-premium-features/translations/lt.js");case"lv":return await import("ckeditor5-premium-features/translations/lv.js");case"ms":return await import("ckeditor5-premium-features/translations/ms.js");case"nb":return await import("ckeditor5-premium-features/translations/nb.js");case"ne":return await import("ckeditor5-premium-features/translations/ne.js");case"nl":return await import("ckeditor5-premium-features/translations/nl.js");case"no":return await import("ckeditor5-premium-features/translations/no.js");case"oc":return await import("ckeditor5-premium-features/translations/oc.js");case"pl":return await import("ckeditor5-premium-features/translations/pl.js");case"pt":return await import("ckeditor5-premium-features/translations/pt.js");case"pt-br":return await import("ckeditor5-premium-features/translations/pt-br.js");case"ro":return await import("ckeditor5-premium-features/translations/ro.js");case"ru":return await import("ckeditor5-premium-features/translations/ru.js");case"si":return await import("ckeditor5-premium-features/translations/si.js");case"sk":return await import("ckeditor5-premium-features/translations/sk.js");case"sl":return await import("ckeditor5-premium-features/translations/sl.js");case"sq":return await import("ckeditor5-premium-features/translations/sq.js");case"sr":return await import("ckeditor5-premium-features/translations/sr.js");case"sr-latn":return await import("ckeditor5-premium-features/translations/sr-latn.js");case"sv":return await import("ckeditor5-premium-features/translations/sv.js");case"th":return await import("ckeditor5-premium-features/translations/th.js");case"tk":return await import("ckeditor5-premium-features/translations/tk.js");case"tr":return await import("ckeditor5-premium-features/translations/tr.js");case"tt":return await import("ckeditor5-premium-features/translations/tt.js");case"ug":return await import("ckeditor5-premium-features/translations/ug.js");case"uk":return await import("ckeditor5-premium-features/translations/uk.js");case"ur":return await import("ckeditor5-premium-features/translations/ur.js");case"uz":return await import("ckeditor5-premium-features/translations/uz.js");case"vi":return await import("ckeditor5-premium-features/translations/vi.js");case"zh":return await import("ckeditor5-premium-features/translations/zh.js");case"zh-cn":return await import("ckeditor5-premium-features/translations/zh-cn.js");default:return console.warn(`Language ${t} not found in premium translations`),await import("ckeditor5-premium-features/translations/en.js")}}catch(r){return console.error(`Failed to load translation for ${i}/${t}:`,r),null}}function F(i){return R(i,t=>({dictionary:t}))}function J(){return Array.from(document.querySelectorAll("cke5-editor")).map(i=>i.getAttribute("data-cke-editor-id")).filter(i=>i!==null)}function K(i){const t=_(i);return R(t,({element:r})=>r)}function j(i){const t=_(i),r=R(t,({content:a})=>a);return nt(r,a=>typeof a=="string")}function _(i){const t=Array.from(document.querySelectorAll(`cke5-editable[data-cke-editor-id="${i}"]`)).reduce((o,c)=>{const u=c.getAttribute("data-cke-root-name"),l=c.getAttribute("data-cke-content");return o[u]={element:c.querySelector("[data-cke-editable-content]"),content:l},o},Object.create({})),r=document.querySelector(`cke5-editor[data-cke-editor-id="${i}"]`);if(!r)return t;const a=t.main,n=JSON.parse(r.getAttribute("data-cke-content")),s=document.querySelector(`#${i}_editor `);return a&&n?.main?{...t,main:{...a,content:a.content||n.main}}:s?{...t,main:{element:s,content:n?.main||null}}:t}function A(i){if(!i||typeof i!="object")return i;if(Array.isArray(i))return i.map(a=>A(a));const t=i;if(t.$element&&typeof t.$element=="string"){const a=document.querySelector(t.$element);return a||console.warn(`Element not found for selector: ${t.$element}`),a||null}const r=Object.create(null);for(const[a,n]of Object.entries(i))r[a]=A(n);return r}function T(i,t,r){if(!r||typeof r!="object")return r;if(Array.isArray(r))return r.map(s=>T(i,t,s));const a=r;if(a.$translation&&typeof a.$translation=="string"){const s=a.$translation,o=pt(i,s,t);return o===void 0&&console.warn(`Translation not found for key: ${s}`),o!==void 0?o:null}const n=Object.create(null);for(const[s,o]of Object.entries(r))n[s]=T(i,t,o);return n}function pt(i,t,r){for(const a of i){const n=a[r];if(n?.dictionary&&t in n.dictionary)return n.dictionary[t]}}function ht(i,t){const{editing:r}=i;r.view.change(a=>{a.setStyle("height",`${t}px`,r.view.document.getRoot())})}const $=Symbol.for("elixir-editor-watchdog");async function wt(i){const{EditorWatchdog:t}=await import("ckeditor5"),r=new t(i);return r.setCreator(async(...a)=>{const n=await i.create(...a);return n[$]=r,n}),{watchdog:r,Constructor:{create:async(...a)=>(await r.create(...a),r.editor)}}}function ft(i){return $ in i?i[$]:null}class b extends H{static the=new b}class gt extends HTMLElement{contextPromise=null;async connectedCallback(){await I();const t=this.getAttribute("data-cke-context-id"),r=JSON.parse(this.getAttribute("data-cke-language")),a=JSON.parse(this.getAttribute("data-cke-context")),{customTranslations:n,watchdogConfig:s,config:{plugins:o,...c}}=a,{loadedPlugins:u,hasPremium:l}=await V(o??[]),f=[...await B(r,l),F(n||{})].filter(d=>!U(d));this.contextPromise=(async()=>{const{ContextWatchdog:d,Context:k}=await import("ckeditor5"),g=new d(k,{crashNumberLimit:10,...s});let y=A(c);return y=T([...f].reverse(),r.ui,y),await g.create({...y,language:r,plugins:u,...f.length&&{translations:f}}),g.on("itemError",(...O)=>{console.error("Context item error:",...O)}),g})();const E=await this.contextPromise;this.isConnected&&b.the.register(t,E)}async disconnectedCallback(){const t=this.getAttribute("data-cke-context-id");this.style.display="none";try{await(await this.contextPromise)?.destroy()}finally{this.contextPromise=null,t&&b.the.hasItem(t)&&b.the.unregister(t)}}}class p extends H{static the=new p}class G extends HTMLElement{editorPromise=null;async connectedCallback(){await I(),this.hasAttribute("data-cke-editor-id")||this.setAttribute("data-cke-editor-id",J()[0]);const t=this.getAttribute("data-cke-editor-id"),r=this.getAttribute("data-cke-root-name"),a=this.getAttribute("data-cke-content"),n=Number.parseInt(this.getAttribute("data-cke-save-debounce-ms"),10);if(!t||!r)throw new w("Editor ID or Root Name is missing.");this.style.display="block",this.editorPromise=p.the.execute(t,async s=>{if(!this.isConnected)return null;const o=this.querySelector("input"),{ui:c,editing:u,model:l}=s;if(l.document.getRoot(r)){if(a!==null){const d=s.getData({rootName:r});d&&d!==a&&s.setData({[r]:a})}return s}s.addRoot(r,{isUndoable:!1,...a!==null&&{data:a}});const h=this.querySelector("[data-cke-editable-content]"),f=c.view.createEditable(r,h);c.addEditable(f),u.view.forceRender();const E=()=>{const d=s.getData({rootName:r});o&&(o.value=d,o.dispatchEvent(new Event("input"))),this.dispatchEvent(new CustomEvent("change",{detail:{value:d}}))};return s.model.document.on("change:data",M(n,E)),E(),s})}async disconnectedCallback(){const t=this.getAttribute("data-cke-root-name");this.style.display="none";const r=await this.editorPromise;if(this.editorPromise=null,r&&r.state!=="destroyed"&&t){const a=r.model.document.getRoot(t);if(a&&"detachEditable"in r){try{r.detachEditable(a)}catch(n){console.error("Unable unmount editable from root:",n)}r.detachRoot(t,!1)}}}}async function yt({saveDebounceMs:i,editorId:t,targetElement:r}){const{Plugin:a}=await import("ckeditor5");return class extends a{static get pluginName(){return"DispatchEditorRootsChangeEvent"}afterInit(){const s=M(i,this.dispatch);this.editor.model.document.on("change:data",s),this.editor.once("ready",this.dispatch)}dispatch=()=>{r.dispatchEvent(new CustomEvent("ckeditor5:change:data",{detail:{editorId:t,editor:this.editor,roots:lt(this.editor)},bubbles:!0}))}}}async function bt(i){const{Plugin:t}=await import("ckeditor5");return class extends t{input=null;form=null;static get pluginName(){return"SyncEditorWithInput"}afterInit(){const{editor:a}=this,s=a.sourceElement.id.replace(/_editor$/,"");this.input=document.getElementById(`${s}_input`),this.input&&(a.model.document.on("change:data",M(i,()=>this.sync())),a.once("ready",this.sync),this.form=this.input.closest("form"),this.form?.addEventListener("submit",this.sync))}sync=()=>{if(this.input){const a=this.editor.getData();this.input.value=a,this.input.dispatchEvent(new Event("input",{bubbles:!0}))}};destroy(){this.form&&this.form.removeEventListener("submit",this.sync),this.input=null,this.form=null}}}class Y extends HTMLElement{editorPromise=null;async connectedCallback(){await I();const t=this.getAttribute("data-cke-editor-id");p.the.resetErrors(t);try{this.style.display="block",this.editorPromise=this.createEditor();const r=await this.editorPromise;this.isConnected&&(p.the.register(t,r),r.once("destroy",()=>{p.the.hasItem(t)&&p.the.unregister(t)}))}catch(r){console.error(`Error initializing CKEditor5 instance with ID "${t}":`,r),this.editorPromise=null,p.the.error(t,r)}}async disconnectedCallback(){this.style.display="none";try{const t=await this.editorPromise;if(!t)return;const r=ut(t),a=ft(t);r?r.state!=="unavailable"&&await r.context.remove(r.editorContextId):a?await a.destroy():await t.destroy()}finally{this.editorPromise=null}}async createEditor(){const t=this.getAttribute("data-cke-editor-id"),r=JSON.parse(this.getAttribute("data-cke-preset")),a=this.getAttribute("data-cke-context-id"),n=this.getAttribute("data-cke-editable-height")?Number.parseInt(this.getAttribute("data-cke-editable-height"),10):null,s=Number.parseInt(this.getAttribute("data-cke-save-debounce-ms"),10),o=JSON.parse(this.getAttribute("data-cke-language")),c=this.hasAttribute("data-cke-watchdog"),u=JSON.parse(this.getAttribute("data-cke-content")),{customTranslations:l,editorType:h,licenseKey:f,config:{plugins:E,...d}}=r;let k=await mt(h);const g=await(a?b.the.waitFor(a):null);if(c&&!g){const m=await wt(k);({Constructor:k}=m),m.watchdog.on("restart",()=>{const C=m.watchdog.editor;this.editorPromise=Promise.resolve(C),p.the.register(t,C)})}const{loadedPlugins:y,hasPremium:O}=await V(E);y.push(await yt({saveDebounceMs:s,editorId:t,targetElement:this})),v(h)&&y.push(await bt(s));const S=[...await B(o,O),F(l||{})].filter(m=>!U(m));let P={...u,...j(t)};v(h)&&(P=P.main||"");const z=await(async()=>{let m=K(t);if(!m.main){const L=v(h)?["main"]:Object.keys(P);X(m,L)||(m=await Et(t,L),P={...u,...j(t)})}v(h)&&"main"in m&&(m=m.main);let C=A(d);C=T([...S].reverse(),o.ui,C);const N={...C,initialData:P,licenseKey:f,plugins:y,language:o,...S.length&&{translations:S}};return!g||!(m instanceof HTMLElement)?k.create(m,N):(await ct({context:g,element:m,creator:k,config:N})).editor})();return v(h)&&n&&ht(z,n),z}}function X(i,t){return t.every(r=>i[r])}async function Et(i,t){return ot(()=>{const r=K(i);if(!X(r,t))throw new Error(`It looks like not all required root elements are present yet.
|
|
2
2
|
* If you want to wait for them, ensure they are registered before editor initialization.
|
|
3
3
|
* If you want lazy initialize roots, consider removing root values from the \`initialData\` config and assign initial data in editable components.
|
|
4
|
-
Missing roots: ${t.filter(a=>!r[a]).join(", ")}.`);return r},{timeOutAfter:2e3,retryAfter:100})}class
|
|
4
|
+
Missing roots: ${t.filter(a=>!r[a]).join(", ")}.`);return r},{timeOutAfter:2e3,retryAfter:100})}class Q extends HTMLElement{mountedPromise=null;async connectedCallback(){await I();const t=this.getAttribute("data-cke-editor-id")||J()[0],r=this.getAttribute("data-cke-name");!t||!r||(this.style.display="block",this.mountedPromise=p.the.execute(t,a=>{if(!this.isConnected)return;const{ui:n}=a,s=kt(r),o=n.view[s];if(!o)throw new w(`Unknown UI part name: "${r}". Supported names are "toolbar" and "menubar".`);this.appendChild(o.element)}))}async disconnectedCallback(){this.style.display="none",await this.mountedPromise,this.mountedPromise=null,this.innerHTML=""}}function kt(i){switch(i){case"toolbar":return"toolbar";case"menubar":return"menuBarView";default:return null}}const Ct={"cke5-editor":Y,"cke5-context":gt,"cke5-ui-part":Q,"cke5-editable":G};function Pt(){for(const[i,t]of Object.entries(Ct))window.customElements.get(i)||window.customElements.define(i,t)}Pt();exports.CKEditor5SymfonyError=w;exports.ContextsRegistry=b;exports.CustomEditorPluginsRegistry=x;exports.EditableComponentElement=G;exports.EditorComponentElement=Y;exports.EditorsRegistry=p;exports.UIPartComponentElement=Q;
|
|
5
5
|
//# sourceMappingURL=index.cjs.map
|