@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,214 +1,214 @@
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 { MissingComponent } from '../MissingComponent';
14
- import { DEFAULT_EXPORT_NAME } from '../sharedTypes';
15
- import { isDynamicPlaceholder, getDynamicPlaceholderPattern, } from '@sitecore-content-sdk/core/layout';
16
- import { constants } from '@sitecore-content-sdk/core';
17
- import { HiddenRendering } from '../HiddenRendering';
18
- import { FEaaSComponent, FEaaSWrapper, BYOCComponent, BYOCWrapper, BYOC_COMPONENT_RENDERING_NAME, BYOC_WRAPPER_RENDERING_NAME, FEAAS_COMPONENT_RENDERING_NAME, FEAAS_WRAPPER_RENDERING_NAME, } from '../FEaaS';
19
- /**
20
- * Get the renderings for the specified placeholder from the rendering data.
21
- * @param {ComponentRendering | RouteData } rendering rendering data
22
- * @param {string} name placeholder name
23
- * @param {boolean} isEditing whether components should be rendered in editing mode
24
- * @returns {ComponentRendering[]} array of component renderings
25
- */
26
- export const getPlaceholderRenderings = (rendering, name, isEditing) => {
27
- let result;
28
- let phName = name.slice();
29
- /**
30
- * Process (SXA) dynamic placeholders
31
- * Find and replace the matching dynamic placeholder e.g 'nameOfContainer-{*}' with the requested e.g. 'nameOfContainer-1'.
32
- * For Metadata EditMode, we need to keep the raw placeholder name in place.
33
- */
34
- if (rendering === null || rendering === void 0 ? void 0 : rendering.placeholders) {
35
- Object.keys(rendering.placeholders).forEach((placeholder) => {
36
- const patternPlaceholder = isDynamicPlaceholder(placeholder)
37
- ? getDynamicPlaceholderPattern(placeholder)
38
- : null;
39
- if (patternPlaceholder && patternPlaceholder.test(phName)) {
40
- if (isEditing) {
41
- phName = placeholder;
42
- }
43
- else {
44
- rendering.placeholders[phName] = rendering.placeholders[placeholder];
45
- delete rendering.placeholders[placeholder];
46
- }
47
- }
48
- });
49
- }
50
- if (rendering && rendering.placeholders && Object.keys(rendering.placeholders).length > 0) {
51
- result = rendering.placeholders[phName];
52
- }
53
- else {
54
- result = null;
55
- }
56
- if (!result) {
57
- console.warn(`Placeholder '${phName}' was not found in the current rendering data`, JSON.stringify(rendering, null, 2));
58
- return [];
59
- }
60
- return result;
61
- };
62
- /**
63
- * Get SXA specific params from Sitecore rendering params
64
- * @param {ComponentRendering} rendering rendering object
65
- * @returns {object} converted SXA params
66
- */
67
- export const getSXAParams = (rendering) => {
68
- if (!rendering.params)
69
- return {};
70
- const { GridParameters, Styles } = rendering.params;
71
- return ((GridParameters || Styles) && {
72
- styles: `${GridParameters || ''} ${Styles || ''}`,
73
- });
74
- };
75
- /**
76
- * Renders the placeholder when it is empty. The required CSS styles are applied to the placeholder in edit mode.
77
- * @param {React.ReactNode | React.ReactElement[]} node react node
78
- * @returns react node
79
- */
80
- export const renderEmptyPlaceholder = (node) => {
81
- return React.createElement("div", { className: "sc-jss-empty-placeholder" }, node);
82
- };
83
- /**
84
- * Get component props to be passed to the rendered component.
85
- * @param {PlaceholderProps} placeholderProps current placeholder props
86
- * @param {ComponentRendering} componentRendering rendering to be rendered
87
- * @param {string} renderingKey unique key to pass over to rendering props
88
- * @returns {RenderedProps} props to be passed to the rendered component
89
- */
90
- export const getRenderedComponentProps = (placeholderProps, componentRendering, renderingKey) => {
91
- // eslint-disable-next-line no-unused-vars
92
- const { fields, params: placeholderParams } = placeholderProps, passThroughProps = __rest(placeholderProps, ["fields", "params"]);
93
- delete passThroughProps.missingComponentComponent;
94
- delete passThroughProps.hiddenRenderingComponent;
95
- delete passThroughProps.name;
96
- const mergedContentProps = getAppComponentProps(placeholderProps, componentRendering);
97
- return Object.assign(Object.assign(Object.assign({ key: renderingKey }, passThroughProps), mergedContentProps), { rendering: componentRendering });
98
- };
99
- /**
100
- * Merge placeholder and component field and params content props.
101
- * @param {BasePlaceholderProps} placeholderProps placeholder props
102
- * @param {ComponentRendering} componentRendering component rendering
103
- * @returns {ComponentProps} merged props
104
- */
105
- export function getAppComponentProps(placeholderProps, componentRendering) {
106
- const fields = Object.assign(Object.assign({}, (placeholderProps.fields || {})), (componentRendering.fields || {}));
107
- const params = Object.assign(Object.assign({}, (placeholderProps.params || {})), (componentRendering.params || {}));
108
- return {
109
- fields,
110
- params: Object.assign(Object.assign({}, params), getSXAParams(componentRendering)),
111
- rendering: componentRendering,
112
- };
113
- }
114
- /**
115
- * Get component implemenation from the component map based on the rendering definition.
116
- * @param {ComponentRendering} renderingDefinition rendering data
117
- * @param {string} placeholderName name of current placeholder
118
- * @param {ComponentMap} componentMap component map for the current app
119
- * @param {React.ComponentClass} [hiddenRenderingComponent] fallback implementation in to be rendered if the rendering is hidden
120
- * @param {React.ComponentClass} [missingComponentComponent] fallback implementation in case no component is found in the component map
121
- * @returns {ContentSDKComponet | null} component implementation or null if no component map is provided
122
- */
123
- export const getComponentForRendering = (renderingDefinition, placeholderName, componentMap, hiddenRenderingComponent, missingComponentComponent) => {
124
- var _a, _b;
125
- const logUnknownComponentError = (variant) => {
126
- console.error(`Placeholder ${placeholderName} contains unknown component ${renderingDefinition.componentName}${variant ? ` (${variant})` : ''}. Ensure that a React component exists for it, and that it is registered in your component-map file.`);
127
- };
128
- if (renderingDefinition.componentName === constants.HIDDEN_RENDERING_NAME) {
129
- return {
130
- component: hiddenRenderingComponent !== null && hiddenRenderingComponent !== void 0 ? hiddenRenderingComponent : HiddenRendering,
131
- isEmpty: true,
132
- componentType: 'universal',
133
- };
134
- }
135
- else if (!renderingDefinition.componentName) {
136
- return {
137
- component: () => React.createElement(React.Fragment, null),
138
- isEmpty: true,
139
- componentType: 'universal',
140
- };
141
- }
142
- let component = null;
143
- if (!componentMap || componentMap.size === 0) {
144
- console.warn(`No components were available in component map to service request for component ${renderingDefinition}`);
145
- }
146
- else {
147
- component = componentMap.get(renderingDefinition.componentName);
148
- }
149
- if (!component) {
150
- // Fallback/defaults for Sitecore Component renderings (in case not defined in component map)
151
- if (renderingDefinition.componentName === FEAAS_COMPONENT_RENDERING_NAME) {
152
- return {
153
- component: FEaaSComponent,
154
- isEmpty: false,
155
- componentType: 'universal',
156
- };
157
- }
158
- else if (renderingDefinition.componentName === FEAAS_WRAPPER_RENDERING_NAME) {
159
- return {
160
- component: FEaaSWrapper,
161
- isEmpty: false,
162
- componentType: 'universal',
163
- };
164
- }
165
- else if (renderingDefinition.componentName === BYOC_COMPONENT_RENDERING_NAME) {
166
- return {
167
- component: BYOCComponent,
168
- isEmpty: false,
169
- componentType: 'universal',
170
- };
171
- }
172
- else if (renderingDefinition.componentName === BYOC_WRAPPER_RENDERING_NAME) {
173
- // wrapping with error boundary could cause problems in case where parent component uses withPlaceholder HOC and tries to access its children props
174
- // that's why we need to mark BYOC wrapper dynamic
175
- return {
176
- component: BYOCWrapper,
177
- dynamic: true,
178
- componentType: 'universal',
179
- isEmpty: false,
180
- };
181
- }
182
- logUnknownComponentError();
183
- return {
184
- component: missingComponentComponent !== null && missingComponentComponent !== void 0 ? missingComponentComponent : MissingComponent,
185
- isEmpty: true,
186
- componentType: 'universal',
187
- };
188
- }
189
- // Render SXA Rendering Variant if available
190
- const exportName = (_a = renderingDefinition.params) === null || _a === void 0 ? void 0 : _a.FieldNames;
191
- const renderedComponent = exportName && exportName !== DEFAULT_EXPORT_NAME
192
- ? component[exportName]
193
- : component.default ||
194
- component.Default ||
195
- component;
196
- if (!renderedComponent) {
197
- logUnknownComponentError(exportName !== DEFAULT_EXPORT_NAME ? exportName : undefined);
198
- return {
199
- component: missingComponentComponent !== null && missingComponentComponent !== void 0 ? missingComponentComponent : MissingComponent,
200
- isEmpty: true,
201
- componentType: 'universal',
202
- };
203
- }
204
- const dynamic = !!((_b = renderedComponent.render) === null || _b === void 0 ? void 0 : _b.preload) ||
205
- renderingDefinition.componentName === BYOC_WRAPPER_RENDERING_NAME;
206
- // all dynamic elements will have a separate render prop
207
- return {
208
- component: renderedComponent,
209
- dynamic,
210
- componentType: component
211
- .componentType,
212
- isEmpty: false,
213
- };
214
- };
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 { MissingComponent } from '../MissingComponent';
14
+ import { DEFAULT_EXPORT_NAME } from '../sharedTypes';
15
+ import { isDynamicPlaceholder, getDynamicPlaceholderPattern, } from '@sitecore-content-sdk/core/layout';
16
+ import { constants } from '@sitecore-content-sdk/core';
17
+ import { HiddenRendering } from '../HiddenRendering';
18
+ import { FEaaSComponent, FEaaSWrapper, BYOCComponent, BYOCWrapper, BYOC_COMPONENT_RENDERING_NAME, BYOC_WRAPPER_RENDERING_NAME, FEAAS_COMPONENT_RENDERING_NAME, FEAAS_WRAPPER_RENDERING_NAME, } from '../FEaaS';
19
+ /**
20
+ * Get the renderings for the specified placeholder from the rendering data.
21
+ * @param {ComponentRendering | RouteData } rendering rendering data
22
+ * @param {string} name placeholder name
23
+ * @param {boolean} isEditing whether components should be rendered in editing mode
24
+ * @returns {ComponentRendering[]} array of component renderings
25
+ */
26
+ export const getPlaceholderRenderings = (rendering, name, isEditing) => {
27
+ let result;
28
+ let phName = name.slice();
29
+ /**
30
+ * Process (SXA) dynamic placeholders
31
+ * Find and replace the matching dynamic placeholder e.g 'nameOfContainer-{*}' with the requested e.g. 'nameOfContainer-1'.
32
+ * For Metadata EditMode, we need to keep the raw placeholder name in place.
33
+ */
34
+ if (rendering === null || rendering === void 0 ? void 0 : rendering.placeholders) {
35
+ Object.entries(rendering.placeholders).forEach(([key, value]) => {
36
+ const patternPlaceholder = isDynamicPlaceholder(key)
37
+ ? getDynamicPlaceholderPattern(key)
38
+ : null;
39
+ if (patternPlaceholder && patternPlaceholder.test(phName)) {
40
+ if (isEditing) {
41
+ phName = key;
42
+ }
43
+ else {
44
+ rendering.placeholders[phName] = value;
45
+ delete rendering.placeholders[key];
46
+ }
47
+ }
48
+ });
49
+ }
50
+ if (rendering && rendering.placeholders && Object.keys(rendering.placeholders).length > 0) {
51
+ result = rendering.placeholders[phName];
52
+ }
53
+ else {
54
+ result = null;
55
+ }
56
+ if (!result) {
57
+ console.warn(`Placeholder '${phName}' was not found in the current rendering data`, JSON.stringify(rendering, null, 2));
58
+ return [];
59
+ }
60
+ return result;
61
+ };
62
+ /**
63
+ * Get SXA specific params from Sitecore rendering params
64
+ * @param {ComponentRendering} rendering rendering object
65
+ * @returns {object} converted SXA params
66
+ */
67
+ export const getSXAParams = (rendering) => {
68
+ if (!rendering.params)
69
+ return { styles: '' };
70
+ const { GridParameters, Styles } = rendering.params;
71
+ return ((GridParameters || Styles) && {
72
+ styles: `${GridParameters || ''} ${Styles || ''}`,
73
+ });
74
+ };
75
+ /**
76
+ * Renders the placeholder when it is empty. The required CSS styles are applied to the placeholder in edit mode.
77
+ * @param {React.ReactNode | React.ReactElement[]} node react node
78
+ * @returns react node
79
+ */
80
+ export const renderEmptyPlaceholder = (node) => {
81
+ return React.createElement("div", { className: "sc-jss-empty-placeholder" }, node);
82
+ };
83
+ /**
84
+ * Get component props to be passed to the rendered component.
85
+ * @param {PlaceholderProps} placeholderProps current placeholder props
86
+ * @param {ComponentRendering} componentRendering rendering to be rendered
87
+ * @param {string} renderingKey unique key to pass over to rendering props
88
+ * @returns {RenderedProps} props to be passed to the rendered component
89
+ */
90
+ export const getRenderedComponentProps = (placeholderProps, componentRendering, renderingKey) => {
91
+ // eslint-disable-next-line no-unused-vars
92
+ const { fields, params: placeholderParams } = placeholderProps, passThroughProps = __rest(placeholderProps, ["fields", "params"]);
93
+ delete passThroughProps.missingComponentComponent;
94
+ delete passThroughProps.hiddenRenderingComponent;
95
+ delete passThroughProps.name;
96
+ const mergedContentProps = getAppComponentProps(placeholderProps, componentRendering);
97
+ return Object.assign(Object.assign(Object.assign({ key: renderingKey }, passThroughProps), mergedContentProps), { rendering: componentRendering });
98
+ };
99
+ /**
100
+ * Merge placeholder and component field and params content props.
101
+ * @param {BasePlaceholderProps} placeholderProps placeholder props
102
+ * @param {ComponentRendering} componentRendering component rendering
103
+ * @returns {ComponentProps} merged props
104
+ */
105
+ export function getAppComponentProps(placeholderProps, componentRendering) {
106
+ const fields = Object.assign(Object.assign({}, (placeholderProps.fields || {})), (componentRendering.fields || {}));
107
+ const params = Object.assign(Object.assign({}, (placeholderProps.params || {})), (componentRendering.params || {}));
108
+ return {
109
+ fields,
110
+ params: Object.assign(Object.assign({}, params), getSXAParams(componentRendering)),
111
+ rendering: componentRendering,
112
+ };
113
+ }
114
+ /**
115
+ * Get component implemenation from the component map based on the rendering definition.
116
+ * @param {ComponentRendering} renderingDefinition rendering data
117
+ * @param {string} placeholderName name of current placeholder
118
+ * @param {ComponentMap} componentMap component map for the current app
119
+ * @param {React.ComponentClass} [hiddenRenderingComponent] fallback implementation in to be rendered if the rendering is hidden
120
+ * @param {React.ComponentClass} [missingComponentComponent] fallback implementation in case no component is found in the component map
121
+ * @returns {ContentSDKComponet | null} component implementation or null if no component map is provided
122
+ */
123
+ export const getComponentForRendering = (renderingDefinition, placeholderName, componentMap, hiddenRenderingComponent, missingComponentComponent) => {
124
+ var _a, _b;
125
+ const logUnknownComponentError = (variant) => {
126
+ console.error(`Placeholder ${placeholderName} contains unknown component ${renderingDefinition.componentName}${variant ? ` (${variant})` : ''}. Ensure that a React component exists for it, and that it is registered in your component-map file.`);
127
+ };
128
+ if (renderingDefinition.componentName === constants.HIDDEN_RENDERING_NAME) {
129
+ return {
130
+ component: hiddenRenderingComponent !== null && hiddenRenderingComponent !== void 0 ? hiddenRenderingComponent : HiddenRendering,
131
+ isEmpty: true,
132
+ componentType: 'universal',
133
+ };
134
+ }
135
+ else if (!renderingDefinition.componentName) {
136
+ return {
137
+ component: () => React.createElement(React.Fragment, null),
138
+ isEmpty: true,
139
+ componentType: 'universal',
140
+ };
141
+ }
142
+ let component = null;
143
+ if (!componentMap || componentMap.size === 0) {
144
+ console.warn(`No components were available in component map to service request for component ${renderingDefinition}`);
145
+ }
146
+ else {
147
+ component = componentMap.get(renderingDefinition.componentName);
148
+ }
149
+ if (!component) {
150
+ // Fallback/defaults for Sitecore Component renderings (in case not defined in component map)
151
+ if (renderingDefinition.componentName === FEAAS_COMPONENT_RENDERING_NAME) {
152
+ return {
153
+ component: FEaaSComponent,
154
+ isEmpty: false,
155
+ componentType: 'universal',
156
+ };
157
+ }
158
+ else if (renderingDefinition.componentName === FEAAS_WRAPPER_RENDERING_NAME) {
159
+ return {
160
+ component: FEaaSWrapper,
161
+ isEmpty: false,
162
+ componentType: 'universal',
163
+ };
164
+ }
165
+ else if (renderingDefinition.componentName === BYOC_COMPONENT_RENDERING_NAME) {
166
+ return {
167
+ component: BYOCComponent,
168
+ isEmpty: false,
169
+ componentType: 'universal',
170
+ };
171
+ }
172
+ else if (renderingDefinition.componentName === BYOC_WRAPPER_RENDERING_NAME) {
173
+ // wrapping with error boundary could cause problems in case where parent component uses withPlaceholder HOC and tries to access its children props
174
+ // that's why we need to mark BYOC wrapper dynamic
175
+ return {
176
+ component: BYOCWrapper,
177
+ dynamic: true,
178
+ componentType: 'universal',
179
+ isEmpty: false,
180
+ };
181
+ }
182
+ logUnknownComponentError();
183
+ return {
184
+ component: missingComponentComponent !== null && missingComponentComponent !== void 0 ? missingComponentComponent : MissingComponent,
185
+ isEmpty: true,
186
+ componentType: 'universal',
187
+ };
188
+ }
189
+ // Render SXA Rendering Variant if available
190
+ const exportName = (_a = renderingDefinition.params) === null || _a === void 0 ? void 0 : _a.FieldNames;
191
+ const renderedComponent = exportName && exportName !== DEFAULT_EXPORT_NAME
192
+ ? component[exportName]
193
+ : component.default ||
194
+ component.Default ||
195
+ component;
196
+ if (!renderedComponent) {
197
+ logUnknownComponentError(exportName !== DEFAULT_EXPORT_NAME ? exportName : undefined);
198
+ return {
199
+ component: missingComponentComponent !== null && missingComponentComponent !== void 0 ? missingComponentComponent : MissingComponent,
200
+ isEmpty: true,
201
+ componentType: 'universal',
202
+ };
203
+ }
204
+ const dynamic = !!((_b = renderedComponent.render) === null || _b === void 0 ? void 0 : _b.preload) ||
205
+ renderingDefinition.componentName === BYOC_WRAPPER_RENDERING_NAME;
206
+ // all dynamic elements will have a separate render prop
207
+ return {
208
+ component: renderedComponent,
209
+ dynamic,
210
+ componentType: component
211
+ .componentType,
212
+ isEmpty: false,
213
+ };
214
+ };
@@ -1,34 +1,39 @@
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 { 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 RichText = withFieldMetadata(withEmptyFieldEditingComponent(forwardRef((
19
- // eslint-disable-next-line no-unused-vars
20
- _a, ref) => {
21
- var
22
- // eslint-disable-next-line no-unused-vars
23
- { field, tag = 'div', editable = true } = _a, otherProps = __rest(_a,
24
- // eslint-disable-next-line no-unused-vars
25
- ["field", "tag", "editable"]);
26
- if (isFieldValueEmpty(field)) {
27
- return null;
28
- }
29
- const htmlProps = Object.assign({ dangerouslySetInnerHTML: {
30
- __html: field.value,
31
- }, ref }, otherProps);
32
- return React.createElement(tag || 'div', htmlProps);
33
- }), { defaultEmptyFieldEditingComponent: DefaultEmptyFieldEditingComponentText, isForwardRef: true }), true);
34
- RichText.displayName = 'RichText';
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 { 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 RichText component.
20
+ * @param {RichTextProps} props component props
21
+ * @public
22
+ */
23
+ export const RichText = withFieldMetadata(withEmptyFieldEditingComponent(forwardRef((
24
+ // eslint-disable-next-line no-unused-vars
25
+ _a, ref) => {
26
+ var
27
+ // eslint-disable-next-line no-unused-vars
28
+ { field, tag = 'div', editable = true } = _a, otherProps = __rest(_a,
29
+ // eslint-disable-next-line no-unused-vars
30
+ ["field", "tag", "editable"]);
31
+ if (isFieldValueEmpty(field)) {
32
+ return null;
33
+ }
34
+ const htmlProps = Object.assign({ dangerouslySetInnerHTML: {
35
+ __html: field.value,
36
+ }, ref }, otherProps);
37
+ return React.createElement(tag || 'div', htmlProps);
38
+ }), { defaultEmptyFieldEditingComponent: DefaultEmptyFieldEditingComponentText, isForwardRef: true }), true);
39
+ RichText.displayName = 'RichText';
@@ -1,45 +1,55 @@
1
- 'use client';
2
- import React from 'react';
3
- import fastDeepEqual from 'fast-deep-equal/es6/react';
4
- import { constants } from '@sitecore-content-sdk/core';
5
- export const SitecoreProviderReactContext = React.createContext({});
6
- export const ComponentMapReactContext = React.createContext(new Map());
7
- export class SitecoreProvider extends React.Component {
8
- constructor(props) {
9
- var _a, _b, _c, _d, _e, _f;
10
- super(props);
11
- /**
12
- * Update page state.
13
- * @param {Page} value New page value
14
- */
15
- this.setPage = (value) => {
16
- this.setState({
17
- page: value,
18
- });
19
- };
20
- // If any Edge ID is present but no edgeUrl, apply the default
21
- let api = props.api;
22
- if ((((_b = (_a = props.api) === null || _a === void 0 ? void 0 : _a.edge) === null || _b === void 0 ? void 0 : _b.contextId) || ((_d = (_c = props.api) === null || _c === void 0 ? void 0 : _c.edge) === null || _d === void 0 ? void 0 : _d.clientContextId)) &&
23
- !((_f = (_e = props.api) === null || _e === void 0 ? void 0 : _e.edge) === null || _f === void 0 ? void 0 : _f.edgeUrl)) {
24
- api = Object.assign(Object.assign({}, props.api), { edge: Object.assign(Object.assign({}, props.api.edge), { edgeUrl: constants.SITECORE_EDGE_URL_DEFAULT }) });
25
- }
26
- this.state = {
27
- page: props.page,
28
- setPage: this.setPage,
29
- api,
30
- };
31
- }
32
- componentDidUpdate(prevProps) {
33
- // In case if somebody will manage SitecoreProvider state by passing fresh `page` prop
34
- // instead of using `updateContext`
35
- if (!fastDeepEqual(prevProps.page, this.props.page)) {
36
- this.setPage(this.props.page);
37
- return;
38
- }
39
- }
40
- render() {
41
- return (React.createElement(ComponentMapReactContext.Provider, { value: this.props.componentMap },
42
- React.createElement(SitecoreProviderReactContext.Provider, { value: this.state }, this.props.children)));
43
- }
44
- }
45
- SitecoreProvider.displayName = 'SitecoreProvider';
1
+ 'use client';
2
+ import React from 'react';
3
+ import fastDeepEqual from 'fast-deep-equal/es6/react';
4
+ import { constants } from '@sitecore-content-sdk/core';
5
+ /**
6
+ * The context for the SitecoreProvider component.
7
+ * @public
8
+ */
9
+ export const SitecoreProviderReactContext = React.createContext({});
10
+ export const ComponentMapReactContext = React.createContext(new Map());
11
+ export const ImportMapReactContext = React.createContext(undefined);
12
+ /**
13
+ * The SitecoreProvider component.
14
+ * @public
15
+ */
16
+ export class SitecoreProvider extends React.Component {
17
+ constructor(props) {
18
+ var _a, _b, _c, _d, _e, _f;
19
+ super(props);
20
+ /**
21
+ * Update page state.
22
+ * @param {Page} value New page value
23
+ */
24
+ this.setPage = (value) => {
25
+ this.setState({
26
+ page: value,
27
+ });
28
+ };
29
+ // If any Edge ID is present but no edgeUrl, apply the default
30
+ let api = props.api;
31
+ if ((((_b = (_a = props.api) === null || _a === void 0 ? void 0 : _a.edge) === null || _b === void 0 ? void 0 : _b.contextId) || ((_d = (_c = props.api) === null || _c === void 0 ? void 0 : _c.edge) === null || _d === void 0 ? void 0 : _d.clientContextId)) &&
32
+ !((_f = (_e = props.api) === null || _e === void 0 ? void 0 : _e.edge) === null || _f === void 0 ? void 0 : _f.edgeUrl)) {
33
+ api = Object.assign(Object.assign({}, props.api), { edge: Object.assign(Object.assign({}, props.api.edge), { edgeUrl: constants.SITECORE_EDGE_URL_DEFAULT }) });
34
+ }
35
+ this.state = {
36
+ page: props.page,
37
+ setPage: this.setPage,
38
+ api,
39
+ };
40
+ }
41
+ componentDidUpdate(prevProps) {
42
+ // In case if somebody will manage SitecoreProvider state by passing fresh `page` prop
43
+ // instead of using `updateContext`
44
+ if (!fastDeepEqual(prevProps.page, this.props.page)) {
45
+ this.setPage(this.props.page);
46
+ return;
47
+ }
48
+ }
49
+ render() {
50
+ return (React.createElement(ImportMapReactContext.Provider, { value: this.props.loadImportMap },
51
+ React.createElement(ComponentMapReactContext.Provider, { value: this.props.componentMap },
52
+ React.createElement(SitecoreProviderReactContext.Provider, { value: this.state }, this.props.children))));
53
+ }
54
+ }
55
+ SitecoreProvider.displayName = 'SitecoreProvider';