@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.
- package/README.md +330 -0
- package/dist/cjs/_virtual/_rolldown/runtime.cjs +29 -0
- package/dist/cjs/appWithTranslation.cjs +31 -0
- package/dist/cjs/appWithTranslation.cjs.map +1 -0
- package/dist/cjs/index.cjs +69 -0
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/cjs/packages/@intlayer/editor/dist/esm/compareUrls.cjs +39 -0
- package/dist/cjs/packages/@intlayer/editor/dist/esm/compareUrls.cjs.map +1 -0
- package/dist/cjs/packages/@intlayer/editor/dist/esm/components/ContentSelector.cjs +161 -0
- package/dist/cjs/packages/@intlayer/editor/dist/esm/components/ContentSelector.cjs.map +1 -0
- package/dist/cjs/packages/@intlayer/editor/dist/esm/components/ContentSelectorWrapper.cjs +269 -0
- package/dist/cjs/packages/@intlayer/editor/dist/esm/components/ContentSelectorWrapper.cjs.map +1 -0
- package/dist/cjs/packages/@intlayer/editor/dist/esm/components/EditedContent.cjs +161 -0
- package/dist/cjs/packages/@intlayer/editor/dist/esm/components/EditedContent.cjs.map +1 -0
- package/dist/cjs/packages/@intlayer/editor/dist/esm/components/IntlayerEditorElement.cjs +88 -0
- package/dist/cjs/packages/@intlayer/editor/dist/esm/components/IntlayerEditorElement.cjs.map +1 -0
- package/dist/cjs/packages/@intlayer/editor/dist/esm/components/defineIntlayerElements.cjs +27 -0
- package/dist/cjs/packages/@intlayer/editor/dist/esm/components/defineIntlayerElements.cjs.map +1 -0
- package/dist/cjs/packages/@intlayer/editor/dist/esm/core/CrossFrameMessenger.cjs +80 -0
- package/dist/cjs/packages/@intlayer/editor/dist/esm/core/CrossFrameMessenger.cjs.map +1 -0
- package/dist/cjs/packages/@intlayer/editor/dist/esm/core/CrossFrameStateManager.cjs +75 -0
- package/dist/cjs/packages/@intlayer/editor/dist/esm/core/CrossFrameStateManager.cjs.map +1 -0
- package/dist/cjs/packages/@intlayer/editor/dist/esm/core/EditorStateManager.cjs +383 -0
- package/dist/cjs/packages/@intlayer/editor/dist/esm/core/EditorStateManager.cjs.map +1 -0
- package/dist/cjs/packages/@intlayer/editor/dist/esm/core/IframeClickInterceptor.cjs +45 -0
- package/dist/cjs/packages/@intlayer/editor/dist/esm/core/IframeClickInterceptor.cjs.map +1 -0
- package/dist/cjs/packages/@intlayer/editor/dist/esm/core/UrlStateManager.cjs +59 -0
- package/dist/cjs/packages/@intlayer/editor/dist/esm/core/UrlStateManager.cjs.map +1 -0
- package/dist/cjs/packages/@intlayer/editor/dist/esm/core/editedContentBus.cjs +36 -0
- package/dist/cjs/packages/@intlayer/editor/dist/esm/core/editedContentBus.cjs.map +1 -0
- package/dist/cjs/packages/@intlayer/editor/dist/esm/core/focusedContentBus.cjs +42 -0
- package/dist/cjs/packages/@intlayer/editor/dist/esm/core/focusedContentBus.cjs.map +1 -0
- package/dist/cjs/packages/@intlayer/editor/dist/esm/core/globalManager.cjs +82 -0
- package/dist/cjs/packages/@intlayer/editor/dist/esm/core/globalManager.cjs.map +1 -0
- package/dist/cjs/packages/@intlayer/editor/dist/esm/core/initEditorClient.cjs +55 -0
- package/dist/cjs/packages/@intlayer/editor/dist/esm/core/initEditorClient.cjs.map +1 -0
- package/dist/cjs/packages/@intlayer/editor/dist/esm/index.cjs +19 -0
- package/dist/cjs/packages/@intlayer/editor/dist/esm/isEnabled.cjs +9 -0
- package/dist/cjs/packages/@intlayer/editor/dist/esm/isEnabled.cjs.map +1 -0
- package/dist/cjs/packages/@intlayer/editor/dist/esm/mergeIframeClick.cjs +22 -0
- package/dist/cjs/packages/@intlayer/editor/dist/esm/mergeIframeClick.cjs.map +1 -0
- package/dist/cjs/packages/@intlayer/unmerged-dictionaries-entry/dist/esm/index.cjs +32 -0
- package/dist/cjs/packages/@intlayer/unmerged-dictionaries-entry/dist/esm/index.cjs.map +1 -0
- package/dist/cjs/packages/react-intlayer/dist/esm/client/IntlayerContext.cjs +25 -0
- package/dist/cjs/packages/react-intlayer/dist/esm/client/IntlayerContext.cjs.map +1 -0
- package/dist/cjs/packages/react-intlayer/dist/esm/client/IntlayerProvider.cjs +78 -0
- package/dist/cjs/packages/react-intlayer/dist/esm/client/IntlayerProvider.cjs.map +1 -0
- package/dist/cjs/packages/react-intlayer/dist/esm/client/useLocaleStorage.cjs +24 -0
- package/dist/cjs/packages/react-intlayer/dist/esm/client/useLocaleStorage.cjs.map +1 -0
- package/dist/cjs/packages/react-intlayer/dist/esm/editor/EditorProvider.cjs +11 -0
- package/dist/cjs/packages/react-intlayer/dist/esm/editor/EditorProvider.cjs.map +1 -0
- package/dist/cjs/packages/react-intlayer/dist/esm/editor/useEditor.cjs +39 -0
- package/dist/cjs/packages/react-intlayer/dist/esm/editor/useEditor.cjs.map +1 -0
- package/dist/cjs/plugin/index.cjs +170 -0
- package/dist/cjs/plugin/index.cjs.map +1 -0
- package/dist/cjs/serverSideTranslations.cjs +46 -0
- package/dist/cjs/serverSideTranslations.cjs.map +1 -0
- package/dist/esm/_virtual/_rolldown/runtime.mjs +8 -0
- package/dist/esm/appWithTranslation.mjs +29 -0
- package/dist/esm/appWithTranslation.mjs.map +1 -0
- package/dist/esm/index.mjs +11 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/packages/@intlayer/editor/dist/esm/compareUrls.mjs +38 -0
- package/dist/esm/packages/@intlayer/editor/dist/esm/compareUrls.mjs.map +1 -0
- package/dist/esm/packages/@intlayer/editor/dist/esm/components/ContentSelector.mjs +160 -0
- package/dist/esm/packages/@intlayer/editor/dist/esm/components/ContentSelector.mjs.map +1 -0
- package/dist/esm/packages/@intlayer/editor/dist/esm/components/ContentSelectorWrapper.mjs +266 -0
- package/dist/esm/packages/@intlayer/editor/dist/esm/components/ContentSelectorWrapper.mjs.map +1 -0
- package/dist/esm/packages/@intlayer/editor/dist/esm/components/EditedContent.mjs +159 -0
- package/dist/esm/packages/@intlayer/editor/dist/esm/components/EditedContent.mjs.map +1 -0
- package/dist/esm/packages/@intlayer/editor/dist/esm/components/IntlayerEditorElement.mjs +88 -0
- package/dist/esm/packages/@intlayer/editor/dist/esm/components/IntlayerEditorElement.mjs.map +1 -0
- package/dist/esm/packages/@intlayer/editor/dist/esm/components/defineIntlayerElements.mjs +26 -0
- package/dist/esm/packages/@intlayer/editor/dist/esm/components/defineIntlayerElements.mjs.map +1 -0
- package/dist/esm/packages/@intlayer/editor/dist/esm/core/CrossFrameMessenger.mjs +80 -0
- package/dist/esm/packages/@intlayer/editor/dist/esm/core/CrossFrameMessenger.mjs.map +1 -0
- package/dist/esm/packages/@intlayer/editor/dist/esm/core/CrossFrameStateManager.mjs +74 -0
- package/dist/esm/packages/@intlayer/editor/dist/esm/core/CrossFrameStateManager.mjs.map +1 -0
- package/dist/esm/packages/@intlayer/editor/dist/esm/core/EditorStateManager.mjs +381 -0
- package/dist/esm/packages/@intlayer/editor/dist/esm/core/EditorStateManager.mjs.map +1 -0
- package/dist/esm/packages/@intlayer/editor/dist/esm/core/IframeClickInterceptor.mjs +45 -0
- package/dist/esm/packages/@intlayer/editor/dist/esm/core/IframeClickInterceptor.mjs.map +1 -0
- package/dist/esm/packages/@intlayer/editor/dist/esm/core/UrlStateManager.mjs +58 -0
- package/dist/esm/packages/@intlayer/editor/dist/esm/core/UrlStateManager.mjs.map +1 -0
- package/dist/esm/packages/@intlayer/editor/dist/esm/core/editedContentBus.mjs +33 -0
- package/dist/esm/packages/@intlayer/editor/dist/esm/core/editedContentBus.mjs.map +1 -0
- package/dist/esm/packages/@intlayer/editor/dist/esm/core/focusedContentBus.mjs +39 -0
- package/dist/esm/packages/@intlayer/editor/dist/esm/core/focusedContentBus.mjs.map +1 -0
- package/dist/esm/packages/@intlayer/editor/dist/esm/core/globalManager.mjs +79 -0
- package/dist/esm/packages/@intlayer/editor/dist/esm/core/globalManager.mjs.map +1 -0
- package/dist/esm/packages/@intlayer/editor/dist/esm/core/initEditorClient.mjs +52 -0
- package/dist/esm/packages/@intlayer/editor/dist/esm/core/initEditorClient.mjs.map +1 -0
- package/dist/esm/packages/@intlayer/editor/dist/esm/index.mjs +18 -0
- package/dist/esm/packages/@intlayer/editor/dist/esm/isEnabled.mjs +8 -0
- package/dist/esm/packages/@intlayer/editor/dist/esm/isEnabled.mjs.map +1 -0
- package/dist/esm/packages/@intlayer/editor/dist/esm/mergeIframeClick.mjs +21 -0
- package/dist/esm/packages/@intlayer/editor/dist/esm/mergeIframeClick.mjs.map +1 -0
- package/dist/esm/packages/@intlayer/unmerged-dictionaries-entry/dist/esm/index.browser.mjs +6 -0
- package/dist/esm/packages/@intlayer/unmerged-dictionaries-entry/dist/esm/index.browser.mjs.map +1 -0
- package/dist/esm/packages/react-intlayer/dist/esm/client/IntlayerContext.mjs +23 -0
- package/dist/esm/packages/react-intlayer/dist/esm/client/IntlayerContext.mjs.map +1 -0
- package/dist/esm/packages/react-intlayer/dist/esm/client/IntlayerProvider.mjs +77 -0
- package/dist/esm/packages/react-intlayer/dist/esm/client/IntlayerProvider.mjs.map +1 -0
- package/dist/esm/packages/react-intlayer/dist/esm/client/useLocaleStorage.mjs +22 -0
- package/dist/esm/packages/react-intlayer/dist/esm/client/useLocaleStorage.mjs.map +1 -0
- package/dist/esm/packages/react-intlayer/dist/esm/editor/EditorProvider.mjs +11 -0
- package/dist/esm/packages/react-intlayer/dist/esm/editor/EditorProvider.mjs.map +1 -0
- package/dist/esm/packages/react-intlayer/dist/esm/editor/useEditor.mjs +38 -0
- package/dist/esm/packages/react-intlayer/dist/esm/editor/useEditor.mjs.map +1 -0
- package/dist/esm/plugin/index.mjs +165 -0
- package/dist/esm/plugin/index.mjs.map +1 -0
- package/dist/esm/serverSideTranslations.mjs +44 -0
- package/dist/esm/serverSideTranslations.mjs.map +1 -0
- package/dist/types/appWithTranslation.d.ts +18 -0
- package/dist/types/appWithTranslation.d.ts.map +1 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/plugin/index.d.ts +23 -0
- package/dist/types/plugin/index.d.ts.map +1 -0
- package/dist/types/serverSideTranslations.d.ts +33 -0
- package/dist/types/serverSideTranslations.d.ts.map +1 -0
- package/package.json +116 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
|
|
2
|
+
//#region ../../packages/@intlayer/editor/dist/esm/core/globalManager.mjs
|
|
3
|
+
/**
|
|
4
|
+
* Keys on window used to share the singleton across multiple module instances.
|
|
5
|
+
* When bundlers include @intlayer/editor more than once (e.g. framework package +
|
|
6
|
+
* app), each copy has its own module-level variables. Using window ensures they
|
|
7
|
+
* all read/write the same manager and event-target.
|
|
8
|
+
*/
|
|
9
|
+
const MANAGER_KEY = "__intlayer_editor_manager__";
|
|
10
|
+
const EVENTS_KEY = "__intlayer_editor_manager_events__";
|
|
11
|
+
/**
|
|
12
|
+
* Retrieves or creates a shared EventTarget for global editor manager events.
|
|
13
|
+
* In browser environments, stores the EventTarget on window to ensure sharing
|
|
14
|
+
* across multiple module instances. In SSR environments, creates a fresh
|
|
15
|
+
* EventTarget (no sharing needed on server-side).
|
|
16
|
+
*
|
|
17
|
+
* @returns The shared EventTarget instance for dispatching manager change events
|
|
18
|
+
* @private
|
|
19
|
+
*/
|
|
20
|
+
const getEventTarget = () => {
|
|
21
|
+
if (typeof window === "undefined") return new EventTarget();
|
|
22
|
+
const windowGlobals = window;
|
|
23
|
+
if (!windowGlobals[EVENTS_KEY]) windowGlobals[EVENTS_KEY] = new EventTarget();
|
|
24
|
+
return windowGlobals[EVENTS_KEY];
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Retrieves the global editor state manager instance.
|
|
28
|
+
* Returns null if no manager has been set or in SSR environments where
|
|
29
|
+
* window is undefined.
|
|
30
|
+
*
|
|
31
|
+
* @returns The global EditorStateManager instance or null if not set
|
|
32
|
+
*/
|
|
33
|
+
const getGlobalEditorManager = () => {
|
|
34
|
+
if (typeof window === "undefined") return null;
|
|
35
|
+
return window[MANAGER_KEY] ?? null;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Sets the global editor state manager instance and notifies all listeners
|
|
39
|
+
* of the change through a CustomEvent.
|
|
40
|
+
*
|
|
41
|
+
* @param manager - The EditorStateManager instance to set globally, or null to clear it
|
|
42
|
+
*/
|
|
43
|
+
const setGlobalEditorManager = (manager) => {
|
|
44
|
+
if (typeof window !== "undefined") {
|
|
45
|
+
const windowGlobals = window;
|
|
46
|
+
windowGlobals[MANAGER_KEY] = manager;
|
|
47
|
+
}
|
|
48
|
+
getEventTarget().dispatchEvent(new CustomEvent("change", { detail: manager }));
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Registers a callback function to be invoked whenever the global editor
|
|
52
|
+
* manager changes. Useful for reactive updates across the application.
|
|
53
|
+
*
|
|
54
|
+
* @param changeCallback - Function to invoke with the new manager state whenever it changes
|
|
55
|
+
* @returns An unsubscribe function that removes the listener when called
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* const unsubscribe = onGlobalEditorManagerChange((manager) => {
|
|
60
|
+
* console.log('Manager updated:', manager);
|
|
61
|
+
* });
|
|
62
|
+
*
|
|
63
|
+
* // Later, clean up the listener
|
|
64
|
+
* unsubscribe();
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
const onGlobalEditorManagerChange = (changeCallback) => {
|
|
68
|
+
const eventTarget = getEventTarget();
|
|
69
|
+
const eventHandler = (event) => {
|
|
70
|
+
changeCallback(event.detail);
|
|
71
|
+
};
|
|
72
|
+
eventTarget.addEventListener("change", eventHandler);
|
|
73
|
+
return () => {
|
|
74
|
+
eventTarget.removeEventListener("change", eventHandler);
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
//#endregion
|
|
79
|
+
exports.getGlobalEditorManager = getGlobalEditorManager;
|
|
80
|
+
exports.onGlobalEditorManagerChange = onGlobalEditorManagerChange;
|
|
81
|
+
exports.setGlobalEditorManager = setGlobalEditorManager;
|
|
82
|
+
//# sourceMappingURL=globalManager.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"globalManager.cjs","names":[],"sources":["../../../../../../../../../../packages/@intlayer/editor/dist/esm/core/globalManager.mjs"],"sourcesContent":["//#region src/core/globalManager.ts\n/**\n* Keys on window used to share the singleton across multiple module instances.\n* When bundlers include @intlayer/editor more than once (e.g. framework package +\n* app), each copy has its own module-level variables. Using window ensures they\n* all read/write the same manager and event-target.\n*/\nconst MANAGER_KEY = \"__intlayer_editor_manager__\";\nconst EVENTS_KEY = \"__intlayer_editor_manager_events__\";\n/**\n* Retrieves or creates a shared EventTarget for global editor manager events.\n* In browser environments, stores the EventTarget on window to ensure sharing\n* across multiple module instances. In SSR environments, creates a fresh\n* EventTarget (no sharing needed on server-side).\n*\n* @returns The shared EventTarget instance for dispatching manager change events\n* @private\n*/\nconst getEventTarget = () => {\n\tif (typeof window === \"undefined\") return new EventTarget();\n\tconst windowGlobals = window;\n\tif (!windowGlobals[EVENTS_KEY]) windowGlobals[EVENTS_KEY] = new EventTarget();\n\treturn windowGlobals[EVENTS_KEY];\n};\n/**\n* Retrieves the global editor state manager instance.\n* Returns null if no manager has been set or in SSR environments where\n* window is undefined.\n*\n* @returns The global EditorStateManager instance or null if not set\n*/\nconst getGlobalEditorManager = () => {\n\tif (typeof window === \"undefined\") return null;\n\treturn window[MANAGER_KEY] ?? null;\n};\n/**\n* Sets the global editor state manager instance and notifies all listeners\n* of the change through a CustomEvent.\n*\n* @param manager - The EditorStateManager instance to set globally, or null to clear it\n*/\nconst setGlobalEditorManager = (manager) => {\n\tif (typeof window !== \"undefined\") {\n\t\tconst windowGlobals = window;\n\t\twindowGlobals[MANAGER_KEY] = manager;\n\t}\n\tgetEventTarget().dispatchEvent(new CustomEvent(\"change\", { detail: manager }));\n};\n/**\n* Registers a callback function to be invoked whenever the global editor\n* manager changes. Useful for reactive updates across the application.\n*\n* @param changeCallback - Function to invoke with the new manager state whenever it changes\n* @returns An unsubscribe function that removes the listener when called\n*\n* @example\n* ```typescript\n* const unsubscribe = onGlobalEditorManagerChange((manager) => {\n* console.log('Manager updated:', manager);\n* });\n*\n* // Later, clean up the listener\n* unsubscribe();\n* ```\n*/\nconst onGlobalEditorManagerChange = (changeCallback) => {\n\tconst eventTarget = getEventTarget();\n\tconst eventHandler = (event) => {\n\t\tchangeCallback(event.detail);\n\t};\n\teventTarget.addEventListener(\"change\", eventHandler);\n\treturn () => {\n\t\teventTarget.removeEventListener(\"change\", eventHandler);\n\t};\n};\n\n//#endregion\nexport { getGlobalEditorManager, onGlobalEditorManagerChange, setGlobalEditorManager };\n//# sourceMappingURL=globalManager.mjs.map"],"mappings":";;;;;;;;AAOA,MAAM,cAAc;AACpB,MAAM,aAAa;;;;;;;;;;AAUnB,MAAM,uBAAuB;AAC5B,KAAI,OAAO,WAAW,YAAa,QAAO,IAAI,aAAa;CAC3D,MAAM,gBAAgB;AACtB,KAAI,CAAC,cAAc,YAAa,eAAc,cAAc,IAAI,aAAa;AAC7E,QAAO,cAAc;;;;;;;;;AAStB,MAAM,+BAA+B;AACpC,KAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,QAAO,OAAO,gBAAgB;;;;;;;;AAQ/B,MAAM,0BAA0B,YAAY;AAC3C,KAAI,OAAO,WAAW,aAAa;EAClC,MAAM,gBAAgB;AACtB,gBAAc,eAAe;;AAE9B,iBAAgB,CAAC,cAAc,IAAI,YAAY,UAAU,EAAE,QAAQ,SAAS,CAAC,CAAC;;;;;;;;;;;;;;;;;;;AAmB/E,MAAM,+BAA+B,mBAAmB;CACvD,MAAM,cAAc,gBAAgB;CACpC,MAAM,gBAAgB,UAAU;AAC/B,iBAAe,MAAM,OAAO;;AAE7B,aAAY,iBAAiB,UAAU,aAAa;AACpD,cAAa;AACZ,cAAY,oBAAoB,UAAU,aAAa"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
const require_runtime = require('../../../../../../_virtual/_rolldown/runtime.cjs');
|
|
2
|
+
const require_globalManager = require('./globalManager.cjs');
|
|
3
|
+
const require_EditorStateManager = require('./EditorStateManager.cjs');
|
|
4
|
+
const require_defineIntlayerElements = require('../components/defineIntlayerElements.cjs');
|
|
5
|
+
let _intlayer_config_built = require("@intlayer/config/built");
|
|
6
|
+
|
|
7
|
+
//#region ../../packages/@intlayer/editor/dist/esm/core/initEditorClient.mjs
|
|
8
|
+
const buildClientMessengerConfig = () => {
|
|
9
|
+
return {
|
|
10
|
+
allowedOrigins: [_intlayer_config_built.editor?.editorURL, _intlayer_config_built.editor?.cmsURL].filter(Boolean),
|
|
11
|
+
postMessageFn: (payload, origin) => {
|
|
12
|
+
if (typeof window === "undefined") return;
|
|
13
|
+
if (!(window.self !== window.top)) return;
|
|
14
|
+
window.parent?.postMessage(payload, origin);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
/** Reference count — tracks how many providers have called initEditorClient. */
|
|
19
|
+
let _clientRefCount = 0;
|
|
20
|
+
/**
|
|
21
|
+
* Initialize the Intlayer editor client singleton.
|
|
22
|
+
* Safe to call multiple times — returns the existing manager if already initialized.
|
|
23
|
+
* Increments a reference counter so nested providers don't destroy the manager
|
|
24
|
+
* prematurely when the inner provider unmounts.
|
|
25
|
+
*/
|
|
26
|
+
const initEditorClient = () => {
|
|
27
|
+
_clientRefCount++;
|
|
28
|
+
const existing = require_globalManager.getGlobalEditorManager();
|
|
29
|
+
if (existing) return existing;
|
|
30
|
+
const manager = new require_EditorStateManager.EditorStateManager({
|
|
31
|
+
mode: "client",
|
|
32
|
+
messenger: buildClientMessengerConfig(),
|
|
33
|
+
configuration: { editor: _intlayer_config_built.editor }
|
|
34
|
+
});
|
|
35
|
+
require_globalManager.setGlobalEditorManager(manager);
|
|
36
|
+
require_defineIntlayerElements.defineIntlayerElements();
|
|
37
|
+
manager.start();
|
|
38
|
+
return manager;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Decrement the reference count and stop the global editor client singleton
|
|
42
|
+
* only when the last provider unmounts.
|
|
43
|
+
*/
|
|
44
|
+
const stopEditorClient = () => {
|
|
45
|
+
_clientRefCount = Math.max(0, _clientRefCount - 1);
|
|
46
|
+
if (_clientRefCount > 0) return;
|
|
47
|
+
require_globalManager.getGlobalEditorManager()?.stop();
|
|
48
|
+
require_globalManager.setGlobalEditorManager(null);
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
//#endregion
|
|
52
|
+
exports.buildClientMessengerConfig = buildClientMessengerConfig;
|
|
53
|
+
exports.initEditorClient = initEditorClient;
|
|
54
|
+
exports.stopEditorClient = stopEditorClient;
|
|
55
|
+
//# sourceMappingURL=initEditorClient.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initEditorClient.cjs","names":["editor","getGlobalEditorManager","EditorStateManager"],"sources":["../../../../../../../../../../packages/@intlayer/editor/dist/esm/core/initEditorClient.mjs"],"sourcesContent":["import { getGlobalEditorManager, setGlobalEditorManager } from \"./globalManager.mjs\";\nimport { EditorStateManager } from \"./EditorStateManager.mjs\";\nimport { defineIntlayerElements } from \"../components/defineIntlayerElements.mjs\";\nimport { editor } from \"@intlayer/config/built\";\n\n//#region src/core/initEditorClient.ts\nconst buildClientMessengerConfig = () => {\n\treturn {\n\t\tallowedOrigins: [editor?.editorURL, editor?.cmsURL].filter(Boolean),\n\t\tpostMessageFn: (payload, origin) => {\n\t\t\tif (typeof window === \"undefined\") return;\n\t\t\tif (!(window.self !== window.top)) return;\n\t\t\twindow.parent?.postMessage(payload, origin);\n\t\t}\n\t};\n};\n/** Reference count — tracks how many providers have called initEditorClient. */\nlet _clientRefCount = 0;\n/**\n* Initialize the Intlayer editor client singleton.\n* Safe to call multiple times — returns the existing manager if already initialized.\n* Increments a reference counter so nested providers don't destroy the manager\n* prematurely when the inner provider unmounts.\n*/\nconst initEditorClient = () => {\n\t_clientRefCount++;\n\tconst existing = getGlobalEditorManager();\n\tif (existing) return existing;\n\tconst manager = new EditorStateManager({\n\t\tmode: \"client\",\n\t\tmessenger: buildClientMessengerConfig(),\n\t\tconfiguration: { editor }\n\t});\n\tsetGlobalEditorManager(manager);\n\tdefineIntlayerElements();\n\tmanager.start();\n\treturn manager;\n};\n/**\n* Decrement the reference count and stop the global editor client singleton\n* only when the last provider unmounts.\n*/\nconst stopEditorClient = () => {\n\t_clientRefCount = Math.max(0, _clientRefCount - 1);\n\tif (_clientRefCount > 0) return;\n\tgetGlobalEditorManager()?.stop();\n\tsetGlobalEditorManager(null);\n};\n\n//#endregion\nexport { buildClientMessengerConfig, initEditorClient, stopEditorClient };\n//# sourceMappingURL=initEditorClient.mjs.map"],"mappings":";;;;;;;AAMA,MAAM,mCAAmC;AACxC,QAAO;EACN,gBAAgB,CAACA,+BAAQ,WAAWA,+BAAQ,OAAO,CAAC,OAAO,QAAQ;EACnE,gBAAgB,SAAS,WAAW;AACnC,OAAI,OAAO,WAAW,YAAa;AACnC,OAAI,EAAE,OAAO,SAAS,OAAO,KAAM;AACnC,UAAO,QAAQ,YAAY,SAAS,OAAO;;EAE5C;;;AAGF,IAAI,kBAAkB;;;;;;;AAOtB,MAAM,yBAAyB;AAC9B;CACA,MAAM,WAAWC,8CAAwB;AACzC,KAAI,SAAU,QAAO;CACrB,MAAM,UAAU,IAAIC,8CAAmB;EACtC,MAAM;EACN,WAAW,4BAA4B;EACvC,eAAe,EAAE,uCAAQ;EACzB,CAAC;AACF,8CAAuB,QAAQ;AAC/B,wDAAwB;AACxB,SAAQ,OAAO;AACf,QAAO;;;;;;AAMR,MAAM,yBAAyB;AAC9B,mBAAkB,KAAK,IAAI,GAAG,kBAAkB,EAAE;AAClD,KAAI,kBAAkB,EAAG;AACzB,+CAAwB,EAAE,MAAM;AAChC,8CAAuB,KAAK"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
const require_compareUrls = require('./compareUrls.cjs');
|
|
2
|
+
const require_mergeIframeClick = require('./mergeIframeClick.cjs');
|
|
3
|
+
const require_ContentSelector = require('./components/ContentSelector.cjs');
|
|
4
|
+
const require_globalManager = require('./core/globalManager.cjs');
|
|
5
|
+
const require_ContentSelectorWrapper = require('./components/ContentSelectorWrapper.cjs');
|
|
6
|
+
const require_EditedContent = require('./components/EditedContent.cjs');
|
|
7
|
+
const require_CrossFrameMessenger = require('./core/CrossFrameMessenger.cjs');
|
|
8
|
+
const require_CrossFrameStateManager = require('./core/CrossFrameStateManager.cjs');
|
|
9
|
+
const require_editedContentBus = require('./core/editedContentBus.cjs');
|
|
10
|
+
const require_focusedContentBus = require('./core/focusedContentBus.cjs');
|
|
11
|
+
const require_IframeClickInterceptor = require('./core/IframeClickInterceptor.cjs');
|
|
12
|
+
const require_UrlStateManager = require('./core/UrlStateManager.cjs');
|
|
13
|
+
const require_EditorStateManager = require('./core/EditorStateManager.cjs');
|
|
14
|
+
const require_IntlayerEditorElement = require('./components/IntlayerEditorElement.cjs');
|
|
15
|
+
const require_defineIntlayerElements = require('./components/defineIntlayerElements.cjs');
|
|
16
|
+
const require_initEditorClient = require('./core/initEditorClient.cjs');
|
|
17
|
+
|
|
18
|
+
exports.initEditorClient = require_initEditorClient.initEditorClient;
|
|
19
|
+
exports.stopEditorClient = require_initEditorClient.stopEditorClient;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const require_runtime = require('../../../../../_virtual/_rolldown/runtime.cjs');
|
|
2
|
+
let _intlayer_config_built = require("@intlayer/config/built");
|
|
3
|
+
|
|
4
|
+
//#region ../../packages/@intlayer/editor/dist/esm/isEnabled.mjs
|
|
5
|
+
const isEnabled = !(process.env["INTLAYER_EDITOR_ENABLED"] === "false") && _intlayer_config_built.editor?.enabled && typeof window !== "undefined" && window.self !== window.top;
|
|
6
|
+
|
|
7
|
+
//#endregion
|
|
8
|
+
exports.isEnabled = isEnabled;
|
|
9
|
+
//# sourceMappingURL=isEnabled.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isEnabled.cjs","names":["editor"],"sources":["../../../../../../../../../packages/@intlayer/editor/dist/esm/isEnabled.mjs"],"sourcesContent":["import { editor } from \"@intlayer/config/built\";\n\n//#region src/isEnabled.ts\nconst TREE_SHAKE_EDITOR = process.env[\"INTLAYER_EDITOR_ENABLED\"] === \"false\";\nconst isEnabled = !TREE_SHAKE_EDITOR && editor?.enabled && typeof window !== \"undefined\" && window.self !== window.top;\n\n//#endregion\nexport { isEnabled };\n//# sourceMappingURL=isEnabled.mjs.map"],"mappings":";;;;AAIA,MAAM,YAAY,EADQ,QAAQ,IAAI,+BAA+B,YAC7BA,+BAAQ,WAAW,OAAO,WAAW,eAAe,OAAO,SAAS,OAAO"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
|
|
2
|
+
//#region ../../packages/@intlayer/editor/dist/esm/mergeIframeClick.mjs
|
|
3
|
+
const mergeIframeClick = (event) => {
|
|
4
|
+
const simulatedMouseDownEvent = new MouseEvent("mousedown", {
|
|
5
|
+
bubbles: true,
|
|
6
|
+
cancelable: true,
|
|
7
|
+
view: window
|
|
8
|
+
});
|
|
9
|
+
const simulatedClickEvent = new MouseEvent("click", {
|
|
10
|
+
bubbles: true,
|
|
11
|
+
cancelable: true,
|
|
12
|
+
view: window
|
|
13
|
+
});
|
|
14
|
+
Object.assign(simulatedClickEvent, { iframeData: event });
|
|
15
|
+
Object.assign(simulatedMouseDownEvent, { iframeData: event });
|
|
16
|
+
window.dispatchEvent(simulatedClickEvent);
|
|
17
|
+
window.dispatchEvent(simulatedMouseDownEvent);
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
//#endregion
|
|
21
|
+
exports.mergeIframeClick = mergeIframeClick;
|
|
22
|
+
//# sourceMappingURL=mergeIframeClick.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mergeIframeClick.cjs","names":[],"sources":["../../../../../../../../../packages/@intlayer/editor/dist/esm/mergeIframeClick.mjs"],"sourcesContent":["//#region src/mergeIframeClick.ts\nconst mergeIframeClick = (event) => {\n\tconst simulatedMouseDownEvent = new MouseEvent(\"mousedown\", {\n\t\tbubbles: true,\n\t\tcancelable: true,\n\t\tview: window\n\t});\n\tconst simulatedClickEvent = new MouseEvent(\"click\", {\n\t\tbubbles: true,\n\t\tcancelable: true,\n\t\tview: window\n\t});\n\tObject.assign(simulatedClickEvent, { iframeData: event });\n\tObject.assign(simulatedMouseDownEvent, { iframeData: event });\n\twindow.dispatchEvent(simulatedClickEvent);\n\twindow.dispatchEvent(simulatedMouseDownEvent);\n};\n\n//#endregion\nexport { mergeIframeClick };\n//# sourceMappingURL=mergeIframeClick.mjs.map"],"mappings":";;AACA,MAAM,oBAAoB,UAAU;CACnC,MAAM,0BAA0B,IAAI,WAAW,aAAa;EAC3D,SAAS;EACT,YAAY;EACZ,MAAM;EACN,CAAC;CACF,MAAM,sBAAsB,IAAI,WAAW,SAAS;EACnD,SAAS;EACT,YAAY;EACZ,MAAM;EACN,CAAC;AACF,QAAO,OAAO,qBAAqB,EAAE,YAAY,OAAO,CAAC;AACzD,QAAO,OAAO,yBAAyB,EAAE,YAAY,OAAO,CAAC;AAC7D,QAAO,cAAc,oBAAoB;AACzC,QAAO,cAAc,wBAAwB"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
const require_runtime = require('../../../../../_virtual/_rolldown/runtime.cjs');
|
|
2
|
+
let _intlayer_config_built = require("@intlayer/config/built");
|
|
3
|
+
let node_fs = require("node:fs");
|
|
4
|
+
let node_path = require("node:path");
|
|
5
|
+
|
|
6
|
+
//#region ../../packages/@intlayer/unmerged-dictionaries-entry/dist/esm/index.mjs
|
|
7
|
+
/**
|
|
8
|
+
* @intlayer/unmerged-dictionaries-entry is a package that only returns the unmerged dictionary entry file.
|
|
9
|
+
* Using an external package allow to alias it in the bundle configuration (such as webpack).
|
|
10
|
+
* The alias allow hot reload the app (such as nextjs) on any dictionary change.
|
|
11
|
+
*/
|
|
12
|
+
const getUnmergedDictionaries = (configuration = {
|
|
13
|
+
system: _intlayer_config_built.system,
|
|
14
|
+
build: _intlayer_config_built.build
|
|
15
|
+
}) => {
|
|
16
|
+
const { system: system$1 } = configuration;
|
|
17
|
+
const { unmergedDictionariesDir } = system$1;
|
|
18
|
+
const dictionaries = {};
|
|
19
|
+
if ((0, node_fs.existsSync)(unmergedDictionariesDir)) {
|
|
20
|
+
const files = (0, node_fs.readdirSync)(unmergedDictionariesDir).filter((file) => file.endsWith(".json"));
|
|
21
|
+
for (const file of files) {
|
|
22
|
+
const key = (0, node_path.basename)(file, (0, node_path.extname)(file));
|
|
23
|
+
const content = (0, node_fs.readFileSync)((0, node_path.join)(unmergedDictionariesDir, file), "utf-8");
|
|
24
|
+
dictionaries[key] = JSON.parse(content);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return dictionaries;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
//#endregion
|
|
31
|
+
exports.getUnmergedDictionaries = getUnmergedDictionaries;
|
|
32
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","names":[],"sources":["../../../../../../../../../packages/@intlayer/unmerged-dictionaries-entry/dist/esm/index.mjs"],"sourcesContent":["import { existsSync, readFileSync, readdirSync } from \"node:fs\";\nimport { basename, extname, join } from \"node:path\";\nimport { build, system } from \"@intlayer/config/built\";\n\n//#region src/index.ts\n/**\n* @intlayer/unmerged-dictionaries-entry is a package that only returns the unmerged dictionary entry file.\n* Using an external package allow to alias it in the bundle configuration (such as webpack).\n* The alias allow hot reload the app (such as nextjs) on any dictionary change.\n*/\nconst getUnmergedDictionaries = (configuration = {\n\tsystem,\n\tbuild\n}) => {\n\tconst { system: system$1 } = configuration;\n\tconst { unmergedDictionariesDir } = system$1;\n\tconst dictionaries = {};\n\tif (existsSync(unmergedDictionariesDir)) {\n\t\tconst files = readdirSync(unmergedDictionariesDir).filter((file) => file.endsWith(\".json\"));\n\t\tfor (const file of files) {\n\t\t\tconst key = basename(file, extname(file));\n\t\t\tconst content = readFileSync(join(unmergedDictionariesDir, file), \"utf-8\");\n\t\t\tdictionaries[key] = JSON.parse(content);\n\t\t}\n\t}\n\treturn dictionaries;\n};\n\n//#endregion\nexport { getUnmergedDictionaries };\n//# sourceMappingURL=index.mjs.map"],"mappings":";;;;;;;;;;;AAUA,MAAM,2BAA2B,gBAAgB;CAChD;CACA;CACA,KAAK;CACL,MAAM,EAAE,QAAQ,aAAa;CAC7B,MAAM,EAAE,4BAA4B;CACpC,MAAM,eAAe,EAAE;AACvB,6BAAe,wBAAwB,EAAE;EACxC,MAAM,iCAAoB,wBAAwB,CAAC,QAAQ,SAAS,KAAK,SAAS,QAAQ,CAAC;AAC3F,OAAK,MAAM,QAAQ,OAAO;GACzB,MAAM,8BAAe,6BAAc,KAAK,CAAC;GACzC,MAAM,wDAA4B,yBAAyB,KAAK,EAAE,QAAQ;AAC1E,gBAAa,OAAO,KAAK,MAAM,QAAQ;;;AAGzC,QAAO"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
const require_runtime = require('../../../../../_virtual/_rolldown/runtime.cjs');
|
|
2
|
+
const require_useLocaleStorage = require('./useLocaleStorage.cjs');
|
|
3
|
+
let react = require("react");
|
|
4
|
+
let _intlayer_config_built = require("@intlayer/config/built");
|
|
5
|
+
|
|
6
|
+
//#region ../../packages/react-intlayer/dist/esm/client/IntlayerContext.mjs
|
|
7
|
+
/**
|
|
8
|
+
* Context that stores the current locale on the client side.
|
|
9
|
+
*/
|
|
10
|
+
const IntlayerClientContext = (0, react.createContext)({
|
|
11
|
+
locale: require_useLocaleStorage.localeInStorage ?? _intlayer_config_built.internationalization?.defaultLocale,
|
|
12
|
+
setLocale: () => null,
|
|
13
|
+
isCookieEnabled: true
|
|
14
|
+
});
|
|
15
|
+
/**
|
|
16
|
+
* Hook that provides the current Intlayer client context.
|
|
17
|
+
*
|
|
18
|
+
* @returns The current Intlayer context values.
|
|
19
|
+
*/
|
|
20
|
+
const useIntlayerContext = () => (0, react.useContext)(IntlayerClientContext) ?? {};
|
|
21
|
+
|
|
22
|
+
//#endregion
|
|
23
|
+
exports.IntlayerClientContext = IntlayerClientContext;
|
|
24
|
+
exports.useIntlayerContext = useIntlayerContext;
|
|
25
|
+
//# sourceMappingURL=IntlayerContext.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IntlayerContext.cjs","names":["localeInStorage","internationalization"],"sources":["../../../../../../../../../packages/react-intlayer/dist/esm/client/IntlayerContext.mjs"],"sourcesContent":["import { localeInStorage } from \"./useLocaleStorage.mjs\";\nimport { internationalization } from \"@intlayer/config/built\";\nimport { createContext, useContext } from \"react\";\n\n//#region src/client/IntlayerContext.tsx\n/**\n* Context that stores the current locale on the client side.\n*/\nconst IntlayerClientContext = createContext({\n\tlocale: localeInStorage ?? internationalization?.defaultLocale,\n\tsetLocale: () => null,\n\tisCookieEnabled: true\n});\n/**\n* Hook that provides the current Intlayer client context.\n*\n* @returns The current Intlayer context values.\n*/\nconst useIntlayerContext = () => useContext(IntlayerClientContext) ?? {};\n\n//#endregion\nexport { IntlayerClientContext, useIntlayerContext };\n//# sourceMappingURL=IntlayerContext.mjs.map"],"mappings":";;;;;;;;;AAQA,MAAM,iDAAsC;CAC3C,QAAQA,4CAAmBC,6CAAsB;CACjD,iBAAiB;CACjB,iBAAiB;CACjB,CAAC;;;;;;AAMF,MAAM,iDAAsC,sBAAsB,IAAI,EAAE"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
const require_runtime = require('../../../../../_virtual/_rolldown/runtime.cjs');
|
|
4
|
+
const require_useLocaleStorage = require('./useLocaleStorage.cjs');
|
|
5
|
+
const require_IntlayerContext = require('./IntlayerContext.cjs');
|
|
6
|
+
const require_EditorProvider = require('../editor/EditorProvider.cjs');
|
|
7
|
+
let react = require("react");
|
|
8
|
+
let _intlayer_config_built = require("@intlayer/config/built");
|
|
9
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
10
|
+
let _intlayer_config_client = require("@intlayer/config/client");
|
|
11
|
+
let _intlayer_core_localization = require("@intlayer/core/localization");
|
|
12
|
+
|
|
13
|
+
//#region ../../packages/react-intlayer/dist/esm/client/IntlayerProvider.mjs
|
|
14
|
+
/**
|
|
15
|
+
* Provider that stores the current locale on the client side.
|
|
16
|
+
*
|
|
17
|
+
* This component is focused on content delivery without the editor features.
|
|
18
|
+
*
|
|
19
|
+
* @param props - The provider props.
|
|
20
|
+
* @returns The provider component.
|
|
21
|
+
*/
|
|
22
|
+
const IntlayerProviderContent = ({ locale: localeProp, defaultLocale: defaultLocaleProp, children, setLocale: setLocaleProp, disableEditor, isCookieEnabled }) => {
|
|
23
|
+
const { locales: availableLocales, defaultLocale: defaultLocaleConfig } = _intlayer_config_built.internationalization ?? {};
|
|
24
|
+
const [currentLocale, setCurrentLocale] = (0, react.useState)(localeProp ?? require_useLocaleStorage.localeInStorage ?? defaultLocaleProp ?? defaultLocaleConfig);
|
|
25
|
+
(0, react.useEffect)(() => {
|
|
26
|
+
if (localeProp && localeProp !== currentLocale) setCurrentLocale(localeProp);
|
|
27
|
+
}, [localeProp]);
|
|
28
|
+
(0, react.useEffect)(() => {
|
|
29
|
+
(0, _intlayer_config_client.setIntlayerIdentifier)();
|
|
30
|
+
}, []);
|
|
31
|
+
const setLocaleBase = (newLocale) => {
|
|
32
|
+
if (currentLocale.toString() === newLocale.toString()) return;
|
|
33
|
+
if (!availableLocales?.map(String).includes(newLocale)) {
|
|
34
|
+
console.error(`Locale ${newLocale} is not available`);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
setCurrentLocale(newLocale);
|
|
38
|
+
require_useLocaleStorage.setLocaleInStorage(newLocale, isCookieEnabled);
|
|
39
|
+
};
|
|
40
|
+
const setLocale = setLocaleProp ?? setLocaleBase;
|
|
41
|
+
const resolvedLocale = (0, _intlayer_core_localization.localeResolver)(currentLocale);
|
|
42
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_IntlayerContext.IntlayerClientContext.Provider, {
|
|
43
|
+
value: {
|
|
44
|
+
locale: resolvedLocale,
|
|
45
|
+
setLocale,
|
|
46
|
+
disableEditor
|
|
47
|
+
},
|
|
48
|
+
children
|
|
49
|
+
});
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Main provider for Intlayer in React applications.
|
|
53
|
+
*
|
|
54
|
+
* It includes the editor provider by default, allowing for live content editing
|
|
55
|
+
* if configured.
|
|
56
|
+
*
|
|
57
|
+
* @param props - The provider props.
|
|
58
|
+
* @returns The provider component with editor support.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```tsx
|
|
62
|
+
* import { IntlayerProvider } from 'react-intlayer';
|
|
63
|
+
*
|
|
64
|
+
* const App = () => (
|
|
65
|
+
* <IntlayerProvider>
|
|
66
|
+
* <MyComponent />
|
|
67
|
+
* </IntlayerProvider>
|
|
68
|
+
* );
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
const IntlayerProvider = ({ children, ...props }) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(IntlayerProviderContent, {
|
|
72
|
+
...props,
|
|
73
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_EditorProvider.EditorProvider, {}), children]
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
//#endregion
|
|
77
|
+
exports.IntlayerProvider = IntlayerProvider;
|
|
78
|
+
//# sourceMappingURL=IntlayerProvider.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IntlayerProvider.cjs","names":["internationalization","localeInStorage","IntlayerClientContext","EditorProvider"],"sources":["../../../../../../../../../packages/react-intlayer/dist/esm/client/IntlayerProvider.mjs"],"sourcesContent":["'use client';\n\nimport { localeInStorage, setLocaleInStorage } from \"./useLocaleStorage.mjs\";\nimport { IntlayerClientContext } from \"./IntlayerContext.mjs\";\nimport { EditorProvider } from \"../editor/EditorProvider.mjs\";\nimport { internationalization } from \"@intlayer/config/built\";\nimport { useEffect, useState } from \"react\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nimport { setIntlayerIdentifier } from \"@intlayer/config/client\";\nimport { localeResolver } from \"@intlayer/core/localization\";\n\n//#region src/client/IntlayerProvider.tsx\n/**\n* Provider that stores the current locale on the client side.\n*\n* This component is focused on content delivery without the editor features.\n*\n* @param props - The provider props.\n* @returns The provider component.\n*/\nconst IntlayerProviderContent = ({ locale: localeProp, defaultLocale: defaultLocaleProp, children, setLocale: setLocaleProp, disableEditor, isCookieEnabled }) => {\n\tconst { locales: availableLocales, defaultLocale: defaultLocaleConfig } = internationalization ?? {};\n\tconst [currentLocale, setCurrentLocale] = useState(localeProp ?? localeInStorage ?? defaultLocaleProp ?? defaultLocaleConfig);\n\tuseEffect(() => {\n\t\tif (localeProp && localeProp !== currentLocale) setCurrentLocale(localeProp);\n\t}, [localeProp]);\n\tuseEffect(() => {\n\t\tsetIntlayerIdentifier();\n\t}, []);\n\tconst setLocaleBase = (newLocale) => {\n\t\tif (currentLocale.toString() === newLocale.toString()) return;\n\t\tif (!availableLocales?.map(String).includes(newLocale)) {\n\t\t\tconsole.error(`Locale ${newLocale} is not available`);\n\t\t\treturn;\n\t\t}\n\t\tsetCurrentLocale(newLocale);\n\t\tsetLocaleInStorage(newLocale, isCookieEnabled);\n\t};\n\tconst setLocale = setLocaleProp ?? setLocaleBase;\n\tconst resolvedLocale = localeResolver(currentLocale);\n\treturn /* @__PURE__ */ jsx(IntlayerClientContext.Provider, {\n\t\tvalue: {\n\t\t\tlocale: resolvedLocale,\n\t\t\tsetLocale,\n\t\t\tdisableEditor\n\t\t},\n\t\tchildren\n\t});\n};\n/**\n* Main provider for Intlayer in React applications.\n*\n* It includes the editor provider by default, allowing for live content editing\n* if configured.\n*\n* @param props - The provider props.\n* @returns The provider component with editor support.\n*\n* @example\n* ```tsx\n* import { IntlayerProvider } from 'react-intlayer';\n*\n* const App = () => (\n* <IntlayerProvider>\n* <MyComponent />\n* </IntlayerProvider>\n* );\n* ```\n*/\nconst IntlayerProvider = ({ children, ...props }) => /* @__PURE__ */ jsxs(IntlayerProviderContent, {\n\t...props,\n\tchildren: [/* @__PURE__ */ jsx(EditorProvider, {}), children]\n});\n\n//#endregion\nexport { IntlayerProvider, IntlayerProviderContent };\n//# sourceMappingURL=IntlayerProvider.mjs.map"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAoBA,MAAM,2BAA2B,EAAE,QAAQ,YAAY,eAAe,mBAAmB,UAAU,WAAW,eAAe,eAAe,sBAAsB;CACjK,MAAM,EAAE,SAAS,kBAAkB,eAAe,wBAAwBA,+CAAwB,EAAE;CACpG,MAAM,CAAC,eAAe,wCAA6B,cAAcC,4CAAmB,qBAAqB,oBAAoB;AAC7H,4BAAgB;AACf,MAAI,cAAc,eAAe,cAAe,kBAAiB,WAAW;IAC1E,CAAC,WAAW,CAAC;AAChB,4BAAgB;AACf,sDAAuB;IACrB,EAAE,CAAC;CACN,MAAM,iBAAiB,cAAc;AACpC,MAAI,cAAc,UAAU,KAAK,UAAU,UAAU,CAAE;AACvD,MAAI,CAAC,kBAAkB,IAAI,OAAO,CAAC,SAAS,UAAU,EAAE;AACvD,WAAQ,MAAM,UAAU,UAAU,mBAAmB;AACrD;;AAED,mBAAiB,UAAU;AAC3B,8CAAmB,WAAW,gBAAgB;;CAE/C,MAAM,YAAY,iBAAiB;CACnC,MAAM,iEAAgC,cAAc;AACpD,QAAuB,2CAAIC,8CAAsB,UAAU;EAC1D,OAAO;GACN,QAAQ;GACR;GACA;GACA;EACD;EACA,CAAC;;;;;;;;;;;;;;;;;;;;;;AAsBH,MAAM,oBAAoB,EAAE,UAAU,GAAG,YAA4B,4CAAK,yBAAyB;CAClG,GAAG;CACH,UAAU,CAAiB,2CAAIC,uCAAgB,EAAE,CAAC,EAAE,SAAS;CAC7D,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
const require_runtime = require('../../../../../_virtual/_rolldown/runtime.cjs');
|
|
2
|
+
let react = require("react");
|
|
3
|
+
let _intlayer_core_utils = require("@intlayer/core/utils");
|
|
4
|
+
|
|
5
|
+
//#region ../../packages/react-intlayer/dist/esm/client/useLocaleStorage.mjs
|
|
6
|
+
/**
|
|
7
|
+
* Get the locale cookie
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Get the locale cookie
|
|
11
|
+
*/
|
|
12
|
+
const localeInStorage = (0, _intlayer_core_utils.getLocaleFromStorageClient)(_intlayer_core_utils.localeStorageOptions);
|
|
13
|
+
/**
|
|
14
|
+
* Set the locale cookie
|
|
15
|
+
*/
|
|
16
|
+
const setLocaleInStorage = (locale, isCookieEnabled) => (0, _intlayer_core_utils.setLocaleInStorageClient)(locale, {
|
|
17
|
+
..._intlayer_core_utils.localeStorageOptions,
|
|
18
|
+
isCookieEnabled
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
//#endregion
|
|
22
|
+
exports.localeInStorage = localeInStorage;
|
|
23
|
+
exports.setLocaleInStorage = setLocaleInStorage;
|
|
24
|
+
//# sourceMappingURL=useLocaleStorage.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useLocaleStorage.cjs","names":["localeStorageOptions"],"sources":["../../../../../../../../../packages/react-intlayer/dist/esm/client/useLocaleStorage.mjs"],"sourcesContent":["import { useMemo } from \"react\";\nimport { LocaleStorageClient, getLocaleFromStorageClient, localeStorageOptions, setLocaleInStorageClient } from \"@intlayer/core/utils\";\n\n//#region src/client/useLocaleStorage.ts\n/**\n* Get the locale cookie\n*/\n/**\n* Get the locale cookie\n*/\nconst localeInStorage = getLocaleFromStorageClient(localeStorageOptions);\n/**\n* @deprecated Use localeInStorage instead\n*\n* Get the locale cookie\n*/\nconst localeCookie = localeInStorage;\n/**\n* Set the locale cookie\n*/\nconst setLocaleInStorage = (locale, isCookieEnabled) => setLocaleInStorageClient(locale, {\n\t...localeStorageOptions,\n\tisCookieEnabled\n});\n/**\n* @deprecated Use setLocaleInStorage instead\n*\n* Set the locale cookie\n*/\nconst setLocaleCookie = setLocaleInStorage;\n/**\n* Hook that provides the locale cookie and a function to set it\n*/\nconst useLocaleStorage = (isCookieEnabled) => useMemo(() => LocaleStorageClient({\n\t...localeStorageOptions,\n\tisCookieEnabled\n}), [isCookieEnabled]);\n/**\n* @deprecated Use useLocaleStorage instead\n*\n* For GDPR compliance, use useLocaleStorage instead\n*\n* Hook that provides the locale cookie and a function to set it\n*/\nconst useLocaleCookie = useLocaleStorage;\n\n//#endregion\nexport { localeCookie, localeInStorage, setLocaleCookie, setLocaleInStorage, useLocaleCookie, useLocaleStorage };\n//# sourceMappingURL=useLocaleStorage.mjs.map"],"mappings":";;;;;;;;;;;AAUA,MAAM,uEAA6CA,0CAAqB;;;;AAUxE,MAAM,sBAAsB,QAAQ,uEAA6C,QAAQ;CACxF,GAAGA;CACH;CACA,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const require_useEditor = require('./useEditor.cjs');
|
|
2
|
+
|
|
3
|
+
//#region ../../packages/react-intlayer/dist/esm/editor/EditorProvider.mjs
|
|
4
|
+
const EditorProvider = ({ children }) => {
|
|
5
|
+
require_useEditor.useEditor();
|
|
6
|
+
return children;
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
//#endregion
|
|
10
|
+
exports.EditorProvider = EditorProvider;
|
|
11
|
+
//# sourceMappingURL=EditorProvider.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EditorProvider.cjs","names":[],"sources":["../../../../../../../../../packages/react-intlayer/dist/esm/editor/EditorProvider.mjs"],"sourcesContent":["import { useEditor } from \"./useEditor.mjs\";\n\n//#region src/editor/EditorProvider.tsx\nconst EditorProvider = ({ children }) => {\n\tuseEditor();\n\treturn children;\n};\n\n//#endregion\nexport { EditorProvider };\n//# sourceMappingURL=EditorProvider.mjs.map"],"mappings":";;;AAGA,MAAM,kBAAkB,EAAE,eAAe;AACxC,8BAAW;AACX,QAAO"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
const require_runtime = require('../../../../../_virtual/_rolldown/runtime.cjs');
|
|
4
|
+
const require_isEnabled = require('../../../../@intlayer/editor/dist/esm/isEnabled.cjs');
|
|
5
|
+
const require_IntlayerContext = require('../client/IntlayerContext.cjs');
|
|
6
|
+
let react = require("react");
|
|
7
|
+
|
|
8
|
+
//#region ../../packages/react-intlayer/dist/esm/editor/useEditor.mjs
|
|
9
|
+
/**
|
|
10
|
+
* Initializes the Intlayer editor client singleton when the editor is enabled.
|
|
11
|
+
* Syncs the current locale from the Intlayer context into the editor manager so
|
|
12
|
+
* the editor always knows which locale the app is displaying.
|
|
13
|
+
*/
|
|
14
|
+
const useEditor = () => {
|
|
15
|
+
const { locale } = require_IntlayerContext.useIntlayerContext() ?? {};
|
|
16
|
+
const managerRef = (0, react.useRef)(null);
|
|
17
|
+
(0, react.useEffect)(() => {
|
|
18
|
+
if (process.env["INTLAYER_EDITOR_ENABLED"] === "false" || !require_isEnabled.isEnabled) return;
|
|
19
|
+
Promise.resolve().then(() => require("../../../../@intlayer/editor/dist/esm/index.cjs")).then(({ initEditorClient }) => {
|
|
20
|
+
const manager = initEditorClient();
|
|
21
|
+
managerRef.current = manager;
|
|
22
|
+
if (locale) manager.currentLocale.set(locale);
|
|
23
|
+
});
|
|
24
|
+
return () => {
|
|
25
|
+
managerRef.current = null;
|
|
26
|
+
Promise.resolve().then(() => require("../../../../@intlayer/editor/dist/esm/index.cjs")).then(({ stopEditorClient }) => {
|
|
27
|
+
stopEditorClient();
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
}, []);
|
|
31
|
+
(0, react.useEffect)(() => {
|
|
32
|
+
if (!locale || !managerRef.current) return;
|
|
33
|
+
managerRef.current.currentLocale.set(locale);
|
|
34
|
+
}, [locale]);
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
//#endregion
|
|
38
|
+
exports.useEditor = useEditor;
|
|
39
|
+
//# sourceMappingURL=useEditor.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useEditor.cjs","names":["useIntlayerContext","isEnabled"],"sources":["../../../../../../../../../packages/react-intlayer/dist/esm/editor/useEditor.mjs"],"sourcesContent":["'use client';\n\nimport { useIntlayerContext } from \"../client/IntlayerContext.mjs\";\nimport { useEffect, useRef } from \"react\";\nimport { isEnabled } from \"@intlayer/editor/isEnabled\";\n\n//#region src/editor/useEditor.tsx\n/**\n* Initializes the Intlayer editor client singleton when the editor is enabled.\n* Syncs the current locale from the Intlayer context into the editor manager so\n* the editor always knows which locale the app is displaying.\n*/\nconst useEditor = () => {\n\tconst { locale } = useIntlayerContext() ?? {};\n\tconst managerRef = useRef(null);\n\tuseEffect(() => {\n\t\tif (process.env[\"INTLAYER_EDITOR_ENABLED\"] === \"false\" || !isEnabled) return;\n\t\timport(\"@intlayer/editor\").then(({ initEditorClient }) => {\n\t\t\tconst manager = initEditorClient();\n\t\t\tmanagerRef.current = manager;\n\t\t\tif (locale) manager.currentLocale.set(locale);\n\t\t});\n\t\treturn () => {\n\t\t\tmanagerRef.current = null;\n\t\t\timport(\"@intlayer/editor\").then(({ stopEditorClient }) => {\n\t\t\t\tstopEditorClient();\n\t\t\t});\n\t\t};\n\t}, []);\n\tuseEffect(() => {\n\t\tif (!locale || !managerRef.current) return;\n\t\tmanagerRef.current.currentLocale.set(locale);\n\t}, [locale]);\n};\n\n//#endregion\nexport { useEditor };\n//# sourceMappingURL=useEditor.mjs.map"],"mappings":";;;;;;;;;;;;;AAYA,MAAM,kBAAkB;CACvB,MAAM,EAAE,WAAWA,4CAAoB,IAAI,EAAE;CAC7C,MAAM,+BAAoB,KAAK;AAC/B,4BAAgB;AACf,MAAI,QAAQ,IAAI,+BAA+B,WAAW,CAACC,4BAAW;AACtE,2FAA2B,MAAM,EAAE,uBAAuB;GACzD,MAAM,UAAU,kBAAkB;AAClC,cAAW,UAAU;AACrB,OAAI,OAAQ,SAAQ,cAAc,IAAI,OAAO;IAC5C;AACF,eAAa;AACZ,cAAW,UAAU;AACrB,4FAA2B,MAAM,EAAE,uBAAuB;AACzD,sBAAkB;KACjB;;IAED,EAAE,CAAC;AACN,4BAAgB;AACf,MAAI,CAAC,UAAU,CAAC,WAAW,QAAS;AACpC,aAAW,QAAQ,cAAc,IAAI,OAAO;IAC1C,CAAC,OAAO,CAAC"}
|