@sitecore-content-sdk/react 1.5.0 → 2.0.0-canary.10

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 (146) hide show
  1. package/LICENSE.txt +202 -202
  2. package/dist/cjs/components/ClientEditingChromesUpdate.js +1 -1
  3. package/dist/cjs/components/Date.js +14 -12
  4. package/dist/cjs/components/DefaultEmptyFieldEditingComponents.js +2 -1
  5. package/dist/cjs/components/DesignLibrary/DesignLibrary.js +12 -14
  6. package/dist/cjs/components/DesignLibrary/DesignLibraryApp.js +1 -1
  7. package/dist/cjs/components/DesignLibrary/DesignLibraryClientEvents.js +16 -8
  8. package/dist/cjs/components/DesignLibrary/DesignLibraryErrorBoundary.js +1 -1
  9. package/dist/cjs/components/DesignLibrary/DesignLibraryServer.js +15 -9
  10. package/dist/cjs/components/EditingScripts.js +4 -5
  11. package/dist/cjs/components/ErrorBoundary.js +10 -6
  12. package/dist/cjs/components/FieldMetadata.js +1 -1
  13. package/dist/cjs/components/File.js +4 -2
  14. package/dist/cjs/components/Form.js +14 -7
  15. package/dist/cjs/components/Image.js +14 -11
  16. package/dist/cjs/components/Link.js +20 -47
  17. package/dist/cjs/components/Placeholder/AppPlaceholder.js +56 -58
  18. package/dist/cjs/components/Placeholder/ClientComponentWrapper.js +5 -9
  19. package/dist/cjs/components/Placeholder/Placeholder.js +22 -103
  20. package/dist/cjs/components/Placeholder/PlaceholderMetadata.js +2 -2
  21. package/dist/cjs/components/Placeholder/index.js +1 -2
  22. package/dist/cjs/components/Placeholder/placeholder-utils.js +11 -38
  23. package/dist/cjs/components/RichText.js +19 -50
  24. package/dist/cjs/components/SitecoreProvider.js +81 -41
  25. package/dist/cjs/components/Text.js +13 -9
  26. package/dist/cjs/enhancers/withAppPlaceholder.js +6 -0
  27. package/dist/cjs/enhancers/withDatasourceCheck.js +4 -3
  28. package/dist/cjs/enhancers/withEditorChromes.js +50 -15
  29. package/dist/cjs/enhancers/withEmptyFieldEditingComponent.js +9 -39
  30. package/dist/cjs/enhancers/withFieldMetadata.js +9 -39
  31. package/dist/cjs/enhancers/withPlaceholder.js +16 -52
  32. package/dist/cjs/enhancers/withSitecore.js +5 -29
  33. package/dist/cjs/index.js +16 -13
  34. package/dist/cjs/search/index.js +3 -1
  35. package/dist/cjs/search/utils.js +2 -2
  36. package/dist/cjs/server-actions/update-server-component-action.js +10 -10
  37. package/dist/cjs/utils.js +1 -1
  38. package/dist/esm/components/ClientEditingChromesUpdate.js +1 -1
  39. package/dist/esm/components/Date.js +14 -12
  40. package/dist/esm/components/DefaultEmptyFieldEditingComponents.js +2 -1
  41. package/dist/esm/components/DesignLibrary/DesignLibrary.js +11 -14
  42. package/dist/esm/components/DesignLibrary/DesignLibraryApp.js +1 -1
  43. package/dist/esm/components/DesignLibrary/DesignLibraryClientEvents.js +15 -7
  44. package/dist/esm/components/DesignLibrary/DesignLibraryErrorBoundary.js +1 -1
  45. package/dist/esm/components/DesignLibrary/DesignLibraryServer.js +15 -9
  46. package/dist/esm/components/EditingScripts.js +2 -3
  47. package/dist/esm/components/ErrorBoundary.js +10 -6
  48. package/dist/esm/components/FieldMetadata.js +1 -1
  49. package/dist/esm/components/File.js +4 -2
  50. package/dist/esm/components/Form.js +12 -5
  51. package/dist/esm/components/Image.js +14 -11
  52. package/dist/esm/components/Link.js +17 -14
  53. package/dist/esm/components/Placeholder/AppPlaceholder.js +57 -59
  54. package/dist/esm/components/Placeholder/ClientComponentWrapper.js +4 -8
  55. package/dist/esm/components/Placeholder/Placeholder.js +21 -99
  56. package/dist/esm/components/Placeholder/PlaceholderMetadata.js +2 -2
  57. package/dist/esm/components/Placeholder/index.js +1 -1
  58. package/dist/esm/components/Placeholder/placeholder-utils.js +9 -35
  59. package/dist/esm/components/RichText.js +16 -17
  60. package/dist/esm/components/SitecoreProvider.js +46 -40
  61. package/dist/esm/components/Text.js +13 -9
  62. package/dist/esm/enhancers/withAppPlaceholder.js +6 -0
  63. package/dist/esm/enhancers/withDatasourceCheck.js +3 -2
  64. package/dist/esm/enhancers/withEditorChromes.js +17 -12
  65. package/dist/esm/enhancers/withEmptyFieldEditingComponent.js +6 -6
  66. package/dist/esm/enhancers/withFieldMetadata.js +6 -6
  67. package/dist/esm/enhancers/withPlaceholder.js +15 -52
  68. package/dist/esm/enhancers/withSitecore.js +6 -29
  69. package/dist/esm/index.js +11 -10
  70. package/dist/esm/search/index.js +1 -0
  71. package/dist/esm/search/utils.js +1 -1
  72. package/dist/esm/server-actions/update-server-component-action.js +4 -4
  73. package/dist/esm/utils.js +1 -1
  74. package/package.json +114 -113
  75. package/types/components/Date.d.ts +1 -1
  76. package/types/components/Date.d.ts.map +1 -1
  77. package/types/components/DefaultEmptyFieldEditingComponents.d.ts.map +1 -1
  78. package/types/components/DesignLibrary/DesignLibrary.d.ts +1 -7
  79. package/types/components/DesignLibrary/DesignLibrary.d.ts.map +1 -1
  80. package/types/components/DesignLibrary/DesignLibraryClientEvents.d.ts.map +1 -1
  81. package/types/components/DesignLibrary/DesignLibraryServer.d.ts.map +1 -1
  82. package/types/components/DesignLibrary/models.d.ts +12 -13
  83. package/types/components/DesignLibrary/models.d.ts.map +1 -1
  84. package/types/components/EditingScripts.d.ts +2 -2
  85. package/types/components/EditingScripts.d.ts.map +1 -1
  86. package/types/components/ErrorBoundary.d.ts +4 -4
  87. package/types/components/ErrorBoundary.d.ts.map +1 -1
  88. package/types/components/FEaaS/models.d.ts +2 -2
  89. package/types/components/FEaaS/models.d.ts.map +1 -1
  90. package/types/components/File.d.ts.map +1 -1
  91. package/types/components/Form.d.ts +1 -1
  92. package/types/components/Form.d.ts.map +1 -1
  93. package/types/components/Image.d.ts +1 -1
  94. package/types/components/Image.d.ts.map +1 -1
  95. package/types/components/Link.d.ts +1 -1
  96. package/types/components/Link.d.ts.map +1 -1
  97. package/types/components/Placeholder/AppPlaceholder.d.ts +1 -1
  98. package/types/components/Placeholder/AppPlaceholder.d.ts.map +1 -1
  99. package/types/components/Placeholder/ClientComponentWrapper.d.ts +3 -3
  100. package/types/components/Placeholder/ClientComponentWrapper.d.ts.map +1 -1
  101. package/types/components/Placeholder/Placeholder.d.ts +4 -26
  102. package/types/components/Placeholder/Placeholder.d.ts.map +1 -1
  103. package/types/components/Placeholder/PlaceholderMetadata.d.ts +1 -1
  104. package/types/components/Placeholder/PlaceholderMetadata.d.ts.map +1 -1
  105. package/types/components/Placeholder/index.d.ts +1 -1
  106. package/types/components/Placeholder/index.d.ts.map +1 -1
  107. package/types/components/Placeholder/models.d.ts +38 -61
  108. package/types/components/Placeholder/models.d.ts.map +1 -1
  109. package/types/components/Placeholder/placeholder-utils.d.ts +8 -15
  110. package/types/components/Placeholder/placeholder-utils.d.ts.map +1 -1
  111. package/types/components/RichText.d.ts +3 -1
  112. package/types/components/RichText.d.ts.map +1 -1
  113. package/types/components/SitecoreProvider.d.ts +46 -17
  114. package/types/components/SitecoreProvider.d.ts.map +1 -1
  115. package/types/components/Text.d.ts +1 -1
  116. package/types/components/Text.d.ts.map +1 -1
  117. package/types/enhancers/withAppPlaceholder.d.ts +8 -2
  118. package/types/enhancers/withAppPlaceholder.d.ts.map +1 -1
  119. package/types/enhancers/withDatasourceCheck.d.ts +1 -1
  120. package/types/enhancers/withDatasourceCheck.d.ts.map +1 -1
  121. package/types/enhancers/withEditorChromes.d.ts +4 -1
  122. package/types/enhancers/withEditorChromes.d.ts.map +1 -1
  123. package/types/enhancers/withEmptyFieldEditingComponent.d.ts +6 -4
  124. package/types/enhancers/withEmptyFieldEditingComponent.d.ts.map +1 -1
  125. package/types/enhancers/withFieldMetadata.d.ts +4 -2
  126. package/types/enhancers/withFieldMetadata.d.ts.map +1 -1
  127. package/types/enhancers/withPlaceholder.d.ts +14 -32
  128. package/types/enhancers/withPlaceholder.d.ts.map +1 -1
  129. package/types/enhancers/withSitecore.d.ts +9 -51
  130. package/types/enhancers/withSitecore.d.ts.map +1 -1
  131. package/types/index.d.ts +12 -11
  132. package/types/index.d.ts.map +1 -1
  133. package/types/search/index.d.ts +1 -0
  134. package/types/search/index.d.ts.map +1 -1
  135. package/types/server-actions/update-server-component-action.d.ts +2 -2
  136. package/types/server-actions/update-server-component-action.d.ts.map +1 -1
  137. package/types/utils.d.ts +1 -1
  138. package/types/utils.d.ts.map +1 -1
  139. package/dist/cjs/enhancers/withComponentMap.js +0 -24
  140. package/dist/cjs/enhancers/withLoadImportMap.js +0 -53
  141. package/dist/esm/enhancers/withComponentMap.js +0 -18
  142. package/dist/esm/enhancers/withLoadImportMap.js +0 -17
  143. package/types/enhancers/withComponentMap.d.ts +0 -13
  144. package/types/enhancers/withComponentMap.d.ts.map +0 -1
  145. package/types/enhancers/withLoadImportMap.d.ts +0 -22
  146. package/types/enhancers/withLoadImportMap.d.ts.map +0 -1
@@ -39,11 +39,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
39
39
  Object.defineProperty(exports, "__esModule", { value: true });
40
40
  exports.DesignLibraryServerPreview = exports.DesignLibraryServerVariantGeneration = exports.DesignLibraryServer = exports.__mockDependencies = void 0;
41
41
  const react_1 = __importDefault(require("react"));
42
- const layout_1 = require("@sitecore-content-sdk/core/layout");
42
+ const layout_1 = require("@sitecore-content-sdk/content/layout");
43
43
  const DesignLibraryClientEvents_1 = require("./DesignLibraryClientEvents");
44
- const globalCache = __importStar(require("@sitecore-content-sdk/core/utils"));
45
- const editing_1 = require("@sitecore-content-sdk/core/editing");
46
- const codegen = __importStar(require("@sitecore-content-sdk/core/codegen"));
44
+ const globalCache = __importStar(require("@sitecore-content-sdk/core/tools"));
45
+ const editing_1 = require("@sitecore-content-sdk/content/editing");
46
+ const codegen = __importStar(require("@sitecore-content-sdk/content/codegen"));
47
47
  const Placeholder_1 = require("../Placeholder");
48
48
  const DesignLibraryErrorBoundary_1 = require("./DesignLibraryErrorBoundary");
49
49
  const ErrorBoundary_1 = require("../ErrorBoundary");
@@ -103,10 +103,14 @@ const DesignLibraryServerVariantGeneration = async ({ page, rendering, loadServe
103
103
  let Component;
104
104
  let componentInitError;
105
105
  let generatedComponentData;
106
+ const getComponentInitError = (type, error) => ({
107
+ type,
108
+ message: error instanceof Error ? error.message : String(error),
109
+ });
106
110
  // load importmap and importmap payload to pass to FE
107
111
  // if not provided, or errors during load set error to pass to FE
108
112
  if (!loadServerImportMap) {
109
- componentInitError = 'No loadImportMap provided';
113
+ componentInitError = getComponentInitError(codegen.DesignLibraryPreviewError.ImportMapMissing, 'No loadImportMap provided');
110
114
  }
111
115
  else {
112
116
  try {
@@ -115,7 +119,7 @@ const DesignLibraryServerVariantGeneration = async ({ page, rendering, loadServe
115
119
  importMapInfo = getImportMapInfo(importMap);
116
120
  }
117
121
  catch (e) {
118
- componentInitError = `Error loading import map: ${e}`;
122
+ componentInitError = getComponentInitError(codegen.DesignLibraryPreviewError.ImportMapLoad, `Error loading import map: ${e}`);
119
123
  }
120
124
  }
121
125
  let componentToUpdate = (_b = (_a = rendering === null || rendering === void 0 ? void 0 : rendering.placeholders) === null || _a === void 0 ? void 0 : _a[layout_1.EDITING_COMPONENT_PLACEHOLDER]) === null || _b === void 0 ? void 0 : _b[0];
@@ -144,7 +148,7 @@ const DesignLibraryServerVariantGeneration = async ({ page, rendering, loadServe
144
148
  }
145
149
  catch (error) {
146
150
  // error during component initialization - send error to client
147
- componentInitError = error.toString();
151
+ componentInitError = getComponentInitError(codegen.DesignLibraryPreviewError.RenderInit, error);
148
152
  }
149
153
  }
150
154
  }
@@ -152,7 +156,9 @@ const DesignLibraryServerVariantGeneration = async ({ page, rendering, loadServe
152
156
  // we have a preview update, get it and clean the cache
153
157
  designLibraryStatus = editing_1.DesignLibraryStatus.RENDERED;
154
158
  const previewData = getCacheAndClean(componentPreviewKey);
155
- componentInitError = previewData === null || previewData === void 0 ? void 0 : previewData.error;
159
+ if (previewData === null || previewData === void 0 ? void 0 : previewData.error) {
160
+ componentInitError = getComponentInitError(codegen.DesignLibraryPreviewError.GeneratedComponentFetch, previewData.error);
161
+ }
156
162
  if (previewData === null || previewData === void 0 ? void 0 : previewData.generatedComponentData) {
157
163
  generatedComponentData = previewData.generatedComponentData;
158
164
  try {
@@ -161,7 +167,7 @@ const DesignLibraryServerVariantGeneration = async ({ page, rendering, loadServe
161
167
  }
162
168
  catch (error) {
163
169
  // error during component initialization - send error to client
164
- componentInitError = error.toString();
170
+ componentInitError = getComponentInitError(codegen.DesignLibraryPreviewError.RenderInit, error);
165
171
  }
166
172
  }
167
173
  }
@@ -6,9 +6,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.EditingScripts = void 0;
8
8
  const react_1 = __importDefault(require("react"));
9
- const withSitecore_1 = require("../enhancers/withSitecore");
10
- const editing_1 = require("@sitecore-content-sdk/core/editing");
11
- const editing_2 = require("@sitecore-content-sdk/core/editing");
9
+ const SitecoreProvider_1 = require("./SitecoreProvider");
10
+ const editing_1 = require("@sitecore-content-sdk/content/editing");
12
11
  /**
13
12
  * Renders client scripts and data for editing/preview mode for Pages.
14
13
  * Renders script required for the Design Library (when mode.isDesignLibrary is true).
@@ -17,7 +16,7 @@ const editing_2 = require("@sitecore-content-sdk/core/editing");
17
16
  */
18
17
  const EditingScripts = () => {
19
18
  var _a;
20
- const { page: { mode, layout }, api, } = (0, withSitecore_1.useSitecore)();
19
+ const { page: { mode, layout }, api, } = (0, SitecoreProvider_1.useSitecore)();
21
20
  const { clientData, clientScripts } = layout.sitecore.context;
22
21
  // Don't render anything if not in editing mode and rendering type is not component
23
22
  if (mode.isNormal || mode.isPreview) {
@@ -32,7 +31,7 @@ const EditingScripts = () => {
32
31
  const month = String(now.getUTCMonth() + 1).padStart(2, '0');
33
32
  const year = String(now.getUTCFullYear());
34
33
  const cacheTimestamp = `${hour}-${day}-${month}-${year}`;
35
- const scriptUrl = `${(0, editing_2.getDesignLibraryScriptLink)((_a = api === null || api === void 0 ? void 0 : api.edge) === null || _a === void 0 ? void 0 : _a.edgeUrl)}?cb=${cacheTimestamp}`;
34
+ const scriptUrl = `${(0, editing_1.getDesignLibraryScriptLink)((_a = api === null || api === void 0 ? void 0 : api.edge) === null || _a === void 0 ? void 0 : _a.edgeUrl)}?cb=${cacheTimestamp}`;
36
35
  return (react_1.default.createElement(react_1.default.Fragment, null,
37
36
  react_1.default.createElement("script", { src: scriptUrl, suppressHydrationWarning: true })));
38
37
  }
@@ -36,7 +36,7 @@ var __importStar = (this && this.__importStar) || (function () {
36
36
  Object.defineProperty(exports, "__esModule", { value: true });
37
37
  exports.ErrorComponent = void 0;
38
38
  const react_1 = __importStar(require("react"));
39
- const withSitecore_1 = require("../enhancers/withSitecore");
39
+ const SitecoreProvider_1 = require("./SitecoreProvider");
40
40
  /**
41
41
  * Simple error component applying basic error styling.
42
42
  * @param {object} props - Either with `message` (string) or with `children` (ReactNode), but not both.
@@ -45,7 +45,7 @@ const ErrorComponent = (props) => {
45
45
  return (react_1.default.createElement("div", { className: "sc-content-sdk-placeholder-error" }, props.message ? props.message : props.children));
46
46
  };
47
47
  exports.ErrorComponent = ErrorComponent;
48
- class ErrorBoundary extends react_1.default.Component {
48
+ class ErrorBoundaryClass extends react_1.default.Component {
49
49
  constructor(props) {
50
50
  super(props);
51
51
  this.defaultErrorMessage = 'There was a problem loading this section.';
@@ -69,7 +69,7 @@ class ErrorBoundary extends react_1.default.Component {
69
69
  return this.isInDevMode() || this.props.page.mode.isEditing || this.props.page.mode.isPreview;
70
70
  }
71
71
  render() {
72
- var _a;
72
+ var _a, _b;
73
73
  if (this.state.error) {
74
74
  if (this.props.errorComponent) {
75
75
  return react_1.default.createElement(this.props.errorComponent, { error: this.state.error });
@@ -92,10 +92,14 @@ class ErrorBoundary extends react_1.default.Component {
92
92
  }
93
93
  }
94
94
  // do not apply suspense when suspense is disabled or when on already dynamic components
95
- if (this.props.disableSuspense || this.props.isDynamic) {
95
+ if (((_b = this.props.disableSuspense) !== null && _b !== void 0 ? _b : true) || this.props.isDynamic)
96
96
  return this.props.children;
97
- }
98
97
  return (react_1.default.createElement(react_1.Suspense, { fallback: react_1.default.createElement("h4", null, this.props.componentLoadingMessage || this.defaultLoadingMessage) }, this.props.children));
99
98
  }
100
99
  }
101
- exports.default = (0, withSitecore_1.withSitecore)()(ErrorBoundary);
100
+ const ErrorBoundary = (props) => {
101
+ const { page } = (0, SitecoreProvider_1.useSitecore)();
102
+ const boundaryProps = Object.assign(Object.assign({}, props), { page });
103
+ return react_1.default.createElement(ErrorBoundaryClass, Object.assign({}, boundaryProps));
104
+ };
105
+ exports.default = ErrorBoundary;
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.FieldMetadata = void 0;
7
7
  const react_1 = __importDefault(require("react"));
8
- const editing_1 = require("@sitecore-content-sdk/core/editing");
8
+ const editing_1 = require("@sitecore-content-sdk/content/editing");
9
9
  /**
10
10
  * The component which renders field metadata markup
11
11
  * @param {FieldMetadataProps} props the props of the component
@@ -15,7 +15,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.File = void 0;
18
- const layout_1 = require("@sitecore-content-sdk/core/layout");
18
+ const layout_1 = require("@sitecore-content-sdk/content/layout");
19
19
  const react_1 = __importDefault(require("react"));
20
20
  /**
21
21
  * The File component.
@@ -37,7 +37,9 @@ const File = (_a) => {
37
37
  const anchorAttrs = {
38
38
  href: file.src,
39
39
  };
40
- return react_1.default.createElement('a', Object.assign(Object.assign({}, anchorAttrs), otherProps), linkText, children);
40
+ return (react_1.default.createElement("a", Object.assign({}, anchorAttrs, otherProps),
41
+ linkText,
42
+ children));
41
43
  };
42
44
  exports.File = File;
43
45
  exports.File.displayName = 'File';
@@ -36,10 +36,10 @@ var __importStar = (this && this.__importStar) || (function () {
36
36
  Object.defineProperty(exports, "__esModule", { value: true });
37
37
  exports.Form = exports.mockFormModule = void 0;
38
38
  const react_1 = __importStar(require("react"));
39
- const core_1 = require("@sitecore-content-sdk/core");
40
- const withSitecore_1 = require("../enhancers/withSitecore");
39
+ const content_1 = require("@sitecore-content-sdk/content");
40
+ const SitecoreProvider_1 = require("./SitecoreProvider");
41
41
  const ErrorBoundary_1 = require("./ErrorBoundary");
42
- let { executeScriptElements, loadForm, subscribeToFormSubmitEvent } = core_1.form;
42
+ let { executeScriptElements, loadForm, subscribeToFormSubmitEvent } = content_1.form;
43
43
  /**
44
44
  * Mock function to replace the form module functions for `testing` purposes.
45
45
  * @param {any} formModule - The form module to mock
@@ -56,11 +56,11 @@ exports.mockFormModule = mockFormModule;
56
56
  * @public
57
57
  */
58
58
  const Form = ({ params, rendering }) => {
59
- var _a;
59
+ var _a, _b, _c, _d, _e;
60
60
  const id = params === null || params === void 0 ? void 0 : params.RenderingIdentifier;
61
61
  const [error, setError] = (0, react_1.useState)(false);
62
62
  const [content, setContent] = (0, react_1.useState)('');
63
- const context = (0, withSitecore_1.useSitecore)();
63
+ const context = (0, SitecoreProvider_1.useSitecore)();
64
64
  const formRef = (0, react_1.useRef)(null);
65
65
  const isEditing = context.page.mode.isEditing;
66
66
  (0, react_1.useEffect)(() => {
@@ -91,10 +91,17 @@ const Form = ({ params, rendering }) => {
91
91
  }
92
92
  executeScriptElements(formRef.current);
93
93
  }
94
- }, [content]);
94
+ }, [
95
+ content,
96
+ isEditing,
97
+ params.FormId,
98
+ rendering.uid,
99
+ (_b = (_a = context.api) === null || _a === void 0 ? void 0 : _a.edge) === null || _b === void 0 ? void 0 : _b.clientContextId,
100
+ (_d = (_c = context.api) === null || _c === void 0 ? void 0 : _c.edge) === null || _d === void 0 ? void 0 : _d.edgeUrl,
101
+ ]);
95
102
  if (isEditing && error) {
96
103
  return react_1.default.createElement(ErrorBoundary_1.ErrorComponent, { message: "There was a problem loading this section" });
97
104
  }
98
- return (react_1.default.createElement("div", { ref: formRef, dangerouslySetInnerHTML: { __html: content }, className: (_a = params.styles) === null || _a === void 0 ? void 0 : _a.trimEnd(), id: id ? id : undefined }));
105
+ return (react_1.default.createElement("div", { ref: formRef, dangerouslySetInnerHTML: { __html: content }, className: (_e = params.styles) === null || _e === void 0 ? void 0 : _e.trimEnd(), id: id ? id : undefined }));
99
106
  };
100
107
  exports.Form = Form;
@@ -15,14 +15,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.Image = void 0;
18
- /* eslint-disable no-unused-vars */
19
- const media_1 = require("@sitecore-content-sdk/core/media");
18
+ const media_1 = require("@sitecore-content-sdk/content/media");
20
19
  const react_1 = __importDefault(require("react"));
21
20
  const utils_1 = require("../utils");
22
21
  const withFieldMetadata_1 = require("../enhancers/withFieldMetadata");
23
22
  const withEmptyFieldEditingComponent_1 = require("../enhancers/withEmptyFieldEditingComponent");
24
23
  const DefaultEmptyFieldEditingComponents_1 = require("./DefaultEmptyFieldEditingComponents");
25
- const layout_1 = require("@sitecore-content-sdk/core/layout");
24
+ const layout_1 = require("@sitecore-content-sdk/content/layout");
26
25
  const getImageAttrs = (_a, imageParams, mediaUrlPrefix) => {
27
26
  var { src, srcSet } = _a, otherAttrs = __rest(_a, ["src", "srcSet"]);
28
27
  if (!src) {
@@ -40,17 +39,13 @@ const getImageAttrs = (_a, imageParams, mediaUrlPrefix) => {
40
39
  newAttrs.src = resolvedSrc;
41
40
  return newAttrs;
42
41
  };
43
- /**
44
- * The Image component.
45
- * @param {ImageProps} props component props
46
- * @public
47
- */
48
- exports.Image = (0, withFieldMetadata_1.withFieldMetadata)((0, withEmptyFieldEditingComponent_1.withEmptyFieldEditingComponent)((_a) => {
49
- var { editable = true, imageParams, field, mediaUrlPrefix } = _a, otherProps = __rest(_a, ["editable", "imageParams", "field", "mediaUrlPrefix"]);
42
+ const ImageComponent = (_a) => {
43
+ var { imageParams, field, mediaUrlPrefix } = _a, otherProps = __rest(_a, ["imageParams", "field", "mediaUrlPrefix"]);
50
44
  const dynamicMedia = field;
51
45
  if ((0, layout_1.isFieldValueEmpty)(dynamicMedia)) {
52
46
  return null;
53
47
  }
48
+ delete otherProps.editable; // prevent editable from being passed to the DOM
54
49
  // some wise-guy/gal is passing in a 'raw' image object value
55
50
  const img = dynamicMedia.src
56
51
  ? field
@@ -67,5 +62,13 @@ exports.Image = (0, withFieldMetadata_1.withFieldMetadata)((0, withEmptyFieldEdi
67
62
  return react_1.default.createElement("img", Object.assign({}, attrs));
68
63
  }
69
64
  return null; // we can't handle the truth
70
- }, { defaultEmptyFieldEditingComponent: DefaultEmptyFieldEditingComponents_1.DefaultEmptyFieldEditingComponentImage }));
65
+ };
66
+ /**
67
+ * The Image component.
68
+ * @param {ImageProps} props component props
69
+ * @public
70
+ */
71
+ exports.Image = (0, withFieldMetadata_1.withFieldMetadata)((0, withEmptyFieldEditingComponent_1.withEmptyFieldEditingComponent)(ImageComponent, {
72
+ defaultEmptyFieldEditingComponent: DefaultEmptyFieldEditingComponents_1.DefaultEmptyFieldEditingComponentImage,
73
+ }));
71
74
  exports.Image.displayName = 'Image';
@@ -1,38 +1,5 @@
1
1
  "use strict";
2
2
  'use client';
3
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
- if (k2 === undefined) k2 = k;
5
- var desc = Object.getOwnPropertyDescriptor(m, k);
6
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
- desc = { enumerable: true, get: function() { return m[k]; } };
8
- }
9
- Object.defineProperty(o, k2, desc);
10
- }) : (function(o, m, k, k2) {
11
- if (k2 === undefined) k2 = k;
12
- o[k2] = m[k];
13
- }));
14
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
- Object.defineProperty(o, "default", { enumerable: true, value: v });
16
- }) : function(o, v) {
17
- o["default"] = v;
18
- });
19
- var __importStar = (this && this.__importStar) || (function () {
20
- var ownKeys = function(o) {
21
- ownKeys = Object.getOwnPropertyNames || function (o) {
22
- var ar = [];
23
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
- return ar;
25
- };
26
- return ownKeys(o);
27
- };
28
- return function (mod) {
29
- if (mod && mod.__esModule) return mod;
30
- var result = {};
31
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
- __setModuleDefault(result, mod);
33
- return result;
34
- };
35
- })();
36
3
  var __rest = (this && this.__rest) || function (s, e) {
37
4
  var t = {};
38
5
  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
@@ -44,24 +11,21 @@ var __rest = (this && this.__rest) || function (s, e) {
44
11
  }
45
12
  return t;
46
13
  };
14
+ var __importDefault = (this && this.__importDefault) || function (mod) {
15
+ return (mod && mod.__esModule) ? mod : { "default": mod };
16
+ };
47
17
  Object.defineProperty(exports, "__esModule", { value: true });
48
18
  exports.Link = void 0;
49
- const react_1 = __importStar(require("react"));
50
- const layout_1 = require("@sitecore-content-sdk/core/layout");
19
+ const react_1 = __importDefault(require("react"));
20
+ const layout_1 = require("@sitecore-content-sdk/content/layout");
51
21
  const withFieldMetadata_1 = require("../enhancers/withFieldMetadata");
52
22
  const withEmptyFieldEditingComponent_1 = require("../enhancers/withEmptyFieldEditingComponent");
53
23
  const DefaultEmptyFieldEditingComponents_1 = require("./DefaultEmptyFieldEditingComponents");
54
- /**
55
- * The Link component.
56
- * @param {LinkProps} props component props
57
- * @public
58
- */
59
- exports.Link = (0, withFieldMetadata_1.withFieldMetadata)((0, withEmptyFieldEditingComponent_1.withEmptyFieldEditingComponent)((0, react_1.forwardRef)(
60
- // eslint-disable-next-line no-unused-vars
61
- (_a, ref) => {
62
- var { field, editable = true, showLinkTextWithChildrenPresent } = _a, otherProps = __rest(_a, ["field", "editable", "showLinkTextWithChildrenPresent"]);
24
+ const LinkComponent = (_a) => {
25
+ var { field, showLinkTextWithChildrenPresent, ref } = _a, otherProps = __rest(_a, ["field", "showLinkTextWithChildrenPresent", "ref"]);
63
26
  const children = otherProps.children;
64
27
  const dynamicField = field;
28
+ delete otherProps.editable; // prevent editable from being passed to the DOM
65
29
  if ((0, layout_1.isFieldValueEmpty)(dynamicField)) {
66
30
  return null;
67
31
  }
@@ -85,7 +49,16 @@ exports.Link = (0, withFieldMetadata_1.withFieldMetadata)((0, withEmptyFieldEdit
85
49
  anchorAttrs.rel = 'noopener noreferrer';
86
50
  }
87
51
  const linkText = showLinkTextWithChildrenPresent || !children ? link.text || link.href : null;
88
- const element = react_1.default.createElement('a', Object.assign(Object.assign(Object.assign({}, anchorAttrs), otherProps), { key: 'link', ref }), linkText, children);
89
- return react_1.default.createElement(react_1.default.Fragment, null, element);
90
- }), { defaultEmptyFieldEditingComponent: DefaultEmptyFieldEditingComponents_1.DefaultEmptyFieldEditingComponentText, isForwardRef: true }), true);
52
+ return (react_1.default.createElement("a", Object.assign({}, anchorAttrs, otherProps, { key: "link", ref: ref }),
53
+ linkText,
54
+ children));
55
+ };
56
+ /**
57
+ * The Link component.
58
+ * @param {LinkProps} props component props
59
+ * @public
60
+ */
61
+ exports.Link = (0, withFieldMetadata_1.withFieldMetadata)((0, withEmptyFieldEditingComponent_1.withEmptyFieldEditingComponent)(LinkComponent, {
62
+ defaultEmptyFieldEditingComponent: DefaultEmptyFieldEditingComponents_1.DefaultEmptyFieldEditingComponentText,
63
+ }));
91
64
  exports.Link.displayName = 'Link';
@@ -6,74 +6,72 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.AppPlaceholder = void 0;
7
7
  const placeholder_utils_1 = require("./placeholder-utils");
8
8
  const react_1 = __importDefault(require("react"));
9
- const PlaceholderMetadata_1 = require("./PlaceholderMetadata");
10
9
  const ErrorBoundary_1 = __importDefault(require("../ErrorBoundary"));
11
10
  const ClientComponentWrapper_1 = require("./ClientComponentWrapper");
12
11
  const _rsc_env_1 = require("#rsc-env");
13
- /**
14
- * The implemention of placeholder compatible with React Server Components.
15
- * Renders components from the layout data for the given placeholder name, with consideration for page edit mode.
16
- * Pulls components from the provided component map.
17
- * @param {AppPlaceholderProps} props Placeholder props
18
- * @returns {React.ReactNode | React.ReactElement[]} rendered component(s)
19
- * @public
20
- */
21
- const AppPlaceholder = (props) => {
22
- const { rendering: parentRendering, componentMap, page } = props;
23
- const placeholderRenderings = (0, placeholder_utils_1.getPlaceholderRenderings)(parentRendering, props.name, page.mode.isEditing);
24
- const components = placeholderRenderings
25
- .map((rendering, index) => {
26
- const { component: Component, isEmpty, componentType, dynamic, } = (0, placeholder_utils_1.getComponentForRendering)(rendering, props.name, componentMap, props.hiddenRenderingComponent, props.missingComponentComponent);
27
- const isClient = componentType === 'client';
28
- const key = rendering.uid || `component-${index}`;
29
- // Use rsc context to determine the current runtime
30
- const componentRuntime = _rsc_env_1.rsc ? 'server' : 'client';
31
- const renderedProps = (0, placeholder_utils_1.getAppComponentProps)(props, rendering);
32
- const finalRenderedProps = props.modifyComponentProps
33
- ? props.modifyComponentProps(renderedProps)
34
- : renderedProps;
12
+ const PlaceholderMetadata_1 = require("./PlaceholderMetadata");
13
+ const AppPlaceholderComponent = (props) => {
14
+ const renderingData = props.rendering;
15
+ const isEditing = props.page.mode.isEditing;
16
+ const placeholderRenderings = (0, placeholder_utils_1.getPlaceholderRenderings)(renderingData, props.name, isEditing);
17
+ const isEmpty = !placeholderRenderings.length;
18
+ const components = getPlaceholderComponents(props, placeholderRenderings);
19
+ if (isEmpty) {
20
+ let renderedOutput = components;
21
+ if (props.renderEmpty) {
22
+ renderedOutput = props.renderEmpty(components);
23
+ }
24
+ return isEditing ? (0, placeholder_utils_1.renderEmptyPlaceholder)(renderedOutput) : renderedOutput;
25
+ }
26
+ else if (props.render) {
27
+ return props.render(components, placeholderRenderings, props);
28
+ }
29
+ return components;
30
+ };
31
+ const getPlaceholderComponents = (placeholderProps, placeholderRenderings) => {
32
+ const { name, rendering, passThroughComponentProps, missingComponentComponent, hiddenRenderingComponent, errorComponent, componentLoadingMessage, renderEach, modifyComponentProps, componentMap, page, } = placeholderProps;
33
+ const isEditing = page.mode.isEditing;
34
+ const componentRuntime = _rsc_env_1.rsc ? 'server' : 'client';
35
+ const transformedComponents = placeholderRenderings
36
+ .map((componentRendering, index) => {
37
+ const { component: ChildComponent, isEmpty: componentEmpty, componentType, dynamic, } = (0, placeholder_utils_1.getComponentForRendering)(componentRendering, name, componentMap, hiddenRenderingComponent, missingComponentComponent);
38
+ const key = componentRendering.uid || `component-${index}`;
39
+ const renderedProps = modifyComponentProps
40
+ ? modifyComponentProps((0, placeholder_utils_1.getChildComponentProps)(placeholderProps, componentRendering))
41
+ : (0, placeholder_utils_1.getChildComponentProps)(placeholderProps, componentRendering);
35
42
  // Client wrapper is required only when component crosses boundary from server to client.
36
43
  // It happens when component is marker as client and rendered in RSC context.
37
44
  // Also, it is not required when component is hidden or empty, as it will be rendered whthout boundary crossing.
38
- const useClientWrapper = isClient && _rsc_env_1.rsc && !isEmpty;
39
- let rendered = useClientWrapper ? (react_1.default.createElement(ClientComponentWrapper_1.ClientComponentWrapper, { rendering: rendering, componentProps: finalRenderedProps, placeholderName: props.name, key: key })) : (react_1.default.createElement(Component, Object.assign({ key: key }, finalRenderedProps, { rendering: rendering, page: page, componentMap: componentMap })));
40
- if (!isEmpty) {
45
+ const useClientWrapper = componentType === 'client' && _rsc_env_1.rsc && !componentEmpty;
46
+ let rendered = useClientWrapper ? (react_1.default.createElement(ClientComponentWrapper_1.ClientComponentWrapper, { rendering: renderedProps.rendering, componentProps: Object.assign(Object.assign({}, renderedProps), passThroughComponentProps), placeholderName: name, key: key })) : (react_1.default.createElement(ChildComponent, Object.assign({ key: key }, renderedProps, passThroughComponentProps, { page: page, componentMap: componentMap })));
47
+ if (renderEach) {
48
+ rendered = renderEach(rendered, index);
49
+ }
50
+ if (!componentEmpty) {
41
51
  const errorBoundaryKey = rendered.type + '-' + index;
42
- const disableSuspense = props.disableSuspense || false;
43
- rendered = (react_1.default.createElement(ErrorBoundary_1.default, { "data-testid": "error-boundary", key: errorBoundaryKey, errorComponent: props.errorComponent, componentLoadingMessage: props.componentLoadingMessage, isDynamic: dynamic, disableSuspense: disableSuspense, rendering: rendered.props.rendering }, rendered));
52
+ rendered = (react_1.default.createElement(ErrorBoundary_1.default, { "data-testid": "error-boundary", key: errorBoundaryKey, errorComponent: errorComponent, componentLoadingMessage: componentLoadingMessage, isDynamic: dynamic, disableSuspense: placeholderProps.disableSuspense, rendering: rendered.props.rendering }, rendered));
44
53
  }
45
54
  // if in edit mode then emit shallow chromes for hydration in Pages
46
- if (page.mode.isEditing) {
47
- const key = rendering.uid || `component-${index}`;
48
- return (react_1.default.createElement(PlaceholderMetadata_1.PlaceholderMetadata, { key: key, rendering: rendering, componentRuntime: componentRuntime }, rendered));
49
- }
50
- return rendered;
55
+ return isEditing ? (react_1.default.createElement(PlaceholderMetadata_1.PlaceholderMetadata, { key: key, rendering: componentRendering, componentRuntime: componentRuntime }, rendered)) : (rendered);
51
56
  })
52
- .filter((element) => element);
53
- const finalRendering = page.mode.isEditing
54
- ? [
55
- react_1.default.createElement(PlaceholderMetadata_1.PlaceholderMetadata, { key: parentRendering.uid || 'placeholder-metadata-root', placeholderName: props.name, rendering: parentRendering }, components),
56
- ]
57
- : components;
58
- const placeholderEmpty = !placeholderRenderings.length;
59
- if (placeholderEmpty) {
60
- const rendered = props.renderEmpty ? props.renderEmpty(finalRendering) : finalRendering;
61
- return page.mode.isEditing ? (0, placeholder_utils_1.renderEmptyPlaceholder)(rendered) : rendered;
62
- }
63
- if (props.render) {
64
- return props.render(components, placeholderRenderings, props);
65
- }
66
- else if (props.renderEach) {
67
- const renderEach = props.renderEach;
68
- return finalRendering.map((component, index) => {
69
- if (component && component.props && component.props.type === 'text/sitecore') {
70
- return component;
71
- }
72
- return renderEach(component, index);
73
- });
74
- }
75
- else {
76
- return finalRendering;
57
+ .filter((element) => element); // remove nulls
58
+ if (!isEditing) {
59
+ return transformedComponents;
77
60
  }
61
+ return [
62
+ react_1.default.createElement(PlaceholderMetadata_1.PlaceholderMetadata, { key: rendering.uid, placeholderName: name, rendering: rendering }, transformedComponents),
63
+ ];
78
64
  };
65
+ /**
66
+ * The implemention of placeholder compatible with React Server Components.
67
+ * Renders components from the layout data for the given placeholder name, with consideration for page edit mode.
68
+ * Pulls components from the provided component map.
69
+ * @param {AppPlaceholderProps} props Placeholder props
70
+ * @returns {React.ReactNode | React.ReactElement[]} rendered component(s)
71
+ * @public
72
+ */
73
+ const AppPlaceholder = (props) => (
74
+ // Using error boundary for errors that may happen within Placeholder itself
75
+ react_1.default.createElement(ErrorBoundary_1.default, { errorComponent: props.errorComponent },
76
+ react_1.default.createElement(AppPlaceholderComponent, Object.assign({}, props))));
79
77
  exports.AppPlaceholder = AppPlaceholder;
@@ -6,16 +6,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.ClientComponentWrapper = void 0;
8
8
  const SitecoreProvider_1 = require("../SitecoreProvider");
9
- const react_1 = require("react");
10
- const react_2 = __importDefault(require("react"));
11
- const withSitecore_1 = require("../../enhancers/withSitecore");
9
+ const react_1 = __importDefault(require("react"));
12
10
  const placeholder_utils_1 = require("./placeholder-utils");
13
11
  const ClientComponentWrapper = (props) => {
14
- const { page } = (0, withSitecore_1.useSitecore)();
15
- const componentMap = (0, react_1.useContext)(SitecoreProvider_1.ComponentMapReactContext);
16
- const componentPropsWithContext = Object.assign(Object.assign({}, props.componentProps), { rendering: props.rendering, componentMap,
17
- page });
18
- const { component: Component } = (0, placeholder_utils_1.getComponentForRendering)(props.rendering, props.placeholderName, componentMap);
19
- return react_2.default.createElement(Component, Object.assign({}, componentPropsWithContext));
12
+ const { page, componentMap: clientComponentMap } = (0, SitecoreProvider_1.useSitecore)();
13
+ const componentPropsWithContext = Object.assign(Object.assign({}, props.componentProps), { rendering: props.rendering, componentMap: clientComponentMap, page });
14
+ const { component: Component } = (0, placeholder_utils_1.getComponentForRendering)(props.rendering, props.placeholderName, clientComponentMap);
15
+ return react_1.default.createElement(Component, Object.assign({}, componentPropsWithContext));
20
16
  };
21
17
  exports.ClientComponentWrapper = ClientComponentWrapper;