@measured/puck 0.18.3-canary.b44056f → 0.19.0-canary.01a27f78

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 CHANGED
@@ -1,8 +1,111 @@
1
- import { F as FieldProps, a as Field, D as DropZoneProps, C as Config, U as UserGenerics, b as Data, c as UiState, O as OnAction, P as Permissions, d as Plugin, e as Overrides, f as PuckAction, V as Viewports, I as IframeConfig, g as InitialHistory, h as DefaultComponentProps, i as DefaultRootFieldProps, H as History, A as AppState, E as ExtractPropsFromConfig, j as ExtractRootPropsFromConfig, k as ComponentDataMap } from './resolve-all-data-ppm982Jh.mjs';
2
- export { Q as Adaptor, K as ArrayField, s as ArrayState, a3 as AsFieldProps, B as BaseData, z as BaseField, u as ComponentConfig, x as ComponentData, y as Content, Y as CustomField, a0 as DefaultRootProps, $ as DefaultRootRenderProps, l as Direction, m as DragAxis, X as ExternalField, W as ExternalFieldWithAdaptor, q as FieldRenderFunctions, Z as Fields, r as ItemWithId, M as MappedItem, N as NumberField, L as ObjectField, p as OverrideKey, t as PuckComponent, _ as PuckContext, J as RadioField, w as RootData, R as RootDataWithProps, v as RootDataWithoutProps, S as SelectField, T as TextField, G as TextareaField, n as Viewport, a4 as WithChildren, a1 as WithId, a2 as WithPuckProps, o as overrideKeys, a5 as resolveAllData } from './resolve-all-data-ppm982Jh.mjs';
1
+ import { H as History, P as Permissions, C as ComponentData, a as Config, U as UserGenerics, F as Fields, b as PuckAction, R as RootDataWithProps, c as ResolveDataTrigger, d as Plugin, O as Overrides, V as Viewports, I as IframeConfig, e as UiState, f as ComponentConfig, A as AppState, M as Metadata, g as Field, h as FieldProps, D as DropZoneProps, i as Data, j as OnAction, k as InitialHistory, l as ItemSelector } from './walk-tree-DBd3aQ_5.mjs';
2
+ export { _ as Adaptor, Y as ArrayField, t as ArrayState, ab as AsFieldProps, B as BaseData, K as BaseField, G as ComponentDataMap, z as ComponentDataOptionalId, J as Content, a2 as CustomField, a1 as CustomFieldRender, a8 as DefaultComponentProps, a5 as DefaultRootFieldProps, a7 as DefaultRootProps, a6 as DefaultRootRenderProps, m as Direction, n as DragAxis, a0 as ExternalField, $ as ExternalFieldWithAdaptor, ad as ExtractPropsFromConfig, ae as ExtractRootPropsFromConfig, r as FieldRenderFunctions, s as ItemWithId, E as MappedItem, N as NumberField, Z as ObjectField, q as OverrideKey, u as PuckComponent, a4 as PuckContext, X as RadioField, v as RootConfig, y as RootData, x as RootDataWithoutProps, Q as SelectField, S as Slot, a3 as SlotField, T as TextField, L as TextareaField, o as Viewport, ac as WithChildren, a9 as WithId, aa as WithPuckProps, W as WithSlotProps, af as migrate, p as overrideKeys, ah as resolveAllData, ag as transformProps, w as walkTree } from './walk-tree-DBd3aQ_5.mjs';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import * as react from 'react';
5
- import { ReactNode, SyntheticEvent, ReactElement } from 'react';
5
+ import react__default, { ReactNode, SyntheticEvent, ReactElement } from 'react';
6
+
7
+ type HistorySlice<D = any> = {
8
+ index: number;
9
+ hasPast: () => boolean;
10
+ hasFuture: () => boolean;
11
+ histories: History<D>[];
12
+ record: (data: D) => void;
13
+ back: VoidFunction;
14
+ forward: VoidFunction;
15
+ currentHistory: () => History;
16
+ nextHistory: () => History<D> | null;
17
+ prevHistory: () => History<D> | null;
18
+ setHistories: (histories: History[]) => void;
19
+ setHistoryIndex: (index: number) => void;
20
+ initialAppState: D;
21
+ };
22
+
23
+ type NodeMethods = {
24
+ sync: () => void;
25
+ hideOverlay: () => void;
26
+ showOverlay: () => void;
27
+ };
28
+ type PuckNodeInstance = {
29
+ id: string;
30
+ methods: NodeMethods;
31
+ element: HTMLElement | null;
32
+ };
33
+ type NodesSlice = {
34
+ nodes: Record<string, PuckNodeInstance | undefined>;
35
+ registerNode: (id: string, node: Partial<PuckNodeInstance>) => void;
36
+ unregisterNode: (id: string, node?: Partial<PuckNodeInstance>) => void;
37
+ };
38
+
39
+ type PermissionsArgs<UserConfig extends Config = Config, G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>> = {
40
+ item?: G["UserComponentData"] | null;
41
+ type?: keyof G["UserProps"];
42
+ root?: boolean;
43
+ };
44
+ type GetPermissions<UserConfig extends Config = Config> = (params?: PermissionsArgs<UserConfig>) => Permissions;
45
+ type ResolvePermissions<UserConfig extends Config = Config> = (params?: PermissionsArgs<UserConfig>, force?: boolean) => void;
46
+ type RefreshPermissions<UserConfig extends Config = Config> = (params?: PermissionsArgs<UserConfig>, force?: boolean) => void;
47
+ type Cache = Record<string, {
48
+ lastPermissions: Partial<Permissions>;
49
+ lastData: ComponentData | null;
50
+ }>;
51
+ type PermissionsSlice = {
52
+ cache: Cache;
53
+ globalPermissions: Permissions;
54
+ resolvedPermissions: Record<string, Partial<Permissions> | undefined>;
55
+ getPermissions: GetPermissions<Config>;
56
+ resolvePermissions: ResolvePermissions<Config>;
57
+ refreshPermissions: RefreshPermissions<Config>;
58
+ };
59
+
60
+ type ComponentOrRootData = Omit<ComponentData<any>, "type">;
61
+ type FieldsSlice = {
62
+ fields: Fields | Partial<Fields>;
63
+ loading: boolean;
64
+ lastResolvedData: Partial<ComponentOrRootData>;
65
+ id: string | undefined;
66
+ };
67
+
68
+ type Status = "LOADING" | "MOUNTED" | "READY";
69
+ type ZoomConfig = {
70
+ autoZoom: number;
71
+ rootHeight: number;
72
+ zoom: number;
73
+ };
74
+ type ComponentState = Record<string, {
75
+ loadingCount: number;
76
+ }>;
77
+ type AppStore<UserConfig extends Config = Config, G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>> = {
78
+ state: G["UserAppState"];
79
+ dispatch: (action: PuckAction) => void;
80
+ config: UserConfig;
81
+ componentState: ComponentState;
82
+ setComponentState: (componentState: ComponentState) => void;
83
+ setComponentLoading: (id: string, loading?: boolean, defer?: number) => () => void;
84
+ unsetComponentLoading: (id: string) => void;
85
+ pendingLoadTimeouts: Record<string, NodeJS.Timeout>;
86
+ resolveComponentData: <T extends ComponentData | RootDataWithProps>(componentData: T, trigger: ResolveDataTrigger) => Promise<{
87
+ node: T;
88
+ didChange: boolean;
89
+ }>;
90
+ resolveAndCommitData: () => void;
91
+ plugins: Plugin[];
92
+ overrides: Partial<Overrides>;
93
+ viewports: Viewports;
94
+ zoomConfig: ZoomConfig;
95
+ setZoomConfig: (zoomConfig: ZoomConfig) => void;
96
+ status: Status;
97
+ setStatus: (status: Status) => void;
98
+ iframe: IframeConfig;
99
+ selectedItem?: G["UserData"]["content"][0] | null;
100
+ setUi: (ui: Partial<UiState>, recordHistory?: boolean) => void;
101
+ getComponentConfig: (type?: string) => ComponentConfig | null | undefined;
102
+ onAction?: (action: PuckAction, newState: AppState, state: AppState) => void;
103
+ metadata: Metadata;
104
+ fields: FieldsSlice;
105
+ history: HistorySlice;
106
+ nodes: NodesSlice;
107
+ permissions: PermissionsSlice;
108
+ };
6
109
 
7
110
  declare const ActionBar: {
8
111
  ({ label, children, }: {
@@ -42,7 +145,7 @@ declare const FieldLabel: ({ children, icon, label, el, readOnly, className, }:
42
145
  className?: string;
43
146
  }) => react_jsx_runtime.JSX.Element;
44
147
  type FieldNoLabel<Props extends any = any> = Omit<Field<Props>, "label">;
45
- declare function AutoField<ValueType = any, FieldType extends FieldNoLabel<ValueType> = FieldNoLabel<ValueType>>(props: FieldProps<FieldType, ValueType>): react_jsx_runtime.JSX.Element;
148
+ declare function AutoField<ValueType = any, FieldType extends FieldNoLabel<ValueType> = FieldNoLabel<ValueType>>(props: FieldProps<FieldType, ValueType>): react_jsx_runtime.JSX.Element | null;
46
149
 
47
150
  declare const Button: ({ children, href, onClick, variant, type, disabled, tabIndex, newTab, fullWidth, icon, size, loading: loadingProp, ...props }: {
48
151
  children: ReactNode;
@@ -93,7 +196,7 @@ declare const IconButton: ({ children, href, onClick, variant, type, disabled, t
93
196
  title: string;
94
197
  }) => react_jsx_runtime.JSX.Element;
95
198
 
96
- 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, }: {
199
+ type PuckProps<UserConfig extends Config = Config, G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>> = {
97
200
  children?: ReactNode;
98
201
  config: UserConfig;
99
202
  data: Partial<G["UserData"] | Data>;
@@ -121,77 +224,73 @@ declare function Puck<UserConfig extends Config = Config, G extends UserGenerics
121
224
  disableAutoScroll?: boolean;
122
225
  };
123
226
  initialHistory?: InitialHistory;
124
- }): react_jsx_runtime.JSX.Element;
227
+ metadata?: Metadata;
228
+ };
229
+ declare function Puck<UserConfig extends Config = Config, G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>>(props: PuckProps<UserConfig>): react_jsx_runtime.JSX.Element;
125
230
  declare namespace Puck {
126
231
  var Components: () => react_jsx_runtime.JSX.Element;
127
- var Fields: ({ wrapFields }: {
232
+ var Fields: react.MemoExoticComponent<({ wrapFields }: {
128
233
  wrapFields?: boolean;
129
- }) => react_jsx_runtime.JSX.Element;
234
+ }) => react_jsx_runtime.JSX.Element>;
130
235
  var Outline: () => react_jsx_runtime.JSX.Element;
131
236
  var Preview: ({ id }: {
132
237
  id?: string;
133
238
  }) => react_jsx_runtime.JSX.Element;
134
239
  }
135
240
 
136
- declare function Render<UserConfig extends Config = Config, G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>>({ config, data, }: {
241
+ declare const renderContext: react__default.Context<{
242
+ config: Config;
243
+ data: Data;
244
+ metadata: Metadata;
245
+ }>;
246
+ declare function Render<UserConfig extends Config = Config, G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>>({ config, data, metadata, }: {
137
247
  config: UserConfig;
138
248
  data: Partial<G["UserData"] | Data>;
249
+ metadata?: Metadata;
139
250
  }): react_jsx_runtime.JSX.Element;
140
251
 
141
- declare function migrate(data: Data): Data;
142
-
143
- type PropTransform<Props extends DefaultComponentProps = DefaultComponentProps, RootProps extends DefaultComponentProps = DefaultRootFieldProps> = Partial<{
144
- [ComponentName in keyof Props]: (props: Props[ComponentName] & {
145
- [key: string]: any;
146
- }) => Props[ComponentName];
147
- } & {
148
- root: (props: RootProps & {
149
- [key: string]: any;
150
- }) => RootProps;
151
- }>;
152
- declare function transformProps<Props extends DefaultComponentProps = DefaultComponentProps, RootProps extends DefaultComponentProps = DefaultRootFieldProps>(data: Partial<Data>, propTransforms: PropTransform<Props, RootProps>): Data;
153
-
154
- type HistoryStore<D = any> = {
155
- index: number;
156
- hasPast: boolean;
157
- hasFuture: boolean;
158
- histories: History<D>[];
159
- record: (data: D) => void;
160
- back: VoidFunction;
161
- forward: VoidFunction;
162
- currentHistory: History;
163
- nextHistory: History<D> | null;
164
- prevHistory: History<D> | null;
165
- setHistories: (histories: History[]) => void;
166
- setHistoryIndex: (index: number) => void;
167
- };
168
-
169
- type PermissionsArgs<UserConfig extends Config = Config, G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>> = {
170
- item?: G["UserComponentData"];
171
- type?: keyof G["UserProps"];
172
- root?: boolean;
252
+ type WithGet<T> = T & {
253
+ get: () => T;
173
254
  };
174
- type GetPermissions<UserConfig extends Config = Config> = (params?: PermissionsArgs<UserConfig>) => Partial<Permissions>;
175
- type RefreshPermissions<UserConfig extends Config = Config> = (params?: PermissionsArgs<UserConfig>, force?: boolean) => void;
176
-
177
- declare const usePuck: <UserConfig extends Config = Config>() => {
178
- appState: AppState<Data<ExtractPropsFromConfig<UserConfig>, ExtractRootPropsFromConfig<UserConfig>>>;
255
+ type UsePuckData<UserConfig extends Config = Config, G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>> = {
256
+ appState: AppState;
179
257
  config: UserConfig;
180
- dispatch: (action: PuckAction) => void;
258
+ dispatch: AppStore["dispatch"];
181
259
  getPermissions: GetPermissions<UserConfig>;
182
260
  refreshPermissions: RefreshPermissions<UserConfig>;
261
+ selectedItem: G["UserComponentData"] | null;
262
+ getItemBySelector: (selector: ItemSelector) => ComponentData | undefined;
263
+ getItemById: (id: string) => ComponentData | undefined;
264
+ getSelectorForId: (id: string) => Required<ItemSelector> | undefined;
183
265
  history: {
184
- back: VoidFunction;
185
- forward: VoidFunction;
186
- setHistories: (histories: History[]) => void;
187
- setHistoryIndex: (index: number) => void;
266
+ back: HistorySlice["back"];
267
+ forward: HistorySlice["forward"];
268
+ setHistories: HistorySlice["setHistories"];
269
+ setHistoryIndex: HistorySlice["setHistoryIndex"];
270
+ histories: HistorySlice["histories"];
271
+ index: HistorySlice["index"];
188
272
  hasPast: boolean;
189
273
  hasFuture: boolean;
190
- histories: History<any>[];
191
- index: number;
192
- historyStore: HistoryStore | undefined;
193
274
  };
194
- selectedItem: ComponentDataMap<ExtractPropsFromConfig<UserConfig>> | null;
195
275
  };
276
+ type PuckApi<UserConfig extends Config = Config> = UsePuckData<UserConfig>;
277
+ type UsePuckStore<UserConfig extends Config = Config> = WithGet<PuckApi<UserConfig>>;
278
+ /**
279
+ * createUsePuck
280
+ *
281
+ * Create a typed usePuck hook, which is necessary because the user may provide a generic type but not
282
+ * a selector type, and TS does not currently support partial inference.
283
+ * Related: https://github.com/microsoft/TypeScript/issues/26242
284
+ *
285
+ * @returns a typed usePuck function
286
+ */
287
+ declare function createUsePuck<UserConfig extends Config = Config>(): <T = PuckApi<UserConfig>>(selector: (state: UsePuckStore<UserConfig>) => T) => T;
288
+ declare function usePuck<UserConfig extends Config = Config>(): UsePuckStore<UserConfig>;
289
+ /**
290
+ * Get the latest state without relying on a render
291
+ *
292
+ * @returns PuckApi
293
+ */
294
+ declare function useGetPuck(): () => UsePuckStore<Config>;
196
295
 
197
- export { Action, ActionBar, AppState, AutoField, Button, ComponentDataMap, Config, Data, DefaultComponentProps, DefaultRootFieldProps, Drawer, DropZone, ExtractPropsFromConfig, ExtractRootPropsFromConfig, Field, FieldLabel, FieldProps, Group, History, IconButton, IframeConfig, InitialHistory, Label, OnAction, Overrides, Permissions, Plugin, Puck, PuckAction, Render, UiState, UserGenerics, Viewports, migrate, transformProps, usePuck };
296
+ export { Action, ActionBar, AppState, AutoField, Button, ComponentConfig, ComponentData, Config, Data, Drawer, DropZone, Field, FieldLabel, FieldProps, Fields, Group, History, IconButton, IframeConfig, InitialHistory, Label, Metadata, OnAction, Overrides, Permissions, Plugin, Puck, PuckAction, type PuckApi, Render, ResolveDataTrigger, RootDataWithProps, UiState, type UsePuckData, UserGenerics, Viewports, createUsePuck, renderContext, useGetPuck, usePuck };
package/dist/index.d.ts CHANGED
@@ -1,8 +1,111 @@
1
- import { F as FieldProps, a as Field, D as DropZoneProps, C as Config, U as UserGenerics, b as Data, c as UiState, O as OnAction, P as Permissions, d as Plugin, e as Overrides, f as PuckAction, V as Viewports, I as IframeConfig, g as InitialHistory, h as DefaultComponentProps, i as DefaultRootFieldProps, H as History, A as AppState, E as ExtractPropsFromConfig, j as ExtractRootPropsFromConfig, k as ComponentDataMap } from './resolve-all-data-ppm982Jh.js';
2
- export { Q as Adaptor, K as ArrayField, s as ArrayState, a3 as AsFieldProps, B as BaseData, z as BaseField, u as ComponentConfig, x as ComponentData, y as Content, Y as CustomField, a0 as DefaultRootProps, $ as DefaultRootRenderProps, l as Direction, m as DragAxis, X as ExternalField, W as ExternalFieldWithAdaptor, q as FieldRenderFunctions, Z as Fields, r as ItemWithId, M as MappedItem, N as NumberField, L as ObjectField, p as OverrideKey, t as PuckComponent, _ as PuckContext, J as RadioField, w as RootData, R as RootDataWithProps, v as RootDataWithoutProps, S as SelectField, T as TextField, G as TextareaField, n as Viewport, a4 as WithChildren, a1 as WithId, a2 as WithPuckProps, o as overrideKeys, a5 as resolveAllData } from './resolve-all-data-ppm982Jh.js';
1
+ import { H as History, P as Permissions, C as ComponentData, a as Config, U as UserGenerics, F as Fields, b as PuckAction, R as RootDataWithProps, c as ResolveDataTrigger, d as Plugin, O as Overrides, V as Viewports, I as IframeConfig, e as UiState, f as ComponentConfig, A as AppState, M as Metadata, g as Field, h as FieldProps, D as DropZoneProps, i as Data, j as OnAction, k as InitialHistory, l as ItemSelector } from './walk-tree-DBd3aQ_5.js';
2
+ export { _ as Adaptor, Y as ArrayField, t as ArrayState, ab as AsFieldProps, B as BaseData, K as BaseField, G as ComponentDataMap, z as ComponentDataOptionalId, J as Content, a2 as CustomField, a1 as CustomFieldRender, a8 as DefaultComponentProps, a5 as DefaultRootFieldProps, a7 as DefaultRootProps, a6 as DefaultRootRenderProps, m as Direction, n as DragAxis, a0 as ExternalField, $ as ExternalFieldWithAdaptor, ad as ExtractPropsFromConfig, ae as ExtractRootPropsFromConfig, r as FieldRenderFunctions, s as ItemWithId, E as MappedItem, N as NumberField, Z as ObjectField, q as OverrideKey, u as PuckComponent, a4 as PuckContext, X as RadioField, v as RootConfig, y as RootData, x as RootDataWithoutProps, Q as SelectField, S as Slot, a3 as SlotField, T as TextField, L as TextareaField, o as Viewport, ac as WithChildren, a9 as WithId, aa as WithPuckProps, W as WithSlotProps, af as migrate, p as overrideKeys, ah as resolveAllData, ag as transformProps, w as walkTree } from './walk-tree-DBd3aQ_5.js';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import * as react from 'react';
5
- import { ReactNode, SyntheticEvent, ReactElement } from 'react';
5
+ import react__default, { ReactNode, SyntheticEvent, ReactElement } from 'react';
6
+
7
+ type HistorySlice<D = any> = {
8
+ index: number;
9
+ hasPast: () => boolean;
10
+ hasFuture: () => boolean;
11
+ histories: History<D>[];
12
+ record: (data: D) => void;
13
+ back: VoidFunction;
14
+ forward: VoidFunction;
15
+ currentHistory: () => History;
16
+ nextHistory: () => History<D> | null;
17
+ prevHistory: () => History<D> | null;
18
+ setHistories: (histories: History[]) => void;
19
+ setHistoryIndex: (index: number) => void;
20
+ initialAppState: D;
21
+ };
22
+
23
+ type NodeMethods = {
24
+ sync: () => void;
25
+ hideOverlay: () => void;
26
+ showOverlay: () => void;
27
+ };
28
+ type PuckNodeInstance = {
29
+ id: string;
30
+ methods: NodeMethods;
31
+ element: HTMLElement | null;
32
+ };
33
+ type NodesSlice = {
34
+ nodes: Record<string, PuckNodeInstance | undefined>;
35
+ registerNode: (id: string, node: Partial<PuckNodeInstance>) => void;
36
+ unregisterNode: (id: string, node?: Partial<PuckNodeInstance>) => void;
37
+ };
38
+
39
+ type PermissionsArgs<UserConfig extends Config = Config, G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>> = {
40
+ item?: G["UserComponentData"] | null;
41
+ type?: keyof G["UserProps"];
42
+ root?: boolean;
43
+ };
44
+ type GetPermissions<UserConfig extends Config = Config> = (params?: PermissionsArgs<UserConfig>) => Permissions;
45
+ type ResolvePermissions<UserConfig extends Config = Config> = (params?: PermissionsArgs<UserConfig>, force?: boolean) => void;
46
+ type RefreshPermissions<UserConfig extends Config = Config> = (params?: PermissionsArgs<UserConfig>, force?: boolean) => void;
47
+ type Cache = Record<string, {
48
+ lastPermissions: Partial<Permissions>;
49
+ lastData: ComponentData | null;
50
+ }>;
51
+ type PermissionsSlice = {
52
+ cache: Cache;
53
+ globalPermissions: Permissions;
54
+ resolvedPermissions: Record<string, Partial<Permissions> | undefined>;
55
+ getPermissions: GetPermissions<Config>;
56
+ resolvePermissions: ResolvePermissions<Config>;
57
+ refreshPermissions: RefreshPermissions<Config>;
58
+ };
59
+
60
+ type ComponentOrRootData = Omit<ComponentData<any>, "type">;
61
+ type FieldsSlice = {
62
+ fields: Fields | Partial<Fields>;
63
+ loading: boolean;
64
+ lastResolvedData: Partial<ComponentOrRootData>;
65
+ id: string | undefined;
66
+ };
67
+
68
+ type Status = "LOADING" | "MOUNTED" | "READY";
69
+ type ZoomConfig = {
70
+ autoZoom: number;
71
+ rootHeight: number;
72
+ zoom: number;
73
+ };
74
+ type ComponentState = Record<string, {
75
+ loadingCount: number;
76
+ }>;
77
+ type AppStore<UserConfig extends Config = Config, G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>> = {
78
+ state: G["UserAppState"];
79
+ dispatch: (action: PuckAction) => void;
80
+ config: UserConfig;
81
+ componentState: ComponentState;
82
+ setComponentState: (componentState: ComponentState) => void;
83
+ setComponentLoading: (id: string, loading?: boolean, defer?: number) => () => void;
84
+ unsetComponentLoading: (id: string) => void;
85
+ pendingLoadTimeouts: Record<string, NodeJS.Timeout>;
86
+ resolveComponentData: <T extends ComponentData | RootDataWithProps>(componentData: T, trigger: ResolveDataTrigger) => Promise<{
87
+ node: T;
88
+ didChange: boolean;
89
+ }>;
90
+ resolveAndCommitData: () => void;
91
+ plugins: Plugin[];
92
+ overrides: Partial<Overrides>;
93
+ viewports: Viewports;
94
+ zoomConfig: ZoomConfig;
95
+ setZoomConfig: (zoomConfig: ZoomConfig) => void;
96
+ status: Status;
97
+ setStatus: (status: Status) => void;
98
+ iframe: IframeConfig;
99
+ selectedItem?: G["UserData"]["content"][0] | null;
100
+ setUi: (ui: Partial<UiState>, recordHistory?: boolean) => void;
101
+ getComponentConfig: (type?: string) => ComponentConfig | null | undefined;
102
+ onAction?: (action: PuckAction, newState: AppState, state: AppState) => void;
103
+ metadata: Metadata;
104
+ fields: FieldsSlice;
105
+ history: HistorySlice;
106
+ nodes: NodesSlice;
107
+ permissions: PermissionsSlice;
108
+ };
6
109
 
7
110
  declare const ActionBar: {
8
111
  ({ label, children, }: {
@@ -42,7 +145,7 @@ declare const FieldLabel: ({ children, icon, label, el, readOnly, className, }:
42
145
  className?: string;
43
146
  }) => react_jsx_runtime.JSX.Element;
44
147
  type FieldNoLabel<Props extends any = any> = Omit<Field<Props>, "label">;
45
- declare function AutoField<ValueType = any, FieldType extends FieldNoLabel<ValueType> = FieldNoLabel<ValueType>>(props: FieldProps<FieldType, ValueType>): react_jsx_runtime.JSX.Element;
148
+ declare function AutoField<ValueType = any, FieldType extends FieldNoLabel<ValueType> = FieldNoLabel<ValueType>>(props: FieldProps<FieldType, ValueType>): react_jsx_runtime.JSX.Element | null;
46
149
 
47
150
  declare const Button: ({ children, href, onClick, variant, type, disabled, tabIndex, newTab, fullWidth, icon, size, loading: loadingProp, ...props }: {
48
151
  children: ReactNode;
@@ -93,7 +196,7 @@ declare const IconButton: ({ children, href, onClick, variant, type, disabled, t
93
196
  title: string;
94
197
  }) => react_jsx_runtime.JSX.Element;
95
198
 
96
- 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, }: {
199
+ type PuckProps<UserConfig extends Config = Config, G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>> = {
97
200
  children?: ReactNode;
98
201
  config: UserConfig;
99
202
  data: Partial<G["UserData"] | Data>;
@@ -121,77 +224,73 @@ declare function Puck<UserConfig extends Config = Config, G extends UserGenerics
121
224
  disableAutoScroll?: boolean;
122
225
  };
123
226
  initialHistory?: InitialHistory;
124
- }): react_jsx_runtime.JSX.Element;
227
+ metadata?: Metadata;
228
+ };
229
+ declare function Puck<UserConfig extends Config = Config, G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>>(props: PuckProps<UserConfig>): react_jsx_runtime.JSX.Element;
125
230
  declare namespace Puck {
126
231
  var Components: () => react_jsx_runtime.JSX.Element;
127
- var Fields: ({ wrapFields }: {
232
+ var Fields: react.MemoExoticComponent<({ wrapFields }: {
128
233
  wrapFields?: boolean;
129
- }) => react_jsx_runtime.JSX.Element;
234
+ }) => react_jsx_runtime.JSX.Element>;
130
235
  var Outline: () => react_jsx_runtime.JSX.Element;
131
236
  var Preview: ({ id }: {
132
237
  id?: string;
133
238
  }) => react_jsx_runtime.JSX.Element;
134
239
  }
135
240
 
136
- declare function Render<UserConfig extends Config = Config, G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>>({ config, data, }: {
241
+ declare const renderContext: react__default.Context<{
242
+ config: Config;
243
+ data: Data;
244
+ metadata: Metadata;
245
+ }>;
246
+ declare function Render<UserConfig extends Config = Config, G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>>({ config, data, metadata, }: {
137
247
  config: UserConfig;
138
248
  data: Partial<G["UserData"] | Data>;
249
+ metadata?: Metadata;
139
250
  }): react_jsx_runtime.JSX.Element;
140
251
 
141
- declare function migrate(data: Data): Data;
142
-
143
- type PropTransform<Props extends DefaultComponentProps = DefaultComponentProps, RootProps extends DefaultComponentProps = DefaultRootFieldProps> = Partial<{
144
- [ComponentName in keyof Props]: (props: Props[ComponentName] & {
145
- [key: string]: any;
146
- }) => Props[ComponentName];
147
- } & {
148
- root: (props: RootProps & {
149
- [key: string]: any;
150
- }) => RootProps;
151
- }>;
152
- declare function transformProps<Props extends DefaultComponentProps = DefaultComponentProps, RootProps extends DefaultComponentProps = DefaultRootFieldProps>(data: Partial<Data>, propTransforms: PropTransform<Props, RootProps>): Data;
153
-
154
- type HistoryStore<D = any> = {
155
- index: number;
156
- hasPast: boolean;
157
- hasFuture: boolean;
158
- histories: History<D>[];
159
- record: (data: D) => void;
160
- back: VoidFunction;
161
- forward: VoidFunction;
162
- currentHistory: History;
163
- nextHistory: History<D> | null;
164
- prevHistory: History<D> | null;
165
- setHistories: (histories: History[]) => void;
166
- setHistoryIndex: (index: number) => void;
167
- };
168
-
169
- type PermissionsArgs<UserConfig extends Config = Config, G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>> = {
170
- item?: G["UserComponentData"];
171
- type?: keyof G["UserProps"];
172
- root?: boolean;
252
+ type WithGet<T> = T & {
253
+ get: () => T;
173
254
  };
174
- type GetPermissions<UserConfig extends Config = Config> = (params?: PermissionsArgs<UserConfig>) => Partial<Permissions>;
175
- type RefreshPermissions<UserConfig extends Config = Config> = (params?: PermissionsArgs<UserConfig>, force?: boolean) => void;
176
-
177
- declare const usePuck: <UserConfig extends Config = Config>() => {
178
- appState: AppState<Data<ExtractPropsFromConfig<UserConfig>, ExtractRootPropsFromConfig<UserConfig>>>;
255
+ type UsePuckData<UserConfig extends Config = Config, G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>> = {
256
+ appState: AppState;
179
257
  config: UserConfig;
180
- dispatch: (action: PuckAction) => void;
258
+ dispatch: AppStore["dispatch"];
181
259
  getPermissions: GetPermissions<UserConfig>;
182
260
  refreshPermissions: RefreshPermissions<UserConfig>;
261
+ selectedItem: G["UserComponentData"] | null;
262
+ getItemBySelector: (selector: ItemSelector) => ComponentData | undefined;
263
+ getItemById: (id: string) => ComponentData | undefined;
264
+ getSelectorForId: (id: string) => Required<ItemSelector> | undefined;
183
265
  history: {
184
- back: VoidFunction;
185
- forward: VoidFunction;
186
- setHistories: (histories: History[]) => void;
187
- setHistoryIndex: (index: number) => void;
266
+ back: HistorySlice["back"];
267
+ forward: HistorySlice["forward"];
268
+ setHistories: HistorySlice["setHistories"];
269
+ setHistoryIndex: HistorySlice["setHistoryIndex"];
270
+ histories: HistorySlice["histories"];
271
+ index: HistorySlice["index"];
188
272
  hasPast: boolean;
189
273
  hasFuture: boolean;
190
- histories: History<any>[];
191
- index: number;
192
- historyStore: HistoryStore | undefined;
193
274
  };
194
- selectedItem: ComponentDataMap<ExtractPropsFromConfig<UserConfig>> | null;
195
275
  };
276
+ type PuckApi<UserConfig extends Config = Config> = UsePuckData<UserConfig>;
277
+ type UsePuckStore<UserConfig extends Config = Config> = WithGet<PuckApi<UserConfig>>;
278
+ /**
279
+ * createUsePuck
280
+ *
281
+ * Create a typed usePuck hook, which is necessary because the user may provide a generic type but not
282
+ * a selector type, and TS does not currently support partial inference.
283
+ * Related: https://github.com/microsoft/TypeScript/issues/26242
284
+ *
285
+ * @returns a typed usePuck function
286
+ */
287
+ declare function createUsePuck<UserConfig extends Config = Config>(): <T = PuckApi<UserConfig>>(selector: (state: UsePuckStore<UserConfig>) => T) => T;
288
+ declare function usePuck<UserConfig extends Config = Config>(): UsePuckStore<UserConfig>;
289
+ /**
290
+ * Get the latest state without relying on a render
291
+ *
292
+ * @returns PuckApi
293
+ */
294
+ declare function useGetPuck(): () => UsePuckStore<Config>;
196
295
 
197
- export { Action, ActionBar, AppState, AutoField, Button, ComponentDataMap, Config, Data, DefaultComponentProps, DefaultRootFieldProps, Drawer, DropZone, ExtractPropsFromConfig, ExtractRootPropsFromConfig, Field, FieldLabel, FieldProps, Group, History, IconButton, IframeConfig, InitialHistory, Label, OnAction, Overrides, Permissions, Plugin, Puck, PuckAction, Render, UiState, UserGenerics, Viewports, migrate, transformProps, usePuck };
296
+ export { Action, ActionBar, AppState, AutoField, Button, ComponentConfig, ComponentData, Config, Data, Drawer, DropZone, Field, FieldLabel, FieldProps, Fields, Group, History, IconButton, IframeConfig, InitialHistory, Label, Metadata, OnAction, Overrides, Permissions, Plugin, Puck, PuckAction, type PuckApi, Render, ResolveDataTrigger, RootDataWithProps, UiState, type UsePuckData, UserGenerics, Viewports, createUsePuck, renderContext, useGetPuck, usePuck };