@intlayer/next-i18next 8.12.5-canary.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/README.md +330 -0
  2. package/dist/cjs/_virtual/_rolldown/runtime.cjs +29 -0
  3. package/dist/cjs/appWithTranslation.cjs +31 -0
  4. package/dist/cjs/appWithTranslation.cjs.map +1 -0
  5. package/dist/cjs/index.cjs +69 -0
  6. package/dist/cjs/index.cjs.map +1 -0
  7. package/dist/cjs/packages/@intlayer/editor/dist/esm/compareUrls.cjs +39 -0
  8. package/dist/cjs/packages/@intlayer/editor/dist/esm/compareUrls.cjs.map +1 -0
  9. package/dist/cjs/packages/@intlayer/editor/dist/esm/components/ContentSelector.cjs +161 -0
  10. package/dist/cjs/packages/@intlayer/editor/dist/esm/components/ContentSelector.cjs.map +1 -0
  11. package/dist/cjs/packages/@intlayer/editor/dist/esm/components/ContentSelectorWrapper.cjs +269 -0
  12. package/dist/cjs/packages/@intlayer/editor/dist/esm/components/ContentSelectorWrapper.cjs.map +1 -0
  13. package/dist/cjs/packages/@intlayer/editor/dist/esm/components/EditedContent.cjs +161 -0
  14. package/dist/cjs/packages/@intlayer/editor/dist/esm/components/EditedContent.cjs.map +1 -0
  15. package/dist/cjs/packages/@intlayer/editor/dist/esm/components/IntlayerEditorElement.cjs +88 -0
  16. package/dist/cjs/packages/@intlayer/editor/dist/esm/components/IntlayerEditorElement.cjs.map +1 -0
  17. package/dist/cjs/packages/@intlayer/editor/dist/esm/components/defineIntlayerElements.cjs +27 -0
  18. package/dist/cjs/packages/@intlayer/editor/dist/esm/components/defineIntlayerElements.cjs.map +1 -0
  19. package/dist/cjs/packages/@intlayer/editor/dist/esm/core/CrossFrameMessenger.cjs +80 -0
  20. package/dist/cjs/packages/@intlayer/editor/dist/esm/core/CrossFrameMessenger.cjs.map +1 -0
  21. package/dist/cjs/packages/@intlayer/editor/dist/esm/core/CrossFrameStateManager.cjs +75 -0
  22. package/dist/cjs/packages/@intlayer/editor/dist/esm/core/CrossFrameStateManager.cjs.map +1 -0
  23. package/dist/cjs/packages/@intlayer/editor/dist/esm/core/EditorStateManager.cjs +383 -0
  24. package/dist/cjs/packages/@intlayer/editor/dist/esm/core/EditorStateManager.cjs.map +1 -0
  25. package/dist/cjs/packages/@intlayer/editor/dist/esm/core/IframeClickInterceptor.cjs +45 -0
  26. package/dist/cjs/packages/@intlayer/editor/dist/esm/core/IframeClickInterceptor.cjs.map +1 -0
  27. package/dist/cjs/packages/@intlayer/editor/dist/esm/core/UrlStateManager.cjs +59 -0
  28. package/dist/cjs/packages/@intlayer/editor/dist/esm/core/UrlStateManager.cjs.map +1 -0
  29. package/dist/cjs/packages/@intlayer/editor/dist/esm/core/editedContentBus.cjs +36 -0
  30. package/dist/cjs/packages/@intlayer/editor/dist/esm/core/editedContentBus.cjs.map +1 -0
  31. package/dist/cjs/packages/@intlayer/editor/dist/esm/core/focusedContentBus.cjs +42 -0
  32. package/dist/cjs/packages/@intlayer/editor/dist/esm/core/focusedContentBus.cjs.map +1 -0
  33. package/dist/cjs/packages/@intlayer/editor/dist/esm/core/globalManager.cjs +82 -0
  34. package/dist/cjs/packages/@intlayer/editor/dist/esm/core/globalManager.cjs.map +1 -0
  35. package/dist/cjs/packages/@intlayer/editor/dist/esm/core/initEditorClient.cjs +55 -0
  36. package/dist/cjs/packages/@intlayer/editor/dist/esm/core/initEditorClient.cjs.map +1 -0
  37. package/dist/cjs/packages/@intlayer/editor/dist/esm/index.cjs +19 -0
  38. package/dist/cjs/packages/@intlayer/editor/dist/esm/isEnabled.cjs +9 -0
  39. package/dist/cjs/packages/@intlayer/editor/dist/esm/isEnabled.cjs.map +1 -0
  40. package/dist/cjs/packages/@intlayer/editor/dist/esm/mergeIframeClick.cjs +22 -0
  41. package/dist/cjs/packages/@intlayer/editor/dist/esm/mergeIframeClick.cjs.map +1 -0
  42. package/dist/cjs/packages/@intlayer/unmerged-dictionaries-entry/dist/esm/index.cjs +32 -0
  43. package/dist/cjs/packages/@intlayer/unmerged-dictionaries-entry/dist/esm/index.cjs.map +1 -0
  44. package/dist/cjs/packages/react-intlayer/dist/esm/client/IntlayerContext.cjs +25 -0
  45. package/dist/cjs/packages/react-intlayer/dist/esm/client/IntlayerContext.cjs.map +1 -0
  46. package/dist/cjs/packages/react-intlayer/dist/esm/client/IntlayerProvider.cjs +78 -0
  47. package/dist/cjs/packages/react-intlayer/dist/esm/client/IntlayerProvider.cjs.map +1 -0
  48. package/dist/cjs/packages/react-intlayer/dist/esm/client/useLocaleStorage.cjs +24 -0
  49. package/dist/cjs/packages/react-intlayer/dist/esm/client/useLocaleStorage.cjs.map +1 -0
  50. package/dist/cjs/packages/react-intlayer/dist/esm/editor/EditorProvider.cjs +11 -0
  51. package/dist/cjs/packages/react-intlayer/dist/esm/editor/EditorProvider.cjs.map +1 -0
  52. package/dist/cjs/packages/react-intlayer/dist/esm/editor/useEditor.cjs +39 -0
  53. package/dist/cjs/packages/react-intlayer/dist/esm/editor/useEditor.cjs.map +1 -0
  54. package/dist/cjs/plugin/index.cjs +170 -0
  55. package/dist/cjs/plugin/index.cjs.map +1 -0
  56. package/dist/cjs/serverSideTranslations.cjs +46 -0
  57. package/dist/cjs/serverSideTranslations.cjs.map +1 -0
  58. package/dist/esm/_virtual/_rolldown/runtime.mjs +8 -0
  59. package/dist/esm/appWithTranslation.mjs +29 -0
  60. package/dist/esm/appWithTranslation.mjs.map +1 -0
  61. package/dist/esm/index.mjs +11 -0
  62. package/dist/esm/index.mjs.map +1 -0
  63. package/dist/esm/packages/@intlayer/editor/dist/esm/compareUrls.mjs +38 -0
  64. package/dist/esm/packages/@intlayer/editor/dist/esm/compareUrls.mjs.map +1 -0
  65. package/dist/esm/packages/@intlayer/editor/dist/esm/components/ContentSelector.mjs +160 -0
  66. package/dist/esm/packages/@intlayer/editor/dist/esm/components/ContentSelector.mjs.map +1 -0
  67. package/dist/esm/packages/@intlayer/editor/dist/esm/components/ContentSelectorWrapper.mjs +266 -0
  68. package/dist/esm/packages/@intlayer/editor/dist/esm/components/ContentSelectorWrapper.mjs.map +1 -0
  69. package/dist/esm/packages/@intlayer/editor/dist/esm/components/EditedContent.mjs +159 -0
  70. package/dist/esm/packages/@intlayer/editor/dist/esm/components/EditedContent.mjs.map +1 -0
  71. package/dist/esm/packages/@intlayer/editor/dist/esm/components/IntlayerEditorElement.mjs +88 -0
  72. package/dist/esm/packages/@intlayer/editor/dist/esm/components/IntlayerEditorElement.mjs.map +1 -0
  73. package/dist/esm/packages/@intlayer/editor/dist/esm/components/defineIntlayerElements.mjs +26 -0
  74. package/dist/esm/packages/@intlayer/editor/dist/esm/components/defineIntlayerElements.mjs.map +1 -0
  75. package/dist/esm/packages/@intlayer/editor/dist/esm/core/CrossFrameMessenger.mjs +80 -0
  76. package/dist/esm/packages/@intlayer/editor/dist/esm/core/CrossFrameMessenger.mjs.map +1 -0
  77. package/dist/esm/packages/@intlayer/editor/dist/esm/core/CrossFrameStateManager.mjs +74 -0
  78. package/dist/esm/packages/@intlayer/editor/dist/esm/core/CrossFrameStateManager.mjs.map +1 -0
  79. package/dist/esm/packages/@intlayer/editor/dist/esm/core/EditorStateManager.mjs +381 -0
  80. package/dist/esm/packages/@intlayer/editor/dist/esm/core/EditorStateManager.mjs.map +1 -0
  81. package/dist/esm/packages/@intlayer/editor/dist/esm/core/IframeClickInterceptor.mjs +45 -0
  82. package/dist/esm/packages/@intlayer/editor/dist/esm/core/IframeClickInterceptor.mjs.map +1 -0
  83. package/dist/esm/packages/@intlayer/editor/dist/esm/core/UrlStateManager.mjs +58 -0
  84. package/dist/esm/packages/@intlayer/editor/dist/esm/core/UrlStateManager.mjs.map +1 -0
  85. package/dist/esm/packages/@intlayer/editor/dist/esm/core/editedContentBus.mjs +33 -0
  86. package/dist/esm/packages/@intlayer/editor/dist/esm/core/editedContentBus.mjs.map +1 -0
  87. package/dist/esm/packages/@intlayer/editor/dist/esm/core/focusedContentBus.mjs +39 -0
  88. package/dist/esm/packages/@intlayer/editor/dist/esm/core/focusedContentBus.mjs.map +1 -0
  89. package/dist/esm/packages/@intlayer/editor/dist/esm/core/globalManager.mjs +79 -0
  90. package/dist/esm/packages/@intlayer/editor/dist/esm/core/globalManager.mjs.map +1 -0
  91. package/dist/esm/packages/@intlayer/editor/dist/esm/core/initEditorClient.mjs +52 -0
  92. package/dist/esm/packages/@intlayer/editor/dist/esm/core/initEditorClient.mjs.map +1 -0
  93. package/dist/esm/packages/@intlayer/editor/dist/esm/index.mjs +18 -0
  94. package/dist/esm/packages/@intlayer/editor/dist/esm/isEnabled.mjs +8 -0
  95. package/dist/esm/packages/@intlayer/editor/dist/esm/isEnabled.mjs.map +1 -0
  96. package/dist/esm/packages/@intlayer/editor/dist/esm/mergeIframeClick.mjs +21 -0
  97. package/dist/esm/packages/@intlayer/editor/dist/esm/mergeIframeClick.mjs.map +1 -0
  98. package/dist/esm/packages/@intlayer/unmerged-dictionaries-entry/dist/esm/index.browser.mjs +6 -0
  99. package/dist/esm/packages/@intlayer/unmerged-dictionaries-entry/dist/esm/index.browser.mjs.map +1 -0
  100. package/dist/esm/packages/react-intlayer/dist/esm/client/IntlayerContext.mjs +23 -0
  101. package/dist/esm/packages/react-intlayer/dist/esm/client/IntlayerContext.mjs.map +1 -0
  102. package/dist/esm/packages/react-intlayer/dist/esm/client/IntlayerProvider.mjs +77 -0
  103. package/dist/esm/packages/react-intlayer/dist/esm/client/IntlayerProvider.mjs.map +1 -0
  104. package/dist/esm/packages/react-intlayer/dist/esm/client/useLocaleStorage.mjs +22 -0
  105. package/dist/esm/packages/react-intlayer/dist/esm/client/useLocaleStorage.mjs.map +1 -0
  106. package/dist/esm/packages/react-intlayer/dist/esm/editor/EditorProvider.mjs +11 -0
  107. package/dist/esm/packages/react-intlayer/dist/esm/editor/EditorProvider.mjs.map +1 -0
  108. package/dist/esm/packages/react-intlayer/dist/esm/editor/useEditor.mjs +38 -0
  109. package/dist/esm/packages/react-intlayer/dist/esm/editor/useEditor.mjs.map +1 -0
  110. package/dist/esm/plugin/index.mjs +165 -0
  111. package/dist/esm/plugin/index.mjs.map +1 -0
  112. package/dist/esm/serverSideTranslations.mjs +44 -0
  113. package/dist/esm/serverSideTranslations.mjs.map +1 -0
  114. package/dist/types/appWithTranslation.d.ts +18 -0
  115. package/dist/types/appWithTranslation.d.ts.map +1 -0
  116. package/dist/types/index.d.ts +10 -0
  117. package/dist/types/index.d.ts.map +1 -0
  118. package/dist/types/plugin/index.d.ts +23 -0
  119. package/dist/types/plugin/index.d.ts.map +1 -0
  120. package/dist/types/serverSideTranslations.d.ts +33 -0
  121. package/dist/types/serverSideTranslations.d.ts.map +1 -0
  122. package/package.json +116 -0
@@ -0,0 +1,88 @@
1
+ const require_globalManager = require('../core/globalManager.cjs');
2
+ const require_initEditorClient = require('../core/initEditorClient.cjs');
3
+
4
+ //#region ../../packages/@intlayer/editor/dist/esm/components/IntlayerEditorElement.mjs
5
+ const _HTMLElement = typeof HTMLElement !== "undefined" ? HTMLElement : class {};
6
+ /**
7
+ * <intlayer-editor>
8
+ *
9
+ * A framework-agnostic web component that manages the Intlayer editor singleton
10
+ * lifecycle and keeps the current locale in sync with the EditorStateManager.
11
+ *
12
+ * Drop this element once at the root of your application to activate the editor.
13
+ * It renders no UI.
14
+ *
15
+ * @prop {IntlayerConfig} configuration - The Intlayer config (required; set as JS property, not attribute)
16
+ * @prop {string} locale - The active application locale (attribute/property)
17
+ *
18
+ * @example
19
+ * // Svelte
20
+ * <intlayer-editor .configuration={config} locale={$locale} />
21
+ *
22
+ * // Vue
23
+ * <intlayer-editor :configuration="config" :locale="currentLocale" />
24
+ */
25
+ var IntlayerEditorElement = class extends _HTMLElement {
26
+ _configuration = void 0;
27
+ _locale = void 0;
28
+ _initialized = false;
29
+ _unsubManager = null;
30
+ static get observedAttributes() {
31
+ return ["locale"];
32
+ }
33
+ get configuration() {
34
+ return this._configuration;
35
+ }
36
+ set configuration(v) {
37
+ this._configuration = v;
38
+ if (!this._initialized) this._init();
39
+ }
40
+ get locale() {
41
+ return this._locale;
42
+ }
43
+ set locale(v) {
44
+ this._locale = v;
45
+ if (v && this._initialized) this._syncLocale(v);
46
+ }
47
+ attributeChangedCallback(name, _oldVal, newVal) {
48
+ if (name === "locale" && newVal !== null) {
49
+ this._locale = newVal;
50
+ if (this._initialized) this._syncLocale(newVal);
51
+ }
52
+ }
53
+ connectedCallback() {
54
+ this._init();
55
+ }
56
+ disconnectedCallback() {
57
+ this._unsubManager?.();
58
+ this._unsubManager = null;
59
+ if (this._initialized) {
60
+ require_initEditorClient.stopEditorClient();
61
+ this._initialized = false;
62
+ }
63
+ }
64
+ _init() {
65
+ if (this._initialized) return;
66
+ require_initEditorClient.initEditorClient();
67
+ this._initialized = true;
68
+ if (this._locale) this._syncLocale(this._locale);
69
+ }
70
+ _syncLocale(locale) {
71
+ const manager = require_globalManager.getGlobalEditorManager();
72
+ if (manager) manager.currentLocale.set(locale);
73
+ else {
74
+ this._unsubManager?.();
75
+ this._unsubManager = require_globalManager.onGlobalEditorManagerChange((m) => {
76
+ if (m) {
77
+ this._unsubManager?.();
78
+ this._unsubManager = null;
79
+ m.currentLocale.set(locale);
80
+ }
81
+ });
82
+ }
83
+ }
84
+ };
85
+
86
+ //#endregion
87
+ exports.IntlayerEditorElement = IntlayerEditorElement;
88
+ //# sourceMappingURL=IntlayerEditorElement.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IntlayerEditorElement.cjs","names":["getGlobalEditorManager","onGlobalEditorManagerChange"],"sources":["../../../../../../../../../../packages/@intlayer/editor/dist/esm/components/IntlayerEditorElement.mjs"],"sourcesContent":["import { getGlobalEditorManager, onGlobalEditorManagerChange } from \"../core/globalManager.mjs\";\nimport { initEditorClient, stopEditorClient } from \"../core/initEditorClient.mjs\";\n\n//#region src/components/IntlayerEditorElement.ts\nconst _HTMLElement = typeof HTMLElement !== \"undefined\" ? HTMLElement : class {};\n/**\n* <intlayer-editor>\n*\n* A framework-agnostic web component that manages the Intlayer editor singleton\n* lifecycle and keeps the current locale in sync with the EditorStateManager.\n*\n* Drop this element once at the root of your application to activate the editor.\n* It renders no UI.\n*\n* @prop {IntlayerConfig} configuration - The Intlayer config (required; set as JS property, not attribute)\n* @prop {string} locale - The active application locale (attribute/property)\n*\n* @example\n* // Svelte\n* <intlayer-editor .configuration={config} locale={$locale} />\n*\n* // Vue\n* <intlayer-editor :configuration=\"config\" :locale=\"currentLocale\" />\n*/\nvar IntlayerEditorElement = class extends _HTMLElement {\n\t_configuration = void 0;\n\t_locale = void 0;\n\t_initialized = false;\n\t_unsubManager = null;\n\tstatic get observedAttributes() {\n\t\treturn [\"locale\"];\n\t}\n\tget configuration() {\n\t\treturn this._configuration;\n\t}\n\tset configuration(v) {\n\t\tthis._configuration = v;\n\t\tif (!this._initialized) this._init();\n\t}\n\tget locale() {\n\t\treturn this._locale;\n\t}\n\tset locale(v) {\n\t\tthis._locale = v;\n\t\tif (v && this._initialized) this._syncLocale(v);\n\t}\n\tattributeChangedCallback(name, _oldVal, newVal) {\n\t\tif (name === \"locale\" && newVal !== null) {\n\t\t\tthis._locale = newVal;\n\t\t\tif (this._initialized) this._syncLocale(newVal);\n\t\t}\n\t}\n\tconnectedCallback() {\n\t\tthis._init();\n\t}\n\tdisconnectedCallback() {\n\t\tthis._unsubManager?.();\n\t\tthis._unsubManager = null;\n\t\tif (this._initialized) {\n\t\t\tstopEditorClient();\n\t\t\tthis._initialized = false;\n\t\t}\n\t}\n\t_init() {\n\t\tif (this._initialized) return;\n\t\tinitEditorClient();\n\t\tthis._initialized = true;\n\t\tif (this._locale) this._syncLocale(this._locale);\n\t}\n\t_syncLocale(locale) {\n\t\tconst manager = getGlobalEditorManager();\n\t\tif (manager) manager.currentLocale.set(locale);\n\t\telse {\n\t\t\tthis._unsubManager?.();\n\t\t\tthis._unsubManager = onGlobalEditorManagerChange((m) => {\n\t\t\t\tif (m) {\n\t\t\t\t\tthis._unsubManager?.();\n\t\t\t\t\tthis._unsubManager = null;\n\t\t\t\t\tm.currentLocale.set(locale);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n};\n\n//#endregion\nexport { IntlayerEditorElement };\n//# sourceMappingURL=IntlayerEditorElement.mjs.map"],"mappings":";;;;AAIA,MAAM,eAAe,OAAO,gBAAgB,cAAc,cAAc,MAAM;;;;;;;;;;;;;;;;;;;;AAoB9E,IAAI,wBAAwB,cAAc,aAAa;CACtD,iBAAiB,KAAK;CACtB,UAAU,KAAK;CACf,eAAe;CACf,gBAAgB;CAChB,WAAW,qBAAqB;AAC/B,SAAO,CAAC,SAAS;;CAElB,IAAI,gBAAgB;AACnB,SAAO,KAAK;;CAEb,IAAI,cAAc,GAAG;AACpB,OAAK,iBAAiB;AACtB,MAAI,CAAC,KAAK,aAAc,MAAK,OAAO;;CAErC,IAAI,SAAS;AACZ,SAAO,KAAK;;CAEb,IAAI,OAAO,GAAG;AACb,OAAK,UAAU;AACf,MAAI,KAAK,KAAK,aAAc,MAAK,YAAY,EAAE;;CAEhD,yBAAyB,MAAM,SAAS,QAAQ;AAC/C,MAAI,SAAS,YAAY,WAAW,MAAM;AACzC,QAAK,UAAU;AACf,OAAI,KAAK,aAAc,MAAK,YAAY,OAAO;;;CAGjD,oBAAoB;AACnB,OAAK,OAAO;;CAEb,uBAAuB;AACtB,OAAK,iBAAiB;AACtB,OAAK,gBAAgB;AACrB,MAAI,KAAK,cAAc;AACtB,8CAAkB;AAClB,QAAK,eAAe;;;CAGtB,QAAQ;AACP,MAAI,KAAK,aAAc;AACvB,6CAAkB;AAClB,OAAK,eAAe;AACpB,MAAI,KAAK,QAAS,MAAK,YAAY,KAAK,QAAQ;;CAEjD,YAAY,QAAQ;EACnB,MAAM,UAAUA,8CAAwB;AACxC,MAAI,QAAS,SAAQ,cAAc,IAAI,OAAO;OACzC;AACJ,QAAK,iBAAiB;AACtB,QAAK,gBAAgBC,mDAA6B,MAAM;AACvD,QAAI,GAAG;AACN,UAAK,iBAAiB;AACtB,UAAK,gBAAgB;AACrB,OAAE,cAAc,IAAI,OAAO;;KAE3B"}
@@ -0,0 +1,27 @@
1
+ const require_ContentSelector = require('./ContentSelector.cjs');
2
+ const require_ContentSelectorWrapper = require('./ContentSelectorWrapper.cjs');
3
+ const require_EditedContent = require('./EditedContent.cjs');
4
+ const require_IntlayerEditorElement = require('./IntlayerEditorElement.cjs');
5
+
6
+ //#region ../../packages/@intlayer/editor/dist/esm/components/defineIntlayerElements.mjs
7
+ const defineIntlayerEditorElement = () => {
8
+ if (typeof customElements === "undefined") return;
9
+ if (!customElements.get("intlayer-editor")) customElements.define("intlayer-editor", require_IntlayerEditorElement.IntlayerEditorElement);
10
+ };
11
+ /**
12
+ * Register all Intlayer custom elements.
13
+ * Call this once at application startup (inside IntlayerEditorProvider or similar).
14
+ * Safe to call multiple times — only registers elements that are not yet defined.
15
+ */
16
+ const defineIntlayerElements = () => {
17
+ if (typeof customElements === "undefined") return;
18
+ if (!customElements.get("intlayer-content-selector")) customElements.define("intlayer-content-selector", require_ContentSelector.IntlayerContentSelectorElement);
19
+ require_ContentSelectorWrapper.defineIntlayerContentSelectorWrapper();
20
+ require_EditedContent.defineIntlayerEditedContent();
21
+ defineIntlayerEditorElement();
22
+ };
23
+
24
+ //#endregion
25
+ exports.defineIntlayerEditorElement = defineIntlayerEditorElement;
26
+ exports.defineIntlayerElements = defineIntlayerElements;
27
+ //# sourceMappingURL=defineIntlayerElements.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defineIntlayerElements.cjs","names":["IntlayerEditorElement","IntlayerContentSelectorElement"],"sources":["../../../../../../../../../../packages/@intlayer/editor/dist/esm/components/defineIntlayerElements.mjs"],"sourcesContent":["import { IntlayerContentSelectorElement } from \"./ContentSelector.mjs\";\nimport { defineIntlayerContentSelectorWrapper } from \"./ContentSelectorWrapper.mjs\";\nimport { defineIntlayerEditedContent } from \"./EditedContent.mjs\";\nimport { IntlayerEditorElement } from \"./IntlayerEditorElement.mjs\";\n\n//#region src/components/defineIntlayerElements.ts\nconst defineIntlayerEditorElement = () => {\n\tif (typeof customElements === \"undefined\") return;\n\tif (!customElements.get(\"intlayer-editor\")) customElements.define(\"intlayer-editor\", IntlayerEditorElement);\n};\n/**\n* Register all Intlayer custom elements.\n* Call this once at application startup (inside IntlayerEditorProvider or similar).\n* Safe to call multiple times — only registers elements that are not yet defined.\n*/\nconst defineIntlayerElements = () => {\n\tif (typeof customElements === \"undefined\") return;\n\tif (!customElements.get(\"intlayer-content-selector\")) customElements.define(\"intlayer-content-selector\", IntlayerContentSelectorElement);\n\tdefineIntlayerContentSelectorWrapper();\n\tdefineIntlayerEditedContent();\n\tdefineIntlayerEditorElement();\n};\n\n//#endregion\nexport { defineIntlayerEditorElement, defineIntlayerElements };\n//# sourceMappingURL=defineIntlayerElements.mjs.map"],"mappings":";;;;;;AAMA,MAAM,oCAAoC;AACzC,KAAI,OAAO,mBAAmB,YAAa;AAC3C,KAAI,CAAC,eAAe,IAAI,kBAAkB,CAAE,gBAAe,OAAO,mBAAmBA,oDAAsB;;;;;;;AAO5G,MAAM,+BAA+B;AACpC,KAAI,OAAO,mBAAmB,YAAa;AAC3C,KAAI,CAAC,eAAe,IAAI,4BAA4B,CAAE,gBAAe,OAAO,6BAA6BC,uDAA+B;AACxI,sEAAsC;AACtC,oDAA6B;AAC7B,8BAA6B"}
@@ -0,0 +1,80 @@
1
+ const require_compareUrls = require('../compareUrls.cjs');
2
+
3
+ //#region ../../packages/@intlayer/editor/dist/esm/core/CrossFrameMessenger.mjs
4
+ const randomUUID = () => Math.random().toString(36).slice(2);
5
+ /**
6
+ * CrossFrameMessenger manages all cross-frame postMessage communication.
7
+ * It owns a single window message listener and routes incoming messages to
8
+ * type-specific subscribers.
9
+ *
10
+ * Replaces CommunicatorContext + useCrossFrameMessageListener across all frameworks.
11
+ */
12
+ var CrossFrameMessenger = class {
13
+ senderId;
14
+ _config;
15
+ _subscribers = /* @__PURE__ */ new Map();
16
+ _windowHandler = null;
17
+ /** Tracks recently processed messageIds to discard duplicates (same payload sent to multiple origins) */
18
+ _seenMessageIds = /* @__PURE__ */ new Set();
19
+ constructor(config) {
20
+ this._config = config;
21
+ this.senderId = randomUUID();
22
+ }
23
+ /** Start listening for incoming messages on window. */
24
+ start() {
25
+ if (typeof window === "undefined") return;
26
+ if (this._windowHandler) return;
27
+ this._windowHandler = (event) => {
28
+ this._handleMessage(event);
29
+ };
30
+ window.addEventListener("message", this._windowHandler);
31
+ }
32
+ /** Stop listening and clean up. */
33
+ stop() {
34
+ if (this._windowHandler) {
35
+ window.removeEventListener("message", this._windowHandler);
36
+ this._windowHandler = null;
37
+ }
38
+ }
39
+ /** Send a message payload to all configured target origins. */
40
+ send(type, data) {
41
+ const payload = {
42
+ type,
43
+ data,
44
+ senderId: this.senderId,
45
+ messageId: randomUUID()
46
+ };
47
+ for (const origin of this._config.allowedOrigins) if (origin) this._config.postMessageFn(payload, origin);
48
+ }
49
+ /**
50
+ * Subscribe to messages of a given type.
51
+ * Returns an unsubscribe function.
52
+ */
53
+ subscribe(type, handler) {
54
+ if (!this._subscribers.has(type)) this._subscribers.set(type, /* @__PURE__ */ new Set());
55
+ this._subscribers.get(type).add(handler);
56
+ return () => {
57
+ this._subscribers.get(type)?.delete(handler);
58
+ };
59
+ }
60
+ _handleMessage(event) {
61
+ const payload = event.data;
62
+ if (!payload || typeof payload !== "object") return;
63
+ const { type, data, senderId: msgSenderId, messageId } = payload;
64
+ if (!type || typeof type !== "string") return;
65
+ if (msgSenderId === this.senderId) return;
66
+ if (messageId) {
67
+ if (this._seenMessageIds.has(messageId)) return;
68
+ this._seenMessageIds.add(messageId);
69
+ if (this._seenMessageIds.size > 200) this._seenMessageIds.clear();
70
+ }
71
+ const { allowedOrigins } = this._config;
72
+ if (!(!allowedOrigins || allowedOrigins.length === 0 || allowedOrigins.includes("*") || allowedOrigins.filter((url) => Boolean(url) && url !== "").some((url) => require_compareUrls.compareUrls(url, event.origin)))) return;
73
+ const handlers = this._subscribers.get(type);
74
+ if (handlers) for (const handler of handlers) handler(data, msgSenderId);
75
+ }
76
+ };
77
+
78
+ //#endregion
79
+ exports.CrossFrameMessenger = CrossFrameMessenger;
80
+ //# sourceMappingURL=CrossFrameMessenger.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CrossFrameMessenger.cjs","names":["compareUrls"],"sources":["../../../../../../../../../../packages/@intlayer/editor/dist/esm/core/CrossFrameMessenger.mjs"],"sourcesContent":["import { compareUrls } from \"../compareUrls.mjs\";\n\n//#region src/core/CrossFrameMessenger.ts\nconst randomUUID = () => Math.random().toString(36).slice(2);\n/**\n* CrossFrameMessenger manages all cross-frame postMessage communication.\n* It owns a single window message listener and routes incoming messages to\n* type-specific subscribers.\n*\n* Replaces CommunicatorContext + useCrossFrameMessageListener across all frameworks.\n*/\nvar CrossFrameMessenger = class {\n\tsenderId;\n\t_config;\n\t_subscribers = /* @__PURE__ */ new Map();\n\t_windowHandler = null;\n\t/** Tracks recently processed messageIds to discard duplicates (same payload sent to multiple origins) */\n\t_seenMessageIds = /* @__PURE__ */ new Set();\n\tconstructor(config) {\n\t\tthis._config = config;\n\t\tthis.senderId = randomUUID();\n\t}\n\t/** Start listening for incoming messages on window. */\n\tstart() {\n\t\tif (typeof window === \"undefined\") return;\n\t\tif (this._windowHandler) return;\n\t\tthis._windowHandler = (event) => {\n\t\t\tthis._handleMessage(event);\n\t\t};\n\t\twindow.addEventListener(\"message\", this._windowHandler);\n\t}\n\t/** Stop listening and clean up. */\n\tstop() {\n\t\tif (this._windowHandler) {\n\t\t\twindow.removeEventListener(\"message\", this._windowHandler);\n\t\t\tthis._windowHandler = null;\n\t\t}\n\t}\n\t/** Send a message payload to all configured target origins. */\n\tsend(type, data) {\n\t\tconst payload = {\n\t\t\ttype,\n\t\t\tdata,\n\t\t\tsenderId: this.senderId,\n\t\t\tmessageId: randomUUID()\n\t\t};\n\t\tfor (const origin of this._config.allowedOrigins) if (origin) this._config.postMessageFn(payload, origin);\n\t}\n\t/**\n\t* Subscribe to messages of a given type.\n\t* Returns an unsubscribe function.\n\t*/\n\tsubscribe(type, handler) {\n\t\tif (!this._subscribers.has(type)) this._subscribers.set(type, /* @__PURE__ */ new Set());\n\t\tthis._subscribers.get(type).add(handler);\n\t\treturn () => {\n\t\t\tthis._subscribers.get(type)?.delete(handler);\n\t\t};\n\t}\n\t_handleMessage(event) {\n\t\tconst payload = event.data;\n\t\tif (!payload || typeof payload !== \"object\") return;\n\t\tconst { type, data, senderId: msgSenderId, messageId } = payload;\n\t\tif (!type || typeof type !== \"string\") return;\n\t\tif (msgSenderId === this.senderId) return;\n\t\tif (messageId) {\n\t\t\tif (this._seenMessageIds.has(messageId)) return;\n\t\t\tthis._seenMessageIds.add(messageId);\n\t\t\tif (this._seenMessageIds.size > 200) this._seenMessageIds.clear();\n\t\t}\n\t\tconst { allowedOrigins } = this._config;\n\t\tif (!(!allowedOrigins || allowedOrigins.length === 0 || allowedOrigins.includes(\"*\") || allowedOrigins.filter((url) => Boolean(url) && url !== \"\").some((url) => compareUrls(url, event.origin)))) return;\n\t\tconst handlers = this._subscribers.get(type);\n\t\tif (handlers) for (const handler of handlers) handler(data, msgSenderId);\n\t}\n};\n\n//#endregion\nexport { CrossFrameMessenger };\n//# sourceMappingURL=CrossFrameMessenger.mjs.map"],"mappings":";;;AAGA,MAAM,mBAAmB,KAAK,QAAQ,CAAC,SAAS,GAAG,CAAC,MAAM,EAAE;;;;;;;;AAQ5D,IAAI,sBAAsB,MAAM;CAC/B;CACA;CACA,+BAA+B,IAAI,KAAK;CACxC,iBAAiB;;CAEjB,kCAAkC,IAAI,KAAK;CAC3C,YAAY,QAAQ;AACnB,OAAK,UAAU;AACf,OAAK,WAAW,YAAY;;;CAG7B,QAAQ;AACP,MAAI,OAAO,WAAW,YAAa;AACnC,MAAI,KAAK,eAAgB;AACzB,OAAK,kBAAkB,UAAU;AAChC,QAAK,eAAe,MAAM;;AAE3B,SAAO,iBAAiB,WAAW,KAAK,eAAe;;;CAGxD,OAAO;AACN,MAAI,KAAK,gBAAgB;AACxB,UAAO,oBAAoB,WAAW,KAAK,eAAe;AAC1D,QAAK,iBAAiB;;;;CAIxB,KAAK,MAAM,MAAM;EAChB,MAAM,UAAU;GACf;GACA;GACA,UAAU,KAAK;GACf,WAAW,YAAY;GACvB;AACD,OAAK,MAAM,UAAU,KAAK,QAAQ,eAAgB,KAAI,OAAQ,MAAK,QAAQ,cAAc,SAAS,OAAO;;;;;;CAM1G,UAAU,MAAM,SAAS;AACxB,MAAI,CAAC,KAAK,aAAa,IAAI,KAAK,CAAE,MAAK,aAAa,IAAI,sBAAsB,IAAI,KAAK,CAAC;AACxF,OAAK,aAAa,IAAI,KAAK,CAAC,IAAI,QAAQ;AACxC,eAAa;AACZ,QAAK,aAAa,IAAI,KAAK,EAAE,OAAO,QAAQ;;;CAG9C,eAAe,OAAO;EACrB,MAAM,UAAU,MAAM;AACtB,MAAI,CAAC,WAAW,OAAO,YAAY,SAAU;EAC7C,MAAM,EAAE,MAAM,MAAM,UAAU,aAAa,cAAc;AACzD,MAAI,CAAC,QAAQ,OAAO,SAAS,SAAU;AACvC,MAAI,gBAAgB,KAAK,SAAU;AACnC,MAAI,WAAW;AACd,OAAI,KAAK,gBAAgB,IAAI,UAAU,CAAE;AACzC,QAAK,gBAAgB,IAAI,UAAU;AACnC,OAAI,KAAK,gBAAgB,OAAO,IAAK,MAAK,gBAAgB,OAAO;;EAElE,MAAM,EAAE,mBAAmB,KAAK;AAChC,MAAI,EAAE,CAAC,kBAAkB,eAAe,WAAW,KAAK,eAAe,SAAS,IAAI,IAAI,eAAe,QAAQ,QAAQ,QAAQ,IAAI,IAAI,QAAQ,GAAG,CAAC,MAAM,QAAQA,gCAAY,KAAK,MAAM,OAAO,CAAC,EAAG;EACnM,MAAM,WAAW,KAAK,aAAa,IAAI,KAAK;AAC5C,MAAI,SAAU,MAAK,MAAM,WAAW,SAAU,SAAQ,MAAM,YAAY"}
@@ -0,0 +1,75 @@
1
+
2
+ //#region ../../packages/@intlayer/editor/dist/esm/core/CrossFrameStateManager.mjs
3
+ /**
4
+ * CrossFrameStateManager synchronizes a single named value across frames using
5
+ * the postMessage API via CrossFrameMessenger.
6
+ *
7
+ * Protocol:
8
+ * `{key}/post` — broadcast a new value
9
+ * `{key}/get` — request the current value from other frames
10
+ *
11
+ * Replaces useCrossFrameState across all frameworks.
12
+ *
13
+ * @fires change — CustomEvent<T> dispatched whenever the value changes (local set or received)
14
+ */
15
+ var CrossFrameStateManager = class extends EventTarget {
16
+ _value;
17
+ _key;
18
+ _messenger;
19
+ _options;
20
+ _unsubscribers = [];
21
+ constructor(key, messenger, options = {}) {
22
+ super();
23
+ this._key = key;
24
+ this._messenger = messenger;
25
+ this._options = {
26
+ emit: options.emit ?? true,
27
+ receive: options.receive ?? true
28
+ };
29
+ if (options.initialValue !== void 0) this._value = options.initialValue;
30
+ }
31
+ get value() {
32
+ return this._value;
33
+ }
34
+ /** Update the value locally and broadcast it to other frames if emit is enabled. */
35
+ set(newValue) {
36
+ this._value = newValue;
37
+ this.dispatchEvent(new CustomEvent("change", { detail: newValue }));
38
+ if (this._options.emit) this._messenger.send(`${this._key}/post`, newValue);
39
+ }
40
+ /**
41
+ * Start listening for incoming state updates and responding to /get requests.
42
+ * If receive=true and no initial value is set, sends a /get to request the current value.
43
+ */
44
+ start() {
45
+ if (this._options.receive) {
46
+ const unsub = this._messenger.subscribe(`${this._key}/post`, (data) => {
47
+ this._value = data;
48
+ this.dispatchEvent(new CustomEvent("change", { detail: data }));
49
+ });
50
+ this._unsubscribers.push(unsub);
51
+ }
52
+ if (this._options.emit) {
53
+ const unsub = this._messenger.subscribe(`${this._key}/get`, (_, originSenderId) => {
54
+ if (originSenderId === this._messenger.senderId) return;
55
+ if (this._value === void 0) return;
56
+ this._messenger.send(`${this._key}/post`, this._value);
57
+ });
58
+ this._unsubscribers.push(unsub);
59
+ }
60
+ if (this._options.receive && this._value === void 0) this._messenger.send(`${this._key}/get`);
61
+ }
62
+ /** Stop all listeners. */
63
+ stop() {
64
+ for (const unsub of this._unsubscribers) unsub();
65
+ this._unsubscribers.length = 0;
66
+ }
67
+ /** Broadcast the current value to all frames (useful after reconnect). */
68
+ postCurrentValue() {
69
+ if (this._value !== void 0) this._messenger.send(`${this._key}/post`, this._value);
70
+ }
71
+ };
72
+
73
+ //#endregion
74
+ exports.CrossFrameStateManager = CrossFrameStateManager;
75
+ //# sourceMappingURL=CrossFrameStateManager.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CrossFrameStateManager.cjs","names":[],"sources":["../../../../../../../../../../packages/@intlayer/editor/dist/esm/core/CrossFrameStateManager.mjs"],"sourcesContent":["//#region src/core/CrossFrameStateManager.ts\n/**\n* CrossFrameStateManager synchronizes a single named value across frames using\n* the postMessage API via CrossFrameMessenger.\n*\n* Protocol:\n* `{key}/post` — broadcast a new value\n* `{key}/get` — request the current value from other frames\n*\n* Replaces useCrossFrameState across all frameworks.\n*\n* @fires change — CustomEvent<T> dispatched whenever the value changes (local set or received)\n*/\nvar CrossFrameStateManager = class extends EventTarget {\n\t_value;\n\t_key;\n\t_messenger;\n\t_options;\n\t_unsubscribers = [];\n\tconstructor(key, messenger, options = {}) {\n\t\tsuper();\n\t\tthis._key = key;\n\t\tthis._messenger = messenger;\n\t\tthis._options = {\n\t\t\temit: options.emit ?? true,\n\t\t\treceive: options.receive ?? true\n\t\t};\n\t\tif (options.initialValue !== void 0) this._value = options.initialValue;\n\t}\n\tget value() {\n\t\treturn this._value;\n\t}\n\t/** Update the value locally and broadcast it to other frames if emit is enabled. */\n\tset(newValue) {\n\t\tthis._value = newValue;\n\t\tthis.dispatchEvent(new CustomEvent(\"change\", { detail: newValue }));\n\t\tif (this._options.emit) this._messenger.send(`${this._key}/post`, newValue);\n\t}\n\t/**\n\t* Start listening for incoming state updates and responding to /get requests.\n\t* If receive=true and no initial value is set, sends a /get to request the current value.\n\t*/\n\tstart() {\n\t\tif (this._options.receive) {\n\t\t\tconst unsub = this._messenger.subscribe(`${this._key}/post`, (data) => {\n\t\t\t\tthis._value = data;\n\t\t\t\tthis.dispatchEvent(new CustomEvent(\"change\", { detail: data }));\n\t\t\t});\n\t\t\tthis._unsubscribers.push(unsub);\n\t\t}\n\t\tif (this._options.emit) {\n\t\t\tconst unsub = this._messenger.subscribe(`${this._key}/get`, (_, originSenderId) => {\n\t\t\t\tif (originSenderId === this._messenger.senderId) return;\n\t\t\t\tif (this._value === void 0) return;\n\t\t\t\tthis._messenger.send(`${this._key}/post`, this._value);\n\t\t\t});\n\t\t\tthis._unsubscribers.push(unsub);\n\t\t}\n\t\tif (this._options.receive && this._value === void 0) this._messenger.send(`${this._key}/get`);\n\t}\n\t/** Stop all listeners. */\n\tstop() {\n\t\tfor (const unsub of this._unsubscribers) unsub();\n\t\tthis._unsubscribers.length = 0;\n\t}\n\t/** Broadcast the current value to all frames (useful after reconnect). */\n\tpostCurrentValue() {\n\t\tif (this._value !== void 0) this._messenger.send(`${this._key}/post`, this._value);\n\t}\n};\n\n//#endregion\nexport { CrossFrameStateManager };\n//# sourceMappingURL=CrossFrameStateManager.mjs.map"],"mappings":";;;;;;;;;;;;;;AAaA,IAAI,yBAAyB,cAAc,YAAY;CACtD;CACA;CACA;CACA;CACA,iBAAiB,EAAE;CACnB,YAAY,KAAK,WAAW,UAAU,EAAE,EAAE;AACzC,SAAO;AACP,OAAK,OAAO;AACZ,OAAK,aAAa;AAClB,OAAK,WAAW;GACf,MAAM,QAAQ,QAAQ;GACtB,SAAS,QAAQ,WAAW;GAC5B;AACD,MAAI,QAAQ,iBAAiB,KAAK,EAAG,MAAK,SAAS,QAAQ;;CAE5D,IAAI,QAAQ;AACX,SAAO,KAAK;;;CAGb,IAAI,UAAU;AACb,OAAK,SAAS;AACd,OAAK,cAAc,IAAI,YAAY,UAAU,EAAE,QAAQ,UAAU,CAAC,CAAC;AACnE,MAAI,KAAK,SAAS,KAAM,MAAK,WAAW,KAAK,GAAG,KAAK,KAAK,QAAQ,SAAS;;;;;;CAM5E,QAAQ;AACP,MAAI,KAAK,SAAS,SAAS;GAC1B,MAAM,QAAQ,KAAK,WAAW,UAAU,GAAG,KAAK,KAAK,SAAS,SAAS;AACtE,SAAK,SAAS;AACd,SAAK,cAAc,IAAI,YAAY,UAAU,EAAE,QAAQ,MAAM,CAAC,CAAC;KAC9D;AACF,QAAK,eAAe,KAAK,MAAM;;AAEhC,MAAI,KAAK,SAAS,MAAM;GACvB,MAAM,QAAQ,KAAK,WAAW,UAAU,GAAG,KAAK,KAAK,QAAQ,GAAG,mBAAmB;AAClF,QAAI,mBAAmB,KAAK,WAAW,SAAU;AACjD,QAAI,KAAK,WAAW,KAAK,EAAG;AAC5B,SAAK,WAAW,KAAK,GAAG,KAAK,KAAK,QAAQ,KAAK,OAAO;KACrD;AACF,QAAK,eAAe,KAAK,MAAM;;AAEhC,MAAI,KAAK,SAAS,WAAW,KAAK,WAAW,KAAK,EAAG,MAAK,WAAW,KAAK,GAAG,KAAK,KAAK,MAAM;;;CAG9F,OAAO;AACN,OAAK,MAAM,SAAS,KAAK,eAAgB,QAAO;AAChD,OAAK,eAAe,SAAS;;;CAG9B,mBAAmB;AAClB,MAAI,KAAK,WAAW,KAAK,EAAG,MAAK,WAAW,KAAK,GAAG,KAAK,KAAK,QAAQ,KAAK,OAAO"}