@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,76 +1,79 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.AppPlaceholder = void 0;
|
|
7
|
-
const placeholder_utils_1 = require("./placeholder-utils");
|
|
8
|
-
const react_1 = __importDefault(require("react"));
|
|
9
|
-
const PlaceholderMetadata_1 = require("./PlaceholderMetadata");
|
|
10
|
-
const ErrorBoundary_1 = __importDefault(require("../ErrorBoundary"));
|
|
11
|
-
const ClientComponentWrapper_1 = require("./ClientComponentWrapper");
|
|
12
|
-
const _rsc_env_1 = require("#rsc-env");
|
|
13
|
-
/**
|
|
14
|
-
* The implemention of placeholder compatible with React Server Components.
|
|
15
|
-
* Renders components from the layout data for the given placeholder name, with consideration for page edit mode.
|
|
16
|
-
* Pulls components from the provided component map.
|
|
17
|
-
* @param {AppPlaceholderProps} props Placeholder props
|
|
18
|
-
* @returns {React.ReactNode | React.ReactElement[]} rendered component(s)
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
const
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
const
|
|
27
|
-
const
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
return
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.AppPlaceholder = void 0;
|
|
7
|
+
const placeholder_utils_1 = require("./placeholder-utils");
|
|
8
|
+
const react_1 = __importDefault(require("react"));
|
|
9
|
+
const PlaceholderMetadata_1 = require("./PlaceholderMetadata");
|
|
10
|
+
const ErrorBoundary_1 = __importDefault(require("../ErrorBoundary"));
|
|
11
|
+
const ClientComponentWrapper_1 = require("./ClientComponentWrapper");
|
|
12
|
+
const _rsc_env_1 = require("#rsc-env");
|
|
13
|
+
/**
|
|
14
|
+
* The implemention of placeholder compatible with React Server Components.
|
|
15
|
+
* Renders components from the layout data for the given placeholder name, with consideration for page edit mode.
|
|
16
|
+
* Pulls components from the provided component map.
|
|
17
|
+
* @param {AppPlaceholderProps} props Placeholder props
|
|
18
|
+
* @returns {React.ReactNode | React.ReactElement[]} rendered component(s)
|
|
19
|
+
* @public
|
|
20
|
+
*/
|
|
21
|
+
const AppPlaceholder = (props) => {
|
|
22
|
+
const { rendering: parentRendering, componentMap, page } = props;
|
|
23
|
+
const placeholderRenderings = (0, placeholder_utils_1.getPlaceholderRenderings)(parentRendering, props.name, page.mode.isEditing);
|
|
24
|
+
const components = placeholderRenderings
|
|
25
|
+
.map((rendering, index) => {
|
|
26
|
+
const { component: Component, isEmpty, componentType, dynamic, } = (0, placeholder_utils_1.getComponentForRendering)(rendering, props.name, componentMap, props.hiddenRenderingComponent, props.missingComponentComponent);
|
|
27
|
+
const isClient = componentType === 'client';
|
|
28
|
+
const key = rendering.uid || `component-${index}`;
|
|
29
|
+
// Use rsc context to determine the current runtime
|
|
30
|
+
const componentRuntime = _rsc_env_1.rsc ? 'server' : 'client';
|
|
31
|
+
const renderedProps = (0, placeholder_utils_1.getAppComponentProps)(props, rendering);
|
|
32
|
+
const finalRenderedProps = props.modifyComponentProps
|
|
33
|
+
? props.modifyComponentProps(renderedProps)
|
|
34
|
+
: renderedProps;
|
|
35
|
+
// Client wrapper is required only when component crosses boundary from server to client.
|
|
36
|
+
// It happens when component is marker as client and rendered in RSC context.
|
|
37
|
+
// Also, it is not required when component is hidden or empty, as it will be rendered whthout boundary crossing.
|
|
38
|
+
const useClientWrapper = isClient && _rsc_env_1.rsc && !isEmpty;
|
|
39
|
+
let rendered = useClientWrapper ? (react_1.default.createElement(ClientComponentWrapper_1.ClientComponentWrapper, { rendering: rendering, componentProps: finalRenderedProps, placeholderName: props.name, key: key })) : (react_1.default.createElement(Component, Object.assign({ key: key }, finalRenderedProps, { rendering: rendering, page: page, componentMap: componentMap })));
|
|
40
|
+
if (!isEmpty) {
|
|
41
|
+
const errorBoundaryKey = rendered.type + '-' + index;
|
|
42
|
+
const disableSuspense = props.disableSuspense || false;
|
|
43
|
+
rendered = (react_1.default.createElement(ErrorBoundary_1.default, { "data-testid": "error-boundary", key: errorBoundaryKey, errorComponent: props.errorComponent, componentLoadingMessage: props.componentLoadingMessage, isDynamic: dynamic, disableSuspense: disableSuspense, rendering: rendered.props.rendering }, rendered));
|
|
44
|
+
}
|
|
45
|
+
// if in edit mode then emit shallow chromes for hydration in Pages
|
|
46
|
+
if (page.mode.isEditing) {
|
|
47
|
+
const key = rendering.uid || `component-${index}`;
|
|
48
|
+
return (react_1.default.createElement(PlaceholderMetadata_1.PlaceholderMetadata, { key: key, rendering: rendering, componentRuntime: componentRuntime }, rendered));
|
|
49
|
+
}
|
|
50
|
+
return rendered;
|
|
51
|
+
})
|
|
52
|
+
.filter((element) => element);
|
|
53
|
+
const finalRendering = page.mode.isEditing
|
|
54
|
+
? [
|
|
55
|
+
react_1.default.createElement(PlaceholderMetadata_1.PlaceholderMetadata, { key: parentRendering.uid, placeholderName: props.name, rendering: parentRendering }, components),
|
|
56
|
+
]
|
|
57
|
+
: components;
|
|
58
|
+
const placeholderEmpty = !placeholderRenderings.length;
|
|
59
|
+
if (placeholderEmpty) {
|
|
60
|
+
const rendered = props.renderEmpty ? props.renderEmpty(finalRendering) : finalRendering;
|
|
61
|
+
return page.mode.isEditing ? (0, placeholder_utils_1.renderEmptyPlaceholder)(rendered) : rendered;
|
|
62
|
+
}
|
|
63
|
+
if (props.render) {
|
|
64
|
+
return props.render(components, placeholderRenderings, props);
|
|
65
|
+
}
|
|
66
|
+
else if (props.renderEach) {
|
|
67
|
+
const renderEach = props.renderEach;
|
|
68
|
+
return finalRendering.map((component, index) => {
|
|
69
|
+
if (component && component.props && component.props.type === 'text/sitecore') {
|
|
70
|
+
return component;
|
|
71
|
+
}
|
|
72
|
+
return renderEach(component, index);
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
return finalRendering;
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
exports.AppPlaceholder = AppPlaceholder;
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
'use client';
|
|
3
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
-
};
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.ClientComponentWrapper = void 0;
|
|
8
|
-
const SitecoreProvider_1 = require("../SitecoreProvider");
|
|
9
|
-
const react_1 = require("react");
|
|
10
|
-
const react_2 = __importDefault(require("react"));
|
|
11
|
-
const withSitecore_1 = require("../../enhancers/withSitecore");
|
|
12
|
-
const placeholder_utils_1 = require("./placeholder-utils");
|
|
13
|
-
const ClientComponentWrapper = (props) => {
|
|
14
|
-
const { page } = (0, withSitecore_1.useSitecore)();
|
|
15
|
-
const componentMap = (0, react_1.useContext)(SitecoreProvider_1.ComponentMapReactContext);
|
|
16
|
-
const componentPropsWithContext = Object.assign(Object.assign({}, props.componentProps), { rendering: props.rendering, componentMap,
|
|
17
|
-
page });
|
|
18
|
-
const { component: Component } = (0, placeholder_utils_1.getComponentForRendering)(props.rendering, props.placeholderName, componentMap);
|
|
19
|
-
return react_2.default.createElement(Component, Object.assign({}, componentPropsWithContext));
|
|
20
|
-
};
|
|
21
|
-
exports.ClientComponentWrapper = ClientComponentWrapper;
|
|
1
|
+
"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.ClientComponentWrapper = void 0;
|
|
8
|
+
const SitecoreProvider_1 = require("../SitecoreProvider");
|
|
9
|
+
const react_1 = require("react");
|
|
10
|
+
const react_2 = __importDefault(require("react"));
|
|
11
|
+
const withSitecore_1 = require("../../enhancers/withSitecore");
|
|
12
|
+
const placeholder_utils_1 = require("./placeholder-utils");
|
|
13
|
+
const ClientComponentWrapper = (props) => {
|
|
14
|
+
const { page } = (0, withSitecore_1.useSitecore)();
|
|
15
|
+
const componentMap = (0, react_1.useContext)(SitecoreProvider_1.ComponentMapReactContext);
|
|
16
|
+
const componentPropsWithContext = Object.assign(Object.assign({}, props.componentProps), { rendering: props.rendering, componentMap,
|
|
17
|
+
page });
|
|
18
|
+
const { component: Component } = (0, placeholder_utils_1.getComponentForRendering)(props.rendering, props.placeholderName, componentMap);
|
|
19
|
+
return react_2.default.createElement(Component, Object.assign({}, componentPropsWithContext));
|
|
20
|
+
};
|
|
21
|
+
exports.ClientComponentWrapper = ClientComponentWrapper;
|
|
@@ -1,110 +1,144 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
'use client';
|
|
3
|
-
var
|
|
4
|
-
|
|
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
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
this.
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
|
+
};
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.Placeholder = exports.PlaceholderComponent = void 0;
|
|
41
|
+
const react_1 = __importDefault(require("react"));
|
|
42
|
+
const withComponentMap_1 = require("../../enhancers/withComponentMap");
|
|
43
|
+
const editing_1 = require("@sitecore-content-sdk/core/editing");
|
|
44
|
+
const withSitecore_1 = require("../../enhancers/withSitecore");
|
|
45
|
+
const placeholder_utils_1 = require("./placeholder-utils");
|
|
46
|
+
const PlaceholderMetadata_1 = require("./PlaceholderMetadata");
|
|
47
|
+
const ErrorBoundary_1 = __importStar(require("../ErrorBoundary"));
|
|
48
|
+
class PlaceholderComponent extends react_1.default.Component {
|
|
49
|
+
constructor(props) {
|
|
50
|
+
super(props);
|
|
51
|
+
this.isEmpty = false;
|
|
52
|
+
this.state = {};
|
|
53
|
+
}
|
|
54
|
+
componentDidMount() {
|
|
55
|
+
if (this.isEmpty && editing_1.PagesEditor.isActive()) {
|
|
56
|
+
editing_1.PagesEditor.resetChromes();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
componentDidCatch(error) {
|
|
60
|
+
this.setState({ error });
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Renders the placeholder when it is empty. The required CSS styles are applied to the placeholder in edit mode.
|
|
64
|
+
* @param {React.ReactNode | React.ReactElement[]} node react node
|
|
65
|
+
* @returns react node
|
|
66
|
+
* @deprecated use renderEmptyPlaceholder from react/nextjs import instead
|
|
67
|
+
*/
|
|
68
|
+
renderEmptyPlaceholder(node) {
|
|
69
|
+
return (0, placeholder_utils_1.renderEmptyPlaceholder)(node);
|
|
70
|
+
}
|
|
71
|
+
render() {
|
|
72
|
+
const childProps = Object.assign({}, this.props);
|
|
73
|
+
delete childProps.componentMap;
|
|
74
|
+
if (this.state.error) {
|
|
75
|
+
if (childProps.errorComponent) {
|
|
76
|
+
return react_1.default.createElement(childProps.errorComponent, { error: this.state.error });
|
|
77
|
+
}
|
|
78
|
+
return (react_1.default.createElement(ErrorBoundary_1.ErrorComponent, { message: `A rendering error occurred: ${this.state.error.message}.` }));
|
|
79
|
+
}
|
|
80
|
+
const renderingData = childProps.rendering;
|
|
81
|
+
const placeholderRenderings = (0, placeholder_utils_1.getPlaceholderRenderings)(renderingData, this.props.name, this.props.page.mode.isEditing);
|
|
82
|
+
this.isEmpty = !placeholderRenderings.length;
|
|
83
|
+
const components = PlaceholderComponent.getRenderedComponents(this.props, placeholderRenderings);
|
|
84
|
+
if (this.isEmpty) {
|
|
85
|
+
const rendered = this.props.renderEmpty ? this.props.renderEmpty(components) : components;
|
|
86
|
+
return this.props.page.mode.isEditing ? (0, placeholder_utils_1.renderEmptyPlaceholder)(rendered) : rendered;
|
|
87
|
+
}
|
|
88
|
+
else if (this.props.render) {
|
|
89
|
+
return this.props.render(components, placeholderRenderings, childProps);
|
|
90
|
+
}
|
|
91
|
+
else if (this.props.renderEach) {
|
|
92
|
+
const renderEach = this.props.renderEach;
|
|
93
|
+
return components.map((component, index) => {
|
|
94
|
+
if (component && component.props && component.props.type === 'text/sitecore') {
|
|
95
|
+
return component;
|
|
96
|
+
}
|
|
97
|
+
return renderEach(component, index);
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
return components;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
exports.PlaceholderComponent = PlaceholderComponent;
|
|
106
|
+
/**
|
|
107
|
+
* Renders the components for the placeholder based on the provided rendering data.
|
|
108
|
+
* @param {PlaceholderProps} props placeholder component props
|
|
109
|
+
* @param {ComponentRendering[]} placeholderRenderings renderings within placeholder
|
|
110
|
+
* @returns {React.ReactNode | React.ReactElement[]} rendered components
|
|
111
|
+
*/
|
|
112
|
+
PlaceholderComponent.getRenderedComponents = (props, placeholderRenderings) => {
|
|
113
|
+
const { name, missingComponentComponent, hiddenRenderingComponent } = props;
|
|
114
|
+
const transformedComponents = placeholderRenderings
|
|
115
|
+
.map((componentRendering, index) => {
|
|
116
|
+
const key = componentRendering.uid || `component-${index}`;
|
|
117
|
+
const renderedProps = (0, placeholder_utils_1.getRenderedComponentProps)(props, componentRendering, key);
|
|
118
|
+
const component = (0, placeholder_utils_1.getComponentForRendering)(componentRendering, name, props.componentMap, hiddenRenderingComponent, missingComponentComponent);
|
|
119
|
+
let rendered = react_1.default.createElement(component.component, props.modifyComponentProps ? props.modifyComponentProps(renderedProps) : renderedProps);
|
|
120
|
+
if (!component.isEmpty) {
|
|
121
|
+
const errorBoundaryKey = rendered.type + '-' + index;
|
|
122
|
+
const disableSuspense = props.disableSuspense || false;
|
|
123
|
+
rendered = (react_1.default.createElement(ErrorBoundary_1.default, { "data-testid": "error-boundary", key: errorBoundaryKey, errorComponent: props.errorComponent, componentLoadingMessage: props.componentLoadingMessage, isDynamic: component.dynamic, disableSuspense: disableSuspense, rendering: rendered.props.rendering }, rendered));
|
|
124
|
+
}
|
|
125
|
+
// if in edit mode then emit shallow chromes for hydration in Pages
|
|
126
|
+
if (props.page.mode.isEditing) {
|
|
127
|
+
return (react_1.default.createElement(PlaceholderMetadata_1.PlaceholderMetadata, { key: key, rendering: componentRendering }, rendered));
|
|
128
|
+
}
|
|
129
|
+
return rendered;
|
|
130
|
+
})
|
|
131
|
+
.filter((element) => element); // remove nulls
|
|
132
|
+
if (props.page.mode.isEditing) {
|
|
133
|
+
return [
|
|
134
|
+
react_1.default.createElement(PlaceholderMetadata_1.PlaceholderMetadata, { key: props.rendering.uid, placeholderName: name, rendering: props.rendering }, transformedComponents),
|
|
135
|
+
];
|
|
136
|
+
}
|
|
137
|
+
return transformedComponents;
|
|
138
|
+
};
|
|
139
|
+
const PlaceholderWithComponentMap = (0, withComponentMap_1.withComponentMap)(PlaceholderComponent);
|
|
140
|
+
/**
|
|
141
|
+
* The Placeholder component.
|
|
142
|
+
* @public
|
|
143
|
+
*/
|
|
144
|
+
exports.Placeholder = (0, withSitecore_1.withSitecore)()(PlaceholderWithComponentMap);
|
|
@@ -1,63 +1,68 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.PlaceholderMetadata = void 0;
|
|
7
|
-
const react_1 = __importDefault(require("react"));
|
|
8
|
-
const layout_1 = require("@sitecore-content-sdk/core/layout");
|
|
9
|
-
const editing_1 = require("@sitecore-content-sdk/core/editing");
|
|
10
|
-
/**
|
|
11
|
-
* A React component to generate metadata blocks for a placeholder or rendering.
|
|
12
|
-
* It utilizes dynamic attributes based on whether the component acts as a placeholder
|
|
13
|
-
* or as a rendering to properly render the surrounding code blocks.
|
|
14
|
-
* @param {object} props The properties passed to the component.
|
|
15
|
-
* @param {ComponentRendering} props.rendering The rendering data.
|
|
16
|
-
* @param {string} [props.placeholderName] The name of the placeholder.
|
|
17
|
-
* @param {
|
|
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
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
};
|
|
63
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.PlaceholderMetadata = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const layout_1 = require("@sitecore-content-sdk/core/layout");
|
|
9
|
+
const editing_1 = require("@sitecore-content-sdk/core/editing");
|
|
10
|
+
/**
|
|
11
|
+
* A React component to generate metadata blocks for a placeholder or rendering.
|
|
12
|
+
* It utilizes dynamic attributes based on whether the component acts as a placeholder
|
|
13
|
+
* or as a rendering to properly render the surrounding code blocks.
|
|
14
|
+
* @param {object} props The properties passed to the component.
|
|
15
|
+
* @param {ComponentRendering} props.rendering The rendering data.
|
|
16
|
+
* @param {string} [props.placeholderName] The name of the placeholder.
|
|
17
|
+
* @param {'server' | 'client'} [props.componentRuntime] Component runtime type. Used to add data-csdk-component-runtime attribute to rendering chromes.
|
|
18
|
+
* @param {JSX.Element} props.children The child components or elements to be wrapped by the metadata code blocks.
|
|
19
|
+
* @returns {JSX.Element} A React fragment containing open and close code blocks surrounding the children elements.
|
|
20
|
+
*/
|
|
21
|
+
const PlaceholderMetadata = ({ rendering, placeholderName, children, componentRuntime, }) => {
|
|
22
|
+
const getCodeBlockAttributes = ({ kind, id, placeholderName, }) => {
|
|
23
|
+
var _a;
|
|
24
|
+
const chrometype = placeholderName ? 'placeholder' : 'rendering';
|
|
25
|
+
const attributes = {
|
|
26
|
+
type: 'text/sitecore',
|
|
27
|
+
chrometype: chrometype,
|
|
28
|
+
className: 'scpm',
|
|
29
|
+
kind: kind,
|
|
30
|
+
};
|
|
31
|
+
if (kind === editing_1.MetadataKind.Open) {
|
|
32
|
+
if (chrometype === 'placeholder' && placeholderName) {
|
|
33
|
+
let phId = '';
|
|
34
|
+
for (const placeholder of Object.keys((_a = rendering.placeholders) !== null && _a !== void 0 ? _a : {})) {
|
|
35
|
+
if (placeholderName === placeholder) {
|
|
36
|
+
phId = id
|
|
37
|
+
? `${placeholderName}_${id}`
|
|
38
|
+
: `${placeholderName}_${editing_1.DEFAULT_PLACEHOLDER_UID}`;
|
|
39
|
+
break;
|
|
40
|
+
}
|
|
41
|
+
// Check if the placeholder is a dynamic placeholder
|
|
42
|
+
if ((0, layout_1.isDynamicPlaceholder)(placeholder)) {
|
|
43
|
+
const pattern = (0, layout_1.getDynamicPlaceholderPattern)(placeholder);
|
|
44
|
+
// Check if the placeholder matches the dynamic placeholder pattern
|
|
45
|
+
if (pattern.test(placeholderName)) {
|
|
46
|
+
phId = id ? `${placeholder}_${id}` : `${placeholder}_${editing_1.DEFAULT_PLACEHOLDER_UID}`;
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
attributes.id = phId;
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
attributes.id = id;
|
|
55
|
+
}
|
|
56
|
+
// Add component runtime attribute for rendering chromes
|
|
57
|
+
if (chrometype === 'rendering' && componentRuntime) {
|
|
58
|
+
attributes['data-csdk-component-runtime'] = componentRuntime;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return attributes;
|
|
62
|
+
};
|
|
63
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
64
|
+
react_1.default.createElement("code", Object.assign({}, getCodeBlockAttributes({ kind: editing_1.MetadataKind.Open, id: rendering.uid, placeholderName }))),
|
|
65
|
+
children,
|
|
66
|
+
react_1.default.createElement("code", Object.assign({}, getCodeBlockAttributes({ kind: editing_1.MetadataKind.Close, placeholderName })))));
|
|
67
|
+
};
|
|
68
|
+
exports.PlaceholderMetadata = PlaceholderMetadata;
|