@measured/puck 0.17.4-canary.e414e34 → 0.17.4-canary.e778246

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.mjs CHANGED
@@ -1551,12 +1551,13 @@ var DefaultField = ({
1551
1551
  field,
1552
1552
  onChange,
1553
1553
  readOnly,
1554
- value,
1554
+ value: _value,
1555
1555
  name,
1556
1556
  label,
1557
1557
  Label,
1558
1558
  id
1559
1559
  }) => {
1560
+ const value = _value;
1560
1561
  return /* @__PURE__ */ jsx11(
1561
1562
  Label,
1562
1563
  {
@@ -1574,7 +1575,7 @@ var DefaultField = ({
1574
1575
  type: field.type,
1575
1576
  title: label || name,
1576
1577
  name,
1577
- value: typeof value === "undefined" ? "" : value.toString(),
1578
+ value: (value == null ? void 0 : value.toString) ? value.toString() : "",
1578
1579
  onChange: (e) => {
1579
1580
  if (field.type === "number") {
1580
1581
  const numberValue = Number(e.currentTarget.value);
@@ -1689,29 +1690,57 @@ import { useEffect as useEffect6, useState as useState7 } from "react";
1689
1690
  init_react_import();
1690
1691
  var Button_module_default = { "Button": "_Button_1t64k_1", "Button--medium": "_Button--medium_1t64k_29", "Button--large": "_Button--large_1t64k_37", "Button-icon": "_Button-icon_1t64k_44", "Button--primary": "_Button--primary_1t64k_48", "Button--secondary": "_Button--secondary_1t64k_67", "Button--flush": "_Button--flush_1t64k_84", "Button--disabled": "_Button--disabled_1t64k_88", "Button--fullWidth": "_Button--fullWidth_1t64k_95", "Button-spinner": "_Button-spinner_1t64k_100" };
1691
1692
 
1693
+ // lib/filter-data-attrs.ts
1694
+ init_react_import();
1695
+ var dataAttrRe = /^(data-.*)$/;
1696
+ var filterDataAttrs = (props) => {
1697
+ let filteredProps = {};
1698
+ for (const prop in props) {
1699
+ if (Object.prototype.hasOwnProperty.call(props, prop) && dataAttrRe.test(prop)) {
1700
+ filteredProps[prop] = props[prop];
1701
+ }
1702
+ }
1703
+ return filteredProps;
1704
+ };
1705
+
1692
1706
  // components/Button/Button.tsx
1693
1707
  import { jsx as jsx14, jsxs as jsxs6 } from "react/jsx-runtime";
1694
1708
  var getClassName9 = get_class_name_factory_default("Button", Button_module_default);
1695
- var Button = ({
1696
- children,
1697
- href,
1698
- onClick,
1699
- variant = "primary",
1700
- type,
1701
- disabled,
1702
- tabIndex,
1703
- newTab,
1704
- fullWidth,
1705
- icon,
1706
- size = "medium",
1707
- loading: loadingProp = false
1708
- }) => {
1709
+ var Button = (_a) => {
1710
+ var _b = _a, {
1711
+ children,
1712
+ href,
1713
+ onClick,
1714
+ variant = "primary",
1715
+ type,
1716
+ disabled,
1717
+ tabIndex,
1718
+ newTab,
1719
+ fullWidth,
1720
+ icon,
1721
+ size = "medium",
1722
+ loading: loadingProp = false
1723
+ } = _b, props = __objRest(_b, [
1724
+ "children",
1725
+ "href",
1726
+ "onClick",
1727
+ "variant",
1728
+ "type",
1729
+ "disabled",
1730
+ "tabIndex",
1731
+ "newTab",
1732
+ "fullWidth",
1733
+ "icon",
1734
+ "size",
1735
+ "loading"
1736
+ ]);
1709
1737
  const [loading, setLoading] = useState7(loadingProp);
1710
1738
  useEffect6(() => setLoading(loadingProp), [loadingProp]);
1711
1739
  const ElementType = href ? "a" : type ? "button" : "span";
1740
+ const dataAttrs = filterDataAttrs(props);
1712
1741
  const el = /* @__PURE__ */ jsxs6(
1713
1742
  ElementType,
1714
- {
1743
+ __spreadProps(__spreadValues({
1715
1744
  className: getClassName9({
1716
1745
  primary: variant === "primary",
1717
1746
  secondary: variant === "secondary",
@@ -1731,13 +1760,14 @@ var Button = ({
1731
1760
  tabIndex,
1732
1761
  target: newTab ? "_blank" : void 0,
1733
1762
  rel: newTab ? "noreferrer" : void 0,
1734
- href,
1763
+ href
1764
+ }, dataAttrs), {
1735
1765
  children: [
1736
1766
  icon && /* @__PURE__ */ jsx14("div", { className: getClassName9("icon"), children: icon }),
1737
1767
  children,
1738
1768
  loading && /* @__PURE__ */ jsx14("div", { className: getClassName9("spinner"), children: /* @__PURE__ */ jsx14(Loader, { size: 14 }) })
1739
1769
  ]
1740
- }
1770
+ })
1741
1771
  );
1742
1772
  return el;
1743
1773
  };
@@ -3150,9 +3180,9 @@ function DropZone(props) {
3150
3180
  // components/Puck/index.tsx
3151
3181
  init_react_import();
3152
3182
  import {
3153
- useCallback as useCallback11,
3154
- useEffect as useEffect18,
3155
- useMemo as useMemo16,
3183
+ useCallback as useCallback12,
3184
+ useEffect as useEffect19,
3185
+ useMemo as useMemo17,
3156
3186
  useReducer,
3157
3187
  useState as useState21
3158
3188
  } from "react";
@@ -3766,33 +3796,58 @@ init_react_import();
3766
3796
  var styles_module_default16 = { "PuckFields": "_PuckFields_jp3lw_1", "PuckFields--isLoading": "_PuckFields--isLoading_jp3lw_6", "PuckFields-loadingOverlay": "_PuckFields-loadingOverlay_jp3lw_10", "PuckFields-loadingOverlayInner": "_PuckFields-loadingOverlayInner_jp3lw_25" };
3767
3797
 
3768
3798
  // components/Puck/components/Fields/index.tsx
3769
- import { useCallback as useCallback7, useEffect as useEffect13, useMemo as useMemo9, useState as useState15 } from "react";
3799
+ import { useMemo as useMemo10 } from "react";
3800
+
3801
+ // lib/use-resolved-fields.ts
3802
+ init_react_import();
3803
+ import { useCallback as useCallback8, useEffect as useEffect14, useMemo as useMemo9, useRef as useRef3, useState as useState15 } from "react";
3770
3804
 
3771
3805
  // lib/use-parent.ts
3772
3806
  init_react_import();
3773
- import { useContext as useContext7 } from "react";
3774
- var useParent = (itemSelector) => {
3807
+ import { useCallback as useCallback7, useContext as useContext7 } from "react";
3808
+ var getParent = (itemSelector, pathData, data) => {
3775
3809
  var _a;
3776
- const { selectedItem, state } = useAppContext();
3777
- const { pathData } = useContext7(dropZoneContext) || {};
3778
- const item = itemSelector ? getItem(itemSelector, state.data) : selectedItem;
3779
- const breadcrumbs = convertPathDataToBreadcrumbs(item, pathData, state.data);
3810
+ if (!itemSelector) return null;
3811
+ const item = getItem(itemSelector, data);
3812
+ const breadcrumbs = convertPathDataToBreadcrumbs(item, pathData, data);
3780
3813
  const lastItem = breadcrumbs[breadcrumbs.length - 1];
3781
- const parent = (lastItem == null ? void 0 : lastItem.selector) ? (_a = getItem(lastItem.selector, state.data)) != null ? _a : null : null;
3814
+ const parent = (lastItem == null ? void 0 : lastItem.selector) ? (_a = getItem(lastItem.selector, data)) != null ? _a : null : null;
3782
3815
  return parent || null;
3783
3816
  };
3817
+ var useGetParent = () => {
3818
+ const { state } = useAppContext();
3819
+ const { pathData } = useContext7(dropZoneContext) || {};
3820
+ return useCallback7(
3821
+ () => getParent(state.ui.itemSelector, pathData, state.data),
3822
+ [state.ui.itemSelector, pathData, state.data]
3823
+ );
3824
+ };
3825
+ var useParent = () => {
3826
+ return useGetParent()();
3827
+ };
3784
3828
 
3785
- // components/Puck/components/Fields/index.tsx
3786
- import { Fragment as Fragment12, jsx as jsx28, jsxs as jsxs15 } from "react/jsx-runtime";
3787
- var getClassName21 = get_class_name_factory_default("PuckFields", styles_module_default16);
3829
+ // lib/use-on-value-change.ts
3830
+ init_react_import();
3831
+ import { useRef as useRef2, useEffect as useEffect13 } from "react";
3832
+ function useOnValueChange(value, onChange, compare = Object.is, deps = []) {
3833
+ const tracked = useRef2(value);
3834
+ useEffect13(() => {
3835
+ const oldValue = tracked.current;
3836
+ if (!compare(value, oldValue)) {
3837
+ tracked.current = value;
3838
+ onChange(value, oldValue);
3839
+ }
3840
+ }, [onChange, compare, value, ...deps]);
3841
+ }
3842
+
3843
+ // lib/selector-is.ts
3844
+ init_react_import();
3845
+ var selectorIs = (a, b) => (a == null ? void 0 : a.zone) === (b == null ? void 0 : b.zone) && (a == null ? void 0 : a.index) === (b == null ? void 0 : b.index);
3846
+
3847
+ // lib/use-resolved-fields.ts
3788
3848
  var defaultPageFields = {
3789
3849
  title: { type: "text" }
3790
3850
  };
3791
- var DefaultFields = ({
3792
- children
3793
- }) => {
3794
- return /* @__PURE__ */ jsx28(Fragment12, { children });
3795
- };
3796
3851
  var useResolvedFields = () => {
3797
3852
  var _a, _b;
3798
3853
  const { selectedItem, state, config } = useAppContext();
@@ -3808,12 +3863,13 @@ var useResolvedFields = () => {
3808
3863
  const [lastSelectedData, setLastSelectedData] = useState15({});
3809
3864
  const [resolvedFields, setResolvedFields] = useState15(defaultFields);
3810
3865
  const [fieldsLoading, setFieldsLoading] = useState15(false);
3866
+ const lastFields = useRef3(defaultFields);
3811
3867
  const defaultResolveFields = (_componentData, _params) => defaultFields;
3812
3868
  const componentData = selectedItem ? selectedItem : { props: rootProps, readOnly: data.root.readOnly };
3813
3869
  const hasComponentResolver = selectedItem && (componentConfig == null ? void 0 : componentConfig.resolveFields);
3814
3870
  const hasRootResolver = !selectedItem && ((_b = config.root) == null ? void 0 : _b.resolveFields);
3815
3871
  const hasResolver = hasComponentResolver || hasRootResolver;
3816
- const resolveFields = useCallback7(
3872
+ const resolveFields = useCallback8(
3817
3873
  (..._0) => __async(void 0, [..._0], function* (fields = {}) {
3818
3874
  var _a2;
3819
3875
  const lastData = ((_a2 = lastSelectedData.props) == null ? void 0 : _a2.id) === componentData.props.id ? lastSelectedData : null;
@@ -3825,7 +3881,7 @@ var useResolvedFields = () => {
3825
3881
  {
3826
3882
  changed,
3827
3883
  fields,
3828
- lastFields: resolvedFields,
3884
+ lastFields: lastFields.current,
3829
3885
  lastData,
3830
3886
  appState: state,
3831
3887
  parent
@@ -3836,7 +3892,7 @@ var useResolvedFields = () => {
3836
3892
  return yield config.root.resolveFields(componentData, {
3837
3893
  changed,
3838
3894
  fields,
3839
- lastFields: resolvedFields,
3895
+ lastFields: lastFields.current,
3840
3896
  lastData,
3841
3897
  appState: state,
3842
3898
  parent
@@ -3845,40 +3901,56 @@ var useResolvedFields = () => {
3845
3901
  return defaultResolveFields(componentData, {
3846
3902
  changed,
3847
3903
  fields,
3848
- lastFields: resolvedFields,
3904
+ lastFields: lastFields.current,
3849
3905
  lastData
3850
3906
  });
3851
3907
  }),
3852
- [data, config, componentData, selectedItem, resolvedFields, state, parent]
3908
+ [data, config, componentData, selectedItem, state, parent]
3853
3909
  );
3854
- const [hasParent, setHasParent] = useState15(false);
3855
- useEffect13(() => {
3856
- setHasParent(!!parent);
3857
- }, [parent]);
3858
- useEffect13(() => {
3910
+ const triggerResolver = useCallback8(() => {
3859
3911
  var _a2, _b2;
3860
- if (!((_a2 = state.ui.itemSelector) == null ? void 0 : _a2.zone) || ((_b2 = state.ui.itemSelector) == null ? void 0 : _b2.zone) === "default-zone" || hasParent) {
3912
+ if (!((_a2 = state.ui.itemSelector) == null ? void 0 : _a2.zone) || ((_b2 = state.ui.itemSelector) == null ? void 0 : _b2.zone) === "default-zone" || parent) {
3861
3913
  if (hasResolver) {
3862
3914
  setFieldsLoading(true);
3863
3915
  resolveFields(defaultFields).then((fields) => {
3864
3916
  setResolvedFields(fields || {});
3917
+ lastFields.current = fields;
3865
3918
  setFieldsLoading(false);
3866
3919
  });
3867
- } else {
3868
- setResolvedFields(defaultFields);
3920
+ return;
3869
3921
  }
3870
3922
  }
3871
- }, [
3872
- data,
3873
- defaultFields,
3923
+ setResolvedFields(defaultFields);
3924
+ }, [defaultFields, state.ui.itemSelector, hasResolver, parent]);
3925
+ useOnValueChange(
3874
3926
  state.ui.itemSelector,
3875
- selectedItem,
3876
- hasResolver,
3877
- hasParent
3878
- ]);
3927
+ () => {
3928
+ lastFields.current = defaultFields;
3929
+ },
3930
+ selectorIs
3931
+ );
3932
+ useOnValueChange(
3933
+ { data, parent, itemSelector: state.ui.itemSelector },
3934
+ () => {
3935
+ triggerResolver();
3936
+ },
3937
+ (a, b) => JSON.stringify(a) === JSON.stringify(b)
3938
+ );
3939
+ useEffect14(() => {
3940
+ triggerResolver();
3941
+ }, []);
3879
3942
  return [resolvedFields, fieldsLoading];
3880
3943
  };
3881
- var Fields = () => {
3944
+
3945
+ // components/Puck/components/Fields/index.tsx
3946
+ import { Fragment as Fragment12, jsx as jsx28, jsxs as jsxs15 } from "react/jsx-runtime";
3947
+ var getClassName21 = get_class_name_factory_default("PuckFields", styles_module_default16);
3948
+ var DefaultFields = ({
3949
+ children
3950
+ }) => {
3951
+ return /* @__PURE__ */ jsx28(Fragment12, { children });
3952
+ };
3953
+ var Fields = ({ wrapFields = true }) => {
3882
3954
  var _a, _b;
3883
3955
  const {
3884
3956
  selectedItem,
@@ -3896,7 +3968,7 @@ var Fields = () => {
3896
3968
  const componentResolving = selectedItem ? ((_a = componentState[selectedItem == null ? void 0 : selectedItem.props.id]) == null ? void 0 : _a.loadingCount) > 0 : ((_b = componentState["puck-root"]) == null ? void 0 : _b.loadingCount) > 0;
3897
3969
  const isLoading = fieldsResolving || componentResolving;
3898
3970
  const rootProps = data.root.props || data.root;
3899
- const Wrapper = useMemo9(() => overrides.fields || DefaultFields, [overrides]);
3971
+ const Wrapper = useMemo10(() => overrides.fields || DefaultFields, [overrides]);
3900
3972
  return /* @__PURE__ */ jsxs15(
3901
3973
  "form",
3902
3974
  {
@@ -4019,7 +4091,7 @@ init_react_import();
4019
4091
 
4020
4092
  // lib/use-component-list.tsx
4021
4093
  init_react_import();
4022
- import { useEffect as useEffect14, useState as useState16 } from "react";
4094
+ import { useEffect as useEffect15, useState as useState16 } from "react";
4023
4095
 
4024
4096
  // components/ComponentList/index.tsx
4025
4097
  init_react_import();
@@ -4098,7 +4170,7 @@ ComponentList.Item = ComponentListItem;
4098
4170
  import { jsx as jsx30 } from "react/jsx-runtime";
4099
4171
  var useComponentList = (config, ui) => {
4100
4172
  const [componentList, setComponentList] = useState16();
4101
- useEffect14(() => {
4173
+ useEffect15(() => {
4102
4174
  var _a, _b, _c;
4103
4175
  if (Object.keys(ui.componentList).length > 0) {
4104
4176
  const matchedComponents = [];
@@ -4167,26 +4239,26 @@ var useComponentList = (config, ui) => {
4167
4239
  };
4168
4240
 
4169
4241
  // components/Puck/components/Components/index.tsx
4170
- import { useMemo as useMemo10 } from "react";
4242
+ import { useMemo as useMemo11 } from "react";
4171
4243
  import { jsx as jsx31 } from "react/jsx-runtime";
4172
4244
  var Components = () => {
4173
4245
  const { config, state, overrides } = useAppContext();
4174
4246
  const componentList = useComponentList(config, state.ui);
4175
- const Wrapper = useMemo10(() => overrides.components || "div", [overrides]);
4247
+ const Wrapper = useMemo11(() => overrides.components || "div", [overrides]);
4176
4248
  return /* @__PURE__ */ jsx31(Wrapper, { children: componentList ? componentList : /* @__PURE__ */ jsx31(ComponentList, { id: "all" }) });
4177
4249
  };
4178
4250
 
4179
4251
  // components/Puck/components/Preview/index.tsx
4180
4252
  init_react_import();
4181
- import { useCallback as useCallback8, useMemo as useMemo11 } from "react";
4253
+ import { useCallback as useCallback9, useMemo as useMemo12 } from "react";
4182
4254
 
4183
4255
  // components/AutoFrame/index.tsx
4184
4256
  init_react_import();
4185
4257
  import {
4186
4258
  createContext as createContext5,
4187
4259
  useContext as useContext8,
4188
- useEffect as useEffect15,
4189
- useRef as useRef2,
4260
+ useEffect as useEffect16,
4261
+ useRef as useRef4,
4190
4262
  useState as useState17
4191
4263
  } from "react";
4192
4264
  import hash from "object-hash";
@@ -4234,7 +4306,7 @@ var CopyHostStyles = ({
4234
4306
  onStylesLoaded = () => null
4235
4307
  }) => {
4236
4308
  const { document: doc, window: win } = useFrame();
4237
- useEffect15(() => {
4309
+ useEffect16(() => {
4238
4310
  if (!win || !doc) {
4239
4311
  return () => {
4240
4312
  };
@@ -4411,9 +4483,9 @@ function AutoFrame(_a) {
4411
4483
  ]);
4412
4484
  const [loaded, setLoaded] = useState17(false);
4413
4485
  const [ctx, setCtx] = useState17({});
4414
- const ref = useRef2(null);
4486
+ const ref = useRef4(null);
4415
4487
  const [mountTarget, setMountTarget] = useState17();
4416
- useEffect15(() => {
4488
+ useEffect16(() => {
4417
4489
  var _a2;
4418
4490
  if (ref.current) {
4419
4491
  setCtx({
@@ -4449,7 +4521,7 @@ import { Fragment as Fragment14, jsx as jsx33 } from "react/jsx-runtime";
4449
4521
  var getClassName23 = get_class_name_factory_default("PuckPreview", styles_module_default18);
4450
4522
  var Preview = ({ id = "puck-preview" }) => {
4451
4523
  const { config, dispatch, state, setStatus, iframe, overrides } = useAppContext();
4452
- const Page = useCallback8(
4524
+ const Page = useCallback9(
4453
4525
  (pageProps) => {
4454
4526
  var _a, _b;
4455
4527
  return ((_a = config.root) == null ? void 0 : _a.render) ? (_b = config.root) == null ? void 0 : _b.render(__spreadValues({
@@ -4458,7 +4530,7 @@ var Preview = ({ id = "puck-preview" }) => {
4458
4530
  },
4459
4531
  [config.root]
4460
4532
  );
4461
- const Frame = useMemo11(() => overrides.iframe, [overrides]);
4533
+ const Frame = useMemo12(() => overrides.iframe, [overrides]);
4462
4534
  const rootProps = state.data.root.props || state.data.root;
4463
4535
  return /* @__PURE__ */ jsx33(
4464
4536
  "div",
@@ -4680,13 +4752,13 @@ var LayerTree = ({
4680
4752
  };
4681
4753
 
4682
4754
  // components/Puck/components/Outline/index.tsx
4683
- import { useCallback as useCallback9, useMemo as useMemo12 } from "react";
4755
+ import { useCallback as useCallback10, useMemo as useMemo13 } from "react";
4684
4756
  import { Fragment as Fragment16, jsx as jsx35, jsxs as jsxs18 } from "react/jsx-runtime";
4685
4757
  var Outline = () => {
4686
4758
  const { dispatch, state, overrides, config } = useAppContext();
4687
4759
  const { data, ui } = state;
4688
4760
  const { itemSelector } = ui;
4689
- const setItemSelector = useCallback9(
4761
+ const setItemSelector = useCallback10(
4690
4762
  (newItemSelector) => {
4691
4763
  dispatch({
4692
4764
  type: "setUi",
@@ -4695,7 +4767,7 @@ var Outline = () => {
4695
4767
  },
4696
4768
  []
4697
4769
  );
4698
- const Wrapper = useMemo12(() => overrides.outline || "div", [overrides]);
4770
+ const Wrapper = useMemo13(() => overrides.outline || "div", [overrides]);
4699
4771
  return /* @__PURE__ */ jsx35(Wrapper, { children: /* @__PURE__ */ jsx35(dropZoneContext.Consumer, { children: (ctx) => /* @__PURE__ */ jsxs18(Fragment16, { children: [
4700
4772
  (ctx == null ? void 0 : ctx.activeZones) && (ctx == null ? void 0 : ctx.activeZones[rootDroppableId]) && /* @__PURE__ */ jsx35(
4701
4773
  LayerTree,
@@ -4982,16 +5054,16 @@ var getBox = function getBox2(el) {
4982
5054
 
4983
5055
  // components/Puck/components/Canvas/index.tsx
4984
5056
  import {
4985
- useCallback as useCallback10,
4986
- useEffect as useEffect17,
4987
- useMemo as useMemo14,
4988
- useRef as useRef3,
5057
+ useCallback as useCallback11,
5058
+ useEffect as useEffect18,
5059
+ useMemo as useMemo15,
5060
+ useRef as useRef5,
4989
5061
  useState as useState20
4990
5062
  } from "react";
4991
5063
 
4992
5064
  // components/ViewportControls/index.tsx
4993
5065
  init_react_import();
4994
- import { useEffect as useEffect16, useMemo as useMemo13, useState as useState19 } from "react";
5066
+ import { useEffect as useEffect17, useMemo as useMemo14, useState as useState19 } from "react";
4995
5067
 
4996
5068
  // css-module:/home/runner/work/puck/puck/packages/core/components/ViewportControls/styles.module.css#css-module
4997
5069
  init_react_import();
@@ -5015,7 +5087,7 @@ var ViewportButton = ({
5015
5087
  }) => {
5016
5088
  const { state } = useAppContext();
5017
5089
  const [isActive, setIsActive] = useState19(false);
5018
- useEffect16(() => {
5090
+ useEffect17(() => {
5019
5091
  setIsActive(width === state.ui.viewports.current.width);
5020
5092
  }, [width, state.ui.viewports.current.width]);
5021
5093
  return /* @__PURE__ */ jsx36("span", { className: getClassNameButton({ isActive }), children: /* @__PURE__ */ jsx36(
@@ -5051,7 +5123,7 @@ var ViewportControls = ({
5051
5123
  const defaultsContainAutoZoom = defaultZoomOptions.find(
5052
5124
  (option) => option.value === autoZoom
5053
5125
  );
5054
- const zoomOptions = useMemo13(
5126
+ const zoomOptions = useMemo14(
5055
5127
  () => [
5056
5128
  ...defaultZoomOptions,
5057
5129
  ...defaultsContainAutoZoom ? [] : [
@@ -5174,17 +5246,17 @@ var Canvas = () => {
5174
5246
  const { status, iframe } = useAppContext();
5175
5247
  const { dispatch, state, overrides, setUi, zoomConfig, setZoomConfig } = useAppContext();
5176
5248
  const { ui } = state;
5177
- const frameRef = useRef3(null);
5249
+ const frameRef = useRef5(null);
5178
5250
  const [showTransition, setShowTransition] = useState20(false);
5179
- const defaultRender = useMemo14(() => {
5251
+ const defaultRender = useMemo15(() => {
5180
5252
  const PuckDefault = ({ children }) => /* @__PURE__ */ jsx37(Fragment17, { children });
5181
5253
  return PuckDefault;
5182
5254
  }, []);
5183
- const CustomPreview = useMemo14(
5255
+ const CustomPreview = useMemo15(
5184
5256
  () => overrides.preview || defaultRender,
5185
5257
  [overrides]
5186
5258
  );
5187
- const getFrameDimensions = useCallback10(() => {
5259
+ const getFrameDimensions = useCallback11(() => {
5188
5260
  if (frameRef.current) {
5189
5261
  const frame = frameRef.current;
5190
5262
  const box = getBox(frame);
@@ -5192,7 +5264,7 @@ var Canvas = () => {
5192
5264
  }
5193
5265
  return { width: 0, height: 0 };
5194
5266
  }, [frameRef]);
5195
- const resetAutoZoom = useCallback10(
5267
+ const resetAutoZoom = useCallback11(
5196
5268
  (ui2 = state.ui) => {
5197
5269
  if (frameRef.current) {
5198
5270
  setZoomConfig(
@@ -5202,11 +5274,11 @@ var Canvas = () => {
5202
5274
  },
5203
5275
  [frameRef, zoomConfig, state.ui]
5204
5276
  );
5205
- useEffect17(() => {
5277
+ useEffect18(() => {
5206
5278
  setShowTransition(false);
5207
5279
  resetAutoZoom();
5208
5280
  }, [frameRef, ui.leftSideBarVisible, ui.rightSideBarVisible]);
5209
- useEffect17(() => {
5281
+ useEffect18(() => {
5210
5282
  const { height: frameHeight } = getFrameDimensions();
5211
5283
  if (ui.viewports.current.height === "auto") {
5212
5284
  setZoomConfig(__spreadProps(__spreadValues({}, zoomConfig), {
@@ -5214,13 +5286,13 @@ var Canvas = () => {
5214
5286
  }));
5215
5287
  }
5216
5288
  }, [zoomConfig.zoom]);
5217
- useEffect17(() => {
5289
+ useEffect18(() => {
5218
5290
  if (ZOOM_ON_CHANGE) {
5219
5291
  setShowTransition(true);
5220
5292
  resetAutoZoom(ui);
5221
5293
  }
5222
5294
  }, [ui.viewports.current.width]);
5223
- useEffect17(() => {
5295
+ useEffect18(() => {
5224
5296
  const observer = new ResizeObserver(() => {
5225
5297
  setShowTransition(false);
5226
5298
  resetAutoZoom();
@@ -5233,7 +5305,7 @@ var Canvas = () => {
5233
5305
  };
5234
5306
  }, []);
5235
5307
  const [showLoader, setShowLoader] = useState20(false);
5236
- useEffect17(() => {
5308
+ useEffect18(() => {
5237
5309
  setTimeout(() => {
5238
5310
  setShowLoader(true);
5239
5311
  }, 500);
@@ -5336,7 +5408,7 @@ var insertComponent = (componentType, zone, index, {
5336
5408
 
5337
5409
  // lib/use-loaded-overrides.ts
5338
5410
  init_react_import();
5339
- import { useMemo as useMemo15 } from "react";
5411
+ import { useMemo as useMemo16 } from "react";
5340
5412
 
5341
5413
  // lib/load-overrides.ts
5342
5414
  init_react_import();
@@ -5375,7 +5447,7 @@ var useLoadedOverrides = ({
5375
5447
  overrides,
5376
5448
  plugins
5377
5449
  }) => {
5378
- return useMemo15(() => {
5450
+ return useMemo16(() => {
5379
5451
  return loadOverrides({ overrides, plugins });
5380
5452
  }, [plugins, overrides]);
5381
5453
  };
@@ -5506,7 +5578,7 @@ function Puck({
5506
5578
  });
5507
5579
  const [menuOpen, setMenuOpen] = useState21(false);
5508
5580
  const { itemSelector, leftSideBarVisible, rightSideBarVisible } = ui;
5509
- const setItemSelector = useCallback11(
5581
+ const setItemSelector = useCallback12(
5510
5582
  (newItemSelector) => {
5511
5583
  if (newItemSelector === itemSelector) return;
5512
5584
  dispatch({
@@ -5518,13 +5590,13 @@ function Puck({
5518
5590
  [itemSelector]
5519
5591
  );
5520
5592
  const selectedItem = itemSelector ? getItem(itemSelector, data) : null;
5521
- useEffect18(() => {
5593
+ useEffect19(() => {
5522
5594
  if (onChange) onChange(data);
5523
5595
  }, [data]);
5524
5596
  const { onDragStartOrUpdate, placeholderStyle } = usePlaceholderStyle();
5525
5597
  const [draggedItem, setDraggedItem] = useState21();
5526
5598
  const rootProps = data.root.props || data.root;
5527
- const toggleSidebars = useCallback11(
5599
+ const toggleSidebars = useCallback12(
5528
5600
  (sidebar) => {
5529
5601
  const widerViewport = window.matchMedia("(min-width: 638px)").matches;
5530
5602
  const sideBarVisible = sidebar === "left" ? leftSideBarVisible : rightSideBarVisible;
@@ -5538,7 +5610,7 @@ function Puck({
5538
5610
  },
5539
5611
  [dispatch, leftSideBarVisible, rightSideBarVisible]
5540
5612
  );
5541
- useEffect18(() => {
5613
+ useEffect19(() => {
5542
5614
  if (!window.matchMedia("(min-width: 638px)").matches) {
5543
5615
  dispatch({
5544
5616
  type: "setUi",
@@ -5561,7 +5633,7 @@ function Puck({
5561
5633
  window.removeEventListener("resize", handleResize);
5562
5634
  };
5563
5635
  }, []);
5564
- const defaultHeaderRender = useMemo16(() => {
5636
+ const defaultHeaderRender = useMemo17(() => {
5565
5637
  if (renderHeader) {
5566
5638
  console.warn(
5567
5639
  "`renderHeader` is deprecated. Please use `overrides.header` and the `usePuck` hook instead"
@@ -5575,7 +5647,7 @@ function Puck({
5575
5647
  }
5576
5648
  return DefaultOverride;
5577
5649
  }, [renderHeader]);
5578
- const defaultHeaderActionsRender = useMemo16(() => {
5650
+ const defaultHeaderActionsRender = useMemo17(() => {
5579
5651
  if (renderHeaderActions) {
5580
5652
  console.warn(
5581
5653
  "`renderHeaderActions` is deprecated. Please use `overrides.headerActions` and the `usePuck` hook instead."
@@ -5592,20 +5664,20 @@ function Puck({
5592
5664
  overrides,
5593
5665
  plugins
5594
5666
  });
5595
- const CustomPuck = useMemo16(
5667
+ const CustomPuck = useMemo17(
5596
5668
  () => loadedOverrides.puck || DefaultOverride,
5597
5669
  [loadedOverrides]
5598
5670
  );
5599
- const CustomHeader = useMemo16(
5671
+ const CustomHeader = useMemo17(
5600
5672
  () => loadedOverrides.header || defaultHeaderRender,
5601
5673
  [loadedOverrides]
5602
5674
  );
5603
- const CustomHeaderActions = useMemo16(
5675
+ const CustomHeaderActions = useMemo17(
5604
5676
  () => loadedOverrides.headerActions || defaultHeaderActionsRender,
5605
5677
  [loadedOverrides]
5606
5678
  );
5607
5679
  const [mounted, setMounted] = useState21(false);
5608
- useEffect18(() => {
5680
+ useEffect19(() => {
5609
5681
  setMounted(true);
5610
5682
  }, []);
5611
5683
  const selectedComponentConfig = selectedItem && config.components[selectedItem.type];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@measured/puck",
3
- "version": "0.17.4-canary.e414e34",
3
+ "version": "0.17.4-canary.e778246",
4
4
  "author": "Measured Corporation Ltd <hello@measured.co>",
5
5
  "repository": "measuredco/puck",
6
6
  "bugs": "https://github.com/measuredco/puck/issues",