@uniformdev/canvas-next-rsc 19.208.0 → 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
@@ -753,6 +753,7 @@ var VisibilityRulesWrapper = (props) => {
753
753
  // src/components/UniformComposition.ts
754
754
  var UniformComposition = async ({
755
755
  resolveComponent,
756
+ resolveEmptyPlaceholder,
756
757
  route,
757
758
  ...props
758
759
  }) => {
@@ -807,7 +808,8 @@ var UniformComposition = async ({
807
808
  resolveComponent,
808
809
  serverContext,
809
810
  compositionContext,
810
- mode: props.mode
811
+ mode: props.mode,
812
+ resolveEmptyPlaceholder
811
813
  });
812
814
  let transfer = null;
813
815
  if (props.mode === "server") {
@@ -880,6 +882,7 @@ var resolveSlots = ({
880
882
  component,
881
883
  root,
882
884
  resolveComponent,
885
+ resolveEmptyPlaceholder,
883
886
  serverContext,
884
887
  compositionContext,
885
888
  mode
@@ -899,7 +902,8 @@ var resolveSlots = ({
899
902
  resolveComponent,
900
903
  serverContext,
901
904
  compositionContext,
902
- mode
905
+ mode,
906
+ resolveEmptyPlaceholder
903
907
  });
904
908
  if (resolved) {
905
909
  slots[slotName] = {
@@ -930,6 +934,7 @@ var resolveComponents = ({
930
934
  slotName,
931
935
  slotIndex,
932
936
  resolveComponent,
937
+ resolveEmptyPlaceholder,
933
938
  compositionContext,
934
939
  mode
935
940
  }) => {
@@ -955,11 +960,29 @@ var resolveComponents = ({
955
960
  component,
956
961
  server: isServer
957
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
+ }
958
981
  const {
959
982
  component: regularComponent,
960
983
  includeContext,
961
984
  suspense: componentSuspense
962
- } = resolveComponent({ component }) || {
985
+ } = resolveResult || {
963
986
  component: null
964
987
  };
965
988
  if (!systemComponent && !regularComponent) {
@@ -971,6 +994,7 @@ var resolveComponents = ({
971
994
  resolveComponent,
972
995
  serverContext,
973
996
  compositionContext,
997
+ resolveEmptyPlaceholder,
974
998
  mode
975
999
  });
976
1000
  const resolvedComponent = systemComponent || regularComponent;
@@ -1020,13 +1044,13 @@ var resolveComponents = ({
1020
1044
  if (tagElement) {
1021
1045
  elements.push(tagElement);
1022
1046
  }
1023
- const isPlaceholder = isComponentPlaceholderId(component == null ? void 0 : component._id);
1024
- if (!isPlaceholder || compositionContext.previewMode === "editor") {
1047
+ const isPlaceholder2 = isComponentPlaceholderId(component == null ? void 0 : component._id);
1048
+ if (!isPlaceholder2 || compositionContext.previewMode === "editor") {
1025
1049
  childNode = createElement3(
1026
1050
  PureContextualEditingComponentWrapper,
1027
1051
  {
1028
1052
  key: `${slotName}-${componentIndex}-wrapper`,
1029
- isPlaceholder,
1053
+ isPlaceholder: isPlaceholder2,
1030
1054
  parentComponent: parent,
1031
1055
  component,
1032
1056
  slotName,
package/dist/index.js CHANGED
@@ -780,6 +780,7 @@ var VisibilityRulesWrapper = (props) => {
780
780
  // src/components/UniformComposition.ts
781
781
  var UniformComposition = async ({
782
782
  resolveComponent,
783
+ resolveEmptyPlaceholder,
783
784
  route,
784
785
  ...props
785
786
  }) => {
@@ -834,7 +835,8 @@ var UniformComposition = async ({
834
835
  resolveComponent,
835
836
  serverContext,
836
837
  compositionContext,
837
- mode: props.mode
838
+ mode: props.mode,
839
+ resolveEmptyPlaceholder
838
840
  });
839
841
  let transfer = null;
840
842
  if (props.mode === "server") {
@@ -907,6 +909,7 @@ var resolveSlots = ({
907
909
  component,
908
910
  root,
909
911
  resolveComponent,
912
+ resolveEmptyPlaceholder,
910
913
  serverContext,
911
914
  compositionContext,
912
915
  mode
@@ -926,7 +929,8 @@ var resolveSlots = ({
926
929
  resolveComponent,
927
930
  serverContext,
928
931
  compositionContext,
929
- mode
932
+ mode,
933
+ resolveEmptyPlaceholder
930
934
  });
931
935
  if (resolved) {
932
936
  slots[slotName] = {
@@ -957,6 +961,7 @@ var resolveComponents = ({
957
961
  slotName,
958
962
  slotIndex,
959
963
  resolveComponent,
964
+ resolveEmptyPlaceholder,
960
965
  compositionContext,
961
966
  mode
962
967
  }) => {
@@ -982,11 +987,29 @@ var resolveComponents = ({
982
987
  component,
983
988
  server: isServer
984
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
+ }
985
1008
  const {
986
1009
  component: regularComponent,
987
1010
  includeContext,
988
1011
  suspense: componentSuspense
989
- } = resolveComponent({ component }) || {
1012
+ } = resolveResult || {
990
1013
  component: null
991
1014
  };
992
1015
  if (!systemComponent && !regularComponent) {
@@ -998,6 +1021,7 @@ var resolveComponents = ({
998
1021
  resolveComponent,
999
1022
  serverContext,
1000
1023
  compositionContext,
1024
+ resolveEmptyPlaceholder,
1001
1025
  mode
1002
1026
  });
1003
1027
  const resolvedComponent = systemComponent || regularComponent;
@@ -1047,13 +1071,13 @@ var resolveComponents = ({
1047
1071
  if (tagElement) {
1048
1072
  elements.push(tagElement);
1049
1073
  }
1050
- const isPlaceholder = (0, import_canvas8.isComponentPlaceholderId)(component == null ? void 0 : component._id);
1051
- if (!isPlaceholder || compositionContext.previewMode === "editor") {
1074
+ const isPlaceholder2 = (0, import_canvas8.isComponentPlaceholderId)(component == null ? void 0 : component._id);
1075
+ if (!isPlaceholder2 || compositionContext.previewMode === "editor") {
1052
1076
  childNode = (0, import_react10.createElement)(
1053
1077
  import_core.PureContextualEditingComponentWrapper,
1054
1078
  {
1055
1079
  key: `${slotName}-${componentIndex}-wrapper`,
1056
- isPlaceholder,
1080
+ isPlaceholder: isPlaceholder2,
1057
1081
  parentComponent: parent,
1058
1082
  component,
1059
1083
  slotName,
package/dist/index.mjs CHANGED
@@ -753,6 +753,7 @@ var VisibilityRulesWrapper = (props) => {
753
753
  // src/components/UniformComposition.ts
754
754
  var UniformComposition = async ({
755
755
  resolveComponent,
756
+ resolveEmptyPlaceholder,
756
757
  route,
757
758
  ...props
758
759
  }) => {
@@ -807,7 +808,8 @@ var UniformComposition = async ({
807
808
  resolveComponent,
808
809
  serverContext,
809
810
  compositionContext,
810
- mode: props.mode
811
+ mode: props.mode,
812
+ resolveEmptyPlaceholder
811
813
  });
812
814
  let transfer = null;
813
815
  if (props.mode === "server") {
@@ -880,6 +882,7 @@ var resolveSlots = ({
880
882
  component,
881
883
  root,
882
884
  resolveComponent,
885
+ resolveEmptyPlaceholder,
883
886
  serverContext,
884
887
  compositionContext,
885
888
  mode
@@ -899,7 +902,8 @@ var resolveSlots = ({
899
902
  resolveComponent,
900
903
  serverContext,
901
904
  compositionContext,
902
- mode
905
+ mode,
906
+ resolveEmptyPlaceholder
903
907
  });
904
908
  if (resolved) {
905
909
  slots[slotName] = {
@@ -930,6 +934,7 @@ var resolveComponents = ({
930
934
  slotName,
931
935
  slotIndex,
932
936
  resolveComponent,
937
+ resolveEmptyPlaceholder,
933
938
  compositionContext,
934
939
  mode
935
940
  }) => {
@@ -955,11 +960,29 @@ var resolveComponents = ({
955
960
  component,
956
961
  server: isServer
957
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
+ }
958
981
  const {
959
982
  component: regularComponent,
960
983
  includeContext,
961
984
  suspense: componentSuspense
962
- } = resolveComponent({ component }) || {
985
+ } = resolveResult || {
963
986
  component: null
964
987
  };
965
988
  if (!systemComponent && !regularComponent) {
@@ -971,6 +994,7 @@ var resolveComponents = ({
971
994
  resolveComponent,
972
995
  serverContext,
973
996
  compositionContext,
997
+ resolveEmptyPlaceholder,
974
998
  mode
975
999
  });
976
1000
  const resolvedComponent = systemComponent || regularComponent;
@@ -1020,13 +1044,13 @@ var resolveComponents = ({
1020
1044
  if (tagElement) {
1021
1045
  elements.push(tagElement);
1022
1046
  }
1023
- const isPlaceholder = isComponentPlaceholderId(component == null ? void 0 : component._id);
1024
- if (!isPlaceholder || compositionContext.previewMode === "editor") {
1047
+ const isPlaceholder2 = isComponentPlaceholderId(component == null ? void 0 : component._id);
1048
+ if (!isPlaceholder2 || compositionContext.previewMode === "editor") {
1025
1049
  childNode = createElement3(
1026
1050
  PureContextualEditingComponentWrapper,
1027
1051
  {
1028
1052
  key: `${slotName}-${componentIndex}-wrapper`,
1029
- isPlaceholder,
1053
+ isPlaceholder: isPlaceholder2,
1030
1054
  parentComponent: parent,
1031
1055
  component,
1032
1056
  slotName,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uniformdev/canvas-next-rsc",
3
- "version": "19.208.0",
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.208.0",
65
- "@uniformdev/canvas-next-rsc-client": "^19.208.0",
66
- "@uniformdev/canvas-next-rsc-shared": "^19.208.0",
67
- "@uniformdev/canvas-react": "19.208.0",
68
- "@uniformdev/context": "19.208.0",
69
- "@uniformdev/project-map": "19.208.0",
70
- "@uniformdev/redirect": "19.208.0",
71
- "@uniformdev/richtext": "19.208.0",
72
- "@uniformdev/webhooks": "19.208.0",
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": "9b96344a84cc37c1c54f9164b89ca7697611a2c0"
89
+ "gitHead": "8e4f9dd23cb5dd695511f73714b3ef055acf1955"
90
90
  }