@measured/puck 0.11.0-canary.b28404f → 0.11.0-canary.d22150a

Sign up to get free protection for your applications and to get access to all the features.
package/dist/index.d.ts CHANGED
@@ -8,16 +8,8 @@ type ItemSelector = {
8
8
  zone?: string;
9
9
  };
10
10
 
11
- type Adaptor<AdaptorParams = {}, TableShape extends Record<string, any> = {}, PropShape = TableShape> = {
12
- name: string;
13
- fetchList: (adaptorParams?: AdaptorParams) => Promise<TableShape[] | null>;
14
- mapProp?: (value: TableShape) => PropShape;
15
- };
16
11
  type WithPuckProps<Props> = Props & {
17
12
  id: string;
18
- _meta?: {
19
- readOnly: Partial<Record<keyof Props, boolean>>;
20
- };
21
13
  };
22
14
  type BaseField = {
23
15
  label?: string;
@@ -44,16 +36,33 @@ type ArrayField<Props extends {
44
36
  defaultItemProps?: Props[0];
45
37
  getItemSummary?: (item: Props[0], index?: number) => string;
46
38
  };
47
- type ExternalField<Props extends {
39
+ type Adaptor<AdaptorParams = {}, TableShape extends Record<string, any> = {}, PropShape = TableShape> = {
40
+ name: string;
41
+ fetchList: (adaptorParams?: AdaptorParams) => Promise<TableShape[] | null>;
42
+ mapProp?: (value: TableShape) => PropShape;
43
+ };
44
+ type ExternalFieldWithAdaptor<Props extends {
48
45
  [key: string]: any;
49
46
  } = {
50
47
  [key: string]: any;
51
48
  }> = BaseField & {
52
49
  type: "external";
50
+ placeholder?: string;
53
51
  adaptor: Adaptor<any, any, Props>;
54
52
  adaptorParams?: object;
55
53
  getItemSummary: (item: Props, index?: number) => string;
56
54
  };
55
+ type ExternalField<Props extends {
56
+ [key: string]: any;
57
+ } = {
58
+ [key: string]: any;
59
+ }> = BaseField & {
60
+ type: "external";
61
+ placeholder?: string;
62
+ fetchList: () => Promise<any[] | null>;
63
+ mapProp?: (value: any) => Props;
64
+ getItemSummary: (item: Props, index?: number) => string;
65
+ };
57
66
  type CustomField<Props extends {
58
67
  [key: string]: any;
59
68
  } = {
@@ -72,13 +81,14 @@ type Field<Props extends {
72
81
  [key: string]: any;
73
82
  } = {
74
83
  [key: string]: any;
75
- }> = TextField | SelectField | ArrayField<Props> | ExternalField<Props> | CustomField;
84
+ }> = TextField | SelectField | ArrayField<Props> | ExternalField<Props> | ExternalFieldWithAdaptor<Props> | CustomField;
76
85
  type DefaultRootProps = {
77
- children: ReactNode;
78
- title: string;
79
- editMode: boolean;
86
+ title?: string;
80
87
  [key: string]: any;
81
88
  };
89
+ type DefaultRootRenderProps = {
90
+ editMode: boolean;
91
+ } & DefaultRootProps;
82
92
  type DefaultComponentProps = {
83
93
  [key: string]: any;
84
94
  editMode?: boolean;
@@ -90,15 +100,14 @@ type Content<Props extends {
90
100
  [key: string]: any;
91
101
  } = {
92
102
  [key: string]: any;
93
- }> = MappedItem<Props>[];
94
- type ComponentConfig<ComponentProps extends DefaultComponentProps = DefaultComponentProps, DefaultProps = ComponentProps> = {
103
+ }> = ComponentData<Props>[];
104
+ type ComponentConfig<ComponentProps extends DefaultComponentProps = DefaultComponentProps, DefaultProps = ComponentProps, DataShape = ComponentData<ComponentProps>> = {
95
105
  render: (props: WithPuckProps<ComponentProps>) => ReactElement;
96
106
  defaultProps?: DefaultProps;
97
107
  fields?: Fields<ComponentProps>;
98
- resolveProps?: (props: WithPuckProps<ComponentProps>) => Promise<{
99
- props: WithPuckProps<ComponentProps>;
100
- readOnly?: Partial<Record<keyof ComponentProps, boolean>>;
101
- }>;
108
+ resolveData?: (data: DataShape, params: {
109
+ changed: Partial<Record<keyof ComponentProps, boolean>>;
110
+ }) => Promise<Partial<ComponentDataWithOptionalProps<ComponentProps>>> | Partial<ComponentDataWithOptionalProps<ComponentProps>>;
102
111
  };
103
112
  type Category<ComponentName> = {
104
113
  components?: ComponentName[];
@@ -115,38 +124,42 @@ type Config<Props extends {
115
124
  other?: Category<Props>;
116
125
  };
117
126
  components: {
118
- [ComponentName in keyof Props]: ComponentConfig<Props[ComponentName], Props[ComponentName]>;
127
+ [ComponentName in keyof Props]: Omit<ComponentConfig<Props[ComponentName], Props[ComponentName]>, "type">;
119
128
  };
120
- root?: ComponentConfig<RootProps & {
129
+ root?: Partial<ComponentConfig<RootProps & {
121
130
  children: ReactNode;
122
131
  }, Partial<RootProps & {
123
132
  children: ReactNode;
124
- }>>;
133
+ }>, RootDataWithProps<RootProps>>>;
125
134
  };
126
- type MappedItem<Props extends {
135
+ type BaseData<Props extends {
127
136
  [key: string]: any;
128
137
  } = {
129
138
  [key: string]: any;
130
139
  }> = {
131
- type: keyof Props;
132
- props: WithPuckProps<{
133
- [key: string]: any;
134
- }>;
140
+ readOnly?: Partial<Record<keyof Props, boolean>>;
135
141
  };
136
- type Data<Props extends {
137
- [key: string]: any;
138
- } = {
139
- [key: string]: any;
140
- }, RootProps extends {
141
- title: string;
142
+ type ComponentData<Props extends DefaultComponentProps = DefaultComponentProps> = {
143
+ type: keyof Props;
144
+ props: WithPuckProps<Props>;
145
+ } & BaseData<Props>;
146
+ type RootDataWithProps<Props extends DefaultRootProps = DefaultRootProps> = {
147
+ props: Props;
148
+ };
149
+ type RootDataWithoutProps<Props extends DefaultRootProps = DefaultRootProps> = Props;
150
+ type RootData<Props extends DefaultRootProps = DefaultRootProps> = BaseData<Props> & Partial<RootDataWithProps<Props>> & Partial<RootDataWithoutProps<Props>>;
151
+ type ComponentDataWithOptionalProps<Props extends {
142
152
  [key: string]: any;
143
153
  } = {
144
- title: string;
145
154
  [key: string]: any;
146
- }> = {
147
- root: RootProps;
148
- content: Content<Props>;
149
- zones?: Record<string, Content<Props>>;
155
+ }> = Omit<ComponentData, "props"> & {
156
+ props: Partial<WithPuckProps<Props>>;
157
+ };
158
+ type MappedItem = ComponentData;
159
+ type Data<Props extends DefaultComponentProps = DefaultComponentProps, RootProps extends DefaultRootProps = DefaultRootProps> = {
160
+ root: RootData<RootProps>;
161
+ content: Content<WithPuckProps<Props>>;
162
+ zones?: Record<string, Content<WithPuckProps<Props>>>;
150
163
  };
151
164
  type ItemWithId = {
152
165
  _arrayId: string;
@@ -221,13 +234,13 @@ type RemoveAction = {
221
234
  index: number;
222
235
  zone: string;
223
236
  };
224
- type SetStateAction = {
237
+ type SetUiAction = {
225
238
  type: "setUi";
226
- ui: Partial<UiState>;
239
+ ui: Partial<UiState> | ((previous: UiState) => Partial<UiState>);
227
240
  };
228
241
  type SetDataAction = {
229
242
  type: "setData";
230
- data: Partial<Data>;
243
+ data: Partial<Data> | ((previous: Data) => Partial<Data>);
231
244
  };
232
245
  type SetAction = {
233
246
  type: "set";
@@ -243,7 +256,7 @@ type UnregisterZoneAction = {
243
256
  };
244
257
  type PuckAction = {
245
258
  recordHistory?: boolean;
246
- } & (ReorderAction | InsertAction | MoveAction | ReplaceAction | RemoveAction | DuplicateAction | SetAction | SetDataAction | SetStateAction | RegisterZoneAction | UnregisterZoneAction);
259
+ } & (ReorderAction | InsertAction | MoveAction | ReplaceAction | RemoveAction | DuplicateAction | SetAction | SetDataAction | SetUiAction | RegisterZoneAction | UnregisterZoneAction);
247
260
 
248
261
  type PathData = Record<string, {
249
262
  path: string[];
@@ -252,7 +265,7 @@ type PathData = Record<string, {
252
265
  type DropZoneContext = {
253
266
  data: Data;
254
267
  config: Config;
255
- dynamicProps?: Record<string, any>;
268
+ componentState?: Record<string, any>;
256
269
  itemSelector?: ItemSelector | null;
257
270
  setItemSelector?: (newIndex: ItemSelector | null) => void;
258
271
  dispatch?: (action: PuckAction) => void;
@@ -346,24 +359,19 @@ declare function Render({ config, data }: {
346
359
  data: Data;
347
360
  }): react_jsx_runtime.JSX.Element;
348
361
 
349
- declare const resolveData: (data: Data, config: Config) => Promise<{
350
- content: {
351
- props: any;
352
- type: string | number;
353
- }[];
354
- zones: Record<string, MappedItem<{
355
- [key: string]: any;
356
- }>[]>;
357
- root: {
358
- [key: string]: any;
359
- title: string;
360
- };
362
+ declare const resolveAllData: (data: Data, config: Config, onResolveStart?: ((item: MappedItem) => void) | undefined, onResolveEnd?: ((item: MappedItem) => void) | undefined) => Promise<{
363
+ root: RootDataWithProps<DefaultRootProps> | RootData<DefaultRootProps>;
364
+ content: any[];
365
+ zones: Record<string, MappedItem[]>;
361
366
  }>;
362
367
 
363
- declare const FieldLabel: ({ children, icon, label, }: {
368
+ declare const FieldLabel: ({ children, icon, label, el, readOnly, className, }: {
364
369
  children?: ReactNode;
365
370
  icon?: ReactNode;
366
371
  label: string;
372
+ el?: "div" | "label" | undefined;
373
+ readOnly?: boolean | undefined;
374
+ className?: string | undefined;
367
375
  }) => react_jsx_runtime.JSX.Element;
368
376
 
369
- export { Adaptor, AppState, ArrayField, ArrayState, BaseField, Button, ComponentConfig, Config, Content, CustomField, Data, DefaultComponentProps, DefaultRootProps, DropZone, DropZoneProvider, ExternalField, Field, FieldLabel, Fields, IconButton, ItemWithId, MappedItem, Puck, Render, SelectField, TextField, UiState, dropZoneContext, resolveData };
377
+ export { Adaptor, AppState, ArrayField, ArrayState, BaseData, BaseField, Button, ComponentConfig, ComponentData, Config, Content, CustomField, Data, DefaultComponentProps, DefaultRootProps, DefaultRootRenderProps, DropZone, DropZoneProvider, ExternalField, ExternalFieldWithAdaptor, Field, FieldLabel, Fields, IconButton, ItemWithId, MappedItem, Puck, Render, RootData, RootDataWithProps, RootDataWithoutProps, SelectField, TextField, UiState, dropZoneContext, resolveAllData };