@sitecore-content-sdk/react 1.3.0-canary.9 → 1.4.0-canary.2

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 (233) hide show
  1. package/README.md +11 -11
  2. package/dist/cjs/components/ClientEditingChromesUpdate.js +53 -52
  3. package/dist/cjs/components/Date.js +49 -45
  4. package/dist/cjs/components/DefaultEmptyFieldEditingComponents.js +32 -22
  5. package/dist/cjs/components/{DesignLibrary.js → DesignLibrary/DesignLibrary.js} +161 -202
  6. package/dist/cjs/components/DesignLibrary/DesignLibraryApp.js +31 -0
  7. package/dist/cjs/components/DesignLibrary/DesignLibraryClientEvents.js +123 -0
  8. package/dist/cjs/components/DesignLibrary/DesignLibraryErrorBoundary.js +65 -0
  9. package/dist/cjs/components/DesignLibrary/DesignLibraryServer.js +193 -0
  10. package/dist/cjs/components/DesignLibrary/index.js +7 -0
  11. package/dist/cjs/components/DesignLibrary/models.js +2 -0
  12. package/dist/cjs/components/EditingScripts.js +44 -43
  13. package/dist/cjs/components/ErrorBoundary.js +101 -92
  14. package/dist/cjs/components/FEaaS/BYOCServerWrapper.js +25 -28
  15. package/dist/cjs/components/FEaaS/BYOCWrapper.js +133 -122
  16. package/dist/cjs/components/FEaaS/FEaaSSeverWrapper.js +26 -34
  17. package/dist/cjs/components/FEaaS/FEaaSWrapper.js +84 -78
  18. package/dist/cjs/components/FEaaS/feaas-utils.js +130 -144
  19. package/dist/cjs/components/FEaaS/index.js +21 -21
  20. package/dist/cjs/components/FEaaS/models.js +7 -7
  21. package/dist/cjs/components/FieldMetadata.js +29 -29
  22. package/dist/cjs/components/File.js +43 -38
  23. package/dist/cjs/components/Form.js +100 -92
  24. package/dist/cjs/components/HiddenRendering.js +23 -23
  25. package/dist/cjs/components/Image.js +71 -66
  26. package/dist/cjs/components/Link.js +91 -86
  27. package/dist/cjs/components/MissingComponent.js +28 -28
  28. package/dist/cjs/components/Placeholder/AppPlaceholder.js +79 -76
  29. package/dist/cjs/components/Placeholder/ClientComponentWrapper.js +21 -21
  30. package/dist/cjs/components/Placeholder/Placeholder.js +144 -110
  31. package/dist/cjs/components/Placeholder/PlaceholderMetadata.js +68 -63
  32. package/dist/cjs/components/Placeholder/index.js +25 -25
  33. package/dist/cjs/components/Placeholder/models.js +18 -18
  34. package/dist/cjs/components/Placeholder/placeholder-utils.js +226 -226
  35. package/dist/cjs/components/RichText.js +75 -70
  36. package/dist/cjs/components/SitecoreProvider.js +62 -52
  37. package/dist/cjs/components/Text.js +69 -65
  38. package/dist/cjs/components/sharedTypes/components.js +7 -7
  39. package/dist/cjs/components/sharedTypes/index.js +18 -18
  40. package/dist/cjs/components/sharedTypes/props.js +2 -2
  41. package/dist/cjs/enhancers/withAppPlaceholder.js +21 -21
  42. package/dist/cjs/enhancers/withComponentMap.js +24 -24
  43. package/dist/cjs/enhancers/withDatasourceCheck.js +31 -30
  44. package/dist/cjs/enhancers/withEditorChromes.js +29 -24
  45. package/dist/cjs/enhancers/withEmptyFieldEditingComponent.js +71 -70
  46. package/dist/cjs/enhancers/withFieldMetadata.js +68 -67
  47. package/dist/cjs/enhancers/withLoadImportMap.js +53 -0
  48. package/dist/cjs/enhancers/withPlaceholder.js +64 -65
  49. package/dist/cjs/enhancers/withSitecore.js +47 -45
  50. package/dist/cjs/index.js +86 -85
  51. package/dist/cjs/rsc-utils/no-rsc.js +5 -5
  52. package/dist/cjs/rsc-utils/rsc.js +5 -5
  53. package/dist/cjs/search/index.js +7 -0
  54. package/dist/cjs/search/useInfiniteSearch.js +136 -0
  55. package/dist/cjs/search/useSearch.js +107 -0
  56. package/dist/cjs/search/utils.js +35 -0
  57. package/dist/cjs/server-actions/update-server-component-action.js +18 -0
  58. package/dist/cjs/utils.js +38 -38
  59. package/dist/esm/components/ClientEditingChromesUpdate.js +16 -15
  60. package/dist/esm/components/Date.js +43 -39
  61. package/dist/esm/components/DefaultEmptyFieldEditingComponents.js +24 -14
  62. package/dist/esm/components/{DesignLibrary.js → DesignLibrary/DesignLibrary.js} +124 -164
  63. package/dist/esm/components/DesignLibrary/DesignLibraryApp.js +24 -0
  64. package/dist/esm/components/DesignLibrary/DesignLibraryClientEvents.js +84 -0
  65. package/dist/esm/components/DesignLibrary/DesignLibraryErrorBoundary.js +28 -0
  66. package/dist/esm/components/DesignLibrary/DesignLibraryServer.js +150 -0
  67. package/dist/esm/components/DesignLibrary/index.js +2 -0
  68. package/dist/esm/components/DesignLibrary/models.js +1 -0
  69. package/dist/esm/components/EditingScripts.js +37 -36
  70. package/dist/esm/components/ErrorBoundary.js +64 -57
  71. package/dist/esm/components/FEaaS/BYOCServerWrapper.js +18 -21
  72. package/dist/esm/components/FEaaS/BYOCWrapper.js +91 -81
  73. package/dist/esm/components/FEaaS/FEaaSSeverWrapper.js +19 -27
  74. package/dist/esm/components/FEaaS/FEaaSWrapper.js +43 -37
  75. package/dist/esm/components/FEaaS/feaas-utils.js +91 -105
  76. package/dist/esm/components/FEaaS/index.js +6 -6
  77. package/dist/esm/components/FEaaS/models.js +4 -4
  78. package/dist/esm/components/FieldMetadata.js +22 -22
  79. package/dist/esm/components/File.js +36 -31
  80. package/dist/esm/components/Form.js +62 -54
  81. package/dist/esm/components/HiddenRendering.js +16 -16
  82. package/dist/esm/components/Image.js +65 -60
  83. package/dist/esm/components/Link.js +55 -50
  84. package/dist/esm/components/MissingComponent.js +21 -21
  85. package/dist/esm/components/Placeholder/AppPlaceholder.js +72 -69
  86. package/dist/esm/components/Placeholder/ClientComponentWrapper.js +14 -14
  87. package/dist/esm/components/Placeholder/Placeholder.js +104 -103
  88. package/dist/esm/components/Placeholder/PlaceholderMetadata.js +61 -56
  89. package/dist/esm/components/Placeholder/index.js +4 -4
  90. package/dist/esm/components/Placeholder/models.js +15 -15
  91. package/dist/esm/components/Placeholder/placeholder-utils.js +214 -214
  92. package/dist/esm/components/RichText.js +39 -34
  93. package/dist/esm/components/SitecoreProvider.js +55 -45
  94. package/dist/esm/components/Text.js +63 -59
  95. package/dist/esm/components/sharedTypes/components.js +4 -4
  96. package/dist/esm/components/sharedTypes/index.js +2 -2
  97. package/dist/esm/components/sharedTypes/props.js +1 -1
  98. package/dist/esm/enhancers/withAppPlaceholder.js +14 -14
  99. package/dist/esm/enhancers/withComponentMap.js +18 -18
  100. package/dist/esm/enhancers/withDatasourceCheck.js +23 -22
  101. package/dist/esm/enhancers/withEditorChromes.js +22 -17
  102. package/dist/esm/enhancers/withEmptyFieldEditingComponent.js +35 -34
  103. package/dist/esm/enhancers/withFieldMetadata.js +32 -31
  104. package/dist/esm/enhancers/withLoadImportMap.js +17 -0
  105. package/dist/esm/enhancers/withPlaceholder.js +58 -59
  106. package/dist/esm/enhancers/withSitecore.js +40 -38
  107. package/dist/esm/index.js +29 -29
  108. package/dist/esm/rsc-utils/no-rsc.js +2 -2
  109. package/dist/esm/rsc-utils/rsc.js +2 -2
  110. package/dist/esm/search/index.js +2 -0
  111. package/dist/esm/search/useInfiniteSearch.js +132 -0
  112. package/dist/esm/search/useSearch.js +103 -0
  113. package/dist/esm/search/utils.js +30 -0
  114. package/dist/esm/server-actions/update-server-component-action.js +15 -0
  115. package/dist/esm/utils.js +33 -33
  116. package/global.d.ts +17 -0
  117. package/package.json +27 -11
  118. package/search.d.ts +1 -0
  119. package/types/components/ClientEditingChromesUpdate.d.ts +8 -6
  120. package/types/components/ClientEditingChromesUpdate.d.ts.map +1 -0
  121. package/types/components/Date.d.ts +25 -16
  122. package/types/components/Date.d.ts.map +1 -0
  123. package/types/components/DefaultEmptyFieldEditingComponents.d.ts +20 -9
  124. package/types/components/DefaultEmptyFieldEditingComponents.d.ts.map +1 -0
  125. package/types/components/DesignLibrary/DesignLibrary.d.ts +20 -0
  126. package/types/components/DesignLibrary/DesignLibrary.d.ts.map +1 -0
  127. package/types/components/DesignLibrary/DesignLibraryApp.d.ts +14 -0
  128. package/types/components/DesignLibrary/DesignLibraryApp.d.ts.map +1 -0
  129. package/types/components/DesignLibrary/DesignLibraryClientEvents.d.ts +21 -0
  130. package/types/components/DesignLibrary/DesignLibraryClientEvents.d.ts.map +1 -0
  131. package/types/components/DesignLibrary/DesignLibraryErrorBoundary.d.ts +19 -0
  132. package/types/components/DesignLibrary/DesignLibraryErrorBoundary.d.ts.map +1 -0
  133. package/types/components/DesignLibrary/DesignLibraryServer.d.ts +38 -0
  134. package/types/components/DesignLibrary/DesignLibraryServer.d.ts.map +1 -0
  135. package/types/components/DesignLibrary/index.d.ts +3 -0
  136. package/types/components/DesignLibrary/index.d.ts.map +1 -0
  137. package/types/components/DesignLibrary/models.d.ts +67 -0
  138. package/types/components/DesignLibrary/models.d.ts.map +1 -0
  139. package/types/components/EditingScripts.d.ts +9 -7
  140. package/types/components/EditingScripts.d.ts.map +1 -0
  141. package/types/components/ErrorBoundary.d.ts +29 -17
  142. package/types/components/ErrorBoundary.d.ts.map +1 -0
  143. package/types/components/FEaaS/BYOCServerWrapper.d.ts +10 -3
  144. package/types/components/FEaaS/BYOCServerWrapper.d.ts.map +1 -0
  145. package/types/components/FEaaS/BYOCWrapper.d.ts +29 -25
  146. package/types/components/FEaaS/BYOCWrapper.d.ts.map +1 -0
  147. package/types/components/FEaaS/FEaaSSeverWrapper.d.ts +10 -8
  148. package/types/components/FEaaS/FEaaSSeverWrapper.d.ts.map +1 -0
  149. package/types/components/FEaaS/FEaaSWrapper.d.ts +14 -7
  150. package/types/components/FEaaS/FEaaSWrapper.d.ts.map +1 -0
  151. package/types/components/FEaaS/feaas-utils.d.ts +24 -21
  152. package/types/components/FEaaS/feaas-utils.d.ts.map +1 -0
  153. package/types/components/FEaaS/index.d.ts +7 -6
  154. package/types/components/FEaaS/index.d.ts.map +1 -0
  155. package/types/components/FEaaS/models.d.ts +136 -125
  156. package/types/components/FEaaS/models.d.ts.map +1 -0
  157. package/types/components/FieldMetadata.d.ts +18 -17
  158. package/types/components/FieldMetadata.d.ts.map +1 -0
  159. package/types/components/File.d.ts +28 -18
  160. package/types/components/File.d.ts.map +1 -0
  161. package/types/components/Form.d.ts +35 -29
  162. package/types/components/Form.d.ts.map +1 -0
  163. package/types/components/HiddenRendering.d.ts +3 -2
  164. package/types/components/HiddenRendering.d.ts.map +1 -0
  165. package/types/components/Image.d.ts +70 -48
  166. package/types/components/Image.d.ts.map +1 -0
  167. package/types/components/Link.d.ts +45 -27
  168. package/types/components/Link.d.ts.map +1 -0
  169. package/types/components/MissingComponent.d.ts +9 -8
  170. package/types/components/MissingComponent.d.ts.map +1 -0
  171. package/types/components/Placeholder/AppPlaceholder.d.ts +12 -10
  172. package/types/components/Placeholder/AppPlaceholder.d.ts.map +1 -0
  173. package/types/components/Placeholder/ClientComponentWrapper.d.ts +10 -9
  174. package/types/components/Placeholder/ClientComponentWrapper.d.ts.map +1 -0
  175. package/types/components/Placeholder/Placeholder.d.ts +33 -28
  176. package/types/components/Placeholder/Placeholder.d.ts.map +1 -0
  177. package/types/components/Placeholder/PlaceholderMetadata.d.ts +35 -28
  178. package/types/components/Placeholder/PlaceholderMetadata.d.ts.map +1 -0
  179. package/types/components/Placeholder/index.d.ts +6 -5
  180. package/types/components/Placeholder/index.d.ts.map +1 -0
  181. package/types/components/Placeholder/models.d.ts +149 -140
  182. package/types/components/Placeholder/models.d.ts.map +1 -0
  183. package/types/components/Placeholder/placeholder-utils.d.ts +52 -53
  184. package/types/components/Placeholder/placeholder-utils.d.ts.map +1 -0
  185. package/types/components/RichText.d.ts +31 -17
  186. package/types/components/RichText.d.ts.map +1 -0
  187. package/types/components/SitecoreProvider.d.ts +68 -48
  188. package/types/components/SitecoreProvider.d.ts.map +1 -0
  189. package/types/components/Text.d.ts +29 -20
  190. package/types/components/Text.d.ts.map +1 -0
  191. package/types/components/sharedTypes/components.d.ts +50 -38
  192. package/types/components/sharedTypes/components.d.ts.map +1 -0
  193. package/types/components/sharedTypes/index.d.ts +3 -2
  194. package/types/components/sharedTypes/index.d.ts.map +1 -0
  195. package/types/components/sharedTypes/props.d.ts +15 -14
  196. package/types/components/sharedTypes/props.d.ts.map +1 -0
  197. package/types/enhancers/withAppPlaceholder.d.ts +16 -15
  198. package/types/enhancers/withAppPlaceholder.d.ts.map +1 -0
  199. package/types/enhancers/withComponentMap.d.ts +13 -12
  200. package/types/enhancers/withComponentMap.d.ts.map +1 -0
  201. package/types/enhancers/withDatasourceCheck.d.ts +23 -21
  202. package/types/enhancers/withDatasourceCheck.d.ts.map +1 -0
  203. package/types/enhancers/withEditorChromes.d.ts +8 -2
  204. package/types/enhancers/withEditorChromes.d.ts.map +1 -0
  205. package/types/enhancers/withEmptyFieldEditingComponent.d.ts +29 -27
  206. package/types/enhancers/withEmptyFieldEditingComponent.d.ts.map +1 -0
  207. package/types/enhancers/withFieldMetadata.d.ts +18 -16
  208. package/types/enhancers/withFieldMetadata.d.ts.map +1 -0
  209. package/types/enhancers/withLoadImportMap.d.ts +22 -0
  210. package/types/enhancers/withLoadImportMap.d.ts.map +1 -0
  211. package/types/enhancers/withPlaceholder.d.ts +37 -35
  212. package/types/enhancers/withPlaceholder.d.ts.map +1 -0
  213. package/types/enhancers/withSitecore.d.ts +63 -48
  214. package/types/enhancers/withSitecore.d.ts.map +1 -0
  215. package/types/index.d.ts +31 -30
  216. package/types/index.d.ts.map +1 -0
  217. package/types/rsc-utils/no-rsc.d.ts +2 -1
  218. package/types/rsc-utils/no-rsc.d.ts.map +1 -0
  219. package/types/rsc-utils/rsc.d.ts +2 -1
  220. package/types/rsc-utils/rsc.d.ts.map +1 -0
  221. package/types/search/index.d.ts +4 -0
  222. package/types/search/index.d.ts.map +1 -0
  223. package/types/search/useInfiniteSearch.d.ts +116 -0
  224. package/types/search/useInfiniteSearch.d.ts.map +1 -0
  225. package/types/search/useSearch.d.ts +107 -0
  226. package/types/search/useSearch.d.ts.map +1 -0
  227. package/types/search/utils.d.ts +19 -0
  228. package/types/search/utils.d.ts.map +1 -0
  229. package/types/server-actions/update-server-component-action.d.ts +25 -0
  230. package/types/server-actions/update-server-component-action.d.ts.map +1 -0
  231. package/types/utils.d.ts +18 -17
  232. package/types/utils.d.ts.map +1 -0
  233. package/types/components/DesignLibrary.d.ts +0 -26
@@ -1,39 +1,43 @@
1
- var __rest = (this && this.__rest) || function (s, e) {
2
- var t = {};
3
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
- t[p] = s[p];
5
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
- t[p[i]] = s[p[i]];
9
- }
10
- return t;
11
- };
12
- import React from 'react';
13
- import { withFieldMetadata } from '../enhancers/withFieldMetadata';
14
- import { withEmptyFieldEditingComponent } from '../enhancers/withEmptyFieldEditingComponent';
15
- import { DefaultEmptyFieldEditingComponentText } from './DefaultEmptyFieldEditingComponents';
16
- import { isFieldValueEmpty } from '@sitecore-content-sdk/core/layout';
17
- export const DateField = withFieldMetadata(withEmptyFieldEditingComponent(
18
- // eslint-disable-next-line no-unused-vars
19
- (_a) => {
20
- var { field, tag, editable = true, render } = _a, otherProps = __rest(_a, ["field", "tag", "editable", "render"]);
21
- if (isFieldValueEmpty(field)) {
22
- return null;
23
- }
24
- let children;
25
- const htmlProps = Object.assign({}, otherProps);
26
- if (render) {
27
- children = render(field.value ? new Date(field.value) : null);
28
- }
29
- else {
30
- children = field.value;
31
- }
32
- if (tag) {
33
- return React.createElement(tag || 'span', htmlProps, children);
34
- }
35
- else {
36
- return React.createElement(React.Fragment, null, children);
37
- }
38
- }, { defaultEmptyFieldEditingComponent: DefaultEmptyFieldEditingComponentText }));
39
- DateField.displayName = 'Date';
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import React from 'react';
13
+ import { withFieldMetadata } from '../enhancers/withFieldMetadata';
14
+ import { withEmptyFieldEditingComponent } from '../enhancers/withEmptyFieldEditingComponent';
15
+ import { DefaultEmptyFieldEditingComponentText } from './DefaultEmptyFieldEditingComponents';
16
+ import { isFieldValueEmpty } from '@sitecore-content-sdk/core/layout';
17
+ /**
18
+ * The DateField component.
19
+ * @public
20
+ */
21
+ export const DateField = withFieldMetadata(withEmptyFieldEditingComponent(
22
+ // eslint-disable-next-line no-unused-vars
23
+ (_a) => {
24
+ var { field, tag, editable = true, render } = _a, otherProps = __rest(_a, ["field", "tag", "editable", "render"]);
25
+ if (isFieldValueEmpty(field)) {
26
+ return null;
27
+ }
28
+ let children;
29
+ const htmlProps = Object.assign({}, otherProps);
30
+ if (render) {
31
+ children = render(field.value ? new Date(field.value) : null);
32
+ }
33
+ else {
34
+ children = field.value;
35
+ }
36
+ if (tag) {
37
+ return React.createElement(tag || 'span', htmlProps, children);
38
+ }
39
+ else {
40
+ return React.createElement(React.Fragment, null, children);
41
+ }
42
+ }, { defaultEmptyFieldEditingComponent: DefaultEmptyFieldEditingComponentText }));
43
+ DateField.displayName = 'Date';
@@ -1,14 +1,24 @@
1
- import React from 'react';
2
- export const DefaultEmptyFieldEditingComponentText = (props) => {
3
- return React.createElement(props.tag || 'span', props, '[No text in field]');
4
- };
5
- export const DefaultEmptyFieldEditingComponentImage = (props) => {
6
- const inlineStyles = {
7
- minWidth: '48px',
8
- minHeight: '48px',
9
- maxWidth: '400px',
10
- maxHeight: '400px',
11
- cursor: 'pointer',
12
- };
13
- return (React.createElement("img", Object.assign({}, props, { alt: "", src: 'data:image/svg+xml,%3Csvg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 240 240" style="enable-background:new 0 0 240 240;" xml:space="preserve"%3E%3Cstyle type="text/css"%3E .st0%7Bfill:none;%7D .st1%7Bfill:%23969696;%7D .st2%7Bfill:%23FFFFFF;%7D .st3%7Bfill:%23FFFFFF;stroke:%23FFFFFF;stroke-width:0.75;stroke-miterlimit:10;%7D%0A%3C/style%3E%3Cg%3E%3Crect class="st0" width="240" height="240"/%3E%3Cg%3E%3Cg%3E%3Crect x="20" y="20" class="st1" width="200" height="200"/%3E%3C/g%3E%3Cg%3E%3Ccircle class="st2" cx="174" cy="67" r="14"/%3E%3Cpath class="st2" d="M174,54c7.17,0,13,5.83,13,13s-5.83,13-13,13s-13-5.83-13-13S166.83,54,174,54 M174,52 c-8.28,0-15,6.72-15,15s6.72,15,15,15s15-6.72,15-15S182.28,52,174,52L174,52z"/%3E%3C/g%3E%3Cpolyline class="st3" points="29.5,179.25 81.32,122.25 95.41,137.75 137.23,91.75 209.5,179.75 "/%3E%3C/g%3E%3C/g%3E%3C/svg%3E', className: `scEmptyImage ${props.className || ''}`, style: inlineStyles })));
14
- };
1
+ import React from 'react';
2
+ /**
3
+ * The DefaultEmptyFieldEditingComponentText component.
4
+ * @param {object} props - The props for the component.
5
+ * @public
6
+ */
7
+ export const DefaultEmptyFieldEditingComponentText = (props) => {
8
+ return React.createElement(props.tag || 'span', props, '[No text in field]');
9
+ };
10
+ /**
11
+ * The DefaultEmptyFieldEditingComponentImage component.
12
+ * @param {object} props - The props for the component.
13
+ * @public
14
+ */
15
+ export const DefaultEmptyFieldEditingComponentImage = (props) => {
16
+ const inlineStyles = {
17
+ minWidth: '48px',
18
+ minHeight: '48px',
19
+ maxWidth: '400px',
20
+ maxHeight: '400px',
21
+ cursor: 'pointer',
22
+ };
23
+ return (React.createElement("img", Object.assign({}, props, { alt: "", src: 'data:image/svg+xml,%3Csvg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 240 240" style="enable-background:new 0 0 240 240;" xml:space="preserve"%3E%3Cstyle type="text/css"%3E .st0%7Bfill:none;%7D .st1%7Bfill:%23969696;%7D .st2%7Bfill:%23FFFFFF;%7D .st3%7Bfill:%23FFFFFF;stroke:%23FFFFFF;stroke-width:0.75;stroke-miterlimit:10;%7D%0A%3C/style%3E%3Cg%3E%3Crect class="st0" width="240" height="240"/%3E%3Cg%3E%3Cg%3E%3Crect x="20" y="20" class="st1" width="200" height="200"/%3E%3C/g%3E%3Cg%3E%3Ccircle class="st2" cx="174" cy="67" r="14"/%3E%3Cpath class="st2" d="M174,54c7.17,0,13,5.83,13,13s-5.83,13-13,13s-13-5.83-13-13S166.83,54,174,54 M174,52 c-8.28,0-15,6.72-15,15s6.72,15,15,15s15-6.72,15-15S182.28,52,174,52L174,52z"/%3E%3C/g%3E%3Cpolyline class="st3" points="29.5,179.25 81.32,122.25 95.41,137.75 137.23,91.75 209.5,179.75 "/%3E%3C/g%3E%3C/g%3E%3C/svg%3E', className: `scEmptyImage ${props.className || ''}`, style: inlineStyles })));
24
+ };
@@ -1,164 +1,124 @@
1
- 'use client';
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- /* eslint-disable jsdoc/require-param */
12
- /* eslint-disable prefer-const */
13
- import React, { useEffect, useState } from 'react';
14
- import { Placeholder } from './Placeholder';
15
- import { EDITING_COMPONENT_ID, EDITING_COMPONENT_PLACEHOLDER, } from '@sitecore-content-sdk/core/layout';
16
- import { DesignLibraryStatus, getDesignLibraryStatusEvent, addComponentUpdateHandler, } from '@sitecore-content-sdk/core/editing';
17
- import * as codegen from '@sitecore-content-sdk/core/codegen';
18
- import { useSitecore } from '../enhancers/withSitecore';
19
- import { PlaceholderMetadata } from './Placeholder';
20
- let { getDesignLibraryImportMapEvent, getDesignLibraryComponentPropsEvent, addComponentPreviewHandler, } = codegen;
21
- export const __mockDependencies = (mocks) => {
22
- addComponentPreviewHandler = mocks.addComponentPreviewHandler;
23
- };
24
- const sendErrorEvent = (uid, error, type) => {
25
- const errorEvent = codegen.getDesignLibraryComponentPreviewErrorEvent(uid, error, type);
26
- console.error('Component Library: sending error event', errorEvent);
27
- if (typeof window !== 'undefined') {
28
- const target = window.parent && window.parent !== window ? window.parent : window;
29
- target.postMessage(errorEvent, '*');
30
- }
31
- };
32
- const postToDL = (evt) => {
33
- if (typeof window === 'undefined')
34
- return;
35
- const target = window.parent && window.parent !== window ? window.parent : window;
36
- try {
37
- console.log('Component Library: sending event', evt === null || evt === void 0 ? void 0 : evt.name, evt);
38
- target.postMessage(evt, '*');
39
- }
40
- catch (err) {
41
- console.error('Component Library: postMessage failed', err, evt);
42
- }
43
- };
44
- class ErrorBoundary extends React.Component {
45
- constructor() {
46
- super(...arguments);
47
- this.state = {
48
- hasError: false,
49
- };
50
- }
51
- static getDerivedStateFromError() {
52
- return { hasError: true };
53
- }
54
- componentDidUpdate(prevProps) {
55
- if (prevProps.renderKey !== this.props.renderKey) {
56
- this.setState({ hasError: false });
57
- }
58
- }
59
- componentDidCatch(error) {
60
- sendErrorEvent(this.props.uid, error, codegen.DesignLibraryPreviewError.Render);
61
- }
62
- render() {
63
- if (this.state.hasError) {
64
- return React.createElement("div", null, "Error during component rendering");
65
- }
66
- return this.props.children;
67
- }
68
- }
69
- /**
70
- * Design Library component.
71
- *
72
- * Renders the **real** Sitecore component for `library` / `library-metadata` modes and,
73
- * when generation is enabled (`page.mode.designLibrary.isVariantGeneration === true`),
74
- * wires the **variant generation** handshake so the parent (DL Studio) can send
75
- * generated code to preview and iterate on.
76
- * @param {DesignLibraryProps} props
77
- * @param {() => Promise<{ default: import('../codegen').ImportEntry[] }>} [props.loadImportMap] Optional async loader that resolves to the import-map used to resolve the generated component’s imports. Required when `isVariantGeneration` is true.
78
- * @returns {JSX.Element} The preview surface, or `null` when not in Design Library mode.
79
- */
80
- export const DesignLibrary = ({ loadImportMap }) => {
81
- var _a, _b;
82
- const { page } = useSitecore();
83
- const route = page.layout.sitecore.route;
84
- const rendering = (_a = route === null || route === void 0 ? void 0 : route.placeholders[EDITING_COMPONENT_PLACEHOLDER]) === null || _a === void 0 ? void 0 : _a[0];
85
- const { isDesignLibrary } = page.mode;
86
- const isVariantGeneration = (_b = page.mode.designLibrary) === null || _b === void 0 ? void 0 : _b.isVariantGeneration;
87
- const [propsState, setPropsState] = useState({
88
- fields: rendering === null || rendering === void 0 ? void 0 : rendering.fields,
89
- params: rendering === null || rendering === void 0 ? void 0 : rendering.params,
90
- });
91
- const [renderKey, setRenderKey] = useState(0);
92
- const [Component, setComponent] = useState(null);
93
- const isGeneratedComponentActive = !!Component;
94
- if (!isDesignLibrary)
95
- return null;
96
- // eslint-disable-next-line react-hooks/rules-of-hooks
97
- useEffect(() => {
98
- postToDL(getDesignLibraryStatusEvent(DesignLibraryStatus.READY, rendering.uid));
99
- if (!isVariantGeneration) {
100
- requestAnimationFrame(() => {
101
- setRenderKey((k) => (k === 0 ? k + 1 : k));
102
- });
103
- }
104
- const unsubUpdate = addComponentUpdateHandler(rendering, (updated) => {
105
- setPropsState({ fields: updated.fields, params: updated.params });
106
- setRenderKey((k) => k + 1);
107
- });
108
- // useEffect will cleanup event handler on re-render
109
- return () => unsubUpdate && unsubUpdate();
110
- }, [isVariantGeneration, rendering]);
111
- // eslint-disable-next-line react-hooks/rules-of-hooks
112
- useEffect(() => {
113
- // Send a rendered event only as effect of a component update command
114
- if (renderKey === 0)
115
- return;
116
- postToDL(getDesignLibraryStatusEvent(DesignLibraryStatus.RENDERED, rendering.uid));
117
- }, [renderKey, rendering]);
118
- // eslint-disable-next-line react-hooks/rules-of-hooks
119
- useEffect(() => {
120
- if (!isDesignLibrary || !isVariantGeneration)
121
- return undefined;
122
- let cancelled = false;
123
- // since import map is loaded lazily, we only need to add preview event handler once the import map is loaded
124
- // unsubscribe function for useEffect cleanup will also be returned once importMap promise has been resolved or rejected
125
- let unsubscribe;
126
- (() => __awaiter(void 0, void 0, void 0, function* () {
127
- if (!loadImportMap) {
128
- sendErrorEvent(rendering.uid, 'No loadImportMap provided', codegen.DesignLibraryPreviewError.RenderInit);
129
- return;
130
- }
131
- let importMap;
132
- try {
133
- const mod = yield loadImportMap();
134
- importMap = mod.default;
135
- }
136
- catch (e) {
137
- sendErrorEvent(rendering.uid, `Error loading import map: ${e}`, codegen.DesignLibraryPreviewError.RenderInit);
138
- return;
139
- }
140
- // account for component being unmounted while resolving async import map
141
- if (cancelled)
142
- return;
143
- unsubscribe = addComponentPreviewHandler(importMap, (error, Component) => {
144
- // Error event is already sent in the addComponentPreviewHandler
145
- if (error)
146
- return;
147
- setComponent(() => Component);
148
- setRenderKey((k) => k + 1);
149
- });
150
- const importMapEvent = getDesignLibraryImportMapEvent(rendering.uid, importMap);
151
- postToDL(importMapEvent);
152
- const propsEvent = getDesignLibraryComponentPropsEvent(rendering.uid, propsState.fields, propsState.params);
153
- postToDL(propsEvent);
154
- }))();
155
- // return function that calls unsubscribe - if the component was mounted correctly
156
- return () => {
157
- cancelled = true;
158
- unsubscribe && unsubscribe();
159
- };
160
- }, [isVariantGeneration, rendering]);
161
- return (React.createElement("main", null, isGeneratedComponentActive ? (React.createElement(ErrorBoundary, { uid: rendering.uid, renderKey: renderKey },
162
- React.createElement(PlaceholderMetadata, { rendering: rendering },
163
- React.createElement(Component, { fields: propsState.fields, params: propsState.params, key: renderKey })))) : (React.createElement("div", { id: EDITING_COMPONENT_ID }, route && (React.createElement(Placeholder, { name: EDITING_COMPONENT_PLACEHOLDER, rendering: route, key: renderKey }))))));
164
- };
1
+ 'use client';
2
+ /* eslint-disable jsdoc/require-param */
3
+ /* eslint-disable prefer-const */
4
+ import React, { useEffect, useState } from 'react';
5
+ import { EDITING_COMPONENT_ID, EDITING_COMPONENT_PLACEHOLDER, } from '@sitecore-content-sdk/core/layout';
6
+ import { DesignLibraryStatus, getDesignLibraryStatusEvent, addComponentUpdateHandler, } from '@sitecore-content-sdk/core/editing';
7
+ import * as codegen from '@sitecore-content-sdk/core/codegen';
8
+ import * as editing from '@sitecore-content-sdk/core/editing';
9
+ import { useSitecore } from '../../enhancers/withSitecore';
10
+ import { Placeholder, PlaceholderMetadata } from '../Placeholder';
11
+ import { DesignLibraryErrorBoundary } from './DesignLibraryErrorBoundary';
12
+ import { withLoadImportMap } from '../../enhancers/withLoadImportMap';
13
+ import { ErrorComponent } from '../ErrorBoundary';
14
+ let { getDesignLibraryImportMapEvent, getDesignLibraryComponentPropsEvent, addComponentPreviewHandler, sendErrorEvent, } = codegen;
15
+ let { postToDesignLibrary } = editing;
16
+ export const __mockDependencies = (mocks) => {
17
+ addComponentPreviewHandler = mocks.addComponentPreviewHandler;
18
+ if (mocks.postToDesignLibrary) {
19
+ postToDesignLibrary = mocks.postToDesignLibrary;
20
+ }
21
+ if (mocks.sendErrorEvent) {
22
+ sendErrorEvent = mocks.sendErrorEvent;
23
+ }
24
+ };
25
+ /**
26
+ * Design Library component.
27
+ *
28
+ * Renders the **real** Sitecore component for `library` / `library-metadata` modes and,
29
+ * when generation is enabled (`page.mode.designLibrary.isVariantGeneration === true`),
30
+ * wires the **variant generation** handshake so the parent (DL Studio) can send
31
+ * generated code to preview and iterate on.
32
+ * @param {DesignLibraryProps} props
33
+ * @param {() => Promise} [props.loadImportMap] Optional async loader that resolves to the import-map used to resolve the generated component’s imports. Required when `isVariantGeneration` is true.
34
+ * @returns {JSX.Element} The preview surface, or `null` when not in Design Library mode.
35
+ * @public
36
+ */
37
+ export const DesignLibrary = withLoadImportMap(({ loadImportMap }) => {
38
+ var _a, _b;
39
+ const { page } = useSitecore();
40
+ const route = page.layout.sitecore.route;
41
+ const rendering = (_a = route === null || route === void 0 ? void 0 : route.placeholders[EDITING_COMPONENT_PLACEHOLDER]) === null || _a === void 0 ? void 0 : _a[0];
42
+ const uid = rendering === null || rendering === void 0 ? void 0 : rendering.uid;
43
+ const { isDesignLibrary } = page.mode;
44
+ const isVariantGeneration = (_b = page.mode.designLibrary) === null || _b === void 0 ? void 0 : _b.isVariantGeneration;
45
+ const [propsState, setPropsState] = useState({
46
+ fields: rendering === null || rendering === void 0 ? void 0 : rendering.fields,
47
+ params: rendering === null || rendering === void 0 ? void 0 : rendering.params,
48
+ });
49
+ const [renderKey, setRenderKey] = useState(0);
50
+ const [Component, setComponent] = useState(null);
51
+ const isGeneratedComponentActive = !!Component;
52
+ if (!isDesignLibrary)
53
+ return null;
54
+ if (!uid)
55
+ return React.createElement(ErrorComponent, { message: "Rendering UID is missing in the rendering data" });
56
+ // eslint-disable-next-line react-hooks/rules-of-hooks
57
+ useEffect(() => {
58
+ postToDesignLibrary(getDesignLibraryStatusEvent(DesignLibraryStatus.READY, uid));
59
+ if (!isVariantGeneration) {
60
+ requestAnimationFrame(() => {
61
+ setRenderKey((k) => (k === 0 ? k + 1 : k));
62
+ });
63
+ }
64
+ const unsubUpdate = addComponentUpdateHandler(rendering, (updated) => {
65
+ setPropsState({ fields: updated.fields, params: updated.params });
66
+ setRenderKey((k) => k + 1);
67
+ });
68
+ // useEffect will cleanup event handler on re-render
69
+ return () => unsubUpdate && unsubUpdate();
70
+ }, [isVariantGeneration, rendering, uid]);
71
+ // eslint-disable-next-line react-hooks/rules-of-hooks
72
+ useEffect(() => {
73
+ // Send a rendered event only as effect of a component update command
74
+ if (renderKey === 0)
75
+ return;
76
+ postToDesignLibrary(getDesignLibraryStatusEvent(DesignLibraryStatus.RENDERED, uid));
77
+ }, [renderKey, uid]);
78
+ // eslint-disable-next-line react-hooks/rules-of-hooks
79
+ useEffect(() => {
80
+ if (!isDesignLibrary || !isVariantGeneration)
81
+ return;
82
+ let cancelled = false;
83
+ // since import map is loaded lazily, we only need to add preview event handler once the import map is loaded
84
+ // unsubscribe function for useEffect cleanup will also be returned once importMap promise has been resolved or rejected
85
+ let unsubscribe;
86
+ (async () => {
87
+ if (!loadImportMap) {
88
+ sendErrorEvent(uid, 'No loadImportMap provided', codegen.DesignLibraryPreviewError.RenderInit);
89
+ return;
90
+ }
91
+ let importMap;
92
+ try {
93
+ const mod = await loadImportMap();
94
+ importMap = mod.default;
95
+ }
96
+ catch (e) {
97
+ sendErrorEvent(uid, `Error loading import map: ${e}`, codegen.DesignLibraryPreviewError.RenderInit);
98
+ return;
99
+ }
100
+ // account for component being unmounted while resolving async import map
101
+ if (cancelled)
102
+ return;
103
+ unsubscribe = addComponentPreviewHandler(importMap, (error, Component) => {
104
+ // Error event is already sent in the addComponentPreviewHandler
105
+ if (error)
106
+ return;
107
+ setComponent(() => Component);
108
+ setRenderKey((k) => k + 1);
109
+ });
110
+ const importMapEvent = getDesignLibraryImportMapEvent(uid, importMap);
111
+ postToDesignLibrary(importMapEvent);
112
+ const propsEvent = getDesignLibraryComponentPropsEvent(uid, propsState.fields, propsState.params);
113
+ postToDesignLibrary(propsEvent);
114
+ })();
115
+ // return function that calls unsubscribe - if the component was mounted correctly
116
+ return () => {
117
+ cancelled = true;
118
+ unsubscribe && unsubscribe();
119
+ };
120
+ }, [isVariantGeneration, uid]);
121
+ return (React.createElement("main", null, isGeneratedComponentActive ? (React.createElement(DesignLibraryErrorBoundary, { uid: uid, renderKey: renderKey },
122
+ React.createElement(PlaceholderMetadata, { rendering: rendering },
123
+ React.createElement(Component, { fields: propsState.fields, params: propsState.params, key: renderKey })))) : (React.createElement("div", { id: EDITING_COMPONENT_ID }, route && (React.createElement(Placeholder, { name: EDITING_COMPONENT_PLACEHOLDER, rendering: route, key: renderKey }))))));
124
+ });
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+ import { EDITING_COMPONENT_PLACEHOLDER } from '@sitecore-content-sdk/core/layout';
3
+ import { DesignLibraryServer } from './DesignLibraryServer';
4
+ import { DesignLibrary } from './DesignLibrary';
5
+ /**
6
+ * Design Library component intended to be used by the NextJs app router application
7
+ * This component serves as a router between client and server component rendering modes for the Design Library.
8
+ * It inspects the component type from the component map and
9
+ * delegates to the appropriate rendering implementation:
10
+ * - Client components are rendered using the `DesignLibrary` component
11
+ * - Server components are rendered using the `DesignLibraryServer` component
12
+ * @param {DesingLibraryAppProps} props - The properties for the Design Library App.
13
+ * @public
14
+ */
15
+ export const DesignLibraryApp = ({ page, componentMap, loadServerImportMap, }) => {
16
+ var _a;
17
+ const { route } = page.layout.sitecore;
18
+ if (!route)
19
+ return null;
20
+ const rendering = (_a = route === null || route === void 0 ? void 0 : route.placeholders[EDITING_COMPONENT_PLACEHOLDER]) === null || _a === void 0 ? void 0 : _a[0];
21
+ const component = componentMap.get((rendering === null || rendering === void 0 ? void 0 : rendering.componentName) || '');
22
+ const isClient = component && component.componentType === 'client';
23
+ return (React.createElement(React.Fragment, null, isClient ? (React.createElement(DesignLibrary, null)) : (React.createElement(DesignLibraryServer, { page: page, componentMap: componentMap, loadServerImportMap: loadServerImportMap, rendering: route }))));
24
+ };
@@ -0,0 +1,84 @@
1
+ 'use client';
2
+ import React, { useEffect } from 'react';
3
+ import * as dlHelpers from '@sitecore-content-sdk/core/editing';
4
+ import * as codegen from '@sitecore-content-sdk/core/codegen';
5
+ import { updateServerComponentAction } from '../../server-actions/update-server-component-action';
6
+ let { getDesignLibraryComponentPropsEvent, addServerComponentPreviewHandler, getDesignLibraryImportMapEvent, addStyleElement, sendErrorEvent, } = codegen;
7
+ let { getDesignLibraryStatusEvent, addComponentUpdateHandler, postToDesignLibrary } = dlHelpers;
8
+ let _updateServerComponentAction = updateServerComponentAction;
9
+ export const __mockDependencies = (mocks) => {
10
+ postToDesignLibrary = mocks.postToDesignLibrary;
11
+ addComponentUpdateHandler = mocks.addComponentUpdateHandler;
12
+ _updateServerComponentAction = mocks.updateServerComponentAction;
13
+ addServerComponentPreviewHandler = mocks.addServerComponentPreviewHandler;
14
+ getDesignLibraryImportMapEvent = mocks.getDesignLibraryImportMapEvent;
15
+ getDesignLibraryComponentPropsEvent = mocks.getDesignLibraryComponentPropsEvent;
16
+ addStyleElement = mocks.addStyleElement;
17
+ sendErrorEvent = mocks.sendErrorEvent;
18
+ };
19
+ /**
20
+ * Design Library component for rendering server components in app router application.
21
+ * DesignLibraryPreviewEvents component serves as a communication bridge between DesignLibraryServer and the Design Studio on the client side.
22
+ * It posts messages to Design Library Studio and sets up handlers to receive updates and previews which are then passed to the server component via server function updateServerComponentAction.
23
+ * @param {DesignLibraryPreviewEventsProps} props The props. {@link DesignLibraryPreviewEventsProps}
24
+ * @returns {JSX.Element} empty JSX element.
25
+ */
26
+ export const DesignLibraryPreviewEvents = ({ designLibraryStatus, component, }) => {
27
+ useEffect(() => {
28
+ if (!(component === null || component === void 0 ? void 0 : component.uid))
29
+ return;
30
+ postToDesignLibrary(getDesignLibraryStatusEvent(designLibraryStatus, component.uid));
31
+ const unsubUpdate = addComponentUpdateHandler(component, (updated) => {
32
+ _updateServerComponentAction({ uid: updated.uid, updatedComponent: updated });
33
+ });
34
+ return () => {
35
+ unsubUpdate && unsubUpdate();
36
+ };
37
+ }, [component, designLibraryStatus]);
38
+ return React.createElement(React.Fragment, null);
39
+ };
40
+ /**
41
+ * Design Library component for rendering server components in app router application.
42
+ * DesignLibraryVariantGenerationEvents component serves as a communication bridge between DesignLibraryServer and the Design Studio on the client side in variant generation mode.
43
+ * It posts messages to Design Library Studio and sets up handlers to receive updates and previews which are then passed to the server component via server function updateServerComponentAction.
44
+ * If the import map is not present then the import map error will be sent to Design Studio.
45
+ * @param {DesignLibraryVariantGenerationEventsProps} props The props. {@link DesignLibraryVariantGenerationEventsProps}
46
+ * @returns {JSX.Element} empty JSX element.
47
+ */
48
+ export const DesignLibraryVariantGenerationEvents = ({ designLibraryStatus, component, importMap, importMapError, previewComponentData, }) => {
49
+ useEffect(() => {
50
+ var _a, _b;
51
+ if (!(component === null || component === void 0 ? void 0 : component.uid))
52
+ return;
53
+ postToDesignLibrary(getDesignLibraryStatusEvent(designLibraryStatus, component.uid));
54
+ const unsubUpdate = addComponentUpdateHandler(component, (updated) => {
55
+ _updateServerComponentAction({
56
+ uid: updated.uid,
57
+ updatedComponent: updated,
58
+ previewComponent: previewComponentData,
59
+ });
60
+ });
61
+ const unsubPreview = addServerComponentPreviewHandler((eventArgs) => {
62
+ _updateServerComponentAction({ uid: component.uid, previewComponent: eventArgs });
63
+ });
64
+ if (importMapError) {
65
+ // an import map error occurred on the server side in DesignLibraryServer, post error event to Design Studio
66
+ sendErrorEvent(component.uid, importMapError, codegen.DesignLibraryPreviewError.RenderInit);
67
+ }
68
+ else {
69
+ const importMapEvent = getDesignLibraryImportMapEvent(component.uid, importMap);
70
+ postToDesignLibrary(importMapEvent);
71
+ const propsEvent = getDesignLibraryComponentPropsEvent(component.uid, component.fields, component.params);
72
+ postToDesignLibrary(propsEvent);
73
+ if ((_b = (_a = previewComponentData === null || previewComponentData === void 0 ? void 0 : previewComponentData.message) === null || _a === void 0 ? void 0 : _a.styles) === null || _b === void 0 ? void 0 : _b.content) {
74
+ // the generated component has custom styles, so add the css in style element and add it to document head
75
+ addStyleElement(previewComponentData.message.styles.content);
76
+ }
77
+ }
78
+ return () => {
79
+ unsubUpdate && unsubUpdate();
80
+ unsubPreview && unsubPreview();
81
+ };
82
+ }, [component, designLibraryStatus, importMap, importMapError, previewComponentData]);
83
+ return React.createElement(React.Fragment, null);
84
+ };
@@ -0,0 +1,28 @@
1
+ 'use client';
2
+ import React, { Suspense } from 'react';
3
+ import { DesignLibraryPreviewError, sendErrorEvent } from '@sitecore-content-sdk/core/codegen';
4
+ export class DesignLibraryErrorBoundary extends React.Component {
5
+ constructor() {
6
+ super(...arguments);
7
+ this.state = {
8
+ hasError: false,
9
+ };
10
+ }
11
+ static getDerivedStateFromError() {
12
+ return { hasError: true };
13
+ }
14
+ componentDidUpdate(prevProps) {
15
+ if (prevProps.renderKey !== this.props.renderKey) {
16
+ this.setState({ hasError: false });
17
+ }
18
+ }
19
+ componentDidCatch(error) {
20
+ sendErrorEvent(this.props.uid, error, DesignLibraryPreviewError.Render);
21
+ }
22
+ render() {
23
+ if (this.state.hasError) {
24
+ return React.createElement("div", null, "Error during component rendering");
25
+ }
26
+ return React.createElement(Suspense, null, this.props.children);
27
+ }
28
+ }