@sitecore-content-sdk/react 2.0.0-canary.2 → 2.0.0-canary.3
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/dist/cjs/components/Date.js +13 -11
- package/dist/cjs/components/DefaultEmptyFieldEditingComponents.js +2 -1
- package/dist/cjs/components/DesignLibrary/DesignLibrary.js +3 -7
- package/dist/cjs/components/DesignLibrary/DesignLibraryClientEvents.js +13 -5
- package/dist/cjs/components/EditingScripts.js +2 -2
- package/dist/cjs/components/ErrorBoundary.js +8 -3
- package/dist/cjs/components/File.js +3 -1
- package/dist/cjs/components/Form.js +12 -5
- package/dist/cjs/components/Image.js +12 -9
- package/dist/cjs/components/Link.js +19 -46
- package/dist/cjs/components/Placeholder/AppPlaceholder.js +57 -58
- package/dist/cjs/components/Placeholder/ClientComponentWrapper.js +5 -9
- package/dist/cjs/components/Placeholder/Placeholder.js +21 -93
- package/dist/cjs/components/Placeholder/index.js +1 -2
- package/dist/cjs/components/Placeholder/placeholder-utils.js +7 -35
- package/dist/cjs/components/RichText.js +18 -49
- package/dist/cjs/components/SitecoreProvider.js +81 -33
- package/dist/cjs/components/Text.js +12 -8
- package/dist/cjs/enhancers/withAppPlaceholder.js +6 -0
- package/dist/cjs/enhancers/withDatasourceCheck.js +4 -3
- package/dist/cjs/enhancers/withEditorChromes.js +50 -15
- package/dist/cjs/enhancers/withEmptyFieldEditingComponent.js +8 -38
- package/dist/cjs/enhancers/withFieldMetadata.js +9 -39
- package/dist/cjs/enhancers/withPlaceholder.js +16 -52
- package/dist/cjs/enhancers/withSitecore.js +5 -29
- package/dist/cjs/index.js +9 -7
- package/dist/cjs/search/utils.js +2 -2
- package/dist/esm/components/Date.js +13 -11
- package/dist/esm/components/DefaultEmptyFieldEditingComponents.js +2 -1
- package/dist/esm/components/DesignLibrary/DesignLibrary.js +3 -7
- package/dist/esm/components/DesignLibrary/DesignLibraryClientEvents.js +12 -4
- package/dist/esm/components/EditingScripts.js +2 -2
- package/dist/esm/components/ErrorBoundary.js +8 -3
- package/dist/esm/components/File.js +3 -1
- package/dist/esm/components/Form.js +11 -4
- package/dist/esm/components/Image.js +12 -9
- package/dist/esm/components/Link.js +16 -13
- package/dist/esm/components/Placeholder/AppPlaceholder.js +58 -59
- package/dist/esm/components/Placeholder/ClientComponentWrapper.js +4 -8
- package/dist/esm/components/Placeholder/Placeholder.js +20 -89
- package/dist/esm/components/Placeholder/index.js +1 -1
- package/dist/esm/components/Placeholder/placeholder-utils.js +5 -32
- package/dist/esm/components/RichText.js +15 -16
- package/dist/esm/components/SitecoreProvider.js +46 -32
- package/dist/esm/components/Text.js +12 -8
- package/dist/esm/enhancers/withAppPlaceholder.js +6 -0
- package/dist/esm/enhancers/withDatasourceCheck.js +3 -2
- package/dist/esm/enhancers/withEditorChromes.js +17 -12
- package/dist/esm/enhancers/withEmptyFieldEditingComponent.js +5 -5
- package/dist/esm/enhancers/withFieldMetadata.js +6 -6
- package/dist/esm/enhancers/withPlaceholder.js +15 -52
- package/dist/esm/enhancers/withSitecore.js +6 -29
- package/dist/esm/index.js +4 -3
- package/dist/esm/search/utils.js +1 -1
- package/package.json +5 -5
- package/types/components/Date.d.ts.map +1 -1
- package/types/components/DefaultEmptyFieldEditingComponents.d.ts.map +1 -1
- package/types/components/DesignLibrary/DesignLibrary.d.ts +0 -2
- package/types/components/DesignLibrary/DesignLibrary.d.ts.map +1 -1
- package/types/components/DesignLibrary/DesignLibraryClientEvents.d.ts.map +1 -1
- package/types/components/EditingScripts.d.ts +2 -2
- package/types/components/EditingScripts.d.ts.map +1 -1
- package/types/components/ErrorBoundary.d.ts +2 -2
- package/types/components/ErrorBoundary.d.ts.map +1 -1
- package/types/components/File.d.ts.map +1 -1
- package/types/components/Form.d.ts.map +1 -1
- package/types/components/Image.d.ts.map +1 -1
- package/types/components/Link.d.ts.map +1 -1
- package/types/components/Placeholder/AppPlaceholder.d.ts +1 -1
- package/types/components/Placeholder/AppPlaceholder.d.ts.map +1 -1
- package/types/components/Placeholder/ClientComponentWrapper.d.ts +2 -2
- package/types/components/Placeholder/ClientComponentWrapper.d.ts.map +1 -1
- package/types/components/Placeholder/Placeholder.d.ts +4 -19
- package/types/components/Placeholder/Placeholder.d.ts.map +1 -1
- package/types/components/Placeholder/index.d.ts +1 -1
- package/types/components/Placeholder/index.d.ts.map +1 -1
- package/types/components/Placeholder/models.d.ts +30 -56
- package/types/components/Placeholder/models.d.ts.map +1 -1
- package/types/components/Placeholder/placeholder-utils.d.ts +5 -13
- package/types/components/Placeholder/placeholder-utils.d.ts.map +1 -1
- package/types/components/RichText.d.ts +2 -0
- package/types/components/RichText.d.ts.map +1 -1
- package/types/components/SitecoreProvider.d.ts +43 -13
- package/types/components/SitecoreProvider.d.ts.map +1 -1
- package/types/components/Text.d.ts.map +1 -1
- package/types/enhancers/withAppPlaceholder.d.ts +6 -0
- package/types/enhancers/withAppPlaceholder.d.ts.map +1 -1
- package/types/enhancers/withDatasourceCheck.d.ts.map +1 -1
- package/types/enhancers/withEditorChromes.d.ts +4 -1
- package/types/enhancers/withEditorChromes.d.ts.map +1 -1
- package/types/enhancers/withEmptyFieldEditingComponent.d.ts +5 -3
- package/types/enhancers/withEmptyFieldEditingComponent.d.ts.map +1 -1
- package/types/enhancers/withFieldMetadata.d.ts +4 -2
- package/types/enhancers/withFieldMetadata.d.ts.map +1 -1
- package/types/enhancers/withPlaceholder.d.ts +14 -32
- package/types/enhancers/withPlaceholder.d.ts.map +1 -1
- package/types/enhancers/withSitecore.d.ts +8 -50
- package/types/enhancers/withSitecore.d.ts.map +1 -1
- package/types/index.d.ts +4 -3
- package/types/index.d.ts.map +1 -1
- package/dist/cjs/enhancers/withComponentMap.js +0 -24
- package/dist/cjs/enhancers/withLoadImportMap.js +0 -62
- package/dist/esm/enhancers/withComponentMap.js +0 -18
- package/dist/esm/enhancers/withLoadImportMap.js +0 -25
- package/types/enhancers/withComponentMap.d.ts +0 -13
- package/types/enhancers/withComponentMap.d.ts.map +0 -1
- package/types/enhancers/withLoadImportMap.d.ts +0 -28
- package/types/enhancers/withLoadImportMap.d.ts.map +0 -1
|
@@ -33,103 +33,31 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
return result;
|
|
34
34
|
};
|
|
35
35
|
})();
|
|
36
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
|
-
};
|
|
39
36
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
-
exports.Placeholder =
|
|
41
|
-
const react_1 =
|
|
42
|
-
const withComponentMap_1 = require("../../enhancers/withComponentMap");
|
|
37
|
+
exports.Placeholder = void 0;
|
|
38
|
+
const react_1 = __importStar(require("react"));
|
|
43
39
|
const editing_1 = require("@sitecore-content-sdk/content/editing");
|
|
44
|
-
const withSitecore_1 = require("../../enhancers/withSitecore");
|
|
45
40
|
const placeholder_utils_1 = require("./placeholder-utils");
|
|
46
|
-
const
|
|
47
|
-
const
|
|
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
|
-
render() {
|
|
63
|
-
const childProps = Object.assign({}, this.props);
|
|
64
|
-
delete childProps.componentMap;
|
|
65
|
-
if (this.state.error) {
|
|
66
|
-
if (childProps.errorComponent) {
|
|
67
|
-
return react_1.default.createElement(childProps.errorComponent, { error: this.state.error });
|
|
68
|
-
}
|
|
69
|
-
return (react_1.default.createElement(ErrorBoundary_1.ErrorComponent, { message: `A rendering error occurred: ${this.state.error.message}.` }));
|
|
70
|
-
}
|
|
71
|
-
const renderingData = childProps.rendering;
|
|
72
|
-
const placeholderRenderings = (0, placeholder_utils_1.getPlaceholderRenderings)(renderingData, this.props.name, this.props.page.mode.isEditing);
|
|
73
|
-
this.isEmpty = !placeholderRenderings.length;
|
|
74
|
-
const components = PlaceholderComponent.getRenderedComponents(this.props, placeholderRenderings);
|
|
75
|
-
if (this.isEmpty) {
|
|
76
|
-
const rendered = this.props.renderEmpty ? this.props.renderEmpty(components) : components;
|
|
77
|
-
return this.props.page.mode.isEditing ? (0, placeholder_utils_1.renderEmptyPlaceholder)(rendered) : rendered;
|
|
78
|
-
}
|
|
79
|
-
else if (this.props.render) {
|
|
80
|
-
return this.props.render(components, placeholderRenderings, childProps);
|
|
81
|
-
}
|
|
82
|
-
else if (this.props.renderEach) {
|
|
83
|
-
const renderEach = this.props.renderEach;
|
|
84
|
-
return components.map((component, index) => {
|
|
85
|
-
if (component && component.props && component.props.type === 'text/sitecore') {
|
|
86
|
-
return component;
|
|
87
|
-
}
|
|
88
|
-
return renderEach(component, index);
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
else {
|
|
92
|
-
return components;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
exports.PlaceholderComponent = PlaceholderComponent;
|
|
97
|
-
/**
|
|
98
|
-
* Renders the components for the placeholder based on the provided rendering data.
|
|
99
|
-
* @param {PlaceholderProps} props placeholder component props
|
|
100
|
-
* @param {ComponentRendering[]} placeholderRenderings renderings within placeholder
|
|
101
|
-
* @returns {React.ReactNode | React.ReactElement[]} rendered components
|
|
102
|
-
*/
|
|
103
|
-
PlaceholderComponent.getRenderedComponents = (props, placeholderRenderings) => {
|
|
104
|
-
const { name, missingComponentComponent, hiddenRenderingComponent } = props;
|
|
105
|
-
const transformedComponents = placeholderRenderings
|
|
106
|
-
.map((componentRendering, index) => {
|
|
107
|
-
const key = componentRendering.uid || `component-${index}`;
|
|
108
|
-
const renderedProps = (0, placeholder_utils_1.getRenderedComponentProps)(props, componentRendering, key);
|
|
109
|
-
const component = (0, placeholder_utils_1.getComponentForRendering)(componentRendering, name, props.componentMap, hiddenRenderingComponent, missingComponentComponent);
|
|
110
|
-
let rendered = react_1.default.createElement(component.component, props.modifyComponentProps ? props.modifyComponentProps(renderedProps) : renderedProps);
|
|
111
|
-
if (!component.isEmpty) {
|
|
112
|
-
const errorBoundaryKey = rendered.type + '-' + index;
|
|
113
|
-
const disableSuspense = props.disableSuspense || false;
|
|
114
|
-
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));
|
|
115
|
-
}
|
|
116
|
-
// if in edit mode then emit shallow chromes for hydration in Pages
|
|
117
|
-
if (props.page.mode.isEditing) {
|
|
118
|
-
return (react_1.default.createElement(PlaceholderMetadata_1.PlaceholderMetadata, { key: key, rendering: componentRendering }, rendered));
|
|
119
|
-
}
|
|
120
|
-
return rendered;
|
|
121
|
-
})
|
|
122
|
-
.filter((element) => element); // remove nulls
|
|
123
|
-
if (props.page.mode.isEditing) {
|
|
124
|
-
return [
|
|
125
|
-
react_1.default.createElement(PlaceholderMetadata_1.PlaceholderMetadata, { key: props.rendering.uid, placeholderName: name, rendering: props.rendering }, transformedComponents),
|
|
126
|
-
];
|
|
127
|
-
}
|
|
128
|
-
return transformedComponents;
|
|
129
|
-
};
|
|
130
|
-
const PlaceholderWithComponentMap = (0, withComponentMap_1.withComponentMap)(PlaceholderComponent);
|
|
41
|
+
const SitecoreProvider_1 = require("../SitecoreProvider");
|
|
42
|
+
const AppPlaceholder_1 = require("./AppPlaceholder");
|
|
131
43
|
/**
|
|
132
44
|
* The Placeholder component.
|
|
45
|
+
* Renders the components assigned to a placeholder in Sitecore. It also supports custom rendering and empty state.
|
|
46
|
+
* @param {PlaceholderProps} props - The props for the Placeholder component.
|
|
47
|
+
* @returns The rendered Placeholder component.
|
|
133
48
|
* @public
|
|
134
49
|
*/
|
|
135
|
-
|
|
50
|
+
const Placeholder = (props) => {
|
|
51
|
+
const { page, componentMap } = (0, SitecoreProvider_1.useSitecore)();
|
|
52
|
+
const placeholderRenderings = (0, placeholder_utils_1.getPlaceholderRenderings)(props.rendering, props.name, page.mode.isEditing);
|
|
53
|
+
const isEmpty = !placeholderRenderings.length;
|
|
54
|
+
(0, react_1.useEffect)(() => {
|
|
55
|
+
if (isEmpty && editing_1.PagesEditor.isActive()) {
|
|
56
|
+
editing_1.PagesEditor.resetChromes();
|
|
57
|
+
}
|
|
58
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
59
|
+
}, []); // Empty array so it runs only once on mount
|
|
60
|
+
const appProps = Object.assign(Object.assign({}, props), { page, componentMap });
|
|
61
|
+
return react_1.default.createElement(AppPlaceholder_1.AppPlaceholder, Object.assign({}, appProps));
|
|
62
|
+
};
|
|
63
|
+
exports.Placeholder = Placeholder;
|
|
@@ -14,10 +14,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.AppPlaceholder = exports.PlaceholderMetadata = exports.
|
|
17
|
+
exports.AppPlaceholder = exports.PlaceholderMetadata = exports.Placeholder = void 0;
|
|
18
18
|
var Placeholder_1 = require("./Placeholder");
|
|
19
19
|
Object.defineProperty(exports, "Placeholder", { enumerable: true, get: function () { return Placeholder_1.Placeholder; } });
|
|
20
|
-
Object.defineProperty(exports, "PlaceholderComponent", { enumerable: true, get: function () { return Placeholder_1.PlaceholderComponent; } });
|
|
21
20
|
var PlaceholderMetadata_1 = require("./PlaceholderMetadata");
|
|
22
21
|
Object.defineProperty(exports, "PlaceholderMetadata", { enumerable: true, get: function () { return PlaceholderMetadata_1.PlaceholderMetadata; } });
|
|
23
22
|
var AppPlaceholder_1 = require("./AppPlaceholder");
|
|
@@ -1,21 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
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
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
4
|
};
|
|
16
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.getComponentForRendering = exports.
|
|
18
|
-
exports.
|
|
6
|
+
exports.getComponentForRendering = exports.renderEmptyPlaceholder = exports.getSXAParams = exports.getPlaceholderRenderings = void 0;
|
|
7
|
+
exports.getChildComponentProps = getChildComponentProps;
|
|
19
8
|
const react_1 = __importDefault(require("react"));
|
|
20
9
|
const MissingComponent_1 = require("../MissingComponent");
|
|
21
10
|
const sharedTypes_1 = require("../sharedTypes");
|
|
@@ -24,7 +13,7 @@ const content_1 = require("@sitecore-content-sdk/content");
|
|
|
24
13
|
const HiddenRendering_1 = require("../HiddenRendering");
|
|
25
14
|
const FEaaS_1 = require("../FEaaS");
|
|
26
15
|
/**
|
|
27
|
-
* Get the renderings for the specified placeholder from the rendering data.
|
|
16
|
+
* Get the renderings for the specified placeholder from the rendering layout data.
|
|
28
17
|
* @param {ComponentRendering | RouteData } rendering rendering data
|
|
29
18
|
* @param {string} name placeholder name
|
|
30
19
|
* @param {boolean} isEditing whether components should be rendered in editing mode
|
|
@@ -92,29 +81,12 @@ const renderEmptyPlaceholder = (node) => {
|
|
|
92
81
|
};
|
|
93
82
|
exports.renderEmptyPlaceholder = renderEmptyPlaceholder;
|
|
94
83
|
/**
|
|
95
|
-
*
|
|
96
|
-
* @param {PlaceholderProps} placeholderProps
|
|
97
|
-
* @param {ComponentRendering} componentRendering rendering to be rendered
|
|
98
|
-
* @param {string} renderingKey unique key to pass over to rendering props
|
|
99
|
-
* @returns {RenderedProps} props to be passed to the rendered component
|
|
100
|
-
*/
|
|
101
|
-
const getRenderedComponentProps = (placeholderProps, componentRendering, renderingKey) => {
|
|
102
|
-
// eslint-disable-next-line no-unused-vars
|
|
103
|
-
const { fields, params: placeholderParams } = placeholderProps, passThroughProps = __rest(placeholderProps, ["fields", "params"]);
|
|
104
|
-
delete passThroughProps.missingComponentComponent;
|
|
105
|
-
delete passThroughProps.hiddenRenderingComponent;
|
|
106
|
-
delete passThroughProps.name;
|
|
107
|
-
const mergedContentProps = getAppComponentProps(placeholderProps, componentRendering);
|
|
108
|
-
return Object.assign(Object.assign(Object.assign({ key: renderingKey }, passThroughProps), mergedContentProps), { rendering: componentRendering });
|
|
109
|
-
};
|
|
110
|
-
exports.getRenderedComponentProps = getRenderedComponentProps;
|
|
111
|
-
/**
|
|
112
|
-
* Merge placeholder and component field and params content props.
|
|
113
|
-
* @param {BasePlaceholderProps} placeholderProps placeholder props
|
|
84
|
+
* Merge specific placeholder props with component field and params content props.
|
|
85
|
+
* @param {PlaceholderProps} placeholderProps placeholder props
|
|
114
86
|
* @param {ComponentRendering} componentRendering component rendering
|
|
115
87
|
* @returns {ComponentProps} merged props
|
|
116
88
|
*/
|
|
117
|
-
function
|
|
89
|
+
function getChildComponentProps(placeholderProps, componentRendering) {
|
|
118
90
|
const fields = Object.assign(Object.assign({}, (placeholderProps.fields || {})), (componentRendering.fields || {}));
|
|
119
91
|
const params = Object.assign(Object.assign({}, (placeholderProps.params || {})), (componentRendering.params || {}));
|
|
120
92
|
return {
|
|
@@ -182,7 +154,7 @@ const getComponentForRendering = (renderingDefinition, placeholderName, componen
|
|
|
182
154
|
};
|
|
183
155
|
}
|
|
184
156
|
else if (renderingDefinition.componentName === FEaaS_1.BYOC_WRAPPER_RENDERING_NAME) {
|
|
185
|
-
// wrapping with error boundary could cause problems in case where parent component uses withPlaceholder
|
|
157
|
+
// wrapping with error boundary could cause problems in case where parent component uses withPlaceholder HOCs and tries to access its children props
|
|
186
158
|
// that's why we need to mark BYOC wrapper dynamic
|
|
187
159
|
return {
|
|
188
160
|
component: FEaaS_1.BYOCWrapper,
|
|
@@ -1,38 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
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
3
|
var __rest = (this && this.__rest) || function (s, e) {
|
|
37
4
|
var t = {};
|
|
38
5
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
@@ -44,32 +11,34 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
44
11
|
}
|
|
45
12
|
return t;
|
|
46
13
|
};
|
|
14
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
15
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
16
|
+
};
|
|
47
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
18
|
exports.RichText = void 0;
|
|
49
|
-
const react_1 =
|
|
19
|
+
const react_1 = __importDefault(require("react"));
|
|
50
20
|
const layout_1 = require("@sitecore-content-sdk/content/layout");
|
|
51
21
|
const withFieldMetadata_1 = require("../enhancers/withFieldMetadata");
|
|
52
22
|
const withEmptyFieldEditingComponent_1 = require("../enhancers/withEmptyFieldEditingComponent");
|
|
53
23
|
const DefaultEmptyFieldEditingComponents_1 = require("./DefaultEmptyFieldEditingComponents");
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
* @param {RichTextProps} props component props
|
|
57
|
-
* @public
|
|
58
|
-
*/
|
|
59
|
-
exports.RichText = (0, withFieldMetadata_1.withFieldMetadata)((0, withEmptyFieldEditingComponent_1.withEmptyFieldEditingComponent)((0, react_1.forwardRef)((
|
|
60
|
-
// eslint-disable-next-line no-unused-vars
|
|
61
|
-
_a, ref) => {
|
|
62
|
-
var
|
|
63
|
-
// eslint-disable-next-line no-unused-vars
|
|
64
|
-
{ field, tag = 'div', editable = true } = _a, otherProps = __rest(_a,
|
|
65
|
-
// eslint-disable-next-line no-unused-vars
|
|
66
|
-
["field", "tag", "editable"]);
|
|
24
|
+
const RichTextComponent = (_a) => {
|
|
25
|
+
var { field, tag = 'div', ref } = _a, otherProps = __rest(_a, ["field", "tag", "ref"]);
|
|
67
26
|
if ((0, layout_1.isFieldValueEmpty)(field)) {
|
|
68
27
|
return null;
|
|
69
28
|
}
|
|
29
|
+
delete otherProps.editable; // prevent editable from being passed to the DOM
|
|
70
30
|
const htmlProps = Object.assign({ dangerouslySetInnerHTML: {
|
|
71
31
|
__html: field.value,
|
|
72
32
|
}, ref, suppressHydrationWarning: field.metadata ? true : undefined }, otherProps);
|
|
73
|
-
|
|
74
|
-
|
|
33
|
+
const Tag = (tag || 'div');
|
|
34
|
+
return react_1.default.createElement(Tag, Object.assign({}, htmlProps));
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* The RichText component.
|
|
38
|
+
* @param {RichTextProps} props component props
|
|
39
|
+
* @public
|
|
40
|
+
*/
|
|
41
|
+
exports.RichText = (0, withFieldMetadata_1.withFieldMetadata)((0, withEmptyFieldEditingComponent_1.withEmptyFieldEditingComponent)(RichTextComponent, {
|
|
42
|
+
defaultEmptyFieldEditingComponent: DefaultEmptyFieldEditingComponents_1.DefaultEmptyFieldEditingComponentText,
|
|
43
|
+
}));
|
|
75
44
|
exports.RichText.displayName = 'RichText';
|
|
@@ -1,11 +1,45 @@
|
|
|
1
1
|
"use strict";
|
|
2
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
|
+
})();
|
|
3
36
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
37
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
38
|
};
|
|
6
39
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
40
|
exports.SitecoreProvider = exports.ImportMapReactContext = exports.ComponentMapReactContext = exports.SitecoreProviderReactContext = void 0;
|
|
8
|
-
|
|
41
|
+
exports.useSitecore = useSitecore;
|
|
42
|
+
const react_1 = __importStar(require("react"));
|
|
9
43
|
const react_2 = __importDefault(require("fast-deep-equal/es6/react"));
|
|
10
44
|
/**
|
|
11
45
|
* The context for the SitecoreProvider component.
|
|
@@ -16,39 +50,53 @@ exports.ComponentMapReactContext = react_1.default.createContext(new Map());
|
|
|
16
50
|
exports.ImportMapReactContext = react_1.default.createContext(undefined);
|
|
17
51
|
/**
|
|
18
52
|
* The SitecoreProvider component.
|
|
53
|
+
* @param {SitecoreProviderProps} props - The props for the SitecoreProvider component.
|
|
54
|
+
* @param {SitecoreProviderProps['api']} props.api - The API configuration.
|
|
55
|
+
* @param {SitecoreProviderProps['page']} props.page - The page data.
|
|
56
|
+
* @param {SitecoreProviderProps['componentMap']} props.componentMap - The component map.
|
|
57
|
+
* @param {SitecoreProviderProps['loadImportMap']} props.loadImportMap - The function to load the import map.
|
|
58
|
+
* @param {React.ReactNode} props.children - The children to render.
|
|
59
|
+
* @returns {React.ReactNode} The SitecoreProvider component.
|
|
19
60
|
* @public
|
|
20
61
|
*/
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
};
|
|
33
|
-
this.state = {
|
|
34
|
-
page: props.page,
|
|
35
|
-
setPage: this.setPage,
|
|
36
|
-
api: props.api,
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
componentDidUpdate(prevProps) {
|
|
40
|
-
// In case if somebody will manage SitecoreProvider state by passing fresh `page` prop
|
|
41
|
-
// instead of using `updateContext`
|
|
42
|
-
if (!(0, react_2.default)(prevProps.page, this.props.page)) {
|
|
43
|
-
this.setPage(this.props.page);
|
|
44
|
-
return;
|
|
62
|
+
const SitecoreProvider = (props) => {
|
|
63
|
+
const { api, page: propsPage, componentMap, loadImportMap, children } = props;
|
|
64
|
+
const [page, setPageInternal] = (0, react_1.useState)(propsPage);
|
|
65
|
+
// Memoize setPage callback
|
|
66
|
+
const setPage = (0, react_1.useCallback)((value) => {
|
|
67
|
+
setPageInternal(value);
|
|
68
|
+
}, []);
|
|
69
|
+
// Handle page prop changes using useEffect instead of componentDidUpdate
|
|
70
|
+
(0, react_1.useEffect)(() => {
|
|
71
|
+
if (!(0, react_2.default)(propsPage, page)) {
|
|
72
|
+
setPage(propsPage);
|
|
45
73
|
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
74
|
+
}, [propsPage, page, setPage]);
|
|
75
|
+
// Memoize the context value to prevent unnecessary re-renders
|
|
76
|
+
const contextValue = (0, react_1.useMemo)(() => ({
|
|
77
|
+
page,
|
|
78
|
+
setPage,
|
|
79
|
+
api,
|
|
80
|
+
componentMap,
|
|
81
|
+
loadImportMap,
|
|
82
|
+
}), [page, setPage, api, componentMap, loadImportMap]);
|
|
83
|
+
return (react_1.default.createElement(exports.SitecoreProviderReactContext.Provider, { value: contextValue }, children));
|
|
84
|
+
};
|
|
53
85
|
exports.SitecoreProvider = SitecoreProvider;
|
|
54
|
-
SitecoreProvider.displayName = 'SitecoreProvider';
|
|
86
|
+
exports.SitecoreProvider.displayName = 'SitecoreProvider';
|
|
87
|
+
/**
|
|
88
|
+
* This hook grants acсess to the current Sitecore page and api.
|
|
89
|
+
* @param {UseSitecoreOptions} [options] hook options
|
|
90
|
+
* @example
|
|
91
|
+
* const EditMode = () => {
|
|
92
|
+
* const { page } = useSitecore();
|
|
93
|
+
* return <span>Edit Mode is {page.mode.isEditing ? 'active' : 'inactive'}</span>
|
|
94
|
+
* }
|
|
95
|
+
* @returns {SitecoreProviderState} The current Sitecore context, including the page and api.
|
|
96
|
+
* @public
|
|
97
|
+
*/
|
|
98
|
+
function useSitecore(options) {
|
|
99
|
+
const scContext = (0, react_1.useContext)(exports.SitecoreProviderReactContext);
|
|
100
|
+
const updatable = options === null || options === void 0 ? void 0 : options.updatable;
|
|
101
|
+
return Object.assign(Object.assign({}, scContext), { setPage: updatable ? scContext.setPage : undefined });
|
|
102
|
+
}
|
|
@@ -21,11 +21,7 @@ const layout_1 = require("@sitecore-content-sdk/content/layout");
|
|
|
21
21
|
const withFieldMetadata_1 = require("../enhancers/withFieldMetadata");
|
|
22
22
|
const withEmptyFieldEditingComponent_1 = require("../enhancers/withEmptyFieldEditingComponent");
|
|
23
23
|
const DefaultEmptyFieldEditingComponents_1 = require("./DefaultEmptyFieldEditingComponents");
|
|
24
|
-
|
|
25
|
-
* The Text component.
|
|
26
|
-
* @public
|
|
27
|
-
*/
|
|
28
|
-
exports.Text = (0, withFieldMetadata_1.withFieldMetadata)((0, withEmptyFieldEditingComponent_1.withEmptyFieldEditingComponent)((_a) => {
|
|
24
|
+
const TextComponent = (_a) => {
|
|
29
25
|
var { field, tag, editable = true, encode = true } = _a, otherProps = __rest(_a, ["field", "tag", "editable", "encode"]);
|
|
30
26
|
if ((0, layout_1.isFieldValueEmpty)(field)) {
|
|
31
27
|
return null;
|
|
@@ -59,14 +55,22 @@ exports.Text = (0, withFieldMetadata_1.withFieldMetadata)((0, withEmptyFieldEdit
|
|
|
59
55
|
else {
|
|
60
56
|
children = output;
|
|
61
57
|
}
|
|
58
|
+
const Tag = (tag || 'span');
|
|
62
59
|
if (field.metadata) {
|
|
63
|
-
return react_1.default.createElement(
|
|
60
|
+
return (react_1.default.createElement(Tag, Object.assign({}, htmlProps, { suppressHydrationWarning: true }), children));
|
|
64
61
|
}
|
|
65
62
|
else if (tag || !encode) {
|
|
66
|
-
return react_1.default.createElement(
|
|
63
|
+
return react_1.default.createElement(Tag, Object.assign({}, htmlProps), children);
|
|
67
64
|
}
|
|
68
65
|
else {
|
|
69
66
|
return react_1.default.createElement(react_1.default.Fragment, null, children);
|
|
70
67
|
}
|
|
71
|
-
}
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* The Text component.
|
|
71
|
+
* @public
|
|
72
|
+
*/
|
|
73
|
+
exports.Text = (0, withFieldMetadata_1.withFieldMetadata)((0, withEmptyFieldEditingComponent_1.withEmptyFieldEditingComponent)(TextComponent, {
|
|
74
|
+
defaultEmptyFieldEditingComponent: DefaultEmptyFieldEditingComponents_1.DefaultEmptyFieldEditingComponentText,
|
|
75
|
+
}));
|
|
72
76
|
exports.Text.displayName = 'Text';
|
|
@@ -6,6 +6,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.withAppPlaceholder = void 0;
|
|
7
7
|
const react_1 = __importDefault(require("react"));
|
|
8
8
|
const AppPlaceholder_1 = require("../components/Placeholder/AppPlaceholder");
|
|
9
|
+
/**
|
|
10
|
+
* Provides a slot-like functionality by wrapping a component and rendering placeholders defined in the layout data.
|
|
11
|
+
* @param {ComponentType<T>} Component - The component to be wrapped around placeholders.
|
|
12
|
+
* @returns {React.ReactNode} A new component that renders the original component with placeholders.
|
|
13
|
+
* @public
|
|
14
|
+
*/
|
|
9
15
|
const withAppPlaceholder = (Component) => {
|
|
10
16
|
return (props) => {
|
|
11
17
|
const placeholders = props.rendering.placeholders || {};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
'use client';
|
|
2
3
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
4
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
5
|
};
|
|
@@ -6,7 +7,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
7
|
exports.DefaultEditingError = void 0;
|
|
7
8
|
exports.withDatasourceCheck = withDatasourceCheck;
|
|
8
9
|
const react_1 = __importDefault(require("react"));
|
|
9
|
-
const
|
|
10
|
+
const SitecoreProvider_1 = require("./../components/SitecoreProvider");
|
|
10
11
|
const DefaultEditingError = () => (react_1.default.createElement("div", { className: "sc-jss-editing-error", role: "alert" }, "Datasource is required. Please choose a content item for this component."));
|
|
11
12
|
exports.DefaultEditingError = DefaultEditingError;
|
|
12
13
|
/**
|
|
@@ -19,9 +20,9 @@ exports.DefaultEditingError = DefaultEditingError;
|
|
|
19
20
|
*/
|
|
20
21
|
function withDatasourceCheck(options) {
|
|
21
22
|
return function withDatasourceCheckHoc(Component) {
|
|
22
|
-
return
|
|
23
|
+
return (props) => {
|
|
23
24
|
var _a, _b;
|
|
24
|
-
const { page } = (0,
|
|
25
|
+
const { page } = (0, SitecoreProvider_1.useSitecore)();
|
|
25
26
|
const EditingError = (_a = options === null || options === void 0 ? void 0 : options.editingErrorComponent) !== null && _a !== void 0 ? _a : exports.DefaultEditingError;
|
|
26
27
|
// If the component is rendered in DesignLibrary, we don't need to check for datasource
|
|
27
28
|
const isDesignLibrary = page.mode.isDesignLibrary;
|
|
@@ -1,10 +1,41 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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
|
+
})();
|
|
5
36
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
37
|
exports.withEditorChromes = void 0;
|
|
7
|
-
const react_1 =
|
|
38
|
+
const react_1 = __importStar(require("react"));
|
|
8
39
|
const __1 = require("..");
|
|
9
40
|
/**
|
|
10
41
|
* HOC to inject editor chromes reset on component update.
|
|
@@ -12,18 +43,22 @@ const __1 = require("..");
|
|
|
12
43
|
* @public
|
|
13
44
|
*/
|
|
14
45
|
const withEditorChromes = (WrappedComponent) => {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
46
|
+
const Enhancer = (props) => {
|
|
47
|
+
const isFirstRender = (0, react_1.useRef)(true);
|
|
48
|
+
(0, react_1.useEffect)(() => {
|
|
49
|
+
if (isFirstRender.current) {
|
|
50
|
+
isFirstRender.current = false;
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
// only reset chromes on subsequent re-renders
|
|
21
54
|
(0, __1.resetEditorChromes)();
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
55
|
+
});
|
|
56
|
+
return react_1.default.createElement(WrappedComponent, Object.assign({}, props));
|
|
57
|
+
};
|
|
58
|
+
Enhancer.displayName =
|
|
59
|
+
WrappedComponent.displayName ||
|
|
60
|
+
WrappedComponent.name ||
|
|
61
|
+
'Component';
|
|
27
62
|
return Enhancer;
|
|
28
63
|
};
|
|
29
64
|
exports.withEditorChromes = withEditorChromes;
|