@measured/puck 0.17.3 → 0.17.4-canary.5c60d6a

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