@measured/puck 0.18.0-canary.63b8b9a → 0.18.0-canary.97d25d4

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