@measured/puck 0.16.1-canary.1a6216d → 0.16.1-canary.20d7309

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
@@ -138,7 +138,7 @@ var get_class_name_factory_default = getClassNameFactory;
138
138
 
139
139
  // css-module:/home/runner/work/puck/puck/packages/core/components/ActionBar/styles.module.css#css-module
140
140
  init_react_import();
141
- var styles_module_default = { "ActionBar": "_ActionBar_fp58q_1", "ActionBar-actionsLabel": "_ActionBar-actionsLabel_fp58q_16", "ActionBar-group": "_ActionBar-group_fp58q_29", "ActionBar-action": "_ActionBar-action_fp58q_16" };
141
+ var styles_module_default = { "ActionBar": "_ActionBar_1xlbj_1", "ActionBar-actionsLabel": "_ActionBar-actionsLabel_1xlbj_16", "ActionBar-group": "_ActionBar-group_1xlbj_29", "ActionBar-action": "_ActionBar-action_1xlbj_16" };
142
142
 
143
143
  // components/ActionBar/index.tsx
144
144
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -180,6 +180,7 @@ import {
180
180
  useCallback as useCallback5,
181
181
  useEffect as useEffect9,
182
182
  useMemo as useMemo2,
183
+ useRef as useRef2,
183
184
  useState as useState10
184
185
  } from "react";
185
186
 
@@ -652,16 +653,15 @@ var useResolvedPermissions = (config, appState, globalPermissions, setComponentL
652
653
  const resolveDataForItem = useCallback(
653
654
  (item, force = false) => __async(void 0, null, function* () {
654
655
  var _a, _b, _c;
655
- setComponentLoading == null ? void 0 : setComponentLoading(item.props.id);
656
656
  const componentConfig = item.type === "root" ? config.root : config.components[item.type];
657
657
  if (!componentConfig) {
658
- unsetComponentLoading == null ? void 0 : unsetComponentLoading(item.props.id);
659
658
  return;
660
659
  }
661
660
  const initialPermissions = __spreadValues(__spreadValues({}, globalPermissions), componentConfig.permissions);
662
661
  if (componentConfig.resolvePermissions) {
663
662
  const changed = getChanged(item, (_a = cache3[item.props.id]) == null ? void 0 : _a.lastData);
664
663
  if (Object.values(changed).some((el) => el === true) || force) {
664
+ setComponentLoading == null ? void 0 : setComponentLoading(item.props.id);
665
665
  const resolvedPermissions2 = yield componentConfig.resolvePermissions(
666
666
  item,
667
667
  {
@@ -681,9 +681,9 @@ var useResolvedPermissions = (config, appState, globalPermissions, setComponentL
681
681
  setResolvedPermissions((p) => __spreadProps(__spreadValues({}, p), {
682
682
  [item.props.id]: resolvedPermissions2
683
683
  }));
684
+ unsetComponentLoading == null ? void 0 : unsetComponentLoading(item.props.id);
684
685
  }
685
686
  }
686
- unsetComponentLoading == null ? void 0 : unsetComponentLoading(item.props.id);
687
687
  }),
688
688
  [config, globalPermissions, appState, cache3]
689
689
  );
@@ -1339,6 +1339,9 @@ var ArrayField = ({
1339
1339
  e.stopPropagation();
1340
1340
  setHovering(false);
1341
1341
  },
1342
+ onClick: (e) => {
1343
+ e.preventDefault();
1344
+ },
1342
1345
  children: [
1343
1346
  localState.arrayState.items.map((item, i) => {
1344
1347
  const { _arrayId = `${id}-${i}`, _originalIndex = i } = item;
@@ -2217,9 +2220,12 @@ function AutoFieldInternal(props) {
2217
2220
  const Render2 = render[field.type];
2218
2221
  return /* @__PURE__ */ jsx20(Render2, __spreadProps(__spreadValues({}, mergedProps), { children }));
2219
2222
  }
2223
+ var RECENT_CHANGE_TIMEOUT = 200;
2220
2224
  function AutoFieldPrivate(props) {
2221
2225
  const { value, onChange } = props;
2222
2226
  const [localValue, setLocalValue] = useState10(value);
2227
+ const [recentlyChanged, setRecentlyChanged] = useState10(false);
2228
+ const timeoutRef = useRef2();
2223
2229
  const onChangeDb = useDebouncedCallback(
2224
2230
  (val, ui) => {
2225
2231
  onChange(val, ui);
@@ -2229,10 +2235,17 @@ function AutoFieldPrivate(props) {
2229
2235
  );
2230
2236
  const onChangeLocal = useCallback5((val, ui) => {
2231
2237
  setLocalValue(val);
2238
+ setRecentlyChanged(true);
2239
+ clearTimeout(timeoutRef.current);
2240
+ timeoutRef.current = setTimeout(() => {
2241
+ setRecentlyChanged(false);
2242
+ }, RECENT_CHANGE_TIMEOUT);
2232
2243
  onChangeDb(val, ui);
2233
2244
  }, []);
2234
2245
  useEffect9(() => {
2235
- setLocalValue(value);
2246
+ if (!recentlyChanged) {
2247
+ setLocalValue(value);
2248
+ }
2236
2249
  }, [value]);
2237
2250
  const localProps = {
2238
2251
  value: localValue,
@@ -2240,8 +2253,16 @@ function AutoFieldPrivate(props) {
2240
2253
  };
2241
2254
  return /* @__PURE__ */ jsx20(AutoFieldInternal, __spreadValues(__spreadValues({}, props), localProps));
2242
2255
  }
2243
- var DefaultLabel = (props) => /* @__PURE__ */ jsx20("div", __spreadValues({}, props));
2244
2256
  function AutoField(props) {
2257
+ const DefaultLabel = useMemo2(() => {
2258
+ const DefaultLabel2 = (labelProps) => /* @__PURE__ */ jsx20(
2259
+ "div",
2260
+ __spreadProps(__spreadValues({}, labelProps), {
2261
+ className: getClassName15({ readOnly: props.readOnly })
2262
+ })
2263
+ );
2264
+ return DefaultLabel2;
2265
+ }, [props.readOnly]);
2245
2266
  return /* @__PURE__ */ jsx20(AutoFieldInternal, __spreadProps(__spreadValues({}, props), { Label: DefaultLabel }));
2246
2267
  }
2247
2268
 
@@ -2388,13 +2409,8 @@ var isIos = () => [
2388
2409
  ].includes(navigator.platform) || // iPad on iOS 13 detection
2389
2410
  navigator.userAgent.includes("Mac") && "ontouchend" in document;
2390
2411
 
2391
- // components/DefaultOverride/index.tsx
2392
- init_react_import();
2393
- import { Fragment as Fragment9, jsx as jsx22 } from "react/jsx-runtime";
2394
- var DefaultOverride = ({ children }) => /* @__PURE__ */ jsx22(Fragment9, { children });
2395
-
2396
2412
  // components/DraggableComponent/index.tsx
2397
- import { jsx as jsx23, jsxs as jsxs11 } from "react/jsx-runtime";
2413
+ import { jsx as jsx22, jsxs as jsxs11 } from "react/jsx-runtime";
2398
2414
  var getClassName17 = get_class_name_factory_default("DraggableComponent", styles_module_default11);
2399
2415
  var space = 8;
2400
2416
  var actionsOverlayTop = space * 6.5;
@@ -2403,7 +2419,7 @@ var actionsRight = space;
2403
2419
  var DefaultActionBar = ({
2404
2420
  label,
2405
2421
  children
2406
- }) => /* @__PURE__ */ jsx23(ActionBar, { label, children: /* @__PURE__ */ jsx23(ActionBar.Group, { children: /* @__PURE__ */ jsx23(DefaultOverride, { children }) }) });
2422
+ }) => /* @__PURE__ */ jsx22(ActionBar, { label, children: /* @__PURE__ */ jsx22(ActionBar.Group, { children }) });
2407
2423
  var DraggableComponent = ({
2408
2424
  children,
2409
2425
  id,
@@ -2443,7 +2459,7 @@ var DraggableComponent = ({
2443
2459
  const permissions = getPermissions({
2444
2460
  item: selectedItem
2445
2461
  });
2446
- return /* @__PURE__ */ jsx23(
2462
+ return /* @__PURE__ */ jsx22(
2447
2463
  El,
2448
2464
  {
2449
2465
  draggableId: id,
@@ -2473,15 +2489,15 @@ var DraggableComponent = ({
2473
2489
  onClick,
2474
2490
  children: [
2475
2491
  debug,
2476
- isLoading && /* @__PURE__ */ jsx23("div", { className: getClassName17("loadingOverlay"), children: /* @__PURE__ */ jsx23(Loader, {}) }),
2477
- isSelected && /* @__PURE__ */ jsx23(
2492
+ isLoading && /* @__PURE__ */ jsx22("div", { className: getClassName17("loadingOverlay"), children: /* @__PURE__ */ jsx22(Loader, {}) }),
2493
+ isSelected && /* @__PURE__ */ jsx22(
2478
2494
  "div",
2479
2495
  {
2480
2496
  className: getClassName17("actionsOverlay"),
2481
2497
  style: {
2482
2498
  top: actionsOverlayTop / zoomConfig.zoom
2483
2499
  },
2484
- children: /* @__PURE__ */ jsx23(
2500
+ children: /* @__PURE__ */ jsx22(
2485
2501
  "div",
2486
2502
  {
2487
2503
  className: getClassName17("actions"),
@@ -2491,15 +2507,15 @@ var DraggableComponent = ({
2491
2507
  right: actionsRight / zoomConfig.zoom
2492
2508
  },
2493
2509
  children: /* @__PURE__ */ jsxs11(CustomActionBar, { label, children: [
2494
- permissions.duplicate && /* @__PURE__ */ jsx23(ActionBar.Action, { onClick: onDuplicate, label: "Duplicate", children: /* @__PURE__ */ jsx23(Copy, { size: 16 }) }),
2495
- permissions.delete && /* @__PURE__ */ jsx23(ActionBar.Action, { onClick: onDelete, label: "Delete", children: /* @__PURE__ */ jsx23(Trash, { size: 16 }) })
2510
+ permissions.duplicate && /* @__PURE__ */ jsx22(ActionBar.Action, { onClick: onDuplicate, label: "Duplicate", children: /* @__PURE__ */ jsx22(Copy, { size: 16 }) }),
2511
+ permissions.delete && /* @__PURE__ */ jsx22(ActionBar.Action, { onClick: onDelete, label: "Delete", children: /* @__PURE__ */ jsx22(Trash, { size: 16 }) })
2496
2512
  ] })
2497
2513
  }
2498
2514
  )
2499
2515
  }
2500
2516
  ),
2501
- /* @__PURE__ */ jsx23("div", { className: getClassName17("overlay") }),
2502
- /* @__PURE__ */ jsx23("div", { className: getClassName17("contents"), children })
2517
+ /* @__PURE__ */ jsx22("div", { className: getClassName17("overlay") }),
2518
+ /* @__PURE__ */ jsx22("div", { className: getClassName17("contents"), children })
2503
2519
  ]
2504
2520
  })
2505
2521
  )
@@ -2534,7 +2550,7 @@ var getZoneId = (zoneCompound) => {
2534
2550
  };
2535
2551
 
2536
2552
  // components/DropZone/context.tsx
2537
- import { Fragment as Fragment10, jsx as jsx24 } from "react/jsx-runtime";
2553
+ import { Fragment as Fragment9, jsx as jsx23 } from "react/jsx-runtime";
2538
2554
  var dropZoneContext = createContext3(null);
2539
2555
  var DropZoneProvider = ({
2540
2556
  children,
@@ -2612,7 +2628,7 @@ var DropZoneProvider = ({
2612
2628
  [value, setPathData]
2613
2629
  );
2614
2630
  const [zoneWillDrag, setZoneWillDrag] = useState13("");
2615
- return /* @__PURE__ */ jsx24(Fragment10, { children: value && /* @__PURE__ */ jsx24(
2631
+ return /* @__PURE__ */ jsx23(Fragment9, { children: value && /* @__PURE__ */ jsx23(
2616
2632
  dropZoneContext.Provider,
2617
2633
  {
2618
2634
  value: __spreadValues({
@@ -2638,7 +2654,7 @@ var DropZoneProvider = ({
2638
2654
  };
2639
2655
 
2640
2656
  // components/DropZone/index.tsx
2641
- import { Fragment as Fragment11, jsx as jsx25, jsxs as jsxs12 } from "react/jsx-runtime";
2657
+ import { Fragment as Fragment10, jsx as jsx24, jsxs as jsxs12 } from "react/jsx-runtime";
2642
2658
  var getClassName18 = get_class_name_factory_default("DropZone", styles_module_default12);
2643
2659
  function DropZoneEdit({ zone, allow, disallow, style }) {
2644
2660
  var _a;
@@ -2693,7 +2709,7 @@ function DropZoneEdit({ zone, allow, disallow, style }) {
2693
2709
  const draggingOverArea = userIsDragging && zoneArea === draggedSourceArea;
2694
2710
  const draggingNewComponent = draggedSourceId == null ? void 0 : draggedSourceId.startsWith("component-list");
2695
2711
  if (!(ctx == null ? void 0 : ctx.config) || !ctx.setHoveringArea || !ctx.setHoveringZone || !ctx.setHoveringComponent || !ctx.setItemSelector || !ctx.registerPath || !ctx.dispatch) {
2696
- return /* @__PURE__ */ jsx25("div", { children: "DropZone requires context to work." });
2712
+ return /* @__PURE__ */ jsx24("div", { children: "DropZone requires context to work." });
2697
2713
  }
2698
2714
  const {
2699
2715
  hoveringArea = "root",
@@ -2734,7 +2750,7 @@ function DropZoneEdit({ zone, allow, disallow, style }) {
2734
2750
  }
2735
2751
  const selectedItem = itemSelector ? getItem(itemSelector, data) : null;
2736
2752
  const isAreaSelected = selectedItem && zoneArea === selectedItem.props.id;
2737
- return /* @__PURE__ */ jsx25(
2753
+ return /* @__PURE__ */ jsx24(
2738
2754
  "div",
2739
2755
  {
2740
2756
  className: getClassName18({
@@ -2751,7 +2767,7 @@ function DropZoneEdit({ zone, allow, disallow, style }) {
2751
2767
  onMouseUp: () => {
2752
2768
  setZoneWillDrag("");
2753
2769
  },
2754
- children: /* @__PURE__ */ jsx25(
2770
+ children: /* @__PURE__ */ jsx24(
2755
2771
  Droppable,
2756
2772
  {
2757
2773
  droppableId: zoneCompound,
@@ -2806,13 +2822,13 @@ function DropZoneEdit({ zone, allow, disallow, style }) {
2806
2822
  className: getClassName18("item"),
2807
2823
  style: { zIndex: isDragging ? 1 : void 0 },
2808
2824
  children: [
2809
- /* @__PURE__ */ jsx25(
2825
+ /* @__PURE__ */ jsx24(
2810
2826
  DropZoneProvider,
2811
2827
  {
2812
2828
  value: __spreadProps(__spreadValues({}, ctx), {
2813
2829
  areaId: componentId
2814
2830
  }),
2815
- children: /* @__PURE__ */ jsx25(
2831
+ children: /* @__PURE__ */ jsx24(
2816
2832
  DraggableComponent,
2817
2833
  {
2818
2834
  label,
@@ -2880,12 +2896,12 @@ function DropZoneEdit({ zone, allow, disallow, style }) {
2880
2896
  style: {
2881
2897
  pointerEvents: userIsDragging && draggingNewComponent ? "all" : void 0
2882
2898
  },
2883
- children: /* @__PURE__ */ jsx25("div", { className: getClassName18("renderWrapper"), children: /* @__PURE__ */ jsx25(Render2, __spreadValues({}, defaultedProps)) })
2899
+ children: /* @__PURE__ */ jsx24("div", { className: getClassName18("renderWrapper"), children: /* @__PURE__ */ jsx24(Render2, __spreadValues({}, defaultedProps)) })
2884
2900
  }
2885
2901
  )
2886
2902
  }
2887
2903
  ),
2888
- userIsDragging && /* @__PURE__ */ jsx25(
2904
+ userIsDragging && /* @__PURE__ */ jsx24(
2889
2905
  "div",
2890
2906
  {
2891
2907
  className: getClassName18("hitbox"),
@@ -2902,7 +2918,7 @@ function DropZoneEdit({ zone, allow, disallow, style }) {
2902
2918
  );
2903
2919
  }),
2904
2920
  provided == null ? void 0 : provided.placeholder,
2905
- (snapshot == null ? void 0 : snapshot.isDraggingOver) && /* @__PURE__ */ jsx25(
2921
+ (snapshot == null ? void 0 : snapshot.isDraggingOver) && /* @__PURE__ */ jsx24(
2906
2922
  "div",
2907
2923
  {
2908
2924
  "data-puck-placeholder": true,
@@ -2934,14 +2950,14 @@ function DropZoneRender({ zone }) {
2934
2950
  zoneCompound = `${areaId}:${zone}`;
2935
2951
  content = setupZone(data, zoneCompound).zones[zoneCompound];
2936
2952
  }
2937
- return /* @__PURE__ */ jsx25(Fragment11, { children: content.map((item) => {
2953
+ return /* @__PURE__ */ jsx24(Fragment10, { children: content.map((item) => {
2938
2954
  const Component = config.components[item.type];
2939
2955
  if (Component) {
2940
- return /* @__PURE__ */ jsx25(
2956
+ return /* @__PURE__ */ jsx24(
2941
2957
  DropZoneProvider,
2942
2958
  {
2943
2959
  value: { data, config, areaId: item.props.id },
2944
- children: /* @__PURE__ */ jsx25(
2960
+ children: /* @__PURE__ */ jsx24(
2945
2961
  Component.render,
2946
2962
  __spreadProps(__spreadValues({}, item.props), {
2947
2963
  puck: { renderDropZone: DropZone }
@@ -2957,9 +2973,9 @@ function DropZoneRender({ zone }) {
2957
2973
  function DropZone(props) {
2958
2974
  const ctx = useContext3(dropZoneContext);
2959
2975
  if ((ctx == null ? void 0 : ctx.mode) === "edit") {
2960
- return /* @__PURE__ */ jsx25(DropZoneEdit, __spreadValues({}, props));
2976
+ return /* @__PURE__ */ jsx24(DropZoneEdit, __spreadValues({}, props));
2961
2977
  }
2962
- return /* @__PURE__ */ jsx25(DropZoneRender, __spreadValues({}, props));
2978
+ return /* @__PURE__ */ jsx24(DropZoneRender, __spreadValues({}, props));
2963
2979
  }
2964
2980
 
2965
2981
  // components/Puck/index.tsx
@@ -3107,7 +3123,7 @@ var useBreadcrumbs = (renderCount) => {
3107
3123
  };
3108
3124
 
3109
3125
  // components/SidebarSection/index.tsx
3110
- import { jsx as jsx26, jsxs as jsxs13 } from "react/jsx-runtime";
3126
+ import { jsx as jsx25, jsxs as jsxs13 } from "react/jsx-runtime";
3111
3127
  var getClassName19 = get_class_name_factory_default("SidebarSection", styles_module_default13);
3112
3128
  var SidebarSection = ({
3113
3129
  children,
@@ -3126,9 +3142,9 @@ var SidebarSection = ({
3126
3142
  className: getClassName19({ noBorderTop, noPadding }),
3127
3143
  style: { background },
3128
3144
  children: [
3129
- /* @__PURE__ */ jsx26("div", { className: getClassName19("title"), children: /* @__PURE__ */ jsxs13("div", { className: getClassName19("breadcrumbs"), children: [
3145
+ /* @__PURE__ */ jsx25("div", { className: getClassName19("title"), children: /* @__PURE__ */ jsxs13("div", { className: getClassName19("breadcrumbs"), children: [
3130
3146
  showBreadcrumbs ? breadcrumbs.map((breadcrumb, i) => /* @__PURE__ */ jsxs13("div", { className: getClassName19("breadcrumb"), children: [
3131
- /* @__PURE__ */ jsx26(
3147
+ /* @__PURE__ */ jsx25(
3132
3148
  "button",
3133
3149
  {
3134
3150
  type: "button",
@@ -3137,12 +3153,12 @@ var SidebarSection = ({
3137
3153
  children: breadcrumb.label
3138
3154
  }
3139
3155
  ),
3140
- /* @__PURE__ */ jsx26(ChevronRight, { size: 16 })
3156
+ /* @__PURE__ */ jsx25(ChevronRight, { size: 16 })
3141
3157
  ] }, i)) : null,
3142
- /* @__PURE__ */ jsx26("div", { className: getClassName19("heading"), children: /* @__PURE__ */ jsx26(Heading, { rank: "2", size: "xs", children: title }) })
3158
+ /* @__PURE__ */ jsx25("div", { className: getClassName19("heading"), children: /* @__PURE__ */ jsx25(Heading, { rank: "2", size: "xs", children: title }) })
3143
3159
  ] }) }),
3144
- /* @__PURE__ */ jsx26("div", { className: getClassName19("content"), children }),
3145
- isLoading && /* @__PURE__ */ jsx26("div", { className: getClassName19("loadingOverlay"), children: /* @__PURE__ */ jsx26(Loader, { size: 32 }) })
3160
+ /* @__PURE__ */ jsx25("div", { className: getClassName19("content"), children }),
3161
+ isLoading && /* @__PURE__ */ jsx25("div", { className: getClassName19("loadingOverlay"), children: /* @__PURE__ */ jsx25(Loader, { size: 32 }) })
3146
3162
  ]
3147
3163
  }
3148
3164
  );
@@ -3523,7 +3539,7 @@ init_react_import();
3523
3539
  var styles_module_default14 = { "MenuBar": "_MenuBar_8pf8c_1", "MenuBar--menuOpen": "_MenuBar--menuOpen_8pf8c_14", "MenuBar-inner": "_MenuBar-inner_8pf8c_29", "MenuBar-history": "_MenuBar-history_8pf8c_45" };
3524
3540
 
3525
3541
  // components/MenuBar/index.tsx
3526
- import { Fragment as Fragment12, jsx as jsx27, jsxs as jsxs14 } from "react/jsx-runtime";
3542
+ import { Fragment as Fragment11, jsx as jsx26, jsxs as jsxs14 } from "react/jsx-runtime";
3527
3543
  var getClassName20 = get_class_name_factory_default("MenuBar", styles_module_default14);
3528
3544
  function MenuBar({
3529
3545
  appState,
@@ -3537,7 +3553,7 @@ function MenuBar({
3537
3553
  history: { back, forward, historyStore }
3538
3554
  } = useAppContext();
3539
3555
  const { hasFuture = false, hasPast = false } = historyStore || {};
3540
- return /* @__PURE__ */ jsx27(
3556
+ return /* @__PURE__ */ jsx26(
3541
3557
  "div",
3542
3558
  {
3543
3559
  className: getClassName20({ menuOpen }),
@@ -3553,10 +3569,10 @@ function MenuBar({
3553
3569
  },
3554
3570
  children: /* @__PURE__ */ jsxs14("div", { className: getClassName20("inner"), children: [
3555
3571
  /* @__PURE__ */ jsxs14("div", { className: getClassName20("history"), children: [
3556
- /* @__PURE__ */ jsx27(IconButton, { title: "undo", disabled: !hasPast, onClick: back, children: /* @__PURE__ */ jsx27(Undo2, { size: 21 }) }),
3557
- /* @__PURE__ */ jsx27(IconButton, { title: "redo", disabled: !hasFuture, onClick: forward, children: /* @__PURE__ */ jsx27(Redo2, { size: 21 }) })
3572
+ /* @__PURE__ */ jsx26(IconButton, { title: "undo", disabled: !hasPast, onClick: back, children: /* @__PURE__ */ jsx26(Undo2, { size: 21 }) }),
3573
+ /* @__PURE__ */ jsx26(IconButton, { title: "redo", disabled: !hasFuture, onClick: forward, children: /* @__PURE__ */ jsx26(Redo2, { size: 21 }) })
3558
3574
  ] }),
3559
- /* @__PURE__ */ jsx27(Fragment12, { children: renderHeaderActions && renderHeaderActions({
3575
+ /* @__PURE__ */ jsx26(Fragment11, { children: renderHeaderActions && renderHeaderActions({
3560
3576
  state: appState,
3561
3577
  dispatch
3562
3578
  }) })
@@ -3578,7 +3594,7 @@ var styles_module_default16 = { "PuckFields": "_PuckFields_jp3lw_1", "PuckFields
3578
3594
 
3579
3595
  // components/Puck/components/Fields/index.tsx
3580
3596
  import { useCallback as useCallback7, useEffect as useEffect13, useMemo as useMemo6, useState as useState15 } from "react";
3581
- import { Fragment as Fragment13, jsx as jsx28, jsxs as jsxs15 } from "react/jsx-runtime";
3597
+ import { Fragment as Fragment12, jsx as jsx27, jsxs as jsxs15 } from "react/jsx-runtime";
3582
3598
  var getClassName21 = get_class_name_factory_default("PuckFields", styles_module_default16);
3583
3599
  var defaultPageFields = {
3584
3600
  title: { type: "text" }
@@ -3586,10 +3602,10 @@ var defaultPageFields = {
3586
3602
  var DefaultFields = ({
3587
3603
  children
3588
3604
  }) => {
3589
- return /* @__PURE__ */ jsx28(Fragment13, { children });
3605
+ return /* @__PURE__ */ jsx27(Fragment12, { children });
3590
3606
  };
3591
3607
  var useResolvedFields = () => {
3592
- var _a;
3608
+ var _a, _b;
3593
3609
  const { selectedItem, state, config } = useAppContext();
3594
3610
  const { data } = state;
3595
3611
  const rootFields = ((_a = config.root) == null ? void 0 : _a.fields) || defaultPageFields;
@@ -3601,14 +3617,17 @@ var useResolvedFields = () => {
3601
3617
  const [fieldsLoading, setFieldsLoading] = useState15(false);
3602
3618
  const defaultResolveFields = (_componentData, _params) => defaultFields;
3603
3619
  const componentData = selectedItem ? selectedItem : { props: rootProps, readOnly: data.root.readOnly };
3620
+ const hasComponentResolver = selectedItem && (componentConfig == null ? void 0 : componentConfig.resolveFields);
3621
+ const hasRootResolver = !selectedItem && ((_b = config.root) == null ? void 0 : _b.resolveFields);
3622
+ const hasResolver = hasComponentResolver || hasRootResolver;
3604
3623
  const resolveFields = useCallback7(
3605
3624
  (..._0) => __async(void 0, [..._0], function* (fields = {}) {
3606
- var _a2, _b, _c;
3625
+ var _a2;
3607
3626
  const lastData = ((_a2 = lastSelectedData.props) == null ? void 0 : _a2.id) === componentData.props.id ? lastSelectedData : null;
3608
3627
  const changed = getChanged(componentData, lastData);
3609
3628
  setLastSelectedData(componentData);
3610
- if (selectedItem && (componentConfig == null ? void 0 : componentConfig.resolveFields)) {
3611
- return yield componentConfig == null ? void 0 : componentConfig.resolveFields(
3629
+ if (hasComponentResolver) {
3630
+ return yield componentConfig.resolveFields(
3612
3631
  componentData,
3613
3632
  {
3614
3633
  changed,
@@ -3619,8 +3638,8 @@ var useResolvedFields = () => {
3619
3638
  }
3620
3639
  );
3621
3640
  }
3622
- if (!selectedItem && ((_b = config.root) == null ? void 0 : _b.resolveFields)) {
3623
- return yield (_c = config.root) == null ? void 0 : _c.resolveFields(componentData, {
3641
+ if (hasRootResolver) {
3642
+ return yield config.root.resolveFields(componentData, {
3624
3643
  changed,
3625
3644
  fields,
3626
3645
  lastFields: resolvedFields,
@@ -3638,12 +3657,16 @@ var useResolvedFields = () => {
3638
3657
  [data, config, componentData, selectedItem, resolvedFields, state]
3639
3658
  );
3640
3659
  useEffect13(() => {
3641
- setFieldsLoading(true);
3642
- resolveFields(defaultFields).then((fields) => {
3643
- setResolvedFields(fields || {});
3644
- setFieldsLoading(false);
3645
- });
3646
- }, [data, defaultFields, state.ui.itemSelector]);
3660
+ if (hasResolver) {
3661
+ setFieldsLoading(true);
3662
+ resolveFields(defaultFields).then((fields) => {
3663
+ setResolvedFields(fields || {});
3664
+ setFieldsLoading(false);
3665
+ });
3666
+ } else {
3667
+ setResolvedFields(defaultFields);
3668
+ }
3669
+ }, [data, defaultFields, state.ui.itemSelector, hasResolver]);
3647
3670
  return [resolvedFields, fieldsLoading];
3648
3671
  };
3649
3672
  var Fields = () => {
@@ -3673,7 +3696,7 @@ var Fields = () => {
3673
3696
  e.preventDefault();
3674
3697
  },
3675
3698
  children: [
3676
- /* @__PURE__ */ jsx28(Wrapper, { isLoading, itemSelector, children: Object.keys(fields).map((fieldName) => {
3699
+ /* @__PURE__ */ jsx27(Wrapper, { isLoading, itemSelector, children: Object.keys(fields).map((fieldName) => {
3677
3700
  const field = fields[fieldName];
3678
3701
  if (!(field == null ? void 0 : field.type)) return null;
3679
3702
  const onChange = (value, updatedUi) => {
@@ -3743,7 +3766,7 @@ var Fields = () => {
3743
3766
  const { edit } = getPermissions({
3744
3767
  item: selectedItem
3745
3768
  });
3746
- return /* @__PURE__ */ jsx28(
3769
+ return /* @__PURE__ */ jsx27(
3747
3770
  AutoFieldPrivate,
3748
3771
  {
3749
3772
  field,
@@ -3760,7 +3783,7 @@ var Fields = () => {
3760
3783
  const { edit } = getPermissions({
3761
3784
  root: true
3762
3785
  });
3763
- return /* @__PURE__ */ jsx28(
3786
+ return /* @__PURE__ */ jsx27(
3764
3787
  AutoFieldPrivate,
3765
3788
  {
3766
3789
  field,
@@ -3774,7 +3797,7 @@ var Fields = () => {
3774
3797
  );
3775
3798
  }
3776
3799
  }) }),
3777
- isLoading && /* @__PURE__ */ jsx28("div", { className: getClassName21("loadingOverlay"), children: /* @__PURE__ */ jsx28("div", { className: getClassName21("loadingOverlayInner"), children: /* @__PURE__ */ jsx28(Loader, { size: 16 }) }) })
3800
+ isLoading && /* @__PURE__ */ jsx27("div", { className: getClassName21("loadingOverlay"), children: /* @__PURE__ */ jsx27("div", { className: getClassName21("loadingOverlayInner"), children: /* @__PURE__ */ jsx27(Loader, { size: 16 }) }) })
3778
3801
  ]
3779
3802
  }
3780
3803
  );
@@ -3795,7 +3818,7 @@ init_react_import();
3795
3818
  var styles_module_default17 = { "ComponentList": "_ComponentList_odh9d_1", "ComponentList--isExpanded": "_ComponentList--isExpanded_odh9d_5", "ComponentList-content": "_ComponentList-content_odh9d_9", "ComponentList-title": "_ComponentList-title_odh9d_17", "ComponentList-titleIcon": "_ComponentList-titleIcon_odh9d_53" };
3796
3819
 
3797
3820
  // components/ComponentList/index.tsx
3798
- import { jsx as jsx29, jsxs as jsxs16 } from "react/jsx-runtime";
3821
+ import { jsx as jsx28, jsxs as jsxs16 } from "react/jsx-runtime";
3799
3822
  var getClassName22 = get_class_name_factory_default("ComponentList", styles_module_default17);
3800
3823
  var ComponentListItem = ({
3801
3824
  name,
@@ -3806,7 +3829,7 @@ var ComponentListItem = ({
3806
3829
  const canInsert = getPermissions({
3807
3830
  type: name
3808
3831
  }).insert;
3809
- return /* @__PURE__ */ jsx29(
3832
+ return /* @__PURE__ */ jsx28(
3810
3833
  Drawer.Item,
3811
3834
  {
3812
3835
  label,
@@ -3839,14 +3862,14 @@ var ComponentList = ({
3839
3862
  }),
3840
3863
  title: expanded ? `Collapse${title ? ` ${title}` : ""}` : `Expand${title ? ` ${title}` : ""}`,
3841
3864
  children: [
3842
- /* @__PURE__ */ jsx29("div", { children: title }),
3843
- /* @__PURE__ */ jsx29("div", { className: getClassName22("titleIcon"), children: expanded ? /* @__PURE__ */ jsx29(ChevronUp, { size: 12 }) : /* @__PURE__ */ jsx29(ChevronDown, { size: 12 }) })
3865
+ /* @__PURE__ */ jsx28("div", { children: title }),
3866
+ /* @__PURE__ */ jsx28("div", { className: getClassName22("titleIcon"), children: expanded ? /* @__PURE__ */ jsx28(ChevronUp, { size: 12 }) : /* @__PURE__ */ jsx28(ChevronDown, { size: 12 }) })
3844
3867
  ]
3845
3868
  }
3846
3869
  ),
3847
- /* @__PURE__ */ jsx29("div", { className: getClassName22("content"), children: /* @__PURE__ */ jsx29(Drawer, { droppableId: title, children: children || Object.keys(config.components).map((componentKey, i) => {
3870
+ /* @__PURE__ */ jsx28("div", { className: getClassName22("content"), children: /* @__PURE__ */ jsx28(Drawer, { droppableId: title, children: children || Object.keys(config.components).map((componentKey, i) => {
3848
3871
  var _a;
3849
- return /* @__PURE__ */ jsx29(
3872
+ return /* @__PURE__ */ jsx28(
3850
3873
  ComponentListItem,
3851
3874
  {
3852
3875
  label: (_a = config.components[componentKey]["label"]) != null ? _a : componentKey,
@@ -3861,7 +3884,7 @@ var ComponentList = ({
3861
3884
  ComponentList.Item = ComponentListItem;
3862
3885
 
3863
3886
  // lib/use-component-list.tsx
3864
- import { jsx as jsx30 } from "react/jsx-runtime";
3887
+ import { jsx as jsx29 } from "react/jsx-runtime";
3865
3888
  var useComponentList = (config, ui) => {
3866
3889
  const [componentList, setComponentList] = useState16();
3867
3890
  useEffect14(() => {
@@ -3874,7 +3897,7 @@ var useComponentList = (config, ui) => {
3874
3897
  if (category.visible === false || !category.components) {
3875
3898
  return null;
3876
3899
  }
3877
- return /* @__PURE__ */ jsx30(
3900
+ return /* @__PURE__ */ jsx29(
3878
3901
  ComponentList,
3879
3902
  {
3880
3903
  id: categoryKey,
@@ -3883,7 +3906,7 @@ var useComponentList = (config, ui) => {
3883
3906
  var _a2;
3884
3907
  matchedComponents.push(componentName);
3885
3908
  const componentConf = config.components[componentName] || {};
3886
- return /* @__PURE__ */ jsx30(
3909
+ return /* @__PURE__ */ jsx29(
3887
3910
  ComponentList.Item,
3888
3911
  {
3889
3912
  label: (_a2 = componentConf["label"]) != null ? _a2 : componentName,
@@ -3903,7 +3926,7 @@ var useComponentList = (config, ui) => {
3903
3926
  );
3904
3927
  if (remainingComponents.length > 0 && !((_a = ui.componentList.other) == null ? void 0 : _a.components) && ((_b = ui.componentList.other) == null ? void 0 : _b.visible) !== false) {
3905
3928
  _componentList.push(
3906
- /* @__PURE__ */ jsx30(
3929
+ /* @__PURE__ */ jsx29(
3907
3930
  ComponentList,
3908
3931
  {
3909
3932
  id: "other",
@@ -3911,7 +3934,7 @@ var useComponentList = (config, ui) => {
3911
3934
  children: remainingComponents.map((componentName, i) => {
3912
3935
  var _a2;
3913
3936
  const componentConf = config.components[componentName] || {};
3914
- return /* @__PURE__ */ jsx30(
3937
+ return /* @__PURE__ */ jsx29(
3915
3938
  ComponentList.Item,
3916
3939
  {
3917
3940
  name: componentName,
@@ -3934,12 +3957,12 @@ var useComponentList = (config, ui) => {
3934
3957
 
3935
3958
  // components/Puck/components/Components/index.tsx
3936
3959
  import { useMemo as useMemo7 } from "react";
3937
- import { jsx as jsx31 } from "react/jsx-runtime";
3960
+ import { jsx as jsx30 } from "react/jsx-runtime";
3938
3961
  var Components = () => {
3939
3962
  const { config, state, overrides } = useAppContext();
3940
3963
  const componentList = useComponentList(config, state.ui);
3941
3964
  const Wrapper = useMemo7(() => overrides.components || "div", [overrides]);
3942
- return /* @__PURE__ */ jsx31(Wrapper, { children: componentList ? componentList : /* @__PURE__ */ jsx31(ComponentList, { id: "all" }) });
3965
+ return /* @__PURE__ */ jsx30(Wrapper, { children: componentList ? componentList : /* @__PURE__ */ jsx30(ComponentList, { id: "all" }) });
3943
3966
  };
3944
3967
 
3945
3968
  // components/Puck/components/Preview/index.tsx
@@ -3952,12 +3975,12 @@ import {
3952
3975
  createContext as createContext4,
3953
3976
  useContext as useContext5,
3954
3977
  useEffect as useEffect15,
3955
- useRef as useRef2,
3978
+ useRef as useRef3,
3956
3979
  useState as useState17
3957
3980
  } from "react";
3958
3981
  import hash from "object-hash";
3959
3982
  import { createPortal as createPortal2 } from "react-dom";
3960
- import { Fragment as Fragment14, jsx as jsx32 } from "react/jsx-runtime";
3983
+ import { Fragment as Fragment13, jsx as jsx31 } from "react/jsx-runtime";
3961
3984
  var styleSelector = 'style, link[rel="stylesheet"]';
3962
3985
  var collectStyles = (doc) => {
3963
3986
  const collected = [];
@@ -4157,7 +4180,7 @@ var CopyHostStyles = ({
4157
4180
  observer.disconnect();
4158
4181
  };
4159
4182
  }, []);
4160
- return /* @__PURE__ */ jsx32(Fragment14, { children });
4183
+ return /* @__PURE__ */ jsx31(Fragment13, { children });
4161
4184
  };
4162
4185
  var autoFrameContext = createContext4({});
4163
4186
  var useFrame = () => useContext5(autoFrameContext);
@@ -4177,7 +4200,7 @@ function AutoFrame(_a) {
4177
4200
  ]);
4178
4201
  const [loaded, setLoaded] = useState17(false);
4179
4202
  const [ctx, setCtx] = useState17({});
4180
- const ref = useRef2(null);
4203
+ const ref = useRef3(null);
4181
4204
  const [mountTarget, setMountTarget] = useState17();
4182
4205
  useEffect15(() => {
4183
4206
  var _a2;
@@ -4189,7 +4212,7 @@ function AutoFrame(_a) {
4189
4212
  setMountTarget((_a2 = ref.current.contentDocument) == null ? void 0 : _a2.getElementById("frame-root"));
4190
4213
  }
4191
4214
  }, [ref, loaded]);
4192
- return /* @__PURE__ */ jsx32(
4215
+ return /* @__PURE__ */ jsx31(
4193
4216
  "iframe",
4194
4217
  __spreadProps(__spreadValues({}, props), {
4195
4218
  className,
@@ -4199,7 +4222,7 @@ function AutoFrame(_a) {
4199
4222
  onLoad: () => {
4200
4223
  setLoaded(true);
4201
4224
  },
4202
- children: /* @__PURE__ */ jsx32(autoFrameContext.Provider, { value: ctx, children: loaded && mountTarget && /* @__PURE__ */ jsx32(CopyHostStyles, { debug, onStylesLoaded, children: createPortal2(children, mountTarget) }) })
4225
+ children: /* @__PURE__ */ jsx31(autoFrameContext.Provider, { value: ctx, children: loaded && mountTarget && /* @__PURE__ */ jsx31(CopyHostStyles, { debug, onStylesLoaded, children: createPortal2(children, mountTarget) }) })
4203
4226
  })
4204
4227
  );
4205
4228
  }
@@ -4211,7 +4234,7 @@ init_react_import();
4211
4234
  var styles_module_default18 = { "PuckPreview": "_PuckPreview_rxwlr_1", "PuckPreview-frame": "_PuckPreview-frame_rxwlr_5" };
4212
4235
 
4213
4236
  // components/Puck/components/Preview/index.tsx
4214
- import { Fragment as Fragment15, jsx as jsx33 } from "react/jsx-runtime";
4237
+ import { Fragment as Fragment14, jsx as jsx32 } from "react/jsx-runtime";
4215
4238
  var getClassName23 = get_class_name_factory_default("PuckPreview", styles_module_default18);
4216
4239
  var Preview = ({ id = "puck-preview" }) => {
4217
4240
  const { config, dispatch, state, setStatus, iframe, overrides } = useAppContext();
@@ -4220,13 +4243,13 @@ var Preview = ({ id = "puck-preview" }) => {
4220
4243
  var _a, _b;
4221
4244
  return ((_a = config.root) == null ? void 0 : _a.render) ? (_b = config.root) == null ? void 0 : _b.render(__spreadValues({
4222
4245
  id: "puck-root"
4223
- }, pageProps)) : /* @__PURE__ */ jsx33(Fragment15, { children: pageProps.children });
4246
+ }, pageProps)) : /* @__PURE__ */ jsx32(Fragment14, { children: pageProps.children });
4224
4247
  },
4225
4248
  [config.root]
4226
4249
  );
4227
4250
  const Frame = useMemo8(() => overrides.iframe, [overrides]);
4228
4251
  const rootProps = state.data.root.props || state.data.root;
4229
- return /* @__PURE__ */ jsx33(
4252
+ return /* @__PURE__ */ jsx32(
4230
4253
  "div",
4231
4254
  {
4232
4255
  className: getClassName23(),
@@ -4234,7 +4257,7 @@ var Preview = ({ id = "puck-preview" }) => {
4234
4257
  onClick: () => {
4235
4258
  dispatch({ type: "setUi", ui: __spreadProps(__spreadValues({}, state.ui), { itemSelector: null }) });
4236
4259
  },
4237
- children: iframe.enabled ? /* @__PURE__ */ jsx33(
4260
+ children: iframe.enabled ? /* @__PURE__ */ jsx32(
4238
4261
  AutoFrame_default,
4239
4262
  {
4240
4263
  id: "preview-frame",
@@ -4243,27 +4266,27 @@ var Preview = ({ id = "puck-preview" }) => {
4243
4266
  onStylesLoaded: () => {
4244
4267
  setStatus("READY");
4245
4268
  },
4246
- children: /* @__PURE__ */ jsx33(autoFrameContext.Consumer, { children: ({ document: document2 }) => {
4247
- const inner = /* @__PURE__ */ jsx33(
4269
+ children: /* @__PURE__ */ jsx32(autoFrameContext.Consumer, { children: ({ document: document2 }) => {
4270
+ const inner = /* @__PURE__ */ jsx32(
4248
4271
  Page,
4249
4272
  __spreadProps(__spreadValues({}, rootProps), {
4250
4273
  puck: { renderDropZone: DropZone, isEditing: true },
4251
4274
  editMode: true,
4252
- children: /* @__PURE__ */ jsx33(DropZone, { zone: rootDroppableId })
4275
+ children: /* @__PURE__ */ jsx32(DropZone, { zone: rootDroppableId })
4253
4276
  })
4254
4277
  );
4255
4278
  if (Frame) {
4256
- return /* @__PURE__ */ jsx33(Frame, { document: document2, children: inner });
4279
+ return /* @__PURE__ */ jsx32(Frame, { document: document2, children: inner });
4257
4280
  }
4258
4281
  return inner;
4259
4282
  } })
4260
4283
  }
4261
- ) : /* @__PURE__ */ jsx33("div", { id: "preview-frame", className: getClassName23("frame"), children: /* @__PURE__ */ jsx33(
4284
+ ) : /* @__PURE__ */ jsx32("div", { id: "preview-frame", className: getClassName23("frame"), children: /* @__PURE__ */ jsx32(
4262
4285
  Page,
4263
4286
  __spreadProps(__spreadValues({}, rootProps), {
4264
4287
  puck: { renderDropZone: DropZone, isEditing: true },
4265
4288
  editMode: true,
4266
- children: /* @__PURE__ */ jsx33(DropZone, { zone: rootDroppableId })
4289
+ children: /* @__PURE__ */ jsx32(DropZone, { zone: rootDroppableId })
4267
4290
  })
4268
4291
  ) })
4269
4292
  }
@@ -4327,7 +4350,7 @@ var isChildOfZone = (item, maybeChild, ctx) => {
4327
4350
  };
4328
4351
 
4329
4352
  // components/LayerTree/index.tsx
4330
- import { Fragment as Fragment16, jsx as jsx34, jsxs as jsxs17 } from "react/jsx-runtime";
4353
+ import { Fragment as Fragment15, jsx as jsx33, jsxs as jsxs17 } from "react/jsx-runtime";
4331
4354
  var getClassName24 = get_class_name_factory_default("LayerTree", styles_module_default19);
4332
4355
  var getClassNameLayer = get_class_name_factory_default("Layer", styles_module_default19);
4333
4356
  var LayerTree = ({
@@ -4341,14 +4364,14 @@ var LayerTree = ({
4341
4364
  }) => {
4342
4365
  const zones = data.zones || {};
4343
4366
  const ctx = useContext6(dropZoneContext);
4344
- return /* @__PURE__ */ jsxs17(Fragment16, { children: [
4367
+ return /* @__PURE__ */ jsxs17(Fragment15, { children: [
4345
4368
  label && /* @__PURE__ */ jsxs17("div", { className: getClassName24("zoneTitle"), children: [
4346
- /* @__PURE__ */ jsx34("div", { className: getClassName24("zoneIcon"), children: /* @__PURE__ */ jsx34(Layers, { size: "16" }) }),
4369
+ /* @__PURE__ */ jsx33("div", { className: getClassName24("zoneIcon"), children: /* @__PURE__ */ jsx33(Layers, { size: "16" }) }),
4347
4370
  " ",
4348
4371
  label
4349
4372
  ] }),
4350
4373
  /* @__PURE__ */ jsxs17("ul", { className: getClassName24(), children: [
4351
- zoneContent.length === 0 && /* @__PURE__ */ jsx34("div", { className: getClassName24("helper"), children: "No items" }),
4374
+ zoneContent.length === 0 && /* @__PURE__ */ jsx33("div", { className: getClassName24("helper"), children: "No items" }),
4352
4375
  zoneContent.map((item, i) => {
4353
4376
  var _a;
4354
4377
  const isSelected = (itemSelector == null ? void 0 : itemSelector.index) === i && (itemSelector.zone === zone || itemSelector.zone === rootDroppableId && !zone);
@@ -4376,7 +4399,7 @@ var LayerTree = ({
4376
4399
  childIsSelected
4377
4400
  }),
4378
4401
  children: [
4379
- /* @__PURE__ */ jsx34("div", { className: getClassNameLayer("inner"), children: /* @__PURE__ */ jsxs17(
4402
+ /* @__PURE__ */ jsx33("div", { className: getClassNameLayer("inner"), children: /* @__PURE__ */ jsxs17(
4380
4403
  "button",
4381
4404
  {
4382
4405
  type: "button",
@@ -4409,22 +4432,22 @@ var LayerTree = ({
4409
4432
  setHoveringComponent(null);
4410
4433
  },
4411
4434
  children: [
4412
- containsZone && /* @__PURE__ */ jsx34(
4435
+ containsZone && /* @__PURE__ */ jsx33(
4413
4436
  "div",
4414
4437
  {
4415
4438
  className: getClassNameLayer("chevron"),
4416
4439
  title: isSelected ? "Collapse" : "Expand",
4417
- children: /* @__PURE__ */ jsx34(ChevronDown, { size: "12" })
4440
+ children: /* @__PURE__ */ jsx33(ChevronDown, { size: "12" })
4418
4441
  }
4419
4442
  ),
4420
4443
  /* @__PURE__ */ jsxs17("div", { className: getClassNameLayer("title"), children: [
4421
- /* @__PURE__ */ jsx34("div", { className: getClassNameLayer("icon"), children: item.type === "Text" || item.type === "Heading" ? /* @__PURE__ */ jsx34(Type, { size: "16" }) : /* @__PURE__ */ jsx34(LayoutGrid, { size: "16" }) }),
4422
- /* @__PURE__ */ jsx34("div", { className: getClassNameLayer("name"), children: label2 })
4444
+ /* @__PURE__ */ jsx33("div", { className: getClassNameLayer("icon"), children: item.type === "Text" || item.type === "Heading" ? /* @__PURE__ */ jsx33(Type, { size: "16" }) : /* @__PURE__ */ jsx33(LayoutGrid, { size: "16" }) }),
4445
+ /* @__PURE__ */ jsx33("div", { className: getClassNameLayer("name"), children: label2 })
4423
4446
  ] })
4424
4447
  ]
4425
4448
  }
4426
4449
  ) }),
4427
- containsZone && Object.keys(zonesForItem).map((zoneKey, idx) => /* @__PURE__ */ jsx34("div", { className: getClassNameLayer("zones"), children: /* @__PURE__ */ jsx34(
4450
+ containsZone && Object.keys(zonesForItem).map((zoneKey, idx) => /* @__PURE__ */ jsx33("div", { className: getClassNameLayer("zones"), children: /* @__PURE__ */ jsx33(
4428
4451
  LayerTree,
4429
4452
  {
4430
4453
  config,
@@ -4447,7 +4470,7 @@ var LayerTree = ({
4447
4470
 
4448
4471
  // components/Puck/components/Outline/index.tsx
4449
4472
  import { useCallback as useCallback9, useMemo as useMemo9 } from "react";
4450
- import { Fragment as Fragment17, jsx as jsx35, jsxs as jsxs18 } from "react/jsx-runtime";
4473
+ import { Fragment as Fragment16, jsx as jsx34, jsxs as jsxs18 } from "react/jsx-runtime";
4451
4474
  var Outline = () => {
4452
4475
  const { dispatch, state, overrides, config } = useAppContext();
4453
4476
  const { data, ui } = state;
@@ -4462,8 +4485,8 @@ var Outline = () => {
4462
4485
  []
4463
4486
  );
4464
4487
  const Wrapper = useMemo9(() => overrides.outline || "div", [overrides]);
4465
- return /* @__PURE__ */ jsx35(Wrapper, { children: /* @__PURE__ */ jsx35(dropZoneContext.Consumer, { children: (ctx) => /* @__PURE__ */ jsxs18(Fragment17, { children: [
4466
- (ctx == null ? void 0 : ctx.activeZones) && (ctx == null ? void 0 : ctx.activeZones[rootDroppableId]) && /* @__PURE__ */ jsx35(
4488
+ return /* @__PURE__ */ jsx34(Wrapper, { children: /* @__PURE__ */ jsx34(dropZoneContext.Consumer, { children: (ctx) => /* @__PURE__ */ jsxs18(Fragment16, { children: [
4489
+ (ctx == null ? void 0 : ctx.activeZones) && (ctx == null ? void 0 : ctx.activeZones[rootDroppableId]) && /* @__PURE__ */ jsx34(
4467
4490
  LayerTree,
4468
4491
  {
4469
4492
  config,
@@ -4476,7 +4499,7 @@ var Outline = () => {
4476
4499
  ),
4477
4500
  Object.entries(findZonesForArea(data, "root")).map(
4478
4501
  ([zoneKey, zone]) => {
4479
- return /* @__PURE__ */ jsx35(
4502
+ return /* @__PURE__ */ jsx34(
4480
4503
  LayerTree,
4481
4504
  {
4482
4505
  config,
@@ -4726,7 +4749,7 @@ import {
4726
4749
  useCallback as useCallback10,
4727
4750
  useEffect as useEffect17,
4728
4751
  useMemo as useMemo11,
4729
- useRef as useRef3,
4752
+ useRef as useRef4,
4730
4753
  useState as useState20
4731
4754
  } from "react";
4732
4755
 
@@ -4739,11 +4762,11 @@ init_react_import();
4739
4762
  var styles_module_default20 = { "ViewportControls": "_ViewportControls_g1wgg_1", "ViewportControls-divider": "_ViewportControls-divider_g1wgg_15", "ViewportControls-zoomSelect": "_ViewportControls-zoomSelect_g1wgg_21", "ViewportButton--isActive": "_ViewportButton--isActive_g1wgg_34", "ViewportButton-inner": "_ViewportButton-inner_g1wgg_34" };
4740
4763
 
4741
4764
  // components/ViewportControls/index.tsx
4742
- import { jsx as jsx36, jsxs as jsxs19 } from "react/jsx-runtime";
4765
+ import { jsx as jsx35, jsxs as jsxs19 } from "react/jsx-runtime";
4743
4766
  var icons = {
4744
- Smartphone: /* @__PURE__ */ jsx36(Smartphone, { size: 16 }),
4745
- Tablet: /* @__PURE__ */ jsx36(Tablet, { size: 16 }),
4746
- Monitor: /* @__PURE__ */ jsx36(Monitor, { size: 16 })
4767
+ Smartphone: /* @__PURE__ */ jsx35(Smartphone, { size: 16 }),
4768
+ Tablet: /* @__PURE__ */ jsx35(Tablet, { size: 16 }),
4769
+ Monitor: /* @__PURE__ */ jsx35(Monitor, { size: 16 })
4747
4770
  };
4748
4771
  var getClassName25 = get_class_name_factory_default("ViewportControls", styles_module_default20);
4749
4772
  var getClassNameButton = get_class_name_factory_default("ViewportButton", styles_module_default20);
@@ -4759,7 +4782,7 @@ var ViewportButton = ({
4759
4782
  useEffect16(() => {
4760
4783
  setIsActive(width === state.ui.viewports.current.width);
4761
4784
  }, [width, state.ui.viewports.current.width]);
4762
- return /* @__PURE__ */ jsx36("span", { className: getClassNameButton({ isActive }), children: /* @__PURE__ */ jsx36(
4785
+ return /* @__PURE__ */ jsx35("span", { className: getClassNameButton({ isActive }), children: /* @__PURE__ */ jsx35(
4763
4786
  IconButton,
4764
4787
  {
4765
4788
  title,
@@ -4768,7 +4791,7 @@ var ViewportButton = ({
4768
4791
  e.stopPropagation();
4769
4792
  onClick({ width, height });
4770
4793
  },
4771
- children: /* @__PURE__ */ jsx36("span", { className: getClassNameButton("inner"), children })
4794
+ children: /* @__PURE__ */ jsx35("span", { className: getClassNameButton("inner"), children })
4772
4795
  }
4773
4796
  ) });
4774
4797
  };
@@ -4805,7 +4828,7 @@ var ViewportControls = ({
4805
4828
  [autoZoom]
4806
4829
  );
4807
4830
  return /* @__PURE__ */ jsxs19("div", { className: getClassName25(), children: [
4808
- viewports.map((viewport, i) => /* @__PURE__ */ jsx36(
4831
+ viewports.map((viewport, i) => /* @__PURE__ */ jsx35(
4809
4832
  ViewportButton,
4810
4833
  {
4811
4834
  height: viewport.height,
@@ -4816,8 +4839,8 @@ var ViewportControls = ({
4816
4839
  },
4817
4840
  i
4818
4841
  )),
4819
- /* @__PURE__ */ jsx36("div", { className: getClassName25("divider") }),
4820
- /* @__PURE__ */ jsx36(
4842
+ /* @__PURE__ */ jsx35("div", { className: getClassName25("divider") }),
4843
+ /* @__PURE__ */ jsx35(
4821
4844
  IconButton,
4822
4845
  {
4823
4846
  title: "Zoom viewport out",
@@ -4831,10 +4854,10 @@ var ViewportControls = ({
4831
4854
  )].value
4832
4855
  );
4833
4856
  },
4834
- children: /* @__PURE__ */ jsx36(ZoomOut, { size: 16 })
4857
+ children: /* @__PURE__ */ jsx35(ZoomOut, { size: 16 })
4835
4858
  }
4836
4859
  ),
4837
- /* @__PURE__ */ jsx36(
4860
+ /* @__PURE__ */ jsx35(
4838
4861
  IconButton,
4839
4862
  {
4840
4863
  title: "Zoom viewport in",
@@ -4848,11 +4871,11 @@ var ViewportControls = ({
4848
4871
  )].value
4849
4872
  );
4850
4873
  },
4851
- children: /* @__PURE__ */ jsx36(ZoomIn, { size: 16 })
4874
+ children: /* @__PURE__ */ jsx35(ZoomIn, { size: 16 })
4852
4875
  }
4853
4876
  ),
4854
- /* @__PURE__ */ jsx36("div", { className: getClassName25("divider") }),
4855
- /* @__PURE__ */ jsx36(
4877
+ /* @__PURE__ */ jsx35("div", { className: getClassName25("divider") }),
4878
+ /* @__PURE__ */ jsx35(
4856
4879
  "select",
4857
4880
  {
4858
4881
  className: getClassName25("zoomSelect"),
@@ -4860,7 +4883,7 @@ var ViewportControls = ({
4860
4883
  onChange: (e) => {
4861
4884
  onZoom(parseFloat(e.currentTarget.value));
4862
4885
  },
4863
- children: zoomOptions.map((option) => /* @__PURE__ */ jsx36(
4886
+ children: zoomOptions.map((option) => /* @__PURE__ */ jsx35(
4864
4887
  "option",
4865
4888
  {
4866
4889
  value: option.value,
@@ -4875,7 +4898,7 @@ var ViewportControls = ({
4875
4898
 
4876
4899
  // css-module:/home/runner/work/puck/puck/packages/core/components/Puck/components/Canvas/styles.module.css#css-module
4877
4900
  init_react_import();
4878
- var styles_module_default21 = { "PuckCanvas": "_PuckCanvas_esbg1_1", "PuckCanvas-controls": "_PuckCanvas-controls_esbg1_16", "PuckCanvas-inner": "_PuckCanvas-inner_esbg1_21", "PuckCanvas-root": "_PuckCanvas-root_esbg1_32", "PuckCanvas--ready": "_PuckCanvas--ready_esbg1_56", "PuckCanvas-loader": "_PuckCanvas-loader_esbg1_60", "PuckCanvas--showLoader": "_PuckCanvas--showLoader_esbg1_70" };
4901
+ var styles_module_default21 = { "PuckCanvas": "_PuckCanvas_avf1c_1", "PuckCanvas-controls": "_PuckCanvas-controls_avf1c_16", "PuckCanvas-inner": "_PuckCanvas-inner_avf1c_21", "PuckCanvas-root": "_PuckCanvas-root_avf1c_32", "PuckCanvas--ready": "_PuckCanvas--ready_avf1c_57", "PuckCanvas-loader": "_PuckCanvas-loader_avf1c_62", "PuckCanvas--showLoader": "_PuckCanvas--showLoader_avf1c_72" };
4879
4902
 
4880
4903
  // lib/get-zoom-config.ts
4881
4904
  init_react_import();
@@ -4908,17 +4931,17 @@ var getZoomConfig = (uiViewport, frame, zoom) => {
4908
4931
  };
4909
4932
 
4910
4933
  // components/Puck/components/Canvas/index.tsx
4911
- import { Fragment as Fragment18, jsx as jsx37, jsxs as jsxs20 } from "react/jsx-runtime";
4934
+ import { Fragment as Fragment17, jsx as jsx36, jsxs as jsxs20 } from "react/jsx-runtime";
4912
4935
  var getClassName26 = get_class_name_factory_default("PuckCanvas", styles_module_default21);
4913
4936
  var ZOOM_ON_CHANGE = true;
4914
4937
  var Canvas = () => {
4915
4938
  const { status, iframe } = useAppContext();
4916
4939
  const { dispatch, state, overrides, setUi, zoomConfig, setZoomConfig } = useAppContext();
4917
4940
  const { ui } = state;
4918
- const frameRef = useRef3(null);
4941
+ const frameRef = useRef4(null);
4919
4942
  const [showTransition, setShowTransition] = useState20(false);
4920
4943
  const defaultRender = useMemo11(() => {
4921
- const PuckDefault = ({ children }) => /* @__PURE__ */ jsx37(Fragment18, { children });
4944
+ const PuckDefault = ({ children }) => /* @__PURE__ */ jsx36(Fragment17, { children });
4922
4945
  return PuckDefault;
4923
4946
  }, []);
4924
4947
  const CustomPreview = useMemo11(
@@ -4992,7 +5015,7 @@ var Canvas = () => {
4992
5015
  recordHistory: true
4993
5016
  }),
4994
5017
  children: [
4995
- ui.viewports.controlsVisible && iframe.enabled && /* @__PURE__ */ jsx37("div", { className: getClassName26("controls"), children: /* @__PURE__ */ jsx37(
5018
+ ui.viewports.controlsVisible && iframe.enabled && /* @__PURE__ */ jsx36("div", { className: getClassName26("controls"), children: /* @__PURE__ */ jsx36(
4996
5019
  ViewportControls,
4997
5020
  {
4998
5021
  autoZoom: zoomConfig.autoZoom,
@@ -5018,7 +5041,7 @@ var Canvas = () => {
5018
5041
  }
5019
5042
  ) }),
5020
5043
  /* @__PURE__ */ jsxs20("div", { className: getClassName26("inner"), ref: frameRef, children: [
5021
- /* @__PURE__ */ jsx37(
5044
+ /* @__PURE__ */ jsx36(
5022
5045
  "div",
5023
5046
  {
5024
5047
  className: getClassName26("root"),
@@ -5030,10 +5053,10 @@ var Canvas = () => {
5030
5053
  overflow: iframe.enabled ? void 0 : "auto"
5031
5054
  },
5032
5055
  suppressHydrationWarning: true,
5033
- children: /* @__PURE__ */ jsx37(CustomPreview, { children: /* @__PURE__ */ jsx37(Preview, {}) })
5056
+ children: /* @__PURE__ */ jsx36(CustomPreview, { children: /* @__PURE__ */ jsx36(Preview, {}) })
5034
5057
  }
5035
5058
  ),
5036
- /* @__PURE__ */ jsx37("div", { className: getClassName26("loader"), children: /* @__PURE__ */ jsx37(Loader, { size: 24 }) })
5059
+ /* @__PURE__ */ jsx36("div", { className: getClassName26("loader"), children: /* @__PURE__ */ jsx36(Loader, { size: 24 }) })
5037
5060
  ] })
5038
5061
  ]
5039
5062
  }
@@ -5121,6 +5144,11 @@ var useLoadedOverrides = ({
5121
5144
  }, [plugins, overrides]);
5122
5145
  };
5123
5146
 
5147
+ // components/DefaultOverride/index.tsx
5148
+ init_react_import();
5149
+ import { Fragment as Fragment18, jsx as jsx37 } from "react/jsx-runtime";
5150
+ var DefaultOverride = ({ children }) => /* @__PURE__ */ jsx37(Fragment18, { children });
5151
+
5124
5152
  // components/Puck/index.tsx
5125
5153
  import { Fragment as Fragment19, jsx as jsx38, jsxs as jsxs21 } from "react/jsx-runtime";
5126
5154
  var getClassName27 = get_class_name_factory_default("Puck", styles_module_default15);