@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.
- package/README.md +11 -11
- package/dist/cjs/components/ClientEditingChromesUpdate.js +53 -52
- package/dist/cjs/components/Date.js +49 -45
- package/dist/cjs/components/DefaultEmptyFieldEditingComponents.js +32 -22
- package/dist/cjs/components/{DesignLibrary.js → DesignLibrary/DesignLibrary.js} +161 -202
- package/dist/cjs/components/DesignLibrary/DesignLibraryApp.js +31 -0
- package/dist/cjs/components/DesignLibrary/DesignLibraryClientEvents.js +123 -0
- package/dist/cjs/components/DesignLibrary/DesignLibraryErrorBoundary.js +65 -0
- package/dist/cjs/components/DesignLibrary/DesignLibraryServer.js +193 -0
- package/dist/cjs/components/DesignLibrary/index.js +7 -0
- package/dist/cjs/components/DesignLibrary/models.js +2 -0
- package/dist/cjs/components/EditingScripts.js +44 -43
- package/dist/cjs/components/ErrorBoundary.js +101 -92
- package/dist/cjs/components/FEaaS/BYOCServerWrapper.js +25 -28
- package/dist/cjs/components/FEaaS/BYOCWrapper.js +133 -122
- package/dist/cjs/components/FEaaS/FEaaSSeverWrapper.js +26 -34
- package/dist/cjs/components/FEaaS/FEaaSWrapper.js +84 -78
- package/dist/cjs/components/FEaaS/feaas-utils.js +130 -144
- package/dist/cjs/components/FEaaS/index.js +21 -21
- package/dist/cjs/components/FEaaS/models.js +7 -7
- package/dist/cjs/components/FieldMetadata.js +29 -29
- package/dist/cjs/components/File.js +43 -38
- package/dist/cjs/components/Form.js +100 -92
- package/dist/cjs/components/HiddenRendering.js +23 -23
- package/dist/cjs/components/Image.js +71 -66
- package/dist/cjs/components/Link.js +91 -86
- package/dist/cjs/components/MissingComponent.js +28 -28
- package/dist/cjs/components/Placeholder/AppPlaceholder.js +79 -76
- package/dist/cjs/components/Placeholder/ClientComponentWrapper.js +21 -21
- package/dist/cjs/components/Placeholder/Placeholder.js +144 -110
- package/dist/cjs/components/Placeholder/PlaceholderMetadata.js +68 -63
- package/dist/cjs/components/Placeholder/index.js +25 -25
- package/dist/cjs/components/Placeholder/models.js +18 -18
- package/dist/cjs/components/Placeholder/placeholder-utils.js +226 -226
- package/dist/cjs/components/RichText.js +75 -70
- package/dist/cjs/components/SitecoreProvider.js +62 -52
- package/dist/cjs/components/Text.js +69 -65
- package/dist/cjs/components/sharedTypes/components.js +7 -7
- package/dist/cjs/components/sharedTypes/index.js +18 -18
- package/dist/cjs/components/sharedTypes/props.js +2 -2
- package/dist/cjs/enhancers/withAppPlaceholder.js +21 -21
- package/dist/cjs/enhancers/withComponentMap.js +24 -24
- package/dist/cjs/enhancers/withDatasourceCheck.js +31 -30
- package/dist/cjs/enhancers/withEditorChromes.js +29 -24
- package/dist/cjs/enhancers/withEmptyFieldEditingComponent.js +71 -70
- package/dist/cjs/enhancers/withFieldMetadata.js +68 -67
- package/dist/cjs/enhancers/withLoadImportMap.js +53 -0
- package/dist/cjs/enhancers/withPlaceholder.js +64 -65
- package/dist/cjs/enhancers/withSitecore.js +47 -45
- package/dist/cjs/index.js +86 -85
- package/dist/cjs/rsc-utils/no-rsc.js +5 -5
- package/dist/cjs/rsc-utils/rsc.js +5 -5
- package/dist/cjs/search/index.js +7 -0
- package/dist/cjs/search/useInfiniteSearch.js +136 -0
- package/dist/cjs/search/useSearch.js +107 -0
- package/dist/cjs/search/utils.js +35 -0
- package/dist/cjs/server-actions/update-server-component-action.js +18 -0
- package/dist/cjs/utils.js +38 -38
- package/dist/esm/components/ClientEditingChromesUpdate.js +16 -15
- package/dist/esm/components/Date.js +43 -39
- package/dist/esm/components/DefaultEmptyFieldEditingComponents.js +24 -14
- package/dist/esm/components/{DesignLibrary.js → DesignLibrary/DesignLibrary.js} +124 -164
- package/dist/esm/components/DesignLibrary/DesignLibraryApp.js +24 -0
- package/dist/esm/components/DesignLibrary/DesignLibraryClientEvents.js +84 -0
- package/dist/esm/components/DesignLibrary/DesignLibraryErrorBoundary.js +28 -0
- package/dist/esm/components/DesignLibrary/DesignLibraryServer.js +150 -0
- package/dist/esm/components/DesignLibrary/index.js +2 -0
- package/dist/esm/components/DesignLibrary/models.js +1 -0
- package/dist/esm/components/EditingScripts.js +37 -36
- package/dist/esm/components/ErrorBoundary.js +64 -57
- package/dist/esm/components/FEaaS/BYOCServerWrapper.js +18 -21
- package/dist/esm/components/FEaaS/BYOCWrapper.js +91 -81
- package/dist/esm/components/FEaaS/FEaaSSeverWrapper.js +19 -27
- package/dist/esm/components/FEaaS/FEaaSWrapper.js +43 -37
- package/dist/esm/components/FEaaS/feaas-utils.js +91 -105
- package/dist/esm/components/FEaaS/index.js +6 -6
- package/dist/esm/components/FEaaS/models.js +4 -4
- package/dist/esm/components/FieldMetadata.js +22 -22
- package/dist/esm/components/File.js +36 -31
- package/dist/esm/components/Form.js +62 -54
- package/dist/esm/components/HiddenRendering.js +16 -16
- package/dist/esm/components/Image.js +65 -60
- package/dist/esm/components/Link.js +55 -50
- package/dist/esm/components/MissingComponent.js +21 -21
- package/dist/esm/components/Placeholder/AppPlaceholder.js +72 -69
- package/dist/esm/components/Placeholder/ClientComponentWrapper.js +14 -14
- package/dist/esm/components/Placeholder/Placeholder.js +104 -103
- package/dist/esm/components/Placeholder/PlaceholderMetadata.js +61 -56
- package/dist/esm/components/Placeholder/index.js +4 -4
- package/dist/esm/components/Placeholder/models.js +15 -15
- package/dist/esm/components/Placeholder/placeholder-utils.js +214 -214
- package/dist/esm/components/RichText.js +39 -34
- package/dist/esm/components/SitecoreProvider.js +55 -45
- package/dist/esm/components/Text.js +63 -59
- package/dist/esm/components/sharedTypes/components.js +4 -4
- package/dist/esm/components/sharedTypes/index.js +2 -2
- package/dist/esm/components/sharedTypes/props.js +1 -1
- package/dist/esm/enhancers/withAppPlaceholder.js +14 -14
- package/dist/esm/enhancers/withComponentMap.js +18 -18
- package/dist/esm/enhancers/withDatasourceCheck.js +23 -22
- package/dist/esm/enhancers/withEditorChromes.js +22 -17
- package/dist/esm/enhancers/withEmptyFieldEditingComponent.js +35 -34
- package/dist/esm/enhancers/withFieldMetadata.js +32 -31
- package/dist/esm/enhancers/withLoadImportMap.js +17 -0
- package/dist/esm/enhancers/withPlaceholder.js +58 -59
- package/dist/esm/enhancers/withSitecore.js +40 -38
- package/dist/esm/index.js +29 -29
- package/dist/esm/rsc-utils/no-rsc.js +2 -2
- package/dist/esm/rsc-utils/rsc.js +2 -2
- package/dist/esm/search/index.js +2 -0
- package/dist/esm/search/useInfiniteSearch.js +132 -0
- package/dist/esm/search/useSearch.js +103 -0
- package/dist/esm/search/utils.js +30 -0
- package/dist/esm/server-actions/update-server-component-action.js +15 -0
- package/dist/esm/utils.js +33 -33
- package/global.d.ts +17 -0
- package/package.json +27 -11
- package/search.d.ts +1 -0
- package/types/components/ClientEditingChromesUpdate.d.ts +8 -6
- package/types/components/ClientEditingChromesUpdate.d.ts.map +1 -0
- package/types/components/Date.d.ts +25 -16
- package/types/components/Date.d.ts.map +1 -0
- package/types/components/DefaultEmptyFieldEditingComponents.d.ts +20 -9
- package/types/components/DefaultEmptyFieldEditingComponents.d.ts.map +1 -0
- package/types/components/DesignLibrary/DesignLibrary.d.ts +20 -0
- package/types/components/DesignLibrary/DesignLibrary.d.ts.map +1 -0
- package/types/components/DesignLibrary/DesignLibraryApp.d.ts +14 -0
- package/types/components/DesignLibrary/DesignLibraryApp.d.ts.map +1 -0
- package/types/components/DesignLibrary/DesignLibraryClientEvents.d.ts +21 -0
- package/types/components/DesignLibrary/DesignLibraryClientEvents.d.ts.map +1 -0
- package/types/components/DesignLibrary/DesignLibraryErrorBoundary.d.ts +19 -0
- package/types/components/DesignLibrary/DesignLibraryErrorBoundary.d.ts.map +1 -0
- package/types/components/DesignLibrary/DesignLibraryServer.d.ts +38 -0
- package/types/components/DesignLibrary/DesignLibraryServer.d.ts.map +1 -0
- package/types/components/DesignLibrary/index.d.ts +3 -0
- package/types/components/DesignLibrary/index.d.ts.map +1 -0
- package/types/components/DesignLibrary/models.d.ts +67 -0
- package/types/components/DesignLibrary/models.d.ts.map +1 -0
- package/types/components/EditingScripts.d.ts +9 -7
- package/types/components/EditingScripts.d.ts.map +1 -0
- package/types/components/ErrorBoundary.d.ts +29 -17
- package/types/components/ErrorBoundary.d.ts.map +1 -0
- package/types/components/FEaaS/BYOCServerWrapper.d.ts +10 -3
- package/types/components/FEaaS/BYOCServerWrapper.d.ts.map +1 -0
- package/types/components/FEaaS/BYOCWrapper.d.ts +29 -25
- package/types/components/FEaaS/BYOCWrapper.d.ts.map +1 -0
- package/types/components/FEaaS/FEaaSSeverWrapper.d.ts +10 -8
- package/types/components/FEaaS/FEaaSSeverWrapper.d.ts.map +1 -0
- package/types/components/FEaaS/FEaaSWrapper.d.ts +14 -7
- package/types/components/FEaaS/FEaaSWrapper.d.ts.map +1 -0
- package/types/components/FEaaS/feaas-utils.d.ts +24 -21
- package/types/components/FEaaS/feaas-utils.d.ts.map +1 -0
- package/types/components/FEaaS/index.d.ts +7 -6
- package/types/components/FEaaS/index.d.ts.map +1 -0
- package/types/components/FEaaS/models.d.ts +136 -125
- package/types/components/FEaaS/models.d.ts.map +1 -0
- package/types/components/FieldMetadata.d.ts +18 -17
- package/types/components/FieldMetadata.d.ts.map +1 -0
- package/types/components/File.d.ts +28 -18
- package/types/components/File.d.ts.map +1 -0
- package/types/components/Form.d.ts +35 -29
- package/types/components/Form.d.ts.map +1 -0
- package/types/components/HiddenRendering.d.ts +3 -2
- package/types/components/HiddenRendering.d.ts.map +1 -0
- package/types/components/Image.d.ts +70 -48
- package/types/components/Image.d.ts.map +1 -0
- package/types/components/Link.d.ts +45 -27
- package/types/components/Link.d.ts.map +1 -0
- package/types/components/MissingComponent.d.ts +9 -8
- package/types/components/MissingComponent.d.ts.map +1 -0
- package/types/components/Placeholder/AppPlaceholder.d.ts +12 -10
- package/types/components/Placeholder/AppPlaceholder.d.ts.map +1 -0
- package/types/components/Placeholder/ClientComponentWrapper.d.ts +10 -9
- package/types/components/Placeholder/ClientComponentWrapper.d.ts.map +1 -0
- package/types/components/Placeholder/Placeholder.d.ts +33 -28
- package/types/components/Placeholder/Placeholder.d.ts.map +1 -0
- package/types/components/Placeholder/PlaceholderMetadata.d.ts +35 -28
- package/types/components/Placeholder/PlaceholderMetadata.d.ts.map +1 -0
- package/types/components/Placeholder/index.d.ts +6 -5
- package/types/components/Placeholder/index.d.ts.map +1 -0
- package/types/components/Placeholder/models.d.ts +149 -140
- package/types/components/Placeholder/models.d.ts.map +1 -0
- package/types/components/Placeholder/placeholder-utils.d.ts +52 -53
- package/types/components/Placeholder/placeholder-utils.d.ts.map +1 -0
- package/types/components/RichText.d.ts +31 -17
- package/types/components/RichText.d.ts.map +1 -0
- package/types/components/SitecoreProvider.d.ts +68 -48
- package/types/components/SitecoreProvider.d.ts.map +1 -0
- package/types/components/Text.d.ts +29 -20
- package/types/components/Text.d.ts.map +1 -0
- package/types/components/sharedTypes/components.d.ts +50 -38
- package/types/components/sharedTypes/components.d.ts.map +1 -0
- package/types/components/sharedTypes/index.d.ts +3 -2
- package/types/components/sharedTypes/index.d.ts.map +1 -0
- package/types/components/sharedTypes/props.d.ts +15 -14
- package/types/components/sharedTypes/props.d.ts.map +1 -0
- package/types/enhancers/withAppPlaceholder.d.ts +16 -15
- package/types/enhancers/withAppPlaceholder.d.ts.map +1 -0
- package/types/enhancers/withComponentMap.d.ts +13 -12
- package/types/enhancers/withComponentMap.d.ts.map +1 -0
- package/types/enhancers/withDatasourceCheck.d.ts +23 -21
- package/types/enhancers/withDatasourceCheck.d.ts.map +1 -0
- package/types/enhancers/withEditorChromes.d.ts +8 -2
- package/types/enhancers/withEditorChromes.d.ts.map +1 -0
- package/types/enhancers/withEmptyFieldEditingComponent.d.ts +29 -27
- package/types/enhancers/withEmptyFieldEditingComponent.d.ts.map +1 -0
- package/types/enhancers/withFieldMetadata.d.ts +18 -16
- package/types/enhancers/withFieldMetadata.d.ts.map +1 -0
- package/types/enhancers/withLoadImportMap.d.ts +22 -0
- package/types/enhancers/withLoadImportMap.d.ts.map +1 -0
- package/types/enhancers/withPlaceholder.d.ts +37 -35
- package/types/enhancers/withPlaceholder.d.ts.map +1 -0
- package/types/enhancers/withSitecore.d.ts +63 -48
- package/types/enhancers/withSitecore.d.ts.map +1 -0
- package/types/index.d.ts +31 -30
- package/types/index.d.ts.map +1 -0
- package/types/rsc-utils/no-rsc.d.ts +2 -1
- package/types/rsc-utils/no-rsc.d.ts.map +1 -0
- package/types/rsc-utils/rsc.d.ts +2 -1
- package/types/rsc-utils/rsc.d.ts.map +1 -0
- package/types/search/index.d.ts +4 -0
- package/types/search/index.d.ts.map +1 -0
- package/types/search/useInfiniteSearch.d.ts +116 -0
- package/types/search/useInfiniteSearch.d.ts.map +1 -0
- package/types/search/useSearch.d.ts +107 -0
- package/types/search/useSearch.d.ts.map +1 -0
- package/types/search/utils.d.ts +19 -0
- package/types/search/utils.d.ts.map +1 -0
- package/types/server-actions/update-server-component-action.d.ts +25 -0
- package/types/server-actions/update-server-component-action.d.ts.map +1 -0
- package/types/utils.d.ts +18 -17
- package/types/utils.d.ts.map +1 -0
- 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.
|
|
36
|
-
const patternPlaceholder = isDynamicPlaceholder(
|
|
37
|
-
? getDynamicPlaceholderPattern(
|
|
38
|
-
: null;
|
|
39
|
-
if (patternPlaceholder && patternPlaceholder.test(phName)) {
|
|
40
|
-
if (isEditing) {
|
|
41
|
-
phName =
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
rendering.placeholders[phName] =
|
|
45
|
-
delete rendering.placeholders[
|
|
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
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
|
|
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
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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';
|