@remkoj/optimizely-cms-react 2.0.0-pre3 → 2.0.0-pre4

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.
@@ -8,5 +8,5 @@ export type { CmsContentProps } from './types.js';
8
8
  * @param param0
9
9
  * @returns
10
10
  */
11
- export declare const CmsContent: <LocalesType = string>({ contentType, contentTypePrefix, contentLink: rawContentLink, children, fragmentData }: CmsContentProps<LocalesType>) => Promise<JSX.Element>;
11
+ export declare const CmsContent: <LocalesType = string>({ contentType, contentTypePrefix, contentLink: rawContentLink, children, fragmentData, layoutProps }: CmsContentProps<LocalesType>) => Promise<JSX.Element>;
12
12
  export default CmsContent;
@@ -12,7 +12,7 @@ import * as Queries from './queries.js';
12
12
  * @param param0
13
13
  * @returns
14
14
  */
15
- export const CmsContent = async ({ contentType, contentTypePrefix, contentLink: rawContentLink, children, fragmentData }) => {
15
+ export const CmsContent = async ({ contentType, contentTypePrefix, contentLink: rawContentLink, children, fragmentData, layoutProps }) => {
16
16
  const context = getServerContext();
17
17
  const contentLink = normalizeContentLink(rawContentLink);
18
18
  if (!contentLink) {
@@ -80,7 +80,7 @@ export const CmsContent = async ({ contentType, contentTypePrefix, contentLink:
80
80
  console.error("🔴 [CmsContent] Invalid fragment data received for ", Component.displayName ?? contentType?.join("/") ?? "[Undetermined component]");
81
81
  return _jsx(_Fragment, {});
82
82
  }
83
- return _jsx(Component, { contentLink: contentLink, data: fragmentData || {}, inEditMode: context.inEditMode });
83
+ return _jsx(Component, { contentLink: contentLink, data: fragmentData || {}, inEditMode: context.inEditMode, layoutProps: layoutProps, children: children });
84
84
  }
85
85
  if (isInline) {
86
86
  console.error(`🔴 [CmsContent] No data for content ${contentLinkToString(contentLink)}, data cannot be resolved for inline content`);
@@ -95,7 +95,7 @@ export const CmsContent = async ({ contentType, contentTypePrefix, contentLink:
95
95
  const gqlResponse = await client.request(gqlQuery, gqlVariables);
96
96
  if (context.isDebug)
97
97
  console.log("⚪ [CmsContent] Component request the following data:", gqlResponse);
98
- return _jsx(Component, { contentLink: contentLink, data: gqlResponse, inEditMode: context.inEditMode });
98
+ return _jsx(Component, { contentLink: contentLink, data: gqlResponse, inEditMode: context.inEditMode, layoutProps: layoutProps, children: children });
99
99
  }
100
100
  // Render using included fragment
101
101
  if (Utils.isCmsComponentWithFragment(Component)) {
@@ -112,12 +112,12 @@ export const CmsContent = async ({ contentType, contentTypePrefix, contentLink:
112
112
  throw new Error(`CmsContent expected to load exactly one content item of type ${name}, received ${totalItems} from Optimizely Graph. Content Item: ${JSON.stringify(fragmentVariables)}`);
113
113
  if (totalItems > 1 && context.isDebug)
114
114
  console.warn(`🟠 [CmsContent] Resolved ${totalItems} content items, expected only 1. Picked the first one`);
115
- return _jsx(Component, { contentLink: contentLink, data: fragmentResponse.contentById.items[0], inEditMode: context.inEditMode });
115
+ return _jsx(Component, { contentLink: contentLink, data: fragmentResponse.contentById.items[0], inEditMode: context.inEditMode, layoutProps: layoutProps, children: children });
116
116
  }
117
117
  // Assume there's no server side prepared data needed for the component
118
118
  if (context.isDebug)
119
119
  console.log(`⚪ [CmsContent] Component of type "${contentType?.join('/') ?? Component.displayName ?? '?'}" did not request pre-loading of data`);
120
- return _jsx(Component, { contentLink: contentLink, data: fragmentData || {}, inEditMode: context.inEditMode });
120
+ return _jsx(Component, { contentLink: contentLink, data: fragmentData || {}, inEditMode: context.inEditMode, layoutProps: layoutProps, children: children });
121
121
  };
122
122
  export default CmsContent;
123
123
  //# sourceMappingURL=cms-content.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cms-content.js","sourceRoot":"","sources":["../../../src/server/components/cms-content.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cms-content.js","sourceRoot":"","sources":["../../../src/server/components/cms-content.tsx"],"names":[],"mappings":";AAAA,OAAO,aAAa,CAAA;AAIpB,OAAO,cAAc,MAAM,uBAAuB,CAAA;AAClD,OAAO,gBAAgB,MAAM,eAAe,CAAA;AAC5C,OAAO,YAAY,EAAE,EAAE,QAAQ,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,mBAAmB,EAAoB,MAAM,iCAAiC,CAAA;AAC1J,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,KAAK,KAAK,MAAM,oBAAoB,CAAA;AAC3C,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AASvC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAAwB,EAAC,WAAW,EAAE,iBAAiB,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAgC,EAAyB,EAAE;IAE/M,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAA;IAClC,MAAM,WAAW,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAA;IAExD,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,oBAAoB;YAC5B,OAAO,CAAC,IAAI,CAAC,uEAAuE,EAAE,cAAc,CAAC,CAAA;QACzG,OAAO,mBAAK,CAAA;IAChB,CAAC;IAED,IAAI,OAAO,CAAC,oBAAoB,IAAI,CAAC,OAAO,CAAC,MAAM;QAC/C,OAAO,CAAC,IAAI,CAAC,yDAA0D,mBAAmB,CAAC,WAAW,CAAE,4CAA4C,CAAC,CAAA;IAEzJ,wBAAwB;IACxB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAA;IACjD,MAAM,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAA;IACvD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;IAC/B,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAA;QAClF,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;IACnD,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,YAAY,EAAE,CAAA;IAC/C,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU;QACrC,OAAO,CAAC,GAAG,CAAC,yDAA0D,mBAAmB,CAAC,WAAW,CAAE,EAAE,CAAC,CAAA;IAC9G,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC,eAAe,IAAI,QAAQ,CAAC,MAAM;QAClF,OAAO,CAAC,IAAI,CAAC,4FAA4F,CAAC,CAAA;IAE9G,gBAAgB;IAChB,IAAI,OAAO,CAAC,OAAO;QACf,OAAO,CAAC,GAAG,CAAC,2CAA2C,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,mBAAmB,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAA;IAE3K,6CAA6C;IAC7C,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,IAAI,QAAQ,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,wDAAyD,mBAAmB,CAAC,WAAW,CAAE,uDAAuD,CAAC,CAAA;YAChK,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAA;QAC3F,CAAC;QACD,IAAI,OAAO,CAAC,oBAAoB;YAC5B,OAAO,CAAC,IAAI,CAAC,wDAAyD,mBAAmB,CAAC,WAAW,CAAE,sEAAsE,CAAC,CAAA;QAClL,WAAW,GAAG,MAAM,cAAc,CAAC,WAA0B,EAAE,MAAM,CAAC,CAAA;IAC1E,CAAC;IAED,gKAAgK;IAChK,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;QAC1B,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,SAAS,CAAC,CAAC,OAAO,EAAE,CAAA;IAEjF,0CAA0C;IAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,iBAAiB,EAAE,CAAC;QAC3I,IAAI,OAAO,CAAC,OAAO;YACf,OAAO,CAAC,IAAI,CAAC,kCAAmC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,gDAAiD,iBAAkB,YAAY,CAAC,CAAA;QACzJ,WAAW,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAC1C,CAAC;IAED,oBAAoB;IACpB,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAqC,CAAA;IACxF,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,sCAAuC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAG,2BAA2B,CAAC,CAAA;QACjH,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,mBAAmB,EAAE,CAAC;YAC/D,MAAM,QAAQ,GAAG,eAAK,SAAS,EAAC,YAAY,qCAAsB,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,kCAAiC,CAAA;YAC/H,OAAO,QAAQ,CAAC,CAAC,CAAC,8BAAI,QAAQ,EAAG,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAA;QAC5D,CAAC;QACD,OAAO,4BAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,GAAK,CAAA;IAClD,CAAC;IACD,IAAI,OAAO,CAAC,OAAO;QACf,OAAO,CAAC,GAAG,CAAC,gDAAgD,EAAE,SAAS,EAAE,WAAW,IAAI,SAAS,CAAC,CAAA;IAEtG,qCAAqC;IACrC,MAAM,aAAa,GAAG,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAC1J,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAC5B,CAAC;QACG,IAAI,OAAO,CAAC,OAAO;YACf,OAAO,CAAC,GAAG,CAAC,mEAAmE,EAAE,aAAa,CAAC,CAAA;QAEnG,IAAI,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,CAAC;YAClF,OAAO,CAAC,KAAK,CAAC,qDAAqD,EAAE,SAAS,CAAC,WAAW,IAAI,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,0BAA0B,CAAC,CAAA;YACnJ,OAAO,mBAAK,CAAA;QAChB,CAAC;QACD,OAAO,KAAC,SAAS,IAAC,WAAW,EAAG,WAAW,EAAG,IAAI,EAAG,YAAY,IAAI,EAAE,EAAG,UAAU,EAAG,OAAO,CAAC,UAAU,EAAG,WAAW,EAAG,WAAW,YAAK,QAAQ,GAAa,CAAA;IACnK,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,uCAAwC,mBAAmB,CAAC,WAAW,CAAE,8CAA8C,CAAC,CAAA;QACtI,MAAM,IAAI,KAAK,CAAC,oEAAqE,SAAS,EAAE,WAAW,IAAI,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,SAAU,mBAAoB,mBAAmB,CAAC,WAAW,CAAE,gBAAiB,MAAM,CAAC,mBAAmB,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC1R,CAAC;IAED,+BAA+B;IAC/B,IAAI,KAAK,CAAC,2BAA2B,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAG,SAAS,CAAC,YAAY,EAAE,CAAA;QACzC,MAAM,YAAY,GAAG,KAAK,CAAC,6BAA6B,CAAC,WAA0B,CAAC,CAAA;QACpF,IAAI,OAAO,CAAC,OAAO;YACf,OAAO,CAAC,GAAG,CAAC,mDAAmD,EAAE,YAAY,CAAC,CAAA;QAClF,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,OAAO,CAAK,QAAQ,EAAE,YAAY,CAAC,CAAA;QACpE,IAAI,OAAO,CAAC,OAAO;YACf,OAAO,CAAC,GAAG,CAAC,sDAAsD,EAAE,WAAW,CAAC,CAAA;QACpF,OAAO,KAAC,SAAS,IAAC,WAAW,EAAG,WAA0B,EAAG,IAAI,EAAG,WAAW,EAAG,UAAU,EAAG,OAAO,CAAC,UAAU,EAAG,WAAW,EAAG,WAAW,YAAK,QAAQ,GAAa,CAAA;IAC3K,CAAC;IAED,iCAAiC;IACjC,IAAI,KAAK,CAAC,0BAA0B,CAAC,SAAS,CAAC,EAAE,CAAC;QAE9C,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAI,SAAS,CAAC,eAAe,EAAE,CAAA;QACrD,IAAI,OAAO,CAAC,OAAO;YAAE,OAAO,CAAC,GAAG,CAAC,0DAA2D,IAAK,EAAE,CAAC,CAAA;QACpG,MAAM,aAAa,GAAG,0QAA2Q,IAAK,QAAS,KAAK,CAAC,QAAQ,CAAE,EAAE,CAAA;QACjU,MAAM,iBAAiB,GAAG,KAAK,CAAC,6BAA6B,CAAC,WAA0B,CAAC,CAAA;QACzF,IAAI,OAAO,CAAC,OAAO;YAAE,OAAO,CAAC,GAAG,CAAC,2DAA4D,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAE,EAAE,CAAC,CAAA;QAClI,MAAM,gBAAgB,GAAG,MAAM,MAAM,CAAC,OAAO,CAA6B,aAAa,EAAE,iBAAiB,CAAC,CAAA;QAC3G,MAAM,UAAU,GAAG,gBAAgB,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,CAAA;QAC1D,IAAI,UAAU,GAAG,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,gEAAiE,IAAK,cAAe,UAAW,yCAA0C,IAAI,CAAC,SAAS,CAAE,iBAAiB,CAAE,EAAE,CAAC,CAAA;QACpM,IAAI,UAAU,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO;YAAE,OAAO,CAAC,IAAI,CAAC,4BAA6B,UAAW,uDAAuD,CAAC,CAAA;QACpJ,OAAO,KAAC,SAAS,IAAC,WAAW,EAAG,WAA0B,EAAG,IAAI,EAAG,gBAAgB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAG,UAAU,EAAG,OAAO,CAAC,UAAU,EAAG,WAAW,EAAG,WAAW,YAAK,QAAQ,GAAa,CAAA;IACrM,CAAC;IAED,uEAAuE;IACvE,IAAI,OAAO,CAAC,OAAO;QACf,OAAO,CAAC,GAAG,CAAC,qCAAsC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,WAAW,IAAI,GAAG,uCAAuC,CAAC,CAAA;IACpJ,OAAO,KAAC,SAAS,IAAC,WAAW,EAAG,WAA0B,EAAG,IAAI,EAAG,YAAY,IAAI,EAAE,EAAG,UAAU,EAAG,OAAO,CAAC,UAAU,EAAG,WAAW,EAAG,WAAW,YAAK,QAAQ,GAAa,CAAA;AAClL,CAAC,CAAA;AAED,eAAe,UAAU,CAAA"}
@@ -59,6 +59,10 @@ export type CmsContentProps<LocalesType = string> = PropsWithChildren<{
59
59
  * it will not be applied.
60
60
  */
61
61
  contentTypePrefix?: string;
62
+ /**
63
+ * Any layout properties inferred from the context
64
+ */
65
+ layoutProps?: Record<string, any>;
62
66
  }>;
63
67
  export type ContentAreaItemDefinition = {
64
68
  __typename?: string | null;
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
2
  import 'server-only';
3
3
  import type { OptimizelyCompositionProps } from './types.js';
4
- export declare function OptimizelyComposition({ node, elementFactory, propsFactory }: OptimizelyCompositionProps): Promise<JSX.Element>;
4
+ export declare function OptimizelyComposition({ node, leafPropsFactory, nodePropsFactory }: OptimizelyCompositionProps): Promise<JSX.Element>;
5
5
  export default OptimizelyComposition;
@@ -1,9 +1,8 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
1
  import 'server-only';
3
2
  import { isElementNode } from './functions.js';
4
3
  import { CmsContent } from '../cms-content.js';
5
- import { getRandomKey } from '../../../utilities.js';
6
4
  import { isContentLink, isInlineContentLink } from '@remkoj/optimizely-graph-client';
5
+ import getServerContext from '../../context.js';
7
6
  function isContentType(toTest) {
8
7
  return Array.isArray(toTest) && toTest.every(x => typeof (x) == 'string' && x.length > 0);
9
8
  }
@@ -18,25 +17,70 @@ const defaultPropsFactory = (node) => {
18
17
  };
19
18
  if (!(isContentLink(contentLink) || isInlineContentLink(contentLink)))
20
19
  throw new Error("Invalid content link: " + JSON.stringify(contentLink));
21
- return [contentLink, contentType, node.element];
20
+ const layoutData = {
21
+ type: node.type,
22
+ layoutType: node.layoutType,
23
+ template: node.template,
24
+ settings: node.settings
25
+ };
26
+ return [contentLink, contentType, node.element, layoutData];
27
+ };
28
+ function ucFirst(input) {
29
+ return input[0].toUpperCase() + input.substring(1);
30
+ }
31
+ const defaultNodePropsFactory = (node) => {
32
+ const componentTypes = [
33
+ [node.template, node.type ? ucFirst(node.type) : null, ucFirst(node.layoutType), "Component", "Content"].filter(x => x),
34
+ (node.template && node.type) ? [node.type ? ucFirst(node.type) : null, ucFirst(node.layoutType), "Component", "Content"].filter(x => x) : null,
35
+ ["Node", "Component", "Content"]
36
+ ].filter(x => x);
37
+ const contentLink = { key: node.key ?? '' };
38
+ const componentData = {};
39
+ const layoutData = {
40
+ type: node.type,
41
+ layoutType: node.layoutType,
42
+ template: node.template,
43
+ settings: node.settings
44
+ };
45
+ if (!(isContentLink(contentLink) || isInlineContentLink(contentLink)))
46
+ throw new Error("Invalid content link: " + JSON.stringify(contentLink));
47
+ return [contentLink, componentTypes, componentData, layoutData];
22
48
  };
23
- export async function OptimizelyComposition({ node, elementFactory, propsFactory = defaultPropsFactory }) {
49
+ export async function OptimizelyComposition({ node, leafPropsFactory = defaultPropsFactory, nodePropsFactory = defaultNodePropsFactory }) {
24
50
  if (isElementNode(node)) {
25
- const [contentLink, contentType, fragmentData] = propsFactory(node);
26
- return CmsContent({ contentLink, contentType, fragmentData });
51
+ const [contentLink, contentType, fragmentData, layoutProps] = leafPropsFactory(node);
52
+ return CmsContent({ contentLink, contentType, fragmentData, layoutProps });
27
53
  }
54
+ const { factory, isDebug } = getServerContext();
55
+ if (!factory)
56
+ throw new Error("OptimizelyComposition requires the factory be defined within the serverContext");
28
57
  const children = await Promise.all((node.nodes ?? []).map((child, idx) => {
29
- const childKey = `vb::node::${child.key}::${Math.round(Math.random() * 10000)}` ?? getRandomKey(child.name ?? 'vb::node');
30
- //console.log("Visual builder child: ", childKey)
58
+ const childKey = `vb::node::${child.key}::${child.name}`;
31
59
  return OptimizelyComposition({
32
60
  key: childKey,
33
61
  node: child,
34
- elementFactory,
35
- propsFactory
62
+ leafPropsFactory,
63
+ nodePropsFactory
36
64
  });
37
65
  }));
38
- const Element = elementFactory(node);
39
- return _jsx(Element, { node: { name: node.name, layoutType: node.layoutType, type: node.type, key: node.key }, children: children });
66
+ const [contentLink, contentTypes, fragmentData, layoutProps] = nodePropsFactory(node);
67
+ const firstExistingType = contentTypes.map(ct => {
68
+ const reversed = [...ct].reverse();
69
+ const hasType = factory.has(reversed);
70
+ if (!hasType && isDebug)
71
+ console.log(`🟡 [VisualBuilder] Content type ${reversed.join('/')} not found within factory`);
72
+ return hasType;
73
+ }).indexOf(true);
74
+ const contentType = contentTypes[firstExistingType];
75
+ if (!contentType)
76
+ throw new Error("OptimizelyComposition requires the factory have a definition for Component/Node");
77
+ return CmsContent({
78
+ contentType,
79
+ contentLink,
80
+ fragmentData,
81
+ children,
82
+ layoutProps
83
+ });
40
84
  }
41
85
  export default OptimizelyComposition;
42
86
  //# sourceMappingURL=Composition.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Composition.js","sourceRoot":"","sources":["../../../../src/server/components/visual-builder/Composition.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Composition.js","sourceRoot":"","sources":["../../../../src/server/components/visual-builder/Composition.tsx"],"names":[],"mappings":"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"}
@@ -7,18 +7,23 @@ export declare enum StructureNodeTypes {
7
7
  Row = "row",
8
8
  Column = "column"
9
9
  }
10
- export type CompositionStructureNode = {
10
+ export type CompositionNodeBase = {
11
11
  name: string | null;
12
+ key: string | null;
13
+ type?: string | null;
14
+ template?: string | null;
15
+ settings?: Array<{
16
+ key: string;
17
+ value: string | number | boolean;
18
+ } | null> | null;
19
+ };
20
+ export type CompositionStructureNode = CompositionNodeBase & {
12
21
  layoutType: "outline" | "grid" | "row" | "column";
13
22
  nodes?: Array<CompositionNode>;
14
- key: string | null;
15
- type: string | null;
16
23
  };
17
- export type CompositionElementNode<E extends Record<string, any> = Record<string, any>> = {
18
- name: string | null;
24
+ export type CompositionElementNode<E extends Record<string, any> = Record<string, any>> = CompositionNodeBase & {
19
25
  layoutType: "element";
20
26
  element: E;
21
- key: string | null;
22
27
  };
23
28
  export type CompositionNode<E extends Record<string, any> = Record<string, any>> = CompositionStructureNode | CompositionElementNode<E>;
24
29
  export type CompositionComponentType<NT extends CompositionNode> = ComponentType<NT extends CompositionElementNode<infer DT> ? {
@@ -27,11 +32,11 @@ export type CompositionComponentType<NT extends CompositionNode> = ComponentType
27
32
  } : PropsWithChildren<{
28
33
  node: Omit<NT, 'nodes'>;
29
34
  }>>;
30
- export type CompositionComponentFactory = (node: CompositionStructureNode) => CompositionComponentType<CompositionStructureNode>;
31
- export type CmsComponentPropsFactory = <ET extends Record<string, any>, LT = string>(node: CompositionElementNode<ET>) => [ContentLinkWithLocale<LT> | InlineContentLinkWithLocale<LT>, ContentType, ET];
35
+ export type LeafPropsFactory = <ET extends Record<string, any>, LT = string>(node: CompositionElementNode<ET>) => [ContentLinkWithLocale<LT> | InlineContentLinkWithLocale<LT>, ContentType, ET] | [ContentLinkWithLocale<LT> | InlineContentLinkWithLocale<LT>, ContentType, ET, Record<string, any>];
36
+ export type NodePropsFactory = <ET extends Record<string, any>, LT = string>(node: CompositionStructureNode) => [ContentLinkWithLocale<LT> | InlineContentLinkWithLocale<LT>, Array<ContentType>, ET] | [ContentLinkWithLocale<LT> | InlineContentLinkWithLocale<LT>, Array<ContentType>, ET, Record<string, any>];
32
37
  export type OptimizelyCompositionProps = {
33
38
  node: CompositionNode<Record<string, any>>;
34
- elementFactory: CompositionComponentFactory;
35
- propsFactory?: CmsComponentPropsFactory;
39
+ leafPropsFactory?: LeafPropsFactory;
40
+ nodePropsFactory?: NodePropsFactory;
36
41
  key?: string;
37
42
  };
package/dist/types.d.ts CHANGED
@@ -18,6 +18,10 @@ export type CmsComponentProps<T> = PropsWithChildren<{
18
18
  * Use the Server/Client context instead if you need this information
19
19
  */
20
20
  inEditMode?: boolean;
21
+ /**
22
+ * Contextual layout data, if any
23
+ */
24
+ layoutProps?: Record<string, any>;
21
25
  }>;
22
26
  export type ContentQueryProps<LocaleType = string> = ContentLink & {
23
27
  locale?: Array<LocaleType> | LocaleType | null;
@@ -62,6 +66,7 @@ export type CmsComponentWithOptionalQuery<T = DocumentNode> = BaseCmsComponent<T
62
66
  export type CmsComponent<T = DocumentNode> = T extends TypedDocumentNode<infer R, any> ? CmsComponentWithQuery<R> : T extends DocumentNode ? CmsComponentWithQuery<{
63
67
  [key: string]: any;
64
68
  }> : T extends GraphQLFragmentBase ? CmsComponentWithFragment<T> : T extends GraphQLQueryBase ? CmsComponentWithQuery<T> : CmsComponentWithOptionalQuery<T>;
69
+ export type CmsLayoutComponent<T = never> = ReactComponentType<CmsComponentProps<T>>;
65
70
  export type ComponentType = (ReactComponentType<any>) | (ReactExoticComponent<any>) | (keyof JSX.IntrinsicElements);
66
71
  export type ComponentTypeHandle = string | string[];
67
72
  export type ComponentTypeDictionary = {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@remkoj/optimizely-cms-react",
3
3
  "license": "Apache-2.0",
4
- "version": "2.0.0-pre3",
4
+ "version": "2.0.0-pre4",
5
5
  "packageManager": "yarn@4.1.1",
6
6
  "repository": "https://github.com/remkoj/optimizely-dxp-clients.git",
7
7
  "author": "Remko Jantzen <693172+remkoj@users.noreply.github.com>",
@@ -40,10 +40,10 @@
40
40
  }
41
41
  },
42
42
  "devDependencies": {
43
- "@remkoj/optimizely-graph-client": "2.0.0-pre3",
43
+ "@remkoj/optimizely-graph-client": "2.0.0-pre4",
44
44
  "@types/crypto-js": "^4.2.2",
45
45
  "@types/node": "^20.12.12",
46
- "@types/react": "^18.3.2",
46
+ "@types/react": "^18.3.3",
47
47
  "@types/react-dom": "18.3.0",
48
48
  "graphql": "^16.8.1",
49
49
  "graphql-request": "^6.1.0",
@@ -58,7 +58,7 @@
58
58
  "crypto-js": "^4.2.0"
59
59
  },
60
60
  "peerDependencies": {
61
- "@remkoj/optimizely-graph-client": "2.0.0-pre3",
61
+ "@remkoj/optimizely-graph-client": "2.0.0-pre4",
62
62
  "graphql": "^16.8.1",
63
63
  "graphql-request": "^6.1.0",
64
64
  "react": "*",