@measured/puck 0.18.0-canary.4b589f6 → 0.18.0-canary.51219fa

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);
@@ -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
@@ -3663,8 +3682,9 @@ var import_jsx_runtime22 = require("react/jsx-runtime");
3663
3682
  var getClassName17 = get_class_name_factory_default("DropZone", styles_module_default12);
3664
3683
  var getRandomColor = () => `#${Math.floor(Math.random() * 16777215).toString(16)}`;
3665
3684
  var RENDER_DEBUG = false;
3685
+ var DropZoneEditPure = (props) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(DropZoneEdit, __spreadValues({}, props));
3666
3686
  var DropZoneEdit = (0, import_react29.forwardRef)(
3667
- function DropZoneEdit2({
3687
+ function DropZoneEditInternal({
3668
3688
  zone,
3669
3689
  allow,
3670
3690
  disallow,
@@ -3698,8 +3718,7 @@ var DropZoneEdit = (0, import_react29.forwardRef)(
3698
3718
  isDeepestZone,
3699
3719
  inNextDeepestArea,
3700
3720
  draggedComponentType,
3701
- userIsDragging,
3702
- preview
3721
+ userIsDragging
3703
3722
  } = useContextStore(ZoneStoreContext, (s) => {
3704
3723
  var _a, _b, _c;
3705
3724
  return {
@@ -3707,8 +3726,7 @@ var DropZoneEdit = (0, import_react29.forwardRef)(
3707
3726
  inNextDeepestArea: s.nextAreaDepthIndex[areaId || ""],
3708
3727
  draggedItemId: (_b = s.draggedItem) == null ? void 0 : _b.id,
3709
3728
  draggedComponentType: (_c = s.draggedItem) == null ? void 0 : _c.data.componentType,
3710
- userIsDragging: !!s.draggedItem,
3711
- preview: s.previewIndex[zoneCompound]
3729
+ userIsDragging: !!s.draggedItem
3712
3730
  };
3713
3731
  });
3714
3732
  const { itemSelector } = appContext2.state.ui;
@@ -3774,7 +3792,10 @@ var DropZoneEdit = (0, import_react29.forwardRef)(
3774
3792
  if (isEnabled) {
3775
3793
  isEnabled = acceptsTarget(draggedComponentType);
3776
3794
  }
3777
- const contentWithPreview = useContentWithPreview(content, zoneCompound);
3795
+ const [contentWithPreview, preview] = useContentWithPreview(
3796
+ content,
3797
+ zoneCompound
3798
+ );
3778
3799
  const isDropEnabled = isEnabled && (preview ? contentWithPreview.length === 1 : contentWithPreview.length === 0);
3779
3800
  const droppableConfig = {
3780
3801
  id: zoneCompound,
@@ -3816,16 +3837,15 @@ var DropZoneEdit = (0, import_react29.forwardRef)(
3816
3837
  },
3817
3838
  "data-testid": `dropzone:${zoneCompound}`,
3818
3839
  "data-puck-dropzone": zoneCompound,
3819
- "data-puck-dnd": zoneCompound,
3820
3840
  style: __spreadProps(__spreadValues({}, style), {
3821
3841
  "--min-empty-height": `${minEmptyHeight}px`,
3822
- backgroundColor: RENDER_DEBUG ? getRandomColor() : void 0
3842
+ backgroundColor: RENDER_DEBUG ? getRandomColor() : style == null ? void 0 : style.backgroundColor
3823
3843
  }),
3824
3844
  children: contentWithPreview.map((item, i) => {
3825
- var _a, _b, _c, _d, _e;
3845
+ var _a, _b, _c, _d, _e, _f, _g;
3826
3846
  const componentId = item.props.id;
3827
3847
  const puckProps = {
3828
- renderDropZone: DropZone,
3848
+ renderDropZone: DropZoneEditPure,
3829
3849
  isEditing: true,
3830
3850
  dragRef: null
3831
3851
  };
@@ -3842,13 +3862,13 @@ var DropZoneEdit = (0, import_react29.forwardRef)(
3842
3862
  const componentConfig = config.components[item.type];
3843
3863
  let componentType = item.type;
3844
3864
  let label = (_b = componentConfig == null ? void 0 : componentConfig["label"]) != null ? _b : item.type.toString();
3845
- if (item.type === "preview" && preview) {
3865
+ if (item.type === "preview") {
3846
3866
  let Preview4 = function() {
3847
3867
  return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(DrawerItemInner, { name: label, children: appContext2.overrides.componentItem });
3848
3868
  };
3849
3869
  var Preview3 = Preview4;
3850
- componentType = preview.componentType;
3851
- label = (_d = (_c = config.components[componentType]) == null ? void 0 : _c.label) != null ? _d : preview.componentType;
3870
+ componentType = (_c = preview == null ? void 0 : preview.componentType) != null ? _c : "__preview";
3871
+ label = (_f = (_e = (_d = config.components[componentType]) == null ? void 0 : _d.label) != null ? _e : componentType) != null ? _f : "Preview";
3852
3872
  Render2 = Preview4;
3853
3873
  }
3854
3874
  return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
@@ -3863,7 +3883,7 @@ var DropZoneEdit = (0, import_react29.forwardRef)(
3863
3883
  zoneCompound,
3864
3884
  depth: depth + 1,
3865
3885
  index: i,
3866
- isLoading: ((_e = appContext2.componentState[componentId]) == null ? void 0 : _e.loadingCount) > 0,
3886
+ isLoading: ((_g = appContext2.componentState[componentId]) == null ? void 0 : _g.loadingCount) > 0,
3867
3887
  isSelected,
3868
3888
  label,
3869
3889
  isEnabled,
@@ -3888,8 +3908,9 @@ var DropZoneEdit = (0, import_react29.forwardRef)(
3888
3908
  );
3889
3909
  }
3890
3910
  );
3911
+ var DropZoneRenderPure = (props) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(DropZoneRender, __spreadValues({}, props));
3891
3912
  var DropZoneRender = (0, import_react29.forwardRef)(
3892
- function DropZoneRender2({ className, style, zone }, ref) {
3913
+ function DropZoneRenderInternal({ className, style, zone }, ref) {
3893
3914
  const ctx = (0, import_react29.useContext)(dropZoneContext);
3894
3915
  const { data, areaId = "root", config } = ctx || {};
3895
3916
  let zoneCompound = rootDroppableId;
@@ -3927,7 +3948,9 @@ var DropZoneRender = (0, import_react29.forwardRef)(
3927
3948
  children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
3928
3949
  Component.render,
3929
3950
  __spreadProps(__spreadValues({}, item.props), {
3930
- puck: { renderDropZone: DropZoneRender2 }
3951
+ puck: {
3952
+ renderDropZone: DropZoneRenderPure
3953
+ }
3931
3954
  })
3932
3955
  )
3933
3956
  },
@@ -4002,6 +4025,48 @@ var getFrame = () => {
4002
4025
  return (frameEl == null ? void 0 : frameEl.ownerDocument) || document;
4003
4026
  };
4004
4027
 
4028
+ // lib/global-position.ts
4029
+ init_react_import();
4030
+ var GlobalPosition = class {
4031
+ constructor(target, original) {
4032
+ this.scaleFactor = 1;
4033
+ this.frameEl = null;
4034
+ this.frameRect = null;
4035
+ var _a;
4036
+ this.target = target;
4037
+ this.original = original;
4038
+ this.frameEl = document.querySelector("iframe");
4039
+ if (this.frameEl) {
4040
+ this.frameRect = this.frameEl.getBoundingClientRect();
4041
+ this.scaleFactor = this.frameRect.width / (((_a = this.frameEl.contentWindow) == null ? void 0 : _a.innerWidth) || 1);
4042
+ }
4043
+ }
4044
+ get x() {
4045
+ return this.original.x;
4046
+ }
4047
+ get y() {
4048
+ return this.original.y;
4049
+ }
4050
+ get global() {
4051
+ if (document !== this.target.ownerDocument && this.frameRect) {
4052
+ return {
4053
+ x: this.x * this.scaleFactor + this.frameRect.left,
4054
+ y: this.y * this.scaleFactor + this.frameRect.top
4055
+ };
4056
+ }
4057
+ return this.original;
4058
+ }
4059
+ get frame() {
4060
+ if (document === this.target.ownerDocument && this.frameRect) {
4061
+ return {
4062
+ x: (this.x - this.frameRect.left) / this.scaleFactor,
4063
+ y: (this.y - this.frameRect.top) / this.scaleFactor
4064
+ };
4065
+ }
4066
+ return this.original;
4067
+ }
4068
+ };
4069
+
4005
4070
  // lib/dnd/NestedDroppablePlugin.ts
4006
4071
  var depthSort = (candidates) => {
4007
4072
  return candidates.sort((a, b) => {
@@ -4031,10 +4096,12 @@ var getZoneId2 = (candidate) => {
4031
4096
  }
4032
4097
  return id;
4033
4098
  };
4034
- var getPointerCollisions = (position, manager, ownerDocument) => {
4035
- var _a;
4099
+ var getPointerCollisions = (position, manager) => {
4036
4100
  const candidates = [];
4037
- let elements = ownerDocument.elementsFromPoint(position.x, position.y);
4101
+ let elements = position.target.ownerDocument.elementsFromPoint(
4102
+ position.x,
4103
+ position.y
4104
+ );
4038
4105
  const previewFrame = elements.find(
4039
4106
  (el) => el.getAttribute("data-puck-preview")
4040
4107
  );
@@ -4043,22 +4110,21 @@ var getPointerCollisions = (position, manager, ownerDocument) => {
4043
4110
  elements = [drawer];
4044
4111
  }
4045
4112
  if (previewFrame) {
4046
- const iframe = previewFrame.querySelector("iframe");
4047
- if (iframe) {
4048
- const rect = iframe.getBoundingClientRect();
4049
- const frame = getFrame();
4050
- if (frame) {
4051
- const scaleFactor = rect.width / (((_a = iframe.contentWindow) == null ? void 0 : _a.innerWidth) || 1);
4052
- elements = frame.elementsFromPoint(
4053
- (position.x - rect.left) / scaleFactor,
4054
- (position.y - rect.top) / scaleFactor
4055
- );
4056
- }
4113
+ const frame = getFrame();
4114
+ if (frame) {
4115
+ elements = frame.elementsFromPoint(position.frame.x, position.frame.y);
4057
4116
  }
4058
4117
  }
4059
4118
  if (elements) {
4060
4119
  for (let i = 0; i < elements.length; i++) {
4061
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
+ }
4062
4128
  const id = element.getAttribute("data-puck-dnd");
4063
4129
  if (id) {
4064
4130
  const droppable = manager.registry.droppables.get(id);
@@ -4070,9 +4136,9 @@ var getPointerCollisions = (position, manager, ownerDocument) => {
4070
4136
  }
4071
4137
  return candidates;
4072
4138
  };
4073
- var findDeepestCandidate = (position, manager, ownerDocument) => {
4139
+ var findDeepestCandidate = (position, manager) => {
4074
4140
  var _a;
4075
- const candidates = getPointerCollisions(position, manager, ownerDocument);
4141
+ const candidates = getPointerCollisions(position, manager);
4076
4142
  if (candidates.length > 0) {
4077
4143
  const sortedCandidates = depthSort(candidates);
4078
4144
  const draggable = manager.dragOperation.source;
@@ -4125,22 +4191,18 @@ var createNestedDroppablePlugin = ({ onChange }, id) => class NestedDroppablePlu
4125
4191
  }
4126
4192
  const cleanupEffect = (0, import_state.effects)(() => {
4127
4193
  const handleMove = (event) => {
4128
- const position = {
4194
+ const target = event.originalTarget || event.target;
4195
+ const position = new GlobalPosition(target, {
4129
4196
  x: event.clientX,
4130
4197
  y: event.clientY
4131
- };
4132
- const target = event.originalTarget || event.target;
4133
- const ownerDocument = target == null ? void 0 : target.ownerDocument;
4198
+ });
4134
4199
  const elements = document.elementsFromPoint(
4135
- event.clientX,
4136
- event.clientY
4200
+ position.global.x,
4201
+ position.global.y
4137
4202
  );
4138
4203
  const overEl = elements.some((el) => el.id === id);
4139
4204
  if (overEl) {
4140
- onChange(
4141
- findDeepestCandidate(position, manager, ownerDocument),
4142
- manager
4143
- );
4205
+ onChange(findDeepestCandidate(position, manager), manager);
4144
4206
  }
4145
4207
  };
4146
4208
  const handleMoveThrottled = throttle(handleMove, 50);
@@ -4471,6 +4533,11 @@ var reduceUi = (ui, action) => {
4471
4533
  itemSelector: { index: action.sourceIndex + 1, zone: action.sourceZone }
4472
4534
  });
4473
4535
  }
4536
+ if (action.type === "remove") {
4537
+ return __spreadProps(__spreadValues({}, ui), {
4538
+ itemSelector: null
4539
+ });
4540
+ }
4474
4541
  return ui;
4475
4542
  };
4476
4543
 
@@ -4721,6 +4788,9 @@ var _PointerSensor = class _PointerSensor extends import_abstract10.Sensor {
4721
4788
  }
4722
4789
  }
4723
4790
  handlePointerUp(event) {
4791
+ if (!this.source) {
4792
+ return;
4793
+ }
4724
4794
  event.preventDefault();
4725
4795
  event.stopPropagation();
4726
4796
  const { status } = this.manager.dragOperation;
@@ -4999,27 +5069,33 @@ var DragDropContextClient = ({
4999
5069
  const [pathData, setPathData] = (0, import_react31.useState)();
5000
5070
  const dragMode = (0, import_react31.useRef)(null);
5001
5071
  const registerPath = (0, import_react31.useCallback)(
5002
- (selector) => {
5003
- const item = getItem(selector, data);
5004
- if (!item) {
5005
- return;
5006
- }
5072
+ (id2, selector, label) => {
5007
5073
  const [area] = getZoneId(selector.zone);
5008
5074
  setPathData((latestPathData = {}) => {
5009
5075
  const parentPathData = latestPathData[area] || { path: [] };
5010
5076
  return __spreadProps(__spreadValues({}, latestPathData), {
5011
- [item.props.id]: {
5077
+ [id2]: {
5012
5078
  path: [
5013
5079
  ...parentPathData.path,
5014
5080
  ...selector.zone ? [selector.zone] : []
5015
5081
  ],
5016
- label: item.type
5082
+ label
5017
5083
  }
5018
5084
  });
5019
5085
  });
5020
5086
  },
5021
5087
  [data, setPathData]
5022
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
+ );
5023
5099
  const initialSelector = (0, import_react31.useRef)(void 0);
5024
5100
  return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { id, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
5025
5101
  dragListenerContext.Provider,
@@ -5216,6 +5292,7 @@ var DragDropContextClient = ({
5216
5292
  areaId: "root",
5217
5293
  depth: 0,
5218
5294
  registerPath,
5295
+ unregisterPath,
5219
5296
  pathData,
5220
5297
  path: []
5221
5298
  },
@@ -5342,7 +5419,7 @@ var Drawer = ({
5342
5419
  "Warning: The `direction` prop on Drawer is deprecated and no longer required to achieve multi-directional dragging."
5343
5420
  );
5344
5421
  }
5345
- const [id] = (0, import_react32.useState)(generateId());
5422
+ const id = (0, import_react32.useId)();
5346
5423
  const { ref } = useDroppableSafe({
5347
5424
  id,
5348
5425
  type: "void",
@@ -5364,7 +5441,7 @@ Drawer.Item = DrawerItem;
5364
5441
 
5365
5442
  // components/Puck/index.tsx
5366
5443
  init_react_import();
5367
- var import_react48 = require("react");
5444
+ var import_react50 = require("react");
5368
5445
 
5369
5446
  // components/SidebarSection/index.tsx
5370
5447
  init_react_import();
@@ -5557,36 +5634,61 @@ init_react_import();
5557
5634
 
5558
5635
  // css-module:/home/runner/work/puck/puck/packages/core/components/Puck/components/Fields/styles.module.css#css-module
5559
5636
  init_react_import();
5560
- 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" };
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" };
5561
5638
 
5562
5639
  // components/Puck/components/Fields/index.tsx
5563
- 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");
5564
5645
 
5565
5646
  // lib/use-parent.ts
5566
5647
  init_react_import();
5567
5648
  var import_react34 = require("react");
5568
- var useParent = (itemSelector) => {
5649
+ var getParent = (itemSelector, pathData, data) => {
5569
5650
  var _a;
5570
- const { selectedItem, state } = useAppContext();
5571
- const { pathData } = (0, import_react34.useContext)(dropZoneContext) || {};
5572
- const item = itemSelector ? getItem(itemSelector, state.data) : selectedItem;
5573
- 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);
5574
5654
  const lastItem = breadcrumbs[breadcrumbs.length - 1];
5575
- 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;
5576
5656
  return parent || null;
5577
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
+ };
5578
5669
 
5579
- // components/Puck/components/Fields/index.tsx
5580
- var import_jsx_runtime27 = require("react/jsx-runtime");
5581
- 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
5582
5689
  var defaultPageFields = {
5583
5690
  title: { type: "text" }
5584
5691
  };
5585
- var DefaultFields = ({
5586
- children
5587
- }) => {
5588
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_jsx_runtime27.Fragment, { children });
5589
- };
5590
5692
  var useResolvedFields = () => {
5591
5693
  var _a, _b;
5592
5694
  const { selectedItem, state, config } = useAppContext();
@@ -5594,20 +5696,21 @@ var useResolvedFields = () => {
5594
5696
  const { data } = state;
5595
5697
  const rootFields = ((_a = config.root) == null ? void 0 : _a.fields) || defaultPageFields;
5596
5698
  const componentConfig = selectedItem ? config.components[selectedItem.type] : null;
5597
- const defaultFields = (0, import_react35.useMemo)(
5699
+ const defaultFields = (0, import_react36.useMemo)(
5598
5700
  () => (selectedItem ? componentConfig == null ? void 0 : componentConfig.fields : rootFields) || {},
5599
5701
  [selectedItem, rootFields, componentConfig == null ? void 0 : componentConfig.fields]
5600
5702
  );
5601
5703
  const rootProps = data.root.props || data.root;
5602
- const [lastSelectedData, setLastSelectedData] = (0, import_react35.useState)({});
5603
- const [resolvedFields, setResolvedFields] = (0, import_react35.useState)(defaultFields);
5604
- 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);
5605
5708
  const defaultResolveFields = (_componentData, _params) => defaultFields;
5606
5709
  const componentData = selectedItem ? selectedItem : { props: rootProps, readOnly: data.root.readOnly };
5607
5710
  const hasComponentResolver = selectedItem && (componentConfig == null ? void 0 : componentConfig.resolveFields);
5608
5711
  const hasRootResolver = !selectedItem && ((_b = config.root) == null ? void 0 : _b.resolveFields);
5609
5712
  const hasResolver = hasComponentResolver || hasRootResolver;
5610
- const resolveFields = (0, import_react35.useCallback)(
5713
+ const resolveFields = (0, import_react36.useCallback)(
5611
5714
  (..._0) => __async(void 0, [..._0], function* (fields = {}) {
5612
5715
  var _a2;
5613
5716
  const lastData = ((_a2 = lastSelectedData.props) == null ? void 0 : _a2.id) === componentData.props.id ? lastSelectedData : null;
@@ -5619,7 +5722,7 @@ var useResolvedFields = () => {
5619
5722
  {
5620
5723
  changed,
5621
5724
  fields,
5622
- lastFields: resolvedFields,
5725
+ lastFields: lastFields.current,
5623
5726
  lastData,
5624
5727
  appState: state,
5625
5728
  parent
@@ -5630,7 +5733,7 @@ var useResolvedFields = () => {
5630
5733
  return yield config.root.resolveFields(componentData, {
5631
5734
  changed,
5632
5735
  fields,
5633
- lastFields: resolvedFields,
5736
+ lastFields: lastFields.current,
5634
5737
  lastData,
5635
5738
  appState: state,
5636
5739
  parent
@@ -5639,26 +5742,56 @@ var useResolvedFields = () => {
5639
5742
  return defaultResolveFields(componentData, {
5640
5743
  changed,
5641
5744
  fields,
5642
- lastFields: resolvedFields,
5745
+ lastFields: lastFields.current,
5643
5746
  lastData
5644
5747
  });
5645
5748
  }),
5646
- [data, config, componentData, selectedItem, resolvedFields, state]
5749
+ [data, config, componentData, selectedItem, state, parent]
5647
5750
  );
5648
- (0, import_react35.useEffect)(() => {
5649
- if (hasResolver) {
5650
- setFieldsLoading(true);
5651
- resolveFields(defaultFields).then((fields) => {
5652
- setResolvedFields(fields || {});
5653
- setFieldsLoading(false);
5654
- });
5655
- } else {
5656
- setResolvedFields(defaultFields);
5751
+ const triggerResolver = (0, import_react36.useCallback)(() => {
5752
+ var _a2, _b2;
5753
+ if (!((_a2 = state.ui.itemSelector) == null ? void 0 : _a2.zone) || ((_b2 = state.ui.itemSelector) == null ? void 0 : _b2.zone) === "default-zone" || parent) {
5754
+ if (hasResolver) {
5755
+ setFieldsLoading(true);
5756
+ resolveFields(defaultFields).then((fields) => {
5757
+ setResolvedFields(fields || {});
5758
+ lastFields.current = fields;
5759
+ setFieldsLoading(false);
5760
+ });
5761
+ return;
5762
+ }
5657
5763
  }
5658
- }, [data, defaultFields, selectedItem, hasResolver]);
5764
+ setResolvedFields(defaultFields);
5765
+ }, [defaultFields, state.ui.itemSelector, hasResolver, parent]);
5766
+ useOnValueChange(
5767
+ state.ui.itemSelector,
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
+ }, []);
5659
5783
  return [resolvedFields, fieldsLoading];
5660
5784
  };
5661
- var Fields = () => {
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
+ };
5794
+ var Fields = ({ wrapFields = true }) => {
5662
5795
  var _a, _b;
5663
5796
  const {
5664
5797
  selectedItem,
@@ -5676,11 +5809,11 @@ var Fields = () => {
5676
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;
5677
5810
  const isLoading = fieldsResolving || componentResolving;
5678
5811
  const rootProps = data.root.props || data.root;
5679
- const Wrapper = (0, import_react35.useMemo)(() => overrides.fields || DefaultFields, [overrides]);
5812
+ const Wrapper = (0, import_react37.useMemo)(() => overrides.fields || DefaultFields, [overrides]);
5680
5813
  return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
5681
5814
  "form",
5682
5815
  {
5683
- className: getClassName21(),
5816
+ className: getClassName21({ wrapFields }),
5684
5817
  onSubmit: (e) => {
5685
5818
  e.preventDefault();
5686
5819
  },
@@ -5756,7 +5889,7 @@ var Fields = () => {
5756
5889
  item: selectedItem
5757
5890
  });
5758
5891
  const id = `${selectedItem.props.id}_${field.type}_${fieldName}`;
5759
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
5892
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: getClassName21("field"), children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
5760
5893
  AutoFieldPrivate,
5761
5894
  {
5762
5895
  field,
@@ -5765,16 +5898,15 @@ var Fields = () => {
5765
5898
  readOnly: !edit || readOnly[fieldName],
5766
5899
  value: selectedItem.props[fieldName],
5767
5900
  onChange
5768
- },
5769
- id
5770
- );
5901
+ }
5902
+ ) }, id);
5771
5903
  } else {
5772
5904
  const readOnly = data.root.readOnly || {};
5773
5905
  const { edit } = getPermissions({
5774
5906
  root: true
5775
5907
  });
5776
5908
  const id = `root_${field.type}_${fieldName}`;
5777
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
5909
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: getClassName21("field"), children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
5778
5910
  AutoFieldPrivate,
5779
5911
  {
5780
5912
  field,
@@ -5783,9 +5915,8 @@ var Fields = () => {
5783
5915
  readOnly: !edit || readOnly[fieldName],
5784
5916
  value: rootProps[fieldName],
5785
5917
  onChange
5786
- },
5787
- id
5788
- );
5918
+ }
5919
+ ) }, id);
5789
5920
  }
5790
5921
  }) }),
5791
5922
  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 }) }) })
@@ -5799,7 +5930,7 @@ init_react_import();
5799
5930
 
5800
5931
  // lib/use-component-list.tsx
5801
5932
  init_react_import();
5802
- var import_react36 = require("react");
5933
+ var import_react38 = require("react");
5803
5934
 
5804
5935
  // components/ComponentList/index.tsx
5805
5936
  init_react_import();
@@ -5866,8 +5997,8 @@ ComponentList.Item = ComponentListItem;
5866
5997
  // lib/use-component-list.tsx
5867
5998
  var import_jsx_runtime29 = require("react/jsx-runtime");
5868
5999
  var useComponentList = (config, ui) => {
5869
- const [componentList, setComponentList] = (0, import_react36.useState)();
5870
- (0, import_react36.useEffect)(() => {
6000
+ const [componentList, setComponentList] = (0, import_react38.useState)();
6001
+ (0, import_react38.useEffect)(() => {
5871
6002
  var _a, _b, _c;
5872
6003
  if (Object.keys(ui.componentList).length > 0) {
5873
6004
  const matchedComponents = [];
@@ -5936,22 +6067,22 @@ var useComponentList = (config, ui) => {
5936
6067
  };
5937
6068
 
5938
6069
  // components/Puck/components/Components/index.tsx
5939
- var import_react37 = require("react");
6070
+ var import_react39 = require("react");
5940
6071
  var import_jsx_runtime30 = require("react/jsx-runtime");
5941
6072
  var Components = () => {
5942
6073
  const { config, state, overrides } = useAppContext();
5943
6074
  const componentList = useComponentList(config, state.ui);
5944
- const Wrapper = (0, import_react37.useMemo)(() => overrides.components || "div", [overrides]);
6075
+ const Wrapper = (0, import_react39.useMemo)(() => overrides.components || "div", [overrides]);
5945
6076
  return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Wrapper, { children: componentList ? componentList : /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(ComponentList, { id: "all" }) });
5946
6077
  };
5947
6078
 
5948
6079
  // components/Puck/components/Preview/index.tsx
5949
6080
  init_react_import();
5950
- var import_react39 = require("react");
6081
+ var import_react41 = require("react");
5951
6082
 
5952
6083
  // components/AutoFrame/index.tsx
5953
6084
  init_react_import();
5954
- var import_react38 = require("react");
6085
+ var import_react40 = require("react");
5955
6086
  var import_object_hash = __toESM(require("object-hash"));
5956
6087
  var import_react_dom3 = require("react-dom");
5957
6088
  var import_jsx_runtime31 = require("react/jsx-runtime");
@@ -5997,7 +6128,7 @@ var CopyHostStyles = ({
5997
6128
  onStylesLoaded = () => null
5998
6129
  }) => {
5999
6130
  const { document: doc, window: win } = useFrame();
6000
- (0, import_react38.useEffect)(() => {
6131
+ (0, import_react40.useEffect)(() => {
6001
6132
  if (!win || !doc) {
6002
6133
  return () => {
6003
6134
  };
@@ -6156,8 +6287,8 @@ var CopyHostStyles = ({
6156
6287
  }, []);
6157
6288
  return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_jsx_runtime31.Fragment, { children });
6158
6289
  };
6159
- var autoFrameContext = (0, import_react38.createContext)({});
6160
- var useFrame = () => (0, import_react38.useContext)(autoFrameContext);
6290
+ var autoFrameContext = (0, import_react40.createContext)({});
6291
+ var useFrame = () => (0, import_react40.useContext)(autoFrameContext);
6161
6292
  function AutoFrame(_a) {
6162
6293
  var _b = _a, {
6163
6294
  children,
@@ -6174,10 +6305,10 @@ function AutoFrame(_a) {
6174
6305
  "onStylesLoaded",
6175
6306
  "frameRef"
6176
6307
  ]);
6177
- const [loaded, setLoaded] = (0, import_react38.useState)(false);
6178
- const [ctx, setCtx] = (0, import_react38.useState)({});
6179
- const [mountTarget, setMountTarget] = (0, import_react38.useState)();
6180
- (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)(() => {
6181
6312
  var _a2;
6182
6313
  if (frameRef.current) {
6183
6314
  setCtx({
@@ -6271,7 +6402,7 @@ var import_jsx_runtime33 = require("react/jsx-runtime");
6271
6402
  var getClassName23 = get_class_name_factory_default("PuckPreview", styles_module_default18);
6272
6403
  var useBubbleIframeEvents = (ref) => {
6273
6404
  const { status } = useAppContext();
6274
- (0, import_react39.useEffect)(() => {
6405
+ (0, import_react41.useEffect)(() => {
6275
6406
  var _a;
6276
6407
  if (ref.current && status === "READY") {
6277
6408
  const iframe = ref.current;
@@ -6310,7 +6441,7 @@ var useBubbleIframeEvents = (ref) => {
6310
6441
  };
6311
6442
  var Preview2 = ({ id = "puck-preview" }) => {
6312
6443
  const { config, dispatch, state, setStatus, iframe, overrides } = useAppContext();
6313
- const Page = (0, import_react39.useCallback)(
6444
+ const Page = (0, import_react41.useCallback)(
6314
6445
  (pageProps) => {
6315
6446
  var _a, _b;
6316
6447
  return ((_a = config.root) == null ? void 0 : _a.render) ? (_b = config.root) == null ? void 0 : _b.render(__spreadValues({
@@ -6319,9 +6450,9 @@ var Preview2 = ({ id = "puck-preview" }) => {
6319
6450
  },
6320
6451
  [config.root]
6321
6452
  );
6322
- const Frame = (0, import_react39.useMemo)(() => overrides.iframe, [overrides]);
6453
+ const Frame = (0, import_react41.useMemo)(() => overrides.iframe, [overrides]);
6323
6454
  const rootProps = state.data.root.props || state.data.root;
6324
- const ref = (0, import_react39.useRef)(null);
6455
+ const ref = (0, import_react41.useRef)(null);
6325
6456
  useBubbleIframeEvents(ref);
6326
6457
  const inner = state.ui.previewMode === "edit" ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
6327
6458
  Page,
@@ -6418,7 +6549,7 @@ var scrollIntoView = (el) => {
6418
6549
  };
6419
6550
 
6420
6551
  // components/LayerTree/index.tsx
6421
- var import_react40 = require("react");
6552
+ var import_react42 = require("react");
6422
6553
 
6423
6554
  // lib/is-child-of-zone.ts
6424
6555
  init_react_import();
@@ -6464,7 +6595,7 @@ var LayerTree = ({
6464
6595
  label
6465
6596
  }) => {
6466
6597
  const zones = data.zones || {};
6467
- const ctx = (0, import_react40.useContext)(dropZoneContext);
6598
+ const ctx = (0, import_react42.useContext)(dropZoneContext);
6468
6599
  return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_jsx_runtime34.Fragment, { children: [
6469
6600
  label && /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: getClassName24("zoneTitle"), children: [
6470
6601
  /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: getClassName24("zoneIcon"), children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Layers, { size: "16" }) }),
@@ -6571,13 +6702,13 @@ var LayerTree = ({
6571
6702
  };
6572
6703
 
6573
6704
  // components/Puck/components/Outline/index.tsx
6574
- var import_react41 = require("react");
6705
+ var import_react43 = require("react");
6575
6706
  var import_jsx_runtime35 = require("react/jsx-runtime");
6576
6707
  var Outline = () => {
6577
6708
  const { dispatch, state, overrides, config } = useAppContext();
6578
6709
  const { data, ui } = state;
6579
6710
  const { itemSelector } = ui;
6580
- const setItemSelector = (0, import_react41.useCallback)(
6711
+ const setItemSelector = (0, import_react43.useCallback)(
6581
6712
  (newItemSelector) => {
6582
6713
  dispatch({
6583
6714
  type: "setUi",
@@ -6586,7 +6717,7 @@ var Outline = () => {
6586
6717
  },
6587
6718
  []
6588
6719
  );
6589
- const Wrapper = (0, import_react41.useMemo)(() => overrides.outline || "div", [overrides]);
6720
+ const Wrapper = (0, import_react43.useMemo)(() => overrides.outline || "div", [overrides]);
6590
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: [
6591
6722
  (ctx == null ? void 0 : ctx.activeZones) && (ctx == null ? void 0 : ctx.activeZones[rootDroppableId]) && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
6592
6723
  LayerTree,
@@ -6700,19 +6831,19 @@ function usePuckHistory({
6700
6831
 
6701
6832
  // lib/use-history-store.ts
6702
6833
  init_react_import();
6703
- var import_react42 = require("react");
6834
+ var import_react44 = require("react");
6704
6835
  var import_use_debounce3 = require("use-debounce");
6705
6836
  var EMPTY_HISTORY_INDEX = 0;
6706
6837
  function useHistoryStore(initialHistory) {
6707
6838
  var _a, _b;
6708
- const [histories, setHistories] = (0, import_react42.useState)(
6839
+ const [histories, setHistories] = (0, import_react44.useState)(
6709
6840
  (_a = initialHistory == null ? void 0 : initialHistory.histories) != null ? _a : []
6710
6841
  );
6711
6842
  const updateHistories = (histories2) => {
6712
6843
  setHistories(histories2);
6713
6844
  setIndex(histories2.length - 1);
6714
6845
  };
6715
- const [index, setIndex] = (0, import_react42.useState)(
6846
+ const [index, setIndex] = (0, import_react44.useState)(
6716
6847
  (_b = initialHistory == null ? void 0 : initialHistory.index) != null ? _b : EMPTY_HISTORY_INDEX
6717
6848
  );
6718
6849
  const hasPast = index > EMPTY_HISTORY_INDEX;
@@ -6872,11 +7003,11 @@ var getBox = function getBox2(el) {
6872
7003
  };
6873
7004
 
6874
7005
  // components/Puck/components/Canvas/index.tsx
6875
- var import_react44 = require("react");
7006
+ var import_react46 = require("react");
6876
7007
 
6877
7008
  // components/ViewportControls/index.tsx
6878
7009
  init_react_import();
6879
- var import_react43 = require("react");
7010
+ var import_react45 = require("react");
6880
7011
 
6881
7012
  // css-module:/home/runner/work/puck/puck/packages/core/components/ViewportControls/styles.module.css#css-module
6882
7013
  init_react_import();
@@ -6899,8 +7030,8 @@ var ViewportButton = ({
6899
7030
  onClick
6900
7031
  }) => {
6901
7032
  const { state } = useAppContext();
6902
- const [isActive, setIsActive] = (0, import_react43.useState)(false);
6903
- (0, import_react43.useEffect)(() => {
7033
+ const [isActive, setIsActive] = (0, import_react45.useState)(false);
7034
+ (0, import_react45.useEffect)(() => {
6904
7035
  setIsActive(width === state.ui.viewports.current.width);
6905
7036
  }, [width, state.ui.viewports.current.width]);
6906
7037
  return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: getClassNameButton({ isActive }), children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
@@ -6936,7 +7067,7 @@ var ViewportControls = ({
6936
7067
  const defaultsContainAutoZoom = defaultZoomOptions.find(
6937
7068
  (option) => option.value === autoZoom
6938
7069
  );
6939
- const zoomOptions = (0, import_react43.useMemo)(
7070
+ const zoomOptions = (0, import_react45.useMemo)(
6940
7071
  () => [
6941
7072
  ...defaultZoomOptions,
6942
7073
  ...defaultsContainAutoZoom ? [] : [
@@ -7059,17 +7190,17 @@ var Canvas = () => {
7059
7190
  const { status, iframe } = useAppContext();
7060
7191
  const { dispatch, state, overrides, setUi, zoomConfig, setZoomConfig } = useAppContext();
7061
7192
  const { ui } = state;
7062
- const frameRef = (0, import_react44.useRef)(null);
7063
- const [showTransition, setShowTransition] = (0, import_react44.useState)(false);
7064
- 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)(() => {
7065
7196
  const PuckDefault = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_jsx_runtime37.Fragment, { children });
7066
7197
  return PuckDefault;
7067
7198
  }, []);
7068
- const CustomPreview = (0, import_react44.useMemo)(
7199
+ const CustomPreview = (0, import_react46.useMemo)(
7069
7200
  () => overrides.preview || defaultRender,
7070
7201
  [overrides]
7071
7202
  );
7072
- const getFrameDimensions = (0, import_react44.useCallback)(() => {
7203
+ const getFrameDimensions = (0, import_react46.useCallback)(() => {
7073
7204
  if (frameRef.current) {
7074
7205
  const frame = frameRef.current;
7075
7206
  const box = getBox(frame);
@@ -7077,7 +7208,7 @@ var Canvas = () => {
7077
7208
  }
7078
7209
  return { width: 0, height: 0 };
7079
7210
  }, [frameRef]);
7080
- const resetAutoZoom = (0, import_react44.useCallback)(
7211
+ const resetAutoZoom = (0, import_react46.useCallback)(
7081
7212
  (ui2 = state.ui) => {
7082
7213
  if (frameRef.current) {
7083
7214
  setZoomConfig(
@@ -7087,11 +7218,11 @@ var Canvas = () => {
7087
7218
  },
7088
7219
  [frameRef, zoomConfig, state.ui]
7089
7220
  );
7090
- (0, import_react44.useEffect)(() => {
7221
+ (0, import_react46.useEffect)(() => {
7091
7222
  setShowTransition(false);
7092
7223
  resetAutoZoom();
7093
7224
  }, [frameRef, ui.leftSideBarVisible, ui.rightSideBarVisible]);
7094
- (0, import_react44.useEffect)(() => {
7225
+ (0, import_react46.useEffect)(() => {
7095
7226
  const { height: frameHeight } = getFrameDimensions();
7096
7227
  if (ui.viewports.current.height === "auto") {
7097
7228
  setZoomConfig(__spreadProps(__spreadValues({}, zoomConfig), {
@@ -7099,13 +7230,13 @@ var Canvas = () => {
7099
7230
  }));
7100
7231
  }
7101
7232
  }, [zoomConfig.zoom]);
7102
- (0, import_react44.useEffect)(() => {
7233
+ (0, import_react46.useEffect)(() => {
7103
7234
  if (ZOOM_ON_CHANGE) {
7104
7235
  setShowTransition(true);
7105
7236
  resetAutoZoom(ui);
7106
7237
  }
7107
7238
  }, [ui.viewports.current.width]);
7108
- (0, import_react44.useEffect)(() => {
7239
+ (0, import_react46.useEffect)(() => {
7109
7240
  const cb = () => {
7110
7241
  setShowTransition(false);
7111
7242
  resetAutoZoom();
@@ -7115,8 +7246,8 @@ var Canvas = () => {
7115
7246
  window.removeEventListener("resize", cb);
7116
7247
  };
7117
7248
  }, []);
7118
- const [showLoader, setShowLoader] = (0, import_react44.useState)(false);
7119
- (0, import_react44.useEffect)(() => {
7249
+ const [showLoader, setShowLoader] = (0, import_react46.useState)(false);
7250
+ (0, import_react46.useEffect)(() => {
7120
7251
  setTimeout(() => {
7121
7252
  setShowLoader(true);
7122
7253
  }, 500);
@@ -7194,7 +7325,7 @@ var Canvas = () => {
7194
7325
 
7195
7326
  // lib/use-loaded-overrides.ts
7196
7327
  init_react_import();
7197
- var import_react45 = require("react");
7328
+ var import_react47 = require("react");
7198
7329
 
7199
7330
  // lib/load-overrides.ts
7200
7331
  init_react_import();
@@ -7233,7 +7364,7 @@ var useLoadedOverrides = ({
7233
7364
  overrides,
7234
7365
  plugins
7235
7366
  }) => {
7236
- return (0, import_react45.useMemo)(() => {
7367
+ return (0, import_react47.useMemo)(() => {
7237
7368
  return loadOverrides({ overrides, plugins });
7238
7369
  }, [plugins, overrides]);
7239
7370
  };
@@ -7245,14 +7376,14 @@ var DefaultOverride = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime38
7245
7376
 
7246
7377
  // lib/use-inject-css.ts
7247
7378
  init_react_import();
7248
- var import_react46 = require("react");
7379
+ var import_react48 = require("react");
7249
7380
  var styles = ``;
7250
7381
  var useInjectStyleSheet = (initialStyles, iframeEnabled) => {
7251
- const [el, setEl] = (0, import_react46.useState)();
7252
- (0, import_react46.useEffect)(() => {
7382
+ const [el, setEl] = (0, import_react48.useState)();
7383
+ (0, import_react48.useEffect)(() => {
7253
7384
  setEl(document.createElement("style"));
7254
7385
  }, []);
7255
- (0, import_react46.useEffect)(() => {
7386
+ (0, import_react48.useEffect)(() => {
7256
7387
  var _a;
7257
7388
  if (!el || typeof window === "undefined") {
7258
7389
  return;
@@ -7272,10 +7403,10 @@ var useInjectGlobalCss = (iframeEnabled) => {
7272
7403
 
7273
7404
  // lib/use-preview-mode-hotkeys.ts
7274
7405
  init_react_import();
7275
- var import_react47 = require("react");
7406
+ var import_react49 = require("react");
7276
7407
  var import_react_hotkeys_hook2 = require("react-hotkeys-hook");
7277
7408
  var usePreviewModeHotkeys = (dispatch, iframeEnabled) => {
7278
- const toggleInteractive = (0, import_react47.useCallback)(() => {
7409
+ const toggleInteractive = (0, import_react49.useCallback)(() => {
7279
7410
  dispatch({
7280
7411
  type: "setUi",
7281
7412
  ui: (ui) => ({
@@ -7327,7 +7458,7 @@ function Puck({
7327
7458
  waitForStyles: true
7328
7459
  }, _iframe);
7329
7460
  useInjectGlobalCss(iframe.enabled);
7330
- const [generatedAppState] = (0, import_react48.useState)(() => {
7461
+ const [generatedAppState] = (0, import_react50.useState)(() => {
7331
7462
  var _a2, _b2, _c, _d, _e, _f, _g, _h, _i;
7332
7463
  const initial = __spreadValues(__spreadValues({}, defaultAppState.ui), initialUi);
7333
7464
  let clientUiState = {};
@@ -7399,14 +7530,14 @@ function Puck({
7399
7530
  histories,
7400
7531
  index: initialHistoryIndex
7401
7532
  });
7402
- const [reducer] = (0, import_react48.useState)(
7533
+ const [reducer] = (0, import_react50.useState)(
7403
7534
  () => createReducer({
7404
7535
  config,
7405
7536
  record: historyStore.record,
7406
7537
  onAction
7407
7538
  })
7408
7539
  );
7409
- const [appState, dispatch] = (0, import_react48.useReducer)(
7540
+ const [appState, dispatch] = (0, import_react50.useReducer)(
7410
7541
  reducer,
7411
7542
  flushZones(initialAppState)
7412
7543
  );
@@ -7417,14 +7548,14 @@ function Puck({
7417
7548
  historyStore,
7418
7549
  iframeEnabled: (_a = _iframe == null ? void 0 : _iframe.enabled) != null ? _a : true
7419
7550
  });
7420
- const [menuOpen, setMenuOpen] = (0, import_react48.useState)(false);
7551
+ const [menuOpen, setMenuOpen] = (0, import_react50.useState)(false);
7421
7552
  const { itemSelector, leftSideBarVisible, rightSideBarVisible } = ui;
7422
7553
  const selectedItem = itemSelector ? getItem(itemSelector, data) : null;
7423
- (0, import_react48.useEffect)(() => {
7554
+ (0, import_react50.useEffect)(() => {
7424
7555
  if (onChange) onChange(data);
7425
7556
  }, [data]);
7426
7557
  const rootProps = data.root.props || data.root;
7427
- const toggleSidebars = (0, import_react48.useCallback)(
7558
+ const toggleSidebars = (0, import_react50.useCallback)(
7428
7559
  (sidebar) => {
7429
7560
  const widerViewport = window.matchMedia("(min-width: 638px)").matches;
7430
7561
  const sideBarVisible = sidebar === "left" ? leftSideBarVisible : rightSideBarVisible;
@@ -7438,7 +7569,7 @@ function Puck({
7438
7569
  },
7439
7570
  [dispatch, leftSideBarVisible, rightSideBarVisible]
7440
7571
  );
7441
- (0, import_react48.useEffect)(() => {
7572
+ (0, import_react50.useEffect)(() => {
7442
7573
  if (!window.matchMedia("(min-width: 638px)").matches) {
7443
7574
  dispatch({
7444
7575
  type: "setUi",
@@ -7461,7 +7592,7 @@ function Puck({
7461
7592
  window.removeEventListener("resize", handleResize);
7462
7593
  };
7463
7594
  }, []);
7464
- const defaultHeaderRender = (0, import_react48.useMemo)(() => {
7595
+ const defaultHeaderRender = (0, import_react50.useMemo)(() => {
7465
7596
  if (renderHeader) {
7466
7597
  console.warn(
7467
7598
  "`renderHeader` is deprecated. Please use `overrides.header` and the `usePuck` hook instead"
@@ -7475,7 +7606,7 @@ function Puck({
7475
7606
  }
7476
7607
  return DefaultOverride;
7477
7608
  }, [renderHeader]);
7478
- const defaultHeaderActionsRender = (0, import_react48.useMemo)(() => {
7609
+ const defaultHeaderActionsRender = (0, import_react50.useMemo)(() => {
7479
7610
  if (renderHeaderActions) {
7480
7611
  console.warn(
7481
7612
  "`renderHeaderActions` is deprecated. Please use `overrides.headerActions` and the `usePuck` hook instead."
@@ -7492,20 +7623,20 @@ function Puck({
7492
7623
  overrides,
7493
7624
  plugins
7494
7625
  });
7495
- const CustomPuck = (0, import_react48.useMemo)(
7626
+ const CustomPuck = (0, import_react50.useMemo)(
7496
7627
  () => loadedOverrides.puck || DefaultOverride,
7497
7628
  [loadedOverrides]
7498
7629
  );
7499
- const CustomHeader = (0, import_react48.useMemo)(
7630
+ const CustomHeader = (0, import_react50.useMemo)(
7500
7631
  () => loadedOverrides.header || defaultHeaderRender,
7501
7632
  [loadedOverrides]
7502
7633
  );
7503
- const CustomHeaderActions = (0, import_react48.useMemo)(
7634
+ const CustomHeaderActions = (0, import_react50.useMemo)(
7504
7635
  () => loadedOverrides.headerActions || defaultHeaderActionsRender,
7505
7636
  [loadedOverrides]
7506
7637
  );
7507
- const [mounted, setMounted] = (0, import_react48.useState)(false);
7508
- (0, import_react48.useEffect)(() => {
7638
+ const [mounted, setMounted] = (0, import_react50.useState)(false);
7639
+ (0, import_react50.useEffect)(() => {
7509
7640
  setMounted(true);
7510
7641
  }, []);
7511
7642
  const selectedComponentConfig = selectedItem && config.components[selectedItem.type];