@measured/puck 0.19.0-canary.61c8658 → 0.19.0-canary.6dc5101e

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,110 @@
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 DefaultComponentProps, i as DefaultRootFieldProps, H as History, j as ComponentData, k as Fields, A as AppState, l as ComponentConfig } from './resolve-all-data-DleIzc4N.mjs';
2
- export { Q as Adaptor, K as ArrayField, t as ArrayState, a2 as AsFieldProps, B as BaseData, E as BaseField, y as ComponentDataMap, z as Content, Y as CustomField, $ as DefaultRootProps, _ as DefaultRootRenderProps, m as Direction, n as DragAxis, X as ExternalField, W as ExternalFieldWithAdaptor, a4 as ExtractPropsFromConfig, a5 as ExtractRootPropsFromConfig, r as FieldRenderFunctions, s as ItemWithId, x as MappedItem, N as NumberField, L as ObjectField, q as OverrideKey, u as PuckComponent, Z as PuckContext, J as RadioField, w as RootData, R as RootDataWithProps, v as RootDataWithoutProps, S as SelectField, T as TextField, G as TextareaField, o as Viewport, a3 as WithChildren, a0 as WithId, a1 as WithPuckProps, p as overrideKeys, a6 as resolveAllData } from './resolve-all-data-DleIzc4N.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-DOB5QZVq.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-DOB5QZVq.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
+ };
26
+ type PuckNodeInstance = {
27
+ id: string;
28
+ methods: NodeMethods;
29
+ element: HTMLElement | null;
30
+ };
31
+ type NodesSlice = {
32
+ nodes: Record<string, PuckNodeInstance | undefined>;
33
+ registerNode: (id: string, node: Partial<PuckNodeInstance>) => void;
34
+ unregisterNode: (id: string, node?: Partial<PuckNodeInstance>) => void;
35
+ };
36
+
37
+ type PermissionsArgs<UserConfig extends Config = Config, G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>> = {
38
+ item?: G["UserComponentData"] | null;
39
+ type?: keyof G["UserProps"];
40
+ root?: boolean;
41
+ };
42
+ type GetPermissions<UserConfig extends Config = Config> = (params?: PermissionsArgs<UserConfig>) => Permissions;
43
+ type ResolvePermissions<UserConfig extends Config = Config> = (params?: PermissionsArgs<UserConfig>, force?: boolean) => void;
44
+ type RefreshPermissions<UserConfig extends Config = Config> = (params?: PermissionsArgs<UserConfig>, force?: boolean) => void;
45
+ type Cache = Record<string, {
46
+ lastPermissions: Partial<Permissions>;
47
+ lastData: ComponentData | null;
48
+ }>;
49
+ type PermissionsSlice = {
50
+ cache: Cache;
51
+ globalPermissions: Permissions;
52
+ resolvedPermissions: Record<string, Partial<Permissions> | undefined>;
53
+ getPermissions: GetPermissions<Config>;
54
+ resolvePermissions: ResolvePermissions<Config>;
55
+ refreshPermissions: RefreshPermissions<Config>;
56
+ };
57
+
58
+ type ComponentOrRootData = Omit<ComponentData<any>, "type">;
59
+ type FieldsSlice = {
60
+ fields: Fields | Partial<Fields>;
61
+ loading: boolean;
62
+ lastResolvedData: Partial<ComponentOrRootData>;
63
+ id: string | undefined;
64
+ };
65
+
66
+ type Status = "LOADING" | "MOUNTED" | "READY";
67
+ type ZoomConfig = {
68
+ autoZoom: number;
69
+ rootHeight: number;
70
+ zoom: number;
71
+ };
72
+ type ComponentState = Record<string, {
73
+ loadingCount: number;
74
+ }>;
75
+ type AppStore<UserConfig extends Config = Config, G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>> = {
76
+ state: G["UserAppState"];
77
+ dispatch: (action: PuckAction) => void;
78
+ config: UserConfig;
79
+ componentState: ComponentState;
80
+ setComponentState: (componentState: ComponentState) => void;
81
+ setComponentLoading: (id: string, loading?: boolean, defer?: number) => () => void;
82
+ unsetComponentLoading: (id: string) => void;
83
+ pendingLoadTimeouts: Record<string, NodeJS.Timeout>;
84
+ resolveComponentData: <T extends ComponentData | RootDataWithProps>(componentData: T, trigger: ResolveDataTrigger) => Promise<{
85
+ node: T;
86
+ didChange: boolean;
87
+ }>;
88
+ resolveAndCommitData: () => void;
89
+ plugins: Plugin[];
90
+ overrides: Partial<Overrides>;
91
+ viewports: Viewports;
92
+ zoomConfig: ZoomConfig;
93
+ setZoomConfig: (zoomConfig: ZoomConfig) => void;
94
+ status: Status;
95
+ setStatus: (status: Status) => void;
96
+ iframe: IframeConfig;
97
+ selectedItem?: G["UserData"]["content"][0] | null;
98
+ setUi: (ui: Partial<UiState>, recordHistory?: boolean) => void;
99
+ getComponentConfig: (type?: string) => ComponentConfig | null | undefined;
100
+ onAction?: (action: PuckAction, newState: AppState, state: AppState) => void;
101
+ metadata: Metadata;
102
+ fields: FieldsSlice;
103
+ history: HistorySlice;
104
+ nodes: NodesSlice;
105
+ permissions: PermissionsSlice;
106
+ };
107
+
7
108
  declare const ActionBar: {
8
109
  ({ label, children, }: {
9
110
  label?: string;
@@ -42,7 +143,7 @@ declare const FieldLabel: ({ children, icon, label, el, readOnly, className, }:
42
143
  className?: string;
43
144
  }) => react_jsx_runtime.JSX.Element;
44
145
  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;
146
+ declare function AutoField<ValueType = any, FieldType extends FieldNoLabel<ValueType> = FieldNoLabel<ValueType>>(props: FieldProps<FieldType, ValueType>): react_jsx_runtime.JSX.Element | null;
46
147
 
47
148
  declare const Button: ({ children, href, onClick, variant, type, disabled, tabIndex, newTab, fullWidth, icon, size, loading: loadingProp, ...props }: {
48
149
  children: ReactNode;
@@ -146,130 +247,19 @@ declare function Render<UserConfig extends Config = Config, G extends UserGeneri
146
247
  metadata?: Metadata;
147
248
  }): react_jsx_runtime.JSX.Element;
148
249
 
149
- declare function migrate(data: Data): Data;
150
-
151
- type PropTransform<Props extends DefaultComponentProps = DefaultComponentProps, RootProps extends DefaultComponentProps = DefaultRootFieldProps> = Partial<{
152
- [ComponentName in keyof Props]: (props: Props[ComponentName] & {
153
- [key: string]: any;
154
- }) => Props[ComponentName];
155
- } & {
156
- root: (props: RootProps & {
157
- [key: string]: any;
158
- }) => RootProps;
159
- }>;
160
- declare function transformProps<Props extends DefaultComponentProps = DefaultComponentProps, RootProps extends DefaultComponentProps = DefaultRootFieldProps>(data: Partial<Data>, propTransforms: PropTransform<Props, RootProps>): Data;
161
-
162
- type HistorySlice<D = any> = {
163
- index: number;
164
- hasPast: () => boolean;
165
- hasFuture: () => boolean;
166
- histories: History<D>[];
167
- record: (data: D) => void;
168
- back: VoidFunction;
169
- forward: VoidFunction;
170
- currentHistory: () => History;
171
- nextHistory: () => History<D> | null;
172
- prevHistory: () => History<D> | null;
173
- setHistories: (histories: History[]) => void;
174
- setHistoryIndex: (index: number) => void;
175
- initialAppState: D;
176
- };
177
-
178
- type NodeMethods = {
179
- sync: () => void;
180
- };
181
- type PuckNode = {
182
- id: string;
183
- methods: NodeMethods;
184
- data: ComponentData;
185
- parentId: string | null;
186
- zone: string;
187
- path: string[];
188
- index: number;
189
- element: HTMLElement | null;
190
- };
191
- type NodesSlice = {
192
- nodes: Record<string, PuckNode | undefined>;
193
- registerNode: (id: string, node: Partial<PuckNode>) => void;
194
- unregisterNode: (id: string, node?: Partial<PuckNode>) => void;
195
- };
196
-
197
- type PermissionsArgs<UserConfig extends Config = Config, G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>> = {
198
- item?: G["UserComponentData"] | null;
199
- type?: keyof G["UserProps"];
200
- root?: boolean;
201
- };
202
- type GetPermissions<UserConfig extends Config = Config> = (params?: PermissionsArgs<UserConfig>) => Permissions;
203
- type ResolvePermissions<UserConfig extends Config = Config> = (params?: PermissionsArgs<UserConfig>, force?: boolean) => void;
204
- type RefreshPermissions<UserConfig extends Config = Config> = (params?: PermissionsArgs<UserConfig>, force?: boolean) => void;
205
- type Cache = Record<string, {
206
- lastPermissions: Partial<Permissions>;
207
- lastData: ComponentData | null;
208
- }>;
209
- type PermissionsSlice = {
210
- cache: Cache;
211
- globalPermissions: Permissions;
212
- resolvedPermissions: Record<string, Partial<Permissions> | undefined>;
213
- getPermissions: GetPermissions<Config>;
214
- resolvePermissions: ResolvePermissions<Config>;
215
- refreshPermissions: RefreshPermissions<Config>;
216
- };
217
-
218
- type ComponentOrRootData = Omit<ComponentData<any>, "type">;
219
- type FieldsSlice = {
220
- fields: Fields | Partial<Fields>;
221
- loading: boolean;
222
- lastResolvedData: Partial<ComponentOrRootData>;
223
- };
224
-
225
- type Status = "LOADING" | "MOUNTED" | "READY";
226
- type ZoomConfig = {
227
- autoZoom: number;
228
- rootHeight: number;
229
- zoom: number;
230
- };
231
- type ComponentState = Record<string, {
232
- loadingCount: number;
233
- }>;
234
- type AppStore<UserConfig extends Config = Config, G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>> = {
235
- state: G["UserAppState"];
236
- dispatch: (action: PuckAction) => void;
237
- config: UserConfig;
238
- componentState: ComponentState;
239
- setComponentState: (componentState: ComponentState) => void;
240
- setComponentLoading: (id: string) => void;
241
- unsetComponentLoading: (id: string) => void;
242
- resolveDataRuns: number;
243
- resolveData: (newAppState: AppState) => void;
244
- plugins: Plugin[];
245
- overrides: Partial<Overrides>;
246
- viewports: Viewports;
247
- zoomConfig: ZoomConfig;
248
- setZoomConfig: (zoomConfig: ZoomConfig) => void;
249
- status: Status;
250
- setStatus: (status: Status) => void;
251
- iframe: IframeConfig;
252
- selectedItem?: G["UserData"]["content"][0] | null;
253
- setUi: (ui: Partial<UiState>, recordHistory?: boolean) => void;
254
- getComponentConfig: (type?: string) => ComponentConfig | null | undefined;
255
- onAction?: (action: PuckAction, newState: AppState, state: AppState) => void;
256
- metadata: Metadata;
257
- fields: FieldsSlice;
258
- history: HistorySlice;
259
- nodes: NodesSlice;
260
- permissions: PermissionsSlice;
261
- };
262
-
263
250
  type WithGet<T> = T & {
264
251
  get: () => T;
265
252
  };
266
253
  type UsePuckData<UserConfig extends Config = Config, G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>> = {
267
254
  appState: AppState;
268
- config: Config;
255
+ config: UserConfig;
269
256
  dispatch: AppStore["dispatch"];
270
257
  getPermissions: GetPermissions<UserConfig>;
271
258
  refreshPermissions: RefreshPermissions<UserConfig>;
272
259
  selectedItem: G["UserComponentData"] | null;
260
+ getItemBySelector: (selector: ItemSelector) => ComponentData | undefined;
261
+ getItemById: (id: string) => ComponentData | undefined;
262
+ getSelectorForId: (id: string) => Required<ItemSelector> | undefined;
273
263
  history: {
274
264
  back: HistorySlice["back"];
275
265
  forward: HistorySlice["forward"];
@@ -281,7 +271,8 @@ type UsePuckData<UserConfig extends Config = Config, G extends UserGenerics<User
281
271
  hasFuture: boolean;
282
272
  };
283
273
  };
284
- type UsePuckStore<UserConfig extends Config = Config> = WithGet<UsePuckData<UserConfig>>;
274
+ type PuckApi<UserConfig extends Config = Config> = UsePuckData<UserConfig>;
275
+ type UsePuckStore<UserConfig extends Config = Config> = WithGet<PuckApi<UserConfig>>;
285
276
  /**
286
277
  * createUsePuck
287
278
  *
@@ -291,7 +282,13 @@ type UsePuckStore<UserConfig extends Config = Config> = WithGet<UsePuckData<User
291
282
  *
292
283
  * @returns a typed usePuck function
293
284
  */
294
- declare function createUsePuck<UserConfig extends Config = Config>(): <T = UsePuckData<UserConfig, UserGenerics<UserConfig>>>(selector: (state: UsePuckStore<UserConfig>) => T) => T;
285
+ declare function createUsePuck<UserConfig extends Config = Config>(): <T = PuckApi<UserConfig>>(selector: (state: UsePuckStore<UserConfig>) => T) => T;
295
286
  declare function usePuck<UserConfig extends Config = Config>(): UsePuckStore<UserConfig>;
287
+ /**
288
+ * Get the latest state without relying on a render
289
+ *
290
+ * @returns PuckApi
291
+ */
292
+ declare function useGetPuck(): () => UsePuckStore<Config>;
296
293
 
297
- export { Action, ActionBar, AppState, AutoField, Button, ComponentConfig, ComponentData, Config, Data, DefaultComponentProps, DefaultRootFieldProps, 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, transformProps, usePuck };
294
+ 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,110 @@
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 DefaultComponentProps, i as DefaultRootFieldProps, H as History, j as ComponentData, k as Fields, A as AppState, l as ComponentConfig } from './resolve-all-data-DleIzc4N.js';
2
- export { Q as Adaptor, K as ArrayField, t as ArrayState, a2 as AsFieldProps, B as BaseData, E as BaseField, y as ComponentDataMap, z as Content, Y as CustomField, $ as DefaultRootProps, _ as DefaultRootRenderProps, m as Direction, n as DragAxis, X as ExternalField, W as ExternalFieldWithAdaptor, a4 as ExtractPropsFromConfig, a5 as ExtractRootPropsFromConfig, r as FieldRenderFunctions, s as ItemWithId, x as MappedItem, N as NumberField, L as ObjectField, q as OverrideKey, u as PuckComponent, Z as PuckContext, J as RadioField, w as RootData, R as RootDataWithProps, v as RootDataWithoutProps, S as SelectField, T as TextField, G as TextareaField, o as Viewport, a3 as WithChildren, a0 as WithId, a1 as WithPuckProps, p as overrideKeys, a6 as resolveAllData } from './resolve-all-data-DleIzc4N.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-DOB5QZVq.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-DOB5QZVq.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
+ };
26
+ type PuckNodeInstance = {
27
+ id: string;
28
+ methods: NodeMethods;
29
+ element: HTMLElement | null;
30
+ };
31
+ type NodesSlice = {
32
+ nodes: Record<string, PuckNodeInstance | undefined>;
33
+ registerNode: (id: string, node: Partial<PuckNodeInstance>) => void;
34
+ unregisterNode: (id: string, node?: Partial<PuckNodeInstance>) => void;
35
+ };
36
+
37
+ type PermissionsArgs<UserConfig extends Config = Config, G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>> = {
38
+ item?: G["UserComponentData"] | null;
39
+ type?: keyof G["UserProps"];
40
+ root?: boolean;
41
+ };
42
+ type GetPermissions<UserConfig extends Config = Config> = (params?: PermissionsArgs<UserConfig>) => Permissions;
43
+ type ResolvePermissions<UserConfig extends Config = Config> = (params?: PermissionsArgs<UserConfig>, force?: boolean) => void;
44
+ type RefreshPermissions<UserConfig extends Config = Config> = (params?: PermissionsArgs<UserConfig>, force?: boolean) => void;
45
+ type Cache = Record<string, {
46
+ lastPermissions: Partial<Permissions>;
47
+ lastData: ComponentData | null;
48
+ }>;
49
+ type PermissionsSlice = {
50
+ cache: Cache;
51
+ globalPermissions: Permissions;
52
+ resolvedPermissions: Record<string, Partial<Permissions> | undefined>;
53
+ getPermissions: GetPermissions<Config>;
54
+ resolvePermissions: ResolvePermissions<Config>;
55
+ refreshPermissions: RefreshPermissions<Config>;
56
+ };
57
+
58
+ type ComponentOrRootData = Omit<ComponentData<any>, "type">;
59
+ type FieldsSlice = {
60
+ fields: Fields | Partial<Fields>;
61
+ loading: boolean;
62
+ lastResolvedData: Partial<ComponentOrRootData>;
63
+ id: string | undefined;
64
+ };
65
+
66
+ type Status = "LOADING" | "MOUNTED" | "READY";
67
+ type ZoomConfig = {
68
+ autoZoom: number;
69
+ rootHeight: number;
70
+ zoom: number;
71
+ };
72
+ type ComponentState = Record<string, {
73
+ loadingCount: number;
74
+ }>;
75
+ type AppStore<UserConfig extends Config = Config, G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>> = {
76
+ state: G["UserAppState"];
77
+ dispatch: (action: PuckAction) => void;
78
+ config: UserConfig;
79
+ componentState: ComponentState;
80
+ setComponentState: (componentState: ComponentState) => void;
81
+ setComponentLoading: (id: string, loading?: boolean, defer?: number) => () => void;
82
+ unsetComponentLoading: (id: string) => void;
83
+ pendingLoadTimeouts: Record<string, NodeJS.Timeout>;
84
+ resolveComponentData: <T extends ComponentData | RootDataWithProps>(componentData: T, trigger: ResolveDataTrigger) => Promise<{
85
+ node: T;
86
+ didChange: boolean;
87
+ }>;
88
+ resolveAndCommitData: () => void;
89
+ plugins: Plugin[];
90
+ overrides: Partial<Overrides>;
91
+ viewports: Viewports;
92
+ zoomConfig: ZoomConfig;
93
+ setZoomConfig: (zoomConfig: ZoomConfig) => void;
94
+ status: Status;
95
+ setStatus: (status: Status) => void;
96
+ iframe: IframeConfig;
97
+ selectedItem?: G["UserData"]["content"][0] | null;
98
+ setUi: (ui: Partial<UiState>, recordHistory?: boolean) => void;
99
+ getComponentConfig: (type?: string) => ComponentConfig | null | undefined;
100
+ onAction?: (action: PuckAction, newState: AppState, state: AppState) => void;
101
+ metadata: Metadata;
102
+ fields: FieldsSlice;
103
+ history: HistorySlice;
104
+ nodes: NodesSlice;
105
+ permissions: PermissionsSlice;
106
+ };
107
+
7
108
  declare const ActionBar: {
8
109
  ({ label, children, }: {
9
110
  label?: string;
@@ -42,7 +143,7 @@ declare const FieldLabel: ({ children, icon, label, el, readOnly, className, }:
42
143
  className?: string;
43
144
  }) => react_jsx_runtime.JSX.Element;
44
145
  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;
146
+ declare function AutoField<ValueType = any, FieldType extends FieldNoLabel<ValueType> = FieldNoLabel<ValueType>>(props: FieldProps<FieldType, ValueType>): react_jsx_runtime.JSX.Element | null;
46
147
 
47
148
  declare const Button: ({ children, href, onClick, variant, type, disabled, tabIndex, newTab, fullWidth, icon, size, loading: loadingProp, ...props }: {
48
149
  children: ReactNode;
@@ -146,130 +247,19 @@ declare function Render<UserConfig extends Config = Config, G extends UserGeneri
146
247
  metadata?: Metadata;
147
248
  }): react_jsx_runtime.JSX.Element;
148
249
 
149
- declare function migrate(data: Data): Data;
150
-
151
- type PropTransform<Props extends DefaultComponentProps = DefaultComponentProps, RootProps extends DefaultComponentProps = DefaultRootFieldProps> = Partial<{
152
- [ComponentName in keyof Props]: (props: Props[ComponentName] & {
153
- [key: string]: any;
154
- }) => Props[ComponentName];
155
- } & {
156
- root: (props: RootProps & {
157
- [key: string]: any;
158
- }) => RootProps;
159
- }>;
160
- declare function transformProps<Props extends DefaultComponentProps = DefaultComponentProps, RootProps extends DefaultComponentProps = DefaultRootFieldProps>(data: Partial<Data>, propTransforms: PropTransform<Props, RootProps>): Data;
161
-
162
- type HistorySlice<D = any> = {
163
- index: number;
164
- hasPast: () => boolean;
165
- hasFuture: () => boolean;
166
- histories: History<D>[];
167
- record: (data: D) => void;
168
- back: VoidFunction;
169
- forward: VoidFunction;
170
- currentHistory: () => History;
171
- nextHistory: () => History<D> | null;
172
- prevHistory: () => History<D> | null;
173
- setHistories: (histories: History[]) => void;
174
- setHistoryIndex: (index: number) => void;
175
- initialAppState: D;
176
- };
177
-
178
- type NodeMethods = {
179
- sync: () => void;
180
- };
181
- type PuckNode = {
182
- id: string;
183
- methods: NodeMethods;
184
- data: ComponentData;
185
- parentId: string | null;
186
- zone: string;
187
- path: string[];
188
- index: number;
189
- element: HTMLElement | null;
190
- };
191
- type NodesSlice = {
192
- nodes: Record<string, PuckNode | undefined>;
193
- registerNode: (id: string, node: Partial<PuckNode>) => void;
194
- unregisterNode: (id: string, node?: Partial<PuckNode>) => void;
195
- };
196
-
197
- type PermissionsArgs<UserConfig extends Config = Config, G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>> = {
198
- item?: G["UserComponentData"] | null;
199
- type?: keyof G["UserProps"];
200
- root?: boolean;
201
- };
202
- type GetPermissions<UserConfig extends Config = Config> = (params?: PermissionsArgs<UserConfig>) => Permissions;
203
- type ResolvePermissions<UserConfig extends Config = Config> = (params?: PermissionsArgs<UserConfig>, force?: boolean) => void;
204
- type RefreshPermissions<UserConfig extends Config = Config> = (params?: PermissionsArgs<UserConfig>, force?: boolean) => void;
205
- type Cache = Record<string, {
206
- lastPermissions: Partial<Permissions>;
207
- lastData: ComponentData | null;
208
- }>;
209
- type PermissionsSlice = {
210
- cache: Cache;
211
- globalPermissions: Permissions;
212
- resolvedPermissions: Record<string, Partial<Permissions> | undefined>;
213
- getPermissions: GetPermissions<Config>;
214
- resolvePermissions: ResolvePermissions<Config>;
215
- refreshPermissions: RefreshPermissions<Config>;
216
- };
217
-
218
- type ComponentOrRootData = Omit<ComponentData<any>, "type">;
219
- type FieldsSlice = {
220
- fields: Fields | Partial<Fields>;
221
- loading: boolean;
222
- lastResolvedData: Partial<ComponentOrRootData>;
223
- };
224
-
225
- type Status = "LOADING" | "MOUNTED" | "READY";
226
- type ZoomConfig = {
227
- autoZoom: number;
228
- rootHeight: number;
229
- zoom: number;
230
- };
231
- type ComponentState = Record<string, {
232
- loadingCount: number;
233
- }>;
234
- type AppStore<UserConfig extends Config = Config, G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>> = {
235
- state: G["UserAppState"];
236
- dispatch: (action: PuckAction) => void;
237
- config: UserConfig;
238
- componentState: ComponentState;
239
- setComponentState: (componentState: ComponentState) => void;
240
- setComponentLoading: (id: string) => void;
241
- unsetComponentLoading: (id: string) => void;
242
- resolveDataRuns: number;
243
- resolveData: (newAppState: AppState) => void;
244
- plugins: Plugin[];
245
- overrides: Partial<Overrides>;
246
- viewports: Viewports;
247
- zoomConfig: ZoomConfig;
248
- setZoomConfig: (zoomConfig: ZoomConfig) => void;
249
- status: Status;
250
- setStatus: (status: Status) => void;
251
- iframe: IframeConfig;
252
- selectedItem?: G["UserData"]["content"][0] | null;
253
- setUi: (ui: Partial<UiState>, recordHistory?: boolean) => void;
254
- getComponentConfig: (type?: string) => ComponentConfig | null | undefined;
255
- onAction?: (action: PuckAction, newState: AppState, state: AppState) => void;
256
- metadata: Metadata;
257
- fields: FieldsSlice;
258
- history: HistorySlice;
259
- nodes: NodesSlice;
260
- permissions: PermissionsSlice;
261
- };
262
-
263
250
  type WithGet<T> = T & {
264
251
  get: () => T;
265
252
  };
266
253
  type UsePuckData<UserConfig extends Config = Config, G extends UserGenerics<UserConfig> = UserGenerics<UserConfig>> = {
267
254
  appState: AppState;
268
- config: Config;
255
+ config: UserConfig;
269
256
  dispatch: AppStore["dispatch"];
270
257
  getPermissions: GetPermissions<UserConfig>;
271
258
  refreshPermissions: RefreshPermissions<UserConfig>;
272
259
  selectedItem: G["UserComponentData"] | null;
260
+ getItemBySelector: (selector: ItemSelector) => ComponentData | undefined;
261
+ getItemById: (id: string) => ComponentData | undefined;
262
+ getSelectorForId: (id: string) => Required<ItemSelector> | undefined;
273
263
  history: {
274
264
  back: HistorySlice["back"];
275
265
  forward: HistorySlice["forward"];
@@ -281,7 +271,8 @@ type UsePuckData<UserConfig extends Config = Config, G extends UserGenerics<User
281
271
  hasFuture: boolean;
282
272
  };
283
273
  };
284
- type UsePuckStore<UserConfig extends Config = Config> = WithGet<UsePuckData<UserConfig>>;
274
+ type PuckApi<UserConfig extends Config = Config> = UsePuckData<UserConfig>;
275
+ type UsePuckStore<UserConfig extends Config = Config> = WithGet<PuckApi<UserConfig>>;
285
276
  /**
286
277
  * createUsePuck
287
278
  *
@@ -291,7 +282,13 @@ type UsePuckStore<UserConfig extends Config = Config> = WithGet<UsePuckData<User
291
282
  *
292
283
  * @returns a typed usePuck function
293
284
  */
294
- declare function createUsePuck<UserConfig extends Config = Config>(): <T = UsePuckData<UserConfig, UserGenerics<UserConfig>>>(selector: (state: UsePuckStore<UserConfig>) => T) => T;
285
+ declare function createUsePuck<UserConfig extends Config = Config>(): <T = PuckApi<UserConfig>>(selector: (state: UsePuckStore<UserConfig>) => T) => T;
295
286
  declare function usePuck<UserConfig extends Config = Config>(): UsePuckStore<UserConfig>;
287
+ /**
288
+ * Get the latest state without relying on a render
289
+ *
290
+ * @returns PuckApi
291
+ */
292
+ declare function useGetPuck(): () => UsePuckStore<Config>;
296
293
 
297
- export { Action, ActionBar, AppState, AutoField, Button, ComponentConfig, ComponentData, Config, Data, DefaultComponentProps, DefaultRootFieldProps, 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, transformProps, usePuck };
294
+ 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 };