@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,59 +1,63 @@
1
- 'use client';
2
- var __rest = (this && this.__rest) || function (s, e) {
3
- var t = {};
4
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
- t[p] = s[p];
6
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
- t[p[i]] = s[p[i]];
10
- }
11
- return t;
12
- };
13
- import React from 'react';
14
- import { withFieldMetadata } from '../enhancers/withFieldMetadata';
15
- import { withEmptyFieldEditingComponent } from '../enhancers/withEmptyFieldEditingComponent';
16
- import { DefaultEmptyFieldEditingComponentText } from './DefaultEmptyFieldEditingComponents';
17
- import { isFieldValueEmpty } from '@sitecore-content-sdk/core/layout';
18
- export const Text = withFieldMetadata(withEmptyFieldEditingComponent((_a) => {
19
- var { field, tag, editable = true, encode = true } = _a, otherProps = __rest(_a, ["field", "tag", "editable", "encode"]);
20
- if (isFieldValueEmpty(field)) {
21
- return null;
22
- }
23
- // can't use editable value if we want to output unencoded
24
- if (!encode) {
25
- // eslint-disable-next-line no-param-reassign, no-unused-vars
26
- editable = false;
27
- }
28
- let output = field.value === undefined ? '' : field.value;
29
- // when string value isn't formatted, we should format line breaks
30
- const splitted = String(output).split('\n');
31
- if (splitted.length) {
32
- const formatted = [];
33
- splitted.forEach((str, i) => {
34
- const isLast = i === splitted.length - 1;
35
- formatted.push(str);
36
- if (!isLast) {
37
- formatted.push(React.createElement("br", { key: i }));
38
- }
39
- });
40
- output = formatted;
41
- }
42
- let children = null;
43
- const htmlProps = Object.assign({}, otherProps);
44
- if (!encode) {
45
- htmlProps.dangerouslySetInnerHTML = {
46
- __html: output,
47
- };
48
- }
49
- else {
50
- children = output;
51
- }
52
- if (tag || !encode) {
53
- return React.createElement(tag || 'span', htmlProps, children);
54
- }
55
- else {
56
- return React.createElement(React.Fragment, null, children);
57
- }
58
- }, { defaultEmptyFieldEditingComponent: DefaultEmptyFieldEditingComponentText }));
59
- Text.displayName = 'Text';
1
+ 'use client';
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ import React from 'react';
14
+ import { withFieldMetadata } from '../enhancers/withFieldMetadata';
15
+ import { withEmptyFieldEditingComponent } from '../enhancers/withEmptyFieldEditingComponent';
16
+ import { DefaultEmptyFieldEditingComponentText } from './DefaultEmptyFieldEditingComponents';
17
+ import { isFieldValueEmpty } from '@sitecore-content-sdk/core/layout';
18
+ /**
19
+ * The Text component.
20
+ * @public
21
+ */
22
+ export const Text = withFieldMetadata(withEmptyFieldEditingComponent((_a) => {
23
+ var { field, tag, editable = true, encode = true } = _a, otherProps = __rest(_a, ["field", "tag", "editable", "encode"]);
24
+ if (isFieldValueEmpty(field)) {
25
+ return null;
26
+ }
27
+ // can't use editable value if we want to output unencoded
28
+ if (!encode) {
29
+ // eslint-disable-next-line no-param-reassign, no-unused-vars
30
+ editable = false;
31
+ }
32
+ let output = field.value === undefined ? '' : field.value;
33
+ // when string value isn't formatted, we should format line breaks
34
+ const splitted = String(output).split('\n');
35
+ if (splitted.length) {
36
+ const formatted = [];
37
+ splitted.forEach((str, i) => {
38
+ const isLast = i === splitted.length - 1;
39
+ formatted.push(str);
40
+ if (!isLast) {
41
+ formatted.push(React.createElement("br", { key: i }));
42
+ }
43
+ });
44
+ output = formatted;
45
+ }
46
+ let children = null;
47
+ const htmlProps = Object.assign({}, otherProps);
48
+ if (!encode) {
49
+ htmlProps.dangerouslySetInnerHTML = {
50
+ __html: output,
51
+ };
52
+ }
53
+ else {
54
+ children = output;
55
+ }
56
+ if (tag || !encode) {
57
+ return React.createElement(tag || 'span', htmlProps, children);
58
+ }
59
+ else {
60
+ return React.createElement(React.Fragment, null, children);
61
+ }
62
+ }, { defaultEmptyFieldEditingComponent: DefaultEmptyFieldEditingComponentText }));
63
+ Text.displayName = 'Text';
@@ -1,4 +1,4 @@
1
- /**
2
- * SXA uses custom default export name
3
- */
4
- export const DEFAULT_EXPORT_NAME = 'Default';
1
+ /**
2
+ * SXA uses custom default export name
3
+ */
4
+ export const DEFAULT_EXPORT_NAME = 'Default';
@@ -1,2 +1,2 @@
1
- export * from './components';
2
- export * from './props';
1
+ export * from './components';
2
+ export * from './props';
@@ -1 +1 @@
1
- export {};
1
+ export {};
@@ -1,14 +1,14 @@
1
- import React from 'react';
2
- import { AppPlaceholder } from '../components/Placeholder/AppPlaceholder';
3
- export const withAppPlaceholder = (Component) => {
4
- return (props) => {
5
- const placeholders = props.rendering.placeholders;
6
- const phProps = {};
7
- for (const placeholder of Object.keys(placeholders)) {
8
- phProps[placeholder] = (React.createElement(AppPlaceholder, { name: placeholder, rendering: props.rendering, componentMap: props.componentMap, page: props.page }));
9
- }
10
- const displayName = Component.displayName || Component.name || 'Component';
11
- const propsCopy = Object.assign(Object.assign({}, props), { displayName });
12
- return React.createElement(Component, Object.assign({}, propsCopy, { placeholders: phProps }));
13
- };
14
- };
1
+ import React from 'react';
2
+ import { AppPlaceholder } from '../components/Placeholder/AppPlaceholder';
3
+ export const withAppPlaceholder = (Component) => {
4
+ return (props) => {
5
+ const placeholders = props.rendering.placeholders || {};
6
+ const phProps = {};
7
+ for (const placeholder of Object.keys(placeholders)) {
8
+ phProps[placeholder] = (React.createElement(AppPlaceholder, { name: placeholder, rendering: props.rendering, componentMap: props.componentMap, page: props.page }));
9
+ }
10
+ const displayName = Component.displayName || Component.name || 'Component';
11
+ const propsCopy = Object.assign(Object.assign({}, props), { displayName });
12
+ return React.createElement(Component, Object.assign({}, propsCopy, { placeholders: phProps }));
13
+ };
14
+ };
@@ -1,18 +1,18 @@
1
- import React from 'react';
2
- import { ComponentMapReactContext } from '../components/SitecoreProvider';
3
- import { useContext } from 'react';
4
- /**
5
- * @param {React.ComponentClass<T> | React.FC<T>} Component
6
- */
7
- export function withComponentMap(Component) {
8
- /**
9
- * @param {T} props - props to pass to the wrapped component
10
- * @returns {JSX.Element} - the rendered component
11
- */
12
- function WithComponentMap(props) {
13
- const context = useContext(ComponentMapReactContext);
14
- return React.createElement(Component, Object.assign({}, props, { componentMap: props.componentMap || context }));
15
- }
16
- WithComponentMap.displayName = `withComponentMap(${Component.displayName || Component.name || 'Anonymous'})`;
17
- return WithComponentMap;
18
- }
1
+ import React from 'react';
2
+ import { ComponentMapReactContext } from '../components/SitecoreProvider';
3
+ import { useContext } from 'react';
4
+ /**
5
+ * @param {React.ComponentClass<T> | React.FC<T>} Component
6
+ */
7
+ export function withComponentMap(Component) {
8
+ /**
9
+ * @param {T} props - props to pass to the wrapped component
10
+ * @returns {JSX.Element} - the rendered component
11
+ */
12
+ function WithComponentMap(props) {
13
+ const context = useContext(ComponentMapReactContext);
14
+ return React.createElement(Component, Object.assign({}, props, { componentMap: props.componentMap || context }));
15
+ }
16
+ WithComponentMap.displayName = `withComponentMap(${Component.displayName || Component.name || 'Anonymous'})`;
17
+ return WithComponentMap;
18
+ }
@@ -1,22 +1,23 @@
1
- import React from 'react';
2
- import { useSitecore } from './withSitecore';
3
- export const DefaultEditingError = () => (React.createElement("div", { className: "sc-jss-editing-error", role: "alert" }, "Datasource is required. Please choose a content item for this component."));
4
- /**
5
- * Checks whether a Sitecore datasource is present and renders appropriately depending on page mode (normal vs editing).
6
- * @param {WithDatasourceCheckOptions} [options]
7
- * @returns
8
- * The wrapped component, if a datasource is present.
9
- * A null component (in normal mode) or an error component (in editing mode), if a datasource is not present.
10
- */
11
- export function withDatasourceCheck(options) {
12
- return function withDatasourceCheckHoc(Component) {
13
- return function WithDatasourceCheck(props) {
14
- var _a, _b;
15
- const { page } = useSitecore();
16
- const EditingError = (_a = options === null || options === void 0 ? void 0 : options.editingErrorComponent) !== null && _a !== void 0 ? _a : DefaultEditingError;
17
- // If the component is rendered in DesignLibrary, we don't need to check for datasource
18
- const isDesignLibrary = page.mode.isDesignLibrary;
19
- return isDesignLibrary || ((_b = props.rendering) === null || _b === void 0 ? void 0 : _b.dataSource) ? (React.createElement(Component, Object.assign({}, props))) : page.mode.isEditing ? (React.createElement(EditingError, null)) : null;
20
- };
21
- };
22
- }
1
+ import React from 'react';
2
+ import { useSitecore } from './withSitecore';
3
+ export const DefaultEditingError = () => (React.createElement("div", { className: "sc-jss-editing-error", role: "alert" }, "Datasource is required. Please choose a content item for this component."));
4
+ /**
5
+ * Checks whether a Sitecore datasource is present and renders appropriately depending on page mode (normal vs editing).
6
+ * @param {WithDatasourceCheckOptions} [options]
7
+ * @returns
8
+ * The wrapped component, if a datasource is present.
9
+ * A null component (in normal mode) or an error component (in editing mode), if a datasource is not present.
10
+ * @public
11
+ */
12
+ export function withDatasourceCheck(options) {
13
+ return function withDatasourceCheckHoc(Component) {
14
+ return function WithDatasourceCheck(props) {
15
+ var _a, _b;
16
+ const { page } = useSitecore();
17
+ const EditingError = (_a = options === null || options === void 0 ? void 0 : options.editingErrorComponent) !== null && _a !== void 0 ? _a : DefaultEditingError;
18
+ // If the component is rendered in DesignLibrary, we don't need to check for datasource
19
+ const isDesignLibrary = page.mode.isDesignLibrary;
20
+ return isDesignLibrary || ((_b = props.rendering) === null || _b === void 0 ? void 0 : _b.dataSource) ? (React.createElement(Component, Object.assign({}, props))) : page.mode.isEditing ? (React.createElement(EditingError, null)) : null;
21
+ };
22
+ };
23
+ }
@@ -1,17 +1,22 @@
1
- import React from 'react';
2
- import { resetEditorChromes } from '..';
3
- export const withEditorChromes = (WrappedComponent) => {
4
- class Enhancer extends React.Component {
5
- constructor() {
6
- super(...arguments);
7
- this.displayName = WrappedComponent.displayName || WrappedComponent.name || 'Component';
8
- }
9
- componentDidUpdate() {
10
- resetEditorChromes();
11
- }
12
- render() {
13
- return React.createElement(WrappedComponent, Object.assign({}, this.props));
14
- }
15
- }
16
- return Enhancer;
17
- };
1
+ import React from 'react';
2
+ import { resetEditorChromes } from '..';
3
+ /**
4
+ * HOC to inject editor chromes reset on component update.
5
+ * @param {React.ComponentClass<unknown> | React.FC<unknown>} WrappedComponent - The component to wrap.
6
+ * @public
7
+ */
8
+ export const withEditorChromes = (WrappedComponent) => {
9
+ class Enhancer extends React.Component {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.displayName = WrappedComponent.displayName || WrappedComponent.name || 'Component';
13
+ }
14
+ componentDidUpdate() {
15
+ resetEditorChromes();
16
+ }
17
+ render() {
18
+ return React.createElement(WrappedComponent, Object.assign({}, this.props));
19
+ }
20
+ }
21
+ return Enhancer;
22
+ };
@@ -1,34 +1,35 @@
1
- import React, { forwardRef } from 'react';
2
- import { isFieldValueEmpty, } from '@sitecore-content-sdk/core/layout';
3
- /**
4
- * Returns the passed field component or default component in case field value is empty and edit mode is 'metadata'
5
- * @param {ComponentType<FieldComponentProps>} FieldComponent the field component
6
- * @param {WithEmptyFieldEditingComponentProps} options the options of the HOC;
7
- */
8
- export function withEmptyFieldEditingComponent(FieldComponent, options) {
9
- const getEmptyFieldEditingComponent = (props) => {
10
- var _a;
11
- const { editable = true } = props;
12
- if (((_a = props.field) === null || _a === void 0 ? void 0 : _a.metadata) && editable && isFieldValueEmpty(props.field)) {
13
- const Component = props.emptyFieldEditingComponent || options.defaultEmptyFieldEditingComponent;
14
- let resolvedProps = props;
15
- // If no custom empty field editing component is provided, we can omit unnecessary props
16
- // to do not insert them to html
17
- if (!props.emptyFieldEditingComponent) {
18
- resolvedProps = Object.assign(Object.assign({}, props), { editable: undefined, field: undefined });
19
- }
20
- return React.createElement(Component, Object.assign({}, resolvedProps));
21
- }
22
- return null;
23
- };
24
- if (options.isForwardRef) {
25
- return forwardRef((props, ref) => {
26
- const emptyFieldEditingComponent = getEmptyFieldEditingComponent(props);
27
- return (emptyFieldEditingComponent || (React.createElement(FieldComponent, Object.assign({}, props, { ref: ref }))));
28
- });
29
- }
30
- return (props) => {
31
- const emptyFieldEditingComponent = getEmptyFieldEditingComponent(props);
32
- return emptyFieldEditingComponent || React.createElement(FieldComponent, Object.assign({}, props));
33
- };
34
- }
1
+ import React, { forwardRef } from 'react';
2
+ import { isFieldValueEmpty, } from '@sitecore-content-sdk/core/layout';
3
+ /**
4
+ * Returns the passed field component or default component in case field value is empty and edit mode is 'metadata'
5
+ * @param {ComponentType<FieldComponentProps>} FieldComponent the field component
6
+ * @param {WithEmptyFieldEditingComponentProps} options the options of the HOC;
7
+ * @public
8
+ */
9
+ export function withEmptyFieldEditingComponent(FieldComponent, options) {
10
+ const getEmptyFieldEditingComponent = (props) => {
11
+ var _a;
12
+ const { editable = true } = props;
13
+ if (((_a = props.field) === null || _a === void 0 ? void 0 : _a.metadata) && editable && isFieldValueEmpty(props.field)) {
14
+ const Component = props.emptyFieldEditingComponent || options.defaultEmptyFieldEditingComponent;
15
+ let resolvedProps = props;
16
+ // If no custom empty field editing component is provided, we can omit unnecessary props
17
+ // to do not insert them to html
18
+ if (!props.emptyFieldEditingComponent) {
19
+ resolvedProps = Object.assign(Object.assign({}, props), { editable: undefined, field: undefined });
20
+ }
21
+ return React.createElement(Component, Object.assign({}, resolvedProps));
22
+ }
23
+ return null;
24
+ };
25
+ if (options.isForwardRef) {
26
+ return forwardRef((props, ref) => {
27
+ const emptyFieldEditingComponent = getEmptyFieldEditingComponent(props);
28
+ return (emptyFieldEditingComponent || (React.createElement(FieldComponent, Object.assign({}, props, { ref: ref }))));
29
+ });
30
+ }
31
+ return (props) => {
32
+ const emptyFieldEditingComponent = getEmptyFieldEditingComponent(props);
33
+ return emptyFieldEditingComponent || React.createElement(FieldComponent, Object.assign({}, props));
34
+ };
35
+ }
@@ -1,31 +1,32 @@
1
- import React, { forwardRef } from 'react';
2
- import { FieldMetadata } from '../components/FieldMetadata';
3
- /**
4
- * Wraps the field component with metadata markup intended to be used for chromes hydration in Pages
5
- * @param {ComponentType<FieldComponentProps>} FieldComponent the field component
6
- * @param {boolean} isForwardRef set to 'true' if forward reference is needed
7
- */
8
- export function withFieldMetadata(FieldComponent, isForwardRef = false) {
9
- if (isForwardRef) {
10
- return forwardRef((props, ref) => {
11
- var _a;
12
- const { editable = true } = props;
13
- const metadata = (_a = props.field) === null || _a === void 0 ? void 0 : _a.metadata;
14
- if (!metadata || !editable) {
15
- return React.createElement(FieldComponent, Object.assign({}, props, { ref: ref }));
16
- }
17
- return (React.createElement(FieldMetadata, { metadata: metadata },
18
- React.createElement(FieldComponent, Object.assign({}, props, { ref: ref }))));
19
- });
20
- }
21
- return (props) => {
22
- var _a;
23
- const { editable = true } = props;
24
- const metadata = (_a = props.field) === null || _a === void 0 ? void 0 : _a.metadata;
25
- if (!metadata || !editable) {
26
- return React.createElement(FieldComponent, Object.assign({}, props));
27
- }
28
- return (React.createElement(FieldMetadata, { metadata: metadata },
29
- React.createElement(FieldComponent, Object.assign({}, props))));
30
- };
31
- }
1
+ import React, { forwardRef } from 'react';
2
+ import { FieldMetadata } from '../components/FieldMetadata';
3
+ /**
4
+ * Wraps the field component with metadata markup intended to be used for chromes hydration in Pages
5
+ * @param {ComponentType<FieldComponentProps>} FieldComponent the field component
6
+ * @param {boolean} isForwardRef set to 'true' if forward reference is needed
7
+ * @public
8
+ */
9
+ export function withFieldMetadata(FieldComponent, isForwardRef = false) {
10
+ if (isForwardRef) {
11
+ return forwardRef((props, ref) => {
12
+ var _a;
13
+ const { editable = true } = props;
14
+ const metadata = (_a = props.field) === null || _a === void 0 ? void 0 : _a.metadata;
15
+ if (!metadata || !editable) {
16
+ return React.createElement(FieldComponent, Object.assign({}, props, { ref: ref }));
17
+ }
18
+ return (React.createElement(FieldMetadata, { metadata: metadata },
19
+ React.createElement(FieldComponent, Object.assign({}, props, { ref: ref }))));
20
+ });
21
+ }
22
+ return (props) => {
23
+ var _a;
24
+ const { editable = true } = props;
25
+ const metadata = (_a = props.field) === null || _a === void 0 ? void 0 : _a.metadata;
26
+ if (!metadata || !editable) {
27
+ return React.createElement(FieldComponent, Object.assign({}, props));
28
+ }
29
+ return (React.createElement(FieldMetadata, { metadata: metadata },
30
+ React.createElement(FieldComponent, Object.assign({}, props))));
31
+ };
32
+ }
@@ -0,0 +1,17 @@
1
+ import React, { useContext } from 'react';
2
+ import { ImportMapReactContext } from '../components/SitecoreProvider';
3
+ /**
4
+ * Higher-order component that injects the loadImportMap function from context into component props.
5
+ * If the component already receives loadImportMap via props, the prop value takes precedence.
6
+ * @param {React.ComponentClass<T> | React.FC<T>} Component - The component to enhance.
7
+ * @returns {React.ComponentClass<T> | React.FC<T>} The enhanced component with loadImportMap injected.
8
+ */
9
+ export function withLoadImportMap(Component) {
10
+ const WithLoadImportMap = (props) => {
11
+ const loadImportMapContext = useContext(ImportMapReactContext);
12
+ const loadClientImportMap = props.loadImportMap || loadImportMapContext;
13
+ return React.createElement(Component, Object.assign({}, props, { loadImportMap: loadClientImportMap }));
14
+ };
15
+ WithLoadImportMap.displayName = `withLoadImportMap(${Component.displayName || Component.name || 'Component'})`;
16
+ return WithLoadImportMap;
17
+ }
@@ -1,59 +1,58 @@
1
- import React from 'react';
2
- import { withComponentMap } from './withComponentMap';
3
- import { withSitecore } from './withSitecore';
4
- import { PlaceholderComponent, getPlaceholderRenderings, } from '../components/Placeholder';
5
- /**
6
- * HOC to provide client-side placeholder functionality to a component.
7
- * @param {WithPlaceholderSpec} placeholders
8
- * @param {WithPlaceholderOptions} [options]
9
- */
10
- export function withPlaceholder(placeholders, options) {
11
- return (WrappedComponent) => {
12
- class WithPlaceholder extends PlaceholderComponent {
13
- constructor(props) {
14
- super(props);
15
- }
16
- render() {
17
- let childProps = Object.assign({}, this.props);
18
- delete childProps.componentMap;
19
- if (options && options.propsTransformer) {
20
- childProps = options.propsTransformer(childProps);
21
- }
22
- if (this.state.error) {
23
- if (childProps.errorComponent) {
24
- return React.createElement(childProps.errorComponent, { error: this.state.error });
25
- }
26
- return (React.createElement("div", { className: "sc-content-sdk-placeholder-error" },
27
- "A rendering error occurred: ",
28
- this.state.error.message,
29
- "."));
30
- }
31
- const renderingData = options && options.resolvePlaceholderDataFromProps
32
- ? options.resolvePlaceholderDataFromProps(childProps)
33
- : childProps.rendering;
34
- const definitelyArrayPlacholders = !Array.isArray(placeholders)
35
- ? [placeholders]
36
- : placeholders;
37
- definitelyArrayPlacholders.forEach((placeholder) => {
38
- let placeholderData;
39
- if (typeof placeholder !== 'string' && placeholder.placeholder && placeholder.prop) {
40
- placeholderData = getPlaceholderRenderings(renderingData, placeholder.placeholder, childProps.page.mode.isEditing);
41
- if (placeholderData) {
42
- childProps[placeholder.prop] =
43
- PlaceholderComponent.getRenderedComponents(this.props, placeholderData);
44
- }
45
- }
46
- else {
47
- placeholderData = getPlaceholderRenderings(renderingData, placeholder, childProps.page.mode.isEditing);
48
- if (placeholderData) {
49
- childProps[placeholder] =
50
- PlaceholderComponent.getRenderedComponents(this.props, placeholderData);
51
- }
52
- }
53
- });
54
- return React.createElement(WrappedComponent, Object.assign({}, childProps));
55
- }
56
- }
57
- return withSitecore()(withComponentMap(WithPlaceholder));
58
- };
59
- }
1
+ import React from 'react';
2
+ import { withComponentMap } from './withComponentMap';
3
+ import { withSitecore } from './withSitecore';
4
+ import { PlaceholderComponent, getPlaceholderRenderings, } from '../components/Placeholder';
5
+ import { ErrorComponent } from '../components/ErrorBoundary';
6
+ /**
7
+ * HOC to provide client-side placeholder functionality to a component.
8
+ * @param {WithPlaceholderSpec} placeholders
9
+ * @param {WithPlaceholderOptions} [options]
10
+ * @public
11
+ */
12
+ export function withPlaceholder(placeholders, options) {
13
+ return (WrappedComponent) => {
14
+ class WithPlaceholder extends PlaceholderComponent {
15
+ constructor(props) {
16
+ super(props);
17
+ }
18
+ render() {
19
+ let childProps = Object.assign({}, this.props);
20
+ delete childProps.componentMap;
21
+ if (options && options.propsTransformer) {
22
+ childProps = options.propsTransformer(childProps);
23
+ }
24
+ if (this.state.error) {
25
+ if (childProps.errorComponent) {
26
+ return React.createElement(childProps.errorComponent, { error: this.state.error });
27
+ }
28
+ return (React.createElement(ErrorComponent, { message: `A rendering error occurred: ${this.state.error.message}.` }));
29
+ }
30
+ const renderingData = options && options.resolvePlaceholderDataFromProps
31
+ ? options.resolvePlaceholderDataFromProps(childProps)
32
+ : childProps.rendering;
33
+ const definitelyArrayPlacholders = !Array.isArray(placeholders)
34
+ ? [placeholders]
35
+ : placeholders;
36
+ definitelyArrayPlacholders.forEach((placeholder) => {
37
+ let placeholderData;
38
+ if (typeof placeholder !== 'string' && placeholder.placeholder && placeholder.prop) {
39
+ placeholderData = getPlaceholderRenderings(renderingData, placeholder.placeholder, childProps.page.mode.isEditing);
40
+ if (placeholderData) {
41
+ childProps[placeholder.prop] =
42
+ PlaceholderComponent.getRenderedComponents(this.props, placeholderData);
43
+ }
44
+ }
45
+ else {
46
+ placeholderData = getPlaceholderRenderings(renderingData, placeholder, childProps.page.mode.isEditing);
47
+ if (placeholderData) {
48
+ childProps[placeholder] =
49
+ PlaceholderComponent.getRenderedComponents(this.props, placeholderData);
50
+ }
51
+ }
52
+ });
53
+ return React.createElement(WrappedComponent, Object.assign({}, childProps));
54
+ }
55
+ }
56
+ return withSitecore()(withComponentMap(WithPlaceholder));
57
+ };
58
+ }