@sitecore-jss/sitecore-jss-react 22.2.0-canary.83 → 22.3.0-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.
@@ -15,8 +15,9 @@ const editing_1 = require("@sitecore-jss/sitecore-jss/editing");
15
15
  const EditingScripts = () => {
16
16
  const { sitecoreContext: { pageState, editMode, clientData, clientScripts }, } = (0, withSitecoreContext_1.useSitecoreContext)();
17
17
  // Don't render anything if not in editing/preview mode
18
- if (pageState === layout_1.LayoutServicePageState.Normal)
18
+ if (pageState === layout_1.LayoutServicePageState.Normal || pageState === layout_1.LayoutServicePageState.Preview) {
19
19
  return react_1.default.createElement(react_1.default.Fragment, null);
20
+ }
20
21
  if (editMode === layout_1.EditMode.Metadata) {
21
22
  const jssClientData = Object.assign(Object.assign({}, clientData), (0, editing_1.getJssPagesClientData)());
22
23
  return (react_1.default.createElement(react_1.default.Fragment, null, clientScripts === null || clientScripts === void 0 ? void 0 :
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.FieldMetadata = void 0;
7
7
  const react_1 = __importDefault(require("react"));
8
8
  const prop_types_1 = __importDefault(require("prop-types"));
9
+ const editing_1 = require("@sitecore-jss/sitecore-jss/editing");
9
10
  /**
10
11
  * The component which renders field metadata markup
11
12
  * @param {FieldMetadataProps} props the props of the component
@@ -18,8 +19,8 @@ const FieldMetadata = (props) => {
18
19
  chrometype: 'field',
19
20
  className: 'scpm',
20
21
  };
21
- const codeOpenAttributes = Object.assign(Object.assign({}, attributes), { kind: 'open' });
22
- const codeCloseAttributes = Object.assign(Object.assign({}, attributes), { kind: 'close' });
22
+ const codeOpenAttributes = Object.assign(Object.assign({}, attributes), { kind: editing_1.MetadataKind.Open });
23
+ const codeCloseAttributes = Object.assign(Object.assign({}, attributes), { kind: editing_1.MetadataKind.Close });
23
24
  return (react_1.default.createElement(react_1.default.Fragment, null,
24
25
  react_1.default.createElement("code", Object.assign({}, codeOpenAttributes), data),
25
26
  props.children,
@@ -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 = exports.isDynamicPlaceholder = exports.getDynamicPlaceholderPattern = void 0;
17
+ exports.PlaceholderCommon = 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,22 +28,6 @@ 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;
47
31
  class PlaceholderCommon extends react_1.default.Component {
48
32
  constructor(props) {
49
33
  super(props);
@@ -57,14 +41,14 @@ class PlaceholderCommon extends react_1.default.Component {
57
41
  let result;
58
42
  let phName = name.slice();
59
43
  /**
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'
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.
63
47
  */
64
48
  if (rendering === null || rendering === void 0 ? void 0 : rendering.placeholders) {
65
49
  Object.keys(rendering.placeholders).forEach((placeholder) => {
66
- const patternPlaceholder = (0, exports.isDynamicPlaceholder)(placeholder)
67
- ? (0, exports.getDynamicPlaceholderPattern)(placeholder)
50
+ const patternPlaceholder = (0, layout_1.isDynamicPlaceholder)(placeholder)
51
+ ? (0, layout_1.getDynamicPlaceholderPattern)(placeholder)
68
52
  : null;
69
53
  if (patternPlaceholder && patternPlaceholder.test(phName)) {
70
54
  if (editMode === layout_1.EditMode.Metadata) {
@@ -5,11 +5,8 @@ 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 PlaceholderCommon_1 = require("./PlaceholderCommon");
9
- /**
10
- * default value of uid for root placeholder when uid is not present.
11
- */
12
- const DEFAULT_PLACEHOLDER_UID = '00000000-0000-0000-0000-000000000000';
8
+ const layout_1 = require("@sitecore-jss/sitecore-jss/layout");
9
+ const editing_1 = require("@sitecore-jss/sitecore-jss/editing");
13
10
  /**
14
11
  * A React component to generate metadata blocks for a placeholder or rendering.
15
12
  * It utilizes dynamic attributes based on whether the component acts as a placeholder
@@ -30,22 +27,22 @@ const PlaceholderMetadata = ({ rendering, placeholderName, children, }) => {
30
27
  className: 'scpm',
31
28
  kind: kind,
32
29
  };
33
- if (kind === 'open') {
30
+ if (kind === editing_1.MetadataKind.Open) {
34
31
  if (chrometype === 'placeholder' && placeholderName) {
35
32
  let phId = '';
36
33
  for (const placeholder of Object.keys(rendering.placeholders)) {
37
34
  if (placeholderName === placeholder) {
38
35
  phId = id
39
36
  ? `${placeholderName}_${id}`
40
- : `${placeholderName}_${DEFAULT_PLACEHOLDER_UID}`;
37
+ : `${placeholderName}_${editing_1.DEFAULT_PLACEHOLDER_UID}`;
41
38
  break;
42
39
  }
43
40
  // Check if the placeholder is a dynamic placeholder
44
- if ((0, PlaceholderCommon_1.isDynamicPlaceholder)(placeholder)) {
45
- const pattern = (0, PlaceholderCommon_1.getDynamicPlaceholderPattern)(placeholder);
41
+ if ((0, layout_1.isDynamicPlaceholder)(placeholder)) {
42
+ const pattern = (0, layout_1.getDynamicPlaceholderPattern)(placeholder);
46
43
  // Check if the placeholder matches the dynamic placeholder pattern
47
44
  if (pattern.test(placeholderName)) {
48
- phId = id ? `${placeholder}_${id}` : `${placeholder}_${DEFAULT_PLACEHOLDER_UID}`;
45
+ phId = id ? `${placeholder}_${id}` : `${placeholder}_${editing_1.DEFAULT_PLACEHOLDER_UID}`;
49
46
  break;
50
47
  }
51
48
  }
@@ -59,9 +56,9 @@ const PlaceholderMetadata = ({ rendering, placeholderName, children, }) => {
59
56
  return attributes;
60
57
  };
61
58
  const renderComponent = (uid, placeholderName) => (react_1.default.createElement(react_1.default.Fragment, null,
62
- react_1.default.createElement("code", Object.assign({}, getCodeBlockAttributes('open', uid, placeholderName))),
59
+ react_1.default.createElement("code", Object.assign({}, getCodeBlockAttributes(editing_1.MetadataKind.Open, uid, placeholderName))),
63
60
  children,
64
- react_1.default.createElement("code", Object.assign({}, getCodeBlockAttributes('close', uid, placeholderName)))));
61
+ react_1.default.createElement("code", Object.assign({}, getCodeBlockAttributes(editing_1.MetadataKind.Close, uid, placeholderName)))));
65
62
  return react_1.default.createElement(react_1.default.Fragment, null, renderComponent(rendering.uid, placeholderName));
66
63
  };
67
64
  exports.PlaceholderMetadata = PlaceholderMetadata;
@@ -9,8 +9,9 @@ import { getJssPagesClientData } from '@sitecore-jss/sitecore-jss/editing';
9
9
  export const EditingScripts = () => {
10
10
  const { sitecoreContext: { pageState, editMode, clientData, clientScripts }, } = useSitecoreContext();
11
11
  // Don't render anything if not in editing/preview mode
12
- if (pageState === LayoutServicePageState.Normal)
12
+ if (pageState === LayoutServicePageState.Normal || pageState === LayoutServicePageState.Preview) {
13
13
  return React.createElement(React.Fragment, null);
14
+ }
14
15
  if (editMode === EditMode.Metadata) {
15
16
  const jssClientData = Object.assign(Object.assign({}, clientData), getJssPagesClientData());
16
17
  return (React.createElement(React.Fragment, null, clientScripts === null || clientScripts === void 0 ? void 0 :
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
+ import { MetadataKind } from '@sitecore-jss/sitecore-jss/editing';
3
4
  /**
4
5
  * The component which renders field metadata markup
5
6
  * @param {FieldMetadataProps} props the props of the component
@@ -12,8 +13,8 @@ export const FieldMetadata = (props) => {
12
13
  chrometype: 'field',
13
14
  className: 'scpm',
14
15
  };
15
- const codeOpenAttributes = Object.assign(Object.assign({}, attributes), { kind: 'open' });
16
- const codeCloseAttributes = Object.assign(Object.assign({}, attributes), { kind: 'close' });
16
+ const codeOpenAttributes = Object.assign(Object.assign({}, attributes), { kind: MetadataKind.Open });
17
+ const codeCloseAttributes = Object.assign(Object.assign({}, attributes), { kind: MetadataKind.Close });
17
18
  return (React.createElement(React.Fragment, null,
18
19
  React.createElement("code", Object.assign({}, codeOpenAttributes), data),
19
20
  props.children,
@@ -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, } from '@sitecore-jss/sitecore-jss/layout';
15
+ import { EditMode, isDynamicPlaceholder, getDynamicPlaceholderPattern, } 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,20 +22,6 @@ 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;
39
25
  export class PlaceholderCommon extends React.Component {
40
26
  constructor(props) {
41
27
  super(props);
@@ -49,9 +35,9 @@ export class PlaceholderCommon extends React.Component {
49
35
  let result;
50
36
  let phName = name.slice();
51
37
  /**
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'
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.
55
41
  */
56
42
  if (rendering === null || rendering === void 0 ? void 0 : rendering.placeholders) {
57
43
  Object.keys(rendering.placeholders).forEach((placeholder) => {
@@ -1,9 +1,6 @@
1
1
  import React from 'react';
2
- import { getDynamicPlaceholderPattern, isDynamicPlaceholder } from './PlaceholderCommon';
3
- /**
4
- * default value of uid for root placeholder when uid is not present.
5
- */
6
- const DEFAULT_PLACEHOLDER_UID = '00000000-0000-0000-0000-000000000000';
2
+ import { getDynamicPlaceholderPattern, isDynamicPlaceholder, } from '@sitecore-jss/sitecore-jss/layout';
3
+ import { MetadataKind, DEFAULT_PLACEHOLDER_UID } from '@sitecore-jss/sitecore-jss/editing';
7
4
  /**
8
5
  * A React component to generate metadata blocks for a placeholder or rendering.
9
6
  * It utilizes dynamic attributes based on whether the component acts as a placeholder
@@ -24,7 +21,7 @@ export const PlaceholderMetadata = ({ rendering, placeholderName, children, }) =
24
21
  className: 'scpm',
25
22
  kind: kind,
26
23
  };
27
- if (kind === 'open') {
24
+ if (kind === MetadataKind.Open) {
28
25
  if (chrometype === 'placeholder' && placeholderName) {
29
26
  let phId = '';
30
27
  for (const placeholder of Object.keys(rendering.placeholders)) {
@@ -53,8 +50,8 @@ export const PlaceholderMetadata = ({ rendering, placeholderName, children, }) =
53
50
  return attributes;
54
51
  };
55
52
  const renderComponent = (uid, placeholderName) => (React.createElement(React.Fragment, null,
56
- React.createElement("code", Object.assign({}, getCodeBlockAttributes('open', uid, placeholderName))),
53
+ React.createElement("code", Object.assign({}, getCodeBlockAttributes(MetadataKind.Open, uid, placeholderName))),
57
54
  children,
58
- React.createElement("code", Object.assign({}, getCodeBlockAttributes('close', uid, placeholderName)))));
55
+ React.createElement("code", Object.assign({}, getCodeBlockAttributes(MetadataKind.Close, uid, placeholderName)))));
59
56
  return React.createElement(React.Fragment, null, renderComponent(rendering.uid, placeholderName));
60
57
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sitecore-jss/sitecore-jss-react",
3
- "version": "22.2.0-canary.83",
3
+ "version": "22.3.0-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.83",
64
+ "@sitecore-jss/sitecore-jss": "^22.3.0-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": "d56b18ae5aabcf3095dac9d45b9f28959bf10b64",
71
+ "gitHead": "204eb3427f26d4ba8c08f44cf9c772f19f2820a8",
72
72
  "files": [
73
73
  "dist",
74
74
  "types"
@@ -12,18 +12,6 @@ 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;
27
15
  export interface PlaceholderProps {
28
16
  [key: string]: unknown;
29
17
  /** Name of the placeholder to render. */
@@ -81,7 +69,7 @@ export interface PlaceholderProps {
81
69
  }
82
70
  export declare class PlaceholderCommon<T extends PlaceholderProps> extends React.Component<T> {
83
71
  static propTypes: {
84
- rendering: PropTypes.Validator<NonNullable<NonNullable<ComponentRendering | RouteData<Record<string, Field<import("@sitecore-jss/sitecore-jss/layout").GenericFieldValue> | Item | Item[]>>>>>;
72
+ rendering: PropTypes.Validator<NonNullable<NonNullable<ComponentRendering<import("@sitecore-jss/sitecore-jss/layout").ComponentFields> | RouteData<Record<string, Field<import("@sitecore-jss/sitecore-jss/layout").GenericFieldValue> | Item | Item[]>>>>>;
85
73
  fields: PropTypes.Requireable<{
86
74
  [x: string]: NonNullable<NonNullable<Field<import("@sitecore-jss/sitecore-jss/layout").GenericFieldValue> | Item[]>>;
87
75
  }>;
@@ -99,7 +87,7 @@ export declare class PlaceholderCommon<T extends PlaceholderProps> extends React
99
87
  error?: Error;
100
88
  }>;
101
89
  constructor(props: T);
102
- static getPlaceholderDataFromRenderingData(rendering: ComponentRendering | RouteData, name: string, editMode?: EditMode): (ComponentRendering | HtmlElementRendering)[];
90
+ static getPlaceholderDataFromRenderingData(rendering: ComponentRendering | RouteData, name: string, editMode?: EditMode): (ComponentRendering<import("@sitecore-jss/sitecore-jss/layout").ComponentFields> | HtmlElementRendering)[];
103
91
  componentDidMount(): void;
104
92
  componentDidUpdate(): void;
105
93
  componentDidCatch(error: Error): void;