@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,16 +1,16 @@
1
- import React from 'react';
2
- const baseStyles = {
3
- backgroundSize: '3px 3px',
4
- display: 'flex',
5
- justifyContent: 'center',
6
- alignItems: 'center',
7
- padding: '30px',
8
- color: '#aaa',
9
- };
10
- const backgroundImageStyle = {
11
- backgroundImage: 'linear-gradient(45deg, #ffffff 25%, #dcdcdc 25%, #dcdcdc 50%, #ffffff 50%, #ffffff 75%, #dcdcdc 75%, #dcdcdc 100%)',
12
- };
13
- export const HiddenRendering = () => {
14
- const styles = process.env.NODE_ENV === 'test' ? baseStyles : Object.assign(Object.assign({}, baseStyles), backgroundImageStyle);
15
- return React.createElement("div", { style: styles }, "The component is hidden");
16
- };
1
+ import React from 'react';
2
+ const baseStyles = {
3
+ backgroundSize: '3px 3px',
4
+ display: 'flex',
5
+ justifyContent: 'center',
6
+ alignItems: 'center',
7
+ padding: '30px',
8
+ color: '#aaa',
9
+ };
10
+ const backgroundImageStyle = {
11
+ backgroundImage: 'linear-gradient(45deg, #ffffff 25%, #dcdcdc 25%, #dcdcdc 50%, #ffffff 50%, #ffffff 75%, #dcdcdc 75%, #dcdcdc 100%)',
12
+ };
13
+ export const HiddenRendering = () => {
14
+ const styles = process.env.NODE_ENV === 'test' ? baseStyles : Object.assign(Object.assign({}, baseStyles), backgroundImageStyle);
15
+ return React.createElement("div", { style: styles }, "The component is hidden");
16
+ };
@@ -1,60 +1,65 @@
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
- /* eslint-disable no-unused-vars */
13
- import { mediaApi } from '@sitecore-content-sdk/core/media';
14
- import React from 'react';
15
- import { addClassName } from '../utils';
16
- import { withFieldMetadata } from '../enhancers/withFieldMetadata';
17
- import { withEmptyFieldEditingComponent } from '../enhancers/withEmptyFieldEditingComponent';
18
- import { DefaultEmptyFieldEditingComponentImage } from './DefaultEmptyFieldEditingComponents';
19
- import { isFieldValueEmpty } from '@sitecore-content-sdk/core/layout';
20
- const getImageAttrs = (_a, imageParams, mediaUrlPrefix) => {
21
- var { src, srcSet } = _a, otherAttrs = __rest(_a, ["src", "srcSet"]);
22
- if (!src) {
23
- return null;
24
- }
25
- addClassName(otherAttrs);
26
- const newAttrs = Object.assign({}, otherAttrs);
27
- // update image URL for content sdk handler and image rendering params
28
- const resolvedSrc = mediaApi.updateImageUrl(src, imageParams, mediaUrlPrefix);
29
- if (srcSet) {
30
- // replace with HTML-formatted srcset, including updated image URLs
31
- newAttrs.srcSet = mediaApi.getSrcSet(resolvedSrc, srcSet, imageParams, mediaUrlPrefix);
32
- }
33
- // always output original src as fallback for older browsers
34
- newAttrs.src = resolvedSrc;
35
- return newAttrs;
36
- };
37
- export const Image = withFieldMetadata(withEmptyFieldEditingComponent((_a) => {
38
- var { editable = true, imageParams, field, mediaUrlPrefix } = _a, otherProps = __rest(_a, ["editable", "imageParams", "field", "mediaUrlPrefix"]);
39
- const dynamicMedia = field;
40
- if (isFieldValueEmpty(dynamicMedia)) {
41
- return null;
42
- }
43
- // some wise-guy/gal is passing in a 'raw' image object value
44
- const img = dynamicMedia.src
45
- ? field
46
- : dynamicMedia.value;
47
- if (!img) {
48
- return null;
49
- }
50
- // prevent metadata from being passed to the img tag
51
- if (img.metadata) {
52
- delete img.metadata;
53
- }
54
- const attrs = getImageAttrs(Object.assign(Object.assign({}, img), otherProps), imageParams, mediaUrlPrefix);
55
- if (attrs) {
56
- return React.createElement("img", Object.assign({}, attrs));
57
- }
58
- return null; // we can't handle the truth
59
- }, { defaultEmptyFieldEditingComponent: DefaultEmptyFieldEditingComponentImage }));
60
- Image.displayName = 'Image';
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
+ /* eslint-disable no-unused-vars */
13
+ import { mediaApi } from '@sitecore-content-sdk/core/media';
14
+ import React from 'react';
15
+ import { addClassName } from '../utils';
16
+ import { withFieldMetadata } from '../enhancers/withFieldMetadata';
17
+ import { withEmptyFieldEditingComponent } from '../enhancers/withEmptyFieldEditingComponent';
18
+ import { DefaultEmptyFieldEditingComponentImage } from './DefaultEmptyFieldEditingComponents';
19
+ import { isFieldValueEmpty } from '@sitecore-content-sdk/core/layout';
20
+ const getImageAttrs = (_a, imageParams, mediaUrlPrefix) => {
21
+ var { src, srcSet } = _a, otherAttrs = __rest(_a, ["src", "srcSet"]);
22
+ if (!src) {
23
+ return null;
24
+ }
25
+ addClassName(otherAttrs);
26
+ const newAttrs = Object.assign({}, otherAttrs);
27
+ // update image URL for content sdk handler and image rendering params
28
+ const resolvedSrc = mediaApi.updateImageUrl(src, imageParams, mediaUrlPrefix);
29
+ if (srcSet) {
30
+ // replace with HTML-formatted srcset, including updated image URLs
31
+ newAttrs.srcSet = mediaApi.getSrcSet(resolvedSrc, srcSet, imageParams, mediaUrlPrefix);
32
+ }
33
+ // always output original src as fallback for older browsers
34
+ newAttrs.src = resolvedSrc;
35
+ return newAttrs;
36
+ };
37
+ /**
38
+ * The Image component.
39
+ * @param {ImageProps} props component props
40
+ * @public
41
+ */
42
+ export const Image = withFieldMetadata(withEmptyFieldEditingComponent((_a) => {
43
+ var { editable = true, imageParams, field, mediaUrlPrefix } = _a, otherProps = __rest(_a, ["editable", "imageParams", "field", "mediaUrlPrefix"]);
44
+ const dynamicMedia = field;
45
+ if (isFieldValueEmpty(dynamicMedia)) {
46
+ return null;
47
+ }
48
+ // some wise-guy/gal is passing in a 'raw' image object value
49
+ const img = dynamicMedia.src
50
+ ? field
51
+ : dynamicMedia.value;
52
+ if (!img) {
53
+ return null;
54
+ }
55
+ // prevent metadata from being passed to the img tag
56
+ if (img.metadata) {
57
+ delete img.metadata;
58
+ }
59
+ const attrs = getImageAttrs(Object.assign(Object.assign({}, img), otherProps), imageParams, mediaUrlPrefix);
60
+ if (attrs) {
61
+ return React.createElement("img", Object.assign({}, attrs));
62
+ }
63
+ return null; // we can't handle the truth
64
+ }, { defaultEmptyFieldEditingComponent: DefaultEmptyFieldEditingComponentImage }));
65
+ Image.displayName = 'Image';
@@ -1,50 +1,55 @@
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, { forwardRef } from 'react';
14
- import { isFieldValueEmpty } from '@sitecore-content-sdk/core/layout';
15
- import { withFieldMetadata } from '../enhancers/withFieldMetadata';
16
- import { withEmptyFieldEditingComponent } from '../enhancers/withEmptyFieldEditingComponent';
17
- import { DefaultEmptyFieldEditingComponentText } from './DefaultEmptyFieldEditingComponents';
18
- export const Link = withFieldMetadata(withEmptyFieldEditingComponent(forwardRef(
19
- // eslint-disable-next-line no-unused-vars
20
- (_a, ref) => {
21
- var { field, editable = true, showLinkTextWithChildrenPresent } = _a, otherProps = __rest(_a, ["field", "editable", "showLinkTextWithChildrenPresent"]);
22
- const children = otherProps.children;
23
- const dynamicField = field;
24
- if (isFieldValueEmpty(dynamicField)) {
25
- return null;
26
- }
27
- // handle link directly on field for forgetful devs
28
- const link = dynamicField.href
29
- ? field
30
- : dynamicField.value;
31
- if (!link) {
32
- return null;
33
- }
34
- const anchor = link.linktype !== 'anchor' && link.anchor ? `#${link.anchor}` : '';
35
- const querystring = link.querystring ? `?${link.querystring}` : '';
36
- const anchorAttrs = {
37
- href: `${link.href}${querystring}${anchor}`,
38
- className: link.class,
39
- title: link.title,
40
- target: link.target,
41
- };
42
- if (anchorAttrs.target === '_blank' && !anchorAttrs.rel) {
43
- // information disclosure attack prevention keeps target blank site from getting ref to window.opener
44
- anchorAttrs.rel = 'noopener noreferrer';
45
- }
46
- const linkText = showLinkTextWithChildrenPresent || !children ? link.text || link.href : null;
47
- const element = React.createElement('a', Object.assign(Object.assign(Object.assign({}, anchorAttrs), otherProps), { key: 'link', ref }), linkText, children);
48
- return React.createElement(React.Fragment, null, element);
49
- }), { defaultEmptyFieldEditingComponent: DefaultEmptyFieldEditingComponentText, isForwardRef: true }), true);
50
- Link.displayName = 'Link';
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, { forwardRef } from 'react';
14
+ import { isFieldValueEmpty } from '@sitecore-content-sdk/core/layout';
15
+ import { withFieldMetadata } from '../enhancers/withFieldMetadata';
16
+ import { withEmptyFieldEditingComponent } from '../enhancers/withEmptyFieldEditingComponent';
17
+ import { DefaultEmptyFieldEditingComponentText } from './DefaultEmptyFieldEditingComponents';
18
+ /**
19
+ * The Link component.
20
+ * @param {LinkProps} props component props
21
+ * @public
22
+ */
23
+ export const Link = withFieldMetadata(withEmptyFieldEditingComponent(forwardRef(
24
+ // eslint-disable-next-line no-unused-vars
25
+ (_a, ref) => {
26
+ var { field, editable = true, showLinkTextWithChildrenPresent } = _a, otherProps = __rest(_a, ["field", "editable", "showLinkTextWithChildrenPresent"]);
27
+ const children = otherProps.children;
28
+ const dynamicField = field;
29
+ if (isFieldValueEmpty(dynamicField)) {
30
+ return null;
31
+ }
32
+ // handle link directly on field for forgetful devs
33
+ const link = dynamicField.href
34
+ ? field
35
+ : dynamicField.value;
36
+ if (!link) {
37
+ return null;
38
+ }
39
+ const anchor = link.linktype !== 'anchor' && link.anchor ? `#${link.anchor}` : '';
40
+ const querystring = link.querystring ? `?${link.querystring}` : '';
41
+ const anchorAttrs = {
42
+ href: `${link.href}${querystring}${anchor}`,
43
+ className: link.class,
44
+ title: link.title,
45
+ target: link.target,
46
+ };
47
+ if (anchorAttrs.target === '_blank' && !anchorAttrs.rel) {
48
+ // information disclosure attack prevention keeps target blank site from getting ref to window.opener
49
+ anchorAttrs.rel = 'noopener noreferrer';
50
+ }
51
+ const linkText = showLinkTextWithChildrenPresent || !children ? link.text || link.href : null;
52
+ const element = React.createElement('a', Object.assign(Object.assign(Object.assign({}, anchorAttrs), otherProps), { key: 'link', ref }), linkText, children);
53
+ return React.createElement(React.Fragment, null, element);
54
+ }), { defaultEmptyFieldEditingComponent: DefaultEmptyFieldEditingComponentText, isForwardRef: true }), true);
55
+ Link.displayName = 'Link';
@@ -1,21 +1,21 @@
1
- import React from 'react';
2
- export const MissingComponent = (props) => {
3
- const componentName = props.rendering && props.rendering.componentName
4
- ? props.rendering.componentName
5
- : 'Unnamed Component';
6
- // error override would mean component is not unimplemented
7
- !props.errorOverride &&
8
- console.log(`Component props for unimplemented '${componentName}' component`, props);
9
- const errorMessage = props.errorOverride ||
10
- 'Content SDK component is missing React implementation. See the developer console for more information.';
11
- return (React.createElement("div", { style: {
12
- background: 'darkorange',
13
- outline: '5px solid orange',
14
- padding: '10px',
15
- color: 'white',
16
- maxWidth: '500px',
17
- } },
18
- React.createElement("h2", null, componentName),
19
- React.createElement("p", null, errorMessage)));
20
- };
21
- MissingComponent.displayName = 'MissingComponent';
1
+ import React from 'react';
2
+ export const MissingComponent = (props) => {
3
+ const componentName = props.rendering && props.rendering.componentName
4
+ ? props.rendering.componentName
5
+ : 'Unnamed Component';
6
+ // error override would mean component is not unimplemented
7
+ !props.errorOverride &&
8
+ console.log(`Component props for unimplemented '${componentName}' component`, props);
9
+ const errorMessage = props.errorOverride ||
10
+ 'Content SDK component is missing React implementation. See the developer console for more information.';
11
+ return (React.createElement("div", { style: {
12
+ background: 'darkorange',
13
+ outline: '5px solid orange',
14
+ padding: '10px',
15
+ color: 'white',
16
+ maxWidth: '500px',
17
+ } },
18
+ React.createElement("h2", null, componentName),
19
+ React.createElement("p", null, errorMessage)));
20
+ };
21
+ MissingComponent.displayName = 'MissingComponent';
@@ -1,69 +1,72 @@
1
- import { getAppComponentProps, getComponentForRendering, getPlaceholderRenderings, renderEmptyPlaceholder, } from './placeholder-utils';
2
- import React from 'react';
3
- import { PlaceholderMetadata } from './PlaceholderMetadata';
4
- import ErrorBoundary from '../ErrorBoundary';
5
- import { ClientComponentWrapper } from './ClientComponentWrapper';
6
- import { rsc } from '#rsc-env';
7
- /**
8
- * The implemention of placeholder compatible with React Server Components.
9
- * Renders components from the layout data for the given placeholder name, with consideration for page edit mode.
10
- * Pulls components from the provided component map.
11
- * @param {AppPlaceholderProps} props Placeholder props
12
- * @returns {React.ReactNode | React.ReactElement[]} rendered component(s)
13
- */
14
- export const AppPlaceholder = (props) => {
15
- const { rendering: parentRendering, componentMap, page } = props;
16
- const placeholderRenderings = getPlaceholderRenderings(parentRendering, props.name, page.mode.isEditing);
17
- const components = placeholderRenderings
18
- .map((rendering, index) => {
19
- const { component: Component, isEmpty, componentType, dynamic, } = getComponentForRendering(rendering, props.name, componentMap, props.hiddenRenderingComponent, props.missingComponentComponent);
20
- const isClient = componentType === 'client';
21
- const key = rendering.uid || `component-${index}`;
22
- const renderedProps = getAppComponentProps(props, rendering);
23
- const finalRenderedProps = props.modifyComponentProps
24
- ? props.modifyComponentProps(renderedProps)
25
- : renderedProps;
26
- // Client wrapper is required only when component crosses boundary from server to client.
27
- // It happens when component is marker as client and rendered in RSC context.
28
- // Also, it is not required when component is hidden or empty, as it will be rendered whthout boundary crossing.
29
- const useClientWrapper = isClient && rsc && !isEmpty;
30
- let rendered = useClientWrapper ? (React.createElement(ClientComponentWrapper, { rendering: rendering, componentProps: finalRenderedProps, placeholderName: props.name, key: key })) : (React.createElement(Component, Object.assign({ key: key }, finalRenderedProps, { rendering: rendering, page: page, componentMap: componentMap })));
31
- if (!isEmpty) {
32
- const errorBoundaryKey = rendered.type + '-' + index;
33
- const disableSuspense = props.disableSuspense || false;
34
- rendered = (React.createElement(ErrorBoundary, { "data-testid": "error-boundary", key: errorBoundaryKey, errorComponent: props.errorComponent, componentLoadingMessage: props.componentLoadingMessage, isDynamic: dynamic, disableSuspense: disableSuspense, rendering: rendered.props.rendering }, rendered));
35
- }
36
- // if in edit mode then emit shallow chromes for hydration in Pages
37
- if (page.mode.isEditing) {
38
- const key = rendering.uid || `component-${index}`;
39
- return (React.createElement(PlaceholderMetadata, { key: key, rendering: rendering }, rendered));
40
- }
41
- return rendered;
42
- })
43
- .filter((element) => element);
44
- const finalRendering = page.mode.isEditing
45
- ? [
46
- React.createElement(PlaceholderMetadata, { key: parentRendering.uid, placeholderName: props.name, rendering: parentRendering }, components),
47
- ]
48
- : components;
49
- const placeholderEmpty = !placeholderRenderings.length;
50
- if (placeholderEmpty) {
51
- const rendered = props.renderEmpty ? props.renderEmpty(finalRendering) : finalRendering;
52
- return page.mode.isEditing ? renderEmptyPlaceholder(rendered) : rendered;
53
- }
54
- if (props.render) {
55
- return props.render(components, placeholderRenderings, props);
56
- }
57
- else if (props.renderEach) {
58
- const renderEach = props.renderEach;
59
- return finalRendering.map((component, index) => {
60
- if (component && component.props && component.props.type === 'text/sitecore') {
61
- return component;
62
- }
63
- return renderEach(component, index);
64
- });
65
- }
66
- else {
67
- return finalRendering;
68
- }
69
- };
1
+ import { getAppComponentProps, getComponentForRendering, getPlaceholderRenderings, renderEmptyPlaceholder, } from './placeholder-utils';
2
+ import React from 'react';
3
+ import { PlaceholderMetadata } from './PlaceholderMetadata';
4
+ import ErrorBoundary from '../ErrorBoundary';
5
+ import { ClientComponentWrapper } from './ClientComponentWrapper';
6
+ import { rsc } from '#rsc-env';
7
+ /**
8
+ * The implemention of placeholder compatible with React Server Components.
9
+ * Renders components from the layout data for the given placeholder name, with consideration for page edit mode.
10
+ * Pulls components from the provided component map.
11
+ * @param {AppPlaceholderProps} props Placeholder props
12
+ * @returns {React.ReactNode | React.ReactElement[]} rendered component(s)
13
+ * @public
14
+ */
15
+ export const AppPlaceholder = (props) => {
16
+ const { rendering: parentRendering, componentMap, page } = props;
17
+ const placeholderRenderings = getPlaceholderRenderings(parentRendering, props.name, page.mode.isEditing);
18
+ const components = placeholderRenderings
19
+ .map((rendering, index) => {
20
+ const { component: Component, isEmpty, componentType, dynamic, } = getComponentForRendering(rendering, props.name, componentMap, props.hiddenRenderingComponent, props.missingComponentComponent);
21
+ const isClient = componentType === 'client';
22
+ const key = rendering.uid || `component-${index}`;
23
+ // Use rsc context to determine the current runtime
24
+ const componentRuntime = rsc ? 'server' : 'client';
25
+ const renderedProps = getAppComponentProps(props, rendering);
26
+ const finalRenderedProps = props.modifyComponentProps
27
+ ? props.modifyComponentProps(renderedProps)
28
+ : renderedProps;
29
+ // Client wrapper is required only when component crosses boundary from server to client.
30
+ // It happens when component is marker as client and rendered in RSC context.
31
+ // Also, it is not required when component is hidden or empty, as it will be rendered whthout boundary crossing.
32
+ const useClientWrapper = isClient && rsc && !isEmpty;
33
+ let rendered = useClientWrapper ? (React.createElement(ClientComponentWrapper, { rendering: rendering, componentProps: finalRenderedProps, placeholderName: props.name, key: key })) : (React.createElement(Component, Object.assign({ key: key }, finalRenderedProps, { rendering: rendering, page: page, componentMap: componentMap })));
34
+ if (!isEmpty) {
35
+ const errorBoundaryKey = rendered.type + '-' + index;
36
+ const disableSuspense = props.disableSuspense || false;
37
+ rendered = (React.createElement(ErrorBoundary, { "data-testid": "error-boundary", key: errorBoundaryKey, errorComponent: props.errorComponent, componentLoadingMessage: props.componentLoadingMessage, isDynamic: dynamic, disableSuspense: disableSuspense, rendering: rendered.props.rendering }, rendered));
38
+ }
39
+ // if in edit mode then emit shallow chromes for hydration in Pages
40
+ if (page.mode.isEditing) {
41
+ const key = rendering.uid || `component-${index}`;
42
+ return (React.createElement(PlaceholderMetadata, { key: key, rendering: rendering, componentRuntime: componentRuntime }, rendered));
43
+ }
44
+ return rendered;
45
+ })
46
+ .filter((element) => element);
47
+ const finalRendering = page.mode.isEditing
48
+ ? [
49
+ React.createElement(PlaceholderMetadata, { key: parentRendering.uid, placeholderName: props.name, rendering: parentRendering }, components),
50
+ ]
51
+ : components;
52
+ const placeholderEmpty = !placeholderRenderings.length;
53
+ if (placeholderEmpty) {
54
+ const rendered = props.renderEmpty ? props.renderEmpty(finalRendering) : finalRendering;
55
+ return page.mode.isEditing ? renderEmptyPlaceholder(rendered) : rendered;
56
+ }
57
+ if (props.render) {
58
+ return props.render(components, placeholderRenderings, props);
59
+ }
60
+ else if (props.renderEach) {
61
+ const renderEach = props.renderEach;
62
+ return finalRendering.map((component, index) => {
63
+ if (component && component.props && component.props.type === 'text/sitecore') {
64
+ return component;
65
+ }
66
+ return renderEach(component, index);
67
+ });
68
+ }
69
+ else {
70
+ return finalRendering;
71
+ }
72
+ };
@@ -1,14 +1,14 @@
1
- 'use client';
2
- import { ComponentMapReactContext } from '../SitecoreProvider';
3
- import { useContext } from 'react';
4
- import React from 'react';
5
- import { useSitecore } from '../../enhancers/withSitecore';
6
- import { getComponentForRendering } from './placeholder-utils';
7
- export const ClientComponentWrapper = (props) => {
8
- const { page } = useSitecore();
9
- const componentMap = useContext(ComponentMapReactContext);
10
- const componentPropsWithContext = Object.assign(Object.assign({}, props.componentProps), { rendering: props.rendering, componentMap,
11
- page });
12
- const { component: Component } = getComponentForRendering(props.rendering, props.placeholderName, componentMap);
13
- return React.createElement(Component, Object.assign({}, componentPropsWithContext));
14
- };
1
+ 'use client';
2
+ import { ComponentMapReactContext } from '../SitecoreProvider';
3
+ import { useContext } from 'react';
4
+ import React from 'react';
5
+ import { useSitecore } from '../../enhancers/withSitecore';
6
+ import { getComponentForRendering } from './placeholder-utils';
7
+ export const ClientComponentWrapper = (props) => {
8
+ const { page } = useSitecore();
9
+ const componentMap = useContext(ComponentMapReactContext);
10
+ const componentPropsWithContext = Object.assign(Object.assign({}, props.componentProps), { rendering: props.rendering, componentMap,
11
+ page });
12
+ const { component: Component } = getComponentForRendering(props.rendering, props.placeholderName, componentMap);
13
+ return React.createElement(Component, Object.assign({}, componentPropsWithContext));
14
+ };