@sitecore-jss/sitecore-jss-react 23.0.0-canary.13 → 23.0.0-canary.14
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/EditingScripts.js +4 -21
- package/dist/cjs/enhancers/withDatasourceCheck.js +1 -4
- package/dist/cjs/index.js +1 -4
- package/dist/esm/components/EditingScripts.js +5 -22
- package/dist/esm/enhancers/withDatasourceCheck.js +1 -4
- package/dist/esm/index.js +1 -2
- package/package.json +3 -3
- package/types/components/EditingScripts.d.ts +1 -2
- package/types/index.d.ts +1 -2
- package/dist/cjs/components/DesignLibrary.js +0 -72
- package/dist/esm/components/DesignLibrary.js +0 -45
- package/types/components/DesignLibrary.d.ts +0 -3
|
@@ -8,34 +8,17 @@ const react_1 = __importDefault(require("react"));
|
|
|
8
8
|
const layout_1 = require("@sitecore-jss/sitecore-jss/layout");
|
|
9
9
|
const withSitecoreContext_1 = require("../enhancers/withSitecoreContext");
|
|
10
10
|
const editing_1 = require("@sitecore-jss/sitecore-jss/editing");
|
|
11
|
-
const editing_2 = require("@sitecore-jss/sitecore-jss/editing");
|
|
12
11
|
/**
|
|
13
12
|
* - Renders client scripts and data for editing/preview mode for Pages
|
|
14
|
-
*
|
|
15
|
-
* This script is only rendered when EditMode is Metadata or RenderingType is `component`, otherwise it renders nothing.
|
|
13
|
+
* This script is only rendered when EditMode is Metadata, otherwise it renders nothing.
|
|
16
14
|
* @returns A JSX element containing the editing scripts or an empty fragment if not in editing/preview mode.
|
|
17
15
|
*/
|
|
18
16
|
const EditingScripts = () => {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
if (renderingType !== layout_1.RenderingType.Component &&
|
|
23
|
-
(pageState === layout_1.LayoutServicePageState.Normal || pageState === layout_1.LayoutServicePageState.Preview)) {
|
|
17
|
+
const { sitecoreContext: { pageState, editMode, clientData, clientScripts }, } = (0, withSitecoreContext_1.useSitecoreContext)();
|
|
18
|
+
// Don't render anything if not in editing/preview mode
|
|
19
|
+
if (pageState === layout_1.LayoutServicePageState.Normal || pageState === layout_1.LayoutServicePageState.Preview) {
|
|
24
20
|
return react_1.default.createElement(react_1.default.Fragment, null);
|
|
25
21
|
}
|
|
26
|
-
// In case of RenderingType.Component - render only the script for Design Libnrary
|
|
27
|
-
if (renderingType === layout_1.RenderingType.Component) {
|
|
28
|
-
// Add cache buster to the script URL (format hh-dd-mm-yyyy, UTC)
|
|
29
|
-
const now = new Date();
|
|
30
|
-
const hour = String(now.getUTCHours()).padStart(2, '0');
|
|
31
|
-
const day = String(now.getUTCDate()).padStart(2, '0');
|
|
32
|
-
const month = String(now.getUTCMonth() + 1).padStart(2, '0');
|
|
33
|
-
const year = String(now.getUTCFullYear());
|
|
34
|
-
const cacheTimestamp = `${hour}-${day}-${month}-${year}`;
|
|
35
|
-
const scriptUrl = `${(0, editing_2.getDesignLibraryScriptLink)((_a = api === null || api === void 0 ? void 0 : api.edge) === null || _a === void 0 ? void 0 : _a.edgeUrl)}?cb=${cacheTimestamp}`;
|
|
36
|
-
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
37
|
-
react_1.default.createElement("script", { src: scriptUrl, suppressHydrationWarning: true })));
|
|
38
|
-
}
|
|
39
22
|
if (editMode === layout_1.EditMode.Metadata) {
|
|
40
23
|
const jssClientData = Object.assign(Object.assign({}, clientData), (0, editing_1.getJssPagesClientData)());
|
|
41
24
|
return (react_1.default.createElement(react_1.default.Fragment, null, clientScripts === null || clientScripts === void 0 ? void 0 :
|
|
@@ -5,7 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.withDatasourceCheck = exports.DefaultEditingError = void 0;
|
|
7
7
|
const react_1 = __importDefault(require("react"));
|
|
8
|
-
const layout_1 = require("@sitecore-jss/sitecore-jss/layout");
|
|
9
8
|
const withSitecoreContext_1 = require("./withSitecoreContext");
|
|
10
9
|
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
10
|
exports.DefaultEditingError = DefaultEditingError;
|
|
@@ -22,9 +21,7 @@ function withDatasourceCheck(options) {
|
|
|
22
21
|
var _a, _b;
|
|
23
22
|
const { sitecoreContext } = (0, withSitecoreContext_1.useSitecoreContext)();
|
|
24
23
|
const EditingError = (_a = options === null || options === void 0 ? void 0 : options.editingErrorComponent) !== null && _a !== void 0 ? _a : exports.DefaultEditingError;
|
|
25
|
-
|
|
26
|
-
const isDesignLibrary = (sitecoreContext === null || sitecoreContext === void 0 ? void 0 : sitecoreContext.renderingType) === layout_1.RenderingType.Component;
|
|
27
|
-
return isDesignLibrary || ((_b = props.rendering) === null || _b === void 0 ? void 0 : _b.dataSource) ? (react_1.default.createElement(Component, Object.assign({}, props))) : sitecoreContext.pageEditing ? (react_1.default.createElement(EditingError, null)) : null;
|
|
24
|
+
return ((_b = props.rendering) === null || _b === void 0 ? void 0 : _b.dataSource) ? (react_1.default.createElement(Component, Object.assign({}, props))) : sitecoreContext.pageEditing ? (react_1.default.createElement(EditingError, null)) : null;
|
|
28
25
|
};
|
|
29
26
|
};
|
|
30
27
|
}
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DefaultEmptyFieldEditingComponentImage = exports.DefaultEmptyFieldEditingComponentText = exports.EditingScripts = exports.withEmptyFieldEditingComponent = exports.withFieldMetadata = exports.ComponentBuilder = exports.EditFrame = exports.withDatasourceCheck = exports.withPlaceholder = exports.withEditorChromes = exports.useSitecoreContext = exports.withSitecoreContext = exports.SitecoreContextReactContext = exports.SitecoreContext = exports.VisitorIdentification = exports.File = exports.Link = exports.
|
|
3
|
+
exports.DefaultEmptyFieldEditingComponentImage = exports.DefaultEmptyFieldEditingComponentText = exports.EditingScripts = exports.withEmptyFieldEditingComponent = exports.withFieldMetadata = exports.ComponentBuilder = exports.EditFrame = exports.withDatasourceCheck = exports.withPlaceholder = exports.withEditorChromes = exports.useSitecoreContext = exports.withSitecoreContext = exports.SitecoreContextReactContext = exports.SitecoreContext = exports.VisitorIdentification = exports.File = exports.Link = exports.DateField = exports.Text = 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.getContentStylesheetLink = exports.DefaultEditFrameButtons = exports.DefaultEditFrameButton = exports.resetEditorChromes = exports.isEditorActive = exports.NativeDataFetcher = exports.MemoryCacheClient = exports.ClientError = exports.enableDebug = exports.constants = void 0;
|
|
4
4
|
var sitecore_jss_1 = require("@sitecore-jss/sitecore-jss");
|
|
5
5
|
Object.defineProperty(exports, "constants", { enumerable: true, get: function () { return sitecore_jss_1.constants; } });
|
|
6
6
|
Object.defineProperty(exports, "enableDebug", { enumerable: true, get: function () { return sitecore_jss_1.enableDebug; } });
|
|
@@ -14,7 +14,6 @@ Object.defineProperty(exports, "DefaultEditFrameButton", { enumerable: true, get
|
|
|
14
14
|
Object.defineProperty(exports, "DefaultEditFrameButtons", { enumerable: true, get: function () { return editing_1.DefaultEditFrameButtons; } });
|
|
15
15
|
var layout_1 = require("@sitecore-jss/sitecore-jss/layout");
|
|
16
16
|
Object.defineProperty(exports, "getContentStylesheetLink", { enumerable: true, get: function () { return layout_1.getContentStylesheetLink; } });
|
|
17
|
-
Object.defineProperty(exports, "getDesignLibraryStylesheetLinks", { enumerable: true, get: function () { return layout_1.getDesignLibraryStylesheetLinks; } });
|
|
18
17
|
Object.defineProperty(exports, "LayoutServicePageState", { enumerable: true, get: function () { return layout_1.LayoutServicePageState; } });
|
|
19
18
|
Object.defineProperty(exports, "GraphQLLayoutService", { enumerable: true, get: function () { return layout_1.GraphQLLayoutService; } });
|
|
20
19
|
Object.defineProperty(exports, "RestLayoutService", { enumerable: true, get: function () { return layout_1.RestLayoutService; } });
|
|
@@ -42,8 +41,6 @@ var Text_1 = require("./components/Text");
|
|
|
42
41
|
Object.defineProperty(exports, "Text", { enumerable: true, get: function () { return Text_1.Text; } });
|
|
43
42
|
var Date_1 = require("./components/Date");
|
|
44
43
|
Object.defineProperty(exports, "DateField", { enumerable: true, get: function () { return Date_1.DateField; } });
|
|
45
|
-
var DesignLibrary_1 = require("./components/DesignLibrary");
|
|
46
|
-
Object.defineProperty(exports, "DesignLibrary", { enumerable: true, get: function () { return DesignLibrary_1.DesignLibrary; } });
|
|
47
44
|
var Link_1 = require("./components/Link");
|
|
48
45
|
Object.defineProperty(exports, "Link", { enumerable: true, get: function () { return Link_1.Link; } });
|
|
49
46
|
var File_1 = require("./components/File");
|
|
@@ -1,35 +1,18 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { EditMode, LayoutServicePageState
|
|
2
|
+
import { EditMode, LayoutServicePageState } from '@sitecore-jss/sitecore-jss/layout';
|
|
3
3
|
import { useSitecoreContext } from '../enhancers/withSitecoreContext';
|
|
4
4
|
import { getJssPagesClientData } from '@sitecore-jss/sitecore-jss/editing';
|
|
5
|
-
import { getDesignLibraryScriptLink } from '@sitecore-jss/sitecore-jss/editing';
|
|
6
5
|
/**
|
|
7
6
|
* - Renders client scripts and data for editing/preview mode for Pages
|
|
8
|
-
*
|
|
9
|
-
* This script is only rendered when EditMode is Metadata or RenderingType is `component`, otherwise it renders nothing.
|
|
7
|
+
* This script is only rendered when EditMode is Metadata, otherwise it renders nothing.
|
|
10
8
|
* @returns A JSX element containing the editing scripts or an empty fragment if not in editing/preview mode.
|
|
11
9
|
*/
|
|
12
10
|
export const EditingScripts = () => {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
if (renderingType !== RenderingType.Component &&
|
|
17
|
-
(pageState === LayoutServicePageState.Normal || pageState === LayoutServicePageState.Preview)) {
|
|
11
|
+
const { sitecoreContext: { pageState, editMode, clientData, clientScripts }, } = useSitecoreContext();
|
|
12
|
+
// Don't render anything if not in editing/preview mode
|
|
13
|
+
if (pageState === LayoutServicePageState.Normal || pageState === LayoutServicePageState.Preview) {
|
|
18
14
|
return React.createElement(React.Fragment, null);
|
|
19
15
|
}
|
|
20
|
-
// In case of RenderingType.Component - render only the script for Design Libnrary
|
|
21
|
-
if (renderingType === RenderingType.Component) {
|
|
22
|
-
// Add cache buster to the script URL (format hh-dd-mm-yyyy, UTC)
|
|
23
|
-
const now = new Date();
|
|
24
|
-
const hour = String(now.getUTCHours()).padStart(2, '0');
|
|
25
|
-
const day = String(now.getUTCDate()).padStart(2, '0');
|
|
26
|
-
const month = String(now.getUTCMonth() + 1).padStart(2, '0');
|
|
27
|
-
const year = String(now.getUTCFullYear());
|
|
28
|
-
const cacheTimestamp = `${hour}-${day}-${month}-${year}`;
|
|
29
|
-
const scriptUrl = `${getDesignLibraryScriptLink((_a = api === null || api === void 0 ? void 0 : api.edge) === null || _a === void 0 ? void 0 : _a.edgeUrl)}?cb=${cacheTimestamp}`;
|
|
30
|
-
return (React.createElement(React.Fragment, null,
|
|
31
|
-
React.createElement("script", { src: scriptUrl, suppressHydrationWarning: true })));
|
|
32
|
-
}
|
|
33
16
|
if (editMode === EditMode.Metadata) {
|
|
34
17
|
const jssClientData = Object.assign(Object.assign({}, clientData), getJssPagesClientData());
|
|
35
18
|
return (React.createElement(React.Fragment, null, clientScripts === null || clientScripts === void 0 ? void 0 :
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { RenderingType } from '@sitecore-jss/sitecore-jss/layout';
|
|
3
2
|
import { useSitecoreContext } from './withSitecoreContext';
|
|
4
3
|
export const DefaultEditingError = () => (React.createElement("div", { className: "sc-jss-editing-error", role: "alert" }, "Datasource is required. Please choose a content item for this component."));
|
|
5
4
|
/**
|
|
@@ -15,9 +14,7 @@ export function withDatasourceCheck(options) {
|
|
|
15
14
|
var _a, _b;
|
|
16
15
|
const { sitecoreContext } = useSitecoreContext();
|
|
17
16
|
const EditingError = (_a = options === null || options === void 0 ? void 0 : options.editingErrorComponent) !== null && _a !== void 0 ? _a : DefaultEditingError;
|
|
18
|
-
|
|
19
|
-
const isDesignLibrary = (sitecoreContext === null || sitecoreContext === void 0 ? void 0 : sitecoreContext.renderingType) === RenderingType.Component;
|
|
20
|
-
return isDesignLibrary || ((_b = props.rendering) === null || _b === void 0 ? void 0 : _b.dataSource) ? (React.createElement(Component, Object.assign({}, props))) : sitecoreContext.pageEditing ? (React.createElement(EditingError, null)) : null;
|
|
17
|
+
return ((_b = props.rendering) === null || _b === void 0 ? void 0 : _b.dataSource) ? (React.createElement(Component, Object.assign({}, props))) : sitecoreContext.pageEditing ? (React.createElement(EditingError, null)) : null;
|
|
21
18
|
};
|
|
22
19
|
};
|
|
23
20
|
}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { constants, enableDebug, ClientError, MemoryCacheClient, NativeDataFetcher, } from '@sitecore-jss/sitecore-jss';
|
|
2
2
|
export { isEditorActive, resetEditorChromes, DefaultEditFrameButton, DefaultEditFrameButtons, } from '@sitecore-jss/sitecore-jss/editing';
|
|
3
|
-
export { getContentStylesheetLink,
|
|
3
|
+
export { getContentStylesheetLink, LayoutServicePageState, GraphQLLayoutService, RestLayoutService, getChildPlaceholder, getFieldValue, EditMode, } from '@sitecore-jss/sitecore-jss/layout';
|
|
4
4
|
export { trackingApi, } from '@sitecore-jss/sitecore-jss/tracking';
|
|
5
5
|
export { GraphQLDictionaryService, RestDictionaryService, } from '@sitecore-jss/sitecore-jss/i18n';
|
|
6
6
|
export { DefaultRetryStrategy, GraphQLRequestClient, } from '@sitecore-jss/sitecore-jss/graphql';
|
|
@@ -10,7 +10,6 @@ export { Image, getEEMarkup, } from './components/Image';
|
|
|
10
10
|
export { RichText } from './components/RichText';
|
|
11
11
|
export { Text } from './components/Text';
|
|
12
12
|
export { DateField } from './components/Date';
|
|
13
|
-
export { DesignLibrary } from './components/DesignLibrary';
|
|
14
13
|
export { Link } from './components/Link';
|
|
15
14
|
export { File } from './components/File';
|
|
16
15
|
export { VisitorIdentification } from './components/VisitorIdentification';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sitecore-jss/sitecore-jss-react",
|
|
3
|
-
"version": "23.0.0-canary.
|
|
3
|
+
"version": "23.0.0-canary.14",
|
|
4
4
|
"main": "dist/cjs/index.js",
|
|
5
5
|
"module": "dist/esm/index.js",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -58,13 +58,13 @@
|
|
|
58
58
|
"react-dom": "^19.1.0"
|
|
59
59
|
},
|
|
60
60
|
"dependencies": {
|
|
61
|
-
"@sitecore-jss/sitecore-jss": "23.0.0-canary.
|
|
61
|
+
"@sitecore-jss/sitecore-jss": "23.0.0-canary.14",
|
|
62
62
|
"fast-deep-equal": "^3.1.3",
|
|
63
63
|
"style-attr": "^1.3.0"
|
|
64
64
|
},
|
|
65
65
|
"description": "",
|
|
66
66
|
"types": "types/index.d.ts",
|
|
67
|
-
"gitHead": "
|
|
67
|
+
"gitHead": "aae779b21fa2426c743370d4e6df5737188f5204",
|
|
68
68
|
"files": [
|
|
69
69
|
"dist",
|
|
70
70
|
"types"
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { JSX } from 'react';
|
|
2
2
|
/**
|
|
3
3
|
* - Renders client scripts and data for editing/preview mode for Pages
|
|
4
|
-
*
|
|
5
|
-
* This script is only rendered when EditMode is Metadata or RenderingType is `component`, otherwise it renders nothing.
|
|
4
|
+
* This script is only rendered when EditMode is Metadata, otherwise it renders nothing.
|
|
6
5
|
* @returns A JSX element containing the editing scripts or an empty fragment if not in editing/preview mode.
|
|
7
6
|
*/
|
|
8
7
|
export declare const EditingScripts: () => JSX.Element;
|
package/types/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { constants, enableDebug, ClientError, CacheClient, CacheOptions, MemoryCacheClient, HttpDataFetcher, NativeDataFetcher, NativeDataFetcherError, NativeDataFetcherResponse, NativeDataFetcherConfig, } from '@sitecore-jss/sitecore-jss';
|
|
2
2
|
export { EnhancedOmit } from '@sitecore-jss/sitecore-jss/utils';
|
|
3
3
|
export { isEditorActive, resetEditorChromes, DefaultEditFrameButton, DefaultEditFrameButtons, EditFrameDataSource, FieldEditButton, WebEditButton, EditButtonTypes, } from '@sitecore-jss/sitecore-jss/editing';
|
|
4
|
-
export { getContentStylesheetLink,
|
|
4
|
+
export { getContentStylesheetLink, LayoutService, LayoutServiceData, LayoutServicePageState, LayoutServiceContext, LayoutServiceContextData, GraphQLLayoutService, RestLayoutService, RouteData, Field, Item, HtmlElementRendering, getChildPlaceholder, getFieldValue, ComponentRendering, ComponentFields, ComponentParams, EditMode, } from '@sitecore-jss/sitecore-jss/layout';
|
|
5
5
|
export { trackingApi, TrackingRequestOptions, CampaignInstance, GoalInstance, OutcomeInstance, EventInstance, PageViewInstance, } from '@sitecore-jss/sitecore-jss/tracking';
|
|
6
6
|
export { DictionaryPhrases, DictionaryService, GraphQLDictionaryService, RestDictionaryService, } from '@sitecore-jss/sitecore-jss/i18n';
|
|
7
7
|
export { GraphQLClientError, RetryStrategy, DefaultRetryStrategy, GraphQLRequestClientFactoryConfig, GraphQLRequestClient, } from '@sitecore-jss/sitecore-jss/graphql';
|
|
@@ -12,7 +12,6 @@ export { Image, ImageProps, ImageField, getEEMarkup, ImageFieldValue, ImageSizeP
|
|
|
12
12
|
export { RichText, RichTextProps, RichTextField } from './components/RichText';
|
|
13
13
|
export { Text, TextField } from './components/Text';
|
|
14
14
|
export { DateField, DateFieldProps } from './components/Date';
|
|
15
|
-
export { DesignLibrary } from './components/DesignLibrary';
|
|
16
15
|
export { Link, LinkField, LinkFieldValue, LinkProps } from './components/Link';
|
|
17
16
|
export { File, FileField } from './components/File';
|
|
18
17
|
export { VisitorIdentification } from './components/VisitorIdentification';
|
|
@@ -1,72 +0,0 @@
|
|
|
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.DesignLibrary = 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 DesignLibrary = (layoutData) => {
|
|
32
|
-
const { route } = layoutData.sitecore;
|
|
33
|
-
const isDesignLibrary = layoutData.sitecore.context.renderingType === layout_1.RenderingType.Component;
|
|
34
|
-
if (!isDesignLibrary) {
|
|
35
|
-
return react_1.default.createElement(react_1.default.Fragment, null);
|
|
36
|
-
}
|
|
37
|
-
const [renderKey, setRenderKey] = (0, react_1.useState)(0);
|
|
38
|
-
const [rootUpdate, setRootUpdate] = (0, react_1.useState)(null);
|
|
39
|
-
const rootComponent = route === null || route === void 0 ? void 0 : route.placeholders[layout_1.EDITING_COMPONENT_PLACEHOLDER][0];
|
|
40
|
-
// useEffect may execute multiple times on single render (i.e. in dev) - but we only want to fire ready event once
|
|
41
|
-
let componentReady = false;
|
|
42
|
-
// have an up-to-date layout state between re-renders (SSR re-render excluded)
|
|
43
|
-
const persistedRoot = (0, react_1.useMemo)(() => (Object.assign(Object.assign({}, (rootComponent || {})), rootUpdate)), [
|
|
44
|
-
rootComponent,
|
|
45
|
-
rootUpdate,
|
|
46
|
-
]);
|
|
47
|
-
route.placeholders[layout_1.EDITING_COMPONENT_PLACEHOLDER][0] = persistedRoot;
|
|
48
|
-
(0, react_1.useEffect)(() => {
|
|
49
|
-
// useEffect will fire when components are ready - and we inform the whole wide world of it too
|
|
50
|
-
if (!componentReady) {
|
|
51
|
-
componentReady = true;
|
|
52
|
-
window.top.postMessage((0, editing_1.getDesignLibraryStatusEvent)(editing_1.DesignLibraryStatus.READY, rootComponent.uid), '*');
|
|
53
|
-
}
|
|
54
|
-
const unsubscribe = (0, editing_1.addComponentUpdateHandler)(persistedRoot, (updatedRoot) => {
|
|
55
|
-
setRootUpdate(Object.assign({}, updatedRoot));
|
|
56
|
-
setRenderKey((key) => key + 1);
|
|
57
|
-
});
|
|
58
|
-
// useEffect will cleanup event handler on re-render
|
|
59
|
-
return unsubscribe;
|
|
60
|
-
}, []);
|
|
61
|
-
(0, react_1.useEffect)(() => {
|
|
62
|
-
// Send a rendered event only as effect of a component update command
|
|
63
|
-
if (renderKey === 0) {
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
window.top.postMessage((0, editing_1.getDesignLibraryStatusEvent)(editing_1.DesignLibraryStatus.RENDERED, rootComponent.uid), '*');
|
|
67
|
-
}, [renderKey, rootComponent.uid]);
|
|
68
|
-
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
69
|
-
react_1.default.createElement("main", null,
|
|
70
|
-
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 }))))));
|
|
71
|
-
};
|
|
72
|
-
exports.DesignLibrary = DesignLibrary;
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import React, { useEffect, useMemo, useState } from 'react';
|
|
2
|
-
import { Placeholder } from './Placeholder';
|
|
3
|
-
import { EDITING_COMPONENT_ID, EDITING_COMPONENT_PLACEHOLDER, RenderingType, } from '@sitecore-jss/sitecore-jss/layout';
|
|
4
|
-
import { DesignLibraryStatus, getDesignLibraryStatusEvent, addComponentUpdateHandler, } from '@sitecore-jss/sitecore-jss/editing';
|
|
5
|
-
export const DesignLibrary = (layoutData) => {
|
|
6
|
-
const { route } = layoutData.sitecore;
|
|
7
|
-
const isDesignLibrary = layoutData.sitecore.context.renderingType === RenderingType.Component;
|
|
8
|
-
if (!isDesignLibrary) {
|
|
9
|
-
return React.createElement(React.Fragment, null);
|
|
10
|
-
}
|
|
11
|
-
const [renderKey, setRenderKey] = useState(0);
|
|
12
|
-
const [rootUpdate, setRootUpdate] = useState(null);
|
|
13
|
-
const rootComponent = route === null || route === void 0 ? void 0 : route.placeholders[EDITING_COMPONENT_PLACEHOLDER][0];
|
|
14
|
-
// useEffect may execute multiple times on single render (i.e. in dev) - but we only want to fire ready event once
|
|
15
|
-
let componentReady = false;
|
|
16
|
-
// have an up-to-date layout state between re-renders (SSR re-render excluded)
|
|
17
|
-
const persistedRoot = useMemo(() => (Object.assign(Object.assign({}, (rootComponent || {})), rootUpdate)), [
|
|
18
|
-
rootComponent,
|
|
19
|
-
rootUpdate,
|
|
20
|
-
]);
|
|
21
|
-
route.placeholders[EDITING_COMPONENT_PLACEHOLDER][0] = persistedRoot;
|
|
22
|
-
useEffect(() => {
|
|
23
|
-
// useEffect will fire when components are ready - and we inform the whole wide world of it too
|
|
24
|
-
if (!componentReady) {
|
|
25
|
-
componentReady = true;
|
|
26
|
-
window.top.postMessage(getDesignLibraryStatusEvent(DesignLibraryStatus.READY, rootComponent.uid), '*');
|
|
27
|
-
}
|
|
28
|
-
const unsubscribe = addComponentUpdateHandler(persistedRoot, (updatedRoot) => {
|
|
29
|
-
setRootUpdate(Object.assign({}, updatedRoot));
|
|
30
|
-
setRenderKey((key) => key + 1);
|
|
31
|
-
});
|
|
32
|
-
// useEffect will cleanup event handler on re-render
|
|
33
|
-
return unsubscribe;
|
|
34
|
-
}, []);
|
|
35
|
-
useEffect(() => {
|
|
36
|
-
// Send a rendered event only as effect of a component update command
|
|
37
|
-
if (renderKey === 0) {
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
window.top.postMessage(getDesignLibraryStatusEvent(DesignLibraryStatus.RENDERED, rootComponent.uid), '*');
|
|
41
|
-
}, [renderKey, rootComponent.uid]);
|
|
42
|
-
return (React.createElement(React.Fragment, null,
|
|
43
|
-
React.createElement("main", null,
|
|
44
|
-
React.createElement("div", { id: EDITING_COMPONENT_ID }, route && (React.createElement(Placeholder, { name: EDITING_COMPONENT_PLACEHOLDER, rendering: route, key: renderKey }))))));
|
|
45
|
-
};
|