@measured/puck 0.16.0-canary.345374c → 0.16.0-canary.39e7f40

Sign up to get free protection for your applications and to get access to all the features.
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- import { U as UiState, D as Data, A as AppState, F as Field, a as FieldProps, C as Config, b as DefaultRootProps, I as ItemSelector, c as DropZoneProps, V as Viewports, d as DefaultComponentProps, M as MappedItem, R as RootDataWithProps, e as RootData, f as ComponentData } from './Config-041c35a2.js';
1
+ import { U as UiState, D as Data, A as AppState, I as ItemSelector, F as Field, a as FieldProps, C as Config, b as DefaultRootProps, c as DropZoneProps, V as Viewports, d as DefaultComponentProps, M as MappedItem, R as RootDataWithProps, e as RootData, f as ComponentData } from './Config-041c35a2.js';
2
2
  export { q as Adaptor, p as ArrayField, l as ArrayState, B as BaseData, m as BaseField, i as ComponentConfig, g as Content, s as CustomField, r as ExternalField, E as ExternalFieldWithAdaptor, t as Fields, k as ItemWithId, N as NumberField, O as ObjectField, P as PuckComponent, h as PuckContext, o as RadioField, j as RootDataWithoutProps, S as SelectField, T as TextField, n as TextareaField } from './Config-041c35a2.js';
3
- import * as react_jsx_runtime from 'react/jsx-runtime';
4
3
  import * as react from 'react';
5
4
  import { ReactNode, ReactElement, CSSProperties, SyntheticEvent } from 'react';
5
+ import * as react_jsx_runtime from 'react/jsx-runtime';
6
6
  import { DragStart, DragUpdate } from '@measured/dnd';
7
7
 
8
8
  type InsertAction = {
@@ -64,6 +64,65 @@ type PuckAction = {
64
64
  recordHistory?: boolean;
65
65
  } & (ReorderAction | InsertAction | MoveAction | ReplaceAction | RemoveAction | DuplicateAction | SetAction | SetDataAction | SetUiAction | RegisterZoneAction | UnregisterZoneAction);
66
66
 
67
+ type RenderFunc<Props extends {
68
+ [key: string]: any;
69
+ } = {
70
+ children: ReactNode;
71
+ }> = (props: Props) => ReactElement;
72
+ declare const overrideKeys: readonly ["header", "headerActions", "fields", "fieldLabel", "components", "componentItem", "outline", "puck", "preview"];
73
+ type OverrideKey = (typeof overrideKeys)[number];
74
+ type OverridesGeneric<Shape extends {
75
+ [key in OverrideKey]: any;
76
+ }> = Shape;
77
+ type Overrides = OverridesGeneric<{
78
+ fieldTypes: Partial<FieldRenderFunctions>;
79
+ header: RenderFunc<{
80
+ actions: ReactNode;
81
+ children: ReactNode;
82
+ }>;
83
+ headerActions: RenderFunc<{
84
+ children: ReactNode;
85
+ }>;
86
+ preview: RenderFunc;
87
+ fields: RenderFunc<{
88
+ children: ReactNode;
89
+ isLoading: boolean;
90
+ itemSelector?: ItemSelector | null;
91
+ }>;
92
+ fieldLabel: RenderFunc<{
93
+ children?: ReactNode;
94
+ icon?: ReactNode;
95
+ label: string;
96
+ el?: "label" | "div";
97
+ readOnly?: boolean;
98
+ className?: string;
99
+ }>;
100
+ components: RenderFunc;
101
+ componentItem: RenderFunc<{
102
+ children: ReactNode;
103
+ name: string;
104
+ }>;
105
+ outline: RenderFunc;
106
+ puck: RenderFunc;
107
+ }>;
108
+ type FieldRenderFunctions = Omit<{
109
+ [Type in Field["type"]]: React.FunctionComponent<FieldProps<Extract<Field, {
110
+ type: Type;
111
+ }>> & {
112
+ children: ReactNode;
113
+ name: string;
114
+ }>;
115
+ }, "custom"> & {
116
+ [key: string]: React.FunctionComponent<FieldProps<any> & {
117
+ children: ReactNode;
118
+ name: string;
119
+ }>;
120
+ };
121
+
122
+ type Plugin = {
123
+ overrides: Partial<Overrides>;
124
+ };
125
+
67
126
  declare const FieldLabel: ({ children, icon, label, el, readOnly, className, }: {
68
127
  children?: ReactNode;
69
128
  icon?: ReactNode;
@@ -129,6 +188,25 @@ declare const Drawer: {
129
188
  }) => react_jsx_runtime.JSX.Element;
130
189
  };
131
190
 
191
+ type History<D = any> = {
192
+ id: string;
193
+ data: D;
194
+ };
195
+ type HistoryStore<D = any> = {
196
+ index: number;
197
+ hasPast: boolean;
198
+ hasFuture: boolean;
199
+ histories: History<D>[];
200
+ record: (data: D) => void;
201
+ back: VoidFunction;
202
+ forward: VoidFunction;
203
+ currentHistory: History;
204
+ nextHistory: History<D> | null;
205
+ prevHistory: History<D> | null;
206
+ setHistories: (histories: History[]) => void;
207
+ setHistoryIndex: (index: number) => void;
208
+ };
209
+
132
210
  type PathData = Record<string, {
133
211
  path: string[];
134
212
  label: string;
@@ -181,87 +259,11 @@ declare const IconButton: ({ children, href, onClick, variant, type, disabled, t
181
259
  title: string;
182
260
  }) => react_jsx_runtime.JSX.Element;
183
261
 
184
- type RenderFunc<Props extends {
185
- [key: string]: any;
186
- } = {
187
- children: ReactNode;
188
- }> = (props: Props) => ReactElement;
189
- declare const overrideKeys: readonly ["header", "headerActions", "fields", "fieldLabel", "components", "componentItem", "outline", "puck", "preview"];
190
- type OverrideKey = (typeof overrideKeys)[number];
191
- type OverridesGeneric<Shape extends {
192
- [key in OverrideKey]: any;
193
- }> = Shape;
194
- type Overrides = OverridesGeneric<{
195
- fieldTypes: Partial<FieldRenderFunctions>;
196
- header: RenderFunc<{
197
- actions: ReactNode;
198
- children: ReactNode;
199
- }>;
200
- headerActions: RenderFunc<{
201
- children: ReactNode;
202
- }>;
203
- preview: RenderFunc;
204
- fields: RenderFunc<{
205
- children: ReactNode;
206
- isLoading: boolean;
207
- itemSelector?: ItemSelector | null;
208
- }>;
209
- fieldLabel: RenderFunc<{
210
- children?: ReactNode;
211
- icon?: ReactNode;
212
- label: string;
213
- el?: "label" | "div";
214
- readOnly?: boolean;
215
- className?: string;
216
- }>;
217
- components: RenderFunc;
218
- componentItem: RenderFunc<{
219
- children: ReactNode;
220
- name: string;
221
- }>;
222
- outline: RenderFunc;
223
- puck: RenderFunc;
224
- }>;
225
- type FieldRenderFunctions = Omit<{
226
- [Type in Field["type"]]: React.FunctionComponent<FieldProps<Extract<Field, {
227
- type: Type;
228
- }>> & {
229
- children: ReactNode;
230
- name: string;
231
- }>;
232
- }, "custom"> & {
233
- [key: string]: React.FunctionComponent<FieldProps<any> & {
234
- children: ReactNode;
235
- name: string;
236
- }>;
237
- };
238
-
239
- type Plugin = {
240
- overrides: Partial<Overrides>;
241
- };
242
-
243
- type History<D = any> = {
244
- id: string;
245
- data: D;
246
- };
247
- type HistoryStore<D = any> = {
248
- index: number;
249
- currentHistory: History;
250
- hasPast: boolean;
251
- hasFuture: boolean;
252
- record: (data: D) => void;
253
- back: VoidFunction;
254
- forward: VoidFunction;
255
- nextHistory: History<D> | null;
256
- prevHistory: History<D> | null;
257
- histories: History<D>[];
258
- };
259
-
260
262
  type IframeConfig = {
261
263
  enabled?: boolean;
262
264
  };
263
265
 
264
- declare function Puck<UserConfig extends Config = Config>({ children, config, data: initialData, ui: initialUi, onChange, onPublish, plugins, overrides, renderHeader, renderHeaderActions, headerTitle, headerPath, viewports, iframe, dnd, initialHistories, }: {
266
+ declare function Puck<UserConfig extends Config = Config>({ children, config, data: initialData, ui: initialUi, onChange, onPublish, plugins, overrides, renderHeader, renderHeaderActions, headerTitle, headerPath, viewports, iframe, dnd, initialHistory, }: {
265
267
  children?: ReactNode;
266
268
  config: UserConfig;
267
269
  data: Partial<Data>;
@@ -286,7 +288,7 @@ declare function Puck<UserConfig extends Config = Config>({ children, config, da
286
288
  dnd?: {
287
289
  disableAutoScroll?: boolean;
288
290
  };
289
- initialHistories?: {
291
+ initialHistory?: {
290
292
  histories: History<any>[];
291
293
  index: number;
292
294
  };
@@ -324,20 +326,24 @@ declare function resolveAllData(data: Partial<Data>, config: Config, onResolveSt
324
326
  zones: Record<string, MappedItem[]>;
325
327
  }>;
326
328
 
327
- type PuckHistory = {
328
- back: VoidFunction;
329
- forward: VoidFunction;
330
- historyStore: HistoryStore;
331
- };
332
-
333
329
  declare const usePuck: () => {
334
330
  appState: AppState;
335
331
  config: Config<Record<string, any>, DefaultRootProps, string>;
336
332
  dispatch: (action: PuckAction) => void;
337
- history: Partial<PuckHistory>;
333
+ history: {
334
+ back: VoidFunction;
335
+ forward: VoidFunction;
336
+ setHistories: (histories: History<any>[]) => void;
337
+ setHistoryIndex: (index: number) => void;
338
+ hasPast: boolean;
339
+ hasFuture: boolean;
340
+ histories: History<any>[];
341
+ index: number;
342
+ historyStore: HistoryStore<any> | undefined;
343
+ };
338
344
  selectedItem: ComponentData<DefaultComponentProps & {
339
345
  id: string;
340
346
  }> | null;
341
347
  };
342
348
 
343
- export { AppState, AutoField, AutoFieldPrivate, Button, ComponentData, Config, Data, DefaultComponentProps, DefaultRootProps, Drawer, DropZone, DropZoneProvider, Field, FieldLabel, FieldLabelInternal, FieldProps, FieldPropsInternal, IconButton, MappedItem, Puck, PuckAction, Render, RootData, RootDataWithProps, UiState, dropZoneContext, migrate, resolveAllData, transformProps, usePuck };
349
+ export { AppState, AutoField, AutoFieldPrivate, Button, ComponentData, Config, Data, DefaultComponentProps, DefaultRootProps, Drawer, DropZone, DropZoneProvider, Field, FieldLabel, FieldLabelInternal, FieldProps, FieldPropsInternal, History, IconButton, MappedItem, Plugin, Puck, PuckAction, Render, RootData, RootDataWithProps, UiState, dropZoneContext, migrate, resolveAllData, transformProps, usePuck };
package/dist/index.js CHANGED
@@ -29167,6 +29167,9 @@ init_react_import();
29167
29167
  // types/Config.tsx
29168
29168
  init_react_import();
29169
29169
 
29170
+ // types/Plugin.ts
29171
+ init_react_import();
29172
+
29170
29173
  // types/Fields.ts
29171
29174
  init_react_import();
29172
29175
 
@@ -33266,13 +33269,33 @@ function usePuckHistory({
33266
33269
  historyStore.forward();
33267
33270
  }
33268
33271
  };
33272
+ const setHistories = (histories) => {
33273
+ var _a;
33274
+ dispatch({
33275
+ type: "set",
33276
+ state: ((_a = histories[histories.length - 1]) == null ? void 0 : _a.data) || initialAppState
33277
+ });
33278
+ historyStore.setHistories(histories);
33279
+ };
33280
+ const setHistoryIndex = (index) => {
33281
+ var _a;
33282
+ if (historyStore.histories.length > index) {
33283
+ dispatch({
33284
+ type: "set",
33285
+ state: ((_a = historyStore.histories[index]) == null ? void 0 : _a.data) || initialAppState
33286
+ });
33287
+ historyStore.setHistoryIndex(index);
33288
+ }
33289
+ };
33269
33290
  (0, import_react_hotkeys_hook.useHotkeys)("meta+z", back, { preventDefault: true });
33270
33291
  (0, import_react_hotkeys_hook.useHotkeys)("meta+shift+z", forward, { preventDefault: true });
33271
33292
  (0, import_react_hotkeys_hook.useHotkeys)("meta+y", forward, { preventDefault: true });
33272
33293
  return {
33273
33294
  back,
33274
33295
  forward,
33275
- historyStore
33296
+ historyStore,
33297
+ setHistories,
33298
+ setHistoryIndex
33276
33299
  };
33277
33300
  }
33278
33301
 
@@ -33281,13 +33304,17 @@ init_react_import();
33281
33304
  var import_react27 = require("react");
33282
33305
  var import_use_debounce3 = require("use-debounce");
33283
33306
  var EMPTY_HISTORY_INDEX = -1;
33284
- function useHistoryStore(initialHistories) {
33307
+ function useHistoryStore(initialHistory) {
33285
33308
  var _a, _b;
33286
33309
  const [histories, setHistories] = (0, import_react27.useState)(
33287
- (_a = initialHistories == null ? void 0 : initialHistories.histories) != null ? _a : []
33310
+ (_a = initialHistory == null ? void 0 : initialHistory.histories) != null ? _a : []
33288
33311
  );
33312
+ const updateHistories = (histories2) => {
33313
+ setHistories(histories2);
33314
+ setIndex(histories2.length - 1);
33315
+ };
33289
33316
  const [index, setIndex] = (0, import_react27.useState)(
33290
- (_b = initialHistories == null ? void 0 : initialHistories.index) != null ? _b : EMPTY_HISTORY_INDEX
33317
+ (_b = initialHistory == null ? void 0 : initialHistory.index) != null ? _b : EMPTY_HISTORY_INDEX
33291
33318
  );
33292
33319
  const hasPast = index > EMPTY_HISTORY_INDEX;
33293
33320
  const hasFuture = index < histories.length - 1;
@@ -33299,11 +33326,7 @@ function useHistoryStore(initialHistories) {
33299
33326
  data,
33300
33327
  id: generateId("history")
33301
33328
  };
33302
- setHistories((prev) => {
33303
- const newVal = [...prev.slice(0, index + 1), history];
33304
- setIndex(newVal.length - 1);
33305
- return newVal;
33306
- });
33329
+ updateHistories([...histories.slice(0, index + 1), history]);
33307
33330
  }, 250);
33308
33331
  const back = () => {
33309
33332
  setIndex(index - 1);
@@ -33321,7 +33344,9 @@ function useHistoryStore(initialHistories) {
33321
33344
  forward,
33322
33345
  nextHistory,
33323
33346
  prevHistory,
33324
- histories
33347
+ histories,
33348
+ setHistories: updateHistories,
33349
+ setHistoryIndex: setIndex
33325
33350
  };
33326
33351
  }
33327
33352
 
@@ -33766,10 +33791,10 @@ function Puck({
33766
33791
  enabled: true
33767
33792
  },
33768
33793
  dnd,
33769
- initialHistories
33794
+ initialHistory
33770
33795
  }) {
33771
33796
  var _a;
33772
- const historyStore = useHistoryStore(initialHistories);
33797
+ const historyStore = useHistoryStore(initialHistory);
33773
33798
  const [reducer] = (0, import_react30.useState)(
33774
33799
  () => createReducer({ config, record: historyStore.record })
33775
33800
  );
@@ -34325,7 +34350,17 @@ var usePuck = () => {
34325
34350
  appState,
34326
34351
  config,
34327
34352
  dispatch,
34328
- history,
34353
+ history: {
34354
+ back: history.back,
34355
+ forward: history.forward,
34356
+ setHistories: history.setHistories,
34357
+ setHistoryIndex: history.setHistoryIndex,
34358
+ hasPast: history.historyStore.hasPast,
34359
+ hasFuture: history.historyStore.hasFuture,
34360
+ histories: history.historyStore.histories,
34361
+ index: history.historyStore.index,
34362
+ historyStore: history.historyStore
34363
+ },
34329
34364
  selectedItem: selectedItem || null
34330
34365
  };
34331
34366
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@measured/puck",
3
- "version": "0.16.0-canary.345374c",
3
+ "version": "0.16.0-canary.39e7f40",
4
4
  "author": "Measured Corporation Ltd <hello@measured.co>",
5
5
  "repository": "measuredco/puck",
6
6
  "bugs": "https://github.com/measuredco/puck/issues",