@sitecore-jss/sitecore-jss-react 22.4.1-canary.2 → 22.5.0-beta.1
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/ComponentLibraryLayout.js +70 -0
- package/dist/cjs/index.js +4 -2
- package/dist/esm/components/ComponentLibraryLayout.js +43 -0
- package/dist/esm/index.js +1 -0
- package/package.json +3 -3
- package/types/components/ComponentLibraryLayout.d.ts +2 -0
- package/types/index.d.ts +1 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.ComponentLibraryLayout = void 0;
|
|
27
|
+
const react_1 = __importStar(require("react"));
|
|
28
|
+
const Placeholder_1 = require("./Placeholder");
|
|
29
|
+
const layout_1 = require("@sitecore-jss/sitecore-jss/layout");
|
|
30
|
+
const editing_1 = require("@sitecore-jss/sitecore-jss/editing");
|
|
31
|
+
const EditingScripts_1 = require("./EditingScripts");
|
|
32
|
+
const ComponentLibraryLayout = (layoutData) => {
|
|
33
|
+
const { route } = layoutData.sitecore;
|
|
34
|
+
const [renderKey, setRenderKey] = (0, react_1.useState)(0);
|
|
35
|
+
const [rootUpdate, setRootUpdate] = (0, react_1.useState)(null);
|
|
36
|
+
const rootComponent = route === null || route === void 0 ? void 0 : route.placeholders[layout_1.EDITING_COMPONENT_PLACEHOLDER][0];
|
|
37
|
+
// useEffect may execute multiple times on single render (i.e. in dev) - but we only want to fire ready event once
|
|
38
|
+
let componentReady = false;
|
|
39
|
+
// have an up-to-date layout state between re-renders (SSR re-render excluded)
|
|
40
|
+
const persistedRoot = (0, react_1.useMemo)(() => (Object.assign(Object.assign({}, (rootComponent || {})), rootUpdate)), [
|
|
41
|
+
rootComponent,
|
|
42
|
+
rootUpdate,
|
|
43
|
+
]);
|
|
44
|
+
route.placeholders[layout_1.EDITING_COMPONENT_PLACEHOLDER][0] = persistedRoot;
|
|
45
|
+
(0, react_1.useEffect)(() => {
|
|
46
|
+
// useEffect will fire when components are ready - and we inform the whole wide world of it too
|
|
47
|
+
if (!componentReady) {
|
|
48
|
+
componentReady = true;
|
|
49
|
+
window.top.postMessage((0, editing_1.getComponentLibraryStatusEvent)(editing_1.ComponentLibraryStatus.READY, rootComponent.uid), '*');
|
|
50
|
+
}
|
|
51
|
+
const unsubscribe = (0, editing_1.addComponentUpdateHandler)(persistedRoot, (updatedRoot) => {
|
|
52
|
+
setRootUpdate(Object.assign({}, updatedRoot));
|
|
53
|
+
setRenderKey((key) => key + 1);
|
|
54
|
+
});
|
|
55
|
+
// useEffect will cleanup event handler on re-render
|
|
56
|
+
return unsubscribe;
|
|
57
|
+
}, []);
|
|
58
|
+
(0, react_1.useEffect)(() => {
|
|
59
|
+
// Send a rendered event only as effect of a component update command
|
|
60
|
+
if (renderKey === 0) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
window.top.postMessage((0, editing_1.getComponentLibraryStatusEvent)(editing_1.ComponentLibraryStatus.RENDERED, rootComponent.uid), '*');
|
|
64
|
+
}, [renderKey, rootComponent.uid]);
|
|
65
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
66
|
+
react_1.default.createElement(EditingScripts_1.EditingScripts, null),
|
|
67
|
+
react_1.default.createElement("main", null,
|
|
68
|
+
react_1.default.createElement("div", { id: layout_1.EDITING_COMPONENT_ID }, route && (react_1.default.createElement(Placeholder_1.Placeholder, { name: layout_1.EDITING_COMPONENT_PLACEHOLDER, rendering: route, key: renderKey }))))));
|
|
69
|
+
};
|
|
70
|
+
exports.ComponentLibraryLayout = ComponentLibraryLayout;
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.DefaultEmptyFieldEditingComponentImage = exports.DefaultEmptyFieldEditingComponentText = exports.EditingScripts = exports.withEmptyFieldEditingComponent = void 0;
|
|
3
|
+
exports.ComponentBuilder = exports.EditFrame = exports.withDatasourceCheck = exports.withPlaceholder = exports.withEditorChromes = exports.useSitecoreContext = exports.withSitecoreContext = exports.SitecoreContextReactContext = exports.SitecoreContext = exports.VisitorIdentification = exports.File = exports.LinkPropTypes = exports.Link = exports.BYOCWrapper = exports.fetchBYOCComponentServerProps = exports.BYOCComponent = exports.ComponentLibraryLayout = exports.FEaaSWrapper = exports.fetchFEaaSComponentServerProps = exports.FEaaSComponent = exports.DateField = exports.Text = exports.RichTextPropTypes = exports.RichText = exports.getEEMarkup = exports.Image = exports.Placeholder = exports.mediaApi = exports.GraphQLRequestClient = exports.DefaultRetryStrategy = exports.RestDictionaryService = exports.GraphQLDictionaryService = exports.trackingApi = exports.EditMode = exports.getFieldValue = exports.getChildPlaceholder = exports.RestLayoutService = exports.GraphQLLayoutService = exports.LayoutServicePageState = exports.getComponentLibraryStylesheetLinks = exports.getContentStylesheetLink = exports.DefaultEditFrameButtons = exports.DefaultEditFrameButton = exports.resetEditorChromes = exports.isEditorActive = exports.NativeDataFetcher = exports.MemoryCacheClient = exports.ClientError = exports.enableDebug = exports.constants = void 0;
|
|
4
|
+
exports.DefaultEmptyFieldEditingComponentImage = exports.DefaultEmptyFieldEditingComponentText = exports.EditingScripts = exports.withEmptyFieldEditingComponent = exports.withFieldMetadata = void 0;
|
|
5
5
|
var sitecore_jss_1 = require("@sitecore-jss/sitecore-jss");
|
|
6
6
|
Object.defineProperty(exports, "constants", { enumerable: true, get: function () { return sitecore_jss_1.constants; } });
|
|
7
7
|
Object.defineProperty(exports, "enableDebug", { enumerable: true, get: function () { return sitecore_jss_1.enableDebug; } });
|
|
@@ -49,6 +49,8 @@ Object.defineProperty(exports, "FEaaSComponent", { enumerable: true, get: functi
|
|
|
49
49
|
Object.defineProperty(exports, "fetchFEaaSComponentServerProps", { enumerable: true, get: function () { return FEaaSComponent_1.fetchFEaaSComponentServerProps; } });
|
|
50
50
|
var FEaaSWrapper_1 = require("./components/FEaaSWrapper");
|
|
51
51
|
Object.defineProperty(exports, "FEaaSWrapper", { enumerable: true, get: function () { return FEaaSWrapper_1.FEaaSWrapper; } });
|
|
52
|
+
var ComponentLibraryLayout_1 = require("./components/ComponentLibraryLayout");
|
|
53
|
+
Object.defineProperty(exports, "ComponentLibraryLayout", { enumerable: true, get: function () { return ComponentLibraryLayout_1.ComponentLibraryLayout; } });
|
|
52
54
|
var BYOCComponent_1 = require("./components/BYOCComponent");
|
|
53
55
|
Object.defineProperty(exports, "BYOCComponent", { enumerable: true, get: function () { return BYOCComponent_1.BYOCComponent; } });
|
|
54
56
|
Object.defineProperty(exports, "fetchBYOCComponentServerProps", { enumerable: true, get: function () { return BYOCComponent_1.fetchBYOCComponentServerProps; } });
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import React, { useEffect, useMemo, useState } from 'react';
|
|
2
|
+
import { Placeholder } from './Placeholder';
|
|
3
|
+
import { EDITING_COMPONENT_ID, EDITING_COMPONENT_PLACEHOLDER, } from '@sitecore-jss/sitecore-jss/layout';
|
|
4
|
+
import { ComponentLibraryStatus, getComponentLibraryStatusEvent, addComponentUpdateHandler, } from '@sitecore-jss/sitecore-jss/editing';
|
|
5
|
+
import { EditingScripts } from './EditingScripts';
|
|
6
|
+
export const ComponentLibraryLayout = (layoutData) => {
|
|
7
|
+
const { route } = layoutData.sitecore;
|
|
8
|
+
const [renderKey, setRenderKey] = useState(0);
|
|
9
|
+
const [rootUpdate, setRootUpdate] = useState(null);
|
|
10
|
+
const rootComponent = route === null || route === void 0 ? void 0 : route.placeholders[EDITING_COMPONENT_PLACEHOLDER][0];
|
|
11
|
+
// useEffect may execute multiple times on single render (i.e. in dev) - but we only want to fire ready event once
|
|
12
|
+
let componentReady = false;
|
|
13
|
+
// have an up-to-date layout state between re-renders (SSR re-render excluded)
|
|
14
|
+
const persistedRoot = useMemo(() => (Object.assign(Object.assign({}, (rootComponent || {})), rootUpdate)), [
|
|
15
|
+
rootComponent,
|
|
16
|
+
rootUpdate,
|
|
17
|
+
]);
|
|
18
|
+
route.placeholders[EDITING_COMPONENT_PLACEHOLDER][0] = persistedRoot;
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
// useEffect will fire when components are ready - and we inform the whole wide world of it too
|
|
21
|
+
if (!componentReady) {
|
|
22
|
+
componentReady = true;
|
|
23
|
+
window.top.postMessage(getComponentLibraryStatusEvent(ComponentLibraryStatus.READY, rootComponent.uid), '*');
|
|
24
|
+
}
|
|
25
|
+
const unsubscribe = addComponentUpdateHandler(persistedRoot, (updatedRoot) => {
|
|
26
|
+
setRootUpdate(Object.assign({}, updatedRoot));
|
|
27
|
+
setRenderKey((key) => key + 1);
|
|
28
|
+
});
|
|
29
|
+
// useEffect will cleanup event handler on re-render
|
|
30
|
+
return unsubscribe;
|
|
31
|
+
}, []);
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
// Send a rendered event only as effect of a component update command
|
|
34
|
+
if (renderKey === 0) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
window.top.postMessage(getComponentLibraryStatusEvent(ComponentLibraryStatus.RENDERED, rootComponent.uid), '*');
|
|
38
|
+
}, [renderKey, rootComponent.uid]);
|
|
39
|
+
return (React.createElement(React.Fragment, null,
|
|
40
|
+
React.createElement(EditingScripts, null),
|
|
41
|
+
React.createElement("main", null,
|
|
42
|
+
React.createElement("div", { id: EDITING_COMPONENT_ID }, route && (React.createElement(Placeholder, { name: EDITING_COMPONENT_PLACEHOLDER, rendering: route, key: renderKey }))))));
|
|
43
|
+
};
|
package/dist/esm/index.js
CHANGED
|
@@ -12,6 +12,7 @@ export { Text } from './components/Text';
|
|
|
12
12
|
export { DateField } from './components/Date';
|
|
13
13
|
export { FEaaSComponent, fetchFEaaSComponentServerProps, } from './components/FEaaSComponent';
|
|
14
14
|
export { FEaaSWrapper } from './components/FEaaSWrapper';
|
|
15
|
+
export { ComponentLibraryLayout } from './components/ComponentLibraryLayout';
|
|
15
16
|
export { BYOCComponent, fetchBYOCComponentServerProps, } from './components/BYOCComponent';
|
|
16
17
|
export { BYOCWrapper } from './components/BYOCWrapper';
|
|
17
18
|
export { Link, LinkPropTypes } from './components/Link';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sitecore-jss/sitecore-jss-react",
|
|
3
|
-
"version": "22.
|
|
3
|
+
"version": "22.5.0-beta.1",
|
|
4
4
|
"main": "dist/cjs/index.js",
|
|
5
5
|
"module": "dist/esm/index.js",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -61,14 +61,14 @@
|
|
|
61
61
|
"react-dom": "^18.2.0"
|
|
62
62
|
},
|
|
63
63
|
"dependencies": {
|
|
64
|
-
"@sitecore-jss/sitecore-jss": "^22.
|
|
64
|
+
"@sitecore-jss/sitecore-jss": "^22.5.0-beta.1",
|
|
65
65
|
"fast-deep-equal": "^3.1.3",
|
|
66
66
|
"prop-types": "^15.8.1",
|
|
67
67
|
"style-attr": "^1.3.0"
|
|
68
68
|
},
|
|
69
69
|
"description": "",
|
|
70
70
|
"types": "types/index.d.ts",
|
|
71
|
-
"gitHead": "
|
|
71
|
+
"gitHead": "e080916b354c36e63f29f01fbcb87688d7f2b4cd",
|
|
72
72
|
"files": [
|
|
73
73
|
"dist",
|
|
74
74
|
"types"
|
package/types/index.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export { Text, TextField } from './components/Text';
|
|
|
14
14
|
export { DateField, DateFieldProps } from './components/Date';
|
|
15
15
|
export { FEaaSComponent, FEaaSComponentProps, FEaaSComponentParams, fetchFEaaSComponentServerProps, } from './components/FEaaSComponent';
|
|
16
16
|
export { FEaaSWrapper } from './components/FEaaSWrapper';
|
|
17
|
+
export { ComponentLibraryLayout } from './components/ComponentLibraryLayout';
|
|
17
18
|
export { BYOCComponent, BYOCComponentParams, BYOCComponentProps, fetchBYOCComponentServerProps, } from './components/BYOCComponent';
|
|
18
19
|
export { BYOCWrapper } from './components/BYOCWrapper';
|
|
19
20
|
export { Link, LinkField, LinkFieldValue, LinkProps, LinkPropTypes } from './components/Link';
|