@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.mjs CHANGED
@@ -205,7 +205,7 @@ init_react_import();
205
205
 
206
206
  // css-module:/home/runner/work/puck/puck/packages/core/components/AutoField/styles.module.css#css-module
207
207
  init_react_import();
208
- 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" };
208
+ 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" };
209
209
 
210
210
  // components/AutoField/index.tsx
211
211
  import {
@@ -1504,12 +1504,13 @@ var DefaultField = ({
1504
1504
  field,
1505
1505
  onChange,
1506
1506
  readOnly,
1507
- value,
1507
+ value: _value,
1508
1508
  name,
1509
1509
  label,
1510
1510
  Label: Label2,
1511
1511
  id
1512
1512
  }) => {
1513
+ const value = _value;
1513
1514
  return /* @__PURE__ */ jsx9(
1514
1515
  Label2,
1515
1516
  {
@@ -1527,7 +1528,7 @@ var DefaultField = ({
1527
1528
  type: field.type,
1528
1529
  title: label || name,
1529
1530
  name,
1530
- value: typeof value === "undefined" ? "" : value.toString(),
1531
+ value: (value == null ? void 0 : value.toString) ? value.toString() : "",
1531
1532
  onChange: (e) => {
1532
1533
  if (field.type === "number") {
1533
1534
  const numberValue = Number(e.currentTarget.value);
@@ -2425,7 +2426,7 @@ init_react_import();
2425
2426
  var styles_module_default10 = { "Drawer": "_Drawer_fkqfo_1", "Drawer-draggable": "_Drawer-draggable_fkqfo_8", "Drawer-draggableBg": "_Drawer-draggableBg_fkqfo_12", "Drawer-draggableFg": "_Drawer-draggableFg_fkqfo_21", "DrawerItem-draggable": "_DrawerItem-draggable_fkqfo_25", "DrawerItem--disabled": "_DrawerItem--disabled_fkqfo_38", "DrawerItem": "_DrawerItem_fkqfo_25", "Drawer--isDraggingFrom": "_Drawer--isDraggingFrom_fkqfo_48", "DrawerItem-name": "_DrawerItem-name_fkqfo_66" };
2426
2427
 
2427
2428
  // components/Drawer/index.tsx
2428
- import { useMemo as useMemo9, useState as useState18 } from "react";
2429
+ import { useId as useId2, useMemo as useMemo9, useState as useState18 } from "react";
2429
2430
 
2430
2431
  // components/DragDropContext/index.tsx
2431
2432
  init_react_import();
@@ -2436,7 +2437,7 @@ import {
2436
2437
  useContext as useContext7,
2437
2438
  useEffect as useEffect15,
2438
2439
  useId,
2439
- useRef as useRef4,
2440
+ useRef as useRef3,
2440
2441
  useState as useState17
2441
2442
  } from "react";
2442
2443
  import { AutoScroller, defaultPreset } from "@dnd-kit/dom";
@@ -2449,7 +2450,7 @@ import {
2449
2450
  useContext as useContext6,
2450
2451
  useEffect as useEffect14,
2451
2452
  useMemo as useMemo8,
2452
- useRef as useRef3
2453
+ useRef as useRef2
2453
2454
  } from "react";
2454
2455
 
2455
2456
  // components/DraggableComponent/index.tsx
@@ -2459,7 +2460,7 @@ import {
2459
2460
  useContext as useContext5,
2460
2461
  useEffect as useEffect10,
2461
2462
  useMemo as useMemo7,
2462
- useRef as useRef2,
2463
+ useRef,
2463
2464
  useState as useState13
2464
2465
  } from "react";
2465
2466
 
@@ -3047,7 +3048,7 @@ var DraggableComponent = ({
3047
3048
  }
3048
3049
  });
3049
3050
  const thisIsDragging = status === "dragging";
3050
- const ref = useRef2(null);
3051
+ const ref = useRef(null);
3051
3052
  const refSetter = useCallback7(
3052
3053
  (el) => {
3053
3054
  sortableRef(el);
@@ -3098,13 +3099,19 @@ var DraggableComponent = ({
3098
3099
  }
3099
3100
  }, [ref.current]);
3100
3101
  useEffect10(() => {
3101
- if (isSelected) {
3102
- ctx == null ? void 0 : ctx.registerPath({
3102
+ ctx == null ? void 0 : ctx.registerPath(
3103
+ id,
3104
+ {
3103
3105
  index,
3104
3106
  zone: zoneCompound
3105
- });
3106
- }
3107
- }, [isSelected]);
3107
+ },
3108
+ componentType
3109
+ );
3110
+ return () => {
3111
+ var _a;
3112
+ (_a = ctx == null ? void 0 : ctx.unregisterPath) == null ? void 0 : _a.call(ctx, id);
3113
+ };
3114
+ }, [id, zoneCompound, index, componentType]);
3108
3115
  const CustomActionBar = useMemo7(
3109
3116
  () => overrides.actionBar || DefaultActionBar,
3110
3117
  [overrides.actionBar]
@@ -3424,9 +3431,20 @@ var useContentWithPreview = (content, zoneCompound) => {
3424
3431
  };
3425
3432
  }
3426
3433
  );
3434
+ const {
3435
+ state: {
3436
+ ui: { isDragging }
3437
+ }
3438
+ } = useAppContext();
3427
3439
  const [contentWithPreview, setContentWithPreview] = useState15(content);
3440
+ const [localPreview, setLocalPreview] = useState15(
3441
+ preview
3442
+ );
3428
3443
  const updateContent = useRenderedCallback(
3429
- (content2, preview2) => {
3444
+ (content2, preview2, isDragging2) => {
3445
+ if (isDragging2 && !previewExists) {
3446
+ return;
3447
+ }
3430
3448
  if (preview2) {
3431
3449
  if (preview2.type === "insert") {
3432
3450
  setContentWithPreview(
@@ -3456,13 +3474,14 @@ var useContentWithPreview = (content, zoneCompound) => {
3456
3474
  previewExists ? content2.filter((item) => item.props.id !== draggedItemId) : content2
3457
3475
  );
3458
3476
  }
3477
+ setLocalPreview(preview2);
3459
3478
  },
3460
3479
  [draggedItemId, previewExists]
3461
3480
  );
3462
3481
  useEffect12(() => {
3463
- updateContent(content, preview);
3464
- }, [content, preview]);
3465
- return contentWithPreview;
3482
+ updateContent(content, preview, isDragging);
3483
+ }, [content, preview, isDragging]);
3484
+ return [contentWithPreview, localPreview];
3466
3485
  };
3467
3486
 
3468
3487
  // components/DropZone/lib/use-drag-axis.ts
@@ -3506,8 +3525,9 @@ import { Fragment as Fragment6, jsx as jsx22, jsxs as jsxs10 } from "react/jsx-r
3506
3525
  var getClassName17 = get_class_name_factory_default("DropZone", styles_module_default12);
3507
3526
  var getRandomColor = () => `#${Math.floor(Math.random() * 16777215).toString(16)}`;
3508
3527
  var RENDER_DEBUG = false;
3528
+ var DropZoneEditPure = (props) => /* @__PURE__ */ jsx22(DropZoneEdit, __spreadValues({}, props));
3509
3529
  var DropZoneEdit = forwardRef3(
3510
- function DropZoneEdit2({
3530
+ function DropZoneEditInternal({
3511
3531
  zone,
3512
3532
  allow,
3513
3533
  disallow,
@@ -3541,8 +3561,7 @@ var DropZoneEdit = forwardRef3(
3541
3561
  isDeepestZone,
3542
3562
  inNextDeepestArea,
3543
3563
  draggedComponentType,
3544
- userIsDragging,
3545
- preview
3564
+ userIsDragging
3546
3565
  } = useContextStore(ZoneStoreContext, (s) => {
3547
3566
  var _a, _b, _c;
3548
3567
  return {
@@ -3550,8 +3569,7 @@ var DropZoneEdit = forwardRef3(
3550
3569
  inNextDeepestArea: s.nextAreaDepthIndex[areaId || ""],
3551
3570
  draggedItemId: (_b = s.draggedItem) == null ? void 0 : _b.id,
3552
3571
  draggedComponentType: (_c = s.draggedItem) == null ? void 0 : _c.data.componentType,
3553
- userIsDragging: !!s.draggedItem,
3554
- preview: s.previewIndex[zoneCompound]
3572
+ userIsDragging: !!s.draggedItem
3555
3573
  };
3556
3574
  });
3557
3575
  const { itemSelector } = appContext2.state.ui;
@@ -3576,7 +3594,7 @@ var DropZoneEdit = forwardRef3(
3576
3594
  }
3577
3595
  return data.content || [];
3578
3596
  }, [data, zoneCompound]);
3579
- const ref = useRef3(null);
3597
+ const ref = useRef2(null);
3580
3598
  const acceptsTarget = useCallback10(
3581
3599
  (componentType) => {
3582
3600
  if (!componentType) {
@@ -3617,7 +3635,10 @@ var DropZoneEdit = forwardRef3(
3617
3635
  if (isEnabled) {
3618
3636
  isEnabled = acceptsTarget(draggedComponentType);
3619
3637
  }
3620
- const contentWithPreview = useContentWithPreview(content, zoneCompound);
3638
+ const [contentWithPreview, preview] = useContentWithPreview(
3639
+ content,
3640
+ zoneCompound
3641
+ );
3621
3642
  const isDropEnabled = isEnabled && (preview ? contentWithPreview.length === 1 : contentWithPreview.length === 0);
3622
3643
  const droppableConfig = {
3623
3644
  id: zoneCompound,
@@ -3659,16 +3680,15 @@ var DropZoneEdit = forwardRef3(
3659
3680
  },
3660
3681
  "data-testid": `dropzone:${zoneCompound}`,
3661
3682
  "data-puck-dropzone": zoneCompound,
3662
- "data-puck-dnd": zoneCompound,
3663
3683
  style: __spreadProps(__spreadValues({}, style), {
3664
3684
  "--min-empty-height": `${minEmptyHeight}px`,
3665
- backgroundColor: RENDER_DEBUG ? getRandomColor() : void 0
3685
+ backgroundColor: RENDER_DEBUG ? getRandomColor() : style == null ? void 0 : style.backgroundColor
3666
3686
  }),
3667
3687
  children: contentWithPreview.map((item, i) => {
3668
- var _a, _b, _c, _d, _e;
3688
+ var _a, _b, _c, _d, _e, _f, _g;
3669
3689
  const componentId = item.props.id;
3670
3690
  const puckProps = {
3671
- renderDropZone: DropZone,
3691
+ renderDropZone: DropZoneEditPure,
3672
3692
  isEditing: true,
3673
3693
  dragRef: null
3674
3694
  };
@@ -3685,13 +3705,13 @@ var DropZoneEdit = forwardRef3(
3685
3705
  const componentConfig = config.components[item.type];
3686
3706
  let componentType = item.type;
3687
3707
  let label = (_b = componentConfig == null ? void 0 : componentConfig["label"]) != null ? _b : item.type.toString();
3688
- if (item.type === "preview" && preview) {
3708
+ if (item.type === "preview") {
3689
3709
  let Preview4 = function() {
3690
3710
  return /* @__PURE__ */ jsx22(DrawerItemInner, { name: label, children: appContext2.overrides.componentItem });
3691
3711
  };
3692
3712
  var Preview3 = Preview4;
3693
- componentType = preview.componentType;
3694
- label = (_d = (_c = config.components[componentType]) == null ? void 0 : _c.label) != null ? _d : preview.componentType;
3713
+ componentType = (_c = preview == null ? void 0 : preview.componentType) != null ? _c : "__preview";
3714
+ label = (_f = (_e = (_d = config.components[componentType]) == null ? void 0 : _d.label) != null ? _e : componentType) != null ? _f : "Preview";
3695
3715
  Render2 = Preview4;
3696
3716
  }
3697
3717
  return /* @__PURE__ */ jsx22(
@@ -3706,7 +3726,7 @@ var DropZoneEdit = forwardRef3(
3706
3726
  zoneCompound,
3707
3727
  depth: depth + 1,
3708
3728
  index: i,
3709
- isLoading: ((_e = appContext2.componentState[componentId]) == null ? void 0 : _e.loadingCount) > 0,
3729
+ isLoading: ((_g = appContext2.componentState[componentId]) == null ? void 0 : _g.loadingCount) > 0,
3710
3730
  isSelected,
3711
3731
  label,
3712
3732
  isEnabled,
@@ -3731,8 +3751,9 @@ var DropZoneEdit = forwardRef3(
3731
3751
  );
3732
3752
  }
3733
3753
  );
3754
+ var DropZoneRenderPure = (props) => /* @__PURE__ */ jsx22(DropZoneRender, __spreadValues({}, props));
3734
3755
  var DropZoneRender = forwardRef3(
3735
- function DropZoneRender2({ className, style, zone }, ref) {
3756
+ function DropZoneRenderInternal({ className, style, zone }, ref) {
3736
3757
  const ctx = useContext6(dropZoneContext);
3737
3758
  const { data, areaId = "root", config } = ctx || {};
3738
3759
  let zoneCompound = rootDroppableId;
@@ -3770,7 +3791,9 @@ var DropZoneRender = forwardRef3(
3770
3791
  children: /* @__PURE__ */ jsx22(
3771
3792
  Component.render,
3772
3793
  __spreadProps(__spreadValues({}, item.props), {
3773
- puck: { renderDropZone: DropZoneRender2 }
3794
+ puck: {
3795
+ renderDropZone: DropZoneRenderPure
3796
+ }
3774
3797
  })
3775
3798
  )
3776
3799
  },
@@ -3845,6 +3868,48 @@ var getFrame = () => {
3845
3868
  return (frameEl == null ? void 0 : frameEl.ownerDocument) || document;
3846
3869
  };
3847
3870
 
3871
+ // lib/global-position.ts
3872
+ init_react_import();
3873
+ var GlobalPosition = class {
3874
+ constructor(target, original) {
3875
+ this.scaleFactor = 1;
3876
+ this.frameEl = null;
3877
+ this.frameRect = null;
3878
+ var _a;
3879
+ this.target = target;
3880
+ this.original = original;
3881
+ this.frameEl = document.querySelector("iframe");
3882
+ if (this.frameEl) {
3883
+ this.frameRect = this.frameEl.getBoundingClientRect();
3884
+ this.scaleFactor = this.frameRect.width / (((_a = this.frameEl.contentWindow) == null ? void 0 : _a.innerWidth) || 1);
3885
+ }
3886
+ }
3887
+ get x() {
3888
+ return this.original.x;
3889
+ }
3890
+ get y() {
3891
+ return this.original.y;
3892
+ }
3893
+ get global() {
3894
+ if (document !== this.target.ownerDocument && this.frameRect) {
3895
+ return {
3896
+ x: this.x * this.scaleFactor + this.frameRect.left,
3897
+ y: this.y * this.scaleFactor + this.frameRect.top
3898
+ };
3899
+ }
3900
+ return this.original;
3901
+ }
3902
+ get frame() {
3903
+ if (document === this.target.ownerDocument && this.frameRect) {
3904
+ return {
3905
+ x: (this.x - this.frameRect.left) / this.scaleFactor,
3906
+ y: (this.y - this.frameRect.top) / this.scaleFactor
3907
+ };
3908
+ }
3909
+ return this.original;
3910
+ }
3911
+ };
3912
+
3848
3913
  // lib/dnd/NestedDroppablePlugin.ts
3849
3914
  var depthSort = (candidates) => {
3850
3915
  return candidates.sort((a, b) => {
@@ -3874,10 +3939,12 @@ var getZoneId2 = (candidate) => {
3874
3939
  }
3875
3940
  return id;
3876
3941
  };
3877
- var getPointerCollisions = (position, manager, ownerDocument) => {
3878
- var _a;
3942
+ var getPointerCollisions = (position, manager) => {
3879
3943
  const candidates = [];
3880
- let elements = ownerDocument.elementsFromPoint(position.x, position.y);
3944
+ let elements = position.target.ownerDocument.elementsFromPoint(
3945
+ position.x,
3946
+ position.y
3947
+ );
3881
3948
  const previewFrame = elements.find(
3882
3949
  (el) => el.getAttribute("data-puck-preview")
3883
3950
  );
@@ -3886,22 +3953,21 @@ var getPointerCollisions = (position, manager, ownerDocument) => {
3886
3953
  elements = [drawer];
3887
3954
  }
3888
3955
  if (previewFrame) {
3889
- const iframe = previewFrame.querySelector("iframe");
3890
- if (iframe) {
3891
- const rect = iframe.getBoundingClientRect();
3892
- const frame = getFrame();
3893
- if (frame) {
3894
- const scaleFactor = rect.width / (((_a = iframe.contentWindow) == null ? void 0 : _a.innerWidth) || 1);
3895
- elements = frame.elementsFromPoint(
3896
- (position.x - rect.left) / scaleFactor,
3897
- (position.y - rect.top) / scaleFactor
3898
- );
3899
- }
3956
+ const frame = getFrame();
3957
+ if (frame) {
3958
+ elements = frame.elementsFromPoint(position.frame.x, position.frame.y);
3900
3959
  }
3901
3960
  }
3902
3961
  if (elements) {
3903
3962
  for (let i = 0; i < elements.length; i++) {
3904
3963
  const element = elements[i];
3964
+ const dropzoneId = element.getAttribute("data-puck-dropzone");
3965
+ if (dropzoneId) {
3966
+ const droppable = manager.registry.droppables.get(dropzoneId);
3967
+ if (droppable) {
3968
+ candidates.push(droppable);
3969
+ }
3970
+ }
3905
3971
  const id = element.getAttribute("data-puck-dnd");
3906
3972
  if (id) {
3907
3973
  const droppable = manager.registry.droppables.get(id);
@@ -3913,9 +3979,9 @@ var getPointerCollisions = (position, manager, ownerDocument) => {
3913
3979
  }
3914
3980
  return candidates;
3915
3981
  };
3916
- var findDeepestCandidate = (position, manager, ownerDocument) => {
3982
+ var findDeepestCandidate = (position, manager) => {
3917
3983
  var _a;
3918
- const candidates = getPointerCollisions(position, manager, ownerDocument);
3984
+ const candidates = getPointerCollisions(position, manager);
3919
3985
  if (candidates.length > 0) {
3920
3986
  const sortedCandidates = depthSort(candidates);
3921
3987
  const draggable = manager.dragOperation.source;
@@ -3968,22 +4034,18 @@ var createNestedDroppablePlugin = ({ onChange }, id) => class NestedDroppablePlu
3968
4034
  }
3969
4035
  const cleanupEffect = effects(() => {
3970
4036
  const handleMove = (event) => {
3971
- const position = {
4037
+ const target = event.originalTarget || event.target;
4038
+ const position = new GlobalPosition(target, {
3972
4039
  x: event.clientX,
3973
4040
  y: event.clientY
3974
- };
3975
- const target = event.originalTarget || event.target;
3976
- const ownerDocument = target == null ? void 0 : target.ownerDocument;
4041
+ });
3977
4042
  const elements = document.elementsFromPoint(
3978
- event.clientX,
3979
- event.clientY
4043
+ position.global.x,
4044
+ position.global.y
3980
4045
  );
3981
4046
  const overEl = elements.some((el) => el.id === id);
3982
4047
  if (overEl) {
3983
- onChange(
3984
- findDeepestCandidate(position, manager, ownerDocument),
3985
- manager
3986
- );
4048
+ onChange(findDeepestCandidate(position, manager), manager);
3987
4049
  }
3988
4050
  };
3989
4051
  const handleMoveThrottled = throttle(handleMove, 50);
@@ -4314,6 +4376,11 @@ var reduceUi = (ui, action) => {
4314
4376
  itemSelector: { index: action.sourceIndex + 1, zone: action.sourceZone }
4315
4377
  });
4316
4378
  }
4379
+ if (action.type === "remove") {
4380
+ return __spreadProps(__spreadValues({}, ui), {
4381
+ itemSelector: null
4382
+ });
4383
+ }
4317
4384
  return ui;
4318
4385
  };
4319
4386
 
@@ -4573,6 +4640,9 @@ var _PointerSensor = class _PointerSensor extends Sensor {
4573
4640
  }
4574
4641
  }
4575
4642
  handlePointerUp(event) {
4643
+ if (!this.source) {
4644
+ return;
4645
+ }
4576
4646
  event.preventDefault();
4577
4647
  event.stopPropagation();
4578
4648
  const { status } = this.manager.dragOperation;
@@ -4690,7 +4760,7 @@ function useDragListener(type, fn, deps = []) {
4690
4760
  }
4691
4761
  var AREA_CHANGE_DEBOUNCE_MS = 100;
4692
4762
  var useTempDisableFallback = (timeout3) => {
4693
- const lastFallbackDisable = useRef4(null);
4763
+ const lastFallbackDisable = useRef3(null);
4694
4764
  return useCallback11((manager) => {
4695
4765
  collisionStore.setState({ fallbackEnabled: false });
4696
4766
  const fallbackId = generateId();
@@ -4710,7 +4780,7 @@ var DragDropContextClient = ({
4710
4780
  const { state, config, dispatch, resolveData } = useAppContext();
4711
4781
  const id = useId();
4712
4782
  const { data } = state;
4713
- const debouncedParamsRef = useRef4(null);
4783
+ const debouncedParamsRef = useRef3(null);
4714
4784
  const tempDisableFallback = useTempDisableFallback(100);
4715
4785
  const [zoneStore] = useState17(
4716
4786
  () => createStore3(() => ({
@@ -4849,30 +4919,36 @@ var DragDropContextClient = ({
4849
4919
  ]);
4850
4920
  const [dragListeners, setDragListeners] = useState17({});
4851
4921
  const [pathData, setPathData] = useState17();
4852
- const dragMode = useRef4(null);
4922
+ const dragMode = useRef3(null);
4853
4923
  const registerPath = useCallback11(
4854
- (selector) => {
4855
- const item = getItem(selector, data);
4856
- if (!item) {
4857
- return;
4858
- }
4924
+ (id2, selector, label) => {
4859
4925
  const [area] = getZoneId(selector.zone);
4860
4926
  setPathData((latestPathData = {}) => {
4861
4927
  const parentPathData = latestPathData[area] || { path: [] };
4862
4928
  return __spreadProps(__spreadValues({}, latestPathData), {
4863
- [item.props.id]: {
4929
+ [id2]: {
4864
4930
  path: [
4865
4931
  ...parentPathData.path,
4866
4932
  ...selector.zone ? [selector.zone] : []
4867
4933
  ],
4868
- label: item.type
4934
+ label
4869
4935
  }
4870
4936
  });
4871
4937
  });
4872
4938
  },
4873
4939
  [data, setPathData]
4874
4940
  );
4875
- const initialSelector = useRef4(void 0);
4941
+ const unregisterPath = useCallback11(
4942
+ (id2) => {
4943
+ setPathData((latestPathData = {}) => {
4944
+ const newPathData = __spreadValues({}, latestPathData);
4945
+ delete newPathData[id2];
4946
+ return newPathData;
4947
+ });
4948
+ },
4949
+ [data, setPathData]
4950
+ );
4951
+ const initialSelector = useRef3(void 0);
4876
4952
  return /* @__PURE__ */ jsx23("div", { id, children: /* @__PURE__ */ jsx23(
4877
4953
  dragListenerContext.Provider,
4878
4954
  {
@@ -5068,6 +5144,7 @@ var DragDropContextClient = ({
5068
5144
  areaId: "root",
5069
5145
  depth: 0,
5070
5146
  registerPath,
5147
+ unregisterPath,
5071
5148
  pathData,
5072
5149
  path: []
5073
5150
  },
@@ -5194,7 +5271,7 @@ var Drawer = ({
5194
5271
  "Warning: The `direction` prop on Drawer is deprecated and no longer required to achieve multi-directional dragging."
5195
5272
  );
5196
5273
  }
5197
- const [id] = useState18(generateId());
5274
+ const id = useId2();
5198
5275
  const { ref } = useDroppableSafe({
5199
5276
  id,
5200
5277
  type: "void",
@@ -5217,9 +5294,9 @@ Drawer.Item = DrawerItem;
5217
5294
  // components/Puck/index.tsx
5218
5295
  init_react_import();
5219
5296
  import {
5220
- useCallback as useCallback17,
5221
- useEffect as useEffect23,
5222
- useMemo as useMemo18,
5297
+ useCallback as useCallback18,
5298
+ useEffect as useEffect24,
5299
+ useMemo as useMemo19,
5223
5300
  useReducer,
5224
5301
  useState as useState26
5225
5302
  } from "react";
@@ -5415,36 +5492,61 @@ init_react_import();
5415
5492
 
5416
5493
  // css-module:/home/runner/work/puck/puck/packages/core/components/Puck/components/Fields/styles.module.css#css-module
5417
5494
  init_react_import();
5418
- 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" };
5495
+ 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" };
5419
5496
 
5420
5497
  // components/Puck/components/Fields/index.tsx
5421
- import { useCallback as useCallback12, useEffect as useEffect16, useMemo as useMemo11, useState as useState19 } from "react";
5498
+ import { useMemo as useMemo12 } from "react";
5499
+
5500
+ // lib/use-resolved-fields.ts
5501
+ init_react_import();
5502
+ import { useCallback as useCallback13, useEffect as useEffect17, useMemo as useMemo11, useRef as useRef5, useState as useState19 } from "react";
5422
5503
 
5423
5504
  // lib/use-parent.ts
5424
5505
  init_react_import();
5425
- import { useContext as useContext9 } from "react";
5426
- var useParent = (itemSelector) => {
5506
+ import { useCallback as useCallback12, useContext as useContext9 } from "react";
5507
+ var getParent = (itemSelector, pathData, data) => {
5427
5508
  var _a;
5428
- const { selectedItem, state } = useAppContext();
5429
- const { pathData } = useContext9(dropZoneContext) || {};
5430
- const item = itemSelector ? getItem(itemSelector, state.data) : selectedItem;
5431
- const breadcrumbs = convertPathDataToBreadcrumbs(item, pathData, state.data);
5509
+ if (!itemSelector) return null;
5510
+ const item = getItem(itemSelector, data);
5511
+ const breadcrumbs = convertPathDataToBreadcrumbs(item, pathData, data);
5432
5512
  const lastItem = breadcrumbs[breadcrumbs.length - 1];
5433
- const parent = (lastItem == null ? void 0 : lastItem.selector) ? (_a = getItem(lastItem.selector, state.data)) != null ? _a : null : null;
5513
+ const parent = (lastItem == null ? void 0 : lastItem.selector) ? (_a = getItem(lastItem.selector, data)) != null ? _a : null : null;
5434
5514
  return parent || null;
5435
5515
  };
5516
+ var useGetParent = () => {
5517
+ const { state } = useAppContext();
5518
+ const { pathData } = useContext9(dropZoneContext) || {};
5519
+ return useCallback12(
5520
+ () => getParent(state.ui.itemSelector, pathData, state.data),
5521
+ [state.ui.itemSelector, pathData, state.data]
5522
+ );
5523
+ };
5524
+ var useParent = () => {
5525
+ return useGetParent()();
5526
+ };
5436
5527
 
5437
- // components/Puck/components/Fields/index.tsx
5438
- import { Fragment as Fragment8, jsx as jsx27, jsxs as jsxs14 } from "react/jsx-runtime";
5439
- var getClassName21 = get_class_name_factory_default("PuckFields", styles_module_default16);
5528
+ // lib/use-on-value-change.ts
5529
+ init_react_import();
5530
+ import { useRef as useRef4, useEffect as useEffect16 } from "react";
5531
+ function useOnValueChange(value, onChange, compare = Object.is, deps = []) {
5532
+ const tracked = useRef4(value);
5533
+ useEffect16(() => {
5534
+ const oldValue = tracked.current;
5535
+ if (!compare(value, oldValue)) {
5536
+ tracked.current = value;
5537
+ onChange(value, oldValue);
5538
+ }
5539
+ }, [onChange, compare, value, ...deps]);
5540
+ }
5541
+
5542
+ // lib/selector-is.ts
5543
+ init_react_import();
5544
+ 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);
5545
+
5546
+ // lib/use-resolved-fields.ts
5440
5547
  var defaultPageFields = {
5441
5548
  title: { type: "text" }
5442
5549
  };
5443
- var DefaultFields = ({
5444
- children
5445
- }) => {
5446
- return /* @__PURE__ */ jsx27(Fragment8, { children });
5447
- };
5448
5550
  var useResolvedFields = () => {
5449
5551
  var _a, _b;
5450
5552
  const { selectedItem, state, config } = useAppContext();
@@ -5460,12 +5562,13 @@ var useResolvedFields = () => {
5460
5562
  const [lastSelectedData, setLastSelectedData] = useState19({});
5461
5563
  const [resolvedFields, setResolvedFields] = useState19(defaultFields);
5462
5564
  const [fieldsLoading, setFieldsLoading] = useState19(false);
5565
+ const lastFields = useRef5(defaultFields);
5463
5566
  const defaultResolveFields = (_componentData, _params) => defaultFields;
5464
5567
  const componentData = selectedItem ? selectedItem : { props: rootProps, readOnly: data.root.readOnly };
5465
5568
  const hasComponentResolver = selectedItem && (componentConfig == null ? void 0 : componentConfig.resolveFields);
5466
5569
  const hasRootResolver = !selectedItem && ((_b = config.root) == null ? void 0 : _b.resolveFields);
5467
5570
  const hasResolver = hasComponentResolver || hasRootResolver;
5468
- const resolveFields = useCallback12(
5571
+ const resolveFields = useCallback13(
5469
5572
  (..._0) => __async(void 0, [..._0], function* (fields = {}) {
5470
5573
  var _a2;
5471
5574
  const lastData = ((_a2 = lastSelectedData.props) == null ? void 0 : _a2.id) === componentData.props.id ? lastSelectedData : null;
@@ -5477,7 +5580,7 @@ var useResolvedFields = () => {
5477
5580
  {
5478
5581
  changed,
5479
5582
  fields,
5480
- lastFields: resolvedFields,
5583
+ lastFields: lastFields.current,
5481
5584
  lastData,
5482
5585
  appState: state,
5483
5586
  parent
@@ -5488,7 +5591,7 @@ var useResolvedFields = () => {
5488
5591
  return yield config.root.resolveFields(componentData, {
5489
5592
  changed,
5490
5593
  fields,
5491
- lastFields: resolvedFields,
5594
+ lastFields: lastFields.current,
5492
5595
  lastData,
5493
5596
  appState: state,
5494
5597
  parent
@@ -5497,26 +5600,56 @@ var useResolvedFields = () => {
5497
5600
  return defaultResolveFields(componentData, {
5498
5601
  changed,
5499
5602
  fields,
5500
- lastFields: resolvedFields,
5603
+ lastFields: lastFields.current,
5501
5604
  lastData
5502
5605
  });
5503
5606
  }),
5504
- [data, config, componentData, selectedItem, resolvedFields, state]
5607
+ [data, config, componentData, selectedItem, state, parent]
5505
5608
  );
5506
- useEffect16(() => {
5507
- if (hasResolver) {
5508
- setFieldsLoading(true);
5509
- resolveFields(defaultFields).then((fields) => {
5510
- setResolvedFields(fields || {});
5511
- setFieldsLoading(false);
5512
- });
5513
- } else {
5514
- setResolvedFields(defaultFields);
5609
+ const triggerResolver = useCallback13(() => {
5610
+ var _a2, _b2;
5611
+ if (!((_a2 = state.ui.itemSelector) == null ? void 0 : _a2.zone) || ((_b2 = state.ui.itemSelector) == null ? void 0 : _b2.zone) === "default-zone" || parent) {
5612
+ if (hasResolver) {
5613
+ setFieldsLoading(true);
5614
+ resolveFields(defaultFields).then((fields) => {
5615
+ setResolvedFields(fields || {});
5616
+ lastFields.current = fields;
5617
+ setFieldsLoading(false);
5618
+ });
5619
+ return;
5620
+ }
5515
5621
  }
5516
- }, [data, defaultFields, selectedItem, hasResolver]);
5622
+ setResolvedFields(defaultFields);
5623
+ }, [defaultFields, state.ui.itemSelector, hasResolver, parent]);
5624
+ useOnValueChange(
5625
+ state.ui.itemSelector,
5626
+ () => {
5627
+ lastFields.current = defaultFields;
5628
+ },
5629
+ selectorIs
5630
+ );
5631
+ useOnValueChange(
5632
+ { data, parent, itemSelector: state.ui.itemSelector },
5633
+ () => {
5634
+ triggerResolver();
5635
+ },
5636
+ (a, b) => JSON.stringify(a) === JSON.stringify(b)
5637
+ );
5638
+ useEffect17(() => {
5639
+ triggerResolver();
5640
+ }, []);
5517
5641
  return [resolvedFields, fieldsLoading];
5518
5642
  };
5519
- var Fields = () => {
5643
+
5644
+ // components/Puck/components/Fields/index.tsx
5645
+ import { Fragment as Fragment8, jsx as jsx27, jsxs as jsxs14 } from "react/jsx-runtime";
5646
+ var getClassName21 = get_class_name_factory_default("PuckFields", styles_module_default16);
5647
+ var DefaultFields = ({
5648
+ children
5649
+ }) => {
5650
+ return /* @__PURE__ */ jsx27(Fragment8, { children });
5651
+ };
5652
+ var Fields = ({ wrapFields = true }) => {
5520
5653
  var _a, _b;
5521
5654
  const {
5522
5655
  selectedItem,
@@ -5534,11 +5667,11 @@ var Fields = () => {
5534
5667
  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;
5535
5668
  const isLoading = fieldsResolving || componentResolving;
5536
5669
  const rootProps = data.root.props || data.root;
5537
- const Wrapper = useMemo11(() => overrides.fields || DefaultFields, [overrides]);
5670
+ const Wrapper = useMemo12(() => overrides.fields || DefaultFields, [overrides]);
5538
5671
  return /* @__PURE__ */ jsxs14(
5539
5672
  "form",
5540
5673
  {
5541
- className: getClassName21(),
5674
+ className: getClassName21({ wrapFields }),
5542
5675
  onSubmit: (e) => {
5543
5676
  e.preventDefault();
5544
5677
  },
@@ -5614,7 +5747,7 @@ var Fields = () => {
5614
5747
  item: selectedItem
5615
5748
  });
5616
5749
  const id = `${selectedItem.props.id}_${field.type}_${fieldName}`;
5617
- return /* @__PURE__ */ jsx27(
5750
+ return /* @__PURE__ */ jsx27("div", { className: getClassName21("field"), children: /* @__PURE__ */ jsx27(
5618
5751
  AutoFieldPrivate,
5619
5752
  {
5620
5753
  field,
@@ -5623,16 +5756,15 @@ var Fields = () => {
5623
5756
  readOnly: !edit || readOnly[fieldName],
5624
5757
  value: selectedItem.props[fieldName],
5625
5758
  onChange
5626
- },
5627
- id
5628
- );
5759
+ }
5760
+ ) }, id);
5629
5761
  } else {
5630
5762
  const readOnly = data.root.readOnly || {};
5631
5763
  const { edit } = getPermissions({
5632
5764
  root: true
5633
5765
  });
5634
5766
  const id = `root_${field.type}_${fieldName}`;
5635
- return /* @__PURE__ */ jsx27(
5767
+ return /* @__PURE__ */ jsx27("div", { className: getClassName21("field"), children: /* @__PURE__ */ jsx27(
5636
5768
  AutoFieldPrivate,
5637
5769
  {
5638
5770
  field,
@@ -5641,9 +5773,8 @@ var Fields = () => {
5641
5773
  readOnly: !edit || readOnly[fieldName],
5642
5774
  value: rootProps[fieldName],
5643
5775
  onChange
5644
- },
5645
- id
5646
- );
5776
+ }
5777
+ ) }, id);
5647
5778
  }
5648
5779
  }) }),
5649
5780
  isLoading && /* @__PURE__ */ jsx27("div", { className: getClassName21("loadingOverlay"), children: /* @__PURE__ */ jsx27("div", { className: getClassName21("loadingOverlayInner"), children: /* @__PURE__ */ jsx27(Loader, { size: 16 }) }) })
@@ -5657,7 +5788,7 @@ init_react_import();
5657
5788
 
5658
5789
  // lib/use-component-list.tsx
5659
5790
  init_react_import();
5660
- import { useEffect as useEffect17, useState as useState20 } from "react";
5791
+ import { useEffect as useEffect18, useState as useState20 } from "react";
5661
5792
 
5662
5793
  // components/ComponentList/index.tsx
5663
5794
  init_react_import();
@@ -5725,7 +5856,7 @@ ComponentList.Item = ComponentListItem;
5725
5856
  import { jsx as jsx29 } from "react/jsx-runtime";
5726
5857
  var useComponentList = (config, ui) => {
5727
5858
  const [componentList, setComponentList] = useState20();
5728
- useEffect17(() => {
5859
+ useEffect18(() => {
5729
5860
  var _a, _b, _c;
5730
5861
  if (Object.keys(ui.componentList).length > 0) {
5731
5862
  const matchedComponents = [];
@@ -5794,25 +5925,25 @@ var useComponentList = (config, ui) => {
5794
5925
  };
5795
5926
 
5796
5927
  // components/Puck/components/Components/index.tsx
5797
- import { useMemo as useMemo12 } from "react";
5928
+ import { useMemo as useMemo13 } from "react";
5798
5929
  import { jsx as jsx30 } from "react/jsx-runtime";
5799
5930
  var Components = () => {
5800
5931
  const { config, state, overrides } = useAppContext();
5801
5932
  const componentList = useComponentList(config, state.ui);
5802
- const Wrapper = useMemo12(() => overrides.components || "div", [overrides]);
5933
+ const Wrapper = useMemo13(() => overrides.components || "div", [overrides]);
5803
5934
  return /* @__PURE__ */ jsx30(Wrapper, { children: componentList ? componentList : /* @__PURE__ */ jsx30(ComponentList, { id: "all" }) });
5804
5935
  };
5805
5936
 
5806
5937
  // components/Puck/components/Preview/index.tsx
5807
5938
  init_react_import();
5808
- import { useCallback as useCallback13, useEffect as useEffect19, useRef as useRef6, useMemo as useMemo13 } from "react";
5939
+ import { useCallback as useCallback14, useEffect as useEffect20, useRef as useRef7, useMemo as useMemo14 } from "react";
5809
5940
 
5810
5941
  // components/AutoFrame/index.tsx
5811
5942
  init_react_import();
5812
5943
  import {
5813
5944
  createContext as createContext5,
5814
5945
  useContext as useContext10,
5815
- useEffect as useEffect18,
5946
+ useEffect as useEffect19,
5816
5947
  useState as useState21
5817
5948
  } from "react";
5818
5949
  import hash from "object-hash";
@@ -5860,7 +5991,7 @@ var CopyHostStyles = ({
5860
5991
  onStylesLoaded = () => null
5861
5992
  }) => {
5862
5993
  const { document: doc, window: win } = useFrame();
5863
- useEffect18(() => {
5994
+ useEffect19(() => {
5864
5995
  if (!win || !doc) {
5865
5996
  return () => {
5866
5997
  };
@@ -6040,7 +6171,7 @@ function AutoFrame(_a) {
6040
6171
  const [loaded, setLoaded] = useState21(false);
6041
6172
  const [ctx, setCtx] = useState21({});
6042
6173
  const [mountTarget, setMountTarget] = useState21();
6043
- useEffect18(() => {
6174
+ useEffect19(() => {
6044
6175
  var _a2;
6045
6176
  if (frameRef.current) {
6046
6177
  setCtx({
@@ -6134,7 +6265,7 @@ import { Fragment as Fragment10, jsx as jsx33 } from "react/jsx-runtime";
6134
6265
  var getClassName23 = get_class_name_factory_default("PuckPreview", styles_module_default18);
6135
6266
  var useBubbleIframeEvents = (ref) => {
6136
6267
  const { status } = useAppContext();
6137
- useEffect19(() => {
6268
+ useEffect20(() => {
6138
6269
  var _a;
6139
6270
  if (ref.current && status === "READY") {
6140
6271
  const iframe = ref.current;
@@ -6173,7 +6304,7 @@ var useBubbleIframeEvents = (ref) => {
6173
6304
  };
6174
6305
  var Preview2 = ({ id = "puck-preview" }) => {
6175
6306
  const { config, dispatch, state, setStatus, iframe, overrides } = useAppContext();
6176
- const Page = useCallback13(
6307
+ const Page = useCallback14(
6177
6308
  (pageProps) => {
6178
6309
  var _a, _b;
6179
6310
  return ((_a = config.root) == null ? void 0 : _a.render) ? (_b = config.root) == null ? void 0 : _b.render(__spreadValues({
@@ -6182,9 +6313,9 @@ var Preview2 = ({ id = "puck-preview" }) => {
6182
6313
  },
6183
6314
  [config.root]
6184
6315
  );
6185
- const Frame = useMemo13(() => overrides.iframe, [overrides]);
6316
+ const Frame = useMemo14(() => overrides.iframe, [overrides]);
6186
6317
  const rootProps = state.data.root.props || state.data.root;
6187
- const ref = useRef6(null);
6318
+ const ref = useRef7(null);
6188
6319
  useBubbleIframeEvents(ref);
6189
6320
  const inner = state.ui.previewMode === "edit" ? /* @__PURE__ */ jsx33(
6190
6321
  Page,
@@ -6434,13 +6565,13 @@ var LayerTree = ({
6434
6565
  };
6435
6566
 
6436
6567
  // components/Puck/components/Outline/index.tsx
6437
- import { useCallback as useCallback14, useMemo as useMemo14 } from "react";
6568
+ import { useCallback as useCallback15, useMemo as useMemo15 } from "react";
6438
6569
  import { Fragment as Fragment12, jsx as jsx35, jsxs as jsxs17 } from "react/jsx-runtime";
6439
6570
  var Outline = () => {
6440
6571
  const { dispatch, state, overrides, config } = useAppContext();
6441
6572
  const { data, ui } = state;
6442
6573
  const { itemSelector } = ui;
6443
- const setItemSelector = useCallback14(
6574
+ const setItemSelector = useCallback15(
6444
6575
  (newItemSelector) => {
6445
6576
  dispatch({
6446
6577
  type: "setUi",
@@ -6449,7 +6580,7 @@ var Outline = () => {
6449
6580
  },
6450
6581
  []
6451
6582
  );
6452
- const Wrapper = useMemo14(() => overrides.outline || "div", [overrides]);
6583
+ const Wrapper = useMemo15(() => overrides.outline || "div", [overrides]);
6453
6584
  return /* @__PURE__ */ jsx35(Wrapper, { children: /* @__PURE__ */ jsx35(dropZoneContext.Consumer, { children: (ctx) => /* @__PURE__ */ jsxs17(Fragment12, { children: [
6454
6585
  (ctx == null ? void 0 : ctx.activeZones) && (ctx == null ? void 0 : ctx.activeZones[rootDroppableId]) && /* @__PURE__ */ jsx35(
6455
6586
  LayerTree,
@@ -6736,16 +6867,16 @@ var getBox = function getBox2(el) {
6736
6867
 
6737
6868
  // components/Puck/components/Canvas/index.tsx
6738
6869
  import {
6739
- useCallback as useCallback15,
6740
- useEffect as useEffect21,
6741
- useMemo as useMemo16,
6742
- useRef as useRef7,
6870
+ useCallback as useCallback16,
6871
+ useEffect as useEffect22,
6872
+ useMemo as useMemo17,
6873
+ useRef as useRef8,
6743
6874
  useState as useState24
6744
6875
  } from "react";
6745
6876
 
6746
6877
  // components/ViewportControls/index.tsx
6747
6878
  init_react_import();
6748
- import { useEffect as useEffect20, useMemo as useMemo15, useState as useState23 } from "react";
6879
+ import { useEffect as useEffect21, useMemo as useMemo16, useState as useState23 } from "react";
6749
6880
 
6750
6881
  // css-module:/home/runner/work/puck/puck/packages/core/components/ViewportControls/styles.module.css#css-module
6751
6882
  init_react_import();
@@ -6769,7 +6900,7 @@ var ViewportButton = ({
6769
6900
  }) => {
6770
6901
  const { state } = useAppContext();
6771
6902
  const [isActive, setIsActive] = useState23(false);
6772
- useEffect20(() => {
6903
+ useEffect21(() => {
6773
6904
  setIsActive(width === state.ui.viewports.current.width);
6774
6905
  }, [width, state.ui.viewports.current.width]);
6775
6906
  return /* @__PURE__ */ jsx36("span", { className: getClassNameButton({ isActive }), children: /* @__PURE__ */ jsx36(
@@ -6805,7 +6936,7 @@ var ViewportControls = ({
6805
6936
  const defaultsContainAutoZoom = defaultZoomOptions.find(
6806
6937
  (option) => option.value === autoZoom
6807
6938
  );
6808
- const zoomOptions = useMemo15(
6939
+ const zoomOptions = useMemo16(
6809
6940
  () => [
6810
6941
  ...defaultZoomOptions,
6811
6942
  ...defaultsContainAutoZoom ? [] : [
@@ -6928,17 +7059,17 @@ var Canvas = () => {
6928
7059
  const { status, iframe } = useAppContext();
6929
7060
  const { dispatch, state, overrides, setUi, zoomConfig, setZoomConfig } = useAppContext();
6930
7061
  const { ui } = state;
6931
- const frameRef = useRef7(null);
7062
+ const frameRef = useRef8(null);
6932
7063
  const [showTransition, setShowTransition] = useState24(false);
6933
- const defaultRender = useMemo16(() => {
7064
+ const defaultRender = useMemo17(() => {
6934
7065
  const PuckDefault = ({ children }) => /* @__PURE__ */ jsx37(Fragment13, { children });
6935
7066
  return PuckDefault;
6936
7067
  }, []);
6937
- const CustomPreview = useMemo16(
7068
+ const CustomPreview = useMemo17(
6938
7069
  () => overrides.preview || defaultRender,
6939
7070
  [overrides]
6940
7071
  );
6941
- const getFrameDimensions = useCallback15(() => {
7072
+ const getFrameDimensions = useCallback16(() => {
6942
7073
  if (frameRef.current) {
6943
7074
  const frame = frameRef.current;
6944
7075
  const box = getBox(frame);
@@ -6946,7 +7077,7 @@ var Canvas = () => {
6946
7077
  }
6947
7078
  return { width: 0, height: 0 };
6948
7079
  }, [frameRef]);
6949
- const resetAutoZoom = useCallback15(
7080
+ const resetAutoZoom = useCallback16(
6950
7081
  (ui2 = state.ui) => {
6951
7082
  if (frameRef.current) {
6952
7083
  setZoomConfig(
@@ -6956,11 +7087,11 @@ var Canvas = () => {
6956
7087
  },
6957
7088
  [frameRef, zoomConfig, state.ui]
6958
7089
  );
6959
- useEffect21(() => {
7090
+ useEffect22(() => {
6960
7091
  setShowTransition(false);
6961
7092
  resetAutoZoom();
6962
7093
  }, [frameRef, ui.leftSideBarVisible, ui.rightSideBarVisible]);
6963
- useEffect21(() => {
7094
+ useEffect22(() => {
6964
7095
  const { height: frameHeight } = getFrameDimensions();
6965
7096
  if (ui.viewports.current.height === "auto") {
6966
7097
  setZoomConfig(__spreadProps(__spreadValues({}, zoomConfig), {
@@ -6968,13 +7099,13 @@ var Canvas = () => {
6968
7099
  }));
6969
7100
  }
6970
7101
  }, [zoomConfig.zoom]);
6971
- useEffect21(() => {
7102
+ useEffect22(() => {
6972
7103
  if (ZOOM_ON_CHANGE) {
6973
7104
  setShowTransition(true);
6974
7105
  resetAutoZoom(ui);
6975
7106
  }
6976
7107
  }, [ui.viewports.current.width]);
6977
- useEffect21(() => {
7108
+ useEffect22(() => {
6978
7109
  const cb = () => {
6979
7110
  setShowTransition(false);
6980
7111
  resetAutoZoom();
@@ -6985,7 +7116,7 @@ var Canvas = () => {
6985
7116
  };
6986
7117
  }, []);
6987
7118
  const [showLoader, setShowLoader] = useState24(false);
6988
- useEffect21(() => {
7119
+ useEffect22(() => {
6989
7120
  setTimeout(() => {
6990
7121
  setShowLoader(true);
6991
7122
  }, 500);
@@ -7063,7 +7194,7 @@ var Canvas = () => {
7063
7194
 
7064
7195
  // lib/use-loaded-overrides.ts
7065
7196
  init_react_import();
7066
- import { useMemo as useMemo17 } from "react";
7197
+ import { useMemo as useMemo18 } from "react";
7067
7198
 
7068
7199
  // lib/load-overrides.ts
7069
7200
  init_react_import();
@@ -7102,7 +7233,7 @@ var useLoadedOverrides = ({
7102
7233
  overrides,
7103
7234
  plugins
7104
7235
  }) => {
7105
- return useMemo17(() => {
7236
+ return useMemo18(() => {
7106
7237
  return loadOverrides({ overrides, plugins });
7107
7238
  }, [plugins, overrides]);
7108
7239
  };
@@ -7114,14 +7245,14 @@ var DefaultOverride = ({ children }) => /* @__PURE__ */ jsx38(Fragment14, { chil
7114
7245
 
7115
7246
  // lib/use-inject-css.ts
7116
7247
  init_react_import();
7117
- import { useEffect as useEffect22, useState as useState25 } from "react";
7248
+ import { useEffect as useEffect23, useState as useState25 } from "react";
7118
7249
  var styles = ``;
7119
7250
  var useInjectStyleSheet = (initialStyles, iframeEnabled) => {
7120
7251
  const [el, setEl] = useState25();
7121
- useEffect22(() => {
7252
+ useEffect23(() => {
7122
7253
  setEl(document.createElement("style"));
7123
7254
  }, []);
7124
- useEffect22(() => {
7255
+ useEffect23(() => {
7125
7256
  var _a;
7126
7257
  if (!el || typeof window === "undefined") {
7127
7258
  return;
@@ -7141,10 +7272,10 @@ var useInjectGlobalCss = (iframeEnabled) => {
7141
7272
 
7142
7273
  // lib/use-preview-mode-hotkeys.ts
7143
7274
  init_react_import();
7144
- import { useCallback as useCallback16 } from "react";
7275
+ import { useCallback as useCallback17 } from "react";
7145
7276
  import { useHotkeys as useHotkeys2 } from "react-hotkeys-hook";
7146
7277
  var usePreviewModeHotkeys = (dispatch, iframeEnabled) => {
7147
- const toggleInteractive = useCallback16(() => {
7278
+ const toggleInteractive = useCallback17(() => {
7148
7279
  dispatch({
7149
7280
  type: "setUi",
7150
7281
  ui: (ui) => ({
@@ -7289,11 +7420,11 @@ function Puck({
7289
7420
  const [menuOpen, setMenuOpen] = useState26(false);
7290
7421
  const { itemSelector, leftSideBarVisible, rightSideBarVisible } = ui;
7291
7422
  const selectedItem = itemSelector ? getItem(itemSelector, data) : null;
7292
- useEffect23(() => {
7423
+ useEffect24(() => {
7293
7424
  if (onChange) onChange(data);
7294
7425
  }, [data]);
7295
7426
  const rootProps = data.root.props || data.root;
7296
- const toggleSidebars = useCallback17(
7427
+ const toggleSidebars = useCallback18(
7297
7428
  (sidebar) => {
7298
7429
  const widerViewport = window.matchMedia("(min-width: 638px)").matches;
7299
7430
  const sideBarVisible = sidebar === "left" ? leftSideBarVisible : rightSideBarVisible;
@@ -7307,7 +7438,7 @@ function Puck({
7307
7438
  },
7308
7439
  [dispatch, leftSideBarVisible, rightSideBarVisible]
7309
7440
  );
7310
- useEffect23(() => {
7441
+ useEffect24(() => {
7311
7442
  if (!window.matchMedia("(min-width: 638px)").matches) {
7312
7443
  dispatch({
7313
7444
  type: "setUi",
@@ -7330,7 +7461,7 @@ function Puck({
7330
7461
  window.removeEventListener("resize", handleResize);
7331
7462
  };
7332
7463
  }, []);
7333
- const defaultHeaderRender = useMemo18(() => {
7464
+ const defaultHeaderRender = useMemo19(() => {
7334
7465
  if (renderHeader) {
7335
7466
  console.warn(
7336
7467
  "`renderHeader` is deprecated. Please use `overrides.header` and the `usePuck` hook instead"
@@ -7344,7 +7475,7 @@ function Puck({
7344
7475
  }
7345
7476
  return DefaultOverride;
7346
7477
  }, [renderHeader]);
7347
- const defaultHeaderActionsRender = useMemo18(() => {
7478
+ const defaultHeaderActionsRender = useMemo19(() => {
7348
7479
  if (renderHeaderActions) {
7349
7480
  console.warn(
7350
7481
  "`renderHeaderActions` is deprecated. Please use `overrides.headerActions` and the `usePuck` hook instead."
@@ -7361,20 +7492,20 @@ function Puck({
7361
7492
  overrides,
7362
7493
  plugins
7363
7494
  });
7364
- const CustomPuck = useMemo18(
7495
+ const CustomPuck = useMemo19(
7365
7496
  () => loadedOverrides.puck || DefaultOverride,
7366
7497
  [loadedOverrides]
7367
7498
  );
7368
- const CustomHeader = useMemo18(
7499
+ const CustomHeader = useMemo19(
7369
7500
  () => loadedOverrides.header || defaultHeaderRender,
7370
7501
  [loadedOverrides]
7371
7502
  );
7372
- const CustomHeaderActions = useMemo18(
7503
+ const CustomHeaderActions = useMemo19(
7373
7504
  () => loadedOverrides.headerActions || defaultHeaderActionsRender,
7374
7505
  [loadedOverrides]
7375
7506
  );
7376
7507
  const [mounted, setMounted] = useState26(false);
7377
- useEffect23(() => {
7508
+ useEffect24(() => {
7378
7509
  setMounted(true);
7379
7510
  }, []);
7380
7511
  const selectedComponentConfig = selectedItem && config.components[selectedItem.type];