@measured/puck 0.20.0-canary.755737e8 → 0.20.0-canary.93d525c5

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.
package/dist/rsc.d.mts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { a as Config, U as UserGenerics, M as Metadata } from './walk-tree-6PP75PCU.mjs';
3
- export { af as migrate, ah as resolveAllData, ag as transformProps, w as walkTree } from './walk-tree-6PP75PCU.mjs';
2
+ import { a as Config, U as UserGenerics, M as Metadata } from './walk-tree-BOSl1o0G.mjs';
3
+ export { af as migrate, ah as resolveAllData, ag as transformProps, w as walkTree } from './walk-tree-BOSl1o0G.mjs';
4
4
  import 'react';
5
5
 
6
6
  declare function Render<UserConfig extends Config = Config, G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>>({ config, data, metadata, }: {
package/dist/rsc.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { a as Config, U as UserGenerics, M as Metadata } from './walk-tree-6PP75PCU.js';
3
- export { af as migrate, ah as resolveAllData, ag as transformProps, w as walkTree } from './walk-tree-6PP75PCU.js';
2
+ import { a as Config, U as UserGenerics, M as Metadata } from './walk-tree-BOSl1o0G.js';
3
+ export { af as migrate, ah as resolveAllData, ag as transformProps, w as walkTree } from './walk-tree-BOSl1o0G.js';
4
4
  import 'react';
5
5
 
6
6
  declare function Render<UserConfig extends Config = Config, G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>>({ config, data, metadata, }: {
package/dist/rsc.js CHANGED
@@ -816,8 +816,8 @@ var migrations = [
816
816
  return data;
817
817
  },
818
818
  // Migrate zones to slots
819
- (data, config) => {
820
- var _a;
819
+ (data, config, migrationOptions) => {
820
+ var _a, _b;
821
821
  if (!config) return data;
822
822
  console.log("Migrating DropZones to slots...");
823
823
  const updatedItems = {};
@@ -825,13 +825,13 @@ var migrations = [
825
825
  const { indexes } = walkAppState(appState, config);
826
826
  const deletedCompounds = [];
827
827
  walkAppState(appState, config, (content, zoneCompound, zoneType) => {
828
- var _a2, _b, _c;
828
+ var _a2, _b2, _c;
829
829
  if (zoneType === "dropzone") {
830
830
  const [id, slotName] = zoneCompound.split(":");
831
831
  const nodeData = indexes.nodes[id].data;
832
832
  const componentType = nodeData.type;
833
833
  const configForComponent = id === "root" ? config.root : config.components[componentType];
834
- if (((_b = (_a2 = configForComponent == null ? void 0 : configForComponent.fields) == null ? void 0 : _a2[slotName]) == null ? void 0 : _b.type) === "slot") {
834
+ if (((_b2 = (_a2 = configForComponent == null ? void 0 : configForComponent.fields) == null ? void 0 : _a2[slotName]) == null ? void 0 : _b2.type) === "slot") {
835
835
  updatedItems[id] = __spreadProps(__spreadValues({}, nodeData), {
836
836
  props: __spreadProps(__spreadValues(__spreadValues({}, nodeData.props), (_c = updatedItems[id]) == null ? void 0 : _c.props), {
837
837
  [slotName]: content
@@ -860,7 +860,49 @@ var migrations = [
860
860
  );
861
861
  (_a2 = updated.data.zones) == null ? true : delete _a2[zoneCompound];
862
862
  });
863
- Object.keys((_a = updated.data.zones) != null ? _a : {}).forEach((zoneCompound) => {
863
+ if (migrationOptions == null ? void 0 : migrationOptions.migrateDynamicZonesForComponent) {
864
+ const unmigratedZonesGrouped = {};
865
+ Object.keys((_a = updated.data.zones) != null ? _a : {}).forEach((zoneCompound) => {
866
+ var _a2;
867
+ const [componentId, propName] = zoneCompound.split(":");
868
+ const content = (_a2 = updated.data.zones) == null ? void 0 : _a2[zoneCompound];
869
+ if (!content) {
870
+ return;
871
+ }
872
+ if (!unmigratedZonesGrouped[componentId]) {
873
+ unmigratedZonesGrouped[componentId] = {};
874
+ }
875
+ if (!unmigratedZonesGrouped[componentId][propName]) {
876
+ unmigratedZonesGrouped[componentId][propName] = content;
877
+ }
878
+ });
879
+ Object.keys(unmigratedZonesGrouped).forEach((componentId) => {
880
+ updated.data = walkTree(updated.data, config, (content) => {
881
+ return content.map((child) => {
882
+ var _a2;
883
+ if (child.props.id !== componentId) {
884
+ return child;
885
+ }
886
+ const migrateFn = (_a2 = migrationOptions == null ? void 0 : migrationOptions.migrateDynamicZonesForComponent) == null ? void 0 : _a2[child.type];
887
+ if (!migrateFn) {
888
+ return child;
889
+ }
890
+ const zones = unmigratedZonesGrouped[componentId];
891
+ const migratedProps = migrateFn(child.props, zones);
892
+ Object.keys(zones).forEach((propName) => {
893
+ var _a3;
894
+ const zoneCompound = `${componentId}:${propName}`;
895
+ console.log(`\u2713 Success: Migrated "${zoneCompound}" DropZone`);
896
+ (_a3 = updated.data.zones) == null ? true : delete _a3[zoneCompound];
897
+ });
898
+ return __spreadProps(__spreadValues({}, child), {
899
+ props: migratedProps
900
+ });
901
+ });
902
+ });
903
+ });
904
+ }
905
+ Object.keys((_b = updated.data.zones) != null ? _b : {}).forEach((zoneCompound) => {
864
906
  const [_, propName] = zoneCompound.split(":");
865
907
  throw new Error(
866
908
  `Could not migrate DropZone "${zoneCompound}" to slot field. No slot exists with the name "${propName}".`
@@ -870,9 +912,9 @@ var migrations = [
870
912
  return updated.data;
871
913
  }
872
914
  ];
873
- function migrate(data, config) {
915
+ function migrate(data, config, migrationOptions) {
874
916
  return migrations == null ? void 0 : migrations.reduce(
875
- (acc, migration) => migration(acc, config),
917
+ (acc, migration) => migration(acc, config, migrationOptions),
876
918
  data
877
919
  );
878
920
  }
package/dist/rsc.mjs CHANGED
@@ -4,7 +4,7 @@ import {
4
4
  resolveAllData,
5
5
  transformProps,
6
6
  walkTree
7
- } from "./chunk-IM42S4YL.mjs";
7
+ } from "./chunk-H6KSTNLT.mjs";
8
8
  export {
9
9
  Render,
10
10
  migrate,
@@ -49,11 +49,11 @@ type RadioField = BaseField & {
49
49
  type: "radio";
50
50
  options: FieldOptions;
51
51
  };
52
- type ArrayField<Props extends {
52
+ type ArrayField<Props extends any = {
53
53
  [key: string]: any;
54
- } = {
54
+ }> = Props extends {
55
55
  [key: string]: any;
56
- }> = BaseField & {
56
+ } ? BaseField & {
57
57
  type: "array";
58
58
  arrayFields: {
59
59
  [SubPropName in keyof Props[0]]: Field<Props[0][SubPropName]>;
@@ -62,14 +62,12 @@ type ArrayField<Props extends {
62
62
  getItemSummary?: (item: Props[0], index?: number) => string;
63
63
  max?: number;
64
64
  min?: number;
65
- };
66
- type ObjectField<Props extends {
67
- [key: string]: any;
68
- } = {
65
+ } : never;
66
+ type ObjectField<Props extends any = {
69
67
  [key: string]: any;
70
68
  }> = BaseField & {
71
69
  type: "object";
72
- objectFields: Props extends any[] ? never : {
70
+ objectFields: {
73
71
  [SubPropName in keyof Props]: Field<Props[SubPropName]>;
74
72
  };
75
73
  };
@@ -78,20 +76,17 @@ type Adaptor<AdaptorParams = {}, TableShape extends Record<string, any> = {}, Pr
78
76
  fetchList: (adaptorParams?: AdaptorParams) => Promise<TableShape[] | null>;
79
77
  mapProp?: (value: TableShape) => PropShape;
80
78
  };
81
- type ExternalFieldWithAdaptor<Props extends {
82
- [key: string]: any;
83
- } = {
79
+ type NotUndefined<T> = T extends undefined ? Record<string, any> : T;
80
+ type ExternalFieldWithAdaptor<Props extends any = {
84
81
  [key: string]: any;
85
82
  }> = BaseField & {
86
83
  type: "external";
87
84
  placeholder?: string;
88
85
  adaptor: Adaptor<any, any, Props>;
89
86
  adaptorParams?: object;
90
- getItemSummary: (item: Props, index?: number) => string;
87
+ getItemSummary: (item: NotUndefined<Props>, index?: number) => string;
91
88
  };
92
- type ExternalField<Props extends {
93
- [key: string]: any;
94
- } = {
89
+ type ExternalField<Props extends any = {
95
90
  [key: string]: any;
96
91
  }> = BaseField & {
97
92
  type: "external";
@@ -102,7 +97,7 @@ type ExternalField<Props extends {
102
97
  }) => Promise<any[] | null>;
103
98
  mapProp?: (value: any) => Props;
104
99
  mapRow?: (value: any) => Record<string, string | number | ReactElement>;
105
- getItemSummary?: (item: Props, index?: number) => string;
100
+ getItemSummary?: (item: NotUndefined<Props>, index?: number) => string;
106
101
  showSearch?: boolean;
107
102
  renderFooter?: (props: {
108
103
  items: any[];
@@ -128,15 +123,7 @@ type SlotField = BaseField & {
128
123
  allow?: string[];
129
124
  disallow?: string[];
130
125
  };
131
- type Field<Props extends any = any> = TextField | NumberField | TextareaField | SelectField | RadioField | ArrayField<Props extends {
132
- [key: string]: any;
133
- } ? Props : any> | ObjectField<Props extends {
134
- [key: string]: any;
135
- } ? Props : any> | ExternalField<Props extends {
136
- [key: string]: any;
137
- } ? Props : any> | ExternalFieldWithAdaptor<Props extends {
138
- [key: string]: any;
139
- } ? Props : any> | CustomField<Props> | SlotField;
126
+ type Field<ValueType = any> = TextField | NumberField | TextareaField | SelectField | RadioField | ArrayField<ValueType> | ObjectField<ValueType> | ExternalField<ValueType> | ExternalFieldWithAdaptor<ValueType> | CustomField<ValueType> | SlotField;
140
127
  type Fields<ComponentProps extends DefaultComponentProps = DefaultComponentProps> = {
141
128
  [PropName in keyof Omit<ComponentProps, "editMode">]: Field<ComponentProps[PropName]>;
142
129
  };
@@ -353,12 +340,12 @@ type BuiltinTypes = Date | RegExp | Error | Function | symbol | null | undefined
353
340
  type WithDeepSlots<T, SlotType = T> = T extends Slot ? SlotType : T extends (infer U)[] ? Array<WithDeepSlots<U, SlotType>> : T extends (infer U)[] ? WithDeepSlots<U, SlotType>[] : T extends BuiltinTypes ? T : T extends object ? {
354
341
  [K in keyof T]: WithDeepSlots<T[K], SlotType>;
355
342
  } : T;
343
+
356
344
  type RenderFunc<Props extends {
357
345
  [key: string]: any;
358
346
  } = {
359
347
  children: ReactNode;
360
348
  }> = (props: Props) => ReactElement;
361
-
362
349
  declare const overrideKeys: readonly ["header", "headerActions", "fields", "fieldLabel", "components", "componentItem", "outline", "puck", "preview"];
363
350
  type OverrideKey = (typeof overrideKeys)[number];
364
351
  type OverridesGeneric<Shape extends {
@@ -443,11 +430,7 @@ type IframeConfig = {
443
430
  };
444
431
  type OnAction<UserData extends Data = Data> = (action: PuckAction, appState: AppState<UserData>, prevAppState: AppState<UserData>) => void;
445
432
  type Plugin = {
446
- name?: string;
447
- label?: string;
448
- icon?: ReactNode;
449
- render?: () => ReactElement;
450
- overrides?: Partial<Overrides>;
433
+ overrides: Partial<Overrides>;
451
434
  };
452
435
  type History<D = any> = {
453
436
  state: D;
@@ -539,7 +522,12 @@ type PuckAction = {
539
522
  recordHistory?: boolean;
540
523
  } & (ReorderAction | InsertAction | MoveAction | ReplaceAction | ReplaceRootAction | RemoveAction | DuplicateAction | SetAction | SetDataAction | SetUiAction | RegisterZoneAction | UnregisterZoneAction);
541
524
 
542
- declare function migrate(data: Data, config?: Config): Data;
525
+ type MigrationOptions<UserConfig extends Config> = {
526
+ migrateDynamicZonesForComponent?: {
527
+ [ComponentName in keyof UserConfig["components"]]: (props: WithId<UserGenerics<UserConfig>["UserProps"][ComponentName]>, zones: Record<string, Content>) => ComponentData["props"];
528
+ };
529
+ };
530
+ declare function migrate<UserConfig extends Config = Config>(data: Data, config?: UserConfig, migrationOptions?: MigrationOptions<UserConfig>): Data;
543
531
 
544
532
  type PropTransform<Props extends DefaultComponentProps = DefaultComponentProps, RootProps extends DefaultComponentProps = DefaultRootFieldProps> = Partial<{
545
533
  [ComponentName in keyof Props]: (props: Props[ComponentName] & {
@@ -49,11 +49,11 @@ type RadioField = BaseField & {
49
49
  type: "radio";
50
50
  options: FieldOptions;
51
51
  };
52
- type ArrayField<Props extends {
52
+ type ArrayField<Props extends any = {
53
53
  [key: string]: any;
54
- } = {
54
+ }> = Props extends {
55
55
  [key: string]: any;
56
- }> = BaseField & {
56
+ } ? BaseField & {
57
57
  type: "array";
58
58
  arrayFields: {
59
59
  [SubPropName in keyof Props[0]]: Field<Props[0][SubPropName]>;
@@ -62,14 +62,12 @@ type ArrayField<Props extends {
62
62
  getItemSummary?: (item: Props[0], index?: number) => string;
63
63
  max?: number;
64
64
  min?: number;
65
- };
66
- type ObjectField<Props extends {
67
- [key: string]: any;
68
- } = {
65
+ } : never;
66
+ type ObjectField<Props extends any = {
69
67
  [key: string]: any;
70
68
  }> = BaseField & {
71
69
  type: "object";
72
- objectFields: Props extends any[] ? never : {
70
+ objectFields: {
73
71
  [SubPropName in keyof Props]: Field<Props[SubPropName]>;
74
72
  };
75
73
  };
@@ -78,20 +76,17 @@ type Adaptor<AdaptorParams = {}, TableShape extends Record<string, any> = {}, Pr
78
76
  fetchList: (adaptorParams?: AdaptorParams) => Promise<TableShape[] | null>;
79
77
  mapProp?: (value: TableShape) => PropShape;
80
78
  };
81
- type ExternalFieldWithAdaptor<Props extends {
82
- [key: string]: any;
83
- } = {
79
+ type NotUndefined<T> = T extends undefined ? Record<string, any> : T;
80
+ type ExternalFieldWithAdaptor<Props extends any = {
84
81
  [key: string]: any;
85
82
  }> = BaseField & {
86
83
  type: "external";
87
84
  placeholder?: string;
88
85
  adaptor: Adaptor<any, any, Props>;
89
86
  adaptorParams?: object;
90
- getItemSummary: (item: Props, index?: number) => string;
87
+ getItemSummary: (item: NotUndefined<Props>, index?: number) => string;
91
88
  };
92
- type ExternalField<Props extends {
93
- [key: string]: any;
94
- } = {
89
+ type ExternalField<Props extends any = {
95
90
  [key: string]: any;
96
91
  }> = BaseField & {
97
92
  type: "external";
@@ -102,7 +97,7 @@ type ExternalField<Props extends {
102
97
  }) => Promise<any[] | null>;
103
98
  mapProp?: (value: any) => Props;
104
99
  mapRow?: (value: any) => Record<string, string | number | ReactElement>;
105
- getItemSummary?: (item: Props, index?: number) => string;
100
+ getItemSummary?: (item: NotUndefined<Props>, index?: number) => string;
106
101
  showSearch?: boolean;
107
102
  renderFooter?: (props: {
108
103
  items: any[];
@@ -128,15 +123,7 @@ type SlotField = BaseField & {
128
123
  allow?: string[];
129
124
  disallow?: string[];
130
125
  };
131
- type Field<Props extends any = any> = TextField | NumberField | TextareaField | SelectField | RadioField | ArrayField<Props extends {
132
- [key: string]: any;
133
- } ? Props : any> | ObjectField<Props extends {
134
- [key: string]: any;
135
- } ? Props : any> | ExternalField<Props extends {
136
- [key: string]: any;
137
- } ? Props : any> | ExternalFieldWithAdaptor<Props extends {
138
- [key: string]: any;
139
- } ? Props : any> | CustomField<Props> | SlotField;
126
+ type Field<ValueType = any> = TextField | NumberField | TextareaField | SelectField | RadioField | ArrayField<ValueType> | ObjectField<ValueType> | ExternalField<ValueType> | ExternalFieldWithAdaptor<ValueType> | CustomField<ValueType> | SlotField;
140
127
  type Fields<ComponentProps extends DefaultComponentProps = DefaultComponentProps> = {
141
128
  [PropName in keyof Omit<ComponentProps, "editMode">]: Field<ComponentProps[PropName]>;
142
129
  };
@@ -353,12 +340,12 @@ type BuiltinTypes = Date | RegExp | Error | Function | symbol | null | undefined
353
340
  type WithDeepSlots<T, SlotType = T> = T extends Slot ? SlotType : T extends (infer U)[] ? Array<WithDeepSlots<U, SlotType>> : T extends (infer U)[] ? WithDeepSlots<U, SlotType>[] : T extends BuiltinTypes ? T : T extends object ? {
354
341
  [K in keyof T]: WithDeepSlots<T[K], SlotType>;
355
342
  } : T;
343
+
356
344
  type RenderFunc<Props extends {
357
345
  [key: string]: any;
358
346
  } = {
359
347
  children: ReactNode;
360
348
  }> = (props: Props) => ReactElement;
361
-
362
349
  declare const overrideKeys: readonly ["header", "headerActions", "fields", "fieldLabel", "components", "componentItem", "outline", "puck", "preview"];
363
350
  type OverrideKey = (typeof overrideKeys)[number];
364
351
  type OverridesGeneric<Shape extends {
@@ -443,11 +430,7 @@ type IframeConfig = {
443
430
  };
444
431
  type OnAction<UserData extends Data = Data> = (action: PuckAction, appState: AppState<UserData>, prevAppState: AppState<UserData>) => void;
445
432
  type Plugin = {
446
- name?: string;
447
- label?: string;
448
- icon?: ReactNode;
449
- render?: () => ReactElement;
450
- overrides?: Partial<Overrides>;
433
+ overrides: Partial<Overrides>;
451
434
  };
452
435
  type History<D = any> = {
453
436
  state: D;
@@ -539,7 +522,12 @@ type PuckAction = {
539
522
  recordHistory?: boolean;
540
523
  } & (ReorderAction | InsertAction | MoveAction | ReplaceAction | ReplaceRootAction | RemoveAction | DuplicateAction | SetAction | SetDataAction | SetUiAction | RegisterZoneAction | UnregisterZoneAction);
541
524
 
542
- declare function migrate(data: Data, config?: Config): Data;
525
+ type MigrationOptions<UserConfig extends Config> = {
526
+ migrateDynamicZonesForComponent?: {
527
+ [ComponentName in keyof UserConfig["components"]]: (props: WithId<UserGenerics<UserConfig>["UserProps"][ComponentName]>, zones: Record<string, Content>) => ComponentData["props"];
528
+ };
529
+ };
530
+ declare function migrate<UserConfig extends Config = Config>(data: Data, config?: UserConfig, migrationOptions?: MigrationOptions<UserConfig>): Data;
543
531
 
544
532
  type PropTransform<Props extends DefaultComponentProps = DefaultComponentProps, RootProps extends DefaultComponentProps = DefaultRootFieldProps> = Partial<{
545
533
  [ComponentName in keyof Props]: (props: Props[ComponentName] & {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@measured/puck",
3
- "version": "0.20.0-canary.755737e8",
3
+ "version": "0.20.0-canary.93d525c5",
4
4
  "author": "Chris Villa <chris@puckeditor.com>",
5
5
  "repository": "measuredco/puck",
6
6
  "bugs": "https://github.com/measuredco/puck/issues",