@sitecore-content-sdk/react 2.0.0-canary.2 → 2.0.0-canary.20

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.
Files changed (135) hide show
  1. package/dist/cjs/components/Date.js +13 -11
  2. package/dist/cjs/components/DefaultEmptyFieldEditingComponents.js +2 -1
  3. package/dist/cjs/components/DesignLibrary/DesignLibrary.js +5 -9
  4. package/dist/cjs/components/DesignLibrary/DesignLibraryErrorBoundary.js +6 -0
  5. package/dist/cjs/components/DesignLibrary/index.js +3 -3
  6. package/dist/cjs/components/EditingScripts.js +2 -2
  7. package/dist/cjs/components/ErrorBoundary.js +11 -6
  8. package/dist/cjs/components/File.js +3 -1
  9. package/dist/cjs/components/Form.js +16 -7
  10. package/dist/cjs/components/Image.js +12 -9
  11. package/dist/cjs/components/Link.js +19 -46
  12. package/dist/cjs/components/Placeholder/AppPlaceholder.js +56 -58
  13. package/dist/cjs/components/Placeholder/ClientComponentWrapper.js +5 -9
  14. package/dist/cjs/components/Placeholder/Placeholder.js +21 -93
  15. package/dist/cjs/components/Placeholder/PlaceholderMetadata.js +1 -0
  16. package/dist/cjs/components/Placeholder/index.js +1 -2
  17. package/dist/cjs/components/Placeholder/placeholder-utils.js +7 -35
  18. package/dist/cjs/components/RichText.js +18 -49
  19. package/dist/cjs/components/SitecoreProvider.js +81 -33
  20. package/dist/cjs/components/Text.js +12 -8
  21. package/dist/cjs/enhancers/withAppPlaceholder.js +6 -0
  22. package/dist/cjs/enhancers/withDatasourceCheck.js +4 -3
  23. package/dist/cjs/enhancers/withEditorChromes.js +50 -15
  24. package/dist/cjs/enhancers/withEmptyFieldEditingComponent.js +8 -38
  25. package/dist/cjs/enhancers/withFieldMetadata.js +9 -39
  26. package/dist/cjs/enhancers/withPlaceholder.js +16 -52
  27. package/dist/cjs/enhancers/withSitecore.js +5 -29
  28. package/dist/cjs/index.js +13 -8
  29. package/dist/cjs/search/utils.js +2 -2
  30. package/dist/esm/components/Date.js +13 -11
  31. package/dist/esm/components/DefaultEmptyFieldEditingComponents.js +2 -1
  32. package/dist/esm/components/DesignLibrary/DesignLibrary.js +5 -9
  33. package/dist/esm/components/DesignLibrary/DesignLibraryErrorBoundary.js +6 -0
  34. package/dist/esm/components/DesignLibrary/index.js +1 -1
  35. package/dist/esm/components/EditingScripts.js +2 -2
  36. package/dist/esm/components/ErrorBoundary.js +11 -6
  37. package/dist/esm/components/File.js +3 -1
  38. package/dist/esm/components/Form.js +15 -6
  39. package/dist/esm/components/Image.js +12 -9
  40. package/dist/esm/components/Link.js +16 -13
  41. package/dist/esm/components/Placeholder/AppPlaceholder.js +57 -59
  42. package/dist/esm/components/Placeholder/ClientComponentWrapper.js +4 -8
  43. package/dist/esm/components/Placeholder/Placeholder.js +20 -89
  44. package/dist/esm/components/Placeholder/PlaceholderMetadata.js +1 -0
  45. package/dist/esm/components/Placeholder/index.js +1 -1
  46. package/dist/esm/components/Placeholder/placeholder-utils.js +5 -32
  47. package/dist/esm/components/RichText.js +15 -16
  48. package/dist/esm/components/SitecoreProvider.js +46 -32
  49. package/dist/esm/components/Text.js +12 -8
  50. package/dist/esm/enhancers/withAppPlaceholder.js +6 -0
  51. package/dist/esm/enhancers/withDatasourceCheck.js +3 -2
  52. package/dist/esm/enhancers/withEditorChromes.js +17 -12
  53. package/dist/esm/enhancers/withEmptyFieldEditingComponent.js +5 -5
  54. package/dist/esm/enhancers/withFieldMetadata.js +6 -6
  55. package/dist/esm/enhancers/withPlaceholder.js +15 -52
  56. package/dist/esm/enhancers/withSitecore.js +6 -29
  57. package/dist/esm/index.js +7 -5
  58. package/dist/esm/search/utils.js +1 -1
  59. package/package.json +7 -6
  60. package/types/components/Date.d.ts.map +1 -1
  61. package/types/components/DefaultEmptyFieldEditingComponents.d.ts.map +1 -1
  62. package/types/components/DesignLibrary/DesignLibrary.d.ts +0 -2
  63. package/types/components/DesignLibrary/DesignLibrary.d.ts.map +1 -1
  64. package/types/components/DesignLibrary/DesignLibraryErrorBoundary.d.ts +13 -0
  65. package/types/components/DesignLibrary/DesignLibraryErrorBoundary.d.ts.map +1 -1
  66. package/types/components/DesignLibrary/index.d.ts +2 -1
  67. package/types/components/DesignLibrary/index.d.ts.map +1 -1
  68. package/types/components/DesignLibrary/models.d.ts +13 -55
  69. package/types/components/DesignLibrary/models.d.ts.map +1 -1
  70. package/types/components/EditingScripts.d.ts +2 -2
  71. package/types/components/EditingScripts.d.ts.map +1 -1
  72. package/types/components/ErrorBoundary.d.ts +3 -2
  73. package/types/components/ErrorBoundary.d.ts.map +1 -1
  74. package/types/components/File.d.ts.map +1 -1
  75. package/types/components/Form.d.ts.map +1 -1
  76. package/types/components/Image.d.ts.map +1 -1
  77. package/types/components/Link.d.ts.map +1 -1
  78. package/types/components/Placeholder/AppPlaceholder.d.ts +1 -1
  79. package/types/components/Placeholder/AppPlaceholder.d.ts.map +1 -1
  80. package/types/components/Placeholder/ClientComponentWrapper.d.ts +2 -2
  81. package/types/components/Placeholder/ClientComponentWrapper.d.ts.map +1 -1
  82. package/types/components/Placeholder/Placeholder.d.ts +4 -19
  83. package/types/components/Placeholder/Placeholder.d.ts.map +1 -1
  84. package/types/components/Placeholder/PlaceholderMetadata.d.ts +1 -0
  85. package/types/components/Placeholder/PlaceholderMetadata.d.ts.map +1 -1
  86. package/types/components/Placeholder/index.d.ts +1 -1
  87. package/types/components/Placeholder/index.d.ts.map +1 -1
  88. package/types/components/Placeholder/models.d.ts +35 -58
  89. package/types/components/Placeholder/models.d.ts.map +1 -1
  90. package/types/components/Placeholder/placeholder-utils.d.ts +5 -13
  91. package/types/components/Placeholder/placeholder-utils.d.ts.map +1 -1
  92. package/types/components/RichText.d.ts +2 -0
  93. package/types/components/RichText.d.ts.map +1 -1
  94. package/types/components/SitecoreProvider.d.ts +43 -13
  95. package/types/components/SitecoreProvider.d.ts.map +1 -1
  96. package/types/components/Text.d.ts.map +1 -1
  97. package/types/enhancers/withAppPlaceholder.d.ts +6 -0
  98. package/types/enhancers/withAppPlaceholder.d.ts.map +1 -1
  99. package/types/enhancers/withDatasourceCheck.d.ts.map +1 -1
  100. package/types/enhancers/withEditorChromes.d.ts +4 -1
  101. package/types/enhancers/withEditorChromes.d.ts.map +1 -1
  102. package/types/enhancers/withEmptyFieldEditingComponent.d.ts +5 -3
  103. package/types/enhancers/withEmptyFieldEditingComponent.d.ts.map +1 -1
  104. package/types/enhancers/withFieldMetadata.d.ts +4 -2
  105. package/types/enhancers/withFieldMetadata.d.ts.map +1 -1
  106. package/types/enhancers/withPlaceholder.d.ts +14 -32
  107. package/types/enhancers/withPlaceholder.d.ts.map +1 -1
  108. package/types/enhancers/withSitecore.d.ts +8 -50
  109. package/types/enhancers/withSitecore.d.ts.map +1 -1
  110. package/types/index.d.ts +7 -5
  111. package/types/index.d.ts.map +1 -1
  112. package/dist/cjs/components/DesignLibrary/DesignLibraryApp.js +0 -31
  113. package/dist/cjs/components/DesignLibrary/DesignLibraryClientEvents.js +0 -131
  114. package/dist/cjs/components/DesignLibrary/DesignLibraryServer.js +0 -212
  115. package/dist/cjs/enhancers/withComponentMap.js +0 -24
  116. package/dist/cjs/enhancers/withLoadImportMap.js +0 -62
  117. package/dist/cjs/server-actions/update-server-component-action.js +0 -51
  118. package/dist/esm/components/DesignLibrary/DesignLibraryApp.js +0 -24
  119. package/dist/esm/components/DesignLibrary/DesignLibraryClientEvents.js +0 -92
  120. package/dist/esm/components/DesignLibrary/DesignLibraryServer.js +0 -169
  121. package/dist/esm/enhancers/withComponentMap.js +0 -18
  122. package/dist/esm/enhancers/withLoadImportMap.js +0 -25
  123. package/dist/esm/server-actions/update-server-component-action.js +0 -47
  124. package/types/components/DesignLibrary/DesignLibraryApp.d.ts +0 -14
  125. package/types/components/DesignLibrary/DesignLibraryApp.d.ts.map +0 -1
  126. package/types/components/DesignLibrary/DesignLibraryClientEvents.d.ts +0 -21
  127. package/types/components/DesignLibrary/DesignLibraryClientEvents.d.ts.map +0 -1
  128. package/types/components/DesignLibrary/DesignLibraryServer.d.ts +0 -38
  129. package/types/components/DesignLibrary/DesignLibraryServer.d.ts.map +0 -1
  130. package/types/enhancers/withComponentMap.d.ts +0 -13
  131. package/types/enhancers/withComponentMap.d.ts.map +0 -1
  132. package/types/enhancers/withLoadImportMap.d.ts +0 -28
  133. package/types/enhancers/withLoadImportMap.d.ts.map +0 -1
  134. package/types/server-actions/update-server-component-action.d.ts +0 -58
  135. package/types/server-actions/update-server-component-action.d.ts.map +0 -1
@@ -1,45 +1,15 @@
1
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 () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
35
5
  Object.defineProperty(exports, "__esModule", { value: true });
36
6
  exports.withEmptyFieldEditingComponent = withEmptyFieldEditingComponent;
37
- const react_1 = __importStar(require("react"));
7
+ const react_1 = __importDefault(require("react"));
38
8
  const layout_1 = require("@sitecore-content-sdk/content/layout");
39
9
  /**
40
10
  * Returns the passed field component or default component in case field value is empty and edit mode is 'metadata'
41
11
  * @param {ComponentType<FieldComponentProps>} FieldComponent the field component
42
- * @param {WithEmptyFieldEditingComponentProps} options the options of the HOC;
12
+ * @param {WithEmptyFieldEditingComponentOptions} options the options of the HOC;
43
13
  * @public
44
14
  */
45
15
  function withEmptyFieldEditingComponent(FieldComponent, options) {
@@ -59,10 +29,10 @@ function withEmptyFieldEditingComponent(FieldComponent, options) {
59
29
  return null;
60
30
  };
61
31
  if (options.isForwardRef) {
62
- return (0, react_1.forwardRef)((props, ref) => {
32
+ return (props) => {
63
33
  const emptyFieldEditingComponent = getEmptyFieldEditingComponent(props);
64
- return (emptyFieldEditingComponent || (react_1.default.createElement(FieldComponent, Object.assign({}, props, { ref: ref }))));
65
- });
34
+ return (emptyFieldEditingComponent || react_1.default.createElement(FieldComponent, Object.assign({}, props)));
35
+ };
66
36
  }
67
37
  return (props) => {
68
38
  const emptyFieldEditingComponent = getEmptyFieldEditingComponent(props);
@@ -1,59 +1,29 @@
1
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 () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
35
5
  Object.defineProperty(exports, "__esModule", { value: true });
36
6
  exports.withFieldMetadata = withFieldMetadata;
37
- const react_1 = __importStar(require("react"));
7
+ const react_1 = __importDefault(require("react"));
38
8
  const FieldMetadata_1 = require("../components/FieldMetadata");
39
9
  /**
40
10
  * Wraps the field component with metadata markup intended to be used for chromes hydration in Pages
41
11
  * @param {ComponentType<FieldComponentProps>} FieldComponent the field component
42
- * @param {boolean} isForwardRef set to 'true' if forward reference is needed
12
+ * @param {boolean} isForwardRef set to 'true' if the ref prop should be explicitly accepted and forwarded
43
13
  * @public
44
14
  */
45
15
  function withFieldMetadata(FieldComponent, isForwardRef = false) {
46
16
  if (isForwardRef) {
47
- return (0, react_1.forwardRef)((props, ref) => {
17
+ return (props) => {
48
18
  var _a;
49
19
  const { editable = true } = props;
50
20
  const metadata = (_a = props.field) === null || _a === void 0 ? void 0 : _a.metadata;
51
21
  if (!metadata || !editable) {
52
- return react_1.default.createElement(FieldComponent, Object.assign({}, props, { ref: ref }));
22
+ return react_1.default.createElement(FieldComponent, Object.assign({}, props));
53
23
  }
54
24
  return (react_1.default.createElement(FieldMetadata_1.FieldMetadata, { metadata: metadata },
55
- react_1.default.createElement(FieldComponent, Object.assign({}, props, { ref: ref }))));
56
- });
25
+ react_1.default.createElement(FieldComponent, Object.assign({}, props))));
26
+ };
57
27
  }
58
28
  return (props) => {
59
29
  var _a;
@@ -1,64 +1,28 @@
1
1
  "use strict";
2
+ 'use client';
2
3
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
4
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
5
  };
5
6
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.withPlaceholder = withPlaceholder;
7
+ exports.withPlaceholder = void 0;
7
8
  const react_1 = __importDefault(require("react"));
8
- const withComponentMap_1 = require("./withComponentMap");
9
- const withSitecore_1 = require("./withSitecore");
10
9
  const Placeholder_1 = require("../components/Placeholder");
11
- const ErrorBoundary_1 = require("../components/ErrorBoundary");
12
10
  /**
13
- * HOC to provide client-side placeholder functionality to a component.
14
- * @param {WithPlaceholderSpec} placeholders
15
- * @param {WithPlaceholderOptions} [options]
11
+ * Provides a slot-like functionality by wrapping a component in client/SSR context and rendering placeholders defined in the layout data.
12
+ * @param {ComponentType<T>} Component - The component to be wrapped around placeholders.
13
+ * @returns {React.ReactNode} A new component that renders the original component with placeholders.
16
14
  * @public
17
15
  */
18
- function withPlaceholder(placeholders, options) {
19
- return (WrappedComponent) => {
20
- class WithPlaceholder extends Placeholder_1.PlaceholderComponent {
21
- constructor(props) {
22
- super(props);
23
- }
24
- render() {
25
- let childProps = Object.assign({}, this.props);
26
- delete childProps.componentMap;
27
- if (options && options.propsTransformer) {
28
- childProps = options.propsTransformer(childProps);
29
- }
30
- if (this.state.error) {
31
- if (childProps.errorComponent) {
32
- return react_1.default.createElement(childProps.errorComponent, { error: this.state.error });
33
- }
34
- return (react_1.default.createElement(ErrorBoundary_1.ErrorComponent, { message: `A rendering error occurred: ${this.state.error.message}.` }));
35
- }
36
- const renderingData = options && options.resolvePlaceholderDataFromProps
37
- ? options.resolvePlaceholderDataFromProps(childProps)
38
- : childProps.rendering;
39
- const definitelyArrayPlacholders = !Array.isArray(placeholders)
40
- ? [placeholders]
41
- : placeholders;
42
- definitelyArrayPlacholders.forEach((placeholder) => {
43
- let placeholderData;
44
- if (typeof placeholder !== 'string' && placeholder.placeholder && placeholder.prop) {
45
- placeholderData = (0, Placeholder_1.getPlaceholderRenderings)(renderingData, placeholder.placeholder, childProps.page.mode.isEditing);
46
- if (placeholderData) {
47
- childProps[placeholder.prop] =
48
- Placeholder_1.PlaceholderComponent.getRenderedComponents(this.props, placeholderData);
49
- }
50
- }
51
- else {
52
- placeholderData = (0, Placeholder_1.getPlaceholderRenderings)(renderingData, placeholder, childProps.page.mode.isEditing);
53
- if (placeholderData) {
54
- childProps[placeholder] =
55
- Placeholder_1.PlaceholderComponent.getRenderedComponents(this.props, placeholderData);
56
- }
57
- }
58
- });
59
- return react_1.default.createElement(WrappedComponent, Object.assign({}, childProps));
60
- }
16
+ const withPlaceholder = (Component) => {
17
+ return (props) => {
18
+ const placeholders = props.rendering.placeholders || {};
19
+ const phProps = {};
20
+ for (const placeholder of Object.keys(placeholders)) {
21
+ phProps[placeholder] = (react_1.default.createElement(Placeholder_1.Placeholder, { name: placeholder, rendering: props.rendering, page: props.page, componentMap: props.componentMap }));
61
22
  }
62
- return (0, withSitecore_1.withSitecore)()((0, withComponentMap_1.withComponentMap)(WithPlaceholder));
23
+ const displayName = Component.displayName || Component.name || 'Component';
24
+ const propsCopy = Object.assign(Object.assign({}, props), { displayName });
25
+ return react_1.default.createElement(Component, Object.assign({}, propsCopy, { placeholders: phProps }));
63
26
  };
64
- }
27
+ };
28
+ exports.withPlaceholder = withPlaceholder;
@@ -5,43 +5,19 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  };
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.withSitecore = withSitecore;
8
- exports.useSitecore = useSitecore;
9
8
  const react_1 = __importDefault(require("react"));
10
9
  const SitecoreProvider_1 = require("../components/SitecoreProvider");
11
10
  /**
12
- * @param {WithSitecoreProviderOptions} [options]
11
+ * @deprecated `useSitecore` hook is a better practice for consuming Sitecore context in components
12
+ * @param {UseSitecoreOptions} [options] - Options for whether return page context update method alongside the rest of context
13
+ * @returns A higher-order component that injects Sitecore context into the wrapped component.
13
14
  * @public
14
15
  */
15
16
  function withSitecore(options) {
16
17
  return function withSitecoreProviderHoc(Component) {
17
18
  return function WithSitecoreProvider(props) {
18
- return (react_1.default.createElement(SitecoreProvider_1.SitecoreProviderReactContext.Consumer, null, (value) => (react_1.default.createElement(Component, Object.assign({}, props, { page: value.page, api: value.api, updatePage: options && options.updatable && value.setPage })))));
19
+ const scContext = (0, SitecoreProvider_1.useSitecore)(options);
20
+ return (react_1.default.createElement(Component, Object.assign({}, props, { page: scContext.page, api: scContext.api, setPage: scContext.setPage, componentMap: scContext.componentMap, loadImportMap: scContext.loadImportMap })));
19
21
  };
20
22
  };
21
23
  }
22
- /**
23
- * This hook grants acсess to the current Sitecore page and api.
24
- * @param {WithSitecoreOptions} [options] hook options
25
- * @example
26
- * const EditMode = () => {
27
- * const { page } = useSitecore();
28
- * return <span>Edit Mode is {page.mode.isEditing ? 'active' : 'inactive'}</span>
29
- * }
30
- * @example
31
- * const EditMode = () => {
32
- * const { page, updatePage } = useSitecore({ updatable: true });
33
- * const onClick = () => updatePage({ itemId: '123' });
34
- * return <span onClick={onClick}>Item id is {page.itemId}</span>
35
- * }
36
- * @returns {object} { api, page, updatePage }
37
- * @public
38
- */
39
- function useSitecore(options) {
40
- const reactContext = react_1.default.useContext(SitecoreProvider_1.SitecoreProviderReactContext);
41
- const updatable = options === null || options === void 0 ? void 0 : options.updatable;
42
- return {
43
- api: reactContext.api,
44
- page: reactContext.page,
45
- updatePage: updatable ? reactContext.setPage : undefined,
46
- };
47
- }
package/dist/cjs/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.withEmptyFieldEditingComponent = exports.withFieldMetadata = exports.withDatasourceCheck = exports.withPlaceholder = exports.withEditorChromes = exports.useSitecore = exports.withSitecore = exports.SitecoreProviderReactContext = exports.SitecoreProvider = exports.File = exports.Link = exports.DesignLibraryApp = exports.DesignLibrary = exports.BYOCServerWrapper = exports.FEaaSServerWrapper = exports.FEaaSClientWrapper = exports.FEaaSWrapper = exports.BYOCClientWrapper = exports.BYOCWrapper = exports.fetchBYOCComponentServerProps = exports.BYOCComponent = exports.fetchFEaaSComponentServerProps = exports.FEaaSComponent = exports.DateField = exports.Text = exports.RichText = exports.Image = exports.renderEmptyPlaceholder = exports.AppPlaceholder = exports.Placeholder = exports.Form = exports.mediaApi = exports.ErrorPage = exports.GraphQLRequestClient = exports.DefaultRetryStrategy = exports.DictionaryService = exports.EditMode = exports.getFieldValue = exports.getChildPlaceholder = exports.LayoutService = exports.LayoutServicePageState = exports.getDesignLibraryStylesheetLinks = exports.getContentStylesheetLink = exports.resetEditorChromes = exports.isEditorActive = exports.NativeDataFetcher = exports.MemoryCacheClient = exports.ClientError = exports.enableDebug = exports.constants = void 0;
4
- exports.SitePathService = exports.ClientEditingChromesUpdate = exports.DefaultEmptyFieldEditingComponentImage = exports.DefaultEmptyFieldEditingComponentText = exports.EditingScripts = void 0;
3
+ exports.withFieldMetadata = exports.withDatasourceCheck = exports.withSitecore = exports.withEditorChromes = exports.ErrorComponent = exports.useSitecore = exports.SitecoreProviderReactContext = exports.SitecoreProvider = exports.File = exports.Link = exports.DesignLibraryErrorBoundary = exports.DesignLibrary = exports.BYOCServerWrapper = exports.FEaaSServerWrapper = exports.FEaaSClientWrapper = exports.FEaaSWrapper = exports.BYOCClientWrapper = exports.BYOCWrapper = exports.fetchBYOCComponentServerProps = exports.BYOCComponent = exports.fetchFEaaSComponentServerProps = exports.FEaaSComponent = exports.DateField = exports.Text = exports.RichText = exports.Image = exports.renderEmptyPlaceholder = exports.PlaceholderMetadata = exports.AppPlaceholder = exports.Placeholder = exports.Form = exports.mediaApi = exports.ErrorPage = exports.GraphQLRequestClient = exports.DefaultRetryStrategy = exports.DictionaryService = exports.EditMode = exports.getFieldValue = exports.getChildPlaceholder = exports.LayoutService = exports.LayoutServicePageState = exports.getDesignLibraryStylesheetLinks = exports.getContentStylesheetLink = exports.resetEditorChromes = exports.isEditorActive = exports.NativeDataFetcher = exports.MemoryCacheClient = exports.ClientError = exports.enableDebug = exports.constants = void 0;
4
+ exports.SitePathService = exports.ClientEditingChromesUpdate = exports.DefaultEmptyFieldEditingComponentImage = exports.DefaultEmptyFieldEditingComponentText = exports.EditingScripts = exports.withPlaceholder = exports.withAppPlaceholder = exports.withEmptyFieldEditingComponent = void 0;
5
5
  var core_1 = require("@sitecore-content-sdk/core");
6
6
  Object.defineProperty(exports, "constants", { enumerable: true, get: function () { return core_1.constants; } });
7
7
  Object.defineProperty(exports, "enableDebug", { enumerable: true, get: function () { return core_1.enableDebug; } });
@@ -32,6 +32,7 @@ Object.defineProperty(exports, "Form", { enumerable: true, get: function () { re
32
32
  var Placeholder_1 = require("./components/Placeholder");
33
33
  Object.defineProperty(exports, "Placeholder", { enumerable: true, get: function () { return Placeholder_1.Placeholder; } });
34
34
  Object.defineProperty(exports, "AppPlaceholder", { enumerable: true, get: function () { return Placeholder_1.AppPlaceholder; } });
35
+ Object.defineProperty(exports, "PlaceholderMetadata", { enumerable: true, get: function () { return Placeholder_1.PlaceholderMetadata; } });
35
36
  Object.defineProperty(exports, "renderEmptyPlaceholder", { enumerable: true, get: function () { return Placeholder_1.renderEmptyPlaceholder; } });
36
37
  var Image_1 = require("./components/Image");
37
38
  Object.defineProperty(exports, "Image", { enumerable: true, get: function () { return Image_1.Image; } });
@@ -55,7 +56,7 @@ Object.defineProperty(exports, "FEaaSServerWrapper", { enumerable: true, get: fu
55
56
  Object.defineProperty(exports, "BYOCServerWrapper", { enumerable: true, get: function () { return FEaaS_1.BYOCServerWrapper; } });
56
57
  var DesignLibrary_1 = require("./components/DesignLibrary");
57
58
  Object.defineProperty(exports, "DesignLibrary", { enumerable: true, get: function () { return DesignLibrary_1.DesignLibrary; } });
58
- Object.defineProperty(exports, "DesignLibraryApp", { enumerable: true, get: function () { return DesignLibrary_1.DesignLibraryApp; } });
59
+ Object.defineProperty(exports, "DesignLibraryErrorBoundary", { enumerable: true, get: function () { return DesignLibrary_1.DesignLibraryErrorBoundary; } });
59
60
  var Link_1 = require("./components/Link");
60
61
  Object.defineProperty(exports, "Link", { enumerable: true, get: function () { return Link_1.Link; } });
61
62
  var File_1 = require("./components/File");
@@ -63,19 +64,23 @@ Object.defineProperty(exports, "File", { enumerable: true, get: function () { re
63
64
  var SitecoreProvider_1 = require("./components/SitecoreProvider");
64
65
  Object.defineProperty(exports, "SitecoreProvider", { enumerable: true, get: function () { return SitecoreProvider_1.SitecoreProvider; } });
65
66
  Object.defineProperty(exports, "SitecoreProviderReactContext", { enumerable: true, get: function () { return SitecoreProvider_1.SitecoreProviderReactContext; } });
66
- var withSitecore_1 = require("./enhancers/withSitecore");
67
- Object.defineProperty(exports, "withSitecore", { enumerable: true, get: function () { return withSitecore_1.withSitecore; } });
68
- Object.defineProperty(exports, "useSitecore", { enumerable: true, get: function () { return withSitecore_1.useSitecore; } });
67
+ Object.defineProperty(exports, "useSitecore", { enumerable: true, get: function () { return SitecoreProvider_1.useSitecore; } });
68
+ var ErrorBoundary_1 = require("./components/ErrorBoundary");
69
+ Object.defineProperty(exports, "ErrorComponent", { enumerable: true, get: function () { return ErrorBoundary_1.ErrorComponent; } });
69
70
  var withEditorChromes_1 = require("./enhancers/withEditorChromes");
70
71
  Object.defineProperty(exports, "withEditorChromes", { enumerable: true, get: function () { return withEditorChromes_1.withEditorChromes; } });
71
- var withPlaceholder_1 = require("./enhancers/withPlaceholder");
72
- Object.defineProperty(exports, "withPlaceholder", { enumerable: true, get: function () { return withPlaceholder_1.withPlaceholder; } });
72
+ var withSitecore_1 = require("./enhancers/withSitecore");
73
+ Object.defineProperty(exports, "withSitecore", { enumerable: true, get: function () { return withSitecore_1.withSitecore; } });
73
74
  var withDatasourceCheck_1 = require("./enhancers/withDatasourceCheck");
74
75
  Object.defineProperty(exports, "withDatasourceCheck", { enumerable: true, get: function () { return withDatasourceCheck_1.withDatasourceCheck; } });
75
76
  var withFieldMetadata_1 = require("./enhancers/withFieldMetadata");
76
77
  Object.defineProperty(exports, "withFieldMetadata", { enumerable: true, get: function () { return withFieldMetadata_1.withFieldMetadata; } });
77
78
  var withEmptyFieldEditingComponent_1 = require("./enhancers/withEmptyFieldEditingComponent");
78
79
  Object.defineProperty(exports, "withEmptyFieldEditingComponent", { enumerable: true, get: function () { return withEmptyFieldEditingComponent_1.withEmptyFieldEditingComponent; } });
80
+ var withAppPlaceholder_1 = require("./enhancers/withAppPlaceholder");
81
+ Object.defineProperty(exports, "withAppPlaceholder", { enumerable: true, get: function () { return withAppPlaceholder_1.withAppPlaceholder; } });
82
+ var withPlaceholder_1 = require("./enhancers/withPlaceholder");
83
+ Object.defineProperty(exports, "withPlaceholder", { enumerable: true, get: function () { return withPlaceholder_1.withPlaceholder; } });
79
84
  var EditingScripts_1 = require("./components/EditingScripts");
80
85
  Object.defineProperty(exports, "EditingScripts", { enumerable: true, get: function () { return EditingScripts_1.EditingScripts; } });
81
86
  var DefaultEmptyFieldEditingComponents_1 = require("./components/DefaultEmptyFieldEditingComponents");
@@ -4,14 +4,14 @@ exports.getOffset = exports.DEFAULT_PAGE_SIZE = void 0;
4
4
  exports.useSearchService = useSearchService;
5
5
  const search_1 = require("@sitecore-content-sdk/search");
6
6
  const react_1 = require("react");
7
- const withSitecore_1 = require("../enhancers/withSitecore");
7
+ const SitecoreProvider_1 = require("../components/SitecoreProvider");
8
8
  exports.DEFAULT_PAGE_SIZE = 10;
9
9
  /**
10
10
  * Hook to initialize and manage SearchService.
11
11
  */
12
12
  function useSearchService() {
13
13
  var _a, _b;
14
- const { api } = (0, withSitecore_1.useSitecore)();
14
+ const { api } = (0, SitecoreProvider_1.useSitecore)();
15
15
  return (0, react_1.useMemo)(() => {
16
16
  var _a;
17
17
  if (!((_a = api === null || api === void 0 ? void 0 : api.edge) === null || _a === void 0 ? void 0 : _a.clientContextId)) {
@@ -14,19 +14,13 @@ import { withFieldMetadata } from '../enhancers/withFieldMetadata';
14
14
  import { withEmptyFieldEditingComponent } from '../enhancers/withEmptyFieldEditingComponent';
15
15
  import { DefaultEmptyFieldEditingComponentText } from './DefaultEmptyFieldEditingComponents';
16
16
  import { isFieldValueEmpty } from '@sitecore-content-sdk/content/layout';
17
- /**
18
- * The DateField component.
19
- * @public
20
- */
21
- export const DateField = withFieldMetadata(withEmptyFieldEditingComponent(
22
- // eslint-disable-next-line no-unused-vars
23
- (_a) => {
24
- var { field, tag, editable = true, render } = _a, otherProps = __rest(_a, ["field", "tag", "editable", "render"]);
17
+ const DateFieldComponent = (_a) => {
18
+ var { field, tag, render } = _a, htmlProps = __rest(_a, ["field", "tag", "render"]);
25
19
  if (isFieldValueEmpty(field)) {
26
20
  return null;
27
21
  }
22
+ delete htmlProps.editable; // prevent editable from being passed to the DOM
28
23
  let children;
29
- const htmlProps = Object.assign({}, otherProps);
30
24
  if (render) {
31
25
  children = render(field.value ? new Date(field.value) : null);
32
26
  }
@@ -34,10 +28,18 @@ export const DateField = withFieldMetadata(withEmptyFieldEditingComponent(
34
28
  children = field.value;
35
29
  }
36
30
  if (tag) {
37
- return React.createElement(tag || 'span', htmlProps, children);
31
+ const Tag = (tag || 'span');
32
+ return React.createElement(Tag, Object.assign({}, htmlProps), children);
38
33
  }
39
34
  else {
40
35
  return React.createElement(React.Fragment, null, children);
41
36
  }
42
- }, { defaultEmptyFieldEditingComponent: DefaultEmptyFieldEditingComponentText }));
37
+ };
38
+ /**
39
+ * The DateField component.
40
+ * @public
41
+ */
42
+ export const DateField = withFieldMetadata(withEmptyFieldEditingComponent(DateFieldComponent, {
43
+ defaultEmptyFieldEditingComponent: DefaultEmptyFieldEditingComponentText,
44
+ }));
43
45
  DateField.displayName = 'Date';
@@ -5,7 +5,8 @@ import React from 'react';
5
5
  * @public
6
6
  */
7
7
  export const DefaultEmptyFieldEditingComponentText = (props) => {
8
- return React.createElement(props.tag || 'span', Object.assign(Object.assign({}, props), { suppressHydrationWarning: true }), '[No text in field]');
8
+ const Tag = (props.tag || 'span');
9
+ return (React.createElement(Tag, Object.assign({}, props, { suppressHydrationWarning: true }), "[No text in field]"));
9
10
  };
10
11
  /**
11
12
  * The DefaultEmptyFieldEditingComponentImage component.
@@ -6,10 +6,9 @@ import { EDITING_COMPONENT_ID, EDITING_COMPONENT_PLACEHOLDER, } from '@sitecore-
6
6
  import { DesignLibraryStatus, getDesignLibraryStatusEvent, addComponentUpdateHandler, } from '@sitecore-content-sdk/content/editing';
7
7
  import * as codegen from '@sitecore-content-sdk/content/codegen';
8
8
  import * as editing from '@sitecore-content-sdk/content/editing';
9
- import { useSitecore } from '../../enhancers/withSitecore';
9
+ import { useSitecore } from '../../components/SitecoreProvider';
10
10
  import { Placeholder, PlaceholderMetadata } from '../Placeholder';
11
11
  import { DesignLibraryErrorBoundary } from './DesignLibraryErrorBoundary';
12
- import { useLoadImportMap } from '../../enhancers/withLoadImportMap';
13
12
  import { ErrorComponent } from '../ErrorBoundary';
14
13
  let { getDesignLibraryImportMapEvent, getDesignLibraryComponentPropsEvent, addComponentPreviewHandler, sendErrorEvent, } = codegen;
15
14
  let { postToDesignLibrary } = editing;
@@ -29,15 +28,12 @@ export const __mockDependencies = (mocks) => {
29
28
  * when generation is enabled (`page.mode.designLibrary.isVariantGeneration === true`),
30
29
  * wires the **variant generation** handshake so the parent (DL Studio) can send
31
30
  * generated code to preview and iterate on.
32
- * @param {DesignLibraryProps} props
33
- * @param {() => Promise} [props.loadImportMap] Optional async loader that resolves to the import-map used to resolve the generated component’s imports. Required when `isVariantGeneration` is true.
34
31
  * @returns {JSX.Element} The preview surface, or `null` when not in Design Library mode.
35
32
  * @public
36
33
  */
37
34
  export const DesignLibrary = () => {
38
35
  var _a, _b;
39
- const { page } = useSitecore();
40
- const loadImportMap = useLoadImportMap();
36
+ const { page, loadImportMap } = useSitecore();
41
37
  const route = page.layout.sitecore.route;
42
38
  const rendering = (_a = route === null || route === void 0 ? void 0 : route.placeholders[EDITING_COMPONENT_PLACEHOLDER]) === null || _a === void 0 ? void 0 : _a[0];
43
39
  const uid = rendering === null || rendering === void 0 ? void 0 : rendering.uid;
@@ -86,7 +82,7 @@ export const DesignLibrary = () => {
86
82
  let unsubscribe;
87
83
  (async () => {
88
84
  if (!loadImportMap) {
89
- sendErrorEvent(uid, 'No loadImportMap provided', codegen.DesignLibraryPreviewError.RenderInit);
85
+ sendErrorEvent(uid, 'No loadImportMap provided', codegen.DesignLibraryPreviewError.ImportMapMissing);
90
86
  return;
91
87
  }
92
88
  let importMap;
@@ -95,7 +91,7 @@ export const DesignLibrary = () => {
95
91
  importMap = mod.default;
96
92
  }
97
93
  catch (e) {
98
- sendErrorEvent(uid, `Error loading import map: ${e}`, codegen.DesignLibraryPreviewError.RenderInit);
94
+ sendErrorEvent(uid, `Error loading import map: ${e}`, codegen.DesignLibraryPreviewError.ImportMapLoad);
99
95
  return;
100
96
  }
101
97
  // account for component being unmounted while resolving async import map
@@ -118,7 +114,7 @@ export const DesignLibrary = () => {
118
114
  cancelled = true;
119
115
  unsubscribe && unsubscribe();
120
116
  };
121
- }, [isVariantGeneration, uid]);
117
+ }, [isDesignLibrary, isVariantGeneration, uid, loadImportMap, propsState]);
122
118
  return (React.createElement("main", null, isGeneratedComponentActive ? (React.createElement(DesignLibraryErrorBoundary, { uid: uid, renderKey: renderKey },
123
119
  React.createElement(PlaceholderMetadata, { rendering: rendering },
124
120
  React.createElement(Component, { fields: propsState.fields, params: propsState.params, key: renderKey })))) : (React.createElement("div", { id: EDITING_COMPONENT_ID }, route && (React.createElement(Placeholder, { name: EDITING_COMPONENT_PLACEHOLDER, rendering: route, key: renderKey }))))));
@@ -1,6 +1,12 @@
1
1
  'use client';
2
2
  import React, { Suspense } from 'react';
3
3
  import { DesignLibraryPreviewError, sendErrorEvent } from '@sitecore-content-sdk/content/codegen';
4
+ /**
5
+ * Error boundary for the Design Library component.
6
+ * Catches errors during rendering and sends them to the Design Library
7
+ * @param {DesignLibraryErrorBoundaryProps} props - The props for the error boundary, including the component UID and children to render.
8
+ * @internal
9
+ */
4
10
  export class DesignLibraryErrorBoundary extends React.Component {
5
11
  constructor() {
6
12
  super(...arguments);
@@ -1,2 +1,2 @@
1
1
  export { DesignLibrary } from './DesignLibrary';
2
- export { DesignLibraryApp } from './DesignLibraryApp';
2
+ export { DesignLibraryErrorBoundary } from './DesignLibraryErrorBoundary';
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import React from 'react';
3
- import { useSitecore } from '../enhancers/withSitecore';
4
- import { getContentSdkPagesClientData, getDesignLibraryScriptLink } from '@sitecore-content-sdk/content/editing';
3
+ import { useSitecore } from './SitecoreProvider';
4
+ import { getContentSdkPagesClientData, getDesignLibraryScriptLink, } from '@sitecore-content-sdk/content/editing';
5
5
  /**
6
6
  * Renders client scripts and data for editing/preview mode for Pages.
7
7
  * Renders script required for the Design Library (when mode.isDesignLibrary is true).
@@ -1,14 +1,15 @@
1
1
  'use client';
2
2
  import React, { Suspense } from 'react';
3
- import { withSitecore } from '../enhancers/withSitecore';
3
+ import { useSitecore } from './SitecoreProvider';
4
4
  /**
5
5
  * Simple error component applying basic error styling.
6
6
  * @param {object} props - Either with `message` (string) or with `children` (ReactNode), but not both.
7
+ * @internal
7
8
  */
8
9
  export const ErrorComponent = (props) => {
9
10
  return (React.createElement("div", { className: "sc-content-sdk-placeholder-error" }, props.message ? props.message : props.children));
10
11
  };
11
- class ErrorBoundary extends React.Component {
12
+ class ErrorBoundaryClass extends React.Component {
12
13
  constructor(props) {
13
14
  super(props);
14
15
  this.defaultErrorMessage = 'There was a problem loading this section.';
@@ -32,7 +33,7 @@ class ErrorBoundary extends React.Component {
32
33
  return this.isInDevMode() || this.props.page.mode.isEditing || this.props.page.mode.isPreview;
33
34
  }
34
35
  render() {
35
- var _a;
36
+ var _a, _b;
36
37
  if (this.state.error) {
37
38
  if (this.props.errorComponent) {
38
39
  return React.createElement(this.props.errorComponent, { error: this.state.error });
@@ -55,10 +56,14 @@ class ErrorBoundary extends React.Component {
55
56
  }
56
57
  }
57
58
  // do not apply suspense when suspense is disabled or when on already dynamic components
58
- if (this.props.disableSuspense || this.props.isDynamic) {
59
+ if (((_b = this.props.disableSuspense) !== null && _b !== void 0 ? _b : true) || this.props.isDynamic)
59
60
  return this.props.children;
60
- }
61
61
  return (React.createElement(Suspense, { fallback: React.createElement("h4", null, this.props.componentLoadingMessage || this.defaultLoadingMessage) }, this.props.children));
62
62
  }
63
63
  }
64
- export default withSitecore()(ErrorBoundary);
64
+ const ErrorBoundary = (props) => {
65
+ const { page } = useSitecore();
66
+ const boundaryProps = Object.assign(Object.assign({}, props), { page });
67
+ return React.createElement(ErrorBoundaryClass, Object.assign({}, boundaryProps));
68
+ };
69
+ export default ErrorBoundary;
@@ -31,6 +31,8 @@ export const File = (_a) => {
31
31
  const anchorAttrs = {
32
32
  href: file.src,
33
33
  };
34
- return React.createElement('a', Object.assign(Object.assign({}, anchorAttrs), otherProps), linkText, children);
34
+ return (React.createElement("a", Object.assign({}, anchorAttrs, otherProps),
35
+ linkText,
36
+ children));
35
37
  };
36
38
  File.displayName = 'File';
@@ -1,8 +1,10 @@
1
1
  'use client';
2
2
  import React, { useEffect, useRef, useState } from 'react';
3
3
  import { form } from '@sitecore-content-sdk/content';
4
- import { useSitecore } from '../enhancers/withSitecore';
4
+ import { constants } from '@sitecore-content-sdk/core';
5
+ import { useSitecore } from './SitecoreProvider';
5
6
  import { ErrorComponent } from './ErrorBoundary';
7
+ const { ERROR_MESSAGES } = constants;
6
8
  let { executeScriptElements, loadForm, subscribeToFormSubmitEvent } = form;
7
9
  /**
8
10
  * Mock function to replace the form module functions for `testing` purposes.
@@ -19,7 +21,7 @@ export const mockFormModule = (formModule) => {
19
21
  * @public
20
22
  */
21
23
  export const Form = ({ params, rendering }) => {
22
- var _a;
24
+ var _a, _b, _c, _d, _e;
23
25
  const id = params === null || params === void 0 ? void 0 : params.RenderingIdentifier;
24
26
  const [error, setError] = useState(false);
25
27
  const [content, setContent] = useState('');
@@ -33,14 +35,14 @@ export const Form = ({ params, rendering }) => {
33
35
  const edgeId = (_b = (_a = context.api) === null || _a === void 0 ? void 0 : _a.edge) === null || _b === void 0 ? void 0 : _b.clientContextId;
34
36
  if (!edgeId) {
35
37
  /* eslint-disable no-console */
36
- console.warn('Warning: clientContextId is missing – form cannot be loaded properly on the client');
38
+ console.warn(`${ERROR_MESSAGES.MV_006}. Form cannot be loaded properly on the client`);
37
39
  return;
38
40
  }
39
41
  loadForm(edgeId, params.FormId, (_d = (_c = context.api) === null || _c === void 0 ? void 0 : _c.edge) === null || _d === void 0 ? void 0 : _d.edgeUrl)
40
42
  .then(setContent)
41
43
  .catch(() => {
42
44
  if (isEditing) {
43
- console.error(`Failed to load form with id ${params.FormId}. Check debug logs for content-sdk:form for more details.`);
45
+ console.error(`Failed to load form with id ${params.FormId}. Check debug logs for content-sdk:form for more details. ${ERROR_MESSAGES.CONTACT_SUPPORT}`);
44
46
  }
45
47
  setError(true);
46
48
  });
@@ -54,9 +56,16 @@ export const Form = ({ params, rendering }) => {
54
56
  }
55
57
  executeScriptElements(formRef.current);
56
58
  }
57
- }, [content]);
59
+ }, [
60
+ content,
61
+ isEditing,
62
+ params.FormId,
63
+ rendering.uid,
64
+ (_b = (_a = context.api) === null || _a === void 0 ? void 0 : _a.edge) === null || _b === void 0 ? void 0 : _b.clientContextId,
65
+ (_d = (_c = context.api) === null || _c === void 0 ? void 0 : _c.edge) === null || _d === void 0 ? void 0 : _d.edgeUrl,
66
+ ]);
58
67
  if (isEditing && error) {
59
68
  return React.createElement(ErrorComponent, { message: "There was a problem loading this section" });
60
69
  }
61
- return (React.createElement("div", { ref: formRef, dangerouslySetInnerHTML: { __html: content }, className: (_a = params.styles) === null || _a === void 0 ? void 0 : _a.trimEnd(), id: id ? id : undefined }));
70
+ return (React.createElement("div", { ref: formRef, dangerouslySetInnerHTML: { __html: content }, className: (_e = params.styles) === null || _e === void 0 ? void 0 : _e.trimEnd(), id: id ? id : undefined }));
62
71
  };