@measured/puck-plugin-emotion-cache 0.21.0-canary.2e1b5267 → 0.21.0-canary.38e79ba8
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 +64 -59
- package/dist/index.d.ts +64 -59
- package/dist/index.js +7 -7
- package/dist/index.mjs +4 -4
- package/package.json +3 -2
package/dist/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ReactElement, CSSProperties,
|
|
1
|
+
import { ReactElement, ReactNode, CSSProperties, ElementType, JSX } from 'react';
|
|
2
2
|
|
|
3
3
|
type ItemSelector = {
|
|
4
4
|
index: number;
|
|
@@ -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];
|
|
56
|
-
getItemSummary?: (item: Props[0], index?: number) =>
|
|
55
|
+
defaultItemProps?: Props[0] | ((index: number) => Props[0]);
|
|
56
|
+
getItemSummary?: (item: Props[0], index?: number) => ReactNode;
|
|
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>;
|
|
@@ -80,12 +80,16 @@ type ExternalFieldWithAdaptor<Props extends any = {
|
|
|
80
80
|
placeholder?: string;
|
|
81
81
|
adaptor: Adaptor<any, any, Props>;
|
|
82
82
|
adaptorParams?: object;
|
|
83
|
-
getItemSummary: (item: NotUndefined<Props>, index?: number) =>
|
|
83
|
+
getItemSummary: (item: NotUndefined<Props>, index?: number) => ReactNode;
|
|
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;
|
|
@@ -93,7 +97,7 @@ type ExternalField<Props extends any = {
|
|
|
93
97
|
}) => Promise<any[] | null>;
|
|
94
98
|
mapProp?: (value: any) => Props;
|
|
95
99
|
mapRow?: (value: any) => Record<string, string | number | ReactElement>;
|
|
96
|
-
getItemSummary?: (item: NotUndefined<Props>, index?: number) =>
|
|
100
|
+
getItemSummary?: (item: NotUndefined<Props>, index?: number) => ReactNode;
|
|
97
101
|
showSearch?: boolean;
|
|
98
102
|
renderFooter?: (props: {
|
|
99
103
|
items: any[];
|
|
@@ -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,17 @@ 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
|
+
key?: string;
|
|
122
|
+
}
|
|
123
|
+
interface SlotField extends BaseField {
|
|
119
124
|
type: "slot";
|
|
120
125
|
allow?: string[];
|
|
121
126
|
disallow?: string[];
|
|
122
|
-
}
|
|
127
|
+
}
|
|
123
128
|
type Field<ValueType = any, UserField extends {} = {}> = TextField | NumberField | TextareaField | SelectField | RadioField | ArrayField<ValueType extends {
|
|
124
129
|
[key: string]: any;
|
|
125
130
|
}[] ? ValueType : never, UserField> | ObjectField<ValueType, UserField> | ExternalField<ValueType> | ExternalFieldWithAdaptor<ValueType> | CustomField<ValueType> | SlotField;
|
|
@@ -144,10 +149,11 @@ type DropZoneProps = {
|
|
|
144
149
|
minEmptyHeight?: number;
|
|
145
150
|
className?: string;
|
|
146
151
|
collisionAxis?: DragAxis;
|
|
152
|
+
as?: ElementType;
|
|
147
153
|
};
|
|
148
154
|
|
|
149
155
|
type PuckContext = {
|
|
150
|
-
renderDropZone: React.
|
|
156
|
+
renderDropZone: (props: DropZoneProps) => React.ReactNode;
|
|
151
157
|
metadata: Metadata;
|
|
152
158
|
isEditing: boolean;
|
|
153
159
|
dragRef: ((element: Element | null) => void) | null;
|
|
@@ -195,6 +201,8 @@ type ResolveDataTrigger = "insert" | "replace" | "load" | "force";
|
|
|
195
201
|
type WithPartialProps<T, Props extends DefaultComponentProps> = Omit<T, "props"> & {
|
|
196
202
|
props?: Partial<Props>;
|
|
197
203
|
};
|
|
204
|
+
interface ComponentConfigExtensions {
|
|
205
|
+
}
|
|
198
206
|
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
207
|
UserField extends BaseField = {}> = {
|
|
200
208
|
render: PuckComponent<RenderProps>;
|
|
@@ -210,7 +218,7 @@ UserField extends BaseField = {}> = {
|
|
|
210
218
|
fields: Fields<FieldProps>;
|
|
211
219
|
lastFields: Fields<FieldProps>;
|
|
212
220
|
lastData: DataShape | null;
|
|
213
|
-
metadata:
|
|
221
|
+
metadata: ComponentMetadata;
|
|
214
222
|
appState: AppState;
|
|
215
223
|
parent: ComponentData | null;
|
|
216
224
|
}) => Promise<Fields<FieldProps>> | Fields<FieldProps>;
|
|
@@ -219,7 +227,7 @@ UserField extends BaseField = {}> = {
|
|
|
219
227
|
id: string;
|
|
220
228
|
}>;
|
|
221
229
|
lastData: DataShape | null;
|
|
222
|
-
metadata:
|
|
230
|
+
metadata: ComponentMetadata;
|
|
223
231
|
trigger: ResolveDataTrigger;
|
|
224
232
|
}) => Promise<WithPartialProps<DataShape, FieldProps>> | WithPartialProps<DataShape, FieldProps>;
|
|
225
233
|
resolvePermissions?: (data: DataShape, params: {
|
|
@@ -230,9 +238,10 @@ UserField extends BaseField = {}> = {
|
|
|
230
238
|
permissions: Partial<Permissions>;
|
|
231
239
|
appState: AppState;
|
|
232
240
|
lastData: DataShape | null;
|
|
241
|
+
parent: ComponentData | null;
|
|
233
242
|
}) => Promise<Partial<Permissions>> | Partial<Permissions>;
|
|
234
|
-
metadata?:
|
|
235
|
-
};
|
|
243
|
+
metadata?: ComponentMetadata;
|
|
244
|
+
} & ComponentConfigExtensions;
|
|
236
245
|
type RootConfigInternal<RootProps extends DefaultComponentProps = DefaultComponentProps, UserField extends BaseField = {}> = Partial<ComponentConfigInternal<WithChildren<RootProps>, AsFieldProps<RootProps>, RootData<AsFieldProps<RootProps>>, UserField>>;
|
|
237
246
|
type Category<ComponentName> = {
|
|
238
247
|
components?: ComponentName[];
|
|
@@ -259,6 +268,12 @@ type ExtractConfigParams<UserConfig extends ConfigInternal> = UserConfig extends
|
|
|
259
268
|
type: string;
|
|
260
269
|
} ? UserField : Field;
|
|
261
270
|
} : never;
|
|
271
|
+
type ConfigParams<Components extends DefaultComponents = DefaultComponents, RootProps extends DefaultComponentProps = any, CategoryNames extends string[] = string[], UserFields extends FieldsExtension = FieldsExtension> = {
|
|
272
|
+
components?: Components;
|
|
273
|
+
root?: RootProps;
|
|
274
|
+
categories?: CategoryNames;
|
|
275
|
+
fields?: AssertHasValue<UserFields>;
|
|
276
|
+
};
|
|
262
277
|
|
|
263
278
|
type BaseData<Props extends {
|
|
264
279
|
[key: string]: any;
|
|
@@ -298,11 +313,16 @@ type Data<Components extends DefaultComponents = DefaultComponents, RootProps ex
|
|
|
298
313
|
type Metadata = {
|
|
299
314
|
[key: string]: any;
|
|
300
315
|
};
|
|
316
|
+
interface PuckMetadata extends Metadata {
|
|
317
|
+
}
|
|
318
|
+
interface ComponentMetadata extends PuckMetadata {
|
|
319
|
+
}
|
|
320
|
+
interface FieldMetadata extends Metadata {
|
|
321
|
+
}
|
|
301
322
|
|
|
302
323
|
type ItemWithId = {
|
|
303
324
|
_arrayId: string;
|
|
304
325
|
_originalIndex: number;
|
|
305
|
-
_currentIndex: number;
|
|
306
326
|
};
|
|
307
327
|
type ArrayState = {
|
|
308
328
|
items: ItemWithId[];
|
|
@@ -313,7 +333,6 @@ type UiState = {
|
|
|
313
333
|
rightSideBarVisible: boolean;
|
|
314
334
|
leftSideBarWidth?: number | null;
|
|
315
335
|
rightSideBarWidth?: number | null;
|
|
316
|
-
mobilePanelExpanded?: boolean;
|
|
317
336
|
itemSelector: ItemSelector | null;
|
|
318
337
|
arrayState: Record<string, ArrayState | undefined>;
|
|
319
338
|
previewMode: "interactive" | "edit";
|
|
@@ -326,7 +345,7 @@ type UiState = {
|
|
|
326
345
|
isDragging: boolean;
|
|
327
346
|
viewports: {
|
|
328
347
|
current: {
|
|
329
|
-
width: number
|
|
348
|
+
width: number;
|
|
330
349
|
height: number | "auto";
|
|
331
350
|
};
|
|
332
351
|
controlsVisible: boolean;
|
|
@@ -335,9 +354,6 @@ type UiState = {
|
|
|
335
354
|
field: {
|
|
336
355
|
focus?: string | null;
|
|
337
356
|
};
|
|
338
|
-
plugin: {
|
|
339
|
-
current: string | null;
|
|
340
|
-
};
|
|
341
357
|
};
|
|
342
358
|
type AppState<UserData extends Data = Data> = {
|
|
343
359
|
data: UserData;
|
|
@@ -371,12 +387,6 @@ type BuiltinTypes = Date | RegExp | Error | Function | symbol | null | undefined
|
|
|
371
387
|
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 ? {
|
|
372
388
|
[K in keyof T]: WithDeepSlots<T[K], SlotType>;
|
|
373
389
|
} : T;
|
|
374
|
-
type ConfigParams<Components extends DefaultComponents = DefaultComponents, RootProps extends DefaultComponentProps = any, CategoryNames extends string[] = string[], UserFields extends FieldsExtension = FieldsExtension> = {
|
|
375
|
-
components?: Components;
|
|
376
|
-
root?: RootProps;
|
|
377
|
-
categories?: CategoryNames;
|
|
378
|
-
fields?: AssertHasValue<UserFields>;
|
|
379
|
-
};
|
|
380
390
|
type FieldsExtension = {
|
|
381
391
|
[Type in string]: {
|
|
382
392
|
type: Type;
|
|
@@ -387,11 +397,6 @@ type LeftOrExactRight<Union, Left, Right> = (Left & Union extends Right ? Exact<
|
|
|
387
397
|
type AssertHasValue<T, True = T, False = never> = [keyof T] extends [
|
|
388
398
|
never
|
|
389
399
|
] ? False : True;
|
|
390
|
-
type RenderFunc<Props extends {
|
|
391
|
-
[key: string]: any;
|
|
392
|
-
} = {
|
|
393
|
-
children: ReactNode;
|
|
394
|
-
}> = (props: Props) => ReactElement;
|
|
395
400
|
|
|
396
401
|
type MapFnParams<ThisField = Field> = {
|
|
397
402
|
value: any;
|
|
@@ -415,6 +420,11 @@ G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>, UserField extends
|
|
|
415
420
|
[Type in UserField["type"]]: FieldTransformFn<ExtractField<UserField, Type>>;
|
|
416
421
|
}>;
|
|
417
422
|
|
|
423
|
+
type RenderFunc<Props extends {
|
|
424
|
+
[key: string]: any;
|
|
425
|
+
} = {
|
|
426
|
+
children: ReactNode;
|
|
427
|
+
}> = (props: Props) => ReactElement;
|
|
418
428
|
declare const overrideKeys: readonly ["header", "headerActions", "fields", "fieldLabel", "drawer", "drawerItem", "componentOverlay", "outline", "puck", "preview"];
|
|
419
429
|
type OverrideKey = (typeof overrideKeys)[number];
|
|
420
430
|
type OverridesGeneric<Shape extends {
|
|
@@ -485,7 +495,7 @@ type DragAxis = "dynamic" | "y" | "x";
|
|
|
485
495
|
|
|
486
496
|
type iconTypes = "Smartphone" | "Monitor" | "Tablet";
|
|
487
497
|
type Viewport = {
|
|
488
|
-
width: number
|
|
498
|
+
width: number;
|
|
489
499
|
height?: number | "auto";
|
|
490
500
|
label?: string;
|
|
491
501
|
icon?: iconTypes | ReactNode;
|
|
@@ -499,13 +509,8 @@ type Permissions = {
|
|
|
499
509
|
insert: boolean;
|
|
500
510
|
} & Record<string, boolean>;
|
|
501
511
|
type Plugin<UserConfig extends Config = Config> = {
|
|
502
|
-
name?: string;
|
|
503
|
-
label?: string;
|
|
504
|
-
icon?: ReactNode;
|
|
505
|
-
render?: () => ReactElement;
|
|
506
512
|
overrides?: Partial<Overrides<UserConfig>>;
|
|
507
513
|
fieldTransforms?: FieldTransforms<UserConfig>;
|
|
508
|
-
mobilePanelHeight?: "toggle" | "min-content";
|
|
509
514
|
};
|
|
510
515
|
type Slot<Props extends {
|
|
511
516
|
[key: string]: DefaultComponentProps;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ReactElement, CSSProperties,
|
|
1
|
+
import { ReactElement, ReactNode, CSSProperties, ElementType, JSX } from 'react';
|
|
2
2
|
|
|
3
3
|
type ItemSelector = {
|
|
4
4
|
index: number;
|
|
@@ -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];
|
|
56
|
-
getItemSummary?: (item: Props[0], index?: number) =>
|
|
55
|
+
defaultItemProps?: Props[0] | ((index: number) => Props[0]);
|
|
56
|
+
getItemSummary?: (item: Props[0], index?: number) => ReactNode;
|
|
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>;
|
|
@@ -80,12 +80,16 @@ type ExternalFieldWithAdaptor<Props extends any = {
|
|
|
80
80
|
placeholder?: string;
|
|
81
81
|
adaptor: Adaptor<any, any, Props>;
|
|
82
82
|
adaptorParams?: object;
|
|
83
|
-
getItemSummary: (item: NotUndefined<Props>, index?: number) =>
|
|
83
|
+
getItemSummary: (item: NotUndefined<Props>, index?: number) => ReactNode;
|
|
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;
|
|
@@ -93,7 +97,7 @@ type ExternalField<Props extends any = {
|
|
|
93
97
|
}) => Promise<any[] | null>;
|
|
94
98
|
mapProp?: (value: any) => Props;
|
|
95
99
|
mapRow?: (value: any) => Record<string, string | number | ReactElement>;
|
|
96
|
-
getItemSummary?: (item: NotUndefined<Props>, index?: number) =>
|
|
100
|
+
getItemSummary?: (item: NotUndefined<Props>, index?: number) => ReactNode;
|
|
97
101
|
showSearch?: boolean;
|
|
98
102
|
renderFooter?: (props: {
|
|
99
103
|
items: any[];
|
|
@@ -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,17 @@ 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
|
+
key?: string;
|
|
122
|
+
}
|
|
123
|
+
interface SlotField extends BaseField {
|
|
119
124
|
type: "slot";
|
|
120
125
|
allow?: string[];
|
|
121
126
|
disallow?: string[];
|
|
122
|
-
}
|
|
127
|
+
}
|
|
123
128
|
type Field<ValueType = any, UserField extends {} = {}> = TextField | NumberField | TextareaField | SelectField | RadioField | ArrayField<ValueType extends {
|
|
124
129
|
[key: string]: any;
|
|
125
130
|
}[] ? ValueType : never, UserField> | ObjectField<ValueType, UserField> | ExternalField<ValueType> | ExternalFieldWithAdaptor<ValueType> | CustomField<ValueType> | SlotField;
|
|
@@ -144,10 +149,11 @@ type DropZoneProps = {
|
|
|
144
149
|
minEmptyHeight?: number;
|
|
145
150
|
className?: string;
|
|
146
151
|
collisionAxis?: DragAxis;
|
|
152
|
+
as?: ElementType;
|
|
147
153
|
};
|
|
148
154
|
|
|
149
155
|
type PuckContext = {
|
|
150
|
-
renderDropZone: React.
|
|
156
|
+
renderDropZone: (props: DropZoneProps) => React.ReactNode;
|
|
151
157
|
metadata: Metadata;
|
|
152
158
|
isEditing: boolean;
|
|
153
159
|
dragRef: ((element: Element | null) => void) | null;
|
|
@@ -195,6 +201,8 @@ type ResolveDataTrigger = "insert" | "replace" | "load" | "force";
|
|
|
195
201
|
type WithPartialProps<T, Props extends DefaultComponentProps> = Omit<T, "props"> & {
|
|
196
202
|
props?: Partial<Props>;
|
|
197
203
|
};
|
|
204
|
+
interface ComponentConfigExtensions {
|
|
205
|
+
}
|
|
198
206
|
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
207
|
UserField extends BaseField = {}> = {
|
|
200
208
|
render: PuckComponent<RenderProps>;
|
|
@@ -210,7 +218,7 @@ UserField extends BaseField = {}> = {
|
|
|
210
218
|
fields: Fields<FieldProps>;
|
|
211
219
|
lastFields: Fields<FieldProps>;
|
|
212
220
|
lastData: DataShape | null;
|
|
213
|
-
metadata:
|
|
221
|
+
metadata: ComponentMetadata;
|
|
214
222
|
appState: AppState;
|
|
215
223
|
parent: ComponentData | null;
|
|
216
224
|
}) => Promise<Fields<FieldProps>> | Fields<FieldProps>;
|
|
@@ -219,7 +227,7 @@ UserField extends BaseField = {}> = {
|
|
|
219
227
|
id: string;
|
|
220
228
|
}>;
|
|
221
229
|
lastData: DataShape | null;
|
|
222
|
-
metadata:
|
|
230
|
+
metadata: ComponentMetadata;
|
|
223
231
|
trigger: ResolveDataTrigger;
|
|
224
232
|
}) => Promise<WithPartialProps<DataShape, FieldProps>> | WithPartialProps<DataShape, FieldProps>;
|
|
225
233
|
resolvePermissions?: (data: DataShape, params: {
|
|
@@ -230,9 +238,10 @@ UserField extends BaseField = {}> = {
|
|
|
230
238
|
permissions: Partial<Permissions>;
|
|
231
239
|
appState: AppState;
|
|
232
240
|
lastData: DataShape | null;
|
|
241
|
+
parent: ComponentData | null;
|
|
233
242
|
}) => Promise<Partial<Permissions>> | Partial<Permissions>;
|
|
234
|
-
metadata?:
|
|
235
|
-
};
|
|
243
|
+
metadata?: ComponentMetadata;
|
|
244
|
+
} & ComponentConfigExtensions;
|
|
236
245
|
type RootConfigInternal<RootProps extends DefaultComponentProps = DefaultComponentProps, UserField extends BaseField = {}> = Partial<ComponentConfigInternal<WithChildren<RootProps>, AsFieldProps<RootProps>, RootData<AsFieldProps<RootProps>>, UserField>>;
|
|
237
246
|
type Category<ComponentName> = {
|
|
238
247
|
components?: ComponentName[];
|
|
@@ -259,6 +268,12 @@ type ExtractConfigParams<UserConfig extends ConfigInternal> = UserConfig extends
|
|
|
259
268
|
type: string;
|
|
260
269
|
} ? UserField : Field;
|
|
261
270
|
} : never;
|
|
271
|
+
type ConfigParams<Components extends DefaultComponents = DefaultComponents, RootProps extends DefaultComponentProps = any, CategoryNames extends string[] = string[], UserFields extends FieldsExtension = FieldsExtension> = {
|
|
272
|
+
components?: Components;
|
|
273
|
+
root?: RootProps;
|
|
274
|
+
categories?: CategoryNames;
|
|
275
|
+
fields?: AssertHasValue<UserFields>;
|
|
276
|
+
};
|
|
262
277
|
|
|
263
278
|
type BaseData<Props extends {
|
|
264
279
|
[key: string]: any;
|
|
@@ -298,11 +313,16 @@ type Data<Components extends DefaultComponents = DefaultComponents, RootProps ex
|
|
|
298
313
|
type Metadata = {
|
|
299
314
|
[key: string]: any;
|
|
300
315
|
};
|
|
316
|
+
interface PuckMetadata extends Metadata {
|
|
317
|
+
}
|
|
318
|
+
interface ComponentMetadata extends PuckMetadata {
|
|
319
|
+
}
|
|
320
|
+
interface FieldMetadata extends Metadata {
|
|
321
|
+
}
|
|
301
322
|
|
|
302
323
|
type ItemWithId = {
|
|
303
324
|
_arrayId: string;
|
|
304
325
|
_originalIndex: number;
|
|
305
|
-
_currentIndex: number;
|
|
306
326
|
};
|
|
307
327
|
type ArrayState = {
|
|
308
328
|
items: ItemWithId[];
|
|
@@ -313,7 +333,6 @@ type UiState = {
|
|
|
313
333
|
rightSideBarVisible: boolean;
|
|
314
334
|
leftSideBarWidth?: number | null;
|
|
315
335
|
rightSideBarWidth?: number | null;
|
|
316
|
-
mobilePanelExpanded?: boolean;
|
|
317
336
|
itemSelector: ItemSelector | null;
|
|
318
337
|
arrayState: Record<string, ArrayState | undefined>;
|
|
319
338
|
previewMode: "interactive" | "edit";
|
|
@@ -326,7 +345,7 @@ type UiState = {
|
|
|
326
345
|
isDragging: boolean;
|
|
327
346
|
viewports: {
|
|
328
347
|
current: {
|
|
329
|
-
width: number
|
|
348
|
+
width: number;
|
|
330
349
|
height: number | "auto";
|
|
331
350
|
};
|
|
332
351
|
controlsVisible: boolean;
|
|
@@ -335,9 +354,6 @@ type UiState = {
|
|
|
335
354
|
field: {
|
|
336
355
|
focus?: string | null;
|
|
337
356
|
};
|
|
338
|
-
plugin: {
|
|
339
|
-
current: string | null;
|
|
340
|
-
};
|
|
341
357
|
};
|
|
342
358
|
type AppState<UserData extends Data = Data> = {
|
|
343
359
|
data: UserData;
|
|
@@ -371,12 +387,6 @@ type BuiltinTypes = Date | RegExp | Error | Function | symbol | null | undefined
|
|
|
371
387
|
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 ? {
|
|
372
388
|
[K in keyof T]: WithDeepSlots<T[K], SlotType>;
|
|
373
389
|
} : T;
|
|
374
|
-
type ConfigParams<Components extends DefaultComponents = DefaultComponents, RootProps extends DefaultComponentProps = any, CategoryNames extends string[] = string[], UserFields extends FieldsExtension = FieldsExtension> = {
|
|
375
|
-
components?: Components;
|
|
376
|
-
root?: RootProps;
|
|
377
|
-
categories?: CategoryNames;
|
|
378
|
-
fields?: AssertHasValue<UserFields>;
|
|
379
|
-
};
|
|
380
390
|
type FieldsExtension = {
|
|
381
391
|
[Type in string]: {
|
|
382
392
|
type: Type;
|
|
@@ -387,11 +397,6 @@ type LeftOrExactRight<Union, Left, Right> = (Left & Union extends Right ? Exact<
|
|
|
387
397
|
type AssertHasValue<T, True = T, False = never> = [keyof T] extends [
|
|
388
398
|
never
|
|
389
399
|
] ? False : True;
|
|
390
|
-
type RenderFunc<Props extends {
|
|
391
|
-
[key: string]: any;
|
|
392
|
-
} = {
|
|
393
|
-
children: ReactNode;
|
|
394
|
-
}> = (props: Props) => ReactElement;
|
|
395
400
|
|
|
396
401
|
type MapFnParams<ThisField = Field> = {
|
|
397
402
|
value: any;
|
|
@@ -415,6 +420,11 @@ G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>, UserField extends
|
|
|
415
420
|
[Type in UserField["type"]]: FieldTransformFn<ExtractField<UserField, Type>>;
|
|
416
421
|
}>;
|
|
417
422
|
|
|
423
|
+
type RenderFunc<Props extends {
|
|
424
|
+
[key: string]: any;
|
|
425
|
+
} = {
|
|
426
|
+
children: ReactNode;
|
|
427
|
+
}> = (props: Props) => ReactElement;
|
|
418
428
|
declare const overrideKeys: readonly ["header", "headerActions", "fields", "fieldLabel", "drawer", "drawerItem", "componentOverlay", "outline", "puck", "preview"];
|
|
419
429
|
type OverrideKey = (typeof overrideKeys)[number];
|
|
420
430
|
type OverridesGeneric<Shape extends {
|
|
@@ -485,7 +495,7 @@ type DragAxis = "dynamic" | "y" | "x";
|
|
|
485
495
|
|
|
486
496
|
type iconTypes = "Smartphone" | "Monitor" | "Tablet";
|
|
487
497
|
type Viewport = {
|
|
488
|
-
width: number
|
|
498
|
+
width: number;
|
|
489
499
|
height?: number | "auto";
|
|
490
500
|
label?: string;
|
|
491
501
|
icon?: iconTypes | ReactNode;
|
|
@@ -499,13 +509,8 @@ type Permissions = {
|
|
|
499
509
|
insert: boolean;
|
|
500
510
|
} & Record<string, boolean>;
|
|
501
511
|
type Plugin<UserConfig extends Config = Config> = {
|
|
502
|
-
name?: string;
|
|
503
|
-
label?: string;
|
|
504
|
-
icon?: ReactNode;
|
|
505
|
-
render?: () => ReactElement;
|
|
506
512
|
overrides?: Partial<Overrides<UserConfig>>;
|
|
507
513
|
fieldTransforms?: FieldTransforms<UserConfig>;
|
|
508
|
-
mobilePanelHeight?: "toggle" | "min-content";
|
|
509
514
|
};
|
|
510
515
|
type Slot<Props extends {
|
|
511
516
|
[key: string]: DefaultComponentProps;
|
package/dist/index.js
CHANGED
|
@@ -28,11 +28,11 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
29
|
|
|
30
30
|
// index.tsx
|
|
31
|
-
var
|
|
32
|
-
__export(
|
|
33
|
-
default: () =>
|
|
31
|
+
var index_exports = {};
|
|
32
|
+
__export(index_exports, {
|
|
33
|
+
default: () => index_default
|
|
34
34
|
});
|
|
35
|
-
module.exports = __toCommonJS(
|
|
35
|
+
module.exports = __toCommonJS(index_exports);
|
|
36
36
|
|
|
37
37
|
// ../tsup-config/react-import.js
|
|
38
38
|
var import_react = __toESM(require("react"));
|
|
@@ -63,7 +63,7 @@ function createStyleElement(options) {
|
|
|
63
63
|
tag.setAttribute("data-s", "");
|
|
64
64
|
return tag;
|
|
65
65
|
}
|
|
66
|
-
var StyleSheet = /* @__PURE__ */ function() {
|
|
66
|
+
var StyleSheet = /* @__PURE__ */ (function() {
|
|
67
67
|
function StyleSheet2(options) {
|
|
68
68
|
var _this = this;
|
|
69
69
|
this._insertTag = function(tag) {
|
|
@@ -121,7 +121,7 @@ var StyleSheet = /* @__PURE__ */ function() {
|
|
|
121
121
|
this.ctr = 0;
|
|
122
122
|
};
|
|
123
123
|
return StyleSheet2;
|
|
124
|
-
}();
|
|
124
|
+
})();
|
|
125
125
|
|
|
126
126
|
// ../../node_modules/stylis/src/Enum.js
|
|
127
127
|
var MS = "-ms-";
|
|
@@ -924,4 +924,4 @@ var createEmotionCachePlugin = (key) => {
|
|
|
924
924
|
}
|
|
925
925
|
};
|
|
926
926
|
};
|
|
927
|
-
var
|
|
927
|
+
var index_default = createEmotionCachePlugin;
|
package/dist/index.mjs
CHANGED
|
@@ -27,7 +27,7 @@ function createStyleElement(options) {
|
|
|
27
27
|
tag.setAttribute("data-s", "");
|
|
28
28
|
return tag;
|
|
29
29
|
}
|
|
30
|
-
var StyleSheet = /* @__PURE__ */ function() {
|
|
30
|
+
var StyleSheet = /* @__PURE__ */ (function() {
|
|
31
31
|
function StyleSheet2(options) {
|
|
32
32
|
var _this = this;
|
|
33
33
|
this._insertTag = function(tag) {
|
|
@@ -85,7 +85,7 @@ var StyleSheet = /* @__PURE__ */ function() {
|
|
|
85
85
|
this.ctr = 0;
|
|
86
86
|
};
|
|
87
87
|
return StyleSheet2;
|
|
88
|
-
}();
|
|
88
|
+
})();
|
|
89
89
|
|
|
90
90
|
// ../../node_modules/stylis/src/Enum.js
|
|
91
91
|
var MS = "-ms-";
|
|
@@ -888,7 +888,7 @@ var createEmotionCachePlugin = (key) => {
|
|
|
888
888
|
}
|
|
889
889
|
};
|
|
890
890
|
};
|
|
891
|
-
var
|
|
891
|
+
var index_default = createEmotionCachePlugin;
|
|
892
892
|
export {
|
|
893
|
-
|
|
893
|
+
index_default as default
|
|
894
894
|
};
|
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.38e79ba8",
|
|
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,8 @@
|
|
|
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.38e79ba8",
|
|
28
|
+
"@types/minimatch": "3.0.5",
|
|
28
29
|
"@types/react": "^19.0.1",
|
|
29
30
|
"@types/react-dom": "^19.0.2",
|
|
30
31
|
"eslint": "^7.32.0",
|