@sitecore-content-sdk/content 2.2.1 → 2.3.0-beta.atoms.20260721120640

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 (82) hide show
  1. package/atoms.d.ts +1 -0
  2. package/dist/cjs/atoms/design-library-bridge/constants.js +18 -0
  3. package/dist/cjs/atoms/design-library-bridge/events.js +88 -0
  4. package/dist/cjs/atoms/design-library-bridge/index.js +18 -0
  5. package/dist/cjs/atoms/index.js +8 -0
  6. package/dist/cjs/atoms/types.js +2 -0
  7. package/dist/cjs/client/sitecore-client.js +6 -1
  8. package/dist/cjs/config/define-config.js +55 -86
  9. package/dist/cjs/config/index.js +1 -4
  10. package/dist/cjs/editing/models.js +2 -0
  11. package/dist/cjs/form/form.js +2 -2
  12. package/dist/cjs/layout/index.js +0 -15
  13. package/dist/cjs/site/index.js +1 -2
  14. package/dist/cjs/site/utils.js +0 -34
  15. package/dist/cjs/tools/index.js +1 -3
  16. package/dist/cjs/tools/templating/components.js +3 -13
  17. package/dist/cjs/tools/templating/index.js +1 -4
  18. package/dist/esm/atoms/design-library-bridge/constants.js +15 -0
  19. package/dist/esm/atoms/design-library-bridge/events.js +80 -0
  20. package/dist/esm/atoms/design-library-bridge/index.js +2 -0
  21. package/dist/esm/atoms/index.js +1 -0
  22. package/dist/esm/atoms/types.js +1 -0
  23. package/dist/esm/client/sitecore-client.js +6 -1
  24. package/dist/esm/config/define-config.js +56 -86
  25. package/dist/esm/config/index.js +1 -1
  26. package/dist/esm/editing/models.js +2 -0
  27. package/dist/esm/form/form.js +2 -2
  28. package/dist/esm/layout/index.js +0 -1
  29. package/dist/esm/site/index.js +1 -1
  30. package/dist/esm/site/utils.js +0 -33
  31. package/dist/esm/tools/index.js +1 -1
  32. package/dist/esm/tools/templating/components.js +2 -11
  33. package/dist/esm/tools/templating/index.js +0 -1
  34. package/package.json +38 -34
  35. package/types/atoms/design-library-bridge/constants.d.ts +16 -0
  36. package/types/atoms/design-library-bridge/constants.d.ts.map +1 -0
  37. package/types/atoms/design-library-bridge/events.d.ts +41 -0
  38. package/types/atoms/design-library-bridge/events.d.ts.map +1 -0
  39. package/types/atoms/design-library-bridge/index.d.ts +3 -0
  40. package/types/atoms/design-library-bridge/index.d.ts.map +1 -0
  41. package/types/atoms/design-library-bridge/types.d.ts +63 -0
  42. package/types/atoms/design-library-bridge/types.d.ts.map +1 -0
  43. package/types/atoms/index.d.ts +3 -0
  44. package/types/atoms/index.d.ts.map +1 -0
  45. package/types/atoms/types.d.ts +68 -0
  46. package/types/atoms/types.d.ts.map +1 -0
  47. package/types/client/edge-proxy.d.ts.map +1 -1
  48. package/types/client/sitecore-client.d.ts +4 -0
  49. package/types/client/sitecore-client.d.ts.map +1 -1
  50. package/types/config/define-config.d.ts +2 -17
  51. package/types/config/define-config.d.ts.map +1 -1
  52. package/types/config/index.d.ts +1 -1
  53. package/types/config/index.d.ts.map +1 -1
  54. package/types/config/models.d.ts +17 -1
  55. package/types/config/models.d.ts.map +1 -1
  56. package/types/editing/models.d.ts +3 -1
  57. package/types/editing/models.d.ts.map +1 -1
  58. package/types/form/form.d.ts +1 -1
  59. package/types/form/form.d.ts.map +1 -1
  60. package/types/layout/content-styles.d.ts.map +1 -1
  61. package/types/layout/index.d.ts +0 -1
  62. package/types/layout/index.d.ts.map +1 -1
  63. package/types/layout/rewrite-edge-host.d.ts.map +1 -1
  64. package/types/layout/themes.d.ts.map +1 -1
  65. package/types/site/index.d.ts +1 -1
  66. package/types/site/index.d.ts.map +1 -1
  67. package/types/site/utils.d.ts +0 -11
  68. package/types/site/utils.d.ts.map +1 -1
  69. package/types/tools/index.d.ts +1 -1
  70. package/types/tools/index.d.ts.map +1 -1
  71. package/types/tools/templating/components.d.ts +2 -8
  72. package/types/tools/templating/components.d.ts.map +1 -1
  73. package/types/tools/templating/index.d.ts +0 -1
  74. package/types/tools/templating/index.d.ts.map +1 -1
  75. package/dist/cjs/tools/templating/utils.js +0 -167
  76. package/dist/esm/tools/templating/utils.js +0 -159
  77. package/types/layout/field-types.d.ts +0 -75
  78. package/types/layout/field-types.d.ts.map +0 -1
  79. package/types/tools/templating/utils.d.ts +0 -44
  80. package/types/tools/templating/utils.d.ts.map +0 -1
  81. /package/dist/cjs/{layout/field-types.js → atoms/design-library-bridge/types.js} +0 -0
  82. /package/dist/esm/{layout/field-types.js → atoms/design-library-bridge/types.js} +0 -0
package/atoms.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './types/atoms/index';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DESIGN_LIBRARY_ATOMS_ERROR_EVENT_NAME = exports.DESIGN_LIBRARY_ATOMS_CATALOG_EVENT_NAME = exports.DESIGN_LIBRARY_COMPONENT_PREVIEW_EVENT_NAME = void 0;
4
+ /**
5
+ * Event name for component preview updates from design library
6
+ * @internal
7
+ */
8
+ exports.DESIGN_LIBRARY_COMPONENT_PREVIEW_EVENT_NAME = 'component:atoms:preview';
9
+ /**
10
+ * Event name for the atoms catalog registration (replaces legacy `atom:registry`).
11
+ * @internal
12
+ */
13
+ exports.DESIGN_LIBRARY_ATOMS_CATALOG_EVENT_NAME = 'atoms:catalog';
14
+ /**
15
+ * Event to send to design library when rendering atoms error occurs
16
+ * @internal
17
+ */
18
+ exports.DESIGN_LIBRARY_ATOMS_ERROR_EVENT_NAME = 'atoms:error';
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addComponentPropsUpdateHandler = exports.addDocumentUpdateHandler = exports.sendAtomsErrorEvent = void 0;
4
+ exports.getDesignLibraryAtomsCatalogEvent = getDesignLibraryAtomsCatalogEvent;
5
+ exports.getDesignLibraryAtomsErrorEvent = getDesignLibraryAtomsErrorEvent;
6
+ const core_1 = require("@sitecore-content-sdk/core");
7
+ const design_library_1 = require("../../editing/design-library");
8
+ const constants_1 = require("./constants");
9
+ const { ERROR_MESSAGES } = core_1.constants;
10
+ /**
11
+ * Creates a DesignLibraryAtomsCatalogEvent with the given catalog payload.
12
+ * @param {AtomsCatalogPayload} payload - serialized catalog data
13
+ * @returns {DesignLibraryAtomsCatalogEvent} the event ready to be posted to Design Studio
14
+ * @internal
15
+ */
16
+ function getDesignLibraryAtomsCatalogEvent(payload) {
17
+ return {
18
+ name: constants_1.DESIGN_LIBRARY_ATOMS_CATALOG_EVENT_NAME,
19
+ message: payload,
20
+ };
21
+ }
22
+ /**
23
+ * Generates a DesignLibraryAtomsErrorEvent depending on the type of error with the given error.
24
+ * @param {unknown} error - The error to be sent.
25
+ * @param {DesignLibraryAtomsError} type - The type of error.
26
+ * @returns An object representing the DesignLibraryAtomsErrorEvent.
27
+ * @internal
28
+ */
29
+ function getDesignLibraryAtomsErrorEvent(error, type) {
30
+ return {
31
+ name: constants_1.DESIGN_LIBRARY_ATOMS_ERROR_EVENT_NAME,
32
+ message: { error, type },
33
+ };
34
+ }
35
+ /**
36
+ * Sends a design library atoms error event to the design library
37
+ * @param {unknown} error - The error object or message to be sent.
38
+ * @param {DesignLibraryAtomsError} type - The type of error, as defined in DesignLibraryAtomsError.
39
+ * @internal
40
+ */
41
+ const sendAtomsErrorEvent = (error, type) => {
42
+ const errorEvent = getDesignLibraryAtomsErrorEvent(error, type);
43
+ console.error(`Component Library: sending error event. ${ERROR_MESSAGES.CONTACT_SUPPORT}`, errorEvent);
44
+ if (typeof window !== 'undefined') {
45
+ const target = window.parent && window.parent !== window ? window.parent : window;
46
+ target.postMessage(errorEvent, '*');
47
+ }
48
+ };
49
+ exports.sendAtomsErrorEvent = sendAtomsErrorEvent;
50
+ /**
51
+ * Adds a handler for atom document update events from the design library.
52
+ * @param {(updatedRootComponent: Document) => void} callback - The callback to be invoked when a document update event is received.
53
+ * @returns A function to unsubscribe from the atom document update events.
54
+ * @internal
55
+ */
56
+ const addDocumentUpdateHandler = (callback) => {
57
+ const handler = (e) => {
58
+ if (!(0, design_library_1.validateEvent)(e, constants_1.DESIGN_LIBRARY_COMPONENT_PREVIEW_EVENT_NAME)) {
59
+ return;
60
+ }
61
+ console.debug('Component Library atoms: message received', e.data);
62
+ callback(e.data.document);
63
+ };
64
+ window.addEventListener('message', handler);
65
+ const unsubscribe = () => {
66
+ window.removeEventListener('message', handler);
67
+ };
68
+ return unsubscribe;
69
+ };
70
+ exports.addDocumentUpdateHandler = addDocumentUpdateHandler;
71
+ /**
72
+ * Adds a handler for component props (fields and params) updates from the design library.
73
+ * Listens for 'component:update' events and invokes the callback with the updated fields and params.
74
+ * @param {Function} callback - Called when a 'component:update' message is received.
75
+ * @returns A function to unsubscribe from the event.
76
+ * @internal
77
+ */
78
+ const addComponentPropsUpdateHandler = (callback) => {
79
+ const handler = (e) => {
80
+ if (!(0, design_library_1.validateEvent)(e, 'component:update'))
81
+ return;
82
+ const details = e.data.details;
83
+ callback(details === null || details === void 0 ? void 0 : details.fields, details === null || details === void 0 ? void 0 : details.params);
84
+ };
85
+ window.addEventListener('message', handler);
86
+ return () => window.removeEventListener('message', handler);
87
+ };
88
+ exports.addComponentPropsUpdateHandler = addComponentPropsUpdateHandler;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./events"), exports);
18
+ __exportStar(require("./types"), exports);
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addComponentPropsUpdateHandler = exports.addDocumentUpdateHandler = exports.sendAtomsErrorEvent = exports.getDesignLibraryAtomsCatalogEvent = void 0;
4
+ var design_library_bridge_1 = require("./design-library-bridge");
5
+ Object.defineProperty(exports, "getDesignLibraryAtomsCatalogEvent", { enumerable: true, get: function () { return design_library_bridge_1.getDesignLibraryAtomsCatalogEvent; } });
6
+ Object.defineProperty(exports, "sendAtomsErrorEvent", { enumerable: true, get: function () { return design_library_bridge_1.sendAtomsErrorEvent; } });
7
+ Object.defineProperty(exports, "addDocumentUpdateHandler", { enumerable: true, get: function () { return design_library_bridge_1.addDocumentUpdateHandler; } });
8
+ Object.defineProperty(exports, "addComponentPropsUpdateHandler", { enumerable: true, get: function () { return design_library_bridge_1.addComponentPropsUpdateHandler; } });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -382,7 +382,7 @@ class SitecoreClient {
382
382
  isPreview: false,
383
383
  isEditing: false,
384
384
  isDesignLibrary: false,
385
- designLibrary: { isVariantGeneration: false },
385
+ designLibrary: { isVariantGeneration: false, isLowCode: false },
386
386
  };
387
387
  switch (mode) {
388
388
  case layout_1.LayoutServicePageState.Normal:
@@ -401,6 +401,11 @@ class SitecoreClient {
401
401
  pageMode.isDesignLibrary = true;
402
402
  pageMode.isEditing = true;
403
403
  break;
404
+ case editing_1.DesignLibraryMode.LowCode:
405
+ pageMode.isDesignLibrary = true;
406
+ pageMode.designLibrary.isLowCode = true;
407
+ pageMode.isEditing = true;
408
+ break;
404
409
  default:
405
410
  break;
406
411
  }
@@ -1,100 +1,70 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.defineConfig = exports.getFallbackConfig = exports.buildFallbackConfig = void 0;
3
+ exports.defineConfig = exports.getFallbackConfig = void 0;
4
4
  exports.deepMerge = deepMerge;
5
5
  const core_1 = require("@sitecore-content-sdk/core");
6
6
  const tools_1 = require("@sitecore-content-sdk/core/tools");
7
7
  const config_cli_1 = require("../config-cli");
8
8
  const { ERROR_MESSAGES } = core_1.constants;
9
9
  /**
10
- * Default Sitecore config values sourced from an env-like record (e.g. `process.env` or
11
- * values mapped from an Angular `environment` object). Shared by {@link getFallbackConfig}
12
- * and framework-specific define-config wrappers.
13
- * @param {Record<string, string | undefined>} env - String key/value map using the same names as Node / Sitecore CLI env vars
14
- * @returns {SitecoreConfig} default config before merging `sitecore.config` overrides
15
- * @internal
10
+ * Provides default initial values for SitecoreConfig
11
+ * @returns default config
16
12
  */
17
- const buildFallbackConfig = (env) => {
18
- const rawEdgeUrl = env.CSDK_PUBLIC_SITECORE_EDGE_PLATFORM_HOSTNAME || env[tools_1.SITECORE_EDGE_PLATFORM_HOSTNAME_ENV];
19
- return {
20
- api: {
21
- edge: {
22
- contextId: env.SITECORE_EDGE_CONTEXT_ID || '',
23
- clientContextId: env.SITECORE_EDGE_CLIENT_CONTEXT_ID || env.CSDK_PUBLIC_SITECORE_EDGE_CONTEXT_ID || '',
24
- edgeUrl: (0, tools_1.resolveEdgeUrl)(rawEdgeUrl),
25
- },
26
- local: {
27
- apiKey: env.SITECORE_API_KEY ||
28
- env.CSDK_PUBLIC_SITECORE_API_KEY ||
29
- env.NEXT_PUBLIC_SITECORE_API_KEY ||
30
- '',
31
- apiHost: env.SITECORE_API_HOST ||
32
- env.CSDK_PUBLIC_SITECORE_API_HOST ||
33
- env.NEXT_PUBLIC_SITECORE_API_HOST ||
34
- '',
35
- path: '/sitecore/api/graph/edge',
36
- },
37
- },
38
- editingSecret: env.SITECORE_EDITING_SECRET || 'editing-secret-missing',
39
- retries: {
40
- count: 3,
41
- retryStrategy: new core_1.DefaultRetryStrategy({
42
- statusCodes: [429, 502, 503, 504, 520, 521, 522, 523, 524],
43
- }),
13
+ const getFallbackConfig = () => ({
14
+ api: {
15
+ edge: {
16
+ contextId: process.env.SITECORE_EDGE_CONTEXT_ID || '',
17
+ clientContextId: '',
18
+ edgeUrl: (0, tools_1.resolveEdgeUrl)(),
44
19
  },
45
- redirects: {
46
- enabled: env.NODE_ENV !== 'development',
47
- locales: ['en'],
20
+ local: {
21
+ apiKey: process.env.SITECORE_API_KEY || process.env.NEXT_PUBLIC_SITECORE_API_KEY || '',
22
+ apiHost: process.env.SITECORE_API_HOST || process.env.NEXT_PUBLIC_SITECORE_API_HOST || '',
23
+ path: '/sitecore/api/graph/edge',
48
24
  },
49
- multisite: {
25
+ },
26
+ editingSecret: process.env.SITECORE_EDITING_SECRET || 'editing-secret-missing',
27
+ retries: {
28
+ count: 3,
29
+ retryStrategy: new core_1.DefaultRetryStrategy({
30
+ statusCodes: [429, 502, 503, 504, 520, 521, 522, 523, 524],
31
+ }),
32
+ },
33
+ redirects: {
34
+ enabled: process.env.NODE_ENV !== 'development',
35
+ locales: ['en'],
36
+ },
37
+ multisite: {
38
+ enabled: true,
39
+ useCookieResolution: () => false,
40
+ },
41
+ personalize: {
42
+ enabled: process.env.NODE_ENV !== 'development',
43
+ edgeTimeout: parseInt(process.env.PERSONALIZE_MIDDLEWARE_EDGE_TIMEOUT, 10) || 400,
44
+ cdpTimeout: parseInt(process.env.PERSONALIZE_MIDDLEWARE_CDP_TIMEOUT, 10) || 400,
45
+ scope: '',
46
+ channel: 'WEB',
47
+ currency: 'USD',
48
+ },
49
+ defaultSite: '',
50
+ defaultLanguage: 'en',
51
+ layout: {
52
+ formatLayoutQuery: null,
53
+ },
54
+ dictionary: {
55
+ caching: {
50
56
  enabled: true,
51
- useCookieResolution: () => false,
52
- },
53
- personalize: {
54
- enabled: env.NODE_ENV !== 'development',
55
- edgeTimeout: parseInt(env.PERSONALIZE_MIDDLEWARE_EDGE_TIMEOUT || '', 10) || 400,
56
- cdpTimeout: parseInt(env.PERSONALIZE_MIDDLEWARE_CDP_TIMEOUT || '', 10) || 400,
57
- scope: env.SITECORE_PERSONALIZE_SCOPE ||
58
- env.CSDK_PUBLIC_PERSONALIZE_SCOPE ||
59
- env.NEXT_PUBLIC_PERSONALIZE_SCOPE ||
60
- '',
61
- channel: 'WEB',
62
- currency: 'USD',
63
- },
64
- defaultSite: env.SITECORE_DEFAULT_SITE ||
65
- env.CSDK_PUBLIC_SITECORE_DEFAULT_SITE ||
66
- env.CSDK_PUBLIC_DEFAULT_SITE ||
67
- '',
68
- defaultLanguage: env.SITECORE_DEFAULT_LANGUAGE || env.CSDK_PUBLIC_DEFAULT_LANGUAGE || 'en',
69
- layout: {
70
- formatLayoutQuery: null,
71
- },
72
- dictionary: {
73
- caching: {
74
- enabled: true,
75
- timeout: 60,
76
- },
57
+ timeout: 60,
77
58
  },
78
- rewriteMediaUrls: false,
79
- disableCodeGeneration: false,
80
- };
81
- };
82
- exports.buildFallbackConfig = buildFallbackConfig;
83
- /**
84
- * Provides default initial values for SitecoreConfig from `process.env`
85
- * TODO: remove in favor of buildFallbackConfig
86
- * @returns default config
87
- * @internal
88
- */
89
- const getFallbackConfig = () => {
90
- return (0, exports.buildFallbackConfig)(process.env);
91
- };
59
+ },
60
+ rewriteMediaUrls: false,
61
+ disableCodeGeneration: false,
62
+ });
92
63
  exports.getFallbackConfig = getFallbackConfig;
93
64
  /**
94
65
  * Deep merge utility that skips undefined or empty string values in the override.
95
66
  * @param {T} base base value
96
67
  * @param {DeepPartial<T>} [override] override value
97
- * @internal
98
68
  */
99
69
  function deepMerge(base, override) {
100
70
  if (!override)
@@ -137,7 +107,9 @@ const resolveConfig = (base, override) => {
137
107
  result.personalize.edgeTimeout = base.personalize.edgeTimeout;
138
108
  }
139
109
  // Resolve edge URL at config level so consumers use the resolved value directly
140
- result.api.edge.edgeUrl = (0, tools_1.resolveEdgeUrl)(result.api.edge.edgeUrl);
110
+ result.api.edge.edgeUrl = result.api.edge.edgeUrl
111
+ ? (0, tools_1.resolveEdgeUrl)(result.api.edge.edgeUrl)
112
+ : (0, tools_1.resolveEdgeUrl)();
141
113
  return result;
142
114
  };
143
115
  const validateApiConfiguration = (config) => {
@@ -210,15 +182,12 @@ const createConfigProxy = (config) => {
210
182
  /**
211
183
  * Accepts a SitecoreConfigInput object and returns full sitecore configuration
212
184
  * @param {SitecoreConfigInput} config override values to be written over default config settings
213
- * @param {Record<string, string | undefined>} [env] optional env-like record to source default config values from; defaults to `process.env` when not provided
214
185
  * @returns {SitecoreConfig} full sitecore configuration to use in application
215
186
  * @public
216
187
  */
217
- const defineConfig = (config = {}, env) => {
218
- const runtimeEnv = env || (typeof process !== 'undefined' ? process.env : {});
219
- const fallback = (0, exports.buildFallbackConfig)(runtimeEnv);
220
- const resolvedConfig = resolveConfig(fallback, config);
221
- const isCLI = (runtimeEnv === null || runtimeEnv === void 0 ? void 0 : runtimeEnv[config_cli_1.SITECORE_CLI_MODE_ENV_VAR]) === 'true';
188
+ const defineConfig = (config) => {
189
+ const resolvedConfig = resolveConfig((0, exports.getFallbackConfig)(), config);
190
+ const isCLI = process.env[config_cli_1.SITECORE_CLI_MODE_ENV_VAR] === 'true';
222
191
  // At `build time`, we create a proxy for the config object to validate the config by
223
192
  // accessing the literal paths instead of validating the whole object at once.
224
193
  // At `runtime` all the config should be validated to fail fast in case of invalid configuration.
@@ -1,10 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.deepMerge = exports.getFallbackConfig = exports.defineConfig = exports.buildFallbackConfig = exports.ComponentTemplateType = void 0;
3
+ exports.defineConfig = exports.ComponentTemplateType = void 0;
4
4
  var models_1 = require("./models");
5
5
  Object.defineProperty(exports, "ComponentTemplateType", { enumerable: true, get: function () { return models_1.ComponentTemplateType; } });
6
6
  var define_config_1 = require("./define-config");
7
- Object.defineProperty(exports, "buildFallbackConfig", { enumerable: true, get: function () { return define_config_1.buildFallbackConfig; } });
8
7
  Object.defineProperty(exports, "defineConfig", { enumerable: true, get: function () { return define_config_1.defineConfig; } });
9
- Object.defineProperty(exports, "getFallbackConfig", { enumerable: true, get: function () { return define_config_1.getFallbackConfig; } });
10
- Object.defineProperty(exports, "deepMerge", { enumerable: true, get: function () { return define_config_1.deepMerge; } });
@@ -33,6 +33,8 @@ var DesignLibraryMode;
33
33
  DesignLibraryMode["Normal"] = "library";
34
34
  /** Metadata mode */
35
35
  DesignLibraryMode["Metadata"] = "library-metadata";
36
+ /** Low code mode */
37
+ DesignLibraryMode["LowCode"] = "library-low-code";
36
38
  })(DesignLibraryMode || (exports.DesignLibraryMode = DesignLibraryMode = {}));
37
39
  /**
38
40
  * Variant generation mode for Design Library
@@ -71,13 +71,13 @@ exports.executeScriptElements = executeScriptElements;
71
71
  * @param {string} [componentId] - The unique identifier of the component
72
72
  * @internal
73
73
  */
74
- const subscribeToFormSubmitEvent = (formElement, componentId, signal) => {
74
+ const subscribeToFormSubmitEvent = (formElement, componentId) => {
75
75
  formElement.addEventListener('form:engage', ((e) => {
76
76
  const { formId, name } = e.detail;
77
77
  if (formId && name) {
78
78
  debug_1.default.form('Sending form event', formId, name);
79
79
  (0, events_1.form)(formId, name, (componentId === null || componentId === void 0 ? void 0 : componentId.replace(/-/g, '')) || '');
80
80
  }
81
- }), { signal });
81
+ }));
82
82
  };
83
83
  exports.subscribeToFormSubmitEvent = subscribeToFormSubmitEvent;
@@ -1,18 +1,4 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
2
  Object.defineProperty(exports, "__esModule", { value: true });
17
3
  exports.applyMediaUrlRewrite = exports.getDefaultMediaUrlTransformer = exports.containsDefaultEdgeHost = exports.rewriteEdgeHostInResponse = exports.getDesignLibraryStylesheetLinks = exports.GRAPHQL_LAYOUT_QUERY_NAME = exports.LayoutService = exports.getContentStylesheetLink = exports.EMPTY_DATE_FIELD_VALUE = exports.getDynamicPlaceholderPattern = exports.isDynamicPlaceholder = exports.isFieldValueEmpty = exports.getChildPlaceholder = exports.getRenderingParamString = exports.getFieldValue = exports.EDITING_COMPONENT_ID = exports.EDITING_COMPONENT_PLACEHOLDER = exports.RenderingType = exports.EditMode = exports.LayoutServicePageState = void 0;
18
4
  // layout
@@ -42,4 +28,3 @@ Object.defineProperty(exports, "rewriteEdgeHostInResponse", { enumerable: true,
42
28
  Object.defineProperty(exports, "containsDefaultEdgeHost", { enumerable: true, get: function () { return rewrite_edge_host_1.containsDefaultEdgeHost; } });
43
29
  Object.defineProperty(exports, "getDefaultMediaUrlTransformer", { enumerable: true, get: function () { return rewrite_edge_host_1.getDefaultMediaUrlTransformer; } });
44
30
  Object.defineProperty(exports, "applyMediaUrlRewrite", { enumerable: true, get: function () { return rewrite_edge_host_1.applyMediaUrlRewrite; } });
45
- __exportStar(require("./field-types"), exports);
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SiteResolver = exports.getHostnameFromHostHeader = exports.SITE_KEY = exports.SITE_PREFIX = exports.normalizeSiteRewrite = exports.getSiteRewriteData = exports.getSiteRewrite = exports.SitePathService = exports.SiteInfoService = exports.ErrorPagesService = exports.SitemapXmlService = exports.RedirectsService = exports.REDIRECT_TYPE_SERVER_TRANSFER = exports.REDIRECT_TYPE_302 = exports.REDIRECT_TYPE_301 = exports.RobotsService = void 0;
3
+ exports.SiteResolver = exports.SITE_KEY = exports.SITE_PREFIX = exports.normalizeSiteRewrite = exports.getSiteRewriteData = exports.getSiteRewrite = exports.SitePathService = exports.SiteInfoService = exports.ErrorPagesService = exports.SitemapXmlService = exports.RedirectsService = exports.REDIRECT_TYPE_SERVER_TRANSFER = exports.REDIRECT_TYPE_302 = exports.REDIRECT_TYPE_301 = exports.RobotsService = void 0;
4
4
  var robots_service_1 = require("./robots-service");
5
5
  Object.defineProperty(exports, "RobotsService", { enumerable: true, get: function () { return robots_service_1.RobotsService; } });
6
6
  var redirects_service_1 = require("./redirects-service");
@@ -22,6 +22,5 @@ Object.defineProperty(exports, "getSiteRewriteData", { enumerable: true, get: fu
22
22
  Object.defineProperty(exports, "normalizeSiteRewrite", { enumerable: true, get: function () { return utils_1.normalizeSiteRewrite; } });
23
23
  Object.defineProperty(exports, "SITE_PREFIX", { enumerable: true, get: function () { return utils_1.SITE_PREFIX; } });
24
24
  Object.defineProperty(exports, "SITE_KEY", { enumerable: true, get: function () { return utils_1.SITE_KEY; } });
25
- Object.defineProperty(exports, "getHostnameFromHostHeader", { enumerable: true, get: function () { return utils_1.getHostnameFromHostHeader; } });
26
25
  var site_resolver_1 = require("./site-resolver");
27
26
  Object.defineProperty(exports, "SiteResolver", { enumerable: true, get: function () { return site_resolver_1.SiteResolver; } });
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SITE_KEY = exports.SITE_PREFIX = void 0;
4
- exports.getHostnameFromHostHeader = getHostnameFromHostHeader;
5
4
  exports.getSiteRewrite = getSiteRewrite;
6
5
  exports.getSiteRewriteData = getSiteRewriteData;
7
6
  exports.normalizeSiteRewrite = normalizeSiteRewrite;
@@ -15,39 +14,6 @@ exports.SITE_PREFIX = '_site_';
15
14
  * @public
16
15
  */
17
16
  exports.SITE_KEY = 'sc_site';
18
- /**
19
- * Hostname from a `Host` or `x-forwarded-host` value, without port.
20
- * - `[::1]:3000` → `::1`
21
- * - `127.0.0.1:3000` → `127.0.0.1`
22
- * - `example.com:443` → `example.com`
23
- * - `::1` → `::1` (does not treat `:1` as a port)
24
- * @param {string} host - Raw header value
25
- * @returns {string} The hostname
26
- * @internal
27
- */
28
- function getHostnameFromHostHeader(host) {
29
- const trimmed = host.trim();
30
- // Bracketed IPv6: "[...]:port" or "[...]"
31
- if (trimmed.startsWith('[')) {
32
- const end = trimmed.indexOf(']');
33
- if (end !== -1) {
34
- return trimmed.slice(1, end).toLowerCase();
35
- }
36
- }
37
- // Unbracketed IPv6 (e.g. ::1, 2001:db8::1) — never strip on last ":digits"
38
- if (trimmed.includes('::')) {
39
- return trimmed.toLowerCase();
40
- }
41
- // IPv4 or DNS name with ":port" (port = decimal digits only)
42
- const lastColon = trimmed.lastIndexOf(':');
43
- if (lastColon > 0) {
44
- const after = trimmed.slice(lastColon + 1);
45
- if (/^\d+$/.test(after)) {
46
- return trimmed.slice(0, lastColon).toLowerCase();
47
- }
48
- }
49
- return trimmed.toLowerCase();
50
- }
51
17
  /**
52
18
  * Get a site rewrite path for given pathname
53
19
  * @param {string} pathname the pathname
@@ -1,10 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.buildComponentMapContent = exports.prepareComponentsForMap = exports.filterComponentsByType = exports.getComponentSpecUrl = exports.getComponentSpec = void 0;
3
+ exports.filterComponentsByType = exports.getComponentSpecUrl = exports.getComponentSpec = void 0;
4
4
  var component_generation_1 = require("./codegen/component-generation");
5
5
  Object.defineProperty(exports, "getComponentSpec", { enumerable: true, get: function () { return component_generation_1.getComponentSpec; } });
6
6
  Object.defineProperty(exports, "getComponentSpecUrl", { enumerable: true, get: function () { return component_generation_1.getComponentSpecUrl; } });
7
7
  var templating_1 = require("./templating");
8
8
  Object.defineProperty(exports, "filterComponentsByType", { enumerable: true, get: function () { return templating_1.filterComponentsByType; } });
9
- Object.defineProperty(exports, "prepareComponentsForMap", { enumerable: true, get: function () { return templating_1.prepareComponentsForMap; } });
10
- Object.defineProperty(exports, "buildComponentMapContent", { enumerable: true, get: function () { return templating_1.buildComponentMapContent; } });
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.toPascalCase = exports.componentUnitMocks = exports.getComponentList = void 0;
36
+ exports.componentUnitMocks = exports.getComponentList = void 0;
37
37
  exports.filterComponentsByType = filterComponentsByType;
38
38
  const glob = __importStar(require("glob"));
39
39
  /**
@@ -50,16 +50,6 @@ exports.componentUnitMocks = {
50
50
  };
51
51
  const componentNamePattern = /^[\/]*(.+[\/\\])*(.+)\.[jt]sx?$/;
52
52
  const componentPathPattern = /^([\/]*.+[\/\\].+)\..+$/;
53
- /**
54
- * Converts string to PascalCase.
55
- * @param {string} name - kebab-case, snake_case, dot.notation, camelCase, or PascalCase string (e.g. `my-component`, `my_component`, `my.component`, `myComponent`)
56
- * @returns {string} PascalCase string (e.g. `MyComponent`)
57
- */
58
- const toPascalCase = (name) => name
59
- .split(/[-_]/)
60
- .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
61
- .join('');
62
- exports.toPascalCase = toPascalCase;
63
53
  /**
64
54
  * Get list of components from @var path
65
55
  * Returns a list of components in the following format:
@@ -85,8 +75,8 @@ function _getComponentList(paths, exclude, includeVariants) {
85
75
  return {
86
76
  filePath,
87
77
  importPath: filePath.match(componentPathPattern)[1].replace(/\\/g, '/'), // use forward slashes for consistency
88
- componentName: (0, exports.toPascalCase)(name),
89
- moduleName: (0, exports.toPascalCase)(name).replace(/[^\w]+/g, ''),
78
+ componentName: name,
79
+ moduleName: name.replace(/[^\w]+/g, ''),
90
80
  };
91
81
  }));
92
82
  }, []);
@@ -1,9 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.buildComponentMapContent = exports.prepareComponentsForMap = exports.filterComponentsByType = exports.getComponentList = void 0;
3
+ exports.filterComponentsByType = exports.getComponentList = void 0;
4
4
  var components_1 = require("./components");
5
5
  Object.defineProperty(exports, "getComponentList", { enumerable: true, get: function () { return components_1.getComponentList; } });
6
6
  Object.defineProperty(exports, "filterComponentsByType", { enumerable: true, get: function () { return components_1.filterComponentsByType; } });
7
- var utils_1 = require("./utils");
8
- Object.defineProperty(exports, "prepareComponentsForMap", { enumerable: true, get: function () { return utils_1.prepareComponentsForMap; } });
9
- Object.defineProperty(exports, "buildComponentMapContent", { enumerable: true, get: function () { return utils_1.buildComponentMapContent; } });
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Event name for component preview updates from design library
3
+ * @internal
4
+ */
5
+ export const DESIGN_LIBRARY_COMPONENT_PREVIEW_EVENT_NAME = 'component:atoms:preview';
6
+ /**
7
+ * Event name for the atoms catalog registration (replaces legacy `atom:registry`).
8
+ * @internal
9
+ */
10
+ export const DESIGN_LIBRARY_ATOMS_CATALOG_EVENT_NAME = 'atoms:catalog';
11
+ /**
12
+ * Event to send to design library when rendering atoms error occurs
13
+ * @internal
14
+ */
15
+ export const DESIGN_LIBRARY_ATOMS_ERROR_EVENT_NAME = 'atoms:error';
@@ -0,0 +1,80 @@
1
+ import { constants } from '@sitecore-content-sdk/core';
2
+ import { validateEvent } from '../../editing/design-library';
3
+ import { DESIGN_LIBRARY_ATOMS_CATALOG_EVENT_NAME, DESIGN_LIBRARY_ATOMS_ERROR_EVENT_NAME, DESIGN_LIBRARY_COMPONENT_PREVIEW_EVENT_NAME, } from './constants';
4
+ const { ERROR_MESSAGES } = constants;
5
+ /**
6
+ * Creates a DesignLibraryAtomsCatalogEvent with the given catalog payload.
7
+ * @param {AtomsCatalogPayload} payload - serialized catalog data
8
+ * @returns {DesignLibraryAtomsCatalogEvent} the event ready to be posted to Design Studio
9
+ * @internal
10
+ */
11
+ export function getDesignLibraryAtomsCatalogEvent(payload) {
12
+ return {
13
+ name: DESIGN_LIBRARY_ATOMS_CATALOG_EVENT_NAME,
14
+ message: payload,
15
+ };
16
+ }
17
+ /**
18
+ * Generates a DesignLibraryAtomsErrorEvent depending on the type of error with the given error.
19
+ * @param {unknown} error - The error to be sent.
20
+ * @param {DesignLibraryAtomsError} type - The type of error.
21
+ * @returns An object representing the DesignLibraryAtomsErrorEvent.
22
+ * @internal
23
+ */
24
+ export function getDesignLibraryAtomsErrorEvent(error, type) {
25
+ return {
26
+ name: DESIGN_LIBRARY_ATOMS_ERROR_EVENT_NAME,
27
+ message: { error, type },
28
+ };
29
+ }
30
+ /**
31
+ * Sends a design library atoms error event to the design library
32
+ * @param {unknown} error - The error object or message to be sent.
33
+ * @param {DesignLibraryAtomsError} type - The type of error, as defined in DesignLibraryAtomsError.
34
+ * @internal
35
+ */
36
+ export const sendAtomsErrorEvent = (error, type) => {
37
+ const errorEvent = getDesignLibraryAtomsErrorEvent(error, type);
38
+ console.error(`Component Library: sending error event. ${ERROR_MESSAGES.CONTACT_SUPPORT}`, errorEvent);
39
+ if (typeof window !== 'undefined') {
40
+ const target = window.parent && window.parent !== window ? window.parent : window;
41
+ target.postMessage(errorEvent, '*');
42
+ }
43
+ };
44
+ /**
45
+ * Adds a handler for atom document update events from the design library.
46
+ * @param {(updatedRootComponent: Document) => void} callback - The callback to be invoked when a document update event is received.
47
+ * @returns A function to unsubscribe from the atom document update events.
48
+ * @internal
49
+ */
50
+ export const addDocumentUpdateHandler = (callback) => {
51
+ const handler = (e) => {
52
+ if (!validateEvent(e, DESIGN_LIBRARY_COMPONENT_PREVIEW_EVENT_NAME)) {
53
+ return;
54
+ }
55
+ console.debug('Component Library atoms: message received', e.data);
56
+ callback(e.data.document);
57
+ };
58
+ window.addEventListener('message', handler);
59
+ const unsubscribe = () => {
60
+ window.removeEventListener('message', handler);
61
+ };
62
+ return unsubscribe;
63
+ };
64
+ /**
65
+ * Adds a handler for component props (fields and params) updates from the design library.
66
+ * Listens for 'component:update' events and invokes the callback with the updated fields and params.
67
+ * @param {Function} callback - Called when a 'component:update' message is received.
68
+ * @returns A function to unsubscribe from the event.
69
+ * @internal
70
+ */
71
+ export const addComponentPropsUpdateHandler = (callback) => {
72
+ const handler = (e) => {
73
+ if (!validateEvent(e, 'component:update'))
74
+ return;
75
+ const details = e.data.details;
76
+ callback(details === null || details === void 0 ? void 0 : details.fields, details === null || details === void 0 ? void 0 : details.params);
77
+ };
78
+ window.addEventListener('message', handler);
79
+ return () => window.removeEventListener('message', handler);
80
+ };
@@ -0,0 +1,2 @@
1
+ export * from './events';
2
+ export * from './types';
@@ -0,0 +1 @@
1
+ export { getDesignLibraryAtomsCatalogEvent, sendAtomsErrorEvent, addDocumentUpdateHandler, addComponentPropsUpdateHandler, } from './design-library-bridge';
@@ -0,0 +1 @@
1
+ export {};