@measured/puck 0.16.0-canary.7c79787 → 0.16.0-canary.83f34ed

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