@measured/puck-plugin-emotion-cache 0.21.0-canary.e310a175 → 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 +63 -45
- package/dist/index.d.ts +63 -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>;
|
|
@@ -85,9 +85,9 @@ type ExternalFieldWithAdaptor<Props extends any = {
|
|
|
85
85
|
type CacheOpts = {
|
|
86
86
|
enabled?: boolean;
|
|
87
87
|
};
|
|
88
|
-
|
|
88
|
+
interface ExternalField<Props extends any = {
|
|
89
89
|
[key: string]: any;
|
|
90
|
-
}>
|
|
90
|
+
}> extends BaseField {
|
|
91
91
|
type: "external";
|
|
92
92
|
cache?: CacheOpts;
|
|
93
93
|
placeholder?: string;
|
|
@@ -105,7 +105,7 @@ type ExternalField<Props extends any = {
|
|
|
105
105
|
initialQuery?: string;
|
|
106
106
|
filterFields?: Record<string, Field>;
|
|
107
107
|
initialFilters?: Record<string, any>;
|
|
108
|
-
}
|
|
108
|
+
}
|
|
109
109
|
type CustomFieldRender<Value extends any> = (props: {
|
|
110
110
|
field: CustomField<Value>;
|
|
111
111
|
name: string;
|
|
@@ -114,16 +114,16 @@ type CustomFieldRender<Value extends any> = (props: {
|
|
|
114
114
|
onChange: (value: Value) => void;
|
|
115
115
|
readOnly?: boolean;
|
|
116
116
|
}) => ReactElement;
|
|
117
|
-
|
|
117
|
+
interface CustomField<Value extends any> extends BaseField {
|
|
118
118
|
type: "custom";
|
|
119
119
|
render: CustomFieldRender<Value>;
|
|
120
120
|
contentEditable?: boolean;
|
|
121
|
-
}
|
|
122
|
-
|
|
121
|
+
}
|
|
122
|
+
interface SlotField extends BaseField {
|
|
123
123
|
type: "slot";
|
|
124
124
|
allow?: string[];
|
|
125
125
|
disallow?: string[];
|
|
126
|
-
}
|
|
126
|
+
}
|
|
127
127
|
type Field<ValueType = any, UserField extends {} = {}> = TextField | NumberField | TextareaField | SelectField | RadioField | ArrayField<ValueType extends {
|
|
128
128
|
[key: string]: any;
|
|
129
129
|
}[] ? ValueType : never, UserField> | ObjectField<ValueType, UserField> | ExternalField<ValueType> | ExternalFieldWithAdaptor<ValueType> | CustomField<ValueType> | SlotField;
|
|
@@ -151,7 +151,7 @@ type DropZoneProps = {
|
|
|
151
151
|
};
|
|
152
152
|
|
|
153
153
|
type PuckContext = {
|
|
154
|
-
renderDropZone: React.
|
|
154
|
+
renderDropZone: (props: DropZoneProps) => React.ReactNode;
|
|
155
155
|
metadata: Metadata;
|
|
156
156
|
isEditing: boolean;
|
|
157
157
|
dragRef: ((element: Element | null) => void) | null;
|
|
@@ -199,6 +199,8 @@ type ResolveDataTrigger = "insert" | "replace" | "load" | "force";
|
|
|
199
199
|
type WithPartialProps<T, Props extends DefaultComponentProps> = Omit<T, "props"> & {
|
|
200
200
|
props?: Partial<Props>;
|
|
201
201
|
};
|
|
202
|
+
interface ComponentConfigExtensions {
|
|
203
|
+
}
|
|
202
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.
|
|
203
205
|
UserField extends BaseField = {}> = {
|
|
204
206
|
render: PuckComponent<RenderProps>;
|
|
@@ -214,7 +216,7 @@ UserField extends BaseField = {}> = {
|
|
|
214
216
|
fields: Fields<FieldProps>;
|
|
215
217
|
lastFields: Fields<FieldProps>;
|
|
216
218
|
lastData: DataShape | null;
|
|
217
|
-
metadata:
|
|
219
|
+
metadata: ComponentMetadata;
|
|
218
220
|
appState: AppState;
|
|
219
221
|
parent: ComponentData | null;
|
|
220
222
|
}) => Promise<Fields<FieldProps>> | Fields<FieldProps>;
|
|
@@ -223,7 +225,7 @@ UserField extends BaseField = {}> = {
|
|
|
223
225
|
id: string;
|
|
224
226
|
}>;
|
|
225
227
|
lastData: DataShape | null;
|
|
226
|
-
metadata:
|
|
228
|
+
metadata: ComponentMetadata;
|
|
227
229
|
trigger: ResolveDataTrigger;
|
|
228
230
|
}) => Promise<WithPartialProps<DataShape, FieldProps>> | WithPartialProps<DataShape, FieldProps>;
|
|
229
231
|
resolvePermissions?: (data: DataShape, params: {
|
|
@@ -235,8 +237,8 @@ UserField extends BaseField = {}> = {
|
|
|
235
237
|
appState: AppState;
|
|
236
238
|
lastData: DataShape | null;
|
|
237
239
|
}) => Promise<Partial<Permissions>> | Partial<Permissions>;
|
|
238
|
-
metadata?:
|
|
239
|
-
};
|
|
240
|
+
metadata?: ComponentMetadata;
|
|
241
|
+
} & ComponentConfigExtensions;
|
|
240
242
|
type RootConfigInternal<RootProps extends DefaultComponentProps = DefaultComponentProps, UserField extends BaseField = {}> = Partial<ComponentConfigInternal<WithChildren<RootProps>, AsFieldProps<RootProps>, RootData<AsFieldProps<RootProps>>, UserField>>;
|
|
241
243
|
type Category<ComponentName> = {
|
|
242
244
|
components?: ComponentName[];
|
|
@@ -263,6 +265,12 @@ type ExtractConfigParams<UserConfig extends ConfigInternal> = UserConfig extends
|
|
|
263
265
|
type: string;
|
|
264
266
|
} ? UserField : Field;
|
|
265
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
|
+
};
|
|
266
274
|
|
|
267
275
|
type BaseData<Props extends {
|
|
268
276
|
[key: string]: any;
|
|
@@ -302,10 +310,17 @@ type Data<Components extends DefaultComponents = DefaultComponents, RootProps ex
|
|
|
302
310
|
type Metadata = {
|
|
303
311
|
[key: string]: any;
|
|
304
312
|
};
|
|
313
|
+
interface PuckMetadata extends Metadata {
|
|
314
|
+
}
|
|
315
|
+
interface ComponentMetadata extends PuckMetadata {
|
|
316
|
+
}
|
|
317
|
+
interface FieldMetadata extends Metadata {
|
|
318
|
+
}
|
|
305
319
|
|
|
306
320
|
type ItemWithId = {
|
|
307
321
|
_arrayId: string;
|
|
308
322
|
_originalIndex: number;
|
|
323
|
+
_currentIndex: number;
|
|
309
324
|
};
|
|
310
325
|
type ArrayState = {
|
|
311
326
|
items: ItemWithId[];
|
|
@@ -316,6 +331,7 @@ type UiState = {
|
|
|
316
331
|
rightSideBarVisible: boolean;
|
|
317
332
|
leftSideBarWidth?: number | null;
|
|
318
333
|
rightSideBarWidth?: number | null;
|
|
334
|
+
mobilePanelExpanded?: boolean;
|
|
319
335
|
itemSelector: ItemSelector | null;
|
|
320
336
|
arrayState: Record<string, ArrayState | undefined>;
|
|
321
337
|
previewMode: "interactive" | "edit";
|
|
@@ -328,7 +344,7 @@ type UiState = {
|
|
|
328
344
|
isDragging: boolean;
|
|
329
345
|
viewports: {
|
|
330
346
|
current: {
|
|
331
|
-
width: number;
|
|
347
|
+
width: number | "100%";
|
|
332
348
|
height: number | "auto";
|
|
333
349
|
};
|
|
334
350
|
controlsVisible: boolean;
|
|
@@ -337,6 +353,9 @@ type UiState = {
|
|
|
337
353
|
field: {
|
|
338
354
|
focus?: string | null;
|
|
339
355
|
};
|
|
356
|
+
plugin: {
|
|
357
|
+
current: string | null;
|
|
358
|
+
};
|
|
340
359
|
};
|
|
341
360
|
type AppState<UserData extends Data = Data> = {
|
|
342
361
|
data: UserData;
|
|
@@ -370,12 +389,6 @@ type BuiltinTypes = Date | RegExp | Error | Function | symbol | null | undefined
|
|
|
370
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 ? {
|
|
371
390
|
[K in keyof T]: WithDeepSlots<T[K], SlotType>;
|
|
372
391
|
} : T;
|
|
373
|
-
type ConfigParams<Components extends DefaultComponents = DefaultComponents, RootProps extends DefaultComponentProps = any, CategoryNames extends string[] = string[], UserFields extends FieldsExtension = FieldsExtension> = {
|
|
374
|
-
components?: Components;
|
|
375
|
-
root?: RootProps;
|
|
376
|
-
categories?: CategoryNames;
|
|
377
|
-
fields?: AssertHasValue<UserFields>;
|
|
378
|
-
};
|
|
379
392
|
type FieldsExtension = {
|
|
380
393
|
[Type in string]: {
|
|
381
394
|
type: Type;
|
|
@@ -386,6 +399,11 @@ type LeftOrExactRight<Union, Left, Right> = (Left & Union extends Right ? Exact<
|
|
|
386
399
|
type AssertHasValue<T, True = T, False = never> = [keyof T] extends [
|
|
387
400
|
never
|
|
388
401
|
] ? False : True;
|
|
402
|
+
type RenderFunc<Props extends {
|
|
403
|
+
[key: string]: any;
|
|
404
|
+
} = {
|
|
405
|
+
children: ReactNode;
|
|
406
|
+
}> = (props: Props) => ReactElement;
|
|
389
407
|
|
|
390
408
|
type MapFnParams<ThisField = Field> = {
|
|
391
409
|
value: any;
|
|
@@ -409,11 +427,6 @@ G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>, UserField extends
|
|
|
409
427
|
[Type in UserField["type"]]: FieldTransformFn<ExtractField<UserField, Type>>;
|
|
410
428
|
}>;
|
|
411
429
|
|
|
412
|
-
type RenderFunc<Props extends {
|
|
413
|
-
[key: string]: any;
|
|
414
|
-
} = {
|
|
415
|
-
children: ReactNode;
|
|
416
|
-
}> = (props: Props) => ReactElement;
|
|
417
430
|
declare const overrideKeys: readonly ["header", "headerActions", "fields", "fieldLabel", "drawer", "drawerItem", "componentOverlay", "outline", "puck", "preview"];
|
|
418
431
|
type OverrideKey = (typeof overrideKeys)[number];
|
|
419
432
|
type OverridesGeneric<Shape extends {
|
|
@@ -484,7 +497,7 @@ type DragAxis = "dynamic" | "y" | "x";
|
|
|
484
497
|
|
|
485
498
|
type iconTypes = "Smartphone" | "Monitor" | "Tablet";
|
|
486
499
|
type Viewport = {
|
|
487
|
-
width: number;
|
|
500
|
+
width: number | "100%";
|
|
488
501
|
height?: number | "auto";
|
|
489
502
|
label?: string;
|
|
490
503
|
icon?: iconTypes | ReactNode;
|
|
@@ -498,8 +511,13 @@ type Permissions = {
|
|
|
498
511
|
insert: boolean;
|
|
499
512
|
} & Record<string, boolean>;
|
|
500
513
|
type Plugin<UserConfig extends Config = Config> = {
|
|
514
|
+
name?: string;
|
|
515
|
+
label?: string;
|
|
516
|
+
icon?: ReactNode;
|
|
517
|
+
render?: () => ReactElement;
|
|
501
518
|
overrides?: Partial<Overrides<UserConfig>>;
|
|
502
519
|
fieldTransforms?: FieldTransforms<UserConfig>;
|
|
520
|
+
mobilePanelHeight?: "toggle" | "min-content";
|
|
503
521
|
};
|
|
504
522
|
type Slot<Props extends {
|
|
505
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>;
|
|
@@ -85,9 +85,9 @@ type ExternalFieldWithAdaptor<Props extends any = {
|
|
|
85
85
|
type CacheOpts = {
|
|
86
86
|
enabled?: boolean;
|
|
87
87
|
};
|
|
88
|
-
|
|
88
|
+
interface ExternalField<Props extends any = {
|
|
89
89
|
[key: string]: any;
|
|
90
|
-
}>
|
|
90
|
+
}> extends BaseField {
|
|
91
91
|
type: "external";
|
|
92
92
|
cache?: CacheOpts;
|
|
93
93
|
placeholder?: string;
|
|
@@ -105,7 +105,7 @@ type ExternalField<Props extends any = {
|
|
|
105
105
|
initialQuery?: string;
|
|
106
106
|
filterFields?: Record<string, Field>;
|
|
107
107
|
initialFilters?: Record<string, any>;
|
|
108
|
-
}
|
|
108
|
+
}
|
|
109
109
|
type CustomFieldRender<Value extends any> = (props: {
|
|
110
110
|
field: CustomField<Value>;
|
|
111
111
|
name: string;
|
|
@@ -114,16 +114,16 @@ type CustomFieldRender<Value extends any> = (props: {
|
|
|
114
114
|
onChange: (value: Value) => void;
|
|
115
115
|
readOnly?: boolean;
|
|
116
116
|
}) => ReactElement;
|
|
117
|
-
|
|
117
|
+
interface CustomField<Value extends any> extends BaseField {
|
|
118
118
|
type: "custom";
|
|
119
119
|
render: CustomFieldRender<Value>;
|
|
120
120
|
contentEditable?: boolean;
|
|
121
|
-
}
|
|
122
|
-
|
|
121
|
+
}
|
|
122
|
+
interface SlotField extends BaseField {
|
|
123
123
|
type: "slot";
|
|
124
124
|
allow?: string[];
|
|
125
125
|
disallow?: string[];
|
|
126
|
-
}
|
|
126
|
+
}
|
|
127
127
|
type Field<ValueType = any, UserField extends {} = {}> = TextField | NumberField | TextareaField | SelectField | RadioField | ArrayField<ValueType extends {
|
|
128
128
|
[key: string]: any;
|
|
129
129
|
}[] ? ValueType : never, UserField> | ObjectField<ValueType, UserField> | ExternalField<ValueType> | ExternalFieldWithAdaptor<ValueType> | CustomField<ValueType> | SlotField;
|
|
@@ -151,7 +151,7 @@ type DropZoneProps = {
|
|
|
151
151
|
};
|
|
152
152
|
|
|
153
153
|
type PuckContext = {
|
|
154
|
-
renderDropZone: React.
|
|
154
|
+
renderDropZone: (props: DropZoneProps) => React.ReactNode;
|
|
155
155
|
metadata: Metadata;
|
|
156
156
|
isEditing: boolean;
|
|
157
157
|
dragRef: ((element: Element | null) => void) | null;
|
|
@@ -199,6 +199,8 @@ type ResolveDataTrigger = "insert" | "replace" | "load" | "force";
|
|
|
199
199
|
type WithPartialProps<T, Props extends DefaultComponentProps> = Omit<T, "props"> & {
|
|
200
200
|
props?: Partial<Props>;
|
|
201
201
|
};
|
|
202
|
+
interface ComponentConfigExtensions {
|
|
203
|
+
}
|
|
202
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.
|
|
203
205
|
UserField extends BaseField = {}> = {
|
|
204
206
|
render: PuckComponent<RenderProps>;
|
|
@@ -214,7 +216,7 @@ UserField extends BaseField = {}> = {
|
|
|
214
216
|
fields: Fields<FieldProps>;
|
|
215
217
|
lastFields: Fields<FieldProps>;
|
|
216
218
|
lastData: DataShape | null;
|
|
217
|
-
metadata:
|
|
219
|
+
metadata: ComponentMetadata;
|
|
218
220
|
appState: AppState;
|
|
219
221
|
parent: ComponentData | null;
|
|
220
222
|
}) => Promise<Fields<FieldProps>> | Fields<FieldProps>;
|
|
@@ -223,7 +225,7 @@ UserField extends BaseField = {}> = {
|
|
|
223
225
|
id: string;
|
|
224
226
|
}>;
|
|
225
227
|
lastData: DataShape | null;
|
|
226
|
-
metadata:
|
|
228
|
+
metadata: ComponentMetadata;
|
|
227
229
|
trigger: ResolveDataTrigger;
|
|
228
230
|
}) => Promise<WithPartialProps<DataShape, FieldProps>> | WithPartialProps<DataShape, FieldProps>;
|
|
229
231
|
resolvePermissions?: (data: DataShape, params: {
|
|
@@ -235,8 +237,8 @@ UserField extends BaseField = {}> = {
|
|
|
235
237
|
appState: AppState;
|
|
236
238
|
lastData: DataShape | null;
|
|
237
239
|
}) => Promise<Partial<Permissions>> | Partial<Permissions>;
|
|
238
|
-
metadata?:
|
|
239
|
-
};
|
|
240
|
+
metadata?: ComponentMetadata;
|
|
241
|
+
} & ComponentConfigExtensions;
|
|
240
242
|
type RootConfigInternal<RootProps extends DefaultComponentProps = DefaultComponentProps, UserField extends BaseField = {}> = Partial<ComponentConfigInternal<WithChildren<RootProps>, AsFieldProps<RootProps>, RootData<AsFieldProps<RootProps>>, UserField>>;
|
|
241
243
|
type Category<ComponentName> = {
|
|
242
244
|
components?: ComponentName[];
|
|
@@ -263,6 +265,12 @@ type ExtractConfigParams<UserConfig extends ConfigInternal> = UserConfig extends
|
|
|
263
265
|
type: string;
|
|
264
266
|
} ? UserField : Field;
|
|
265
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
|
+
};
|
|
266
274
|
|
|
267
275
|
type BaseData<Props extends {
|
|
268
276
|
[key: string]: any;
|
|
@@ -302,10 +310,17 @@ type Data<Components extends DefaultComponents = DefaultComponents, RootProps ex
|
|
|
302
310
|
type Metadata = {
|
|
303
311
|
[key: string]: any;
|
|
304
312
|
};
|
|
313
|
+
interface PuckMetadata extends Metadata {
|
|
314
|
+
}
|
|
315
|
+
interface ComponentMetadata extends PuckMetadata {
|
|
316
|
+
}
|
|
317
|
+
interface FieldMetadata extends Metadata {
|
|
318
|
+
}
|
|
305
319
|
|
|
306
320
|
type ItemWithId = {
|
|
307
321
|
_arrayId: string;
|
|
308
322
|
_originalIndex: number;
|
|
323
|
+
_currentIndex: number;
|
|
309
324
|
};
|
|
310
325
|
type ArrayState = {
|
|
311
326
|
items: ItemWithId[];
|
|
@@ -316,6 +331,7 @@ type UiState = {
|
|
|
316
331
|
rightSideBarVisible: boolean;
|
|
317
332
|
leftSideBarWidth?: number | null;
|
|
318
333
|
rightSideBarWidth?: number | null;
|
|
334
|
+
mobilePanelExpanded?: boolean;
|
|
319
335
|
itemSelector: ItemSelector | null;
|
|
320
336
|
arrayState: Record<string, ArrayState | undefined>;
|
|
321
337
|
previewMode: "interactive" | "edit";
|
|
@@ -328,7 +344,7 @@ type UiState = {
|
|
|
328
344
|
isDragging: boolean;
|
|
329
345
|
viewports: {
|
|
330
346
|
current: {
|
|
331
|
-
width: number;
|
|
347
|
+
width: number | "100%";
|
|
332
348
|
height: number | "auto";
|
|
333
349
|
};
|
|
334
350
|
controlsVisible: boolean;
|
|
@@ -337,6 +353,9 @@ type UiState = {
|
|
|
337
353
|
field: {
|
|
338
354
|
focus?: string | null;
|
|
339
355
|
};
|
|
356
|
+
plugin: {
|
|
357
|
+
current: string | null;
|
|
358
|
+
};
|
|
340
359
|
};
|
|
341
360
|
type AppState<UserData extends Data = Data> = {
|
|
342
361
|
data: UserData;
|
|
@@ -370,12 +389,6 @@ type BuiltinTypes = Date | RegExp | Error | Function | symbol | null | undefined
|
|
|
370
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 ? {
|
|
371
390
|
[K in keyof T]: WithDeepSlots<T[K], SlotType>;
|
|
372
391
|
} : T;
|
|
373
|
-
type ConfigParams<Components extends DefaultComponents = DefaultComponents, RootProps extends DefaultComponentProps = any, CategoryNames extends string[] = string[], UserFields extends FieldsExtension = FieldsExtension> = {
|
|
374
|
-
components?: Components;
|
|
375
|
-
root?: RootProps;
|
|
376
|
-
categories?: CategoryNames;
|
|
377
|
-
fields?: AssertHasValue<UserFields>;
|
|
378
|
-
};
|
|
379
392
|
type FieldsExtension = {
|
|
380
393
|
[Type in string]: {
|
|
381
394
|
type: Type;
|
|
@@ -386,6 +399,11 @@ type LeftOrExactRight<Union, Left, Right> = (Left & Union extends Right ? Exact<
|
|
|
386
399
|
type AssertHasValue<T, True = T, False = never> = [keyof T] extends [
|
|
387
400
|
never
|
|
388
401
|
] ? False : True;
|
|
402
|
+
type RenderFunc<Props extends {
|
|
403
|
+
[key: string]: any;
|
|
404
|
+
} = {
|
|
405
|
+
children: ReactNode;
|
|
406
|
+
}> = (props: Props) => ReactElement;
|
|
389
407
|
|
|
390
408
|
type MapFnParams<ThisField = Field> = {
|
|
391
409
|
value: any;
|
|
@@ -409,11 +427,6 @@ G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>, UserField extends
|
|
|
409
427
|
[Type in UserField["type"]]: FieldTransformFn<ExtractField<UserField, Type>>;
|
|
410
428
|
}>;
|
|
411
429
|
|
|
412
|
-
type RenderFunc<Props extends {
|
|
413
|
-
[key: string]: any;
|
|
414
|
-
} = {
|
|
415
|
-
children: ReactNode;
|
|
416
|
-
}> = (props: Props) => ReactElement;
|
|
417
430
|
declare const overrideKeys: readonly ["header", "headerActions", "fields", "fieldLabel", "drawer", "drawerItem", "componentOverlay", "outline", "puck", "preview"];
|
|
418
431
|
type OverrideKey = (typeof overrideKeys)[number];
|
|
419
432
|
type OverridesGeneric<Shape extends {
|
|
@@ -484,7 +497,7 @@ type DragAxis = "dynamic" | "y" | "x";
|
|
|
484
497
|
|
|
485
498
|
type iconTypes = "Smartphone" | "Monitor" | "Tablet";
|
|
486
499
|
type Viewport = {
|
|
487
|
-
width: number;
|
|
500
|
+
width: number | "100%";
|
|
488
501
|
height?: number | "auto";
|
|
489
502
|
label?: string;
|
|
490
503
|
icon?: iconTypes | ReactNode;
|
|
@@ -498,8 +511,13 @@ type Permissions = {
|
|
|
498
511
|
insert: boolean;
|
|
499
512
|
} & Record<string, boolean>;
|
|
500
513
|
type Plugin<UserConfig extends Config = Config> = {
|
|
514
|
+
name?: string;
|
|
515
|
+
label?: string;
|
|
516
|
+
icon?: ReactNode;
|
|
517
|
+
render?: () => ReactElement;
|
|
501
518
|
overrides?: Partial<Overrides<UserConfig>>;
|
|
502
519
|
fieldTransforms?: FieldTransforms<UserConfig>;
|
|
520
|
+
mobilePanelHeight?: "toggle" | "min-content";
|
|
503
521
|
};
|
|
504
522
|
type Slot<Props extends {
|
|
505
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",
|