@measured/puck 0.19.0-canary.f96dc87b → 0.19.0

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,9 +1,112 @@
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, M as Metadata, H as History, h as ComponentData, i as Fields, A as AppState, j as ComponentConfig } from './resolve-all-data-3XjIPfNh.mjs';
2
- export { K as Adaptor, G as ArrayField, r as ArrayState, a2 as AsFieldProps, B as BaseData, y as BaseField, w as ComponentDataMap, x as Content, W as CustomField, $ as DefaultComponentProps, Y as DefaultRootFieldProps, _ as DefaultRootProps, Z as DefaultRootRenderProps, k as Direction, l as DragAxis, Q as ExternalField, L as ExternalFieldWithAdaptor, a4 as ExtractPropsFromConfig, a5 as ExtractRootPropsFromConfig, p as FieldRenderFunctions, q as ItemWithId, v as MappedItem, N as NumberField, J as ObjectField, n as OverrideKey, s as PuckComponent, X as PuckContext, E as RadioField, u as RootData, R as RootDataWithProps, t as RootDataWithoutProps, S as SelectField, T as TextField, z as TextareaField, m as Viewport, a3 as WithChildren, a0 as WithId, a1 as WithPuckProps, o as overrideKeys, a7 as resolveAllData, a6 as transformProps } from './resolve-all-data-3XjIPfNh.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
5
  import react__default, { ReactNode, SyntheticEvent, ReactElement } from 'react';
6
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
+ };
109
+
7
110
  declare const ActionBar: {
8
111
  ({ label, children, }: {
9
112
  label?: string;
@@ -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;
@@ -126,9 +229,9 @@ type PuckProps<UserConfig extends Config = Config, G extends UserGenerics<UserCo
126
229
  declare function Puck<UserConfig extends Config = Config, G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>>(props: PuckProps<UserConfig>): react_jsx_runtime.JSX.Element;
127
230
  declare namespace Puck {
128
231
  var Components: () => react_jsx_runtime.JSX.Element;
129
- var Fields: ({ wrapFields }: {
232
+ var Fields: react.MemoExoticComponent<({ wrapFields }: {
130
233
  wrapFields?: boolean;
131
- }) => react_jsx_runtime.JSX.Element;
234
+ }) => react_jsx_runtime.JSX.Element>;
132
235
  var Outline: () => react_jsx_runtime.JSX.Element;
133
236
  var Preview: ({ id }: {
134
237
  id?: string;
@@ -146,119 +249,19 @@ declare function Render<UserConfig extends Config = Config, G extends UserGeneri
146
249
  metadata?: Metadata;
147
250
  }): react_jsx_runtime.JSX.Element;
148
251
 
149
- declare function migrate(data: Data): Data;
150
-
151
- type HistorySlice<D = any> = {
152
- index: number;
153
- hasPast: () => boolean;
154
- hasFuture: () => boolean;
155
- histories: History<D>[];
156
- record: (data: D) => void;
157
- back: VoidFunction;
158
- forward: VoidFunction;
159
- currentHistory: () => History;
160
- nextHistory: () => History<D> | null;
161
- prevHistory: () => History<D> | null;
162
- setHistories: (histories: History[]) => void;
163
- setHistoryIndex: (index: number) => void;
164
- initialAppState: D;
165
- };
166
-
167
- type NodeMethods = {
168
- sync: () => void;
169
- };
170
- type PuckNode = {
171
- id: string;
172
- methods: NodeMethods;
173
- data: ComponentData;
174
- parentId: string | null;
175
- zone: string;
176
- path: string[];
177
- index: number;
178
- element: HTMLElement | null;
179
- };
180
- type NodesSlice = {
181
- nodes: Record<string, PuckNode | undefined>;
182
- registerNode: (id: string, node: Partial<PuckNode>) => void;
183
- unregisterNode: (id: string, node?: Partial<PuckNode>) => void;
184
- };
185
-
186
- type PermissionsArgs<UserConfig extends Config = Config, G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>> = {
187
- item?: G["UserComponentData"] | null;
188
- type?: keyof G["UserProps"];
189
- root?: boolean;
190
- };
191
- type GetPermissions<UserConfig extends Config = Config> = (params?: PermissionsArgs<UserConfig>) => Permissions;
192
- type ResolvePermissions<UserConfig extends Config = Config> = (params?: PermissionsArgs<UserConfig>, force?: boolean) => void;
193
- type RefreshPermissions<UserConfig extends Config = Config> = (params?: PermissionsArgs<UserConfig>, force?: boolean) => void;
194
- type Cache = Record<string, {
195
- lastPermissions: Partial<Permissions>;
196
- lastData: ComponentData | null;
197
- }>;
198
- type PermissionsSlice = {
199
- cache: Cache;
200
- globalPermissions: Permissions;
201
- resolvedPermissions: Record<string, Partial<Permissions> | undefined>;
202
- getPermissions: GetPermissions<Config>;
203
- resolvePermissions: ResolvePermissions<Config>;
204
- refreshPermissions: RefreshPermissions<Config>;
205
- };
206
-
207
- type ComponentOrRootData = Omit<ComponentData<any>, "type">;
208
- type FieldsSlice = {
209
- fields: Fields | Partial<Fields>;
210
- loading: boolean;
211
- lastResolvedData: Partial<ComponentOrRootData>;
212
- };
213
-
214
- type Status = "LOADING" | "MOUNTED" | "READY";
215
- type ZoomConfig = {
216
- autoZoom: number;
217
- rootHeight: number;
218
- zoom: number;
219
- };
220
- type ComponentState = Record<string, {
221
- loadingCount: number;
222
- }>;
223
- type AppStore<UserConfig extends Config = Config, G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>> = {
224
- state: G["UserAppState"];
225
- dispatch: (action: PuckAction) => void;
226
- config: UserConfig;
227
- componentState: ComponentState;
228
- setComponentState: (componentState: ComponentState) => void;
229
- setComponentLoading: (id: string) => void;
230
- unsetComponentLoading: (id: string) => void;
231
- resolveDataRuns: number;
232
- resolveData: (newAppState: AppState) => void;
233
- plugins: Plugin[];
234
- overrides: Partial<Overrides>;
235
- viewports: Viewports;
236
- zoomConfig: ZoomConfig;
237
- setZoomConfig: (zoomConfig: ZoomConfig) => void;
238
- status: Status;
239
- setStatus: (status: Status) => void;
240
- iframe: IframeConfig;
241
- selectedItem?: G["UserData"]["content"][0] | null;
242
- setUi: (ui: Partial<UiState>, recordHistory?: boolean) => void;
243
- getComponentConfig: (type?: string) => ComponentConfig | null | undefined;
244
- onAction?: (action: PuckAction, newState: AppState, state: AppState) => void;
245
- metadata: Metadata;
246
- fields: FieldsSlice;
247
- history: HistorySlice;
248
- nodes: NodesSlice;
249
- permissions: PermissionsSlice;
250
- };
251
-
252
252
  type WithGet<T> = T & {
253
253
  get: () => T;
254
254
  };
255
255
  type UsePuckData<UserConfig extends Config = Config, G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>> = {
256
256
  appState: AppState;
257
- config: Config;
257
+ config: UserConfig;
258
258
  dispatch: AppStore["dispatch"];
259
259
  getPermissions: GetPermissions<UserConfig>;
260
260
  refreshPermissions: RefreshPermissions<UserConfig>;
261
261
  selectedItem: G["UserComponentData"] | null;
262
+ getItemBySelector: (selector: ItemSelector) => ComponentData | undefined;
263
+ getItemById: (id: string) => ComponentData | undefined;
264
+ getSelectorForId: (id: string) => Required<ItemSelector> | undefined;
262
265
  history: {
263
266
  back: HistorySlice["back"];
264
267
  forward: HistorySlice["forward"];
@@ -270,7 +273,8 @@ type UsePuckData<UserConfig extends Config = Config, G extends UserGenerics<User
270
273
  hasFuture: boolean;
271
274
  };
272
275
  };
273
- type UsePuckStore<UserConfig extends Config = Config> = WithGet<UsePuckData<UserConfig>>;
276
+ type PuckApi<UserConfig extends Config = Config> = UsePuckData<UserConfig>;
277
+ type UsePuckStore<UserConfig extends Config = Config> = WithGet<PuckApi<UserConfig>>;
274
278
  /**
275
279
  * createUsePuck
276
280
  *
@@ -280,7 +284,13 @@ type UsePuckStore<UserConfig extends Config = Config> = WithGet<UsePuckData<User
280
284
  *
281
285
  * @returns a typed usePuck function
282
286
  */
283
- declare function createUsePuck<UserConfig extends Config = Config>(): <T = UsePuckData<UserConfig, UserGenerics<UserConfig>>>(selector: (state: UsePuckStore<UserConfig>) => T) => T;
287
+ declare function createUsePuck<UserConfig extends Config = Config>(): <T = PuckApi<UserConfig>>(selector: (state: UsePuckStore<UserConfig>) => T) => T;
284
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>;
285
295
 
286
- 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, Render, UiState, type UsePuckData, UserGenerics, Viewports, createUsePuck, migrate, renderContext, 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,9 +1,112 @@
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, M as Metadata, H as History, h as ComponentData, i as Fields, A as AppState, j as ComponentConfig } from './resolve-all-data-3XjIPfNh.js';
2
- export { K as Adaptor, G as ArrayField, r as ArrayState, a2 as AsFieldProps, B as BaseData, y as BaseField, w as ComponentDataMap, x as Content, W as CustomField, $ as DefaultComponentProps, Y as DefaultRootFieldProps, _ as DefaultRootProps, Z as DefaultRootRenderProps, k as Direction, l as DragAxis, Q as ExternalField, L as ExternalFieldWithAdaptor, a4 as ExtractPropsFromConfig, a5 as ExtractRootPropsFromConfig, p as FieldRenderFunctions, q as ItemWithId, v as MappedItem, N as NumberField, J as ObjectField, n as OverrideKey, s as PuckComponent, X as PuckContext, E as RadioField, u as RootData, R as RootDataWithProps, t as RootDataWithoutProps, S as SelectField, T as TextField, z as TextareaField, m as Viewport, a3 as WithChildren, a0 as WithId, a1 as WithPuckProps, o as overrideKeys, a7 as resolveAllData, a6 as transformProps } from './resolve-all-data-3XjIPfNh.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
5
  import react__default, { ReactNode, SyntheticEvent, ReactElement } from 'react';
6
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
+ };
109
+
7
110
  declare const ActionBar: {
8
111
  ({ label, children, }: {
9
112
  label?: string;
@@ -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;
@@ -126,9 +229,9 @@ type PuckProps<UserConfig extends Config = Config, G extends UserGenerics<UserCo
126
229
  declare function Puck<UserConfig extends Config = Config, G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>>(props: PuckProps<UserConfig>): react_jsx_runtime.JSX.Element;
127
230
  declare namespace Puck {
128
231
  var Components: () => react_jsx_runtime.JSX.Element;
129
- var Fields: ({ wrapFields }: {
232
+ var Fields: react.MemoExoticComponent<({ wrapFields }: {
130
233
  wrapFields?: boolean;
131
- }) => react_jsx_runtime.JSX.Element;
234
+ }) => react_jsx_runtime.JSX.Element>;
132
235
  var Outline: () => react_jsx_runtime.JSX.Element;
133
236
  var Preview: ({ id }: {
134
237
  id?: string;
@@ -146,119 +249,19 @@ declare function Render<UserConfig extends Config = Config, G extends UserGeneri
146
249
  metadata?: Metadata;
147
250
  }): react_jsx_runtime.JSX.Element;
148
251
 
149
- declare function migrate(data: Data): Data;
150
-
151
- type HistorySlice<D = any> = {
152
- index: number;
153
- hasPast: () => boolean;
154
- hasFuture: () => boolean;
155
- histories: History<D>[];
156
- record: (data: D) => void;
157
- back: VoidFunction;
158
- forward: VoidFunction;
159
- currentHistory: () => History;
160
- nextHistory: () => History<D> | null;
161
- prevHistory: () => History<D> | null;
162
- setHistories: (histories: History[]) => void;
163
- setHistoryIndex: (index: number) => void;
164
- initialAppState: D;
165
- };
166
-
167
- type NodeMethods = {
168
- sync: () => void;
169
- };
170
- type PuckNode = {
171
- id: string;
172
- methods: NodeMethods;
173
- data: ComponentData;
174
- parentId: string | null;
175
- zone: string;
176
- path: string[];
177
- index: number;
178
- element: HTMLElement | null;
179
- };
180
- type NodesSlice = {
181
- nodes: Record<string, PuckNode | undefined>;
182
- registerNode: (id: string, node: Partial<PuckNode>) => void;
183
- unregisterNode: (id: string, node?: Partial<PuckNode>) => void;
184
- };
185
-
186
- type PermissionsArgs<UserConfig extends Config = Config, G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>> = {
187
- item?: G["UserComponentData"] | null;
188
- type?: keyof G["UserProps"];
189
- root?: boolean;
190
- };
191
- type GetPermissions<UserConfig extends Config = Config> = (params?: PermissionsArgs<UserConfig>) => Permissions;
192
- type ResolvePermissions<UserConfig extends Config = Config> = (params?: PermissionsArgs<UserConfig>, force?: boolean) => void;
193
- type RefreshPermissions<UserConfig extends Config = Config> = (params?: PermissionsArgs<UserConfig>, force?: boolean) => void;
194
- type Cache = Record<string, {
195
- lastPermissions: Partial<Permissions>;
196
- lastData: ComponentData | null;
197
- }>;
198
- type PermissionsSlice = {
199
- cache: Cache;
200
- globalPermissions: Permissions;
201
- resolvedPermissions: Record<string, Partial<Permissions> | undefined>;
202
- getPermissions: GetPermissions<Config>;
203
- resolvePermissions: ResolvePermissions<Config>;
204
- refreshPermissions: RefreshPermissions<Config>;
205
- };
206
-
207
- type ComponentOrRootData = Omit<ComponentData<any>, "type">;
208
- type FieldsSlice = {
209
- fields: Fields | Partial<Fields>;
210
- loading: boolean;
211
- lastResolvedData: Partial<ComponentOrRootData>;
212
- };
213
-
214
- type Status = "LOADING" | "MOUNTED" | "READY";
215
- type ZoomConfig = {
216
- autoZoom: number;
217
- rootHeight: number;
218
- zoom: number;
219
- };
220
- type ComponentState = Record<string, {
221
- loadingCount: number;
222
- }>;
223
- type AppStore<UserConfig extends Config = Config, G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>> = {
224
- state: G["UserAppState"];
225
- dispatch: (action: PuckAction) => void;
226
- config: UserConfig;
227
- componentState: ComponentState;
228
- setComponentState: (componentState: ComponentState) => void;
229
- setComponentLoading: (id: string) => void;
230
- unsetComponentLoading: (id: string) => void;
231
- resolveDataRuns: number;
232
- resolveData: (newAppState: AppState) => void;
233
- plugins: Plugin[];
234
- overrides: Partial<Overrides>;
235
- viewports: Viewports;
236
- zoomConfig: ZoomConfig;
237
- setZoomConfig: (zoomConfig: ZoomConfig) => void;
238
- status: Status;
239
- setStatus: (status: Status) => void;
240
- iframe: IframeConfig;
241
- selectedItem?: G["UserData"]["content"][0] | null;
242
- setUi: (ui: Partial<UiState>, recordHistory?: boolean) => void;
243
- getComponentConfig: (type?: string) => ComponentConfig | null | undefined;
244
- onAction?: (action: PuckAction, newState: AppState, state: AppState) => void;
245
- metadata: Metadata;
246
- fields: FieldsSlice;
247
- history: HistorySlice;
248
- nodes: NodesSlice;
249
- permissions: PermissionsSlice;
250
- };
251
-
252
252
  type WithGet<T> = T & {
253
253
  get: () => T;
254
254
  };
255
255
  type UsePuckData<UserConfig extends Config = Config, G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>> = {
256
256
  appState: AppState;
257
- config: Config;
257
+ config: UserConfig;
258
258
  dispatch: AppStore["dispatch"];
259
259
  getPermissions: GetPermissions<UserConfig>;
260
260
  refreshPermissions: RefreshPermissions<UserConfig>;
261
261
  selectedItem: G["UserComponentData"] | null;
262
+ getItemBySelector: (selector: ItemSelector) => ComponentData | undefined;
263
+ getItemById: (id: string) => ComponentData | undefined;
264
+ getSelectorForId: (id: string) => Required<ItemSelector> | undefined;
262
265
  history: {
263
266
  back: HistorySlice["back"];
264
267
  forward: HistorySlice["forward"];
@@ -270,7 +273,8 @@ type UsePuckData<UserConfig extends Config = Config, G extends UserGenerics<User
270
273
  hasFuture: boolean;
271
274
  };
272
275
  };
273
- type UsePuckStore<UserConfig extends Config = Config> = WithGet<UsePuckData<UserConfig>>;
276
+ type PuckApi<UserConfig extends Config = Config> = UsePuckData<UserConfig>;
277
+ type UsePuckStore<UserConfig extends Config = Config> = WithGet<PuckApi<UserConfig>>;
274
278
  /**
275
279
  * createUsePuck
276
280
  *
@@ -280,7 +284,13 @@ type UsePuckStore<UserConfig extends Config = Config> = WithGet<UsePuckData<User
280
284
  *
281
285
  * @returns a typed usePuck function
282
286
  */
283
- declare function createUsePuck<UserConfig extends Config = Config>(): <T = UsePuckData<UserConfig, UserGenerics<UserConfig>>>(selector: (state: UsePuckStore<UserConfig>) => T) => T;
287
+ declare function createUsePuck<UserConfig extends Config = Config>(): <T = PuckApi<UserConfig>>(selector: (state: UsePuckStore<UserConfig>) => T) => T;
284
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>;
285
295
 
286
- 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, Render, UiState, type UsePuckData, UserGenerics, Viewports, createUsePuck, migrate, renderContext, 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 };