@measured/puck 0.18.0-canary.cfe4ca8 → 0.18.0-canary.d211707

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
@@ -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);
@@ -3255,13 +3256,19 @@ var DraggableComponent = ({
3255
3256
  }
3256
3257
  }, [ref.current]);
3257
3258
  (0, import_react23.useEffect)(() => {
3258
- if (isSelected) {
3259
- ctx == null ? void 0 : ctx.registerPath({
3259
+ ctx == null ? void 0 : ctx.registerPath(
3260
+ id,
3261
+ {
3260
3262
  index,
3261
3263
  zone: zoneCompound
3262
- });
3263
- }
3264
- }, [isSelected]);
3264
+ },
3265
+ componentType
3266
+ );
3267
+ return () => {
3268
+ var _a;
3269
+ (_a = ctx == null ? void 0 : ctx.unregisterPath) == null ? void 0 : _a.call(ctx, id);
3270
+ };
3271
+ }, [id, zoneCompound, index, componentType]);
3265
3272
  const CustomActionBar = (0, import_react23.useMemo)(
3266
3273
  () => overrides.actionBar || DefaultActionBar,
3267
3274
  [overrides.actionBar]
@@ -3581,9 +3588,20 @@ var useContentWithPreview = (content, zoneCompound) => {
3581
3588
  };
3582
3589
  }
3583
3590
  );
3591
+ const {
3592
+ state: {
3593
+ ui: { isDragging }
3594
+ }
3595
+ } = useAppContext();
3584
3596
  const [contentWithPreview, setContentWithPreview] = (0, import_react27.useState)(content);
3597
+ const [localPreview, setLocalPreview] = (0, import_react27.useState)(
3598
+ preview
3599
+ );
3585
3600
  const updateContent = useRenderedCallback(
3586
- (content2, preview2) => {
3601
+ (content2, preview2, isDragging2) => {
3602
+ if (isDragging2 && !previewExists) {
3603
+ return;
3604
+ }
3587
3605
  if (preview2) {
3588
3606
  if (preview2.type === "insert") {
3589
3607
  setContentWithPreview(
@@ -3613,13 +3631,14 @@ var useContentWithPreview = (content, zoneCompound) => {
3613
3631
  previewExists ? content2.filter((item) => item.props.id !== draggedItemId) : content2
3614
3632
  );
3615
3633
  }
3634
+ setLocalPreview(preview2);
3616
3635
  },
3617
3636
  [draggedItemId, previewExists]
3618
3637
  );
3619
3638
  (0, import_react27.useEffect)(() => {
3620
- updateContent(content, preview);
3621
- }, [content, preview]);
3622
- return contentWithPreview;
3639
+ updateContent(content, preview, isDragging);
3640
+ }, [content, preview, isDragging]);
3641
+ return [contentWithPreview, localPreview];
3623
3642
  };
3624
3643
 
3625
3644
  // components/DropZone/lib/use-drag-axis.ts
@@ -3699,8 +3718,7 @@ var DropZoneEdit = (0, import_react29.forwardRef)(
3699
3718
  isDeepestZone,
3700
3719
  inNextDeepestArea,
3701
3720
  draggedComponentType,
3702
- userIsDragging,
3703
- preview
3721
+ userIsDragging
3704
3722
  } = useContextStore(ZoneStoreContext, (s) => {
3705
3723
  var _a, _b, _c;
3706
3724
  return {
@@ -3708,8 +3726,7 @@ var DropZoneEdit = (0, import_react29.forwardRef)(
3708
3726
  inNextDeepestArea: s.nextAreaDepthIndex[areaId || ""],
3709
3727
  draggedItemId: (_b = s.draggedItem) == null ? void 0 : _b.id,
3710
3728
  draggedComponentType: (_c = s.draggedItem) == null ? void 0 : _c.data.componentType,
3711
- userIsDragging: !!s.draggedItem,
3712
- preview: s.previewIndex[zoneCompound]
3729
+ userIsDragging: !!s.draggedItem
3713
3730
  };
3714
3731
  });
3715
3732
  const { itemSelector } = appContext2.state.ui;
@@ -3775,7 +3792,10 @@ var DropZoneEdit = (0, import_react29.forwardRef)(
3775
3792
  if (isEnabled) {
3776
3793
  isEnabled = acceptsTarget(draggedComponentType);
3777
3794
  }
3778
- const contentWithPreview = useContentWithPreview(content, zoneCompound);
3795
+ const [contentWithPreview, preview] = useContentWithPreview(
3796
+ content,
3797
+ zoneCompound
3798
+ );
3779
3799
  const isDropEnabled = isEnabled && (preview ? contentWithPreview.length === 1 : contentWithPreview.length === 0);
3780
3800
  const droppableConfig = {
3781
3801
  id: zoneCompound,
@@ -3817,10 +3837,9 @@ var DropZoneEdit = (0, import_react29.forwardRef)(
3817
3837
  },
3818
3838
  "data-testid": `dropzone:${zoneCompound}`,
3819
3839
  "data-puck-dropzone": zoneCompound,
3820
- "data-puck-dnd": zoneCompound,
3821
3840
  style: __spreadProps(__spreadValues({}, style), {
3822
3841
  "--min-empty-height": `${minEmptyHeight}px`,
3823
- backgroundColor: RENDER_DEBUG ? getRandomColor() : void 0
3842
+ backgroundColor: RENDER_DEBUG ? getRandomColor() : style == null ? void 0 : style.backgroundColor
3824
3843
  }),
3825
3844
  children: contentWithPreview.map((item, i) => {
3826
3845
  var _a, _b, _c, _d, _e, _f, _g;
@@ -4099,6 +4118,13 @@ var getPointerCollisions = (position, manager) => {
4099
4118
  if (elements) {
4100
4119
  for (let i = 0; i < elements.length; i++) {
4101
4120
  const element = elements[i];
4121
+ const dropzoneId = element.getAttribute("data-puck-dropzone");
4122
+ if (dropzoneId) {
4123
+ const droppable = manager.registry.droppables.get(dropzoneId);
4124
+ if (droppable) {
4125
+ candidates.push(droppable);
4126
+ }
4127
+ }
4102
4128
  const id = element.getAttribute("data-puck-dnd");
4103
4129
  if (id) {
4104
4130
  const droppable = manager.registry.droppables.get(id);
@@ -5043,27 +5069,33 @@ var DragDropContextClient = ({
5043
5069
  const [pathData, setPathData] = (0, import_react31.useState)();
5044
5070
  const dragMode = (0, import_react31.useRef)(null);
5045
5071
  const registerPath = (0, import_react31.useCallback)(
5046
- (selector) => {
5047
- const item = getItem(selector, data);
5048
- if (!item) {
5049
- return;
5050
- }
5072
+ (id2, selector, label) => {
5051
5073
  const [area] = getZoneId(selector.zone);
5052
5074
  setPathData((latestPathData = {}) => {
5053
5075
  const parentPathData = latestPathData[area] || { path: [] };
5054
5076
  return __spreadProps(__spreadValues({}, latestPathData), {
5055
- [item.props.id]: {
5077
+ [id2]: {
5056
5078
  path: [
5057
5079
  ...parentPathData.path,
5058
5080
  ...selector.zone ? [selector.zone] : []
5059
5081
  ],
5060
- label: item.type
5082
+ label
5061
5083
  }
5062
5084
  });
5063
5085
  });
5064
5086
  },
5065
5087
  [data, setPathData]
5066
5088
  );
5089
+ const unregisterPath = (0, import_react31.useCallback)(
5090
+ (id2) => {
5091
+ setPathData((latestPathData = {}) => {
5092
+ const newPathData = __spreadValues({}, latestPathData);
5093
+ delete newPathData[id2];
5094
+ return newPathData;
5095
+ });
5096
+ },
5097
+ [data, setPathData]
5098
+ );
5067
5099
  const initialSelector = (0, import_react31.useRef)(void 0);
5068
5100
  return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { id, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
5069
5101
  dragListenerContext.Provider,
@@ -5260,6 +5292,7 @@ var DragDropContextClient = ({
5260
5292
  areaId: "root",
5261
5293
  depth: 0,
5262
5294
  registerPath,
5295
+ unregisterPath,
5263
5296
  pathData,
5264
5297
  path: []
5265
5298
  },
@@ -5408,7 +5441,7 @@ Drawer.Item = DrawerItem;
5408
5441
 
5409
5442
  // components/Puck/index.tsx
5410
5443
  init_react_import();
5411
- var import_react48 = require("react");
5444
+ var import_react50 = require("react");
5412
5445
 
5413
5446
  // components/SidebarSection/index.tsx
5414
5447
  init_react_import();
@@ -5604,33 +5637,58 @@ init_react_import();
5604
5637
  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" };
5605
5638
 
5606
5639
  // components/Puck/components/Fields/index.tsx
5607
- var import_react35 = require("react");
5640
+ var import_react37 = require("react");
5641
+
5642
+ // lib/use-resolved-fields.ts
5643
+ init_react_import();
5644
+ var import_react36 = require("react");
5608
5645
 
5609
5646
  // lib/use-parent.ts
5610
5647
  init_react_import();
5611
5648
  var import_react34 = require("react");
5612
- var useParent = (itemSelector) => {
5649
+ var getParent = (itemSelector, pathData, data) => {
5613
5650
  var _a;
5614
- const { selectedItem, state } = useAppContext();
5615
- const { pathData } = (0, import_react34.useContext)(dropZoneContext) || {};
5616
- const item = itemSelector ? getItem(itemSelector, state.data) : selectedItem;
5617
- const breadcrumbs = convertPathDataToBreadcrumbs(item, pathData, state.data);
5651
+ if (!itemSelector) return null;
5652
+ const item = getItem(itemSelector, data);
5653
+ const breadcrumbs = convertPathDataToBreadcrumbs(item, pathData, data);
5618
5654
  const lastItem = breadcrumbs[breadcrumbs.length - 1];
5619
- const parent = (lastItem == null ? void 0 : lastItem.selector) ? (_a = getItem(lastItem.selector, state.data)) != null ? _a : null : null;
5655
+ const parent = (lastItem == null ? void 0 : lastItem.selector) ? (_a = getItem(lastItem.selector, data)) != null ? _a : null : null;
5620
5656
  return parent || null;
5621
5657
  };
5658
+ var useGetParent = () => {
5659
+ const { state } = useAppContext();
5660
+ const { pathData } = (0, import_react34.useContext)(dropZoneContext) || {};
5661
+ return (0, import_react34.useCallback)(
5662
+ () => getParent(state.ui.itemSelector, pathData, state.data),
5663
+ [state.ui.itemSelector, pathData, state.data]
5664
+ );
5665
+ };
5666
+ var useParent = () => {
5667
+ return useGetParent()();
5668
+ };
5622
5669
 
5623
- // components/Puck/components/Fields/index.tsx
5624
- var import_jsx_runtime27 = require("react/jsx-runtime");
5625
- var getClassName21 = get_class_name_factory_default("PuckFields", styles_module_default16);
5670
+ // lib/use-on-value-change.ts
5671
+ init_react_import();
5672
+ var import_react35 = require("react");
5673
+ function useOnValueChange(value, onChange, compare = Object.is, deps = []) {
5674
+ const tracked = (0, import_react35.useRef)(value);
5675
+ (0, import_react35.useEffect)(() => {
5676
+ const oldValue = tracked.current;
5677
+ if (!compare(value, oldValue)) {
5678
+ tracked.current = value;
5679
+ onChange(value, oldValue);
5680
+ }
5681
+ }, [onChange, compare, value, ...deps]);
5682
+ }
5683
+
5684
+ // lib/selector-is.ts
5685
+ init_react_import();
5686
+ 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);
5687
+
5688
+ // lib/use-resolved-fields.ts
5626
5689
  var defaultPageFields = {
5627
5690
  title: { type: "text" }
5628
5691
  };
5629
- var DefaultFields = ({
5630
- children
5631
- }) => {
5632
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_jsx_runtime27.Fragment, { children });
5633
- };
5634
5692
  var useResolvedFields = () => {
5635
5693
  var _a, _b;
5636
5694
  const { selectedItem, state, config } = useAppContext();
@@ -5638,20 +5696,21 @@ var useResolvedFields = () => {
5638
5696
  const { data } = state;
5639
5697
  const rootFields = ((_a = config.root) == null ? void 0 : _a.fields) || defaultPageFields;
5640
5698
  const componentConfig = selectedItem ? config.components[selectedItem.type] : null;
5641
- const defaultFields = (0, import_react35.useMemo)(
5699
+ const defaultFields = (0, import_react36.useMemo)(
5642
5700
  () => (selectedItem ? componentConfig == null ? void 0 : componentConfig.fields : rootFields) || {},
5643
5701
  [selectedItem, rootFields, componentConfig == null ? void 0 : componentConfig.fields]
5644
5702
  );
5645
5703
  const rootProps = data.root.props || data.root;
5646
- const [lastSelectedData, setLastSelectedData] = (0, import_react35.useState)({});
5647
- const [resolvedFields, setResolvedFields] = (0, import_react35.useState)(defaultFields);
5648
- const [fieldsLoading, setFieldsLoading] = (0, import_react35.useState)(false);
5704
+ const [lastSelectedData, setLastSelectedData] = (0, import_react36.useState)({});
5705
+ const [resolvedFields, setResolvedFields] = (0, import_react36.useState)(defaultFields);
5706
+ const [fieldsLoading, setFieldsLoading] = (0, import_react36.useState)(false);
5707
+ const lastFields = (0, import_react36.useRef)(defaultFields);
5649
5708
  const defaultResolveFields = (_componentData, _params) => defaultFields;
5650
5709
  const componentData = selectedItem ? selectedItem : { props: rootProps, readOnly: data.root.readOnly };
5651
5710
  const hasComponentResolver = selectedItem && (componentConfig == null ? void 0 : componentConfig.resolveFields);
5652
5711
  const hasRootResolver = !selectedItem && ((_b = config.root) == null ? void 0 : _b.resolveFields);
5653
5712
  const hasResolver = hasComponentResolver || hasRootResolver;
5654
- const resolveFields = (0, import_react35.useCallback)(
5713
+ const resolveFields = (0, import_react36.useCallback)(
5655
5714
  (..._0) => __async(void 0, [..._0], function* (fields = {}) {
5656
5715
  var _a2;
5657
5716
  const lastData = ((_a2 = lastSelectedData.props) == null ? void 0 : _a2.id) === componentData.props.id ? lastSelectedData : null;
@@ -5663,7 +5722,7 @@ var useResolvedFields = () => {
5663
5722
  {
5664
5723
  changed,
5665
5724
  fields,
5666
- lastFields: resolvedFields,
5725
+ lastFields: lastFields.current,
5667
5726
  lastData,
5668
5727
  appState: state,
5669
5728
  parent
@@ -5674,7 +5733,7 @@ var useResolvedFields = () => {
5674
5733
  return yield config.root.resolveFields(componentData, {
5675
5734
  changed,
5676
5735
  fields,
5677
- lastFields: resolvedFields,
5736
+ lastFields: lastFields.current,
5678
5737
  lastData,
5679
5738
  appState: state,
5680
5739
  parent
@@ -5683,39 +5742,55 @@ var useResolvedFields = () => {
5683
5742
  return defaultResolveFields(componentData, {
5684
5743
  changed,
5685
5744
  fields,
5686
- lastFields: resolvedFields,
5745
+ lastFields: lastFields.current,
5687
5746
  lastData
5688
5747
  });
5689
5748
  }),
5690
- [data, config, componentData, selectedItem, resolvedFields, state, parent]
5749
+ [data, config, componentData, selectedItem, state, parent]
5691
5750
  );
5692
- const [hasParent, setHasParent] = (0, import_react35.useState)(false);
5693
- (0, import_react35.useEffect)(() => {
5694
- setHasParent(!!parent);
5695
- }, [parent]);
5696
- (0, import_react35.useEffect)(() => {
5751
+ const triggerResolver = (0, import_react36.useCallback)(() => {
5697
5752
  var _a2, _b2;
5698
- if (!((_a2 = state.ui.itemSelector) == null ? void 0 : _a2.zone) || ((_b2 = state.ui.itemSelector) == null ? void 0 : _b2.zone) === "default-zone" || hasParent) {
5753
+ if (!((_a2 = state.ui.itemSelector) == null ? void 0 : _a2.zone) || ((_b2 = state.ui.itemSelector) == null ? void 0 : _b2.zone) === "default-zone" || parent) {
5699
5754
  if (hasResolver) {
5700
5755
  setFieldsLoading(true);
5701
5756
  resolveFields(defaultFields).then((fields) => {
5702
5757
  setResolvedFields(fields || {});
5758
+ lastFields.current = fields;
5703
5759
  setFieldsLoading(false);
5704
5760
  });
5705
5761
  return;
5706
5762
  }
5707
5763
  }
5708
5764
  setResolvedFields(defaultFields);
5709
- }, [
5710
- data,
5711
- defaultFields,
5765
+ }, [defaultFields, state.ui.itemSelector, hasResolver, parent]);
5766
+ useOnValueChange(
5712
5767
  state.ui.itemSelector,
5713
- selectedItem,
5714
- hasResolver,
5715
- hasParent
5716
- ]);
5768
+ () => {
5769
+ lastFields.current = defaultFields;
5770
+ },
5771
+ selectorIs
5772
+ );
5773
+ useOnValueChange(
5774
+ { data, parent, itemSelector: state.ui.itemSelector },
5775
+ () => {
5776
+ triggerResolver();
5777
+ },
5778
+ (a, b) => JSON.stringify(a) === JSON.stringify(b)
5779
+ );
5780
+ (0, import_react36.useEffect)(() => {
5781
+ triggerResolver();
5782
+ }, []);
5717
5783
  return [resolvedFields, fieldsLoading];
5718
5784
  };
5785
+
5786
+ // components/Puck/components/Fields/index.tsx
5787
+ var import_jsx_runtime27 = require("react/jsx-runtime");
5788
+ var getClassName21 = get_class_name_factory_default("PuckFields", styles_module_default16);
5789
+ var DefaultFields = ({
5790
+ children
5791
+ }) => {
5792
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_jsx_runtime27.Fragment, { children });
5793
+ };
5719
5794
  var Fields = ({ wrapFields = true }) => {
5720
5795
  var _a, _b;
5721
5796
  const {
@@ -5734,7 +5809,7 @@ var Fields = ({ wrapFields = true }) => {
5734
5809
  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;
5735
5810
  const isLoading = fieldsResolving || componentResolving;
5736
5811
  const rootProps = data.root.props || data.root;
5737
- const Wrapper = (0, import_react35.useMemo)(() => overrides.fields || DefaultFields, [overrides]);
5812
+ const Wrapper = (0, import_react37.useMemo)(() => overrides.fields || DefaultFields, [overrides]);
5738
5813
  return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
5739
5814
  "form",
5740
5815
  {
@@ -5855,7 +5930,7 @@ init_react_import();
5855
5930
 
5856
5931
  // lib/use-component-list.tsx
5857
5932
  init_react_import();
5858
- var import_react36 = require("react");
5933
+ var import_react38 = require("react");
5859
5934
 
5860
5935
  // components/ComponentList/index.tsx
5861
5936
  init_react_import();
@@ -5922,8 +5997,8 @@ ComponentList.Item = ComponentListItem;
5922
5997
  // lib/use-component-list.tsx
5923
5998
  var import_jsx_runtime29 = require("react/jsx-runtime");
5924
5999
  var useComponentList = (config, ui) => {
5925
- const [componentList, setComponentList] = (0, import_react36.useState)();
5926
- (0, import_react36.useEffect)(() => {
6000
+ const [componentList, setComponentList] = (0, import_react38.useState)();
6001
+ (0, import_react38.useEffect)(() => {
5927
6002
  var _a, _b, _c;
5928
6003
  if (Object.keys(ui.componentList).length > 0) {
5929
6004
  const matchedComponents = [];
@@ -5992,22 +6067,22 @@ var useComponentList = (config, ui) => {
5992
6067
  };
5993
6068
 
5994
6069
  // components/Puck/components/Components/index.tsx
5995
- var import_react37 = require("react");
6070
+ var import_react39 = require("react");
5996
6071
  var import_jsx_runtime30 = require("react/jsx-runtime");
5997
6072
  var Components = () => {
5998
6073
  const { config, state, overrides } = useAppContext();
5999
6074
  const componentList = useComponentList(config, state.ui);
6000
- const Wrapper = (0, import_react37.useMemo)(() => overrides.components || "div", [overrides]);
6075
+ const Wrapper = (0, import_react39.useMemo)(() => overrides.components || "div", [overrides]);
6001
6076
  return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Wrapper, { children: componentList ? componentList : /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(ComponentList, { id: "all" }) });
6002
6077
  };
6003
6078
 
6004
6079
  // components/Puck/components/Preview/index.tsx
6005
6080
  init_react_import();
6006
- var import_react39 = require("react");
6081
+ var import_react41 = require("react");
6007
6082
 
6008
6083
  // components/AutoFrame/index.tsx
6009
6084
  init_react_import();
6010
- var import_react38 = require("react");
6085
+ var import_react40 = require("react");
6011
6086
  var import_object_hash = __toESM(require("object-hash"));
6012
6087
  var import_react_dom3 = require("react-dom");
6013
6088
  var import_jsx_runtime31 = require("react/jsx-runtime");
@@ -6053,7 +6128,7 @@ var CopyHostStyles = ({
6053
6128
  onStylesLoaded = () => null
6054
6129
  }) => {
6055
6130
  const { document: doc, window: win } = useFrame();
6056
- (0, import_react38.useEffect)(() => {
6131
+ (0, import_react40.useEffect)(() => {
6057
6132
  if (!win || !doc) {
6058
6133
  return () => {
6059
6134
  };
@@ -6212,8 +6287,8 @@ var CopyHostStyles = ({
6212
6287
  }, []);
6213
6288
  return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_jsx_runtime31.Fragment, { children });
6214
6289
  };
6215
- var autoFrameContext = (0, import_react38.createContext)({});
6216
- var useFrame = () => (0, import_react38.useContext)(autoFrameContext);
6290
+ var autoFrameContext = (0, import_react40.createContext)({});
6291
+ var useFrame = () => (0, import_react40.useContext)(autoFrameContext);
6217
6292
  function AutoFrame(_a) {
6218
6293
  var _b = _a, {
6219
6294
  children,
@@ -6230,10 +6305,10 @@ function AutoFrame(_a) {
6230
6305
  "onStylesLoaded",
6231
6306
  "frameRef"
6232
6307
  ]);
6233
- const [loaded, setLoaded] = (0, import_react38.useState)(false);
6234
- const [ctx, setCtx] = (0, import_react38.useState)({});
6235
- const [mountTarget, setMountTarget] = (0, import_react38.useState)();
6236
- (0, import_react38.useEffect)(() => {
6308
+ const [loaded, setLoaded] = (0, import_react40.useState)(false);
6309
+ const [ctx, setCtx] = (0, import_react40.useState)({});
6310
+ const [mountTarget, setMountTarget] = (0, import_react40.useState)();
6311
+ (0, import_react40.useEffect)(() => {
6237
6312
  var _a2;
6238
6313
  if (frameRef.current) {
6239
6314
  setCtx({
@@ -6327,7 +6402,7 @@ var import_jsx_runtime33 = require("react/jsx-runtime");
6327
6402
  var getClassName23 = get_class_name_factory_default("PuckPreview", styles_module_default18);
6328
6403
  var useBubbleIframeEvents = (ref) => {
6329
6404
  const { status } = useAppContext();
6330
- (0, import_react39.useEffect)(() => {
6405
+ (0, import_react41.useEffect)(() => {
6331
6406
  var _a;
6332
6407
  if (ref.current && status === "READY") {
6333
6408
  const iframe = ref.current;
@@ -6366,7 +6441,7 @@ var useBubbleIframeEvents = (ref) => {
6366
6441
  };
6367
6442
  var Preview2 = ({ id = "puck-preview" }) => {
6368
6443
  const { config, dispatch, state, setStatus, iframe, overrides } = useAppContext();
6369
- const Page = (0, import_react39.useCallback)(
6444
+ const Page = (0, import_react41.useCallback)(
6370
6445
  (pageProps) => {
6371
6446
  var _a, _b;
6372
6447
  return ((_a = config.root) == null ? void 0 : _a.render) ? (_b = config.root) == null ? void 0 : _b.render(__spreadValues({
@@ -6375,9 +6450,9 @@ var Preview2 = ({ id = "puck-preview" }) => {
6375
6450
  },
6376
6451
  [config.root]
6377
6452
  );
6378
- const Frame = (0, import_react39.useMemo)(() => overrides.iframe, [overrides]);
6453
+ const Frame = (0, import_react41.useMemo)(() => overrides.iframe, [overrides]);
6379
6454
  const rootProps = state.data.root.props || state.data.root;
6380
- const ref = (0, import_react39.useRef)(null);
6455
+ const ref = (0, import_react41.useRef)(null);
6381
6456
  useBubbleIframeEvents(ref);
6382
6457
  const inner = state.ui.previewMode === "edit" ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
6383
6458
  Page,
@@ -6474,7 +6549,7 @@ var scrollIntoView = (el) => {
6474
6549
  };
6475
6550
 
6476
6551
  // components/LayerTree/index.tsx
6477
- var import_react40 = require("react");
6552
+ var import_react42 = require("react");
6478
6553
 
6479
6554
  // lib/is-child-of-zone.ts
6480
6555
  init_react_import();
@@ -6520,7 +6595,7 @@ var LayerTree = ({
6520
6595
  label
6521
6596
  }) => {
6522
6597
  const zones = data.zones || {};
6523
- const ctx = (0, import_react40.useContext)(dropZoneContext);
6598
+ const ctx = (0, import_react42.useContext)(dropZoneContext);
6524
6599
  return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_jsx_runtime34.Fragment, { children: [
6525
6600
  label && /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: getClassName24("zoneTitle"), children: [
6526
6601
  /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: getClassName24("zoneIcon"), children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Layers, { size: "16" }) }),
@@ -6627,13 +6702,13 @@ var LayerTree = ({
6627
6702
  };
6628
6703
 
6629
6704
  // components/Puck/components/Outline/index.tsx
6630
- var import_react41 = require("react");
6705
+ var import_react43 = require("react");
6631
6706
  var import_jsx_runtime35 = require("react/jsx-runtime");
6632
6707
  var Outline = () => {
6633
6708
  const { dispatch, state, overrides, config } = useAppContext();
6634
6709
  const { data, ui } = state;
6635
6710
  const { itemSelector } = ui;
6636
- const setItemSelector = (0, import_react41.useCallback)(
6711
+ const setItemSelector = (0, import_react43.useCallback)(
6637
6712
  (newItemSelector) => {
6638
6713
  dispatch({
6639
6714
  type: "setUi",
@@ -6642,7 +6717,7 @@ var Outline = () => {
6642
6717
  },
6643
6718
  []
6644
6719
  );
6645
- const Wrapper = (0, import_react41.useMemo)(() => overrides.outline || "div", [overrides]);
6720
+ const Wrapper = (0, import_react43.useMemo)(() => overrides.outline || "div", [overrides]);
6646
6721
  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: [
6647
6722
  (ctx == null ? void 0 : ctx.activeZones) && (ctx == null ? void 0 : ctx.activeZones[rootDroppableId]) && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
6648
6723
  LayerTree,
@@ -6756,19 +6831,19 @@ function usePuckHistory({
6756
6831
 
6757
6832
  // lib/use-history-store.ts
6758
6833
  init_react_import();
6759
- var import_react42 = require("react");
6834
+ var import_react44 = require("react");
6760
6835
  var import_use_debounce3 = require("use-debounce");
6761
6836
  var EMPTY_HISTORY_INDEX = 0;
6762
6837
  function useHistoryStore(initialHistory) {
6763
6838
  var _a, _b;
6764
- const [histories, setHistories] = (0, import_react42.useState)(
6839
+ const [histories, setHistories] = (0, import_react44.useState)(
6765
6840
  (_a = initialHistory == null ? void 0 : initialHistory.histories) != null ? _a : []
6766
6841
  );
6767
6842
  const updateHistories = (histories2) => {
6768
6843
  setHistories(histories2);
6769
6844
  setIndex(histories2.length - 1);
6770
6845
  };
6771
- const [index, setIndex] = (0, import_react42.useState)(
6846
+ const [index, setIndex] = (0, import_react44.useState)(
6772
6847
  (_b = initialHistory == null ? void 0 : initialHistory.index) != null ? _b : EMPTY_HISTORY_INDEX
6773
6848
  );
6774
6849
  const hasPast = index > EMPTY_HISTORY_INDEX;
@@ -6928,11 +7003,11 @@ var getBox = function getBox2(el) {
6928
7003
  };
6929
7004
 
6930
7005
  // components/Puck/components/Canvas/index.tsx
6931
- var import_react44 = require("react");
7006
+ var import_react46 = require("react");
6932
7007
 
6933
7008
  // components/ViewportControls/index.tsx
6934
7009
  init_react_import();
6935
- var import_react43 = require("react");
7010
+ var import_react45 = require("react");
6936
7011
 
6937
7012
  // css-module:/home/runner/work/puck/puck/packages/core/components/ViewportControls/styles.module.css#css-module
6938
7013
  init_react_import();
@@ -6955,8 +7030,8 @@ var ViewportButton = ({
6955
7030
  onClick
6956
7031
  }) => {
6957
7032
  const { state } = useAppContext();
6958
- const [isActive, setIsActive] = (0, import_react43.useState)(false);
6959
- (0, import_react43.useEffect)(() => {
7033
+ const [isActive, setIsActive] = (0, import_react45.useState)(false);
7034
+ (0, import_react45.useEffect)(() => {
6960
7035
  setIsActive(width === state.ui.viewports.current.width);
6961
7036
  }, [width, state.ui.viewports.current.width]);
6962
7037
  return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: getClassNameButton({ isActive }), children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
@@ -6992,7 +7067,7 @@ var ViewportControls = ({
6992
7067
  const defaultsContainAutoZoom = defaultZoomOptions.find(
6993
7068
  (option) => option.value === autoZoom
6994
7069
  );
6995
- const zoomOptions = (0, import_react43.useMemo)(
7070
+ const zoomOptions = (0, import_react45.useMemo)(
6996
7071
  () => [
6997
7072
  ...defaultZoomOptions,
6998
7073
  ...defaultsContainAutoZoom ? [] : [
@@ -7115,17 +7190,17 @@ var Canvas = () => {
7115
7190
  const { status, iframe } = useAppContext();
7116
7191
  const { dispatch, state, overrides, setUi, zoomConfig, setZoomConfig } = useAppContext();
7117
7192
  const { ui } = state;
7118
- const frameRef = (0, import_react44.useRef)(null);
7119
- const [showTransition, setShowTransition] = (0, import_react44.useState)(false);
7120
- const defaultRender = (0, import_react44.useMemo)(() => {
7193
+ const frameRef = (0, import_react46.useRef)(null);
7194
+ const [showTransition, setShowTransition] = (0, import_react46.useState)(false);
7195
+ const defaultRender = (0, import_react46.useMemo)(() => {
7121
7196
  const PuckDefault = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_jsx_runtime37.Fragment, { children });
7122
7197
  return PuckDefault;
7123
7198
  }, []);
7124
- const CustomPreview = (0, import_react44.useMemo)(
7199
+ const CustomPreview = (0, import_react46.useMemo)(
7125
7200
  () => overrides.preview || defaultRender,
7126
7201
  [overrides]
7127
7202
  );
7128
- const getFrameDimensions = (0, import_react44.useCallback)(() => {
7203
+ const getFrameDimensions = (0, import_react46.useCallback)(() => {
7129
7204
  if (frameRef.current) {
7130
7205
  const frame = frameRef.current;
7131
7206
  const box = getBox(frame);
@@ -7133,7 +7208,7 @@ var Canvas = () => {
7133
7208
  }
7134
7209
  return { width: 0, height: 0 };
7135
7210
  }, [frameRef]);
7136
- const resetAutoZoom = (0, import_react44.useCallback)(
7211
+ const resetAutoZoom = (0, import_react46.useCallback)(
7137
7212
  (ui2 = state.ui) => {
7138
7213
  if (frameRef.current) {
7139
7214
  setZoomConfig(
@@ -7143,11 +7218,11 @@ var Canvas = () => {
7143
7218
  },
7144
7219
  [frameRef, zoomConfig, state.ui]
7145
7220
  );
7146
- (0, import_react44.useEffect)(() => {
7221
+ (0, import_react46.useEffect)(() => {
7147
7222
  setShowTransition(false);
7148
7223
  resetAutoZoom();
7149
7224
  }, [frameRef, ui.leftSideBarVisible, ui.rightSideBarVisible]);
7150
- (0, import_react44.useEffect)(() => {
7225
+ (0, import_react46.useEffect)(() => {
7151
7226
  const { height: frameHeight } = getFrameDimensions();
7152
7227
  if (ui.viewports.current.height === "auto") {
7153
7228
  setZoomConfig(__spreadProps(__spreadValues({}, zoomConfig), {
@@ -7155,13 +7230,13 @@ var Canvas = () => {
7155
7230
  }));
7156
7231
  }
7157
7232
  }, [zoomConfig.zoom]);
7158
- (0, import_react44.useEffect)(() => {
7233
+ (0, import_react46.useEffect)(() => {
7159
7234
  if (ZOOM_ON_CHANGE) {
7160
7235
  setShowTransition(true);
7161
7236
  resetAutoZoom(ui);
7162
7237
  }
7163
7238
  }, [ui.viewports.current.width]);
7164
- (0, import_react44.useEffect)(() => {
7239
+ (0, import_react46.useEffect)(() => {
7165
7240
  const cb = () => {
7166
7241
  setShowTransition(false);
7167
7242
  resetAutoZoom();
@@ -7171,8 +7246,8 @@ var Canvas = () => {
7171
7246
  window.removeEventListener("resize", cb);
7172
7247
  };
7173
7248
  }, []);
7174
- const [showLoader, setShowLoader] = (0, import_react44.useState)(false);
7175
- (0, import_react44.useEffect)(() => {
7249
+ const [showLoader, setShowLoader] = (0, import_react46.useState)(false);
7250
+ (0, import_react46.useEffect)(() => {
7176
7251
  setTimeout(() => {
7177
7252
  setShowLoader(true);
7178
7253
  }, 500);
@@ -7250,7 +7325,7 @@ var Canvas = () => {
7250
7325
 
7251
7326
  // lib/use-loaded-overrides.ts
7252
7327
  init_react_import();
7253
- var import_react45 = require("react");
7328
+ var import_react47 = require("react");
7254
7329
 
7255
7330
  // lib/load-overrides.ts
7256
7331
  init_react_import();
@@ -7289,7 +7364,7 @@ var useLoadedOverrides = ({
7289
7364
  overrides,
7290
7365
  plugins
7291
7366
  }) => {
7292
- return (0, import_react45.useMemo)(() => {
7367
+ return (0, import_react47.useMemo)(() => {
7293
7368
  return loadOverrides({ overrides, plugins });
7294
7369
  }, [plugins, overrides]);
7295
7370
  };
@@ -7301,14 +7376,14 @@ var DefaultOverride = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime38
7301
7376
 
7302
7377
  // lib/use-inject-css.ts
7303
7378
  init_react_import();
7304
- var import_react46 = require("react");
7379
+ var import_react48 = require("react");
7305
7380
  var styles = ``;
7306
7381
  var useInjectStyleSheet = (initialStyles, iframeEnabled) => {
7307
- const [el, setEl] = (0, import_react46.useState)();
7308
- (0, import_react46.useEffect)(() => {
7382
+ const [el, setEl] = (0, import_react48.useState)();
7383
+ (0, import_react48.useEffect)(() => {
7309
7384
  setEl(document.createElement("style"));
7310
7385
  }, []);
7311
- (0, import_react46.useEffect)(() => {
7386
+ (0, import_react48.useEffect)(() => {
7312
7387
  var _a;
7313
7388
  if (!el || typeof window === "undefined") {
7314
7389
  return;
@@ -7328,10 +7403,10 @@ var useInjectGlobalCss = (iframeEnabled) => {
7328
7403
 
7329
7404
  // lib/use-preview-mode-hotkeys.ts
7330
7405
  init_react_import();
7331
- var import_react47 = require("react");
7406
+ var import_react49 = require("react");
7332
7407
  var import_react_hotkeys_hook2 = require("react-hotkeys-hook");
7333
7408
  var usePreviewModeHotkeys = (dispatch, iframeEnabled) => {
7334
- const toggleInteractive = (0, import_react47.useCallback)(() => {
7409
+ const toggleInteractive = (0, import_react49.useCallback)(() => {
7335
7410
  dispatch({
7336
7411
  type: "setUi",
7337
7412
  ui: (ui) => ({
@@ -7383,7 +7458,7 @@ function Puck({
7383
7458
  waitForStyles: true
7384
7459
  }, _iframe);
7385
7460
  useInjectGlobalCss(iframe.enabled);
7386
- const [generatedAppState] = (0, import_react48.useState)(() => {
7461
+ const [generatedAppState] = (0, import_react50.useState)(() => {
7387
7462
  var _a2, _b2, _c, _d, _e, _f, _g, _h, _i;
7388
7463
  const initial = __spreadValues(__spreadValues({}, defaultAppState.ui), initialUi);
7389
7464
  let clientUiState = {};
@@ -7455,14 +7530,14 @@ function Puck({
7455
7530
  histories,
7456
7531
  index: initialHistoryIndex
7457
7532
  });
7458
- const [reducer] = (0, import_react48.useState)(
7533
+ const [reducer] = (0, import_react50.useState)(
7459
7534
  () => createReducer({
7460
7535
  config,
7461
7536
  record: historyStore.record,
7462
7537
  onAction
7463
7538
  })
7464
7539
  );
7465
- const [appState, dispatch] = (0, import_react48.useReducer)(
7540
+ const [appState, dispatch] = (0, import_react50.useReducer)(
7466
7541
  reducer,
7467
7542
  flushZones(initialAppState)
7468
7543
  );
@@ -7473,14 +7548,14 @@ function Puck({
7473
7548
  historyStore,
7474
7549
  iframeEnabled: (_a = _iframe == null ? void 0 : _iframe.enabled) != null ? _a : true
7475
7550
  });
7476
- const [menuOpen, setMenuOpen] = (0, import_react48.useState)(false);
7551
+ const [menuOpen, setMenuOpen] = (0, import_react50.useState)(false);
7477
7552
  const { itemSelector, leftSideBarVisible, rightSideBarVisible } = ui;
7478
7553
  const selectedItem = itemSelector ? getItem(itemSelector, data) : null;
7479
- (0, import_react48.useEffect)(() => {
7554
+ (0, import_react50.useEffect)(() => {
7480
7555
  if (onChange) onChange(data);
7481
7556
  }, [data]);
7482
7557
  const rootProps = data.root.props || data.root;
7483
- const toggleSidebars = (0, import_react48.useCallback)(
7558
+ const toggleSidebars = (0, import_react50.useCallback)(
7484
7559
  (sidebar) => {
7485
7560
  const widerViewport = window.matchMedia("(min-width: 638px)").matches;
7486
7561
  const sideBarVisible = sidebar === "left" ? leftSideBarVisible : rightSideBarVisible;
@@ -7494,7 +7569,7 @@ function Puck({
7494
7569
  },
7495
7570
  [dispatch, leftSideBarVisible, rightSideBarVisible]
7496
7571
  );
7497
- (0, import_react48.useEffect)(() => {
7572
+ (0, import_react50.useEffect)(() => {
7498
7573
  if (!window.matchMedia("(min-width: 638px)").matches) {
7499
7574
  dispatch({
7500
7575
  type: "setUi",
@@ -7517,7 +7592,7 @@ function Puck({
7517
7592
  window.removeEventListener("resize", handleResize);
7518
7593
  };
7519
7594
  }, []);
7520
- const defaultHeaderRender = (0, import_react48.useMemo)(() => {
7595
+ const defaultHeaderRender = (0, import_react50.useMemo)(() => {
7521
7596
  if (renderHeader) {
7522
7597
  console.warn(
7523
7598
  "`renderHeader` is deprecated. Please use `overrides.header` and the `usePuck` hook instead"
@@ -7531,7 +7606,7 @@ function Puck({
7531
7606
  }
7532
7607
  return DefaultOverride;
7533
7608
  }, [renderHeader]);
7534
- const defaultHeaderActionsRender = (0, import_react48.useMemo)(() => {
7609
+ const defaultHeaderActionsRender = (0, import_react50.useMemo)(() => {
7535
7610
  if (renderHeaderActions) {
7536
7611
  console.warn(
7537
7612
  "`renderHeaderActions` is deprecated. Please use `overrides.headerActions` and the `usePuck` hook instead."
@@ -7548,20 +7623,20 @@ function Puck({
7548
7623
  overrides,
7549
7624
  plugins
7550
7625
  });
7551
- const CustomPuck = (0, import_react48.useMemo)(
7626
+ const CustomPuck = (0, import_react50.useMemo)(
7552
7627
  () => loadedOverrides.puck || DefaultOverride,
7553
7628
  [loadedOverrides]
7554
7629
  );
7555
- const CustomHeader = (0, import_react48.useMemo)(
7630
+ const CustomHeader = (0, import_react50.useMemo)(
7556
7631
  () => loadedOverrides.header || defaultHeaderRender,
7557
7632
  [loadedOverrides]
7558
7633
  );
7559
- const CustomHeaderActions = (0, import_react48.useMemo)(
7634
+ const CustomHeaderActions = (0, import_react50.useMemo)(
7560
7635
  () => loadedOverrides.headerActions || defaultHeaderActionsRender,
7561
7636
  [loadedOverrides]
7562
7637
  );
7563
- const [mounted, setMounted] = (0, import_react48.useState)(false);
7564
- (0, import_react48.useEffect)(() => {
7638
+ const [mounted, setMounted] = (0, import_react50.useState)(false);
7639
+ (0, import_react50.useEffect)(() => {
7565
7640
  setMounted(true);
7566
7641
  }, []);
7567
7642
  const selectedComponentConfig = selectedItem && config.components[selectedItem.type];