@measured/puck 0.16.0-canary.1beaf6b → 0.16.0-canary.2bef00b

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,391 @@
1
+ import { U as UiState, D as Data, A as AppState, I as ItemSelector, F as Field, a as FieldProps, C as Config, b as DropZoneProps, P as Permissions, V as Viewports, c as DefaultComponentProps, d as DefaultRootProps, M as MappedItem, R as RootData, e as RootDataWithProps, f as ComponentData } from './Config-CkVFT1_w.mjs';
2
+ export { r as Adaptor, q as ArrayField, m as ArrayState, B as BaseData, n as BaseField, j as ComponentConfig, g as Content, t as CustomField, s as ExternalField, E as ExternalFieldWithAdaptor, u as Fields, l as ItemWithId, N as NumberField, O as ObjectField, h as PuckComponent, i as PuckContext, p as RadioField, k as RootDataWithoutProps, S as SelectField, T as TextField, o as TextareaField } from './Config-CkVFT1_w.mjs';
3
+ import * as react from 'react';
4
+ import { ReactNode, ReactElement, SyntheticEvent, CSSProperties } from 'react';
5
+ import * as react_jsx_runtime from 'react/jsx-runtime';
6
+ import { DragStart, DragUpdate } from '@measured/dnd';
7
+
8
+ type InsertAction = {
9
+ type: "insert";
10
+ componentType: string;
11
+ destinationIndex: number;
12
+ destinationZone: string;
13
+ id?: string;
14
+ };
15
+ type DuplicateAction = {
16
+ type: "duplicate";
17
+ sourceIndex: number;
18
+ sourceZone: string;
19
+ };
20
+ type ReplaceAction = {
21
+ type: "replace";
22
+ destinationIndex: number;
23
+ destinationZone: string;
24
+ data: any;
25
+ };
26
+ type ReorderAction = {
27
+ type: "reorder";
28
+ sourceIndex: number;
29
+ destinationIndex: number;
30
+ destinationZone: string;
31
+ };
32
+ type MoveAction = {
33
+ type: "move";
34
+ sourceIndex: number;
35
+ sourceZone: string;
36
+ destinationIndex: number;
37
+ destinationZone: string;
38
+ };
39
+ type RemoveAction = {
40
+ type: "remove";
41
+ index: number;
42
+ zone: string;
43
+ };
44
+ type SetUiAction = {
45
+ type: "setUi";
46
+ ui: Partial<UiState> | ((previous: UiState) => Partial<UiState>);
47
+ };
48
+ type SetDataAction = {
49
+ type: "setData";
50
+ data: Partial<Data> | ((previous: Data) => Partial<Data>);
51
+ };
52
+ type SetAction = {
53
+ type: "set";
54
+ state: Partial<AppState> | ((previous: AppState) => Partial<AppState>);
55
+ };
56
+ type RegisterZoneAction = {
57
+ type: "registerZone";
58
+ zone: string;
59
+ };
60
+ type UnregisterZoneAction = {
61
+ type: "unregisterZone";
62
+ zone: string;
63
+ };
64
+ type PuckAction = {
65
+ recordHistory?: boolean;
66
+ } & (ReorderAction | InsertAction | MoveAction | ReplaceAction | RemoveAction | DuplicateAction | SetAction | SetDataAction | SetUiAction | RegisterZoneAction | UnregisterZoneAction);
67
+
68
+ type RenderFunc<Props extends {
69
+ [key: string]: any;
70
+ } = {
71
+ children: ReactNode;
72
+ }> = (props: Props) => ReactElement;
73
+ declare const overrideKeys: readonly ["header", "headerActions", "fields", "fieldLabel", "components", "componentItem", "outline", "puck", "preview"];
74
+ type OverrideKey = (typeof overrideKeys)[number];
75
+ type OverridesGeneric<Shape extends {
76
+ [key in OverrideKey]: any;
77
+ }> = Shape;
78
+ type Overrides = OverridesGeneric<{
79
+ fieldTypes: Partial<FieldRenderFunctions>;
80
+ header: RenderFunc<{
81
+ actions: ReactNode;
82
+ children: ReactNode;
83
+ }>;
84
+ actionBar: RenderFunc<{
85
+ label?: string;
86
+ children: ReactNode;
87
+ }>;
88
+ headerActions: RenderFunc<{
89
+ children: ReactNode;
90
+ }>;
91
+ preview: RenderFunc;
92
+ fields: RenderFunc<{
93
+ children: ReactNode;
94
+ isLoading: boolean;
95
+ itemSelector?: ItemSelector | null;
96
+ }>;
97
+ fieldLabel: RenderFunc<{
98
+ children?: ReactNode;
99
+ icon?: ReactNode;
100
+ label: string;
101
+ el?: "label" | "div";
102
+ readOnly?: boolean;
103
+ className?: string;
104
+ }>;
105
+ components: RenderFunc;
106
+ componentItem: RenderFunc<{
107
+ children: ReactNode;
108
+ name: string;
109
+ }>;
110
+ iframe: RenderFunc<{
111
+ children: ReactNode;
112
+ document?: Document;
113
+ }>;
114
+ outline: RenderFunc;
115
+ puck: RenderFunc;
116
+ }>;
117
+ type FieldRenderFunctions = Omit<{
118
+ [Type in Field["type"]]: React.FunctionComponent<FieldProps<Extract<Field, {
119
+ type: Type;
120
+ }>> & {
121
+ children: ReactNode;
122
+ name: string;
123
+ }>;
124
+ }, "custom"> & {
125
+ [key: string]: React.FunctionComponent<FieldProps<any> & {
126
+ children: ReactNode;
127
+ name: string;
128
+ }>;
129
+ };
130
+
131
+ type Plugin = {
132
+ overrides: Partial<Overrides>;
133
+ };
134
+
135
+ declare const ActionBar: {
136
+ ({ label, children, }: {
137
+ label?: string;
138
+ children?: ReactNode;
139
+ }): react_jsx_runtime.JSX.Element;
140
+ Action: ({ children, label, onClick, }: {
141
+ children: ReactNode;
142
+ label?: string;
143
+ onClick: (e: SyntheticEvent) => void;
144
+ }) => react_jsx_runtime.JSX.Element;
145
+ };
146
+ declare const Action: ({ children, label, onClick, }: {
147
+ children: ReactNode;
148
+ label?: string;
149
+ onClick: (e: SyntheticEvent) => void;
150
+ }) => react_jsx_runtime.JSX.Element;
151
+
152
+ declare const FieldLabel: ({ children, icon, label, el, readOnly, className, }: {
153
+ children?: ReactNode;
154
+ icon?: ReactNode;
155
+ label: string;
156
+ el?: "label" | "div";
157
+ readOnly?: boolean;
158
+ className?: string;
159
+ }) => react_jsx_runtime.JSX.Element;
160
+ type FieldLabelPropsInternal = {
161
+ children?: ReactNode;
162
+ icon?: ReactNode;
163
+ label?: string;
164
+ el?: "label" | "div";
165
+ readOnly?: boolean;
166
+ };
167
+ declare const FieldLabelInternal: ({ children, icon, label, el, readOnly, }: FieldLabelPropsInternal) => react_jsx_runtime.JSX.Element;
168
+ type FieldPropsInternalOptional<ValueType = any, F = Field<any>> = FieldProps<ValueType, F> & {
169
+ Label?: React.FC<FieldLabelPropsInternal>;
170
+ label?: string;
171
+ name?: string;
172
+ };
173
+ type FieldPropsInternal<ValueType = any, F = Field<any>> = FieldProps<ValueType, F> & {
174
+ Label: React.FC<FieldLabelPropsInternal>;
175
+ label?: string;
176
+ id: string;
177
+ name?: string;
178
+ };
179
+ declare function AutoFieldPrivate<ValueType = any, FieldType extends Field<ValueType> = Field<ValueType>>(props: FieldPropsInternalOptional<ValueType, FieldType> & {
180
+ Label?: React.FC<FieldLabelPropsInternal>;
181
+ }): react_jsx_runtime.JSX.Element;
182
+ declare function AutoField<ValueType = any, FieldType extends Field<ValueType> = Field<ValueType>>(props: FieldProps<ValueType, FieldType>): react_jsx_runtime.JSX.Element;
183
+
184
+ declare const Button: ({ children, href, onClick, variant, type, disabled, tabIndex, newTab, fullWidth, icon, size, loading: loadingProp, }: {
185
+ children: ReactNode;
186
+ href?: string;
187
+ onClick?: (e: any) => void | Promise<void>;
188
+ variant?: "primary" | "secondary";
189
+ type?: "button" | "submit" | "reset";
190
+ disabled?: boolean;
191
+ tabIndex?: number;
192
+ newTab?: boolean;
193
+ fullWidth?: boolean;
194
+ icon?: ReactNode;
195
+ size?: "medium" | "large";
196
+ loading?: boolean;
197
+ }) => react_jsx_runtime.JSX.Element;
198
+
199
+ declare const Drawer: {
200
+ ({ children, droppableId: _droppableId, direction, }: {
201
+ children: ReactNode;
202
+ droppableId?: string;
203
+ direction?: "vertical" | "horizontal";
204
+ }): react_jsx_runtime.JSX.Element;
205
+ Item: ({ name, children, id, label, index, isDragDisabled, }: {
206
+ name: string;
207
+ children?: (props: {
208
+ children: ReactNode;
209
+ name: string;
210
+ }) => ReactElement;
211
+ id?: string;
212
+ label?: string;
213
+ index: number;
214
+ isDragDisabled?: boolean;
215
+ }) => react_jsx_runtime.JSX.Element;
216
+ };
217
+
218
+ type History<D = any> = {
219
+ id: string;
220
+ data: D;
221
+ };
222
+ type HistoryStore<D = any> = {
223
+ index: number;
224
+ hasPast: boolean;
225
+ hasFuture: boolean;
226
+ histories: History<D>[];
227
+ record: (data: D) => void;
228
+ back: VoidFunction;
229
+ forward: VoidFunction;
230
+ currentHistory: History;
231
+ nextHistory: History<D> | null;
232
+ prevHistory: History<D> | null;
233
+ setHistories: (histories: History[]) => void;
234
+ setHistoryIndex: (index: number) => void;
235
+ };
236
+
237
+ type OnAction = (action: PuckAction, appState: AppState, prevAppState: AppState) => void;
238
+
239
+ type PathData = Record<string, {
240
+ path: string[];
241
+ label: string;
242
+ }>;
243
+ type DropZoneContext<UserConfig extends Config = Config> = {
244
+ data: Data;
245
+ config: UserConfig;
246
+ componentState?: Record<string, any>;
247
+ itemSelector?: ItemSelector | null;
248
+ setItemSelector?: (newIndex: ItemSelector | null) => void;
249
+ dispatch?: (action: PuckAction) => void;
250
+ areaId?: string;
251
+ draggedItem?: DragStart & Partial<DragUpdate>;
252
+ placeholderStyle?: CSSProperties;
253
+ hoveringArea?: string | null;
254
+ setHoveringArea?: (area: string | null) => void;
255
+ hoveringZone?: string | null;
256
+ setHoveringZone?: (zone: string | null) => void;
257
+ hoveringComponent?: string | null;
258
+ setHoveringComponent?: (id: string | null) => void;
259
+ registerZoneArea?: (areaId: string) => void;
260
+ areasWithZones?: Record<string, boolean>;
261
+ registerZone?: (zoneCompound: string) => void;
262
+ unregisterZone?: (zoneCompound: string) => void;
263
+ activeZones?: Record<string, boolean>;
264
+ pathData?: PathData;
265
+ registerPath?: (selector: ItemSelector) => void;
266
+ mode?: "edit" | "render";
267
+ zoneWillDrag?: string;
268
+ setZoneWillDrag?: (zone: string) => void;
269
+ } | null;
270
+ declare const dropZoneContext: react.Context<DropZoneContext<Config>>;
271
+ declare const DropZoneProvider: ({ children, value, }: {
272
+ children: ReactNode;
273
+ value: DropZoneContext;
274
+ }) => react_jsx_runtime.JSX.Element;
275
+
276
+ declare function DropZone(props: DropZoneProps): react_jsx_runtime.JSX.Element;
277
+
278
+ declare const IconButton: ({ children, href, onClick, variant, type, disabled, tabIndex, newTab, fullWidth, title, }: {
279
+ children: ReactNode;
280
+ href?: string;
281
+ onClick?: (e: SyntheticEvent) => void | Promise<void>;
282
+ variant?: "primary" | "secondary";
283
+ type?: "button" | "submit" | "reset";
284
+ disabled?: boolean;
285
+ tabIndex?: number;
286
+ newTab?: boolean;
287
+ fullWidth?: boolean;
288
+ title: string;
289
+ }) => react_jsx_runtime.JSX.Element;
290
+
291
+ type IframeConfig = {
292
+ enabled?: boolean;
293
+ };
294
+
295
+ declare function Puck<UserConfig extends Config = Config>({ children, config, data: initialData, ui: initialUi, onChange, onPublish, onAction, permissions, plugins, overrides, renderHeader, renderHeaderActions, headerTitle, headerPath, viewports, iframe, dnd, initialHistory, }: {
296
+ children?: ReactNode;
297
+ config: UserConfig;
298
+ data: Partial<Data>;
299
+ ui?: Partial<UiState>;
300
+ onChange?: (data: Data) => void;
301
+ onPublish?: (data: Data) => void;
302
+ onAction?: OnAction;
303
+ permissions?: Partial<Permissions>;
304
+ plugins?: Plugin[];
305
+ overrides?: Partial<Overrides>;
306
+ renderHeader?: (props: {
307
+ children: ReactNode;
308
+ dispatch: (action: PuckAction) => void;
309
+ state: AppState;
310
+ }) => ReactElement;
311
+ renderHeaderActions?: (props: {
312
+ state: AppState;
313
+ dispatch: (action: PuckAction) => void;
314
+ }) => ReactElement;
315
+ headerTitle?: string;
316
+ headerPath?: string;
317
+ viewports?: Viewports;
318
+ iframe?: IframeConfig;
319
+ dnd?: {
320
+ disableAutoScroll?: boolean;
321
+ };
322
+ initialHistory?: {
323
+ histories: History<any>[];
324
+ index: number;
325
+ };
326
+ }): react_jsx_runtime.JSX.Element;
327
+ declare namespace Puck {
328
+ var Components: () => react_jsx_runtime.JSX.Element;
329
+ var Fields: () => react_jsx_runtime.JSX.Element;
330
+ var Outline: () => react_jsx_runtime.JSX.Element;
331
+ var Preview: ({ id }: {
332
+ id?: string;
333
+ }) => react_jsx_runtime.JSX.Element;
334
+ }
335
+
336
+ declare function Render<UserConfig extends Config = Config>({ config, data, }: {
337
+ config: UserConfig;
338
+ data: Partial<Data>;
339
+ }): react_jsx_runtime.JSX.Element;
340
+
341
+ declare function migrate(data: Data): Data;
342
+
343
+ type PropTransform<Props extends DefaultComponentProps = DefaultComponentProps, RootProps extends DefaultRootProps = DefaultRootProps> = Partial<{
344
+ [ComponentName in keyof Props]: (props: Props[ComponentName] & {
345
+ [key: string]: any;
346
+ }) => Props[ComponentName];
347
+ } & {
348
+ root: (props: RootProps & {
349
+ [key: string]: any;
350
+ }) => RootProps;
351
+ }>;
352
+ declare function transformProps<Props extends DefaultComponentProps = DefaultComponentProps, RootProps extends DefaultComponentProps = DefaultComponentProps>(data: Partial<Data>, propTransforms: PropTransform<Props, RootProps>): Data;
353
+
354
+ declare function resolveAllData(data: Partial<Data>, config: Config, onResolveStart?: (item: MappedItem) => void, onResolveEnd?: (item: MappedItem) => void): Promise<{
355
+ root: RootData<DefaultRootProps> | RootDataWithProps;
356
+ content: any;
357
+ zones: Record<string, MappedItem[]>;
358
+ }>;
359
+
360
+ declare const usePuck: () => {
361
+ appState: AppState;
362
+ config: Config;
363
+ dispatch: (action: PuckAction) => void;
364
+ getPermissions: ({ item, type, }?: {
365
+ item?: ComponentData;
366
+ type?: keyof DefaultComponentProps;
367
+ }) => {
368
+ [x: string]: boolean | undefined;
369
+ drag?: boolean | undefined;
370
+ duplicate?: boolean | undefined;
371
+ delete?: boolean | undefined;
372
+ edit?: boolean | undefined;
373
+ insert?: boolean | undefined;
374
+ };
375
+ history: {
376
+ back: VoidFunction;
377
+ forward: VoidFunction;
378
+ setHistories: (histories: History[]) => void;
379
+ setHistoryIndex: (index: number) => void;
380
+ hasPast: boolean;
381
+ hasFuture: boolean;
382
+ histories: History<any>[];
383
+ index: number;
384
+ historyStore: HistoryStore | undefined;
385
+ };
386
+ selectedItem: ComponentData<DefaultComponentProps & {
387
+ id: string;
388
+ }> | null;
389
+ };
390
+
391
+ export { Action, ActionBar, AppState, AutoField, AutoFieldPrivate, Button, ComponentData, Config, Data, DefaultComponentProps, DefaultRootProps, Drawer, DropZone, DropZoneProvider, Field, FieldLabel, FieldLabelInternal, FieldProps, type FieldPropsInternal, type History, IconButton, MappedItem, Permissions, type Plugin, Puck, type PuckAction, Render, RootData, RootDataWithProps, UiState, dropZoneContext, migrate, resolveAllData, transformProps, usePuck };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { U as UiState, D as Data, A as AppState, I as ItemSelector, F as Field, a as FieldProps, C as Config, b as DropZoneProps, V as Viewports, c as DefaultComponentProps, d as DefaultRootProps, M as MappedItem, R as RootData, e as RootDataWithProps, f as ComponentData } from './Config-VOJqVbHe.js';
2
- export { q as Adaptor, p as ArrayField, l as ArrayState, B as BaseData, m as BaseField, i as ComponentConfig, g as Content, s as CustomField, r as ExternalField, E as ExternalFieldWithAdaptor, t as Fields, k as ItemWithId, N as NumberField, O as ObjectField, P as PuckComponent, h as PuckContext, o as RadioField, j as RootDataWithoutProps, S as SelectField, T as TextField, n as TextareaField } from './Config-VOJqVbHe.js';
1
+ import { U as UiState, D as Data, A as AppState, I as ItemSelector, F as Field, a as FieldProps, C as Config, b as DropZoneProps, P as Permissions, V as Viewports, c as DefaultComponentProps, d as DefaultRootProps, M as MappedItem, R as RootData, e as RootDataWithProps, f as ComponentData } from './Config-CkVFT1_w.js';
2
+ export { r as Adaptor, q as ArrayField, m as ArrayState, B as BaseData, n as BaseField, j as ComponentConfig, g as Content, t as CustomField, s as ExternalField, E as ExternalFieldWithAdaptor, u as Fields, l as ItemWithId, N as NumberField, O as ObjectField, h as PuckComponent, i as PuckContext, p as RadioField, k as RootDataWithoutProps, S as SelectField, T as TextField, o as TextareaField } from './Config-CkVFT1_w.js';
3
3
  import * as react from 'react';
4
4
  import { ReactNode, ReactElement, SyntheticEvent, CSSProperties } from 'react';
5
5
  import * as react_jsx_runtime from 'react/jsx-runtime';
@@ -81,6 +81,10 @@ type Overrides = OverridesGeneric<{
81
81
  actions: ReactNode;
82
82
  children: ReactNode;
83
83
  }>;
84
+ actionBar: RenderFunc<{
85
+ label?: string;
86
+ children: ReactNode;
87
+ }>;
84
88
  headerActions: RenderFunc<{
85
89
  children: ReactNode;
86
90
  }>;
@@ -103,6 +107,10 @@ type Overrides = OverridesGeneric<{
103
107
  children: ReactNode;
104
108
  name: string;
105
109
  }>;
110
+ iframe: RenderFunc<{
111
+ children: ReactNode;
112
+ document?: Document;
113
+ }>;
106
114
  outline: RenderFunc;
107
115
  puck: RenderFunc;
108
116
  }>;
@@ -129,13 +137,15 @@ declare const ActionBar: {
129
137
  label?: string;
130
138
  children?: ReactNode;
131
139
  }): react_jsx_runtime.JSX.Element;
132
- Action: ({ children, onClick, }: {
140
+ Action: ({ children, label, onClick, }: {
133
141
  children: ReactNode;
142
+ label?: string;
134
143
  onClick: (e: SyntheticEvent) => void;
135
144
  }) => react_jsx_runtime.JSX.Element;
136
145
  };
137
- declare const Action: ({ children, onClick, }: {
146
+ declare const Action: ({ children, label, onClick, }: {
138
147
  children: ReactNode;
148
+ label?: string;
139
149
  onClick: (e: SyntheticEvent) => void;
140
150
  }) => react_jsx_runtime.JSX.Element;
141
151
 
@@ -192,7 +202,7 @@ declare const Drawer: {
192
202
  droppableId?: string;
193
203
  direction?: "vertical" | "horizontal";
194
204
  }): react_jsx_runtime.JSX.Element;
195
- Item: ({ name, children, id, label, index, }: {
205
+ Item: ({ name, children, id, label, index, isDragDisabled, }: {
196
206
  name: string;
197
207
  children?: (props: {
198
208
  children: ReactNode;
@@ -201,6 +211,7 @@ declare const Drawer: {
201
211
  id?: string;
202
212
  label?: string;
203
213
  index: number;
214
+ isDragDisabled?: boolean;
204
215
  }) => react_jsx_runtime.JSX.Element;
205
216
  };
206
217
 
@@ -281,7 +292,7 @@ type IframeConfig = {
281
292
  enabled?: boolean;
282
293
  };
283
294
 
284
- declare function Puck<UserConfig extends Config = Config>({ children, config, data: initialData, ui: initialUi, onChange, onPublish, onAction, plugins, overrides, renderHeader, renderHeaderActions, headerTitle, headerPath, viewports, iframe, dnd, initialHistory, }: {
295
+ declare function Puck<UserConfig extends Config = Config>({ children, config, data: initialData, ui: initialUi, onChange, onPublish, onAction, permissions, plugins, overrides, renderHeader, renderHeaderActions, headerTitle, headerPath, viewports, iframe, dnd, initialHistory, }: {
285
296
  children?: ReactNode;
286
297
  config: UserConfig;
287
298
  data: Partial<Data>;
@@ -289,6 +300,7 @@ declare function Puck<UserConfig extends Config = Config>({ children, config, da
289
300
  onChange?: (data: Data) => void;
290
301
  onPublish?: (data: Data) => void;
291
302
  onAction?: OnAction;
303
+ permissions?: Partial<Permissions>;
292
304
  plugins?: Plugin[];
293
305
  overrides?: Partial<Overrides>;
294
306
  renderHeader?: (props: {
@@ -349,6 +361,17 @@ declare const usePuck: () => {
349
361
  appState: AppState;
350
362
  config: Config;
351
363
  dispatch: (action: PuckAction) => void;
364
+ getPermissions: ({ item, type, }?: {
365
+ item?: ComponentData;
366
+ type?: keyof DefaultComponentProps;
367
+ }) => {
368
+ [x: string]: boolean | undefined;
369
+ drag?: boolean | undefined;
370
+ duplicate?: boolean | undefined;
371
+ delete?: boolean | undefined;
372
+ edit?: boolean | undefined;
373
+ insert?: boolean | undefined;
374
+ };
352
375
  history: {
353
376
  back: VoidFunction;
354
377
  forward: VoidFunction;
@@ -365,4 +388,4 @@ declare const usePuck: () => {
365
388
  }> | null;
366
389
  };
367
390
 
368
- export { Action, ActionBar, AppState, AutoField, AutoFieldPrivate, Button, ComponentData, Config, Data, DefaultComponentProps, DefaultRootProps, Drawer, DropZone, DropZoneProvider, Field, FieldLabel, FieldLabelInternal, FieldProps, type FieldPropsInternal, type History, IconButton, MappedItem, type Plugin, Puck, type PuckAction, Render, RootData, RootDataWithProps, UiState, dropZoneContext, migrate, resolveAllData, transformProps, usePuck };
391
+ export { Action, ActionBar, AppState, AutoField, AutoFieldPrivate, Button, ComponentData, Config, Data, DefaultComponentProps, DefaultRootProps, Drawer, DropZone, DropZoneProvider, Field, FieldLabel, FieldLabelInternal, FieldProps, type FieldPropsInternal, type History, IconButton, MappedItem, Permissions, type Plugin, Puck, type PuckAction, Render, RootData, RootDataWithProps, UiState, dropZoneContext, migrate, resolveAllData, transformProps, usePuck };