@sitecore-jss/sitecore-jss-nextjs 22.4.0-canary.9 → 22.4.1-canary.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/editing/editing-data-service.js +1 -1
- package/dist/cjs/editing/editing-render-middleware.js +21 -58
- package/dist/cjs/editing/index.js +1 -6
- package/dist/cjs/editing/render-middleware.js +8 -6
- package/dist/cjs/index.js +2 -6
- package/dist/esm/editing/editing-data-service.js +2 -2
- package/dist/esm/editing/editing-render-middleware.js +22 -58
- package/dist/esm/editing/index.js +1 -2
- package/dist/esm/editing/render-middleware.js +8 -6
- package/dist/esm/index.js +2 -3
- package/package.json +5 -5
- package/types/editing/editing-data-service.d.ts +5 -5
- package/types/editing/editing-render-middleware.d.ts +7 -28
- package/types/editing/index.d.ts +1 -2
- package/types/editing/render-middleware.d.ts +1 -1
- package/types/index.d.ts +2 -3
|
@@ -90,7 +90,7 @@ class ServerlessEditingDataService {
|
|
|
90
90
|
if (!this.apiRoute.includes('[key]')) {
|
|
91
91
|
throw new Error(`The specified apiRoute '${this.apiRoute}' is missing '[key]'.`);
|
|
92
92
|
}
|
|
93
|
-
this.dataFetcher = (_b = config === null || config === void 0 ? void 0 : config.dataFetcher) !== null && _b !== void 0 ? _b : new sitecore_jss_1.
|
|
93
|
+
this.dataFetcher = (_b = config === null || config === void 0 ? void 0 : config.dataFetcher) !== null && _b !== void 0 ? _b : new sitecore_jss_1.NativeDataFetcher({ debugger: sitecore_jss_1.debug.editing });
|
|
94
94
|
}
|
|
95
95
|
/**
|
|
96
96
|
* Stores Sitecore editor payload data for later retrieval by key
|
|
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.EditingRenderMiddleware = exports.MetadataHandler = exports.
|
|
12
|
+
exports.EditingRenderMiddleware = exports.MetadataHandler = exports.isEditingMetadataPreviewData = exports.ChromesHandler = void 0;
|
|
13
13
|
const constants_1 = require("next/constants");
|
|
14
14
|
const sitecore_jss_1 = require("@sitecore-jss/sitecore-jss");
|
|
15
15
|
const layout_1 = require("@sitecore-jss/sitecore-jss/layout");
|
|
@@ -52,7 +52,7 @@ class ChromesHandler extends render_middleware_1.RenderMiddlewareBase {
|
|
|
52
52
|
return `${process.env.VERCEL ? 'https' : 'http'}://${req.headers.host}`;
|
|
53
53
|
};
|
|
54
54
|
this.editingDataService = (_a = config === null || config === void 0 ? void 0 : config.editingDataService) !== null && _a !== void 0 ? _a : editing_data_service_1.editingDataService;
|
|
55
|
-
this.dataFetcher = (_b = config === null || config === void 0 ? void 0 : config.dataFetcher) !== null && _b !== void 0 ? _b : new sitecore_jss_1.
|
|
55
|
+
this.dataFetcher = (_b = config === null || config === void 0 ? void 0 : config.dataFetcher) !== null && _b !== void 0 ? _b : new sitecore_jss_1.NativeDataFetcher({ debugger: sitecore_jss_1.debug.editing });
|
|
56
56
|
this.resolvePageUrl = (_c = config === null || config === void 0 ? void 0 : config.resolvePageUrl) !== null && _c !== void 0 ? _c : this.defaultResolvePageUrl;
|
|
57
57
|
this.resolveServerUrl = (_d = config === null || config === void 0 ? void 0 : config.resolveServerUrl) !== null && _d !== void 0 ? _d : this.defaultResolveServerUrl;
|
|
58
58
|
}
|
|
@@ -79,7 +79,7 @@ class ChromesHandler extends render_middleware_1.RenderMiddlewareBase {
|
|
|
79
79
|
const cookies = res.getHeader('Set-Cookie');
|
|
80
80
|
headers.cookie = `${headers.cookie ? headers.cookie + ';' : ''}${cookies.join(';')}`;
|
|
81
81
|
// Make actual render request for page route, passing on preview cookies as well as any approved query string parameters.
|
|
82
|
-
// Note timestamp effectively disables caching the request
|
|
82
|
+
// Note timestamp effectively disables caching the request (no amount of cache headers seemed to do it)
|
|
83
83
|
sitecore_jss_1.debug.editing('fetching page route for %s', editingData.path);
|
|
84
84
|
const requestUrl = new URL(this.resolvePageUrl({ serverUrl, itemPath: editingData.path }));
|
|
85
85
|
for (const key in params) {
|
|
@@ -125,8 +125,7 @@ class ChromesHandler extends render_middleware_1.RenderMiddlewareBase {
|
|
|
125
125
|
catch (err) {
|
|
126
126
|
const error = err;
|
|
127
127
|
console.error(error);
|
|
128
|
-
if (error.response
|
|
129
|
-
// Axios error, which could mean the server or page URL isn't quite right, so provide a more helpful hint
|
|
128
|
+
if (error.response) {
|
|
130
129
|
console.info(
|
|
131
130
|
// eslint-disable-next-line quotes
|
|
132
131
|
"Hint: for non-standard server or Next.js route configurations, you may need to override the 'resolveServerUrl' or 'resolvePageUrl' available on the 'EditingRenderMiddleware' config.");
|
|
@@ -184,19 +183,6 @@ const isEditingMetadataPreviewData = (data) => {
|
|
|
184
183
|
data.editMode === layout_1.EditMode.Metadata);
|
|
185
184
|
};
|
|
186
185
|
exports.isEditingMetadataPreviewData = isEditingMetadataPreviewData;
|
|
187
|
-
/**
|
|
188
|
-
* Type guard for Component Library mode
|
|
189
|
-
* @param {object} data preview data to check
|
|
190
|
-
* @returns true if the data is EditingMetadataPreviewData
|
|
191
|
-
* @see EditingMetadataPreviewData
|
|
192
|
-
*/
|
|
193
|
-
const isComponentLibraryPreviewData = (data) => {
|
|
194
|
-
return (typeof data === 'object' &&
|
|
195
|
-
data !== null &&
|
|
196
|
-
'mode' in data &&
|
|
197
|
-
data.mode === 'library');
|
|
198
|
-
};
|
|
199
|
-
exports.isComponentLibraryPreviewData = isComponentLibraryPreviewData;
|
|
200
186
|
/**
|
|
201
187
|
* Handler for the Editing Metadata GET requests.
|
|
202
188
|
* This handler is responsible for redirecting the request to the page route.
|
|
@@ -210,17 +196,13 @@ class MetadataHandler {
|
|
|
210
196
|
var _a, _b, _c;
|
|
211
197
|
const { query } = req;
|
|
212
198
|
const startTimestamp = Date.now();
|
|
213
|
-
const
|
|
214
|
-
const metadataDefaultRequiredParams = ['sc_site', 'sc_itemid', 'sc_lang', 'route', 'mode'];
|
|
215
|
-
const metadataComponentRequiredParams = [
|
|
199
|
+
const requiredQueryParams = [
|
|
216
200
|
'sc_site',
|
|
217
201
|
'sc_itemid',
|
|
218
|
-
'sc_renderingId',
|
|
219
|
-
'sc_uid',
|
|
220
202
|
'sc_lang',
|
|
203
|
+
'route',
|
|
221
204
|
'mode',
|
|
222
205
|
];
|
|
223
|
-
const requiredQueryParams = mode === 'library' ? metadataComponentRequiredParams : metadataDefaultRequiredParams;
|
|
224
206
|
const missingQueryParams = requiredQueryParams.filter((param) => !query[param]);
|
|
225
207
|
// Validate query parameters
|
|
226
208
|
if (missingQueryParams.length) {
|
|
@@ -229,40 +211,21 @@ class MetadataHandler {
|
|
|
229
211
|
html: `<html><body>Missing required query parameters: ${missingQueryParams.join(', ')}</body></html>`,
|
|
230
212
|
});
|
|
231
213
|
}
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
query.
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
});
|
|
248
|
-
}
|
|
249
|
-
else {
|
|
250
|
-
res.setPreviewData({
|
|
251
|
-
site: query.sc_site,
|
|
252
|
-
itemId: query.sc_itemid,
|
|
253
|
-
language: query.sc_lang,
|
|
254
|
-
// for sc_variantId we may employ multiple variants (page-layout + component level)
|
|
255
|
-
variantIds: ((_a = query.sc_variant) === null || _a === void 0 ? void 0 : _a.split(',')) || [personalize_1.DEFAULT_VARIANT],
|
|
256
|
-
version: query.sc_version,
|
|
257
|
-
editMode: layout_1.EditMode.Metadata,
|
|
258
|
-
pageState: query.mode,
|
|
259
|
-
layoutKind: query.sc_layoutKind,
|
|
260
|
-
},
|
|
261
|
-
// Cache the preview data for 3 seconds to ensure the page is rendered with the correct preview data not the cached one
|
|
262
|
-
{
|
|
263
|
-
maxAge: 3,
|
|
264
|
-
});
|
|
265
|
-
}
|
|
214
|
+
res.setPreviewData({
|
|
215
|
+
site: query.sc_site,
|
|
216
|
+
itemId: query.sc_itemid,
|
|
217
|
+
language: query.sc_lang,
|
|
218
|
+
// for sc_variantId we may employ multiple variants (page-layout + component level)
|
|
219
|
+
variantIds: ((_a = query.sc_variant) === null || _a === void 0 ? void 0 : _a.split(',')) || [personalize_1.DEFAULT_VARIANT],
|
|
220
|
+
version: query.sc_version,
|
|
221
|
+
editMode: layout_1.EditMode.Metadata,
|
|
222
|
+
pageState: query.mode,
|
|
223
|
+
layoutKind: query.sc_layoutKind,
|
|
224
|
+
},
|
|
225
|
+
// Cache the preview data for 3 seconds to ensure the page is rendered with the correct preview data not the cached one
|
|
226
|
+
{
|
|
227
|
+
maxAge: 3,
|
|
228
|
+
});
|
|
266
229
|
// Cookies with the SameSite=Lax policy set by Next.js setPreviewData function causes CORS issue
|
|
267
230
|
// when Next.js preview mode is activated, resulting the page to render in normal mode instead.
|
|
268
231
|
// By replacing it with "SameSite=None; Secure", we ensure cookies are correctly sent with
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.EditingConfigMiddleware = exports.FEAASRenderMiddleware = exports.VercelEditingDataCache = exports.editingDataService = exports.ServerlessEditingDataService = exports.BasicEditingDataService = exports.isEditingMetadataPreviewData = exports.EditingRenderMiddleware = exports.EditingDataMiddleware = exports.EditingDataDiskCache = exports.GraphQLEditingService = void 0;
|
|
4
4
|
var editing_1 = require("@sitecore-jss/sitecore-jss/editing");
|
|
5
5
|
Object.defineProperty(exports, "GraphQLEditingService", { enumerable: true, get: function () { return editing_1.GraphQLEditingService; } });
|
|
6
6
|
var editing_data_cache_1 = require("./editing-data-cache");
|
|
@@ -10,7 +10,6 @@ Object.defineProperty(exports, "EditingDataMiddleware", { enumerable: true, get:
|
|
|
10
10
|
var editing_render_middleware_1 = require("./editing-render-middleware");
|
|
11
11
|
Object.defineProperty(exports, "EditingRenderMiddleware", { enumerable: true, get: function () { return editing_render_middleware_1.EditingRenderMiddleware; } });
|
|
12
12
|
Object.defineProperty(exports, "isEditingMetadataPreviewData", { enumerable: true, get: function () { return editing_render_middleware_1.isEditingMetadataPreviewData; } });
|
|
13
|
-
Object.defineProperty(exports, "isComponentLibraryPreviewData", { enumerable: true, get: function () { return editing_render_middleware_1.isComponentLibraryPreviewData; } });
|
|
14
13
|
var editing_data_service_1 = require("./editing-data-service");
|
|
15
14
|
Object.defineProperty(exports, "BasicEditingDataService", { enumerable: true, get: function () { return editing_data_service_1.BasicEditingDataService; } });
|
|
16
15
|
Object.defineProperty(exports, "ServerlessEditingDataService", { enumerable: true, get: function () { return editing_data_service_1.ServerlessEditingDataService; } });
|
|
@@ -21,7 +20,3 @@ var feaas_render_middleware_1 = require("./feaas-render-middleware");
|
|
|
21
20
|
Object.defineProperty(exports, "FEAASRenderMiddleware", { enumerable: true, get: function () { return feaas_render_middleware_1.FEAASRenderMiddleware; } });
|
|
22
21
|
var editing_config_middleware_1 = require("./editing-config-middleware");
|
|
23
22
|
Object.defineProperty(exports, "EditingConfigMiddleware", { enumerable: true, get: function () { return editing_config_middleware_1.EditingConfigMiddleware; } });
|
|
24
|
-
var layout_1 = require("@sitecore-jss/sitecore-jss/layout");
|
|
25
|
-
Object.defineProperty(exports, "RenderingType", { enumerable: true, get: function () { return layout_1.RenderingType; } });
|
|
26
|
-
Object.defineProperty(exports, "EDITING_COMPONENT_PLACEHOLDER", { enumerable: true, get: function () { return layout_1.EDITING_COMPONENT_PLACEHOLDER; } });
|
|
27
|
-
Object.defineProperty(exports, "EDITING_COMPONENT_ID", { enumerable: true, get: function () { return layout_1.EDITING_COMPONENT_ID; } });
|
|
@@ -28,13 +28,15 @@ class RenderMiddlewareBase {
|
|
|
28
28
|
* @returns Object of approved headers
|
|
29
29
|
*/
|
|
30
30
|
this.getHeadersForPropagation = (headers) => {
|
|
31
|
-
|
|
32
|
-
constants_1.EDITING_PASS_THROUGH_HEADERS.
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
// Filter and normalize headers
|
|
32
|
+
const filteredHeaders = constants_1.EDITING_PASS_THROUGH_HEADERS.reduce((acc, header) => {
|
|
33
|
+
const value = headers[header];
|
|
34
|
+
if (value) {
|
|
35
|
+
acc[header] = Array.isArray(value) ? value.join(', ') : value;
|
|
35
36
|
}
|
|
36
|
-
|
|
37
|
-
|
|
37
|
+
return acc;
|
|
38
|
+
}, {});
|
|
39
|
+
return filteredHeaders;
|
|
38
40
|
};
|
|
39
41
|
}
|
|
40
42
|
}
|
package/dist/cjs/index.js
CHANGED
|
@@ -23,11 +23,10 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.EditFrame = exports.DateField = exports.Text = exports.Image = exports.ComponentBuilder = exports.BYOCWrapper = exports.FEaaSWrapper = exports.NextImage = exports.Placeholder = exports.RichText = exports.Link = exports.useComponentProps = exports.ComponentPropsContext = exports.ComponentPropsReactContext = exports.normalizeSiteRewrite = exports.getSiteRewriteData = exports.getSiteRewrite = exports.GraphQLSiteInfoService = exports.SiteResolver = exports.GraphQLRobotsService = exports.GraphQLErrorPagesService = exports.GraphQLSitemapXmlService = exports.MultisiteGraphQLSitemapService = exports.GraphQLSitemapService = exports.DisconnectedSitemapService = exports.ComponentPropsService = exports.CdpHelper = exports.normalizePersonalizedRewrite = exports.getGroomedVariantIds = exports.getPersonalizedRewriteData = exports.getPersonalizedRewrite = exports.personalizeLayout = exports.RestDictionaryService = exports.GraphQLDictionaryService = exports.trackingApi = exports.mediaApi = exports.
|
|
27
|
-
exports.EditingScripts = exports.withEmptyFieldEditingComponent = exports.withFieldMetadata = exports.withDatasourceCheck = exports.withPlaceholder = exports.withEditorChromes = exports.useSitecoreContext = exports.withSitecoreContext = exports.SitecoreContextReactContext = exports.SitecoreContext = exports.VisitorIdentification = exports.DefaultEmptyFieldEditingComponentText = exports.DefaultEmptyFieldEditingComponentImage = exports.
|
|
26
|
+
exports.fetchFEaaSComponentServerProps = exports.FEaaSComponent = exports.EditFrame = exports.DateField = exports.Text = exports.Image = exports.ComponentBuilder = exports.BYOCWrapper = exports.FEaaSWrapper = exports.NextImage = exports.Placeholder = exports.RichText = exports.Link = exports.useComponentProps = exports.ComponentPropsContext = exports.ComponentPropsReactContext = exports.normalizeSiteRewrite = exports.getSiteRewriteData = exports.getSiteRewrite = exports.GraphQLSiteInfoService = exports.SiteResolver = exports.GraphQLRobotsService = exports.GraphQLErrorPagesService = exports.GraphQLSitemapXmlService = exports.MultisiteGraphQLSitemapService = exports.GraphQLSitemapService = exports.DisconnectedSitemapService = exports.ComponentPropsService = exports.CdpHelper = exports.normalizePersonalizedRewrite = exports.getGroomedVariantIds = exports.getPersonalizedRewriteData = exports.getPersonalizedRewrite = exports.personalizeLayout = exports.RestDictionaryService = exports.GraphQLDictionaryService = exports.trackingApi = exports.mediaApi = exports.EditMode = exports.getContentStylesheetLink = exports.getFieldValue = exports.getChildPlaceholder = exports.RestLayoutService = exports.GraphQLLayoutService = exports.LayoutServicePageState = exports.MemoryCacheClient = exports.debug = exports.enableDebug = exports.NativeDataFetcher = exports.constants = void 0;
|
|
27
|
+
exports.EditingScripts = exports.withEmptyFieldEditingComponent = exports.withFieldMetadata = exports.withDatasourceCheck = exports.withPlaceholder = exports.withEditorChromes = exports.useSitecoreContext = exports.withSitecoreContext = exports.SitecoreContextReactContext = exports.SitecoreContext = exports.VisitorIdentification = exports.DefaultEmptyFieldEditingComponentText = exports.DefaultEmptyFieldEditingComponentImage = exports.File = exports.getComponentLibraryStylesheetLinks = exports.BYOCComponent = void 0;
|
|
28
28
|
var sitecore_jss_1 = require("@sitecore-jss/sitecore-jss");
|
|
29
29
|
Object.defineProperty(exports, "constants", { enumerable: true, get: function () { return sitecore_jss_1.constants; } });
|
|
30
|
-
Object.defineProperty(exports, "AxiosDataFetcher", { enumerable: true, get: function () { return sitecore_jss_1.AxiosDataFetcher; } });
|
|
31
30
|
Object.defineProperty(exports, "NativeDataFetcher", { enumerable: true, get: function () { return sitecore_jss_1.NativeDataFetcher; } });
|
|
32
31
|
Object.defineProperty(exports, "enableDebug", { enumerable: true, get: function () { return sitecore_jss_1.enableDebug; } });
|
|
33
32
|
Object.defineProperty(exports, "debug", { enumerable: true, get: function () { return sitecore_jss_1.debug; } });
|
|
@@ -40,8 +39,6 @@ Object.defineProperty(exports, "getChildPlaceholder", { enumerable: true, get: f
|
|
|
40
39
|
Object.defineProperty(exports, "getFieldValue", { enumerable: true, get: function () { return layout_1.getFieldValue; } });
|
|
41
40
|
Object.defineProperty(exports, "getContentStylesheetLink", { enumerable: true, get: function () { return layout_1.getContentStylesheetLink; } });
|
|
42
41
|
Object.defineProperty(exports, "EditMode", { enumerable: true, get: function () { return layout_1.EditMode; } });
|
|
43
|
-
var editing_1 = require("@sitecore-jss/sitecore-jss/editing");
|
|
44
|
-
Object.defineProperty(exports, "RestComponentLayoutService", { enumerable: true, get: function () { return editing_1.RestComponentLayoutService; } });
|
|
45
42
|
var media_1 = require("@sitecore-jss/sitecore-jss/media");
|
|
46
43
|
Object.defineProperty(exports, "mediaApi", { enumerable: true, get: function () { return media_1.mediaApi; } });
|
|
47
44
|
var tracking_1 = require("@sitecore-jss/sitecore-jss/tracking");
|
|
@@ -101,7 +98,6 @@ Object.defineProperty(exports, "fetchFEaaSComponentServerProps", { enumerable: t
|
|
|
101
98
|
Object.defineProperty(exports, "BYOCComponent", { enumerable: true, get: function () { return sitecore_jss_react_1.BYOCComponent; } });
|
|
102
99
|
Object.defineProperty(exports, "getComponentLibraryStylesheetLinks", { enumerable: true, get: function () { return sitecore_jss_react_1.getComponentLibraryStylesheetLinks; } });
|
|
103
100
|
Object.defineProperty(exports, "File", { enumerable: true, get: function () { return sitecore_jss_react_1.File; } });
|
|
104
|
-
Object.defineProperty(exports, "ComponentLibraryLayout", { enumerable: true, get: function () { return sitecore_jss_react_1.ComponentLibraryLayout; } });
|
|
105
101
|
Object.defineProperty(exports, "DefaultEmptyFieldEditingComponentImage", { enumerable: true, get: function () { return sitecore_jss_react_1.DefaultEmptyFieldEditingComponentImage; } });
|
|
106
102
|
Object.defineProperty(exports, "DefaultEmptyFieldEditingComponentText", { enumerable: true, get: function () { return sitecore_jss_react_1.DefaultEmptyFieldEditingComponentText; } });
|
|
107
103
|
Object.defineProperty(exports, "VisitorIdentification", { enumerable: true, get: function () { return sitecore_jss_react_1.VisitorIdentification; } });
|
|
@@ -8,7 +8,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
import { QUERY_PARAM_EDITING_SECRET } from '@sitecore-jss/sitecore-jss/editing';
|
|
11
|
-
import {
|
|
11
|
+
import { NativeDataFetcher, debug } from '@sitecore-jss/sitecore-jss';
|
|
12
12
|
import { editingDataDiskCache } from './editing-data-cache';
|
|
13
13
|
import { getJssEditingSecret } from '../utils/utils';
|
|
14
14
|
/**
|
|
@@ -85,7 +85,7 @@ export class ServerlessEditingDataService {
|
|
|
85
85
|
if (!this.apiRoute.includes('[key]')) {
|
|
86
86
|
throw new Error(`The specified apiRoute '${this.apiRoute}' is missing '[key]'.`);
|
|
87
87
|
}
|
|
88
|
-
this.dataFetcher = (_b = config === null || config === void 0 ? void 0 : config.dataFetcher) !== null && _b !== void 0 ? _b : new
|
|
88
|
+
this.dataFetcher = (_b = config === null || config === void 0 ? void 0 : config.dataFetcher) !== null && _b !== void 0 ? _b : new NativeDataFetcher({ debugger: debug.editing });
|
|
89
89
|
}
|
|
90
90
|
/**
|
|
91
91
|
* Stores Sitecore editor payload data for later retrieval by key
|
|
@@ -8,8 +8,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
import { STATIC_PROPS_ID, SERVER_PROPS_ID } from 'next/constants';
|
|
11
|
-
import {
|
|
12
|
-
import { EditMode
|
|
11
|
+
import { NativeDataFetcher, debug } from '@sitecore-jss/sitecore-jss';
|
|
12
|
+
import { EditMode } from '@sitecore-jss/sitecore-jss/layout';
|
|
13
13
|
import { QUERY_PARAM_EDITING_SECRET, EDITING_ALLOWED_ORIGINS, } from '@sitecore-jss/sitecore-jss/editing';
|
|
14
14
|
import { editingDataService } from './editing-data-service';
|
|
15
15
|
import { getJssEditingSecret } from '../utils/utils';
|
|
@@ -49,7 +49,7 @@ export class ChromesHandler extends RenderMiddlewareBase {
|
|
|
49
49
|
return `${process.env.VERCEL ? 'https' : 'http'}://${req.headers.host}`;
|
|
50
50
|
};
|
|
51
51
|
this.editingDataService = (_a = config === null || config === void 0 ? void 0 : config.editingDataService) !== null && _a !== void 0 ? _a : editingDataService;
|
|
52
|
-
this.dataFetcher = (_b = config === null || config === void 0 ? void 0 : config.dataFetcher) !== null && _b !== void 0 ? _b : new
|
|
52
|
+
this.dataFetcher = (_b = config === null || config === void 0 ? void 0 : config.dataFetcher) !== null && _b !== void 0 ? _b : new NativeDataFetcher({ debugger: debug.editing });
|
|
53
53
|
this.resolvePageUrl = (_c = config === null || config === void 0 ? void 0 : config.resolvePageUrl) !== null && _c !== void 0 ? _c : this.defaultResolvePageUrl;
|
|
54
54
|
this.resolveServerUrl = (_d = config === null || config === void 0 ? void 0 : config.resolveServerUrl) !== null && _d !== void 0 ? _d : this.defaultResolveServerUrl;
|
|
55
55
|
}
|
|
@@ -76,7 +76,7 @@ export class ChromesHandler extends RenderMiddlewareBase {
|
|
|
76
76
|
const cookies = res.getHeader('Set-Cookie');
|
|
77
77
|
headers.cookie = `${headers.cookie ? headers.cookie + ';' : ''}${cookies.join(';')}`;
|
|
78
78
|
// Make actual render request for page route, passing on preview cookies as well as any approved query string parameters.
|
|
79
|
-
// Note timestamp effectively disables caching the request
|
|
79
|
+
// Note timestamp effectively disables caching the request (no amount of cache headers seemed to do it)
|
|
80
80
|
debug.editing('fetching page route for %s', editingData.path);
|
|
81
81
|
const requestUrl = new URL(this.resolvePageUrl({ serverUrl, itemPath: editingData.path }));
|
|
82
82
|
for (const key in params) {
|
|
@@ -122,8 +122,7 @@ export class ChromesHandler extends RenderMiddlewareBase {
|
|
|
122
122
|
catch (err) {
|
|
123
123
|
const error = err;
|
|
124
124
|
console.error(error);
|
|
125
|
-
if (error.response
|
|
126
|
-
// Axios error, which could mean the server or page URL isn't quite right, so provide a more helpful hint
|
|
125
|
+
if (error.response) {
|
|
127
126
|
console.info(
|
|
128
127
|
// eslint-disable-next-line quotes
|
|
129
128
|
"Hint: for non-standard server or Next.js route configurations, you may need to override the 'resolveServerUrl' or 'resolvePageUrl' available on the 'EditingRenderMiddleware' config.");
|
|
@@ -179,18 +178,6 @@ export const isEditingMetadataPreviewData = (data) => {
|
|
|
179
178
|
'editMode' in data &&
|
|
180
179
|
data.editMode === EditMode.Metadata);
|
|
181
180
|
};
|
|
182
|
-
/**
|
|
183
|
-
* Type guard for Component Library mode
|
|
184
|
-
* @param {object} data preview data to check
|
|
185
|
-
* @returns true if the data is EditingMetadataPreviewData
|
|
186
|
-
* @see EditingMetadataPreviewData
|
|
187
|
-
*/
|
|
188
|
-
export const isComponentLibraryPreviewData = (data) => {
|
|
189
|
-
return (typeof data === 'object' &&
|
|
190
|
-
data !== null &&
|
|
191
|
-
'mode' in data &&
|
|
192
|
-
data.mode === 'library');
|
|
193
|
-
};
|
|
194
181
|
/**
|
|
195
182
|
* Handler for the Editing Metadata GET requests.
|
|
196
183
|
* This handler is responsible for redirecting the request to the page route.
|
|
@@ -204,17 +191,13 @@ export class MetadataHandler {
|
|
|
204
191
|
var _a, _b, _c;
|
|
205
192
|
const { query } = req;
|
|
206
193
|
const startTimestamp = Date.now();
|
|
207
|
-
const
|
|
208
|
-
const metadataDefaultRequiredParams = ['sc_site', 'sc_itemid', 'sc_lang', 'route', 'mode'];
|
|
209
|
-
const metadataComponentRequiredParams = [
|
|
194
|
+
const requiredQueryParams = [
|
|
210
195
|
'sc_site',
|
|
211
196
|
'sc_itemid',
|
|
212
|
-
'sc_renderingId',
|
|
213
|
-
'sc_uid',
|
|
214
197
|
'sc_lang',
|
|
198
|
+
'route',
|
|
215
199
|
'mode',
|
|
216
200
|
];
|
|
217
|
-
const requiredQueryParams = mode === 'library' ? metadataComponentRequiredParams : metadataDefaultRequiredParams;
|
|
218
201
|
const missingQueryParams = requiredQueryParams.filter((param) => !query[param]);
|
|
219
202
|
// Validate query parameters
|
|
220
203
|
if (missingQueryParams.length) {
|
|
@@ -223,40 +206,21 @@ export class MetadataHandler {
|
|
|
223
206
|
html: `<html><body>Missing required query parameters: ${missingQueryParams.join(', ')}</body></html>`,
|
|
224
207
|
});
|
|
225
208
|
}
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
query.
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
});
|
|
242
|
-
}
|
|
243
|
-
else {
|
|
244
|
-
res.setPreviewData({
|
|
245
|
-
site: query.sc_site,
|
|
246
|
-
itemId: query.sc_itemid,
|
|
247
|
-
language: query.sc_lang,
|
|
248
|
-
// for sc_variantId we may employ multiple variants (page-layout + component level)
|
|
249
|
-
variantIds: ((_a = query.sc_variant) === null || _a === void 0 ? void 0 : _a.split(',')) || [DEFAULT_VARIANT],
|
|
250
|
-
version: query.sc_version,
|
|
251
|
-
editMode: EditMode.Metadata,
|
|
252
|
-
pageState: query.mode,
|
|
253
|
-
layoutKind: query.sc_layoutKind,
|
|
254
|
-
},
|
|
255
|
-
// Cache the preview data for 3 seconds to ensure the page is rendered with the correct preview data not the cached one
|
|
256
|
-
{
|
|
257
|
-
maxAge: 3,
|
|
258
|
-
});
|
|
259
|
-
}
|
|
209
|
+
res.setPreviewData({
|
|
210
|
+
site: query.sc_site,
|
|
211
|
+
itemId: query.sc_itemid,
|
|
212
|
+
language: query.sc_lang,
|
|
213
|
+
// for sc_variantId we may employ multiple variants (page-layout + component level)
|
|
214
|
+
variantIds: ((_a = query.sc_variant) === null || _a === void 0 ? void 0 : _a.split(',')) || [DEFAULT_VARIANT],
|
|
215
|
+
version: query.sc_version,
|
|
216
|
+
editMode: EditMode.Metadata,
|
|
217
|
+
pageState: query.mode,
|
|
218
|
+
layoutKind: query.sc_layoutKind,
|
|
219
|
+
},
|
|
220
|
+
// Cache the preview data for 3 seconds to ensure the page is rendered with the correct preview data not the cached one
|
|
221
|
+
{
|
|
222
|
+
maxAge: 3,
|
|
223
|
+
});
|
|
260
224
|
// Cookies with the SameSite=Lax policy set by Next.js setPreviewData function causes CORS issue
|
|
261
225
|
// when Next.js preview mode is activated, resulting the page to render in normal mode instead.
|
|
262
226
|
// By replacing it with "SameSite=None; Secure", we ensure cookies are correctly sent with
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
export { GraphQLEditingService } from '@sitecore-jss/sitecore-jss/editing';
|
|
2
2
|
export { EditingDataDiskCache } from './editing-data-cache';
|
|
3
3
|
export { EditingDataMiddleware } from './editing-data-middleware';
|
|
4
|
-
export { EditingRenderMiddleware, isEditingMetadataPreviewData,
|
|
4
|
+
export { EditingRenderMiddleware, isEditingMetadataPreviewData, } from './editing-render-middleware';
|
|
5
5
|
export { BasicEditingDataService, ServerlessEditingDataService, editingDataService, } from './editing-data-service';
|
|
6
6
|
export { VercelEditingDataCache } from './vercel-editing-data-cache';
|
|
7
7
|
export { FEAASRenderMiddleware } from './feaas-render-middleware';
|
|
8
8
|
export { EditingConfigMiddleware, } from './editing-config-middleware';
|
|
9
|
-
export { RenderingType, EDITING_COMPONENT_PLACEHOLDER, EDITING_COMPONENT_ID, } from '@sitecore-jss/sitecore-jss/layout';
|
|
@@ -25,13 +25,15 @@ export class RenderMiddlewareBase {
|
|
|
25
25
|
* @returns Object of approved headers
|
|
26
26
|
*/
|
|
27
27
|
this.getHeadersForPropagation = (headers) => {
|
|
28
|
-
|
|
29
|
-
EDITING_PASS_THROUGH_HEADERS.
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
// Filter and normalize headers
|
|
29
|
+
const filteredHeaders = EDITING_PASS_THROUGH_HEADERS.reduce((acc, header) => {
|
|
30
|
+
const value = headers[header];
|
|
31
|
+
if (value) {
|
|
32
|
+
acc[header] = Array.isArray(value) ? value.join(', ') : value;
|
|
32
33
|
}
|
|
33
|
-
|
|
34
|
-
|
|
34
|
+
return acc;
|
|
35
|
+
}, {});
|
|
36
|
+
return filteredHeaders;
|
|
35
37
|
};
|
|
36
38
|
}
|
|
37
39
|
}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
export { constants,
|
|
1
|
+
export { constants, NativeDataFetcher, enableDebug, debug, MemoryCacheClient, } from '@sitecore-jss/sitecore-jss';
|
|
2
2
|
export { LayoutServicePageState, GraphQLLayoutService, RestLayoutService, getChildPlaceholder, getFieldValue, getContentStylesheetLink, EditMode, } from '@sitecore-jss/sitecore-jss/layout';
|
|
3
|
-
export { RestComponentLayoutService } from '@sitecore-jss/sitecore-jss/editing';
|
|
4
3
|
export { mediaApi } from '@sitecore-jss/sitecore-jss/media';
|
|
5
4
|
export { trackingApi, } from '@sitecore-jss/sitecore-jss/tracking';
|
|
6
5
|
export { GraphQLDictionaryService, RestDictionaryService, } from '@sitecore-jss/sitecore-jss/i18n';
|
|
@@ -20,4 +19,4 @@ import * as BYOCWrapper from './components/BYOCWrapper';
|
|
|
20
19
|
export { FEaaSWrapper };
|
|
21
20
|
export { BYOCWrapper };
|
|
22
21
|
export { ComponentBuilder } from './ComponentBuilder';
|
|
23
|
-
export { Image, Text, DateField, EditFrame, FEaaSComponent, fetchFEaaSComponentServerProps, BYOCComponent, getComponentLibraryStylesheetLinks, File,
|
|
22
|
+
export { Image, Text, DateField, EditFrame, FEaaSComponent, fetchFEaaSComponentServerProps, BYOCComponent, getComponentLibraryStylesheetLinks, File, DefaultEmptyFieldEditingComponentImage, DefaultEmptyFieldEditingComponentText, VisitorIdentification, SitecoreContext, SitecoreContextReactContext, withSitecoreContext, useSitecoreContext, withEditorChromes, withPlaceholder, withDatasourceCheck, withFieldMetadata, withEmptyFieldEditingComponent, EditingScripts, } from '@sitecore-jss/sitecore-jss-react';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sitecore-jss/sitecore-jss-nextjs",
|
|
3
|
-
"version": "22.4.
|
|
3
|
+
"version": "22.4.1-canary.1",
|
|
4
4
|
"main": "dist/cjs/index.js",
|
|
5
5
|
"module": "dist/esm/index.js",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -73,9 +73,9 @@
|
|
|
73
73
|
"react-dom": "^18.2.0"
|
|
74
74
|
},
|
|
75
75
|
"dependencies": {
|
|
76
|
-
"@sitecore-jss/sitecore-jss": "^22.4.
|
|
77
|
-
"@sitecore-jss/sitecore-jss-dev-tools": "^22.4.
|
|
78
|
-
"@sitecore-jss/sitecore-jss-react": "^22.4.
|
|
76
|
+
"@sitecore-jss/sitecore-jss": "^22.4.1-canary.1",
|
|
77
|
+
"@sitecore-jss/sitecore-jss-dev-tools": "^22.4.1-canary.1",
|
|
78
|
+
"@sitecore-jss/sitecore-jss-react": "^22.4.1-canary.1",
|
|
79
79
|
"@vercel/kv": "^0.2.1",
|
|
80
80
|
"prop-types": "^15.8.1",
|
|
81
81
|
"regex-parser": "^2.2.11",
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
},
|
|
84
84
|
"description": "",
|
|
85
85
|
"types": "types/index.d.ts",
|
|
86
|
-
"gitHead": "
|
|
86
|
+
"gitHead": "1f486f82cb985e9a78f94d58d3c5fa9ed55216dc",
|
|
87
87
|
"files": [
|
|
88
88
|
"dist",
|
|
89
89
|
"types",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NativeDataFetcher } from '@sitecore-jss/sitecore-jss';
|
|
2
2
|
import { EditingData } from './editing-data';
|
|
3
3
|
import { EditingDataCache } from './editing-data-cache';
|
|
4
4
|
import { PreviewData } from 'next';
|
|
@@ -87,11 +87,11 @@ export interface ServerlessEditingDataServiceConfig {
|
|
|
87
87
|
*/
|
|
88
88
|
apiRoute?: string;
|
|
89
89
|
/**
|
|
90
|
-
* The `
|
|
91
|
-
* @default new
|
|
92
|
-
* @see
|
|
90
|
+
* The `NativeDataFetcher` instance to use for API requests.
|
|
91
|
+
* @default new NativeDataFetcher()
|
|
92
|
+
* @see NativeDataFetcher
|
|
93
93
|
*/
|
|
94
|
-
dataFetcher?:
|
|
94
|
+
dataFetcher?: NativeDataFetcher;
|
|
95
95
|
}
|
|
96
96
|
/**
|
|
97
97
|
* Service responsible for maintaining Sitecore editor data between requests
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { NextApiRequest, NextApiResponse } from 'next';
|
|
2
|
-
import {
|
|
2
|
+
import { NativeDataFetcher } from '@sitecore-jss/sitecore-jss';
|
|
3
3
|
import { EditMode, LayoutServicePageState } from '@sitecore-jss/sitecore-jss/layout';
|
|
4
4
|
import { RenderMetadataQueryParams, LayoutKind } from '@sitecore-jss/sitecore-jss/editing';
|
|
5
5
|
import { EditingDataService } from './editing-data-service';
|
|
@@ -11,11 +11,11 @@ export type EditingRenderMiddlewareConfig = {
|
|
|
11
11
|
/**
|
|
12
12
|
* -- Edit Mode Chromes --
|
|
13
13
|
*
|
|
14
|
-
* The `
|
|
15
|
-
* @default new
|
|
16
|
-
* @see
|
|
14
|
+
* The `NativeDataFetcher` instance to use for API requests.
|
|
15
|
+
* @default new NativeDataFetcher()
|
|
16
|
+
* @see NativeDataFetcher
|
|
17
17
|
*/
|
|
18
|
-
dataFetcher?:
|
|
18
|
+
dataFetcher?: NativeDataFetcher;
|
|
19
19
|
/**
|
|
20
20
|
* -- Edit Mode Chromes --
|
|
21
21
|
*
|
|
@@ -99,7 +99,7 @@ export type EditingRenderMiddlewareMetadataConfig = Pick<EditingRenderMiddleware
|
|
|
99
99
|
/**
|
|
100
100
|
* Next.js API request with Metadata query parameters.
|
|
101
101
|
*/
|
|
102
|
-
|
|
102
|
+
type MetadataNextApiRequest = NextApiRequest & {
|
|
103
103
|
query: RenderMetadataQueryParams;
|
|
104
104
|
};
|
|
105
105
|
/**
|
|
@@ -115,21 +115,6 @@ export type EditingMetadataPreviewData = {
|
|
|
115
115
|
version?: string;
|
|
116
116
|
layoutKind?: LayoutKind;
|
|
117
117
|
};
|
|
118
|
-
/**
|
|
119
|
-
* Data for Component Library rendering mode
|
|
120
|
-
*/
|
|
121
|
-
export interface ComponentLibraryRenderPreviewData {
|
|
122
|
-
site: string;
|
|
123
|
-
itemId: string;
|
|
124
|
-
renderingId: string;
|
|
125
|
-
componentUid: string;
|
|
126
|
-
language: string;
|
|
127
|
-
pageState: LayoutServicePageState;
|
|
128
|
-
mode?: 'library';
|
|
129
|
-
variant?: string;
|
|
130
|
-
version?: string;
|
|
131
|
-
dataSourceId?: string;
|
|
132
|
-
}
|
|
133
118
|
/**
|
|
134
119
|
* Type guard for EditingMetadataPreviewData
|
|
135
120
|
* @param {object} data preview data to check
|
|
@@ -137,13 +122,6 @@ export interface ComponentLibraryRenderPreviewData {
|
|
|
137
122
|
* @see EditingMetadataPreviewData
|
|
138
123
|
*/
|
|
139
124
|
export declare const isEditingMetadataPreviewData: (data: unknown) => data is EditingMetadataPreviewData;
|
|
140
|
-
/**
|
|
141
|
-
* Type guard for Component Library mode
|
|
142
|
-
* @param {object} data preview data to check
|
|
143
|
-
* @returns true if the data is EditingMetadataPreviewData
|
|
144
|
-
* @see EditingMetadataPreviewData
|
|
145
|
-
*/
|
|
146
|
-
export declare const isComponentLibraryPreviewData: (data: unknown) => data is ComponentLibraryRenderPreviewData;
|
|
147
125
|
/**
|
|
148
126
|
* Handler for the Editing Metadata GET requests.
|
|
149
127
|
* This handler is responsible for redirecting the request to the page route.
|
|
@@ -176,3 +154,4 @@ export declare class EditingRenderMiddleware extends RenderMiddlewareBase {
|
|
|
176
154
|
getHandler(): (req: NextApiRequest, res: NextApiResponse) => Promise<void>;
|
|
177
155
|
private handler;
|
|
178
156
|
}
|
|
157
|
+
export {};
|
package/types/editing/index.d.ts
CHANGED
|
@@ -2,9 +2,8 @@ export { GraphQLEditingService } from '@sitecore-jss/sitecore-jss/editing';
|
|
|
2
2
|
export { EditingData } from './editing-data';
|
|
3
3
|
export { EditingDataCache, EditingDataDiskCache } from './editing-data-cache';
|
|
4
4
|
export { EditingDataMiddleware, EditingDataMiddlewareConfig } from './editing-data-middleware';
|
|
5
|
-
export { EditingRenderMiddleware, EditingRenderMiddlewareConfig, EditingMetadataPreviewData, isEditingMetadataPreviewData,
|
|
5
|
+
export { EditingRenderMiddleware, EditingRenderMiddlewareConfig, EditingMetadataPreviewData, isEditingMetadataPreviewData, } from './editing-render-middleware';
|
|
6
6
|
export { EditingPreviewData, EditingDataService, BasicEditingDataService, BasicEditingDataServiceConfig, ServerlessEditingDataService, ServerlessEditingDataServiceConfig, editingDataService, } from './editing-data-service';
|
|
7
7
|
export { VercelEditingDataCache } from './vercel-editing-data-cache';
|
|
8
8
|
export { FEAASRenderMiddleware, FEAASRenderMiddlewareConfig } from './feaas-render-middleware';
|
|
9
9
|
export { EditingConfigMiddleware, EditingConfigMiddlewareConfig, } from './editing-config-middleware';
|
|
10
|
-
export { RenderingType, EDITING_COMPONENT_PLACEHOLDER, EDITING_COMPONENT_ID, } from '@sitecore-jss/sitecore-jss/layout';
|
package/types/index.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
export { constants, HttpDataFetcher,
|
|
1
|
+
export { constants, HttpDataFetcher, NativeDataFetcher, NativeDataFetcherConfig, NativeDataFetcherResponse, NativeDataFetcherError, HTMLLink, enableDebug, debug, CacheClient, CacheOptions, MemoryCacheClient, } from '@sitecore-jss/sitecore-jss';
|
|
2
2
|
export { LayoutService, LayoutServiceData, LayoutServicePageState, LayoutServiceContext, LayoutServiceContextData, GraphQLLayoutService, GraphQLLayoutServiceConfig, RestLayoutService, RestLayoutServiceConfig, PlaceholderData, PlaceholdersData, RouteData, Field, Item, HtmlElementRendering, getChildPlaceholder, getFieldValue, ComponentRendering, ComponentFields, ComponentParams, getContentStylesheetLink, EditMode, } from '@sitecore-jss/sitecore-jss/layout';
|
|
3
|
-
export { RestComponentLayoutService } from '@sitecore-jss/sitecore-jss/editing';
|
|
4
3
|
export { mediaApi } from '@sitecore-jss/sitecore-jss/media';
|
|
5
4
|
export { trackingApi, TrackingRequestOptions, CampaignInstance, GoalInstance, OutcomeInstance, EventInstance, PageViewInstance, } from '@sitecore-jss/sitecore-jss/tracking';
|
|
6
5
|
export { DictionaryPhrases, DictionaryService, GraphQLDictionaryService, GraphQLDictionaryServiceConfig, RestDictionaryService, RestDictionaryServiceConfig, } from '@sitecore-jss/sitecore-jss/i18n';
|
|
@@ -23,4 +22,4 @@ import * as BYOCWrapper from './components/BYOCWrapper';
|
|
|
23
22
|
export { FEaaSWrapper };
|
|
24
23
|
export { BYOCWrapper };
|
|
25
24
|
export { ComponentBuilder, ComponentBuilderConfig } from './ComponentBuilder';
|
|
26
|
-
export { ComponentFactory, Image, ImageField, ImageFieldValue, ImageProps, LinkField, LinkFieldValue, Text, TextField, DateField, EditFrame, FEaaSComponent, FEaaSComponentProps, FEaaSComponentParams, fetchFEaaSComponentServerProps, BYOCComponentParams, BYOCComponent, BYOCComponentProps, getComponentLibraryStylesheetLinks, File, FileField, RichTextField,
|
|
25
|
+
export { ComponentFactory, Image, ImageField, ImageFieldValue, ImageProps, LinkField, LinkFieldValue, Text, TextField, DateField, EditFrame, FEaaSComponent, FEaaSComponentProps, FEaaSComponentParams, fetchFEaaSComponentServerProps, BYOCComponentParams, BYOCComponent, BYOCComponentProps, getComponentLibraryStylesheetLinks, File, FileField, RichTextField, DefaultEmptyFieldEditingComponentImage, DefaultEmptyFieldEditingComponentText, VisitorIdentification, PlaceholderComponentProps, SitecoreContext, SitecoreContextState, SitecoreContextValue, SitecoreContextReactContext, withSitecoreContext, useSitecoreContext, withEditorChromes, withPlaceholder, withDatasourceCheck, ImageSizeParameters, WithSitecoreContextOptions, WithSitecoreContextProps, WithSitecoreContextHocProps, withFieldMetadata, withEmptyFieldEditingComponent, EditingScripts, } from '@sitecore-jss/sitecore-jss-react';
|