@measured/puck-plugin-emotion-cache 0.21.0-canary.e4131567 → 0.21.0-canary.e9d5c0ea
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/index.d.mts +67 -45
- package/dist/index.d.ts +67 -45
- package/package.json +2 -2
package/dist/index.d.mts
CHANGED
|
@@ -10,63 +10,63 @@ type FieldOption = {
|
|
|
10
10
|
value: string | number | boolean | undefined | null | object;
|
|
11
11
|
};
|
|
12
12
|
type FieldOptions = Array<FieldOption> | ReadonlyArray<FieldOption>;
|
|
13
|
-
|
|
13
|
+
interface BaseField {
|
|
14
14
|
label?: string;
|
|
15
15
|
labelIcon?: ReactElement;
|
|
16
|
-
metadata?:
|
|
16
|
+
metadata?: FieldMetadata;
|
|
17
17
|
visible?: boolean;
|
|
18
|
-
}
|
|
19
|
-
|
|
18
|
+
}
|
|
19
|
+
interface TextField extends BaseField {
|
|
20
20
|
type: "text";
|
|
21
21
|
placeholder?: string;
|
|
22
22
|
contentEditable?: boolean;
|
|
23
|
-
}
|
|
24
|
-
|
|
23
|
+
}
|
|
24
|
+
interface NumberField extends BaseField {
|
|
25
25
|
type: "number";
|
|
26
26
|
placeholder?: string;
|
|
27
27
|
min?: number;
|
|
28
28
|
max?: number;
|
|
29
29
|
step?: number;
|
|
30
|
-
}
|
|
31
|
-
|
|
30
|
+
}
|
|
31
|
+
interface TextareaField extends BaseField {
|
|
32
32
|
type: "textarea";
|
|
33
33
|
placeholder?: string;
|
|
34
34
|
contentEditable?: boolean;
|
|
35
|
-
}
|
|
36
|
-
|
|
35
|
+
}
|
|
36
|
+
interface SelectField extends BaseField {
|
|
37
37
|
type: "select";
|
|
38
38
|
options: FieldOptions;
|
|
39
|
-
}
|
|
40
|
-
|
|
39
|
+
}
|
|
40
|
+
interface RadioField extends BaseField {
|
|
41
41
|
type: "radio";
|
|
42
42
|
options: FieldOptions;
|
|
43
|
-
}
|
|
44
|
-
|
|
43
|
+
}
|
|
44
|
+
interface ArrayField<Props extends {
|
|
45
45
|
[key: string]: any;
|
|
46
46
|
}[] = {
|
|
47
47
|
[key: string]: any;
|
|
48
|
-
}[], UserField extends {} = {}>
|
|
48
|
+
}[], UserField extends {} = {}> extends BaseField {
|
|
49
49
|
type: "array";
|
|
50
50
|
arrayFields: {
|
|
51
51
|
[SubPropName in keyof Props[0]]: UserField extends {
|
|
52
52
|
type: PropertyKey;
|
|
53
53
|
} ? Field<Props[0][SubPropName], UserField> | UserField : Field<Props[0][SubPropName], UserField>;
|
|
54
54
|
};
|
|
55
|
-
defaultItemProps?: Props[0];
|
|
55
|
+
defaultItemProps?: Props[0] | ((index: number) => Props[0]);
|
|
56
56
|
getItemSummary?: (item: Props[0], index?: number) => string;
|
|
57
57
|
max?: number;
|
|
58
58
|
min?: number;
|
|
59
|
-
}
|
|
60
|
-
|
|
59
|
+
}
|
|
60
|
+
interface ObjectField<Props extends any = {
|
|
61
61
|
[key: string]: any;
|
|
62
|
-
}, UserField extends {} = {}>
|
|
62
|
+
}, UserField extends {} = {}> extends BaseField {
|
|
63
63
|
type: "object";
|
|
64
64
|
objectFields: {
|
|
65
65
|
[SubPropName in keyof Props]: UserField extends {
|
|
66
66
|
type: PropertyKey;
|
|
67
67
|
} ? Field<Props[SubPropName]> | UserField : Field<Props[SubPropName]>;
|
|
68
68
|
};
|
|
69
|
-
}
|
|
69
|
+
}
|
|
70
70
|
type Adaptor<AdaptorParams = {}, TableShape extends Record<string, any> = {}, PropShape = TableShape> = {
|
|
71
71
|
name: string;
|
|
72
72
|
fetchList: (adaptorParams?: AdaptorParams) => Promise<TableShape[] | null>;
|
|
@@ -82,10 +82,14 @@ type ExternalFieldWithAdaptor<Props extends any = {
|
|
|
82
82
|
adaptorParams?: object;
|
|
83
83
|
getItemSummary: (item: NotUndefined<Props>, index?: number) => string;
|
|
84
84
|
};
|
|
85
|
-
type
|
|
85
|
+
type CacheOpts = {
|
|
86
|
+
enabled?: boolean;
|
|
87
|
+
};
|
|
88
|
+
interface ExternalField<Props extends any = {
|
|
86
89
|
[key: string]: any;
|
|
87
|
-
}>
|
|
90
|
+
}> extends BaseField {
|
|
88
91
|
type: "external";
|
|
92
|
+
cache?: CacheOpts;
|
|
89
93
|
placeholder?: string;
|
|
90
94
|
fetchList: (params: {
|
|
91
95
|
query: string;
|
|
@@ -101,7 +105,7 @@ type ExternalField<Props extends any = {
|
|
|
101
105
|
initialQuery?: string;
|
|
102
106
|
filterFields?: Record<string, Field>;
|
|
103
107
|
initialFilters?: Record<string, any>;
|
|
104
|
-
}
|
|
108
|
+
}
|
|
105
109
|
type CustomFieldRender<Value extends any> = (props: {
|
|
106
110
|
field: CustomField<Value>;
|
|
107
111
|
name: string;
|
|
@@ -110,16 +114,16 @@ type CustomFieldRender<Value extends any> = (props: {
|
|
|
110
114
|
onChange: (value: Value) => void;
|
|
111
115
|
readOnly?: boolean;
|
|
112
116
|
}) => ReactElement;
|
|
113
|
-
|
|
117
|
+
interface CustomField<Value extends any> extends BaseField {
|
|
114
118
|
type: "custom";
|
|
115
119
|
render: CustomFieldRender<Value>;
|
|
116
120
|
contentEditable?: boolean;
|
|
117
|
-
}
|
|
118
|
-
|
|
121
|
+
}
|
|
122
|
+
interface SlotField extends BaseField {
|
|
119
123
|
type: "slot";
|
|
120
124
|
allow?: string[];
|
|
121
125
|
disallow?: string[];
|
|
122
|
-
}
|
|
126
|
+
}
|
|
123
127
|
type Field<ValueType = any, UserField extends {} = {}> = TextField | NumberField | TextareaField | SelectField | RadioField | ArrayField<ValueType extends {
|
|
124
128
|
[key: string]: any;
|
|
125
129
|
}[] ? ValueType : never, UserField> | ObjectField<ValueType, UserField> | ExternalField<ValueType> | ExternalFieldWithAdaptor<ValueType> | CustomField<ValueType> | SlotField;
|
|
@@ -147,7 +151,7 @@ type DropZoneProps = {
|
|
|
147
151
|
};
|
|
148
152
|
|
|
149
153
|
type PuckContext = {
|
|
150
|
-
renderDropZone: React.
|
|
154
|
+
renderDropZone: (props: DropZoneProps) => React.ReactNode;
|
|
151
155
|
metadata: Metadata;
|
|
152
156
|
isEditing: boolean;
|
|
153
157
|
dragRef: ((element: Element | null) => void) | null;
|
|
@@ -195,6 +199,8 @@ type ResolveDataTrigger = "insert" | "replace" | "load" | "force";
|
|
|
195
199
|
type WithPartialProps<T, Props extends DefaultComponentProps> = Omit<T, "props"> & {
|
|
196
200
|
props?: Partial<Props>;
|
|
197
201
|
};
|
|
202
|
+
interface ComponentConfigExtensions {
|
|
203
|
+
}
|
|
198
204
|
type ComponentConfigInternal<RenderProps extends DefaultComponentProps, FieldProps extends DefaultComponentProps, DataShape = Omit<ComponentData<FieldProps>, "type">, // NB this doesn't include AllProps, so types will not contain deep slot types. To fix, we require a breaking change.
|
|
199
205
|
UserField extends BaseField = {}> = {
|
|
200
206
|
render: PuckComponent<RenderProps>;
|
|
@@ -210,7 +216,7 @@ UserField extends BaseField = {}> = {
|
|
|
210
216
|
fields: Fields<FieldProps>;
|
|
211
217
|
lastFields: Fields<FieldProps>;
|
|
212
218
|
lastData: DataShape | null;
|
|
213
|
-
metadata:
|
|
219
|
+
metadata: ComponentMetadata;
|
|
214
220
|
appState: AppState;
|
|
215
221
|
parent: ComponentData | null;
|
|
216
222
|
}) => Promise<Fields<FieldProps>> | Fields<FieldProps>;
|
|
@@ -219,7 +225,7 @@ UserField extends BaseField = {}> = {
|
|
|
219
225
|
id: string;
|
|
220
226
|
}>;
|
|
221
227
|
lastData: DataShape | null;
|
|
222
|
-
metadata:
|
|
228
|
+
metadata: ComponentMetadata;
|
|
223
229
|
trigger: ResolveDataTrigger;
|
|
224
230
|
}) => Promise<WithPartialProps<DataShape, FieldProps>> | WithPartialProps<DataShape, FieldProps>;
|
|
225
231
|
resolvePermissions?: (data: DataShape, params: {
|
|
@@ -231,8 +237,8 @@ UserField extends BaseField = {}> = {
|
|
|
231
237
|
appState: AppState;
|
|
232
238
|
lastData: DataShape | null;
|
|
233
239
|
}) => Promise<Partial<Permissions>> | Partial<Permissions>;
|
|
234
|
-
metadata?:
|
|
235
|
-
};
|
|
240
|
+
metadata?: ComponentMetadata;
|
|
241
|
+
} & ComponentConfigExtensions;
|
|
236
242
|
type RootConfigInternal<RootProps extends DefaultComponentProps = DefaultComponentProps, UserField extends BaseField = {}> = Partial<ComponentConfigInternal<WithChildren<RootProps>, AsFieldProps<RootProps>, RootData<AsFieldProps<RootProps>>, UserField>>;
|
|
237
243
|
type Category<ComponentName> = {
|
|
238
244
|
components?: ComponentName[];
|
|
@@ -259,6 +265,12 @@ type ExtractConfigParams<UserConfig extends ConfigInternal> = UserConfig extends
|
|
|
259
265
|
type: string;
|
|
260
266
|
} ? UserField : Field;
|
|
261
267
|
} : never;
|
|
268
|
+
type ConfigParams<Components extends DefaultComponents = DefaultComponents, RootProps extends DefaultComponentProps = any, CategoryNames extends string[] = string[], UserFields extends FieldsExtension = FieldsExtension> = {
|
|
269
|
+
components?: Components;
|
|
270
|
+
root?: RootProps;
|
|
271
|
+
categories?: CategoryNames;
|
|
272
|
+
fields?: AssertHasValue<UserFields>;
|
|
273
|
+
};
|
|
262
274
|
|
|
263
275
|
type BaseData<Props extends {
|
|
264
276
|
[key: string]: any;
|
|
@@ -298,10 +310,17 @@ type Data<Components extends DefaultComponents = DefaultComponents, RootProps ex
|
|
|
298
310
|
type Metadata = {
|
|
299
311
|
[key: string]: any;
|
|
300
312
|
};
|
|
313
|
+
interface PuckMetadata extends Metadata {
|
|
314
|
+
}
|
|
315
|
+
interface ComponentMetadata extends PuckMetadata {
|
|
316
|
+
}
|
|
317
|
+
interface FieldMetadata extends Metadata {
|
|
318
|
+
}
|
|
301
319
|
|
|
302
320
|
type ItemWithId = {
|
|
303
321
|
_arrayId: string;
|
|
304
322
|
_originalIndex: number;
|
|
323
|
+
_currentIndex: number;
|
|
305
324
|
};
|
|
306
325
|
type ArrayState = {
|
|
307
326
|
items: ItemWithId[];
|
|
@@ -312,6 +331,7 @@ type UiState = {
|
|
|
312
331
|
rightSideBarVisible: boolean;
|
|
313
332
|
leftSideBarWidth?: number | null;
|
|
314
333
|
rightSideBarWidth?: number | null;
|
|
334
|
+
mobilePanelExpanded?: boolean;
|
|
315
335
|
itemSelector: ItemSelector | null;
|
|
316
336
|
arrayState: Record<string, ArrayState | undefined>;
|
|
317
337
|
previewMode: "interactive" | "edit";
|
|
@@ -324,7 +344,7 @@ type UiState = {
|
|
|
324
344
|
isDragging: boolean;
|
|
325
345
|
viewports: {
|
|
326
346
|
current: {
|
|
327
|
-
width: number;
|
|
347
|
+
width: number | "100%";
|
|
328
348
|
height: number | "auto";
|
|
329
349
|
};
|
|
330
350
|
controlsVisible: boolean;
|
|
@@ -333,6 +353,9 @@ type UiState = {
|
|
|
333
353
|
field: {
|
|
334
354
|
focus?: string | null;
|
|
335
355
|
};
|
|
356
|
+
plugin: {
|
|
357
|
+
current: string | null;
|
|
358
|
+
};
|
|
336
359
|
};
|
|
337
360
|
type AppState<UserData extends Data = Data> = {
|
|
338
361
|
data: UserData;
|
|
@@ -366,12 +389,6 @@ type BuiltinTypes = Date | RegExp | Error | Function | symbol | null | undefined
|
|
|
366
389
|
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 ? {
|
|
367
390
|
[K in keyof T]: WithDeepSlots<T[K], SlotType>;
|
|
368
391
|
} : T;
|
|
369
|
-
type ConfigParams<Components extends DefaultComponents = DefaultComponents, RootProps extends DefaultComponentProps = any, CategoryNames extends string[] = string[], UserFields extends FieldsExtension = FieldsExtension> = {
|
|
370
|
-
components?: Components;
|
|
371
|
-
root?: RootProps;
|
|
372
|
-
categories?: CategoryNames;
|
|
373
|
-
fields?: AssertHasValue<UserFields>;
|
|
374
|
-
};
|
|
375
392
|
type FieldsExtension = {
|
|
376
393
|
[Type in string]: {
|
|
377
394
|
type: Type;
|
|
@@ -382,6 +399,11 @@ type LeftOrExactRight<Union, Left, Right> = (Left & Union extends Right ? Exact<
|
|
|
382
399
|
type AssertHasValue<T, True = T, False = never> = [keyof T] extends [
|
|
383
400
|
never
|
|
384
401
|
] ? False : True;
|
|
402
|
+
type RenderFunc<Props extends {
|
|
403
|
+
[key: string]: any;
|
|
404
|
+
} = {
|
|
405
|
+
children: ReactNode;
|
|
406
|
+
}> = (props: Props) => ReactElement;
|
|
385
407
|
|
|
386
408
|
type MapFnParams<ThisField = Field> = {
|
|
387
409
|
value: any;
|
|
@@ -405,11 +427,6 @@ G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>, UserField extends
|
|
|
405
427
|
[Type in UserField["type"]]: FieldTransformFn<ExtractField<UserField, Type>>;
|
|
406
428
|
}>;
|
|
407
429
|
|
|
408
|
-
type RenderFunc<Props extends {
|
|
409
|
-
[key: string]: any;
|
|
410
|
-
} = {
|
|
411
|
-
children: ReactNode;
|
|
412
|
-
}> = (props: Props) => ReactElement;
|
|
413
430
|
declare const overrideKeys: readonly ["header", "headerActions", "fields", "fieldLabel", "drawer", "drawerItem", "componentOverlay", "outline", "puck", "preview"];
|
|
414
431
|
type OverrideKey = (typeof overrideKeys)[number];
|
|
415
432
|
type OverridesGeneric<Shape extends {
|
|
@@ -480,7 +497,7 @@ type DragAxis = "dynamic" | "y" | "x";
|
|
|
480
497
|
|
|
481
498
|
type iconTypes = "Smartphone" | "Monitor" | "Tablet";
|
|
482
499
|
type Viewport = {
|
|
483
|
-
width: number;
|
|
500
|
+
width: number | "100%";
|
|
484
501
|
height?: number | "auto";
|
|
485
502
|
label?: string;
|
|
486
503
|
icon?: iconTypes | ReactNode;
|
|
@@ -494,8 +511,13 @@ type Permissions = {
|
|
|
494
511
|
insert: boolean;
|
|
495
512
|
} & Record<string, boolean>;
|
|
496
513
|
type Plugin<UserConfig extends Config = Config> = {
|
|
514
|
+
name?: string;
|
|
515
|
+
label?: string;
|
|
516
|
+
icon?: ReactNode;
|
|
517
|
+
render?: () => ReactElement;
|
|
497
518
|
overrides?: Partial<Overrides<UserConfig>>;
|
|
498
519
|
fieldTransforms?: FieldTransforms<UserConfig>;
|
|
520
|
+
mobilePanelHeight?: "toggle" | "min-content";
|
|
499
521
|
};
|
|
500
522
|
type Slot<Props extends {
|
|
501
523
|
[key: string]: DefaultComponentProps;
|
package/dist/index.d.ts
CHANGED
|
@@ -10,63 +10,63 @@ type FieldOption = {
|
|
|
10
10
|
value: string | number | boolean | undefined | null | object;
|
|
11
11
|
};
|
|
12
12
|
type FieldOptions = Array<FieldOption> | ReadonlyArray<FieldOption>;
|
|
13
|
-
|
|
13
|
+
interface BaseField {
|
|
14
14
|
label?: string;
|
|
15
15
|
labelIcon?: ReactElement;
|
|
16
|
-
metadata?:
|
|
16
|
+
metadata?: FieldMetadata;
|
|
17
17
|
visible?: boolean;
|
|
18
|
-
}
|
|
19
|
-
|
|
18
|
+
}
|
|
19
|
+
interface TextField extends BaseField {
|
|
20
20
|
type: "text";
|
|
21
21
|
placeholder?: string;
|
|
22
22
|
contentEditable?: boolean;
|
|
23
|
-
}
|
|
24
|
-
|
|
23
|
+
}
|
|
24
|
+
interface NumberField extends BaseField {
|
|
25
25
|
type: "number";
|
|
26
26
|
placeholder?: string;
|
|
27
27
|
min?: number;
|
|
28
28
|
max?: number;
|
|
29
29
|
step?: number;
|
|
30
|
-
}
|
|
31
|
-
|
|
30
|
+
}
|
|
31
|
+
interface TextareaField extends BaseField {
|
|
32
32
|
type: "textarea";
|
|
33
33
|
placeholder?: string;
|
|
34
34
|
contentEditable?: boolean;
|
|
35
|
-
}
|
|
36
|
-
|
|
35
|
+
}
|
|
36
|
+
interface SelectField extends BaseField {
|
|
37
37
|
type: "select";
|
|
38
38
|
options: FieldOptions;
|
|
39
|
-
}
|
|
40
|
-
|
|
39
|
+
}
|
|
40
|
+
interface RadioField extends BaseField {
|
|
41
41
|
type: "radio";
|
|
42
42
|
options: FieldOptions;
|
|
43
|
-
}
|
|
44
|
-
|
|
43
|
+
}
|
|
44
|
+
interface ArrayField<Props extends {
|
|
45
45
|
[key: string]: any;
|
|
46
46
|
}[] = {
|
|
47
47
|
[key: string]: any;
|
|
48
|
-
}[], UserField extends {} = {}>
|
|
48
|
+
}[], UserField extends {} = {}> extends BaseField {
|
|
49
49
|
type: "array";
|
|
50
50
|
arrayFields: {
|
|
51
51
|
[SubPropName in keyof Props[0]]: UserField extends {
|
|
52
52
|
type: PropertyKey;
|
|
53
53
|
} ? Field<Props[0][SubPropName], UserField> | UserField : Field<Props[0][SubPropName], UserField>;
|
|
54
54
|
};
|
|
55
|
-
defaultItemProps?: Props[0];
|
|
55
|
+
defaultItemProps?: Props[0] | ((index: number) => Props[0]);
|
|
56
56
|
getItemSummary?: (item: Props[0], index?: number) => string;
|
|
57
57
|
max?: number;
|
|
58
58
|
min?: number;
|
|
59
|
-
}
|
|
60
|
-
|
|
59
|
+
}
|
|
60
|
+
interface ObjectField<Props extends any = {
|
|
61
61
|
[key: string]: any;
|
|
62
|
-
}, UserField extends {} = {}>
|
|
62
|
+
}, UserField extends {} = {}> extends BaseField {
|
|
63
63
|
type: "object";
|
|
64
64
|
objectFields: {
|
|
65
65
|
[SubPropName in keyof Props]: UserField extends {
|
|
66
66
|
type: PropertyKey;
|
|
67
67
|
} ? Field<Props[SubPropName]> | UserField : Field<Props[SubPropName]>;
|
|
68
68
|
};
|
|
69
|
-
}
|
|
69
|
+
}
|
|
70
70
|
type Adaptor<AdaptorParams = {}, TableShape extends Record<string, any> = {}, PropShape = TableShape> = {
|
|
71
71
|
name: string;
|
|
72
72
|
fetchList: (adaptorParams?: AdaptorParams) => Promise<TableShape[] | null>;
|
|
@@ -82,10 +82,14 @@ type ExternalFieldWithAdaptor<Props extends any = {
|
|
|
82
82
|
adaptorParams?: object;
|
|
83
83
|
getItemSummary: (item: NotUndefined<Props>, index?: number) => string;
|
|
84
84
|
};
|
|
85
|
-
type
|
|
85
|
+
type CacheOpts = {
|
|
86
|
+
enabled?: boolean;
|
|
87
|
+
};
|
|
88
|
+
interface ExternalField<Props extends any = {
|
|
86
89
|
[key: string]: any;
|
|
87
|
-
}>
|
|
90
|
+
}> extends BaseField {
|
|
88
91
|
type: "external";
|
|
92
|
+
cache?: CacheOpts;
|
|
89
93
|
placeholder?: string;
|
|
90
94
|
fetchList: (params: {
|
|
91
95
|
query: string;
|
|
@@ -101,7 +105,7 @@ type ExternalField<Props extends any = {
|
|
|
101
105
|
initialQuery?: string;
|
|
102
106
|
filterFields?: Record<string, Field>;
|
|
103
107
|
initialFilters?: Record<string, any>;
|
|
104
|
-
}
|
|
108
|
+
}
|
|
105
109
|
type CustomFieldRender<Value extends any> = (props: {
|
|
106
110
|
field: CustomField<Value>;
|
|
107
111
|
name: string;
|
|
@@ -110,16 +114,16 @@ type CustomFieldRender<Value extends any> = (props: {
|
|
|
110
114
|
onChange: (value: Value) => void;
|
|
111
115
|
readOnly?: boolean;
|
|
112
116
|
}) => ReactElement;
|
|
113
|
-
|
|
117
|
+
interface CustomField<Value extends any> extends BaseField {
|
|
114
118
|
type: "custom";
|
|
115
119
|
render: CustomFieldRender<Value>;
|
|
116
120
|
contentEditable?: boolean;
|
|
117
|
-
}
|
|
118
|
-
|
|
121
|
+
}
|
|
122
|
+
interface SlotField extends BaseField {
|
|
119
123
|
type: "slot";
|
|
120
124
|
allow?: string[];
|
|
121
125
|
disallow?: string[];
|
|
122
|
-
}
|
|
126
|
+
}
|
|
123
127
|
type Field<ValueType = any, UserField extends {} = {}> = TextField | NumberField | TextareaField | SelectField | RadioField | ArrayField<ValueType extends {
|
|
124
128
|
[key: string]: any;
|
|
125
129
|
}[] ? ValueType : never, UserField> | ObjectField<ValueType, UserField> | ExternalField<ValueType> | ExternalFieldWithAdaptor<ValueType> | CustomField<ValueType> | SlotField;
|
|
@@ -147,7 +151,7 @@ type DropZoneProps = {
|
|
|
147
151
|
};
|
|
148
152
|
|
|
149
153
|
type PuckContext = {
|
|
150
|
-
renderDropZone: React.
|
|
154
|
+
renderDropZone: (props: DropZoneProps) => React.ReactNode;
|
|
151
155
|
metadata: Metadata;
|
|
152
156
|
isEditing: boolean;
|
|
153
157
|
dragRef: ((element: Element | null) => void) | null;
|
|
@@ -195,6 +199,8 @@ type ResolveDataTrigger = "insert" | "replace" | "load" | "force";
|
|
|
195
199
|
type WithPartialProps<T, Props extends DefaultComponentProps> = Omit<T, "props"> & {
|
|
196
200
|
props?: Partial<Props>;
|
|
197
201
|
};
|
|
202
|
+
interface ComponentConfigExtensions {
|
|
203
|
+
}
|
|
198
204
|
type ComponentConfigInternal<RenderProps extends DefaultComponentProps, FieldProps extends DefaultComponentProps, DataShape = Omit<ComponentData<FieldProps>, "type">, // NB this doesn't include AllProps, so types will not contain deep slot types. To fix, we require a breaking change.
|
|
199
205
|
UserField extends BaseField = {}> = {
|
|
200
206
|
render: PuckComponent<RenderProps>;
|
|
@@ -210,7 +216,7 @@ UserField extends BaseField = {}> = {
|
|
|
210
216
|
fields: Fields<FieldProps>;
|
|
211
217
|
lastFields: Fields<FieldProps>;
|
|
212
218
|
lastData: DataShape | null;
|
|
213
|
-
metadata:
|
|
219
|
+
metadata: ComponentMetadata;
|
|
214
220
|
appState: AppState;
|
|
215
221
|
parent: ComponentData | null;
|
|
216
222
|
}) => Promise<Fields<FieldProps>> | Fields<FieldProps>;
|
|
@@ -219,7 +225,7 @@ UserField extends BaseField = {}> = {
|
|
|
219
225
|
id: string;
|
|
220
226
|
}>;
|
|
221
227
|
lastData: DataShape | null;
|
|
222
|
-
metadata:
|
|
228
|
+
metadata: ComponentMetadata;
|
|
223
229
|
trigger: ResolveDataTrigger;
|
|
224
230
|
}) => Promise<WithPartialProps<DataShape, FieldProps>> | WithPartialProps<DataShape, FieldProps>;
|
|
225
231
|
resolvePermissions?: (data: DataShape, params: {
|
|
@@ -231,8 +237,8 @@ UserField extends BaseField = {}> = {
|
|
|
231
237
|
appState: AppState;
|
|
232
238
|
lastData: DataShape | null;
|
|
233
239
|
}) => Promise<Partial<Permissions>> | Partial<Permissions>;
|
|
234
|
-
metadata?:
|
|
235
|
-
};
|
|
240
|
+
metadata?: ComponentMetadata;
|
|
241
|
+
} & ComponentConfigExtensions;
|
|
236
242
|
type RootConfigInternal<RootProps extends DefaultComponentProps = DefaultComponentProps, UserField extends BaseField = {}> = Partial<ComponentConfigInternal<WithChildren<RootProps>, AsFieldProps<RootProps>, RootData<AsFieldProps<RootProps>>, UserField>>;
|
|
237
243
|
type Category<ComponentName> = {
|
|
238
244
|
components?: ComponentName[];
|
|
@@ -259,6 +265,12 @@ type ExtractConfigParams<UserConfig extends ConfigInternal> = UserConfig extends
|
|
|
259
265
|
type: string;
|
|
260
266
|
} ? UserField : Field;
|
|
261
267
|
} : never;
|
|
268
|
+
type ConfigParams<Components extends DefaultComponents = DefaultComponents, RootProps extends DefaultComponentProps = any, CategoryNames extends string[] = string[], UserFields extends FieldsExtension = FieldsExtension> = {
|
|
269
|
+
components?: Components;
|
|
270
|
+
root?: RootProps;
|
|
271
|
+
categories?: CategoryNames;
|
|
272
|
+
fields?: AssertHasValue<UserFields>;
|
|
273
|
+
};
|
|
262
274
|
|
|
263
275
|
type BaseData<Props extends {
|
|
264
276
|
[key: string]: any;
|
|
@@ -298,10 +310,17 @@ type Data<Components extends DefaultComponents = DefaultComponents, RootProps ex
|
|
|
298
310
|
type Metadata = {
|
|
299
311
|
[key: string]: any;
|
|
300
312
|
};
|
|
313
|
+
interface PuckMetadata extends Metadata {
|
|
314
|
+
}
|
|
315
|
+
interface ComponentMetadata extends PuckMetadata {
|
|
316
|
+
}
|
|
317
|
+
interface FieldMetadata extends Metadata {
|
|
318
|
+
}
|
|
301
319
|
|
|
302
320
|
type ItemWithId = {
|
|
303
321
|
_arrayId: string;
|
|
304
322
|
_originalIndex: number;
|
|
323
|
+
_currentIndex: number;
|
|
305
324
|
};
|
|
306
325
|
type ArrayState = {
|
|
307
326
|
items: ItemWithId[];
|
|
@@ -312,6 +331,7 @@ type UiState = {
|
|
|
312
331
|
rightSideBarVisible: boolean;
|
|
313
332
|
leftSideBarWidth?: number | null;
|
|
314
333
|
rightSideBarWidth?: number | null;
|
|
334
|
+
mobilePanelExpanded?: boolean;
|
|
315
335
|
itemSelector: ItemSelector | null;
|
|
316
336
|
arrayState: Record<string, ArrayState | undefined>;
|
|
317
337
|
previewMode: "interactive" | "edit";
|
|
@@ -324,7 +344,7 @@ type UiState = {
|
|
|
324
344
|
isDragging: boolean;
|
|
325
345
|
viewports: {
|
|
326
346
|
current: {
|
|
327
|
-
width: number;
|
|
347
|
+
width: number | "100%";
|
|
328
348
|
height: number | "auto";
|
|
329
349
|
};
|
|
330
350
|
controlsVisible: boolean;
|
|
@@ -333,6 +353,9 @@ type UiState = {
|
|
|
333
353
|
field: {
|
|
334
354
|
focus?: string | null;
|
|
335
355
|
};
|
|
356
|
+
plugin: {
|
|
357
|
+
current: string | null;
|
|
358
|
+
};
|
|
336
359
|
};
|
|
337
360
|
type AppState<UserData extends Data = Data> = {
|
|
338
361
|
data: UserData;
|
|
@@ -366,12 +389,6 @@ type BuiltinTypes = Date | RegExp | Error | Function | symbol | null | undefined
|
|
|
366
389
|
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 ? {
|
|
367
390
|
[K in keyof T]: WithDeepSlots<T[K], SlotType>;
|
|
368
391
|
} : T;
|
|
369
|
-
type ConfigParams<Components extends DefaultComponents = DefaultComponents, RootProps extends DefaultComponentProps = any, CategoryNames extends string[] = string[], UserFields extends FieldsExtension = FieldsExtension> = {
|
|
370
|
-
components?: Components;
|
|
371
|
-
root?: RootProps;
|
|
372
|
-
categories?: CategoryNames;
|
|
373
|
-
fields?: AssertHasValue<UserFields>;
|
|
374
|
-
};
|
|
375
392
|
type FieldsExtension = {
|
|
376
393
|
[Type in string]: {
|
|
377
394
|
type: Type;
|
|
@@ -382,6 +399,11 @@ type LeftOrExactRight<Union, Left, Right> = (Left & Union extends Right ? Exact<
|
|
|
382
399
|
type AssertHasValue<T, True = T, False = never> = [keyof T] extends [
|
|
383
400
|
never
|
|
384
401
|
] ? False : True;
|
|
402
|
+
type RenderFunc<Props extends {
|
|
403
|
+
[key: string]: any;
|
|
404
|
+
} = {
|
|
405
|
+
children: ReactNode;
|
|
406
|
+
}> = (props: Props) => ReactElement;
|
|
385
407
|
|
|
386
408
|
type MapFnParams<ThisField = Field> = {
|
|
387
409
|
value: any;
|
|
@@ -405,11 +427,6 @@ G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>, UserField extends
|
|
|
405
427
|
[Type in UserField["type"]]: FieldTransformFn<ExtractField<UserField, Type>>;
|
|
406
428
|
}>;
|
|
407
429
|
|
|
408
|
-
type RenderFunc<Props extends {
|
|
409
|
-
[key: string]: any;
|
|
410
|
-
} = {
|
|
411
|
-
children: ReactNode;
|
|
412
|
-
}> = (props: Props) => ReactElement;
|
|
413
430
|
declare const overrideKeys: readonly ["header", "headerActions", "fields", "fieldLabel", "drawer", "drawerItem", "componentOverlay", "outline", "puck", "preview"];
|
|
414
431
|
type OverrideKey = (typeof overrideKeys)[number];
|
|
415
432
|
type OverridesGeneric<Shape extends {
|
|
@@ -480,7 +497,7 @@ type DragAxis = "dynamic" | "y" | "x";
|
|
|
480
497
|
|
|
481
498
|
type iconTypes = "Smartphone" | "Monitor" | "Tablet";
|
|
482
499
|
type Viewport = {
|
|
483
|
-
width: number;
|
|
500
|
+
width: number | "100%";
|
|
484
501
|
height?: number | "auto";
|
|
485
502
|
label?: string;
|
|
486
503
|
icon?: iconTypes | ReactNode;
|
|
@@ -494,8 +511,13 @@ type Permissions = {
|
|
|
494
511
|
insert: boolean;
|
|
495
512
|
} & Record<string, boolean>;
|
|
496
513
|
type Plugin<UserConfig extends Config = Config> = {
|
|
514
|
+
name?: string;
|
|
515
|
+
label?: string;
|
|
516
|
+
icon?: ReactNode;
|
|
517
|
+
render?: () => ReactElement;
|
|
497
518
|
overrides?: Partial<Overrides<UserConfig>>;
|
|
498
519
|
fieldTransforms?: FieldTransforms<UserConfig>;
|
|
520
|
+
mobilePanelHeight?: "toggle" | "min-content";
|
|
499
521
|
};
|
|
500
522
|
type Slot<Props extends {
|
|
501
523
|
[key: string]: DefaultComponentProps;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@measured/puck-plugin-emotion-cache",
|
|
3
|
-
"version": "0.21.0-canary.
|
|
3
|
+
"version": "0.21.0-canary.e9d5c0ea",
|
|
4
4
|
"author": "Chris Villa <chris@puckeditor.com>",
|
|
5
5
|
"repository": "measuredco/puck",
|
|
6
6
|
"bugs": "https://github.com/measuredco/puck/issues",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
],
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"@emotion/react": "^11.13.3",
|
|
27
|
-
"@measured/puck": "^0.21.0-canary.
|
|
27
|
+
"@measured/puck": "^0.21.0-canary.e9d5c0ea",
|
|
28
28
|
"@types/react": "^19.0.1",
|
|
29
29
|
"@types/react-dom": "^19.0.2",
|
|
30
30
|
"eslint": "^7.32.0",
|