@sitecore-jss/sitecore-jss-react 22.2.0-canary.9 → 22.2.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.
@@ -7,6 +7,7 @@ exports.EditingScripts = void 0;
7
7
  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
+ const editing_1 = require("@sitecore-jss/sitecore-jss/editing");
10
11
  /**
11
12
  * Renders client scripts and data for editing/preview mode in Pages.
12
13
  * This script is only rendered when EditMode is Metadata, otherwise it renders nothing.
@@ -17,10 +18,10 @@ const EditingScripts = () => {
17
18
  if (pageState === layout_1.LayoutServicePageState.Normal)
18
19
  return react_1.default.createElement(react_1.default.Fragment, null);
19
20
  if (editMode === layout_1.EditMode.Metadata) {
21
+ const jssClientData = Object.assign(Object.assign({}, clientData), (0, editing_1.getJssPagesClientData)());
20
22
  return (react_1.default.createElement(react_1.default.Fragment, null, clientScripts === null || clientScripts === void 0 ? void 0 :
21
23
  clientScripts.map((src, index) => (react_1.default.createElement("script", { src: src, key: index }))),
22
- clientData &&
23
- Object.keys(clientData).map((id) => (react_1.default.createElement("script", { key: id, id: id, type: "application/json", dangerouslySetInnerHTML: { __html: JSON.stringify(clientData[id]) } })))));
24
+ Object.keys(jssClientData).map((id) => (react_1.default.createElement("script", { key: id, id: id, type: "application/json", dangerouslySetInnerHTML: { __html: JSON.stringify(jssClientData[id]) } })))));
24
25
  }
25
26
  return react_1.default.createElement(react_1.default.Fragment, null);
26
27
  };
@@ -14,7 +14,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
14
14
  return (mod && mod.__esModule) ? mod : { "default": mod };
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.PlaceholderCommon = void 0;
17
+ exports.PlaceholderCommon = exports.isDynamicPlaceholder = exports.getDynamicPlaceholderPattern = void 0;
18
18
  const react_1 = __importDefault(require("react"));
19
19
  const prop_types_1 = __importDefault(require("prop-types"));
20
20
  const MissingComponent_1 = require("./MissingComponent");
@@ -28,6 +28,22 @@ const BYOCComponent_1 = require("./BYOCComponent");
28
28
  const BYOCWrapper_1 = require("./BYOCWrapper");
29
29
  const PlaceholderMetadata_1 = require("./PlaceholderMetadata");
30
30
  const ErrorBoundary_1 = __importDefault(require("./ErrorBoundary"));
31
+ /**
32
+ * Returns a regular expression pattern for a dynamic placeholder name.
33
+ * @param {string} placeholder Placeholder name with a dynamic segment (e.g. 'main-{*}')
34
+ * @returns Regular expression pattern for the dynamic segment
35
+ */
36
+ const getDynamicPlaceholderPattern = (placeholder) => {
37
+ return new RegExp(`^${placeholder.replace(/\{\*\}+/i, '\\d+')}$`);
38
+ };
39
+ exports.getDynamicPlaceholderPattern = getDynamicPlaceholderPattern;
40
+ /**
41
+ * Checks if the placeholder name is dynamic.
42
+ * @param {string} placeholder Placeholder name
43
+ * @returns True if the placeholder name is dynamic
44
+ */
45
+ const isDynamicPlaceholder = (placeholder) => placeholder.indexOf('{*}') !== -1;
46
+ exports.isDynamicPlaceholder = isDynamicPlaceholder;
31
47
  class PlaceholderCommon extends react_1.default.Component {
32
48
  constructor(props) {
33
49
  super(props);
@@ -41,14 +57,14 @@ class PlaceholderCommon extends react_1.default.Component {
41
57
  let result;
42
58
  let phName = name.slice();
43
59
  /**
44
- * Process (SXA) dynamic placeholders
45
- * Find and replace the matching dynamic placeholder e.g 'nameOfContainer-{*}' with the requested e.g. 'nameOfContainer-1'.
46
- * For Metadata EditMode, we need to keep the raw placeholder name in place.
60
+ * [Chromes Mode]: [SXA] it needs for deleting dynamics placeholder when we set him number(props.name) of container.
61
+ * from backend side we get common name of placeholder is called 'nameOfContainer-{*}' where '{*}' marker for replacing.
62
+ * [Metadata Mode]: We need to keep the raw placeholder name. e.g 'nameOfContainer-{*}' instead of 'nameOfContainer-1'
47
63
  */
48
64
  if (rendering === null || rendering === void 0 ? void 0 : rendering.placeholders) {
49
65
  Object.keys(rendering.placeholders).forEach((placeholder) => {
50
- const patternPlaceholder = (0, layout_1.isDynamicPlaceholder)(placeholder)
51
- ? (0, layout_1.getDynamicPlaceholderPattern)(placeholder)
66
+ const patternPlaceholder = (0, exports.isDynamicPlaceholder)(placeholder)
67
+ ? (0, exports.getDynamicPlaceholderPattern)(placeholder)
52
68
  : null;
53
69
  if (patternPlaceholder && patternPlaceholder.test(phName)) {
54
70
  if (editMode === layout_1.EditMode.Metadata) {
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.PlaceholderMetadata = void 0;
7
7
  const react_1 = __importDefault(require("react"));
8
- const layout_1 = require("@sitecore-jss/sitecore-jss/layout");
8
+ const PlaceholderCommon_1 = require("./PlaceholderCommon");
9
9
  /**
10
10
  * default value of uid for root placeholder when uid is not present.
11
11
  */
@@ -41,8 +41,8 @@ const PlaceholderMetadata = ({ rendering, placeholderName, children, }) => {
41
41
  break;
42
42
  }
43
43
  // Check if the placeholder is a dynamic placeholder
44
- if ((0, layout_1.isDynamicPlaceholder)(placeholder)) {
45
- const pattern = (0, layout_1.getDynamicPlaceholderPattern)(placeholder);
44
+ if ((0, PlaceholderCommon_1.isDynamicPlaceholder)(placeholder)) {
45
+ const pattern = (0, PlaceholderCommon_1.getDynamicPlaceholderPattern)(placeholder);
46
46
  // Check if the placeholder matches the dynamic placeholder pattern
47
47
  if (pattern.test(placeholderName)) {
48
48
  phId = id ? `${placeholder}_${id}` : `${placeholder}_${DEFAULT_PLACEHOLDER_UID}`;
package/dist/cjs/index.js CHANGED
@@ -1,11 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- 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.LinkPropTypes = exports.Link = exports.BYOCWrapper = exports.fetchBYOCComponentServerProps = exports.BYOCComponent = 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.ClientError = exports.enableDebug = exports.constants = void 0;
4
- exports.DefaultEmptyFieldEditingComponentImage = exports.DefaultEmptyFieldEditingComponentText = void 0;
3
+ 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.LinkPropTypes = exports.Link = exports.BYOCWrapper = exports.fetchBYOCComponentServerProps = exports.BYOCComponent = 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.MemoryCacheClient = exports.ClientError = exports.enableDebug = exports.constants = void 0;
4
+ exports.DefaultEmptyFieldEditingComponentImage = exports.DefaultEmptyFieldEditingComponentText = exports.EditingScripts = 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; } });
8
8
  Object.defineProperty(exports, "ClientError", { enumerable: true, get: function () { return sitecore_jss_1.ClientError; } });
9
+ Object.defineProperty(exports, "MemoryCacheClient", { enumerable: true, get: function () { return sitecore_jss_1.MemoryCacheClient; } });
9
10
  var editing_1 = require("@sitecore-jss/sitecore-jss/editing");
10
11
  Object.defineProperty(exports, "isEditorActive", { enumerable: true, get: function () { return editing_1.isEditorActive; } });
11
12
  Object.defineProperty(exports, "resetEditorChromes", { enumerable: true, get: function () { return editing_1.resetEditorChromes; } });
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import { EditMode, LayoutServicePageState } from '@sitecore-jss/sitecore-jss/layout';
3
3
  import { useSitecoreContext } from '../enhancers/withSitecoreContext';
4
+ import { getJssPagesClientData } from '@sitecore-jss/sitecore-jss/editing';
4
5
  /**
5
6
  * Renders client scripts and data for editing/preview mode in Pages.
6
7
  * This script is only rendered when EditMode is Metadata, otherwise it renders nothing.
@@ -11,10 +12,10 @@ export const EditingScripts = () => {
11
12
  if (pageState === LayoutServicePageState.Normal)
12
13
  return React.createElement(React.Fragment, null);
13
14
  if (editMode === EditMode.Metadata) {
15
+ const jssClientData = Object.assign(Object.assign({}, clientData), getJssPagesClientData());
14
16
  return (React.createElement(React.Fragment, null, clientScripts === null || clientScripts === void 0 ? void 0 :
15
17
  clientScripts.map((src, index) => (React.createElement("script", { src: src, key: index }))),
16
- clientData &&
17
- Object.keys(clientData).map((id) => (React.createElement("script", { key: id, id: id, type: "application/json", dangerouslySetInnerHTML: { __html: JSON.stringify(clientData[id]) } })))));
18
+ Object.keys(jssClientData).map((id) => (React.createElement("script", { key: id, id: id, type: "application/json", dangerouslySetInnerHTML: { __html: JSON.stringify(jssClientData[id]) } })))));
18
19
  }
19
20
  return React.createElement(React.Fragment, null);
20
21
  };
@@ -12,7 +12,7 @@ var __rest = (this && this.__rest) || function (s, e) {
12
12
  import React from 'react';
13
13
  import PropTypes from 'prop-types';
14
14
  import { MissingComponent } from './MissingComponent';
15
- import { EditMode, isDynamicPlaceholder, getDynamicPlaceholderPattern, } from '@sitecore-jss/sitecore-jss/layout';
15
+ import { EditMode, } from '@sitecore-jss/sitecore-jss/layout';
16
16
  import { constants } from '@sitecore-jss/sitecore-jss';
17
17
  import { convertAttributesToReactProps } from '../utils';
18
18
  import { HiddenRendering } from './HiddenRendering';
@@ -22,6 +22,20 @@ import { BYOCComponent, BYOC_COMPONENT_RENDERING_NAME } from './BYOCComponent';
22
22
  import { BYOCWrapper, BYOC_WRAPPER_RENDERING_NAME } from './BYOCWrapper';
23
23
  import { PlaceholderMetadata } from './PlaceholderMetadata';
24
24
  import ErrorBoundary from './ErrorBoundary';
25
+ /**
26
+ * Returns a regular expression pattern for a dynamic placeholder name.
27
+ * @param {string} placeholder Placeholder name with a dynamic segment (e.g. 'main-{*}')
28
+ * @returns Regular expression pattern for the dynamic segment
29
+ */
30
+ export const getDynamicPlaceholderPattern = (placeholder) => {
31
+ return new RegExp(`^${placeholder.replace(/\{\*\}+/i, '\\d+')}$`);
32
+ };
33
+ /**
34
+ * Checks if the placeholder name is dynamic.
35
+ * @param {string} placeholder Placeholder name
36
+ * @returns True if the placeholder name is dynamic
37
+ */
38
+ export const isDynamicPlaceholder = (placeholder) => placeholder.indexOf('{*}') !== -1;
25
39
  export class PlaceholderCommon extends React.Component {
26
40
  constructor(props) {
27
41
  super(props);
@@ -35,9 +49,9 @@ export class PlaceholderCommon extends React.Component {
35
49
  let result;
36
50
  let phName = name.slice();
37
51
  /**
38
- * Process (SXA) dynamic placeholders
39
- * Find and replace the matching dynamic placeholder e.g 'nameOfContainer-{*}' with the requested e.g. 'nameOfContainer-1'.
40
- * For Metadata EditMode, we need to keep the raw placeholder name in place.
52
+ * [Chromes Mode]: [SXA] it needs for deleting dynamics placeholder when we set him number(props.name) of container.
53
+ * from backend side we get common name of placeholder is called 'nameOfContainer-{*}' where '{*}' marker for replacing.
54
+ * [Metadata Mode]: We need to keep the raw placeholder name. e.g 'nameOfContainer-{*}' instead of 'nameOfContainer-1'
41
55
  */
42
56
  if (rendering === null || rendering === void 0 ? void 0 : rendering.placeholders) {
43
57
  Object.keys(rendering.placeholders).forEach((placeholder) => {
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { getDynamicPlaceholderPattern, isDynamicPlaceholder, } from '@sitecore-jss/sitecore-jss/layout';
2
+ import { getDynamicPlaceholderPattern, isDynamicPlaceholder } from './PlaceholderCommon';
3
3
  /**
4
4
  * default value of uid for root placeholder when uid is not present.
5
5
  */
package/dist/esm/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export { constants, enableDebug, ClientError } from '@sitecore-jss/sitecore-jss';
1
+ export { constants, enableDebug, ClientError, MemoryCacheClient, } from '@sitecore-jss/sitecore-jss';
2
2
  export { isEditorActive, resetEditorChromes, DefaultEditFrameButton, DefaultEditFrameButtons, } from '@sitecore-jss/sitecore-jss/editing';
3
3
  export { getContentStylesheetLink, getComponentLibraryStylesheetLinks, LayoutServicePageState, GraphQLLayoutService, RestLayoutService, getChildPlaceholder, getFieldValue, EditMode, } from '@sitecore-jss/sitecore-jss/layout';
4
4
  export { trackingApi, } from '@sitecore-jss/sitecore-jss/tracking';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sitecore-jss/sitecore-jss-react",
3
- "version": "22.2.0-canary.9",
3
+ "version": "22.2.1-canary.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.2.0-canary.9",
64
+ "@sitecore-jss/sitecore-jss": "^22.2.1-canary.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": "843696778d1ce2cb8cb4d0ff21bf60da5df3020e",
71
+ "gitHead": "74995e778ae28463d857b92a8ea5051333c18795",
72
72
  "files": [
73
73
  "dist",
74
74
  "types"
@@ -12,6 +12,18 @@ export type ComponentProps = {
12
12
  [key: string]: unknown;
13
13
  rendering: ComponentRendering;
14
14
  };
15
+ /**
16
+ * Returns a regular expression pattern for a dynamic placeholder name.
17
+ * @param {string} placeholder Placeholder name with a dynamic segment (e.g. 'main-{*}')
18
+ * @returns Regular expression pattern for the dynamic segment
19
+ */
20
+ export declare const getDynamicPlaceholderPattern: (placeholder: string) => RegExp;
21
+ /**
22
+ * Checks if the placeholder name is dynamic.
23
+ * @param {string} placeholder Placeholder name
24
+ * @returns True if the placeholder name is dynamic
25
+ */
26
+ export declare const isDynamicPlaceholder: (placeholder: string) => boolean;
15
27
  export interface PlaceholderProps {
16
28
  [key: string]: unknown;
17
29
  /** Name of the placeholder to render. */
package/types/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { constants, enableDebug, ClientError } from '@sitecore-jss/sitecore-jss';
1
+ export { constants, enableDebug, ClientError, CacheClient, CacheOptions, MemoryCacheClient, } 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
4
  export { getContentStylesheetLink, getComponentLibraryStylesheetLinks, LayoutService, LayoutServiceData, LayoutServicePageState, LayoutServiceContext, LayoutServiceContextData, GraphQLLayoutService, RestLayoutService, RouteData, Field, Item, HtmlElementRendering, getChildPlaceholder, getFieldValue, ComponentRendering, ComponentFields, ComponentParams, EditMode, } from '@sitecore-jss/sitecore-jss/layout';