@uniformdev/canvas-next-rsc 19.207.1-alpha.28 → 19.209.0

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.
@@ -28,11 +28,22 @@ type UniformCompositionProps = PageParameters & {
28
28
  * Function to map composition components to React components.
29
29
  */
30
30
  resolveComponent: ResolveComponentFunction;
31
+ /**
32
+ * Function to map empty placeholders to React components.
33
+ */
34
+ resolveEmptyPlaceholder?: ResolveEmptyPlaceholderFunction;
31
35
  } & (UniformStaticCompositionProps | UniformServerCompositionProps);
32
36
  declare const UniformComposition: React.FC<UniformCompositionProps>;
33
37
  type ResolveComponentFunction = (options: {
34
38
  component: ComponentInstance;
35
39
  }) => ResolveComponentResult;
40
+ type ResolveEmptyPlaceholderFunction = (options: ResolveEmptyPlaceholderOptions) => ResolveEmptyPlaceholderResult;
41
+ type ResolveEmptyPlaceholderOptions = {
42
+ parentComponent: ComponentInstance | undefined;
43
+ component: ComponentInstance;
44
+ slotName: string;
45
+ slotIndex: number;
46
+ };
36
47
  type ResolveComponentResult = {
37
48
  component: ComponentType<ComponentProps<any, any>> | null;
38
49
  includeContext?: boolean;
@@ -40,6 +51,9 @@ type ResolveComponentResult = {
40
51
  fallback: ComponentType<any> | undefined;
41
52
  };
42
53
  };
54
+ type ResolveEmptyPlaceholderResult = {
55
+ component: ComponentType<ComponentProps<any, any>> | null;
56
+ };
43
57
  declare const resolveComposition: (props: Omit<ResolveComponentsOptions, "slotName" | "slotIndex" | "target"> & {
44
58
  composition: ComponentInstance;
45
59
  compositionContext: CompositionContext;
@@ -60,6 +74,7 @@ type ResolveComponentsOptions = {
60
74
  slotName: string | undefined;
61
75
  slotIndex: number | undefined;
62
76
  resolveComponent: ResolveComponentFunction;
77
+ resolveEmptyPlaceholder: ResolveEmptyPlaceholderFunction | undefined;
63
78
  compositionContext: CompositionContext;
64
79
  mode: UniformCompositionProps['mode'];
65
80
  };
@@ -28,11 +28,22 @@ type UniformCompositionProps = PageParameters & {
28
28
  * Function to map composition components to React components.
29
29
  */
30
30
  resolveComponent: ResolveComponentFunction;
31
+ /**
32
+ * Function to map empty placeholders to React components.
33
+ */
34
+ resolveEmptyPlaceholder?: ResolveEmptyPlaceholderFunction;
31
35
  } & (UniformStaticCompositionProps | UniformServerCompositionProps);
32
36
  declare const UniformComposition: React.FC<UniformCompositionProps>;
33
37
  type ResolveComponentFunction = (options: {
34
38
  component: ComponentInstance;
35
39
  }) => ResolveComponentResult;
40
+ type ResolveEmptyPlaceholderFunction = (options: ResolveEmptyPlaceholderOptions) => ResolveEmptyPlaceholderResult;
41
+ type ResolveEmptyPlaceholderOptions = {
42
+ parentComponent: ComponentInstance | undefined;
43
+ component: ComponentInstance;
44
+ slotName: string;
45
+ slotIndex: number;
46
+ };
36
47
  type ResolveComponentResult = {
37
48
  component: ComponentType<ComponentProps<any, any>> | null;
38
49
  includeContext?: boolean;
@@ -40,6 +51,9 @@ type ResolveComponentResult = {
40
51
  fallback: ComponentType<any> | undefined;
41
52
  };
42
53
  };
54
+ type ResolveEmptyPlaceholderResult = {
55
+ component: ComponentType<ComponentProps<any, any>> | null;
56
+ };
43
57
  declare const resolveComposition: (props: Omit<ResolveComponentsOptions, "slotName" | "slotIndex" | "target"> & {
44
58
  composition: ComponentInstance;
45
59
  compositionContext: CompositionContext;
@@ -60,6 +74,7 @@ type ResolveComponentsOptions = {
60
74
  slotName: string | undefined;
61
75
  slotIndex: number | undefined;
62
76
  resolveComponent: ResolveComponentFunction;
77
+ resolveEmptyPlaceholder: ResolveEmptyPlaceholderFunction | undefined;
63
78
  compositionContext: CompositionContext;
64
79
  mode: UniformCompositionProps['mode'];
65
80
  };
@@ -1,7 +1,7 @@
1
1
  import { ComponentProps, CompositionContext, SlotDefinition } from '@uniformdev/canvas-next-rsc-shared';
2
2
  export { ComponentProps, CompositionContext } from '@uniformdev/canvas-next-rsc-shared';
3
3
  import React__default, { PropsWithChildren, ReactNode, Key } from 'react';
4
- export { R as ResolveComponentFunction, a as ResolveComponentResult } from './UniformComposition-B8budr-b.mjs';
4
+ export { R as ResolveComponentFunction, a as ResolveComponentResult } from './UniformComposition-IWWzoI_H.mjs';
5
5
  import { ComponentInstance } from '@uniformdev/canvas';
6
6
  import { RichTextNode } from '@uniformdev/richtext';
7
7
  import { PureUniformTextProps } from '@uniformdev/canvas-react/core';
@@ -1,7 +1,7 @@
1
1
  import { ComponentProps, CompositionContext, SlotDefinition } from '@uniformdev/canvas-next-rsc-shared';
2
2
  export { ComponentProps, CompositionContext } from '@uniformdev/canvas-next-rsc-shared';
3
3
  import React__default, { PropsWithChildren, ReactNode, Key } from 'react';
4
- export { R as ResolveComponentFunction, a as ResolveComponentResult } from './UniformComposition-B8budr-b.js';
4
+ export { R as ResolveComponentFunction, a as ResolveComponentResult } from './UniformComposition-IWWzoI_H.js';
5
5
  import { ComponentInstance } from '@uniformdev/canvas';
6
6
  import { RichTextNode } from '@uniformdev/richtext';
7
7
  import { PureUniformTextProps } from '@uniformdev/canvas-react/core';
package/dist/index.d.mts CHANGED
@@ -5,8 +5,8 @@ import { ManifestClient } from '@uniformdev/context/api';
5
5
  import { ProjectMapClient, ProjectMapNode } from '@uniformdev/project-map';
6
6
  import { ContextState, ContextOptions } from '@uniformdev/context';
7
7
  import React__default, { PropsWithChildren } from 'react';
8
- import { U as UniformCompositionProps } from './UniformComposition-B8budr-b.mjs';
9
- export { b as UniformComposition, r as resolveComposition } from './UniformComposition-B8budr-b.mjs';
8
+ import { U as UniformCompositionProps } from './UniformComposition-IWWzoI_H.mjs';
9
+ export { b as UniformComposition, r as resolveComposition } from './UniformComposition-IWWzoI_H.mjs';
10
10
  import { ClientContextComponent } from '@uniformdev/canvas-next-rsc-client';
11
11
 
12
12
  type GetCanvasClientOptions = {
package/dist/index.d.ts CHANGED
@@ -5,8 +5,8 @@ import { ManifestClient } from '@uniformdev/context/api';
5
5
  import { ProjectMapClient, ProjectMapNode } from '@uniformdev/project-map';
6
6
  import { ContextState, ContextOptions } from '@uniformdev/context';
7
7
  import React__default, { PropsWithChildren } from 'react';
8
- import { U as UniformCompositionProps } from './UniformComposition-B8budr-b.js';
9
- export { b as UniformComposition, r as resolveComposition } from './UniformComposition-B8budr-b.js';
8
+ import { U as UniformCompositionProps } from './UniformComposition-IWWzoI_H.js';
9
+ export { b as UniformComposition, r as resolveComposition } from './UniformComposition-IWWzoI_H.js';
10
10
  import { ClientContextComponent } from '@uniformdev/canvas-next-rsc-client';
11
11
 
12
12
  type GetCanvasClientOptions = {
package/dist/index.esm.js CHANGED
@@ -679,6 +679,24 @@ var PersonalizeServer = (props) => {
679
679
  return createElement(Fragment, void 0, [...components, eventElement]);
680
680
  };
681
681
 
682
+ // src/components/PersonalizeServerHybrid.tsx
683
+ import { PersonalizeClient as PersonalizeClient2 } from "@uniformdev/canvas-next-rsc-client";
684
+ import { runPersonalization as runPersonalization3 } from "@uniformdev/canvas-next-rsc-shared";
685
+ import React5 from "react";
686
+ var PersonalizeServerHybrid = (props) => {
687
+ const { indexes } = runPersonalization3(props);
688
+ return /* @__PURE__ */ React5.createElement(
689
+ PersonalizeClient2,
690
+ {
691
+ component: props.component,
692
+ count: props.count,
693
+ slots: props.slots,
694
+ trackingEventName: props.trackingEventName,
695
+ indexes
696
+ }
697
+ );
698
+ };
699
+
682
700
  // src/components/TestServer.ts
683
701
  import { CANVAS_TEST_SLOT } from "@uniformdev/canvas";
684
702
  import {
@@ -689,9 +707,9 @@ import { createElement as createElement2, Fragment as Fragment2 } from "react";
689
707
 
690
708
  // src/components/ContextTestTransfer.tsx
691
709
  import { ClientContextTestTransfer } from "@uniformdev/canvas-next-rsc-client";
692
- import React5 from "react";
710
+ import React6 from "react";
693
711
  var ContextTestTransfer = ({ event }) => {
694
- return /* @__PURE__ */ React5.createElement(ClientContextTestTransfer, { ts: (/* @__PURE__ */ new Date()).valueOf(), event });
712
+ return /* @__PURE__ */ React6.createElement(ClientContextTestTransfer, { ts: (/* @__PURE__ */ new Date()).valueOf(), event });
695
713
  };
696
714
 
697
715
  // src/components/TestServer.ts
@@ -718,7 +736,7 @@ import {
718
736
  evaluateNodeVisibilityParameter
719
737
  } from "@uniformdev/canvas";
720
738
  import { VisibilityRulesWrapperClient } from "@uniformdev/canvas-next-rsc-client";
721
- import React6 from "react";
739
+ import React7 from "react";
722
740
  var VisibilityRulesWrapper = (props) => {
723
741
  const { context, ...rest } = props;
724
742
  let isVisible = null;
@@ -729,12 +747,13 @@ var VisibilityRulesWrapper = (props) => {
729
747
  parameter: props.parameter
730
748
  });
731
749
  }
732
- return /* @__PURE__ */ React6.createElement(VisibilityRulesWrapperClient, { ...rest, initialIsVisible: isVisible });
750
+ return /* @__PURE__ */ React7.createElement(VisibilityRulesWrapperClient, { ...rest, initialIsVisible: isVisible });
733
751
  };
734
752
 
735
753
  // src/components/UniformComposition.ts
736
754
  var UniformComposition = async ({
737
755
  resolveComponent,
756
+ resolveEmptyPlaceholder,
738
757
  route,
739
758
  ...props
740
759
  }) => {
@@ -789,7 +808,8 @@ var UniformComposition = async ({
789
808
  resolveComponent,
790
809
  serverContext,
791
810
  compositionContext,
792
- mode: props.mode
811
+ mode: props.mode,
812
+ resolveEmptyPlaceholder
793
813
  });
794
814
  let transfer = null;
795
815
  if (props.mode === "server") {
@@ -842,7 +862,7 @@ var resolveSystemComponent = ({
842
862
  let resolved = null;
843
863
  let suspense = void 0;
844
864
  if (component.type === CANVAS_PERSONALIZE_TYPE) {
845
- resolved = server ? PersonalizeServer : PersonalizeClientWrapper;
865
+ resolved = server ? resolveServerPersonalizeComponent({ config }) : PersonalizeClientWrapper;
846
866
  suspense = server && ((_a = config.ppr) == null ? void 0 : _a.personalizationSuspense);
847
867
  }
848
868
  if (component.type === CANVAS_TEST_TYPE) {
@@ -854,10 +874,15 @@ var resolveSystemComponent = ({
854
874
  suspense
855
875
  };
856
876
  };
877
+ var resolveServerPersonalizeComponent = ({ config }) => {
878
+ var _a;
879
+ return ((_a = config.evaluation) == null ? void 0 : _a.personalization) === "hybrid" ? PersonalizeServerHybrid : PersonalizeServer;
880
+ };
857
881
  var resolveSlots = ({
858
882
  component,
859
883
  root,
860
884
  resolveComponent,
885
+ resolveEmptyPlaceholder,
861
886
  serverContext,
862
887
  compositionContext,
863
888
  mode
@@ -877,7 +902,8 @@ var resolveSlots = ({
877
902
  resolveComponent,
878
903
  serverContext,
879
904
  compositionContext,
880
- mode
905
+ mode,
906
+ resolveEmptyPlaceholder
881
907
  });
882
908
  if (resolved) {
883
909
  slots[slotName] = {
@@ -908,6 +934,7 @@ var resolveComponents = ({
908
934
  slotName,
909
935
  slotIndex,
910
936
  resolveComponent,
937
+ resolveEmptyPlaceholder,
911
938
  compositionContext,
912
939
  mode
913
940
  }) => {
@@ -933,11 +960,29 @@ var resolveComponents = ({
933
960
  component,
934
961
  server: isServer
935
962
  });
963
+ const isPlaceholder = isComponentPlaceholderId(component == null ? void 0 : component._id);
964
+ let resolveResult = null;
965
+ if (isPlaceholder && resolveEmptyPlaceholder) {
966
+ const resolvedPlaceholder = resolveEmptyPlaceholder({
967
+ parentComponent: parent,
968
+ component,
969
+ slotName,
970
+ slotIndex: componentIndex
971
+ });
972
+ if (resolvedPlaceholder) {
973
+ resolveResult = {
974
+ component: resolvedPlaceholder.component
975
+ };
976
+ }
977
+ }
978
+ if (!resolveResult) {
979
+ resolveResult = resolveComponent({ component });
980
+ }
936
981
  const {
937
982
  component: regularComponent,
938
983
  includeContext,
939
984
  suspense: componentSuspense
940
- } = resolveComponent({ component }) || {
985
+ } = resolveResult || {
941
986
  component: null
942
987
  };
943
988
  if (!systemComponent && !regularComponent) {
@@ -949,6 +994,7 @@ var resolveComponents = ({
949
994
  resolveComponent,
950
995
  serverContext,
951
996
  compositionContext,
997
+ resolveEmptyPlaceholder,
952
998
  mode
953
999
  });
954
1000
  const resolvedComponent = systemComponent || regularComponent;
@@ -998,13 +1044,13 @@ var resolveComponents = ({
998
1044
  if (tagElement) {
999
1045
  elements.push(tagElement);
1000
1046
  }
1001
- const isPlaceholder = isComponentPlaceholderId(component == null ? void 0 : component._id);
1002
- if (!isPlaceholder || compositionContext.previewMode === "editor") {
1047
+ const isPlaceholder2 = isComponentPlaceholderId(component == null ? void 0 : component._id);
1048
+ if (!isPlaceholder2 || compositionContext.previewMode === "editor") {
1003
1049
  childNode = createElement3(
1004
1050
  PureContextualEditingComponentWrapper,
1005
1051
  {
1006
1052
  key: `${slotName}-${componentIndex}-wrapper`,
1007
- isPlaceholder,
1053
+ isPlaceholder: isPlaceholder2,
1008
1054
  parentComponent: parent,
1009
1055
  component,
1010
1056
  slotName,
@@ -1069,7 +1115,7 @@ import {
1069
1115
  UniformScript
1070
1116
  } from "@uniformdev/canvas-next-rsc-client";
1071
1117
  import { Suspense as Suspense2 } from "react";
1072
- import React7 from "react";
1118
+ import React8 from "react";
1073
1119
  var UniformContext = async ({
1074
1120
  clientContextComponent,
1075
1121
  children
@@ -1083,7 +1129,7 @@ var UniformContext = async ({
1083
1129
  const disableDevTools = ((_a = serverConfig2.context) == null ? void 0 : _a.disableDevTools) || false;
1084
1130
  const defaultConsent = serverConfig2.defaultConsent || false;
1085
1131
  const experimentalQuirkSerialization = ((_b = serverConfig2.experimental) == null ? void 0 : _b.quirkSerialization) || false;
1086
- return /* @__PURE__ */ React7.createElement(React7.Fragment, null, children, /* @__PURE__ */ React7.createElement(
1132
+ return /* @__PURE__ */ React8.createElement(React8.Fragment, null, children, /* @__PURE__ */ React8.createElement(
1087
1133
  ContextComponent,
1088
1134
  {
1089
1135
  manifest,
@@ -1091,16 +1137,16 @@ var UniformContext = async ({
1091
1137
  defaultConsent,
1092
1138
  experimentalQuirkSerialization
1093
1139
  }
1094
- ), /* @__PURE__ */ React7.createElement(Suspense2, { fallback: /* @__PURE__ */ React7.createElement(React7.Fragment, null) }, /* @__PURE__ */ React7.createElement(UniformScript, null)));
1140
+ ), /* @__PURE__ */ React8.createElement(Suspense2, { fallback: /* @__PURE__ */ React8.createElement(React8.Fragment, null) }, /* @__PURE__ */ React8.createElement(UniformScript, null)));
1095
1141
  };
1096
1142
 
1097
1143
  // src/components/UniformPlayground.tsx
1098
1144
  import { CANVAS_DRAFT_STATE as CANVAS_DRAFT_STATE3, CANVAS_EDITOR_STATE as CANVAS_EDITOR_STATE3 } from "@uniformdev/canvas";
1099
1145
  import { notFound as notFound2 } from "next/navigation";
1100
- import React8 from "react";
1146
+ import React9 from "react";
1101
1147
  var UniformPlayground = async ({ searchParams, ...rest }) => {
1102
1148
  if (!isDraftModeEnabled({ searchParams })) {
1103
- return /* @__PURE__ */ React8.createElement("div", null, /* @__PURE__ */ React8.createElement("h1", null, "Playground is only available in draft mode"));
1149
+ return /* @__PURE__ */ React9.createElement("div", null, /* @__PURE__ */ React9.createElement("h1", null, "Playground is only available in draft mode"));
1104
1150
  }
1105
1151
  const id = searchParams["id"];
1106
1152
  if (!id) {
@@ -1131,7 +1177,7 @@ var UniformPlayground = async ({ searchParams, ...rest }) => {
1131
1177
  if (!composition) {
1132
1178
  notFound2();
1133
1179
  }
1134
- return /* @__PURE__ */ React8.createElement(
1180
+ return /* @__PURE__ */ React9.createElement(
1135
1181
  UniformComposition,
1136
1182
  {
1137
1183
  mode: "server",
package/dist/index.js CHANGED
@@ -472,12 +472,12 @@ async function generateStaticParams() {
472
472
 
473
473
  // src/components/UniformComposition.ts
474
474
  var import_canvas8 = require("@uniformdev/canvas");
475
- var import_canvas_next_rsc_client7 = require("@uniformdev/canvas-next-rsc-client");
476
- var import_canvas_next_rsc_shared6 = require("@uniformdev/canvas-next-rsc-shared");
475
+ var import_canvas_next_rsc_client8 = require("@uniformdev/canvas-next-rsc-client");
476
+ var import_canvas_next_rsc_shared7 = require("@uniformdev/canvas-next-rsc-shared");
477
477
  var import_core = require("@uniformdev/canvas-react/core");
478
478
  var import_headers3 = require("next/headers");
479
479
  var import_navigation = require("next/navigation");
480
- var import_react9 = require("react");
480
+ var import_react10 = require("react");
481
481
 
482
482
  // src/context/createServerUniformContext.ts
483
483
  var import_canvas_next_rsc_shared = require("@uniformdev/canvas-next-rsc-shared");
@@ -711,17 +711,35 @@ var PersonalizeServer = (props) => {
711
711
  return (0, import_react5.createElement)(import_react5.Fragment, void 0, [...components, eventElement]);
712
712
  };
713
713
 
714
+ // src/components/PersonalizeServerHybrid.tsx
715
+ var import_canvas_next_rsc_client5 = require("@uniformdev/canvas-next-rsc-client");
716
+ var import_canvas_next_rsc_shared5 = require("@uniformdev/canvas-next-rsc-shared");
717
+ var import_react6 = __toESM(require("react"));
718
+ var PersonalizeServerHybrid = (props) => {
719
+ const { indexes } = (0, import_canvas_next_rsc_shared5.runPersonalization)(props);
720
+ return /* @__PURE__ */ import_react6.default.createElement(
721
+ import_canvas_next_rsc_client5.PersonalizeClient,
722
+ {
723
+ component: props.component,
724
+ count: props.count,
725
+ slots: props.slots,
726
+ trackingEventName: props.trackingEventName,
727
+ indexes
728
+ }
729
+ );
730
+ };
731
+
714
732
  // src/components/TestServer.ts
715
733
  var import_canvas6 = require("@uniformdev/canvas");
716
- var import_canvas_next_rsc_shared5 = require("@uniformdev/canvas-next-rsc-shared");
734
+ var import_canvas_next_rsc_shared6 = require("@uniformdev/canvas-next-rsc-shared");
717
735
  var import_cache2 = require("next/cache");
718
- var import_react7 = require("react");
736
+ var import_react8 = require("react");
719
737
 
720
738
  // src/components/ContextTestTransfer.tsx
721
- var import_canvas_next_rsc_client5 = require("@uniformdev/canvas-next-rsc-client");
722
- var import_react6 = __toESM(require("react"));
739
+ var import_canvas_next_rsc_client6 = require("@uniformdev/canvas-next-rsc-client");
740
+ var import_react7 = __toESM(require("react"));
723
741
  var ContextTestTransfer = ({ event }) => {
724
- return /* @__PURE__ */ import_react6.default.createElement(import_canvas_next_rsc_client5.ClientContextTestTransfer, { ts: (/* @__PURE__ */ new Date()).valueOf(), event });
742
+ return /* @__PURE__ */ import_react7.default.createElement(import_canvas_next_rsc_client6.ClientContextTestTransfer, { ts: (/* @__PURE__ */ new Date()).valueOf(), event });
725
743
  };
726
744
 
727
745
  // src/components/TestServer.ts
@@ -730,22 +748,22 @@ var TestServer = async (props) => {
730
748
  if ((_a = getServerConfig().ppr) == null ? void 0 : _a.testSuspense) {
731
749
  (0, import_cache2.unstable_noStore)();
732
750
  }
733
- const { index, event } = (0, import_canvas_next_rsc_shared5.runTest)(props);
751
+ const { index, event } = (0, import_canvas_next_rsc_shared6.runTest)(props);
734
752
  if (index === null || event === null) {
735
753
  return null;
736
754
  }
737
755
  const component = typeof index === "number" ? (_d = (_c = (_b = props.slots) == null ? void 0 : _b[import_canvas6.CANVAS_TEST_SLOT]) == null ? void 0 : _c.items[index]) != null ? _d : null : null;
738
- const eventElement = (0, import_react7.createElement)(ContextTestTransfer, {
756
+ const eventElement = (0, import_react8.createElement)(ContextTestTransfer, {
739
757
  event,
740
758
  key: `${props.slotName}-${props.slotIndex}-server-transfer`
741
759
  });
742
- return (0, import_react7.createElement)(import_react7.Fragment, void 0, [component, eventElement]);
760
+ return (0, import_react8.createElement)(import_react8.Fragment, void 0, [component, eventElement]);
743
761
  };
744
762
 
745
763
  // src/components/VisibilityRulesWrapper.tsx
746
764
  var import_canvas7 = require("@uniformdev/canvas");
747
- var import_canvas_next_rsc_client6 = require("@uniformdev/canvas-next-rsc-client");
748
- var import_react8 = __toESM(require("react"));
765
+ var import_canvas_next_rsc_client7 = require("@uniformdev/canvas-next-rsc-client");
766
+ var import_react9 = __toESM(require("react"));
749
767
  var VisibilityRulesWrapper = (props) => {
750
768
  const { context, ...rest } = props;
751
769
  let isVisible = null;
@@ -756,12 +774,13 @@ var VisibilityRulesWrapper = (props) => {
756
774
  parameter: props.parameter
757
775
  });
758
776
  }
759
- return /* @__PURE__ */ import_react8.default.createElement(import_canvas_next_rsc_client6.VisibilityRulesWrapperClient, { ...rest, initialIsVisible: isVisible });
777
+ return /* @__PURE__ */ import_react9.default.createElement(import_canvas_next_rsc_client7.VisibilityRulesWrapperClient, { ...rest, initialIsVisible: isVisible });
760
778
  };
761
779
 
762
780
  // src/components/UniformComposition.ts
763
781
  var UniformComposition = async ({
764
782
  resolveComponent,
783
+ resolveEmptyPlaceholder,
765
784
  route,
766
785
  ...props
767
786
  }) => {
@@ -775,7 +794,7 @@ var UniformComposition = async ({
775
794
  });
776
795
  searchParams = props.searchParams;
777
796
  }
778
- const { value: path } = (0, import_canvas_next_rsc_shared6.resolvePath)(props);
797
+ const { value: path } = (0, import_canvas_next_rsc_shared7.resolvePath)(props);
779
798
  if (!route || route.type === "notFound") {
780
799
  (0, import_navigation.notFound)();
781
800
  }
@@ -816,13 +835,14 @@ var UniformComposition = async ({
816
835
  resolveComponent,
817
836
  serverContext,
818
837
  compositionContext,
819
- mode: props.mode
838
+ mode: props.mode,
839
+ resolveEmptyPlaceholder
820
840
  });
821
841
  let transfer = null;
822
842
  if (props.mode === "server") {
823
843
  const headersValue = (0, import_headers3.headers)();
824
844
  const missingQuirkValue = "unknown";
825
- transfer = (0, import_react9.createElement)(ContextUpdateTransfer, {
845
+ transfer = (0, import_react10.createElement)(ContextUpdateTransfer, {
826
846
  serverContext,
827
847
  update: {
828
848
  params: props.params,
@@ -842,11 +862,11 @@ var UniformComposition = async ({
842
862
  }
843
863
  });
844
864
  } else if (props.mode === "static") {
845
- transfer = (0, import_react9.createElement)(ContextUpdateTrigger, {
865
+ transfer = (0, import_react10.createElement)(ContextUpdateTrigger, {
846
866
  path
847
867
  });
848
868
  }
849
- return (0, import_react9.createElement)(import_react9.Fragment, void 0, transfer, resolved);
869
+ return (0, import_react10.createElement)(import_react10.Fragment, void 0, transfer, resolved);
850
870
  };
851
871
  var isServerComponent = ({
852
872
  component,
@@ -869,11 +889,11 @@ var resolveSystemComponent = ({
869
889
  let resolved = null;
870
890
  let suspense = void 0;
871
891
  if (component.type === import_canvas8.CANVAS_PERSONALIZE_TYPE) {
872
- resolved = server ? PersonalizeServer : PersonalizeClientWrapper;
892
+ resolved = server ? resolveServerPersonalizeComponent({ config }) : PersonalizeClientWrapper;
873
893
  suspense = server && ((_a = config.ppr) == null ? void 0 : _a.personalizationSuspense);
874
894
  }
875
895
  if (component.type === import_canvas8.CANVAS_TEST_TYPE) {
876
- resolved = server ? TestServer : import_canvas_next_rsc_client7.TestClient;
896
+ resolved = server ? TestServer : import_canvas_next_rsc_client8.TestClient;
877
897
  suspense = server && ((_b = config.ppr) == null ? void 0 : _b.testSuspense);
878
898
  }
879
899
  return {
@@ -881,10 +901,15 @@ var resolveSystemComponent = ({
881
901
  suspense
882
902
  };
883
903
  };
904
+ var resolveServerPersonalizeComponent = ({ config }) => {
905
+ var _a;
906
+ return ((_a = config.evaluation) == null ? void 0 : _a.personalization) === "hybrid" ? PersonalizeServerHybrid : PersonalizeServer;
907
+ };
884
908
  var resolveSlots = ({
885
909
  component,
886
910
  root,
887
911
  resolveComponent,
912
+ resolveEmptyPlaceholder,
888
913
  serverContext,
889
914
  compositionContext,
890
915
  mode
@@ -904,7 +929,8 @@ var resolveSlots = ({
904
929
  resolveComponent,
905
930
  serverContext,
906
931
  compositionContext,
907
- mode
932
+ mode,
933
+ resolveEmptyPlaceholder
908
934
  });
909
935
  if (resolved) {
910
936
  slots[slotName] = {
@@ -935,6 +961,7 @@ var resolveComponents = ({
935
961
  slotName,
936
962
  slotIndex,
937
963
  resolveComponent,
964
+ resolveEmptyPlaceholder,
938
965
  compositionContext,
939
966
  mode
940
967
  }) => {
@@ -960,11 +987,29 @@ var resolveComponents = ({
960
987
  component,
961
988
  server: isServer
962
989
  });
990
+ const isPlaceholder = (0, import_canvas8.isComponentPlaceholderId)(component == null ? void 0 : component._id);
991
+ let resolveResult = null;
992
+ if (isPlaceholder && resolveEmptyPlaceholder) {
993
+ const resolvedPlaceholder = resolveEmptyPlaceholder({
994
+ parentComponent: parent,
995
+ component,
996
+ slotName,
997
+ slotIndex: componentIndex
998
+ });
999
+ if (resolvedPlaceholder) {
1000
+ resolveResult = {
1001
+ component: resolvedPlaceholder.component
1002
+ };
1003
+ }
1004
+ }
1005
+ if (!resolveResult) {
1006
+ resolveResult = resolveComponent({ component });
1007
+ }
963
1008
  const {
964
1009
  component: regularComponent,
965
1010
  includeContext,
966
1011
  suspense: componentSuspense
967
- } = resolveComponent({ component }) || {
1012
+ } = resolveResult || {
968
1013
  component: null
969
1014
  };
970
1015
  if (!systemComponent && !regularComponent) {
@@ -976,6 +1021,7 @@ var resolveComponents = ({
976
1021
  resolveComponent,
977
1022
  serverContext,
978
1023
  compositionContext,
1024
+ resolveEmptyPlaceholder,
979
1025
  mode
980
1026
  });
981
1027
  const resolvedComponent = systemComponent || regularComponent;
@@ -998,20 +1044,20 @@ var resolveComponents = ({
998
1044
  };
999
1045
  let element = null;
1000
1046
  if (wrapInSuspense) {
1001
- element = (0, import_react9.createElement)(
1002
- import_react9.Suspense,
1047
+ element = (0, import_react10.createElement)(
1048
+ import_react10.Suspense,
1003
1049
  {
1004
1050
  key,
1005
- fallback: typeof wrapInSuspense === "boolean" || typeof (wrapInSuspense == null ? void 0 : wrapInSuspense.fallback) === "undefined" ? void 0 : (0, import_react9.createElement)(wrapInSuspense.fallback)
1051
+ fallback: typeof wrapInSuspense === "boolean" || typeof (wrapInSuspense == null ? void 0 : wrapInSuspense.fallback) === "undefined" ? void 0 : (0, import_react10.createElement)(wrapInSuspense.fallback)
1006
1052
  },
1007
- (0, import_react9.createElement)(resolvedComponent, componentProps)
1053
+ (0, import_react10.createElement)(resolvedComponent, componentProps)
1008
1054
  );
1009
1055
  } else {
1010
- element = (0, import_react9.createElement)(resolvedComponent, { ...componentProps, key });
1056
+ element = (0, import_react10.createElement)(resolvedComponent, { ...componentProps, key });
1011
1057
  }
1012
1058
  let tagElement = null;
1013
1059
  if (enrichmentTags == null ? void 0 : enrichmentTags.length) {
1014
- tagElement = (0, import_react9.createElement)(ContextUpdateTransfer, {
1060
+ tagElement = (0, import_react10.createElement)(ContextUpdateTransfer, {
1015
1061
  key: `${slotName}-${componentIndex}-tags`,
1016
1062
  update: {
1017
1063
  enrichments: enrichmentTags
@@ -1025,13 +1071,13 @@ var resolveComponents = ({
1025
1071
  if (tagElement) {
1026
1072
  elements.push(tagElement);
1027
1073
  }
1028
- const isPlaceholder = (0, import_canvas8.isComponentPlaceholderId)(component == null ? void 0 : component._id);
1029
- if (!isPlaceholder || compositionContext.previewMode === "editor") {
1030
- childNode = (0, import_react9.createElement)(
1074
+ const isPlaceholder2 = (0, import_canvas8.isComponentPlaceholderId)(component == null ? void 0 : component._id);
1075
+ if (!isPlaceholder2 || compositionContext.previewMode === "editor") {
1076
+ childNode = (0, import_react10.createElement)(
1031
1077
  import_core.PureContextualEditingComponentWrapper,
1032
1078
  {
1033
1079
  key: `${slotName}-${componentIndex}-wrapper`,
1034
- isPlaceholder,
1080
+ isPlaceholder: isPlaceholder2,
1035
1081
  parentComponent: parent,
1036
1082
  component,
1037
1083
  slotName,
@@ -1047,8 +1093,8 @@ var resolveComponents = ({
1047
1093
  if (tagElement) {
1048
1094
  elements.push(tagElement);
1049
1095
  }
1050
- childNode = (0, import_react9.createElement)(
1051
- import_canvas_next_rsc_client7.ClientContextualEditingComponentWrapper,
1096
+ childNode = (0, import_react10.createElement)(
1097
+ import_canvas_next_rsc_client8.ClientContextualEditingComponentWrapper,
1052
1098
  {
1053
1099
  key: `${slotName}-${componentIndex}-wrapper`,
1054
1100
  isPlaceholder: false,
@@ -1069,7 +1115,7 @@ var resolveComponents = ({
1069
1115
  childNode = elements;
1070
1116
  }
1071
1117
  if (visibilityRules) {
1072
- childNode = (0, import_react9.createElement)(
1118
+ childNode = (0, import_react10.createElement)(
1073
1119
  VisibilityRulesWrapper,
1074
1120
  {
1075
1121
  key: `${slotName}-${componentIndex}-visibility`,
@@ -1079,8 +1125,8 @@ var resolveComponents = ({
1079
1125
  childNode
1080
1126
  );
1081
1127
  }
1082
- return (0, import_react9.createElement)(
1083
- import_react9.Fragment,
1128
+ return (0, import_react10.createElement)(
1129
+ import_react10.Fragment,
1084
1130
  {
1085
1131
  key: !isRoot ? `${slotName}-${componentIndex}` : void 0
1086
1132
  },
@@ -1091,9 +1137,9 @@ var resolveComponents = ({
1091
1137
  };
1092
1138
 
1093
1139
  // src/components/UniformContext.tsx
1094
- var import_canvas_next_rsc_client8 = require("@uniformdev/canvas-next-rsc-client");
1095
- var import_react10 = require("react");
1096
- var import_react11 = __toESM(require("react"));
1140
+ var import_canvas_next_rsc_client9 = require("@uniformdev/canvas-next-rsc-client");
1141
+ var import_react11 = require("react");
1142
+ var import_react12 = __toESM(require("react"));
1097
1143
  var UniformContext = async ({
1098
1144
  clientContextComponent,
1099
1145
  children
@@ -1102,12 +1148,12 @@ var UniformContext = async ({
1102
1148
  const manifest = await getManifest({
1103
1149
  searchParams: {}
1104
1150
  });
1105
- const ContextComponent = clientContextComponent || import_canvas_next_rsc_client8.DefaultUniformClientContext;
1151
+ const ContextComponent = clientContextComponent || import_canvas_next_rsc_client9.DefaultUniformClientContext;
1106
1152
  const serverConfig2 = getServerConfig();
1107
1153
  const disableDevTools = ((_a = serverConfig2.context) == null ? void 0 : _a.disableDevTools) || false;
1108
1154
  const defaultConsent = serverConfig2.defaultConsent || false;
1109
1155
  const experimentalQuirkSerialization = ((_b = serverConfig2.experimental) == null ? void 0 : _b.quirkSerialization) || false;
1110
- return /* @__PURE__ */ import_react11.default.createElement(import_react11.default.Fragment, null, children, /* @__PURE__ */ import_react11.default.createElement(
1156
+ return /* @__PURE__ */ import_react12.default.createElement(import_react12.default.Fragment, null, children, /* @__PURE__ */ import_react12.default.createElement(
1111
1157
  ContextComponent,
1112
1158
  {
1113
1159
  manifest,
@@ -1115,16 +1161,16 @@ var UniformContext = async ({
1115
1161
  defaultConsent,
1116
1162
  experimentalQuirkSerialization
1117
1163
  }
1118
- ), /* @__PURE__ */ import_react11.default.createElement(import_react10.Suspense, { fallback: /* @__PURE__ */ import_react11.default.createElement(import_react11.default.Fragment, null) }, /* @__PURE__ */ import_react11.default.createElement(import_canvas_next_rsc_client8.UniformScript, null)));
1164
+ ), /* @__PURE__ */ import_react12.default.createElement(import_react11.Suspense, { fallback: /* @__PURE__ */ import_react12.default.createElement(import_react12.default.Fragment, null) }, /* @__PURE__ */ import_react12.default.createElement(import_canvas_next_rsc_client9.UniformScript, null)));
1119
1165
  };
1120
1166
 
1121
1167
  // src/components/UniformPlayground.tsx
1122
1168
  var import_canvas9 = require("@uniformdev/canvas");
1123
1169
  var import_navigation2 = require("next/navigation");
1124
- var import_react12 = __toESM(require("react"));
1170
+ var import_react13 = __toESM(require("react"));
1125
1171
  var UniformPlayground = async ({ searchParams, ...rest }) => {
1126
1172
  if (!isDraftModeEnabled({ searchParams })) {
1127
- return /* @__PURE__ */ import_react12.default.createElement("div", null, /* @__PURE__ */ import_react12.default.createElement("h1", null, "Playground is only available in draft mode"));
1173
+ return /* @__PURE__ */ import_react13.default.createElement("div", null, /* @__PURE__ */ import_react13.default.createElement("h1", null, "Playground is only available in draft mode"));
1128
1174
  }
1129
1175
  const id = searchParams["id"];
1130
1176
  if (!id) {
@@ -1155,7 +1201,7 @@ var UniformPlayground = async ({ searchParams, ...rest }) => {
1155
1201
  if (!composition) {
1156
1202
  (0, import_navigation2.notFound)();
1157
1203
  }
1158
- return /* @__PURE__ */ import_react12.default.createElement(
1204
+ return /* @__PURE__ */ import_react13.default.createElement(
1159
1205
  UniformComposition,
1160
1206
  {
1161
1207
  mode: "server",
package/dist/index.mjs CHANGED
@@ -679,6 +679,24 @@ var PersonalizeServer = (props) => {
679
679
  return createElement(Fragment, void 0, [...components, eventElement]);
680
680
  };
681
681
 
682
+ // src/components/PersonalizeServerHybrid.tsx
683
+ import { PersonalizeClient as PersonalizeClient2 } from "@uniformdev/canvas-next-rsc-client";
684
+ import { runPersonalization as runPersonalization3 } from "@uniformdev/canvas-next-rsc-shared";
685
+ import React5 from "react";
686
+ var PersonalizeServerHybrid = (props) => {
687
+ const { indexes } = runPersonalization3(props);
688
+ return /* @__PURE__ */ React5.createElement(
689
+ PersonalizeClient2,
690
+ {
691
+ component: props.component,
692
+ count: props.count,
693
+ slots: props.slots,
694
+ trackingEventName: props.trackingEventName,
695
+ indexes
696
+ }
697
+ );
698
+ };
699
+
682
700
  // src/components/TestServer.ts
683
701
  import { CANVAS_TEST_SLOT } from "@uniformdev/canvas";
684
702
  import {
@@ -689,9 +707,9 @@ import { createElement as createElement2, Fragment as Fragment2 } from "react";
689
707
 
690
708
  // src/components/ContextTestTransfer.tsx
691
709
  import { ClientContextTestTransfer } from "@uniformdev/canvas-next-rsc-client";
692
- import React5 from "react";
710
+ import React6 from "react";
693
711
  var ContextTestTransfer = ({ event }) => {
694
- return /* @__PURE__ */ React5.createElement(ClientContextTestTransfer, { ts: (/* @__PURE__ */ new Date()).valueOf(), event });
712
+ return /* @__PURE__ */ React6.createElement(ClientContextTestTransfer, { ts: (/* @__PURE__ */ new Date()).valueOf(), event });
695
713
  };
696
714
 
697
715
  // src/components/TestServer.ts
@@ -718,7 +736,7 @@ import {
718
736
  evaluateNodeVisibilityParameter
719
737
  } from "@uniformdev/canvas";
720
738
  import { VisibilityRulesWrapperClient } from "@uniformdev/canvas-next-rsc-client";
721
- import React6 from "react";
739
+ import React7 from "react";
722
740
  var VisibilityRulesWrapper = (props) => {
723
741
  const { context, ...rest } = props;
724
742
  let isVisible = null;
@@ -729,12 +747,13 @@ var VisibilityRulesWrapper = (props) => {
729
747
  parameter: props.parameter
730
748
  });
731
749
  }
732
- return /* @__PURE__ */ React6.createElement(VisibilityRulesWrapperClient, { ...rest, initialIsVisible: isVisible });
750
+ return /* @__PURE__ */ React7.createElement(VisibilityRulesWrapperClient, { ...rest, initialIsVisible: isVisible });
733
751
  };
734
752
 
735
753
  // src/components/UniformComposition.ts
736
754
  var UniformComposition = async ({
737
755
  resolveComponent,
756
+ resolveEmptyPlaceholder,
738
757
  route,
739
758
  ...props
740
759
  }) => {
@@ -789,7 +808,8 @@ var UniformComposition = async ({
789
808
  resolveComponent,
790
809
  serverContext,
791
810
  compositionContext,
792
- mode: props.mode
811
+ mode: props.mode,
812
+ resolveEmptyPlaceholder
793
813
  });
794
814
  let transfer = null;
795
815
  if (props.mode === "server") {
@@ -842,7 +862,7 @@ var resolveSystemComponent = ({
842
862
  let resolved = null;
843
863
  let suspense = void 0;
844
864
  if (component.type === CANVAS_PERSONALIZE_TYPE) {
845
- resolved = server ? PersonalizeServer : PersonalizeClientWrapper;
865
+ resolved = server ? resolveServerPersonalizeComponent({ config }) : PersonalizeClientWrapper;
846
866
  suspense = server && ((_a = config.ppr) == null ? void 0 : _a.personalizationSuspense);
847
867
  }
848
868
  if (component.type === CANVAS_TEST_TYPE) {
@@ -854,10 +874,15 @@ var resolveSystemComponent = ({
854
874
  suspense
855
875
  };
856
876
  };
877
+ var resolveServerPersonalizeComponent = ({ config }) => {
878
+ var _a;
879
+ return ((_a = config.evaluation) == null ? void 0 : _a.personalization) === "hybrid" ? PersonalizeServerHybrid : PersonalizeServer;
880
+ };
857
881
  var resolveSlots = ({
858
882
  component,
859
883
  root,
860
884
  resolveComponent,
885
+ resolveEmptyPlaceholder,
861
886
  serverContext,
862
887
  compositionContext,
863
888
  mode
@@ -877,7 +902,8 @@ var resolveSlots = ({
877
902
  resolveComponent,
878
903
  serverContext,
879
904
  compositionContext,
880
- mode
905
+ mode,
906
+ resolveEmptyPlaceholder
881
907
  });
882
908
  if (resolved) {
883
909
  slots[slotName] = {
@@ -908,6 +934,7 @@ var resolveComponents = ({
908
934
  slotName,
909
935
  slotIndex,
910
936
  resolveComponent,
937
+ resolveEmptyPlaceholder,
911
938
  compositionContext,
912
939
  mode
913
940
  }) => {
@@ -933,11 +960,29 @@ var resolveComponents = ({
933
960
  component,
934
961
  server: isServer
935
962
  });
963
+ const isPlaceholder = isComponentPlaceholderId(component == null ? void 0 : component._id);
964
+ let resolveResult = null;
965
+ if (isPlaceholder && resolveEmptyPlaceholder) {
966
+ const resolvedPlaceholder = resolveEmptyPlaceholder({
967
+ parentComponent: parent,
968
+ component,
969
+ slotName,
970
+ slotIndex: componentIndex
971
+ });
972
+ if (resolvedPlaceholder) {
973
+ resolveResult = {
974
+ component: resolvedPlaceholder.component
975
+ };
976
+ }
977
+ }
978
+ if (!resolveResult) {
979
+ resolveResult = resolveComponent({ component });
980
+ }
936
981
  const {
937
982
  component: regularComponent,
938
983
  includeContext,
939
984
  suspense: componentSuspense
940
- } = resolveComponent({ component }) || {
985
+ } = resolveResult || {
941
986
  component: null
942
987
  };
943
988
  if (!systemComponent && !regularComponent) {
@@ -949,6 +994,7 @@ var resolveComponents = ({
949
994
  resolveComponent,
950
995
  serverContext,
951
996
  compositionContext,
997
+ resolveEmptyPlaceholder,
952
998
  mode
953
999
  });
954
1000
  const resolvedComponent = systemComponent || regularComponent;
@@ -998,13 +1044,13 @@ var resolveComponents = ({
998
1044
  if (tagElement) {
999
1045
  elements.push(tagElement);
1000
1046
  }
1001
- const isPlaceholder = isComponentPlaceholderId(component == null ? void 0 : component._id);
1002
- if (!isPlaceholder || compositionContext.previewMode === "editor") {
1047
+ const isPlaceholder2 = isComponentPlaceholderId(component == null ? void 0 : component._id);
1048
+ if (!isPlaceholder2 || compositionContext.previewMode === "editor") {
1003
1049
  childNode = createElement3(
1004
1050
  PureContextualEditingComponentWrapper,
1005
1051
  {
1006
1052
  key: `${slotName}-${componentIndex}-wrapper`,
1007
- isPlaceholder,
1053
+ isPlaceholder: isPlaceholder2,
1008
1054
  parentComponent: parent,
1009
1055
  component,
1010
1056
  slotName,
@@ -1069,7 +1115,7 @@ import {
1069
1115
  UniformScript
1070
1116
  } from "@uniformdev/canvas-next-rsc-client";
1071
1117
  import { Suspense as Suspense2 } from "react";
1072
- import React7 from "react";
1118
+ import React8 from "react";
1073
1119
  var UniformContext = async ({
1074
1120
  clientContextComponent,
1075
1121
  children
@@ -1083,7 +1129,7 @@ var UniformContext = async ({
1083
1129
  const disableDevTools = ((_a = serverConfig2.context) == null ? void 0 : _a.disableDevTools) || false;
1084
1130
  const defaultConsent = serverConfig2.defaultConsent || false;
1085
1131
  const experimentalQuirkSerialization = ((_b = serverConfig2.experimental) == null ? void 0 : _b.quirkSerialization) || false;
1086
- return /* @__PURE__ */ React7.createElement(React7.Fragment, null, children, /* @__PURE__ */ React7.createElement(
1132
+ return /* @__PURE__ */ React8.createElement(React8.Fragment, null, children, /* @__PURE__ */ React8.createElement(
1087
1133
  ContextComponent,
1088
1134
  {
1089
1135
  manifest,
@@ -1091,16 +1137,16 @@ var UniformContext = async ({
1091
1137
  defaultConsent,
1092
1138
  experimentalQuirkSerialization
1093
1139
  }
1094
- ), /* @__PURE__ */ React7.createElement(Suspense2, { fallback: /* @__PURE__ */ React7.createElement(React7.Fragment, null) }, /* @__PURE__ */ React7.createElement(UniformScript, null)));
1140
+ ), /* @__PURE__ */ React8.createElement(Suspense2, { fallback: /* @__PURE__ */ React8.createElement(React8.Fragment, null) }, /* @__PURE__ */ React8.createElement(UniformScript, null)));
1095
1141
  };
1096
1142
 
1097
1143
  // src/components/UniformPlayground.tsx
1098
1144
  import { CANVAS_DRAFT_STATE as CANVAS_DRAFT_STATE3, CANVAS_EDITOR_STATE as CANVAS_EDITOR_STATE3 } from "@uniformdev/canvas";
1099
1145
  import { notFound as notFound2 } from "next/navigation";
1100
- import React8 from "react";
1146
+ import React9 from "react";
1101
1147
  var UniformPlayground = async ({ searchParams, ...rest }) => {
1102
1148
  if (!isDraftModeEnabled({ searchParams })) {
1103
- return /* @__PURE__ */ React8.createElement("div", null, /* @__PURE__ */ React8.createElement("h1", null, "Playground is only available in draft mode"));
1149
+ return /* @__PURE__ */ React9.createElement("div", null, /* @__PURE__ */ React9.createElement("h1", null, "Playground is only available in draft mode"));
1104
1150
  }
1105
1151
  const id = searchParams["id"];
1106
1152
  if (!id) {
@@ -1131,7 +1177,7 @@ var UniformPlayground = async ({ searchParams, ...rest }) => {
1131
1177
  if (!composition) {
1132
1178
  notFound2();
1133
1179
  }
1134
- return /* @__PURE__ */ React8.createElement(
1180
+ return /* @__PURE__ */ React9.createElement(
1135
1181
  UniformComposition,
1136
1182
  {
1137
1183
  mode: "server",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uniformdev/canvas-next-rsc",
3
- "version": "19.207.1-alpha.28+369def3ba0",
3
+ "version": "19.209.0",
4
4
  "license": "SEE LICENSE IN LICENSE.txt",
5
5
  "scripts": {
6
6
  "build": "tsup",
@@ -61,15 +61,15 @@
61
61
  "react-dom": "18.3.1"
62
62
  },
63
63
  "dependencies": {
64
- "@uniformdev/canvas": "19.207.1-alpha.28+369def3ba0",
65
- "@uniformdev/canvas-next-rsc-client": "^19.207.1-alpha.28+369def3ba0",
66
- "@uniformdev/canvas-next-rsc-shared": "^19.207.1-alpha.28+369def3ba0",
67
- "@uniformdev/canvas-react": "19.207.1-alpha.28+369def3ba0",
68
- "@uniformdev/context": "19.207.1-alpha.28+369def3ba0",
69
- "@uniformdev/project-map": "19.207.1-alpha.28+369def3ba0",
70
- "@uniformdev/redirect": "19.207.1-alpha.28+369def3ba0",
71
- "@uniformdev/richtext": "19.207.1-alpha.28+369def3ba0",
72
- "@uniformdev/webhooks": "19.207.1-alpha.28+369def3ba0",
64
+ "@uniformdev/canvas": "19.209.0",
65
+ "@uniformdev/canvas-next-rsc-client": "^19.209.0",
66
+ "@uniformdev/canvas-next-rsc-shared": "^19.209.0",
67
+ "@uniformdev/canvas-react": "19.209.0",
68
+ "@uniformdev/context": "19.209.0",
69
+ "@uniformdev/project-map": "19.209.0",
70
+ "@uniformdev/redirect": "19.209.0",
71
+ "@uniformdev/richtext": "19.209.0",
72
+ "@uniformdev/webhooks": "19.209.0",
73
73
  "@vercel/edge-config": "^0.4.0",
74
74
  "encoding": "^0.1.13",
75
75
  "server-only": "^0.0.1",
@@ -86,5 +86,5 @@
86
86
  "publishConfig": {
87
87
  "access": "public"
88
88
  },
89
- "gitHead": "369def3ba012b3fc314254d940448b9937e12900"
89
+ "gitHead": "8e4f9dd23cb5dd695511f73714b3ef055acf1955"
90
90
  }