@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.js CHANGED
@@ -1736,12 +1736,13 @@ var DefaultField = ({
1736
1736
  field,
1737
1737
  onChange,
1738
1738
  readOnly,
1739
- value,
1739
+ value: _value,
1740
1740
  name,
1741
1741
  label,
1742
1742
  Label,
1743
1743
  id
1744
1744
  }) => {
1745
+ const value = _value;
1745
1746
  return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1746
1747
  Label,
1747
1748
  {
@@ -1759,7 +1760,7 @@ var DefaultField = ({
1759
1760
  type: field.type,
1760
1761
  title: label || name,
1761
1762
  name,
1762
- value: typeof value === "undefined" ? "" : value.toString(),
1763
+ value: (value == null ? void 0 : value.toString) ? value.toString() : "",
1763
1764
  onChange: (e) => {
1764
1765
  if (field.type === "number") {
1765
1766
  const numberValue = Number(e.currentTarget.value);
@@ -1868,29 +1869,57 @@ var import_react11 = require("react");
1868
1869
  init_react_import();
1869
1870
  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" };
1870
1871
 
1872
+ // lib/filter-data-attrs.ts
1873
+ init_react_import();
1874
+ var dataAttrRe = /^(data-.*)$/;
1875
+ var filterDataAttrs = (props) => {
1876
+ let filteredProps = {};
1877
+ for (const prop in props) {
1878
+ if (Object.prototype.hasOwnProperty.call(props, prop) && dataAttrRe.test(prop)) {
1879
+ filteredProps[prop] = props[prop];
1880
+ }
1881
+ }
1882
+ return filteredProps;
1883
+ };
1884
+
1871
1885
  // components/Button/Button.tsx
1872
1886
  var import_jsx_runtime14 = require("react/jsx-runtime");
1873
1887
  var getClassName9 = get_class_name_factory_default("Button", Button_module_default);
1874
- var Button = ({
1875
- children,
1876
- href,
1877
- onClick,
1878
- variant = "primary",
1879
- type,
1880
- disabled,
1881
- tabIndex,
1882
- newTab,
1883
- fullWidth,
1884
- icon,
1885
- size = "medium",
1886
- loading: loadingProp = false
1887
- }) => {
1888
+ var Button = (_a) => {
1889
+ var _b = _a, {
1890
+ children,
1891
+ href,
1892
+ onClick,
1893
+ variant = "primary",
1894
+ type,
1895
+ disabled,
1896
+ tabIndex,
1897
+ newTab,
1898
+ fullWidth,
1899
+ icon,
1900
+ size = "medium",
1901
+ loading: loadingProp = false
1902
+ } = _b, props = __objRest(_b, [
1903
+ "children",
1904
+ "href",
1905
+ "onClick",
1906
+ "variant",
1907
+ "type",
1908
+ "disabled",
1909
+ "tabIndex",
1910
+ "newTab",
1911
+ "fullWidth",
1912
+ "icon",
1913
+ "size",
1914
+ "loading"
1915
+ ]);
1888
1916
  const [loading, setLoading] = (0, import_react11.useState)(loadingProp);
1889
1917
  (0, import_react11.useEffect)(() => setLoading(loadingProp), [loadingProp]);
1890
1918
  const ElementType = href ? "a" : type ? "button" : "span";
1919
+ const dataAttrs = filterDataAttrs(props);
1891
1920
  const el = /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
1892
1921
  ElementType,
1893
- {
1922
+ __spreadProps(__spreadValues({
1894
1923
  className: getClassName9({
1895
1924
  primary: variant === "primary",
1896
1925
  secondary: variant === "secondary",
@@ -1910,13 +1939,14 @@ var Button = ({
1910
1939
  tabIndex,
1911
1940
  target: newTab ? "_blank" : void 0,
1912
1941
  rel: newTab ? "noreferrer" : void 0,
1913
- href,
1942
+ href
1943
+ }, dataAttrs), {
1914
1944
  children: [
1915
1945
  icon && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: getClassName9("icon"), children: icon }),
1916
1946
  children,
1917
1947
  loading && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: getClassName9("spinner"), children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Loader, { size: 14 }) })
1918
1948
  ]
1919
- }
1949
+ })
1920
1950
  );
1921
1951
  return el;
1922
1952
  };
@@ -3316,7 +3346,7 @@ function DropZone(props) {
3316
3346
 
3317
3347
  // components/Puck/index.tsx
3318
3348
  init_react_import();
3319
- var import_react37 = require("react");
3349
+ var import_react39 = require("react");
3320
3350
 
3321
3351
  // lib/use-placeholder-style.ts
3322
3352
  init_react_import();
@@ -3927,33 +3957,58 @@ init_react_import();
3927
3957
  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" };
3928
3958
 
3929
3959
  // components/Puck/components/Fields/index.tsx
3930
- var import_react26 = require("react");
3960
+ var import_react28 = require("react");
3961
+
3962
+ // lib/use-resolved-fields.ts
3963
+ init_react_import();
3964
+ var import_react27 = require("react");
3931
3965
 
3932
3966
  // lib/use-parent.ts
3933
3967
  init_react_import();
3934
3968
  var import_react25 = require("react");
3935
- var useParent = (itemSelector) => {
3969
+ var getParent = (itemSelector, pathData, data) => {
3936
3970
  var _a;
3937
- const { selectedItem, state } = useAppContext();
3938
- const { pathData } = (0, import_react25.useContext)(dropZoneContext) || {};
3939
- const item = itemSelector ? getItem(itemSelector, state.data) : selectedItem;
3940
- const breadcrumbs = convertPathDataToBreadcrumbs(item, pathData, state.data);
3971
+ if (!itemSelector) return null;
3972
+ const item = getItem(itemSelector, data);
3973
+ const breadcrumbs = convertPathDataToBreadcrumbs(item, pathData, data);
3941
3974
  const lastItem = breadcrumbs[breadcrumbs.length - 1];
3942
- const parent = (lastItem == null ? void 0 : lastItem.selector) ? (_a = getItem(lastItem.selector, state.data)) != null ? _a : null : null;
3975
+ const parent = (lastItem == null ? void 0 : lastItem.selector) ? (_a = getItem(lastItem.selector, data)) != null ? _a : null : null;
3943
3976
  return parent || null;
3944
3977
  };
3978
+ var useGetParent = () => {
3979
+ const { state } = useAppContext();
3980
+ const { pathData } = (0, import_react25.useContext)(dropZoneContext) || {};
3981
+ return (0, import_react25.useCallback)(
3982
+ () => getParent(state.ui.itemSelector, pathData, state.data),
3983
+ [state.ui.itemSelector, pathData, state.data]
3984
+ );
3985
+ };
3986
+ var useParent = () => {
3987
+ return useGetParent()();
3988
+ };
3945
3989
 
3946
- // components/Puck/components/Fields/index.tsx
3947
- var import_jsx_runtime28 = require("react/jsx-runtime");
3948
- var getClassName21 = get_class_name_factory_default("PuckFields", styles_module_default16);
3990
+ // lib/use-on-value-change.ts
3991
+ init_react_import();
3992
+ var import_react26 = require("react");
3993
+ function useOnValueChange(value, onChange, compare = Object.is, deps = []) {
3994
+ const tracked = (0, import_react26.useRef)(value);
3995
+ (0, import_react26.useEffect)(() => {
3996
+ const oldValue = tracked.current;
3997
+ if (!compare(value, oldValue)) {
3998
+ tracked.current = value;
3999
+ onChange(value, oldValue);
4000
+ }
4001
+ }, [onChange, compare, value, ...deps]);
4002
+ }
4003
+
4004
+ // lib/selector-is.ts
4005
+ init_react_import();
4006
+ 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);
4007
+
4008
+ // lib/use-resolved-fields.ts
3949
4009
  var defaultPageFields = {
3950
4010
  title: { type: "text" }
3951
4011
  };
3952
- var DefaultFields = ({
3953
- children
3954
- }) => {
3955
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_jsx_runtime28.Fragment, { children });
3956
- };
3957
4012
  var useResolvedFields = () => {
3958
4013
  var _a, _b;
3959
4014
  const { selectedItem, state, config } = useAppContext();
@@ -3961,20 +4016,21 @@ var useResolvedFields = () => {
3961
4016
  const { data } = state;
3962
4017
  const rootFields = ((_a = config.root) == null ? void 0 : _a.fields) || defaultPageFields;
3963
4018
  const componentConfig = selectedItem ? config.components[selectedItem.type] : null;
3964
- const defaultFields = (0, import_react26.useMemo)(
4019
+ const defaultFields = (0, import_react27.useMemo)(
3965
4020
  () => (selectedItem ? componentConfig == null ? void 0 : componentConfig.fields : rootFields) || {},
3966
4021
  [selectedItem, rootFields, componentConfig == null ? void 0 : componentConfig.fields]
3967
4022
  );
3968
4023
  const rootProps = data.root.props || data.root;
3969
- const [lastSelectedData, setLastSelectedData] = (0, import_react26.useState)({});
3970
- const [resolvedFields, setResolvedFields] = (0, import_react26.useState)(defaultFields);
3971
- const [fieldsLoading, setFieldsLoading] = (0, import_react26.useState)(false);
4024
+ const [lastSelectedData, setLastSelectedData] = (0, import_react27.useState)({});
4025
+ const [resolvedFields, setResolvedFields] = (0, import_react27.useState)(defaultFields);
4026
+ const [fieldsLoading, setFieldsLoading] = (0, import_react27.useState)(false);
4027
+ const lastFields = (0, import_react27.useRef)(defaultFields);
3972
4028
  const defaultResolveFields = (_componentData, _params) => defaultFields;
3973
4029
  const componentData = selectedItem ? selectedItem : { props: rootProps, readOnly: data.root.readOnly };
3974
4030
  const hasComponentResolver = selectedItem && (componentConfig == null ? void 0 : componentConfig.resolveFields);
3975
4031
  const hasRootResolver = !selectedItem && ((_b = config.root) == null ? void 0 : _b.resolveFields);
3976
4032
  const hasResolver = hasComponentResolver || hasRootResolver;
3977
- const resolveFields = (0, import_react26.useCallback)(
4033
+ const resolveFields = (0, import_react27.useCallback)(
3978
4034
  (..._0) => __async(void 0, [..._0], function* (fields = {}) {
3979
4035
  var _a2;
3980
4036
  const lastData = ((_a2 = lastSelectedData.props) == null ? void 0 : _a2.id) === componentData.props.id ? lastSelectedData : null;
@@ -3986,7 +4042,7 @@ var useResolvedFields = () => {
3986
4042
  {
3987
4043
  changed,
3988
4044
  fields,
3989
- lastFields: resolvedFields,
4045
+ lastFields: lastFields.current,
3990
4046
  lastData,
3991
4047
  appState: state,
3992
4048
  parent
@@ -3997,7 +4053,7 @@ var useResolvedFields = () => {
3997
4053
  return yield config.root.resolveFields(componentData, {
3998
4054
  changed,
3999
4055
  fields,
4000
- lastFields: resolvedFields,
4056
+ lastFields: lastFields.current,
4001
4057
  lastData,
4002
4058
  appState: state,
4003
4059
  parent
@@ -4006,40 +4062,56 @@ var useResolvedFields = () => {
4006
4062
  return defaultResolveFields(componentData, {
4007
4063
  changed,
4008
4064
  fields,
4009
- lastFields: resolvedFields,
4065
+ lastFields: lastFields.current,
4010
4066
  lastData
4011
4067
  });
4012
4068
  }),
4013
- [data, config, componentData, selectedItem, resolvedFields, state, parent]
4069
+ [data, config, componentData, selectedItem, state, parent]
4014
4070
  );
4015
- const [hasParent, setHasParent] = (0, import_react26.useState)(false);
4016
- (0, import_react26.useEffect)(() => {
4017
- setHasParent(!!parent);
4018
- }, [parent]);
4019
- (0, import_react26.useEffect)(() => {
4071
+ const triggerResolver = (0, import_react27.useCallback)(() => {
4020
4072
  var _a2, _b2;
4021
- if (!((_a2 = state.ui.itemSelector) == null ? void 0 : _a2.zone) || ((_b2 = state.ui.itemSelector) == null ? void 0 : _b2.zone) === "default-zone" || hasParent) {
4073
+ if (!((_a2 = state.ui.itemSelector) == null ? void 0 : _a2.zone) || ((_b2 = state.ui.itemSelector) == null ? void 0 : _b2.zone) === "default-zone" || parent) {
4022
4074
  if (hasResolver) {
4023
4075
  setFieldsLoading(true);
4024
4076
  resolveFields(defaultFields).then((fields) => {
4025
4077
  setResolvedFields(fields || {});
4078
+ lastFields.current = fields;
4026
4079
  setFieldsLoading(false);
4027
4080
  });
4028
- } else {
4029
- setResolvedFields(defaultFields);
4081
+ return;
4030
4082
  }
4031
4083
  }
4032
- }, [
4033
- data,
4034
- defaultFields,
4084
+ setResolvedFields(defaultFields);
4085
+ }, [defaultFields, state.ui.itemSelector, hasResolver, parent]);
4086
+ useOnValueChange(
4035
4087
  state.ui.itemSelector,
4036
- selectedItem,
4037
- hasResolver,
4038
- hasParent
4039
- ]);
4088
+ () => {
4089
+ lastFields.current = defaultFields;
4090
+ },
4091
+ selectorIs
4092
+ );
4093
+ useOnValueChange(
4094
+ { data, parent, itemSelector: state.ui.itemSelector },
4095
+ () => {
4096
+ triggerResolver();
4097
+ },
4098
+ (a, b) => JSON.stringify(a) === JSON.stringify(b)
4099
+ );
4100
+ (0, import_react27.useEffect)(() => {
4101
+ triggerResolver();
4102
+ }, []);
4040
4103
  return [resolvedFields, fieldsLoading];
4041
4104
  };
4042
- var Fields = () => {
4105
+
4106
+ // components/Puck/components/Fields/index.tsx
4107
+ var import_jsx_runtime28 = require("react/jsx-runtime");
4108
+ var getClassName21 = get_class_name_factory_default("PuckFields", styles_module_default16);
4109
+ var DefaultFields = ({
4110
+ children
4111
+ }) => {
4112
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_jsx_runtime28.Fragment, { children });
4113
+ };
4114
+ var Fields = ({ wrapFields = true }) => {
4043
4115
  var _a, _b;
4044
4116
  const {
4045
4117
  selectedItem,
@@ -4057,7 +4129,7 @@ var Fields = () => {
4057
4129
  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;
4058
4130
  const isLoading = fieldsResolving || componentResolving;
4059
4131
  const rootProps = data.root.props || data.root;
4060
- const Wrapper = (0, import_react26.useMemo)(() => overrides.fields || DefaultFields, [overrides]);
4132
+ const Wrapper = (0, import_react28.useMemo)(() => overrides.fields || DefaultFields, [overrides]);
4061
4133
  return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
4062
4134
  "form",
4063
4135
  {
@@ -4180,7 +4252,7 @@ init_react_import();
4180
4252
 
4181
4253
  // lib/use-component-list.tsx
4182
4254
  init_react_import();
4183
- var import_react27 = require("react");
4255
+ var import_react29 = require("react");
4184
4256
 
4185
4257
  // components/ComponentList/index.tsx
4186
4258
  init_react_import();
@@ -4258,8 +4330,8 @@ ComponentList.Item = ComponentListItem;
4258
4330
  // lib/use-component-list.tsx
4259
4331
  var import_jsx_runtime30 = require("react/jsx-runtime");
4260
4332
  var useComponentList = (config, ui) => {
4261
- const [componentList, setComponentList] = (0, import_react27.useState)();
4262
- (0, import_react27.useEffect)(() => {
4333
+ const [componentList, setComponentList] = (0, import_react29.useState)();
4334
+ (0, import_react29.useEffect)(() => {
4263
4335
  var _a, _b, _c;
4264
4336
  if (Object.keys(ui.componentList).length > 0) {
4265
4337
  const matchedComponents = [];
@@ -4328,22 +4400,22 @@ var useComponentList = (config, ui) => {
4328
4400
  };
4329
4401
 
4330
4402
  // components/Puck/components/Components/index.tsx
4331
- var import_react28 = require("react");
4403
+ var import_react30 = require("react");
4332
4404
  var import_jsx_runtime31 = require("react/jsx-runtime");
4333
4405
  var Components = () => {
4334
4406
  const { config, state, overrides } = useAppContext();
4335
4407
  const componentList = useComponentList(config, state.ui);
4336
- const Wrapper = (0, import_react28.useMemo)(() => overrides.components || "div", [overrides]);
4408
+ const Wrapper = (0, import_react30.useMemo)(() => overrides.components || "div", [overrides]);
4337
4409
  return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Wrapper, { children: componentList ? componentList : /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(ComponentList, { id: "all" }) });
4338
4410
  };
4339
4411
 
4340
4412
  // components/Puck/components/Preview/index.tsx
4341
4413
  init_react_import();
4342
- var import_react30 = require("react");
4414
+ var import_react32 = require("react");
4343
4415
 
4344
4416
  // components/AutoFrame/index.tsx
4345
4417
  init_react_import();
4346
- var import_react29 = require("react");
4418
+ var import_react31 = require("react");
4347
4419
  var import_object_hash = __toESM(require("object-hash"));
4348
4420
  var import_react_dom2 = require("react-dom");
4349
4421
  var import_jsx_runtime32 = require("react/jsx-runtime");
@@ -4389,7 +4461,7 @@ var CopyHostStyles = ({
4389
4461
  onStylesLoaded = () => null
4390
4462
  }) => {
4391
4463
  const { document: doc, window: win } = useFrame();
4392
- (0, import_react29.useEffect)(() => {
4464
+ (0, import_react31.useEffect)(() => {
4393
4465
  if (!win || !doc) {
4394
4466
  return () => {
4395
4467
  };
@@ -4548,8 +4620,8 @@ var CopyHostStyles = ({
4548
4620
  }, []);
4549
4621
  return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_jsx_runtime32.Fragment, { children });
4550
4622
  };
4551
- var autoFrameContext = (0, import_react29.createContext)({});
4552
- var useFrame = () => (0, import_react29.useContext)(autoFrameContext);
4623
+ var autoFrameContext = (0, import_react31.createContext)({});
4624
+ var useFrame = () => (0, import_react31.useContext)(autoFrameContext);
4553
4625
  function AutoFrame(_a) {
4554
4626
  var _b = _a, {
4555
4627
  children,
@@ -4564,11 +4636,11 @@ function AutoFrame(_a) {
4564
4636
  "id",
4565
4637
  "onStylesLoaded"
4566
4638
  ]);
4567
- const [loaded, setLoaded] = (0, import_react29.useState)(false);
4568
- const [ctx, setCtx] = (0, import_react29.useState)({});
4569
- const ref = (0, import_react29.useRef)(null);
4570
- const [mountTarget, setMountTarget] = (0, import_react29.useState)();
4571
- (0, import_react29.useEffect)(() => {
4639
+ const [loaded, setLoaded] = (0, import_react31.useState)(false);
4640
+ const [ctx, setCtx] = (0, import_react31.useState)({});
4641
+ const ref = (0, import_react31.useRef)(null);
4642
+ const [mountTarget, setMountTarget] = (0, import_react31.useState)();
4643
+ (0, import_react31.useEffect)(() => {
4572
4644
  var _a2;
4573
4645
  if (ref.current) {
4574
4646
  setCtx({
@@ -4604,7 +4676,7 @@ var import_jsx_runtime33 = require("react/jsx-runtime");
4604
4676
  var getClassName23 = get_class_name_factory_default("PuckPreview", styles_module_default18);
4605
4677
  var Preview = ({ id = "puck-preview" }) => {
4606
4678
  const { config, dispatch, state, setStatus, iframe, overrides } = useAppContext();
4607
- const Page = (0, import_react30.useCallback)(
4679
+ const Page = (0, import_react32.useCallback)(
4608
4680
  (pageProps) => {
4609
4681
  var _a, _b;
4610
4682
  return ((_a = config.root) == null ? void 0 : _a.render) ? (_b = config.root) == null ? void 0 : _b.render(__spreadValues({
@@ -4613,7 +4685,7 @@ var Preview = ({ id = "puck-preview" }) => {
4613
4685
  },
4614
4686
  [config.root]
4615
4687
  );
4616
- const Frame = (0, import_react30.useMemo)(() => overrides.iframe, [overrides]);
4688
+ const Frame = (0, import_react32.useMemo)(() => overrides.iframe, [overrides]);
4617
4689
  const rootProps = state.data.root.props || state.data.root;
4618
4690
  return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
4619
4691
  "div",
@@ -4702,7 +4774,7 @@ var scrollIntoView = (el) => {
4702
4774
  };
4703
4775
 
4704
4776
  // components/LayerTree/index.tsx
4705
- var import_react31 = require("react");
4777
+ var import_react33 = require("react");
4706
4778
 
4707
4779
  // lib/is-child-of-zone.ts
4708
4780
  init_react_import();
@@ -4729,7 +4801,7 @@ var LayerTree = ({
4729
4801
  label
4730
4802
  }) => {
4731
4803
  const zones = data.zones || {};
4732
- const ctx = (0, import_react31.useContext)(dropZoneContext);
4804
+ const ctx = (0, import_react33.useContext)(dropZoneContext);
4733
4805
  return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_jsx_runtime34.Fragment, { children: [
4734
4806
  label && /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: getClassName24("zoneTitle"), children: [
4735
4807
  /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: getClassName24("zoneIcon"), children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Layers, { size: "16" }) }),
@@ -4835,13 +4907,13 @@ var LayerTree = ({
4835
4907
  };
4836
4908
 
4837
4909
  // components/Puck/components/Outline/index.tsx
4838
- var import_react32 = require("react");
4910
+ var import_react34 = require("react");
4839
4911
  var import_jsx_runtime35 = require("react/jsx-runtime");
4840
4912
  var Outline = () => {
4841
4913
  const { dispatch, state, overrides, config } = useAppContext();
4842
4914
  const { data, ui } = state;
4843
4915
  const { itemSelector } = ui;
4844
- const setItemSelector = (0, import_react32.useCallback)(
4916
+ const setItemSelector = (0, import_react34.useCallback)(
4845
4917
  (newItemSelector) => {
4846
4918
  dispatch({
4847
4919
  type: "setUi",
@@ -4850,7 +4922,7 @@ var Outline = () => {
4850
4922
  },
4851
4923
  []
4852
4924
  );
4853
- const Wrapper = (0, import_react32.useMemo)(() => overrides.outline || "div", [overrides]);
4925
+ const Wrapper = (0, import_react34.useMemo)(() => overrides.outline || "div", [overrides]);
4854
4926
  return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Wrapper, { children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(dropZoneContext.Consumer, { children: (ctx) => /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_jsx_runtime35.Fragment, { children: [
4855
4927
  (ctx == null ? void 0 : ctx.activeZones) && (ctx == null ? void 0 : ctx.activeZones[rootDroppableId]) && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4856
4928
  LayerTree,
@@ -4964,19 +5036,19 @@ function usePuckHistory({
4964
5036
 
4965
5037
  // lib/use-history-store.ts
4966
5038
  init_react_import();
4967
- var import_react33 = require("react");
5039
+ var import_react35 = require("react");
4968
5040
  var import_use_debounce3 = require("use-debounce");
4969
5041
  var EMPTY_HISTORY_INDEX = 0;
4970
5042
  function useHistoryStore(initialHistory) {
4971
5043
  var _a, _b;
4972
- const [histories, setHistories] = (0, import_react33.useState)(
5044
+ const [histories, setHistories] = (0, import_react35.useState)(
4973
5045
  (_a = initialHistory == null ? void 0 : initialHistory.histories) != null ? _a : []
4974
5046
  );
4975
5047
  const updateHistories = (histories2) => {
4976
5048
  setHistories(histories2);
4977
5049
  setIndex(histories2.length - 1);
4978
5050
  };
4979
- const [index, setIndex] = (0, import_react33.useState)(
5051
+ const [index, setIndex] = (0, import_react35.useState)(
4980
5052
  (_b = initialHistory == null ? void 0 : initialHistory.index) != null ? _b : EMPTY_HISTORY_INDEX
4981
5053
  );
4982
5054
  const hasPast = index > EMPTY_HISTORY_INDEX;
@@ -5136,11 +5208,11 @@ var getBox = function getBox2(el) {
5136
5208
  };
5137
5209
 
5138
5210
  // components/Puck/components/Canvas/index.tsx
5139
- var import_react35 = require("react");
5211
+ var import_react37 = require("react");
5140
5212
 
5141
5213
  // components/ViewportControls/index.tsx
5142
5214
  init_react_import();
5143
- var import_react34 = require("react");
5215
+ var import_react36 = require("react");
5144
5216
 
5145
5217
  // css-module:/home/runner/work/puck/puck/packages/core/components/ViewportControls/styles.module.css#css-module
5146
5218
  init_react_import();
@@ -5163,8 +5235,8 @@ var ViewportButton = ({
5163
5235
  onClick
5164
5236
  }) => {
5165
5237
  const { state } = useAppContext();
5166
- const [isActive, setIsActive] = (0, import_react34.useState)(false);
5167
- (0, import_react34.useEffect)(() => {
5238
+ const [isActive, setIsActive] = (0, import_react36.useState)(false);
5239
+ (0, import_react36.useEffect)(() => {
5168
5240
  setIsActive(width === state.ui.viewports.current.width);
5169
5241
  }, [width, state.ui.viewports.current.width]);
5170
5242
  return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: getClassNameButton({ isActive }), children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
@@ -5200,7 +5272,7 @@ var ViewportControls = ({
5200
5272
  const defaultsContainAutoZoom = defaultZoomOptions.find(
5201
5273
  (option) => option.value === autoZoom
5202
5274
  );
5203
- const zoomOptions = (0, import_react34.useMemo)(
5275
+ const zoomOptions = (0, import_react36.useMemo)(
5204
5276
  () => [
5205
5277
  ...defaultZoomOptions,
5206
5278
  ...defaultsContainAutoZoom ? [] : [
@@ -5323,17 +5395,17 @@ var Canvas = () => {
5323
5395
  const { status, iframe } = useAppContext();
5324
5396
  const { dispatch, state, overrides, setUi, zoomConfig, setZoomConfig } = useAppContext();
5325
5397
  const { ui } = state;
5326
- const frameRef = (0, import_react35.useRef)(null);
5327
- const [showTransition, setShowTransition] = (0, import_react35.useState)(false);
5328
- const defaultRender = (0, import_react35.useMemo)(() => {
5398
+ const frameRef = (0, import_react37.useRef)(null);
5399
+ const [showTransition, setShowTransition] = (0, import_react37.useState)(false);
5400
+ const defaultRender = (0, import_react37.useMemo)(() => {
5329
5401
  const PuckDefault = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_jsx_runtime37.Fragment, { children });
5330
5402
  return PuckDefault;
5331
5403
  }, []);
5332
- const CustomPreview = (0, import_react35.useMemo)(
5404
+ const CustomPreview = (0, import_react37.useMemo)(
5333
5405
  () => overrides.preview || defaultRender,
5334
5406
  [overrides]
5335
5407
  );
5336
- const getFrameDimensions = (0, import_react35.useCallback)(() => {
5408
+ const getFrameDimensions = (0, import_react37.useCallback)(() => {
5337
5409
  if (frameRef.current) {
5338
5410
  const frame = frameRef.current;
5339
5411
  const box = getBox(frame);
@@ -5341,7 +5413,7 @@ var Canvas = () => {
5341
5413
  }
5342
5414
  return { width: 0, height: 0 };
5343
5415
  }, [frameRef]);
5344
- const resetAutoZoom = (0, import_react35.useCallback)(
5416
+ const resetAutoZoom = (0, import_react37.useCallback)(
5345
5417
  (ui2 = state.ui) => {
5346
5418
  if (frameRef.current) {
5347
5419
  setZoomConfig(
@@ -5351,11 +5423,11 @@ var Canvas = () => {
5351
5423
  },
5352
5424
  [frameRef, zoomConfig, state.ui]
5353
5425
  );
5354
- (0, import_react35.useEffect)(() => {
5426
+ (0, import_react37.useEffect)(() => {
5355
5427
  setShowTransition(false);
5356
5428
  resetAutoZoom();
5357
5429
  }, [frameRef, ui.leftSideBarVisible, ui.rightSideBarVisible]);
5358
- (0, import_react35.useEffect)(() => {
5430
+ (0, import_react37.useEffect)(() => {
5359
5431
  const { height: frameHeight } = getFrameDimensions();
5360
5432
  if (ui.viewports.current.height === "auto") {
5361
5433
  setZoomConfig(__spreadProps(__spreadValues({}, zoomConfig), {
@@ -5363,13 +5435,13 @@ var Canvas = () => {
5363
5435
  }));
5364
5436
  }
5365
5437
  }, [zoomConfig.zoom]);
5366
- (0, import_react35.useEffect)(() => {
5438
+ (0, import_react37.useEffect)(() => {
5367
5439
  if (ZOOM_ON_CHANGE) {
5368
5440
  setShowTransition(true);
5369
5441
  resetAutoZoom(ui);
5370
5442
  }
5371
5443
  }, [ui.viewports.current.width]);
5372
- (0, import_react35.useEffect)(() => {
5444
+ (0, import_react37.useEffect)(() => {
5373
5445
  const observer = new ResizeObserver(() => {
5374
5446
  setShowTransition(false);
5375
5447
  resetAutoZoom();
@@ -5381,8 +5453,8 @@ var Canvas = () => {
5381
5453
  observer.disconnect();
5382
5454
  };
5383
5455
  }, []);
5384
- const [showLoader, setShowLoader] = (0, import_react35.useState)(false);
5385
- (0, import_react35.useEffect)(() => {
5456
+ const [showLoader, setShowLoader] = (0, import_react37.useState)(false);
5457
+ (0, import_react37.useEffect)(() => {
5386
5458
  setTimeout(() => {
5387
5459
  setShowLoader(true);
5388
5460
  }, 500);
@@ -5485,7 +5557,7 @@ var insertComponent = (componentType, zone, index, {
5485
5557
 
5486
5558
  // lib/use-loaded-overrides.ts
5487
5559
  init_react_import();
5488
- var import_react36 = require("react");
5560
+ var import_react38 = require("react");
5489
5561
 
5490
5562
  // lib/load-overrides.ts
5491
5563
  init_react_import();
@@ -5524,7 +5596,7 @@ var useLoadedOverrides = ({
5524
5596
  overrides,
5525
5597
  plugins
5526
5598
  }) => {
5527
- return (0, import_react36.useMemo)(() => {
5599
+ return (0, import_react38.useMemo)(() => {
5528
5600
  return loadOverrides({ overrides, plugins });
5529
5601
  }, [plugins, overrides]);
5530
5602
  };
@@ -5563,7 +5635,7 @@ function Puck({
5563
5635
  enabled: true,
5564
5636
  waitForStyles: true
5565
5637
  }, _iframe);
5566
- const [generatedAppState] = (0, import_react37.useState)(() => {
5638
+ const [generatedAppState] = (0, import_react39.useState)(() => {
5567
5639
  var _a2, _b2, _c, _d, _e, _f, _g, _h, _i;
5568
5640
  const initial = __spreadValues(__spreadValues({}, defaultAppState.ui), initialUi);
5569
5641
  let clientUiState = {};
@@ -5635,14 +5707,14 @@ function Puck({
5635
5707
  histories,
5636
5708
  index: initialHistoryIndex
5637
5709
  });
5638
- const [reducer] = (0, import_react37.useState)(
5710
+ const [reducer] = (0, import_react39.useState)(
5639
5711
  () => createReducer({
5640
5712
  config,
5641
5713
  record: historyStore.record,
5642
5714
  onAction
5643
5715
  })
5644
5716
  );
5645
- const [appState, dispatch] = (0, import_react37.useReducer)(
5717
+ const [appState, dispatch] = (0, import_react39.useReducer)(
5646
5718
  reducer,
5647
5719
  flushZones(initialAppState)
5648
5720
  );
@@ -5653,9 +5725,9 @@ function Puck({
5653
5725
  historyStore,
5654
5726
  iframeEnabled: (_a = _iframe == null ? void 0 : _iframe.enabled) != null ? _a : true
5655
5727
  });
5656
- const [menuOpen, setMenuOpen] = (0, import_react37.useState)(false);
5728
+ const [menuOpen, setMenuOpen] = (0, import_react39.useState)(false);
5657
5729
  const { itemSelector, leftSideBarVisible, rightSideBarVisible } = ui;
5658
- const setItemSelector = (0, import_react37.useCallback)(
5730
+ const setItemSelector = (0, import_react39.useCallback)(
5659
5731
  (newItemSelector) => {
5660
5732
  if (newItemSelector === itemSelector) return;
5661
5733
  dispatch({
@@ -5667,13 +5739,13 @@ function Puck({
5667
5739
  [itemSelector]
5668
5740
  );
5669
5741
  const selectedItem = itemSelector ? getItem(itemSelector, data) : null;
5670
- (0, import_react37.useEffect)(() => {
5742
+ (0, import_react39.useEffect)(() => {
5671
5743
  if (onChange) onChange(data);
5672
5744
  }, [data]);
5673
5745
  const { onDragStartOrUpdate, placeholderStyle } = usePlaceholderStyle();
5674
- const [draggedItem, setDraggedItem] = (0, import_react37.useState)();
5746
+ const [draggedItem, setDraggedItem] = (0, import_react39.useState)();
5675
5747
  const rootProps = data.root.props || data.root;
5676
- const toggleSidebars = (0, import_react37.useCallback)(
5748
+ const toggleSidebars = (0, import_react39.useCallback)(
5677
5749
  (sidebar) => {
5678
5750
  const widerViewport = window.matchMedia("(min-width: 638px)").matches;
5679
5751
  const sideBarVisible = sidebar === "left" ? leftSideBarVisible : rightSideBarVisible;
@@ -5687,7 +5759,7 @@ function Puck({
5687
5759
  },
5688
5760
  [dispatch, leftSideBarVisible, rightSideBarVisible]
5689
5761
  );
5690
- (0, import_react37.useEffect)(() => {
5762
+ (0, import_react39.useEffect)(() => {
5691
5763
  if (!window.matchMedia("(min-width: 638px)").matches) {
5692
5764
  dispatch({
5693
5765
  type: "setUi",
@@ -5710,7 +5782,7 @@ function Puck({
5710
5782
  window.removeEventListener("resize", handleResize);
5711
5783
  };
5712
5784
  }, []);
5713
- const defaultHeaderRender = (0, import_react37.useMemo)(() => {
5785
+ const defaultHeaderRender = (0, import_react39.useMemo)(() => {
5714
5786
  if (renderHeader) {
5715
5787
  console.warn(
5716
5788
  "`renderHeader` is deprecated. Please use `overrides.header` and the `usePuck` hook instead"
@@ -5724,7 +5796,7 @@ function Puck({
5724
5796
  }
5725
5797
  return DefaultOverride;
5726
5798
  }, [renderHeader]);
5727
- const defaultHeaderActionsRender = (0, import_react37.useMemo)(() => {
5799
+ const defaultHeaderActionsRender = (0, import_react39.useMemo)(() => {
5728
5800
  if (renderHeaderActions) {
5729
5801
  console.warn(
5730
5802
  "`renderHeaderActions` is deprecated. Please use `overrides.headerActions` and the `usePuck` hook instead."
@@ -5741,20 +5813,20 @@ function Puck({
5741
5813
  overrides,
5742
5814
  plugins
5743
5815
  });
5744
- const CustomPuck = (0, import_react37.useMemo)(
5816
+ const CustomPuck = (0, import_react39.useMemo)(
5745
5817
  () => loadedOverrides.puck || DefaultOverride,
5746
5818
  [loadedOverrides]
5747
5819
  );
5748
- const CustomHeader = (0, import_react37.useMemo)(
5820
+ const CustomHeader = (0, import_react39.useMemo)(
5749
5821
  () => loadedOverrides.header || defaultHeaderRender,
5750
5822
  [loadedOverrides]
5751
5823
  );
5752
- const CustomHeaderActions = (0, import_react37.useMemo)(
5824
+ const CustomHeaderActions = (0, import_react39.useMemo)(
5753
5825
  () => loadedOverrides.headerActions || defaultHeaderActionsRender,
5754
5826
  [loadedOverrides]
5755
5827
  );
5756
- const [mounted, setMounted] = (0, import_react37.useState)(false);
5757
- (0, import_react37.useEffect)(() => {
5828
+ const [mounted, setMounted] = (0, import_react39.useState)(false);
5829
+ (0, import_react39.useEffect)(() => {
5758
5830
  setMounted(true);
5759
5831
  }, []);
5760
5832
  const selectedComponentConfig = selectedItem && config.components[selectedItem.type];