@measured/puck 0.18.0-canary.007a413 → 0.18.0-canary.057e23b

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
@@ -308,7 +308,7 @@ init_react_import();
308
308
 
309
309
  // css-module:/home/runner/work/puck/puck/packages/core/components/AutoField/styles.module.css#css-module
310
310
  init_react_import();
311
- var styles_module_default2 = { "InputWrapper": "_InputWrapper_1l5m8_1", "Input": "_Input_1l5m8_1", "Input-label": "_Input-label_1l5m8_26", "Input-labelIcon": "_Input-labelIcon_1l5m8_35", "Input-disabledIcon": "_Input-disabledIcon_1l5m8_42", "Input-input": "_Input-input_1l5m8_47", "Input--readOnly": "_Input--readOnly_1l5m8_91", "Input-radioGroupItems": "_Input-radioGroupItems_1l5m8_102", "Input-radio": "_Input-radio_1l5m8_102", "Input-radioInner": "_Input-radioInner_1l5m8_119", "Input-radioInput": "_Input-radioInput_1l5m8_164" };
311
+ var styles_module_default2 = { "InputWrapper": "_InputWrapper_1h1p1_1", "Input-label": "_Input-label_1h1p1_5", "Input-labelIcon": "_Input-labelIcon_1h1p1_14", "Input-disabledIcon": "_Input-disabledIcon_1h1p1_21", "Input-input": "_Input-input_1h1p1_26", "Input": "_Input_1h1p1_1", "Input--readOnly": "_Input--readOnly_1h1p1_70", "Input-radioGroupItems": "_Input-radioGroupItems_1h1p1_81", "Input-radio": "_Input-radio_1h1p1_81", "Input-radioInner": "_Input-radioInner_1h1p1_98", "Input-radioInput": "_Input-radioInput_1h1p1_143" };
312
312
 
313
313
  // components/AutoField/index.tsx
314
314
  var import_react20 = require("react");
@@ -3663,6 +3663,7 @@ var import_jsx_runtime22 = require("react/jsx-runtime");
3663
3663
  var getClassName17 = get_class_name_factory_default("DropZone", styles_module_default12);
3664
3664
  var getRandomColor = () => `#${Math.floor(Math.random() * 16777215).toString(16)}`;
3665
3665
  var RENDER_DEBUG = false;
3666
+ var DropZoneEditPure = (props) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(DropZoneEdit, __spreadValues({}, props));
3666
3667
  var DropZoneEdit = (0, import_react29.forwardRef)(
3667
3668
  function DropZoneEditInternal({
3668
3669
  zone,
@@ -3822,10 +3823,10 @@ var DropZoneEdit = (0, import_react29.forwardRef)(
3822
3823
  backgroundColor: RENDER_DEBUG ? getRandomColor() : void 0
3823
3824
  }),
3824
3825
  children: contentWithPreview.map((item, i) => {
3825
- var _a, _b, _c, _d, _e;
3826
+ var _a, _b, _c, _d, _e, _f, _g;
3826
3827
  const componentId = item.props.id;
3827
3828
  const puckProps = {
3828
- renderDropZone: (props) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(DropZoneEdit, __spreadValues({}, props)),
3829
+ renderDropZone: DropZoneEditPure,
3829
3830
  isEditing: true,
3830
3831
  dragRef: null
3831
3832
  };
@@ -3842,13 +3843,13 @@ var DropZoneEdit = (0, import_react29.forwardRef)(
3842
3843
  const componentConfig = config.components[item.type];
3843
3844
  let componentType = item.type;
3844
3845
  let label = (_b = componentConfig == null ? void 0 : componentConfig["label"]) != null ? _b : item.type.toString();
3845
- if (item.type === "preview" && preview) {
3846
+ if (item.type === "preview") {
3846
3847
  let Preview4 = function() {
3847
3848
  return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(DrawerItemInner, { name: label, children: appContext2.overrides.componentItem });
3848
3849
  };
3849
3850
  var Preview3 = Preview4;
3850
- componentType = preview.componentType;
3851
- label = (_d = (_c = config.components[componentType]) == null ? void 0 : _c.label) != null ? _d : preview.componentType;
3851
+ componentType = (_c = preview == null ? void 0 : preview.componentType) != null ? _c : "__preview";
3852
+ label = (_f = (_e = (_d = config.components[componentType]) == null ? void 0 : _d.label) != null ? _e : componentType) != null ? _f : "Preview";
3852
3853
  Render2 = Preview4;
3853
3854
  }
3854
3855
  return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
@@ -3863,7 +3864,7 @@ var DropZoneEdit = (0, import_react29.forwardRef)(
3863
3864
  zoneCompound,
3864
3865
  depth: depth + 1,
3865
3866
  index: i,
3866
- isLoading: ((_e = appContext2.componentState[componentId]) == null ? void 0 : _e.loadingCount) > 0,
3867
+ isLoading: ((_g = appContext2.componentState[componentId]) == null ? void 0 : _g.loadingCount) > 0,
3867
3868
  isSelected,
3868
3869
  label,
3869
3870
  isEnabled,
@@ -3888,6 +3889,7 @@ var DropZoneEdit = (0, import_react29.forwardRef)(
3888
3889
  );
3889
3890
  }
3890
3891
  );
3892
+ var DropZoneRenderPure = (props) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(DropZoneRender, __spreadValues({}, props));
3891
3893
  var DropZoneRender = (0, import_react29.forwardRef)(
3892
3894
  function DropZoneRenderInternal({ className, style, zone }, ref) {
3893
3895
  const ctx = (0, import_react29.useContext)(dropZoneContext);
@@ -3928,7 +3930,7 @@ var DropZoneRender = (0, import_react29.forwardRef)(
3928
3930
  Component.render,
3929
3931
  __spreadProps(__spreadValues({}, item.props), {
3930
3932
  puck: {
3931
- renderDropZone: (props) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(DropZoneRender, __spreadValues({}, props))
3933
+ renderDropZone: DropZoneRenderPure
3932
3934
  }
3933
3935
  })
3934
3936
  )
@@ -4505,6 +4507,11 @@ var reduceUi = (ui, action) => {
4505
4507
  itemSelector: { index: action.sourceIndex + 1, zone: action.sourceZone }
4506
4508
  });
4507
4509
  }
4510
+ if (action.type === "remove") {
4511
+ return __spreadProps(__spreadValues({}, ui), {
4512
+ itemSelector: null
4513
+ });
4514
+ }
4508
4515
  return ui;
4509
4516
  };
4510
4517
 
@@ -5401,7 +5408,7 @@ Drawer.Item = DrawerItem;
5401
5408
 
5402
5409
  // components/Puck/index.tsx
5403
5410
  init_react_import();
5404
- var import_react48 = require("react");
5411
+ var import_react50 = require("react");
5405
5412
 
5406
5413
  // components/SidebarSection/index.tsx
5407
5414
  init_react_import();
@@ -5594,36 +5601,61 @@ init_react_import();
5594
5601
 
5595
5602
  // css-module:/home/runner/work/puck/puck/packages/core/components/Puck/components/Fields/styles.module.css#css-module
5596
5603
  init_react_import();
5597
- 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" };
5604
+ var styles_module_default16 = { "PuckFields": "_PuckFields_10bh7_1", "PuckFields--isLoading": "_PuckFields--isLoading_10bh7_6", "PuckFields-loadingOverlay": "_PuckFields-loadingOverlay_10bh7_10", "PuckFields-loadingOverlayInner": "_PuckFields-loadingOverlayInner_10bh7_25", "PuckFields-field": "_PuckFields-field_10bh7_32", "PuckFields--wrapFields": "_PuckFields--wrapFields_10bh7_36" };
5598
5605
 
5599
5606
  // components/Puck/components/Fields/index.tsx
5600
- var import_react35 = require("react");
5607
+ var import_react37 = require("react");
5608
+
5609
+ // lib/use-resolved-fields.ts
5610
+ init_react_import();
5611
+ var import_react36 = require("react");
5601
5612
 
5602
5613
  // lib/use-parent.ts
5603
5614
  init_react_import();
5604
5615
  var import_react34 = require("react");
5605
- var useParent = (itemSelector) => {
5616
+ var getParent = (itemSelector, pathData, data) => {
5606
5617
  var _a;
5607
- const { selectedItem, state } = useAppContext();
5608
- const { pathData } = (0, import_react34.useContext)(dropZoneContext) || {};
5609
- const item = itemSelector ? getItem(itemSelector, state.data) : selectedItem;
5610
- const breadcrumbs = convertPathDataToBreadcrumbs(item, pathData, state.data);
5618
+ if (!itemSelector) return null;
5619
+ const item = getItem(itemSelector, data);
5620
+ const breadcrumbs = convertPathDataToBreadcrumbs(item, pathData, data);
5611
5621
  const lastItem = breadcrumbs[breadcrumbs.length - 1];
5612
- const parent = (lastItem == null ? void 0 : lastItem.selector) ? (_a = getItem(lastItem.selector, state.data)) != null ? _a : null : null;
5622
+ const parent = (lastItem == null ? void 0 : lastItem.selector) ? (_a = getItem(lastItem.selector, data)) != null ? _a : null : null;
5613
5623
  return parent || null;
5614
5624
  };
5625
+ var useGetParent = () => {
5626
+ const { state } = useAppContext();
5627
+ const { pathData } = (0, import_react34.useContext)(dropZoneContext) || {};
5628
+ return (0, import_react34.useCallback)(
5629
+ () => getParent(state.ui.itemSelector, pathData, state.data),
5630
+ [state.ui.itemSelector, pathData, state.data]
5631
+ );
5632
+ };
5633
+ var useParent = () => {
5634
+ return useGetParent()();
5635
+ };
5615
5636
 
5616
- // components/Puck/components/Fields/index.tsx
5617
- var import_jsx_runtime27 = require("react/jsx-runtime");
5618
- var getClassName21 = get_class_name_factory_default("PuckFields", styles_module_default16);
5637
+ // lib/use-on-value-change.ts
5638
+ init_react_import();
5639
+ var import_react35 = require("react");
5640
+ function useOnValueChange(value, onChange, compare = Object.is, deps = []) {
5641
+ const tracked = (0, import_react35.useRef)(value);
5642
+ (0, import_react35.useEffect)(() => {
5643
+ const oldValue = tracked.current;
5644
+ if (!compare(value, oldValue)) {
5645
+ tracked.current = value;
5646
+ onChange(value, oldValue);
5647
+ }
5648
+ }, [onChange, compare, value, ...deps]);
5649
+ }
5650
+
5651
+ // lib/selector-is.ts
5652
+ init_react_import();
5653
+ 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);
5654
+
5655
+ // lib/use-resolved-fields.ts
5619
5656
  var defaultPageFields = {
5620
5657
  title: { type: "text" }
5621
5658
  };
5622
- var DefaultFields = ({
5623
- children
5624
- }) => {
5625
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_jsx_runtime27.Fragment, { children });
5626
- };
5627
5659
  var useResolvedFields = () => {
5628
5660
  var _a, _b;
5629
5661
  const { selectedItem, state, config } = useAppContext();
@@ -5631,20 +5663,21 @@ var useResolvedFields = () => {
5631
5663
  const { data } = state;
5632
5664
  const rootFields = ((_a = config.root) == null ? void 0 : _a.fields) || defaultPageFields;
5633
5665
  const componentConfig = selectedItem ? config.components[selectedItem.type] : null;
5634
- const defaultFields = (0, import_react35.useMemo)(
5666
+ const defaultFields = (0, import_react36.useMemo)(
5635
5667
  () => (selectedItem ? componentConfig == null ? void 0 : componentConfig.fields : rootFields) || {},
5636
5668
  [selectedItem, rootFields, componentConfig == null ? void 0 : componentConfig.fields]
5637
5669
  );
5638
5670
  const rootProps = data.root.props || data.root;
5639
- const [lastSelectedData, setLastSelectedData] = (0, import_react35.useState)({});
5640
- const [resolvedFields, setResolvedFields] = (0, import_react35.useState)(defaultFields);
5641
- const [fieldsLoading, setFieldsLoading] = (0, import_react35.useState)(false);
5671
+ const [lastSelectedData, setLastSelectedData] = (0, import_react36.useState)({});
5672
+ const [resolvedFields, setResolvedFields] = (0, import_react36.useState)(defaultFields);
5673
+ const [fieldsLoading, setFieldsLoading] = (0, import_react36.useState)(false);
5674
+ const lastFields = (0, import_react36.useRef)(defaultFields);
5642
5675
  const defaultResolveFields = (_componentData, _params) => defaultFields;
5643
5676
  const componentData = selectedItem ? selectedItem : { props: rootProps, readOnly: data.root.readOnly };
5644
5677
  const hasComponentResolver = selectedItem && (componentConfig == null ? void 0 : componentConfig.resolveFields);
5645
5678
  const hasRootResolver = !selectedItem && ((_b = config.root) == null ? void 0 : _b.resolveFields);
5646
5679
  const hasResolver = hasComponentResolver || hasRootResolver;
5647
- const resolveFields = (0, import_react35.useCallback)(
5680
+ const resolveFields = (0, import_react36.useCallback)(
5648
5681
  (..._0) => __async(void 0, [..._0], function* (fields = {}) {
5649
5682
  var _a2;
5650
5683
  const lastData = ((_a2 = lastSelectedData.props) == null ? void 0 : _a2.id) === componentData.props.id ? lastSelectedData : null;
@@ -5656,7 +5689,7 @@ var useResolvedFields = () => {
5656
5689
  {
5657
5690
  changed,
5658
5691
  fields,
5659
- lastFields: resolvedFields,
5692
+ lastFields: lastFields.current,
5660
5693
  lastData,
5661
5694
  appState: state,
5662
5695
  parent
@@ -5667,7 +5700,7 @@ var useResolvedFields = () => {
5667
5700
  return yield config.root.resolveFields(componentData, {
5668
5701
  changed,
5669
5702
  fields,
5670
- lastFields: resolvedFields,
5703
+ lastFields: lastFields.current,
5671
5704
  lastData,
5672
5705
  appState: state,
5673
5706
  parent
@@ -5676,40 +5709,56 @@ var useResolvedFields = () => {
5676
5709
  return defaultResolveFields(componentData, {
5677
5710
  changed,
5678
5711
  fields,
5679
- lastFields: resolvedFields,
5712
+ lastFields: lastFields.current,
5680
5713
  lastData
5681
5714
  });
5682
5715
  }),
5683
- [data, config, componentData, selectedItem, resolvedFields, state, parent]
5716
+ [data, config, componentData, selectedItem, state, parent]
5684
5717
  );
5685
- const [hasParent, setHasParent] = (0, import_react35.useState)(false);
5686
- (0, import_react35.useEffect)(() => {
5687
- setHasParent(!!parent);
5688
- }, [parent]);
5689
- (0, import_react35.useEffect)(() => {
5690
- var _a2;
5691
- if (!((_a2 = state.ui.itemSelector) == null ? void 0 : _a2.zone) || hasParent) {
5718
+ const triggerResolver = (0, import_react36.useCallback)(() => {
5719
+ var _a2, _b2;
5720
+ if (!((_a2 = state.ui.itemSelector) == null ? void 0 : _a2.zone) || ((_b2 = state.ui.itemSelector) == null ? void 0 : _b2.zone) === "default-zone" || parent) {
5692
5721
  if (hasResolver) {
5693
5722
  setFieldsLoading(true);
5694
5723
  resolveFields(defaultFields).then((fields) => {
5695
5724
  setResolvedFields(fields || {});
5725
+ lastFields.current = fields;
5696
5726
  setFieldsLoading(false);
5697
5727
  });
5698
- } else {
5699
- setResolvedFields(defaultFields);
5728
+ return;
5700
5729
  }
5701
5730
  }
5702
- }, [
5703
- data,
5704
- defaultFields,
5731
+ setResolvedFields(defaultFields);
5732
+ }, [defaultFields, state.ui.itemSelector, hasResolver, parent]);
5733
+ useOnValueChange(
5705
5734
  state.ui.itemSelector,
5706
- selectedItem,
5707
- hasResolver,
5708
- hasParent
5709
- ]);
5735
+ () => {
5736
+ lastFields.current = defaultFields;
5737
+ },
5738
+ selectorIs
5739
+ );
5740
+ useOnValueChange(
5741
+ { data, parent, itemSelector: state.ui.itemSelector },
5742
+ () => {
5743
+ triggerResolver();
5744
+ },
5745
+ (a, b) => JSON.stringify(a) === JSON.stringify(b)
5746
+ );
5747
+ (0, import_react36.useEffect)(() => {
5748
+ triggerResolver();
5749
+ }, []);
5710
5750
  return [resolvedFields, fieldsLoading];
5711
5751
  };
5712
- var Fields = () => {
5752
+
5753
+ // components/Puck/components/Fields/index.tsx
5754
+ var import_jsx_runtime27 = require("react/jsx-runtime");
5755
+ var getClassName21 = get_class_name_factory_default("PuckFields", styles_module_default16);
5756
+ var DefaultFields = ({
5757
+ children
5758
+ }) => {
5759
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_jsx_runtime27.Fragment, { children });
5760
+ };
5761
+ var Fields = ({ wrapFields = true }) => {
5713
5762
  var _a, _b;
5714
5763
  const {
5715
5764
  selectedItem,
@@ -5727,11 +5776,11 @@ var Fields = () => {
5727
5776
  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;
5728
5777
  const isLoading = fieldsResolving || componentResolving;
5729
5778
  const rootProps = data.root.props || data.root;
5730
- const Wrapper = (0, import_react35.useMemo)(() => overrides.fields || DefaultFields, [overrides]);
5779
+ const Wrapper = (0, import_react37.useMemo)(() => overrides.fields || DefaultFields, [overrides]);
5731
5780
  return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
5732
5781
  "form",
5733
5782
  {
5734
- className: getClassName21(),
5783
+ className: getClassName21({ wrapFields }),
5735
5784
  onSubmit: (e) => {
5736
5785
  e.preventDefault();
5737
5786
  },
@@ -5807,7 +5856,7 @@ var Fields = () => {
5807
5856
  item: selectedItem
5808
5857
  });
5809
5858
  const id = `${selectedItem.props.id}_${field.type}_${fieldName}`;
5810
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
5859
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: getClassName21("field"), children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
5811
5860
  AutoFieldPrivate,
5812
5861
  {
5813
5862
  field,
@@ -5816,16 +5865,15 @@ var Fields = () => {
5816
5865
  readOnly: !edit || readOnly[fieldName],
5817
5866
  value: selectedItem.props[fieldName],
5818
5867
  onChange
5819
- },
5820
- id
5821
- );
5868
+ }
5869
+ ) }, id);
5822
5870
  } else {
5823
5871
  const readOnly = data.root.readOnly || {};
5824
5872
  const { edit } = getPermissions({
5825
5873
  root: true
5826
5874
  });
5827
5875
  const id = `root_${field.type}_${fieldName}`;
5828
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
5876
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: getClassName21("field"), children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
5829
5877
  AutoFieldPrivate,
5830
5878
  {
5831
5879
  field,
@@ -5834,9 +5882,8 @@ var Fields = () => {
5834
5882
  readOnly: !edit || readOnly[fieldName],
5835
5883
  value: rootProps[fieldName],
5836
5884
  onChange
5837
- },
5838
- id
5839
- );
5885
+ }
5886
+ ) }, id);
5840
5887
  }
5841
5888
  }) }),
5842
5889
  isLoading && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: getClassName21("loadingOverlay"), children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: getClassName21("loadingOverlayInner"), children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Loader, { size: 16 }) }) })
@@ -5850,7 +5897,7 @@ init_react_import();
5850
5897
 
5851
5898
  // lib/use-component-list.tsx
5852
5899
  init_react_import();
5853
- var import_react36 = require("react");
5900
+ var import_react38 = require("react");
5854
5901
 
5855
5902
  // components/ComponentList/index.tsx
5856
5903
  init_react_import();
@@ -5917,8 +5964,8 @@ ComponentList.Item = ComponentListItem;
5917
5964
  // lib/use-component-list.tsx
5918
5965
  var import_jsx_runtime29 = require("react/jsx-runtime");
5919
5966
  var useComponentList = (config, ui) => {
5920
- const [componentList, setComponentList] = (0, import_react36.useState)();
5921
- (0, import_react36.useEffect)(() => {
5967
+ const [componentList, setComponentList] = (0, import_react38.useState)();
5968
+ (0, import_react38.useEffect)(() => {
5922
5969
  var _a, _b, _c;
5923
5970
  if (Object.keys(ui.componentList).length > 0) {
5924
5971
  const matchedComponents = [];
@@ -5987,22 +6034,22 @@ var useComponentList = (config, ui) => {
5987
6034
  };
5988
6035
 
5989
6036
  // components/Puck/components/Components/index.tsx
5990
- var import_react37 = require("react");
6037
+ var import_react39 = require("react");
5991
6038
  var import_jsx_runtime30 = require("react/jsx-runtime");
5992
6039
  var Components = () => {
5993
6040
  const { config, state, overrides } = useAppContext();
5994
6041
  const componentList = useComponentList(config, state.ui);
5995
- const Wrapper = (0, import_react37.useMemo)(() => overrides.components || "div", [overrides]);
6042
+ const Wrapper = (0, import_react39.useMemo)(() => overrides.components || "div", [overrides]);
5996
6043
  return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Wrapper, { children: componentList ? componentList : /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(ComponentList, { id: "all" }) });
5997
6044
  };
5998
6045
 
5999
6046
  // components/Puck/components/Preview/index.tsx
6000
6047
  init_react_import();
6001
- var import_react39 = require("react");
6048
+ var import_react41 = require("react");
6002
6049
 
6003
6050
  // components/AutoFrame/index.tsx
6004
6051
  init_react_import();
6005
- var import_react38 = require("react");
6052
+ var import_react40 = require("react");
6006
6053
  var import_object_hash = __toESM(require("object-hash"));
6007
6054
  var import_react_dom3 = require("react-dom");
6008
6055
  var import_jsx_runtime31 = require("react/jsx-runtime");
@@ -6048,7 +6095,7 @@ var CopyHostStyles = ({
6048
6095
  onStylesLoaded = () => null
6049
6096
  }) => {
6050
6097
  const { document: doc, window: win } = useFrame();
6051
- (0, import_react38.useEffect)(() => {
6098
+ (0, import_react40.useEffect)(() => {
6052
6099
  if (!win || !doc) {
6053
6100
  return () => {
6054
6101
  };
@@ -6207,8 +6254,8 @@ var CopyHostStyles = ({
6207
6254
  }, []);
6208
6255
  return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_jsx_runtime31.Fragment, { children });
6209
6256
  };
6210
- var autoFrameContext = (0, import_react38.createContext)({});
6211
- var useFrame = () => (0, import_react38.useContext)(autoFrameContext);
6257
+ var autoFrameContext = (0, import_react40.createContext)({});
6258
+ var useFrame = () => (0, import_react40.useContext)(autoFrameContext);
6212
6259
  function AutoFrame(_a) {
6213
6260
  var _b = _a, {
6214
6261
  children,
@@ -6225,10 +6272,10 @@ function AutoFrame(_a) {
6225
6272
  "onStylesLoaded",
6226
6273
  "frameRef"
6227
6274
  ]);
6228
- const [loaded, setLoaded] = (0, import_react38.useState)(false);
6229
- const [ctx, setCtx] = (0, import_react38.useState)({});
6230
- const [mountTarget, setMountTarget] = (0, import_react38.useState)();
6231
- (0, import_react38.useEffect)(() => {
6275
+ const [loaded, setLoaded] = (0, import_react40.useState)(false);
6276
+ const [ctx, setCtx] = (0, import_react40.useState)({});
6277
+ const [mountTarget, setMountTarget] = (0, import_react40.useState)();
6278
+ (0, import_react40.useEffect)(() => {
6232
6279
  var _a2;
6233
6280
  if (frameRef.current) {
6234
6281
  setCtx({
@@ -6322,7 +6369,7 @@ var import_jsx_runtime33 = require("react/jsx-runtime");
6322
6369
  var getClassName23 = get_class_name_factory_default("PuckPreview", styles_module_default18);
6323
6370
  var useBubbleIframeEvents = (ref) => {
6324
6371
  const { status } = useAppContext();
6325
- (0, import_react39.useEffect)(() => {
6372
+ (0, import_react41.useEffect)(() => {
6326
6373
  var _a;
6327
6374
  if (ref.current && status === "READY") {
6328
6375
  const iframe = ref.current;
@@ -6361,7 +6408,7 @@ var useBubbleIframeEvents = (ref) => {
6361
6408
  };
6362
6409
  var Preview2 = ({ id = "puck-preview" }) => {
6363
6410
  const { config, dispatch, state, setStatus, iframe, overrides } = useAppContext();
6364
- const Page = (0, import_react39.useCallback)(
6411
+ const Page = (0, import_react41.useCallback)(
6365
6412
  (pageProps) => {
6366
6413
  var _a, _b;
6367
6414
  return ((_a = config.root) == null ? void 0 : _a.render) ? (_b = config.root) == null ? void 0 : _b.render(__spreadValues({
@@ -6370,9 +6417,9 @@ var Preview2 = ({ id = "puck-preview" }) => {
6370
6417
  },
6371
6418
  [config.root]
6372
6419
  );
6373
- const Frame = (0, import_react39.useMemo)(() => overrides.iframe, [overrides]);
6420
+ const Frame = (0, import_react41.useMemo)(() => overrides.iframe, [overrides]);
6374
6421
  const rootProps = state.data.root.props || state.data.root;
6375
- const ref = (0, import_react39.useRef)(null);
6422
+ const ref = (0, import_react41.useRef)(null);
6376
6423
  useBubbleIframeEvents(ref);
6377
6424
  const inner = state.ui.previewMode === "edit" ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
6378
6425
  Page,
@@ -6469,7 +6516,7 @@ var scrollIntoView = (el) => {
6469
6516
  };
6470
6517
 
6471
6518
  // components/LayerTree/index.tsx
6472
- var import_react40 = require("react");
6519
+ var import_react42 = require("react");
6473
6520
 
6474
6521
  // lib/is-child-of-zone.ts
6475
6522
  init_react_import();
@@ -6515,7 +6562,7 @@ var LayerTree = ({
6515
6562
  label
6516
6563
  }) => {
6517
6564
  const zones = data.zones || {};
6518
- const ctx = (0, import_react40.useContext)(dropZoneContext);
6565
+ const ctx = (0, import_react42.useContext)(dropZoneContext);
6519
6566
  return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_jsx_runtime34.Fragment, { children: [
6520
6567
  label && /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: getClassName24("zoneTitle"), children: [
6521
6568
  /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: getClassName24("zoneIcon"), children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Layers, { size: "16" }) }),
@@ -6622,13 +6669,13 @@ var LayerTree = ({
6622
6669
  };
6623
6670
 
6624
6671
  // components/Puck/components/Outline/index.tsx
6625
- var import_react41 = require("react");
6672
+ var import_react43 = require("react");
6626
6673
  var import_jsx_runtime35 = require("react/jsx-runtime");
6627
6674
  var Outline = () => {
6628
6675
  const { dispatch, state, overrides, config } = useAppContext();
6629
6676
  const { data, ui } = state;
6630
6677
  const { itemSelector } = ui;
6631
- const setItemSelector = (0, import_react41.useCallback)(
6678
+ const setItemSelector = (0, import_react43.useCallback)(
6632
6679
  (newItemSelector) => {
6633
6680
  dispatch({
6634
6681
  type: "setUi",
@@ -6637,7 +6684,7 @@ var Outline = () => {
6637
6684
  },
6638
6685
  []
6639
6686
  );
6640
- const Wrapper = (0, import_react41.useMemo)(() => overrides.outline || "div", [overrides]);
6687
+ const Wrapper = (0, import_react43.useMemo)(() => overrides.outline || "div", [overrides]);
6641
6688
  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: [
6642
6689
  (ctx == null ? void 0 : ctx.activeZones) && (ctx == null ? void 0 : ctx.activeZones[rootDroppableId]) && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
6643
6690
  LayerTree,
@@ -6751,19 +6798,19 @@ function usePuckHistory({
6751
6798
 
6752
6799
  // lib/use-history-store.ts
6753
6800
  init_react_import();
6754
- var import_react42 = require("react");
6801
+ var import_react44 = require("react");
6755
6802
  var import_use_debounce3 = require("use-debounce");
6756
6803
  var EMPTY_HISTORY_INDEX = 0;
6757
6804
  function useHistoryStore(initialHistory) {
6758
6805
  var _a, _b;
6759
- const [histories, setHistories] = (0, import_react42.useState)(
6806
+ const [histories, setHistories] = (0, import_react44.useState)(
6760
6807
  (_a = initialHistory == null ? void 0 : initialHistory.histories) != null ? _a : []
6761
6808
  );
6762
6809
  const updateHistories = (histories2) => {
6763
6810
  setHistories(histories2);
6764
6811
  setIndex(histories2.length - 1);
6765
6812
  };
6766
- const [index, setIndex] = (0, import_react42.useState)(
6813
+ const [index, setIndex] = (0, import_react44.useState)(
6767
6814
  (_b = initialHistory == null ? void 0 : initialHistory.index) != null ? _b : EMPTY_HISTORY_INDEX
6768
6815
  );
6769
6816
  const hasPast = index > EMPTY_HISTORY_INDEX;
@@ -6923,11 +6970,11 @@ var getBox = function getBox2(el) {
6923
6970
  };
6924
6971
 
6925
6972
  // components/Puck/components/Canvas/index.tsx
6926
- var import_react44 = require("react");
6973
+ var import_react46 = require("react");
6927
6974
 
6928
6975
  // components/ViewportControls/index.tsx
6929
6976
  init_react_import();
6930
- var import_react43 = require("react");
6977
+ var import_react45 = require("react");
6931
6978
 
6932
6979
  // css-module:/home/runner/work/puck/puck/packages/core/components/ViewportControls/styles.module.css#css-module
6933
6980
  init_react_import();
@@ -6950,8 +6997,8 @@ var ViewportButton = ({
6950
6997
  onClick
6951
6998
  }) => {
6952
6999
  const { state } = useAppContext();
6953
- const [isActive, setIsActive] = (0, import_react43.useState)(false);
6954
- (0, import_react43.useEffect)(() => {
7000
+ const [isActive, setIsActive] = (0, import_react45.useState)(false);
7001
+ (0, import_react45.useEffect)(() => {
6955
7002
  setIsActive(width === state.ui.viewports.current.width);
6956
7003
  }, [width, state.ui.viewports.current.width]);
6957
7004
  return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: getClassNameButton({ isActive }), children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
@@ -6987,7 +7034,7 @@ var ViewportControls = ({
6987
7034
  const defaultsContainAutoZoom = defaultZoomOptions.find(
6988
7035
  (option) => option.value === autoZoom
6989
7036
  );
6990
- const zoomOptions = (0, import_react43.useMemo)(
7037
+ const zoomOptions = (0, import_react45.useMemo)(
6991
7038
  () => [
6992
7039
  ...defaultZoomOptions,
6993
7040
  ...defaultsContainAutoZoom ? [] : [
@@ -7110,17 +7157,17 @@ var Canvas = () => {
7110
7157
  const { status, iframe } = useAppContext();
7111
7158
  const { dispatch, state, overrides, setUi, zoomConfig, setZoomConfig } = useAppContext();
7112
7159
  const { ui } = state;
7113
- const frameRef = (0, import_react44.useRef)(null);
7114
- const [showTransition, setShowTransition] = (0, import_react44.useState)(false);
7115
- const defaultRender = (0, import_react44.useMemo)(() => {
7160
+ const frameRef = (0, import_react46.useRef)(null);
7161
+ const [showTransition, setShowTransition] = (0, import_react46.useState)(false);
7162
+ const defaultRender = (0, import_react46.useMemo)(() => {
7116
7163
  const PuckDefault = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_jsx_runtime37.Fragment, { children });
7117
7164
  return PuckDefault;
7118
7165
  }, []);
7119
- const CustomPreview = (0, import_react44.useMemo)(
7166
+ const CustomPreview = (0, import_react46.useMemo)(
7120
7167
  () => overrides.preview || defaultRender,
7121
7168
  [overrides]
7122
7169
  );
7123
- const getFrameDimensions = (0, import_react44.useCallback)(() => {
7170
+ const getFrameDimensions = (0, import_react46.useCallback)(() => {
7124
7171
  if (frameRef.current) {
7125
7172
  const frame = frameRef.current;
7126
7173
  const box = getBox(frame);
@@ -7128,7 +7175,7 @@ var Canvas = () => {
7128
7175
  }
7129
7176
  return { width: 0, height: 0 };
7130
7177
  }, [frameRef]);
7131
- const resetAutoZoom = (0, import_react44.useCallback)(
7178
+ const resetAutoZoom = (0, import_react46.useCallback)(
7132
7179
  (ui2 = state.ui) => {
7133
7180
  if (frameRef.current) {
7134
7181
  setZoomConfig(
@@ -7138,11 +7185,11 @@ var Canvas = () => {
7138
7185
  },
7139
7186
  [frameRef, zoomConfig, state.ui]
7140
7187
  );
7141
- (0, import_react44.useEffect)(() => {
7188
+ (0, import_react46.useEffect)(() => {
7142
7189
  setShowTransition(false);
7143
7190
  resetAutoZoom();
7144
7191
  }, [frameRef, ui.leftSideBarVisible, ui.rightSideBarVisible]);
7145
- (0, import_react44.useEffect)(() => {
7192
+ (0, import_react46.useEffect)(() => {
7146
7193
  const { height: frameHeight } = getFrameDimensions();
7147
7194
  if (ui.viewports.current.height === "auto") {
7148
7195
  setZoomConfig(__spreadProps(__spreadValues({}, zoomConfig), {
@@ -7150,13 +7197,13 @@ var Canvas = () => {
7150
7197
  }));
7151
7198
  }
7152
7199
  }, [zoomConfig.zoom]);
7153
- (0, import_react44.useEffect)(() => {
7200
+ (0, import_react46.useEffect)(() => {
7154
7201
  if (ZOOM_ON_CHANGE) {
7155
7202
  setShowTransition(true);
7156
7203
  resetAutoZoom(ui);
7157
7204
  }
7158
7205
  }, [ui.viewports.current.width]);
7159
- (0, import_react44.useEffect)(() => {
7206
+ (0, import_react46.useEffect)(() => {
7160
7207
  const cb = () => {
7161
7208
  setShowTransition(false);
7162
7209
  resetAutoZoom();
@@ -7166,8 +7213,8 @@ var Canvas = () => {
7166
7213
  window.removeEventListener("resize", cb);
7167
7214
  };
7168
7215
  }, []);
7169
- const [showLoader, setShowLoader] = (0, import_react44.useState)(false);
7170
- (0, import_react44.useEffect)(() => {
7216
+ const [showLoader, setShowLoader] = (0, import_react46.useState)(false);
7217
+ (0, import_react46.useEffect)(() => {
7171
7218
  setTimeout(() => {
7172
7219
  setShowLoader(true);
7173
7220
  }, 500);
@@ -7245,7 +7292,7 @@ var Canvas = () => {
7245
7292
 
7246
7293
  // lib/use-loaded-overrides.ts
7247
7294
  init_react_import();
7248
- var import_react45 = require("react");
7295
+ var import_react47 = require("react");
7249
7296
 
7250
7297
  // lib/load-overrides.ts
7251
7298
  init_react_import();
@@ -7284,7 +7331,7 @@ var useLoadedOverrides = ({
7284
7331
  overrides,
7285
7332
  plugins
7286
7333
  }) => {
7287
- return (0, import_react45.useMemo)(() => {
7334
+ return (0, import_react47.useMemo)(() => {
7288
7335
  return loadOverrides({ overrides, plugins });
7289
7336
  }, [plugins, overrides]);
7290
7337
  };
@@ -7296,14 +7343,14 @@ var DefaultOverride = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime38
7296
7343
 
7297
7344
  // lib/use-inject-css.ts
7298
7345
  init_react_import();
7299
- var import_react46 = require("react");
7346
+ var import_react48 = require("react");
7300
7347
  var styles = ``;
7301
7348
  var useInjectStyleSheet = (initialStyles, iframeEnabled) => {
7302
- const [el, setEl] = (0, import_react46.useState)();
7303
- (0, import_react46.useEffect)(() => {
7349
+ const [el, setEl] = (0, import_react48.useState)();
7350
+ (0, import_react48.useEffect)(() => {
7304
7351
  setEl(document.createElement("style"));
7305
7352
  }, []);
7306
- (0, import_react46.useEffect)(() => {
7353
+ (0, import_react48.useEffect)(() => {
7307
7354
  var _a;
7308
7355
  if (!el || typeof window === "undefined") {
7309
7356
  return;
@@ -7323,10 +7370,10 @@ var useInjectGlobalCss = (iframeEnabled) => {
7323
7370
 
7324
7371
  // lib/use-preview-mode-hotkeys.ts
7325
7372
  init_react_import();
7326
- var import_react47 = require("react");
7373
+ var import_react49 = require("react");
7327
7374
  var import_react_hotkeys_hook2 = require("react-hotkeys-hook");
7328
7375
  var usePreviewModeHotkeys = (dispatch, iframeEnabled) => {
7329
- const toggleInteractive = (0, import_react47.useCallback)(() => {
7376
+ const toggleInteractive = (0, import_react49.useCallback)(() => {
7330
7377
  dispatch({
7331
7378
  type: "setUi",
7332
7379
  ui: (ui) => ({
@@ -7378,7 +7425,7 @@ function Puck({
7378
7425
  waitForStyles: true
7379
7426
  }, _iframe);
7380
7427
  useInjectGlobalCss(iframe.enabled);
7381
- const [generatedAppState] = (0, import_react48.useState)(() => {
7428
+ const [generatedAppState] = (0, import_react50.useState)(() => {
7382
7429
  var _a2, _b2, _c, _d, _e, _f, _g, _h, _i;
7383
7430
  const initial = __spreadValues(__spreadValues({}, defaultAppState.ui), initialUi);
7384
7431
  let clientUiState = {};
@@ -7450,14 +7497,14 @@ function Puck({
7450
7497
  histories,
7451
7498
  index: initialHistoryIndex
7452
7499
  });
7453
- const [reducer] = (0, import_react48.useState)(
7500
+ const [reducer] = (0, import_react50.useState)(
7454
7501
  () => createReducer({
7455
7502
  config,
7456
7503
  record: historyStore.record,
7457
7504
  onAction
7458
7505
  })
7459
7506
  );
7460
- const [appState, dispatch] = (0, import_react48.useReducer)(
7507
+ const [appState, dispatch] = (0, import_react50.useReducer)(
7461
7508
  reducer,
7462
7509
  flushZones(initialAppState)
7463
7510
  );
@@ -7468,14 +7515,14 @@ function Puck({
7468
7515
  historyStore,
7469
7516
  iframeEnabled: (_a = _iframe == null ? void 0 : _iframe.enabled) != null ? _a : true
7470
7517
  });
7471
- const [menuOpen, setMenuOpen] = (0, import_react48.useState)(false);
7518
+ const [menuOpen, setMenuOpen] = (0, import_react50.useState)(false);
7472
7519
  const { itemSelector, leftSideBarVisible, rightSideBarVisible } = ui;
7473
7520
  const selectedItem = itemSelector ? getItem(itemSelector, data) : null;
7474
- (0, import_react48.useEffect)(() => {
7521
+ (0, import_react50.useEffect)(() => {
7475
7522
  if (onChange) onChange(data);
7476
7523
  }, [data]);
7477
7524
  const rootProps = data.root.props || data.root;
7478
- const toggleSidebars = (0, import_react48.useCallback)(
7525
+ const toggleSidebars = (0, import_react50.useCallback)(
7479
7526
  (sidebar) => {
7480
7527
  const widerViewport = window.matchMedia("(min-width: 638px)").matches;
7481
7528
  const sideBarVisible = sidebar === "left" ? leftSideBarVisible : rightSideBarVisible;
@@ -7489,7 +7536,7 @@ function Puck({
7489
7536
  },
7490
7537
  [dispatch, leftSideBarVisible, rightSideBarVisible]
7491
7538
  );
7492
- (0, import_react48.useEffect)(() => {
7539
+ (0, import_react50.useEffect)(() => {
7493
7540
  if (!window.matchMedia("(min-width: 638px)").matches) {
7494
7541
  dispatch({
7495
7542
  type: "setUi",
@@ -7512,7 +7559,7 @@ function Puck({
7512
7559
  window.removeEventListener("resize", handleResize);
7513
7560
  };
7514
7561
  }, []);
7515
- const defaultHeaderRender = (0, import_react48.useMemo)(() => {
7562
+ const defaultHeaderRender = (0, import_react50.useMemo)(() => {
7516
7563
  if (renderHeader) {
7517
7564
  console.warn(
7518
7565
  "`renderHeader` is deprecated. Please use `overrides.header` and the `usePuck` hook instead"
@@ -7526,7 +7573,7 @@ function Puck({
7526
7573
  }
7527
7574
  return DefaultOverride;
7528
7575
  }, [renderHeader]);
7529
- const defaultHeaderActionsRender = (0, import_react48.useMemo)(() => {
7576
+ const defaultHeaderActionsRender = (0, import_react50.useMemo)(() => {
7530
7577
  if (renderHeaderActions) {
7531
7578
  console.warn(
7532
7579
  "`renderHeaderActions` is deprecated. Please use `overrides.headerActions` and the `usePuck` hook instead."
@@ -7543,20 +7590,20 @@ function Puck({
7543
7590
  overrides,
7544
7591
  plugins
7545
7592
  });
7546
- const CustomPuck = (0, import_react48.useMemo)(
7593
+ const CustomPuck = (0, import_react50.useMemo)(
7547
7594
  () => loadedOverrides.puck || DefaultOverride,
7548
7595
  [loadedOverrides]
7549
7596
  );
7550
- const CustomHeader = (0, import_react48.useMemo)(
7597
+ const CustomHeader = (0, import_react50.useMemo)(
7551
7598
  () => loadedOverrides.header || defaultHeaderRender,
7552
7599
  [loadedOverrides]
7553
7600
  );
7554
- const CustomHeaderActions = (0, import_react48.useMemo)(
7601
+ const CustomHeaderActions = (0, import_react50.useMemo)(
7555
7602
  () => loadedOverrides.headerActions || defaultHeaderActionsRender,
7556
7603
  [loadedOverrides]
7557
7604
  );
7558
- const [mounted, setMounted] = (0, import_react48.useState)(false);
7559
- (0, import_react48.useEffect)(() => {
7605
+ const [mounted, setMounted] = (0, import_react50.useState)(false);
7606
+ (0, import_react50.useEffect)(() => {
7560
7607
  setMounted(true);
7561
7608
  }, []);
7562
7609
  const selectedComponentConfig = selectedItem && config.components[selectedItem.type];