@measured/puck 0.9.1-canary.efa4f45 → 0.10.0-canary.2a12826

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -327,7 +327,7 @@ var require_react_is_development = __commonJS({
327
327
  var ContextProvider = REACT_PROVIDER_TYPE;
328
328
  var Element = REACT_ELEMENT_TYPE;
329
329
  var ForwardRef = REACT_FORWARD_REF_TYPE;
330
- var Fragment9 = REACT_FRAGMENT_TYPE;
330
+ var Fragment11 = REACT_FRAGMENT_TYPE;
331
331
  var Lazy = REACT_LAZY_TYPE;
332
332
  var Memo = REACT_MEMO_TYPE;
333
333
  var Portal = REACT_PORTAL_TYPE;
@@ -386,7 +386,7 @@ var require_react_is_development = __commonJS({
386
386
  exports.ContextProvider = ContextProvider;
387
387
  exports.Element = Element;
388
388
  exports.ForwardRef = ForwardRef;
389
- exports.Fragment = Fragment9;
389
+ exports.Fragment = Fragment11;
390
390
  exports.Lazy = Lazy;
391
391
  exports.Memo = Memo;
392
392
  exports.Portal = Portal;
@@ -760,7 +760,7 @@ var require_factoryWithTypeCheckers = __commonJS({
760
760
  function validate(props, propName, componentName, location, propFullName) {
761
761
  if (!(props[propName] instanceof expectedClass)) {
762
762
  var expectedClassName = expectedClass.name || ANONYMOUS;
763
- var actualClassName = getClassName11(props[propName]);
763
+ var actualClassName = getClassName18(props[propName]);
764
764
  return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type " + ("`" + actualClassName + "` supplied to `" + componentName + "`, expected ") + ("instance of `" + expectedClassName + "`."));
765
765
  }
766
766
  return null;
@@ -1012,7 +1012,7 @@ var require_factoryWithTypeCheckers = __commonJS({
1012
1012
  return type;
1013
1013
  }
1014
1014
  }
1015
- function getClassName11(propValue) {
1015
+ function getClassName18(propValue) {
1016
1016
  if (!propValue.constructor || !propValue.constructor.name) {
1017
1017
  return ANONYMOUS;
1018
1018
  }
@@ -1214,11 +1214,11 @@ var Button = ({
1214
1214
 
1215
1215
  // components/DropZone/index.tsx
1216
1216
  init_react_import();
1217
- var import_react21 = require("react");
1217
+ var import_react22 = require("react");
1218
1218
 
1219
1219
  // components/DraggableComponent/index.tsx
1220
1220
  init_react_import();
1221
- var import_react18 = require("react");
1221
+ var import_react19 = require("react");
1222
1222
  var import_react_beautiful_dnd = require("react-beautiful-dnd");
1223
1223
 
1224
1224
  // css-module:/home/runner/work/puck/puck/packages/core/components/DraggableComponent/styles.module.css#css-module
@@ -2130,7 +2130,7 @@ List.propTypes = {
2130
2130
  List.displayName = "List";
2131
2131
  var list_default = List;
2132
2132
 
2133
- // ../../node_modules/react-feather/dist/icons/sidebar.js
2133
+ // ../../node_modules/react-feather/dist/icons/plus.js
2134
2134
  init_react_import();
2135
2135
  var import_react14 = __toESM(require("react"));
2136
2136
  var import_prop_types12 = __toESM(require_prop_types());
@@ -2180,7 +2180,7 @@ function _objectWithoutPropertiesLoose12(source, excluded) {
2180
2180
  }
2181
2181
  return target;
2182
2182
  }
2183
- var Sidebar = (0, import_react14.forwardRef)(function(_ref, ref) {
2183
+ var Plus = (0, import_react14.forwardRef)(function(_ref, ref) {
2184
2184
  var _ref$color = _ref.color, color = _ref$color === void 0 ? "currentColor" : _ref$color, _ref$size = _ref.size, size = _ref$size === void 0 ? 24 : _ref$size, rest = _objectWithoutProperties12(_ref, ["color", "size"]);
2185
2185
  return /* @__PURE__ */ import_react14.default.createElement("svg", _extends12({
2186
2186
  ref,
@@ -2193,28 +2193,26 @@ var Sidebar = (0, import_react14.forwardRef)(function(_ref, ref) {
2193
2193
  strokeWidth: "2",
2194
2194
  strokeLinecap: "round",
2195
2195
  strokeLinejoin: "round"
2196
- }, rest), /* @__PURE__ */ import_react14.default.createElement("rect", {
2197
- x: "3",
2198
- y: "3",
2199
- width: "18",
2200
- height: "18",
2201
- rx: "2",
2202
- ry: "2"
2196
+ }, rest), /* @__PURE__ */ import_react14.default.createElement("line", {
2197
+ x1: "12",
2198
+ y1: "5",
2199
+ x2: "12",
2200
+ y2: "19"
2203
2201
  }), /* @__PURE__ */ import_react14.default.createElement("line", {
2204
- x1: "9",
2205
- y1: "3",
2206
- x2: "9",
2207
- y2: "21"
2202
+ x1: "5",
2203
+ y1: "12",
2204
+ x2: "19",
2205
+ y2: "12"
2208
2206
  }));
2209
2207
  });
2210
- Sidebar.propTypes = {
2208
+ Plus.propTypes = {
2211
2209
  color: import_prop_types12.default.string,
2212
2210
  size: import_prop_types12.default.oneOfType([import_prop_types12.default.string, import_prop_types12.default.number])
2213
2211
  };
2214
- Sidebar.displayName = "Sidebar";
2215
- var sidebar_default = Sidebar;
2212
+ Plus.displayName = "Plus";
2213
+ var plus_default = Plus;
2216
2214
 
2217
- // ../../node_modules/react-feather/dist/icons/trash.js
2215
+ // ../../node_modules/react-feather/dist/icons/sidebar.js
2218
2216
  init_react_import();
2219
2217
  var import_react15 = __toESM(require("react"));
2220
2218
  var import_prop_types13 = __toESM(require_prop_types());
@@ -2264,7 +2262,7 @@ function _objectWithoutPropertiesLoose13(source, excluded) {
2264
2262
  }
2265
2263
  return target;
2266
2264
  }
2267
- var Trash = (0, import_react15.forwardRef)(function(_ref, ref) {
2265
+ var Sidebar = (0, import_react15.forwardRef)(function(_ref, ref) {
2268
2266
  var _ref$color = _ref.color, color = _ref$color === void 0 ? "currentColor" : _ref$color, _ref$size = _ref.size, size = _ref$size === void 0 ? 24 : _ref$size, rest = _objectWithoutProperties13(_ref, ["color", "size"]);
2269
2267
  return /* @__PURE__ */ import_react15.default.createElement("svg", _extends13({
2270
2268
  ref,
@@ -2277,20 +2275,28 @@ var Trash = (0, import_react15.forwardRef)(function(_ref, ref) {
2277
2275
  strokeWidth: "2",
2278
2276
  strokeLinecap: "round",
2279
2277
  strokeLinejoin: "round"
2280
- }, rest), /* @__PURE__ */ import_react15.default.createElement("polyline", {
2281
- points: "3 6 5 6 21 6"
2282
- }), /* @__PURE__ */ import_react15.default.createElement("path", {
2283
- d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"
2278
+ }, rest), /* @__PURE__ */ import_react15.default.createElement("rect", {
2279
+ x: "3",
2280
+ y: "3",
2281
+ width: "18",
2282
+ height: "18",
2283
+ rx: "2",
2284
+ ry: "2"
2285
+ }), /* @__PURE__ */ import_react15.default.createElement("line", {
2286
+ x1: "9",
2287
+ y1: "3",
2288
+ x2: "9",
2289
+ y2: "21"
2284
2290
  }));
2285
2291
  });
2286
- Trash.propTypes = {
2292
+ Sidebar.propTypes = {
2287
2293
  color: import_prop_types13.default.string,
2288
2294
  size: import_prop_types13.default.oneOfType([import_prop_types13.default.string, import_prop_types13.default.number])
2289
2295
  };
2290
- Trash.displayName = "Trash";
2291
- var trash_default = Trash;
2296
+ Sidebar.displayName = "Sidebar";
2297
+ var sidebar_default = Sidebar;
2292
2298
 
2293
- // ../../node_modules/react-feather/dist/icons/type.js
2299
+ // ../../node_modules/react-feather/dist/icons/trash.js
2294
2300
  init_react_import();
2295
2301
  var import_react16 = __toESM(require("react"));
2296
2302
  var import_prop_types14 = __toESM(require_prop_types());
@@ -2340,7 +2346,7 @@ function _objectWithoutPropertiesLoose14(source, excluded) {
2340
2346
  }
2341
2347
  return target;
2342
2348
  }
2343
- var Type = (0, import_react16.forwardRef)(function(_ref, ref) {
2349
+ var Trash = (0, import_react16.forwardRef)(function(_ref, ref) {
2344
2350
  var _ref$color = _ref.color, color = _ref$color === void 0 ? "currentColor" : _ref$color, _ref$size = _ref.size, size = _ref$size === void 0 ? 24 : _ref$size, rest = _objectWithoutProperties14(_ref, ["color", "size"]);
2345
2351
  return /* @__PURE__ */ import_react16.default.createElement("svg", _extends14({
2346
2352
  ref,
@@ -2354,13 +2360,89 @@ var Type = (0, import_react16.forwardRef)(function(_ref, ref) {
2354
2360
  strokeLinecap: "round",
2355
2361
  strokeLinejoin: "round"
2356
2362
  }, rest), /* @__PURE__ */ import_react16.default.createElement("polyline", {
2363
+ points: "3 6 5 6 21 6"
2364
+ }), /* @__PURE__ */ import_react16.default.createElement("path", {
2365
+ d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"
2366
+ }));
2367
+ });
2368
+ Trash.propTypes = {
2369
+ color: import_prop_types14.default.string,
2370
+ size: import_prop_types14.default.oneOfType([import_prop_types14.default.string, import_prop_types14.default.number])
2371
+ };
2372
+ Trash.displayName = "Trash";
2373
+ var trash_default = Trash;
2374
+
2375
+ // ../../node_modules/react-feather/dist/icons/type.js
2376
+ init_react_import();
2377
+ var import_react17 = __toESM(require("react"));
2378
+ var import_prop_types15 = __toESM(require_prop_types());
2379
+ function _extends15() {
2380
+ _extends15 = Object.assign || function(target) {
2381
+ for (var i = 1; i < arguments.length; i++) {
2382
+ var source = arguments[i];
2383
+ for (var key in source) {
2384
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
2385
+ target[key] = source[key];
2386
+ }
2387
+ }
2388
+ }
2389
+ return target;
2390
+ };
2391
+ return _extends15.apply(this, arguments);
2392
+ }
2393
+ function _objectWithoutProperties15(source, excluded) {
2394
+ if (source == null)
2395
+ return {};
2396
+ var target = _objectWithoutPropertiesLoose15(source, excluded);
2397
+ var key, i;
2398
+ if (Object.getOwnPropertySymbols) {
2399
+ var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
2400
+ for (i = 0; i < sourceSymbolKeys.length; i++) {
2401
+ key = sourceSymbolKeys[i];
2402
+ if (excluded.indexOf(key) >= 0)
2403
+ continue;
2404
+ if (!Object.prototype.propertyIsEnumerable.call(source, key))
2405
+ continue;
2406
+ target[key] = source[key];
2407
+ }
2408
+ }
2409
+ return target;
2410
+ }
2411
+ function _objectWithoutPropertiesLoose15(source, excluded) {
2412
+ if (source == null)
2413
+ return {};
2414
+ var target = {};
2415
+ var sourceKeys = Object.keys(source);
2416
+ var key, i;
2417
+ for (i = 0; i < sourceKeys.length; i++) {
2418
+ key = sourceKeys[i];
2419
+ if (excluded.indexOf(key) >= 0)
2420
+ continue;
2421
+ target[key] = source[key];
2422
+ }
2423
+ return target;
2424
+ }
2425
+ var Type = (0, import_react17.forwardRef)(function(_ref, ref) {
2426
+ var _ref$color = _ref.color, color = _ref$color === void 0 ? "currentColor" : _ref$color, _ref$size = _ref.size, size = _ref$size === void 0 ? 24 : _ref$size, rest = _objectWithoutProperties15(_ref, ["color", "size"]);
2427
+ return /* @__PURE__ */ import_react17.default.createElement("svg", _extends15({
2428
+ ref,
2429
+ xmlns: "http://www.w3.org/2000/svg",
2430
+ width: size,
2431
+ height: size,
2432
+ viewBox: "0 0 24 24",
2433
+ fill: "none",
2434
+ stroke: color,
2435
+ strokeWidth: "2",
2436
+ strokeLinecap: "round",
2437
+ strokeLinejoin: "round"
2438
+ }, rest), /* @__PURE__ */ import_react17.default.createElement("polyline", {
2357
2439
  points: "4 7 4 4 20 4 20 7"
2358
- }), /* @__PURE__ */ import_react16.default.createElement("line", {
2440
+ }), /* @__PURE__ */ import_react17.default.createElement("line", {
2359
2441
  x1: "9",
2360
2442
  y1: "20",
2361
2443
  x2: "15",
2362
2444
  y2: "20"
2363
- }), /* @__PURE__ */ import_react16.default.createElement("line", {
2445
+ }), /* @__PURE__ */ import_react17.default.createElement("line", {
2364
2446
  x1: "12",
2365
2447
  y1: "4",
2366
2448
  x2: "12",
@@ -2368,18 +2450,18 @@ var Type = (0, import_react16.forwardRef)(function(_ref, ref) {
2368
2450
  }));
2369
2451
  });
2370
2452
  Type.propTypes = {
2371
- color: import_prop_types14.default.string,
2372
- size: import_prop_types14.default.oneOfType([import_prop_types14.default.string, import_prop_types14.default.number])
2453
+ color: import_prop_types15.default.string,
2454
+ size: import_prop_types15.default.oneOfType([import_prop_types15.default.string, import_prop_types15.default.number])
2373
2455
  };
2374
2456
  Type.displayName = "Type";
2375
2457
  var type_default = Type;
2376
2458
 
2377
2459
  // lib/use-modifier-held.ts
2378
2460
  init_react_import();
2379
- var import_react17 = require("react");
2461
+ var import_react18 = require("react");
2380
2462
  var useModifierHeld = (modifier) => {
2381
- const [modifierHeld, setModifierHeld] = (0, import_react17.useState)(false);
2382
- (0, import_react17.useEffect)(() => {
2463
+ const [modifierHeld, setModifierHeld] = (0, import_react18.useState)(false);
2464
+ (0, import_react18.useEffect)(() => {
2383
2465
  function downHandler({ key }) {
2384
2466
  if (key === modifier) {
2385
2467
  setModifierHeld(true);
@@ -2423,7 +2505,7 @@ var DraggableComponent = ({
2423
2505
  style
2424
2506
  }) => {
2425
2507
  const isModifierHeld = useModifierHeld("Alt");
2426
- (0, import_react18.useEffect)(onMount, []);
2508
+ (0, import_react19.useEffect)(onMount, []);
2427
2509
  return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
2428
2510
  import_react_beautiful_dnd.Draggable,
2429
2511
  {
@@ -2467,13 +2549,13 @@ var DraggableComponent = ({
2467
2549
 
2468
2550
  // components/DroppableStrictMode/index.tsx
2469
2551
  init_react_import();
2470
- var import_react19 = require("react");
2552
+ var import_react20 = require("react");
2471
2553
  var import_react_beautiful_dnd2 = require("react-beautiful-dnd");
2472
2554
  var import_jsx_runtime3 = require("react/jsx-runtime");
2473
2555
  var DroppableStrictMode = (_a) => {
2474
2556
  var _b = _a, { children } = _b, props = __objRest(_b, ["children"]);
2475
- const [enabled, setEnabled] = (0, import_react19.useState)(false);
2476
- (0, import_react19.useEffect)(() => {
2557
+ const [enabled, setEnabled] = (0, import_react20.useState)(false);
2558
+ (0, import_react20.useEffect)(() => {
2477
2559
  const animation = requestAnimationFrame(() => setEnabled(true));
2478
2560
  return () => {
2479
2561
  cancelAnimationFrame(animation);
@@ -2552,7 +2634,7 @@ var styles_module_default2 = { "DropZone": "_DropZone_ou0z5_1", "DropZone-conten
2552
2634
 
2553
2635
  // components/DropZone/context.tsx
2554
2636
  init_react_import();
2555
- var import_react20 = require("react");
2637
+ var import_react21 = require("react");
2556
2638
  var import_use_debounce = require("use-debounce");
2557
2639
 
2558
2640
  // lib/get-zone-id.ts
@@ -2569,29 +2651,29 @@ var getZoneId = (zoneCompound) => {
2569
2651
 
2570
2652
  // components/DropZone/context.tsx
2571
2653
  var import_jsx_runtime4 = require("react/jsx-runtime");
2572
- var dropZoneContext = (0, import_react20.createContext)(null);
2654
+ var dropZoneContext = (0, import_react21.createContext)(null);
2573
2655
  var DropZoneProvider = ({
2574
2656
  children,
2575
2657
  value
2576
2658
  }) => {
2577
- const [hoveringArea, setHoveringArea] = (0, import_react20.useState)(null);
2578
- const [hoveringZone, setHoveringZone] = (0, import_react20.useState)(
2659
+ const [hoveringArea, setHoveringArea] = (0, import_react21.useState)(null);
2660
+ const [hoveringZone, setHoveringZone] = (0, import_react21.useState)(
2579
2661
  rootDroppableId
2580
2662
  );
2581
- const [hoveringComponent, setHoveringComponent] = (0, import_react20.useState)();
2663
+ const [hoveringComponent, setHoveringComponent] = (0, import_react21.useState)();
2582
2664
  const [hoveringAreaDb] = (0, import_use_debounce.useDebounce)(hoveringArea, 75, { leading: false });
2583
- const [areasWithZones, setAreasWithZones] = (0, import_react20.useState)(
2665
+ const [areasWithZones, setAreasWithZones] = (0, import_react21.useState)(
2584
2666
  {}
2585
2667
  );
2586
- const [activeZones, setActiveZones] = (0, import_react20.useState)({});
2668
+ const [activeZones, setActiveZones] = (0, import_react21.useState)({});
2587
2669
  const { dispatch = null } = value ? value : {};
2588
- const registerZoneArea = (0, import_react20.useCallback)(
2670
+ const registerZoneArea = (0, import_react21.useCallback)(
2589
2671
  (area) => {
2590
2672
  setAreasWithZones((latest) => __spreadProps(__spreadValues({}, latest), { [area]: true }));
2591
2673
  },
2592
2674
  [setAreasWithZones]
2593
2675
  );
2594
- const registerZone = (0, import_react20.useCallback)(
2676
+ const registerZone = (0, import_react21.useCallback)(
2595
2677
  (zoneCompound) => {
2596
2678
  if (!dispatch) {
2597
2679
  return;
@@ -2604,7 +2686,7 @@ var DropZoneProvider = ({
2604
2686
  },
2605
2687
  [setActiveZones, dispatch]
2606
2688
  );
2607
- const unregisterZone = (0, import_react20.useCallback)(
2689
+ const unregisterZone = (0, import_react21.useCallback)(
2608
2690
  (zoneCompound) => {
2609
2691
  if (!dispatch) {
2610
2692
  return;
@@ -2619,8 +2701,8 @@ var DropZoneProvider = ({
2619
2701
  },
2620
2702
  [setActiveZones, dispatch]
2621
2703
  );
2622
- const [pathData, setPathData] = (0, import_react20.useState)();
2623
- const registerPath = (0, import_react20.useCallback)(
2704
+ const [pathData, setPathData] = (0, import_react21.useState)();
2705
+ const registerPath = (0, import_react21.useCallback)(
2624
2706
  (selector) => {
2625
2707
  if (!(value == null ? void 0 : value.data)) {
2626
2708
  return;
@@ -2673,7 +2755,7 @@ var import_jsx_runtime5 = require("react/jsx-runtime");
2673
2755
  var getClassName3 = get_class_name_factory_default("DropZone", styles_module_default2);
2674
2756
  function DropZoneEdit({ zone, style }) {
2675
2757
  var _a;
2676
- const ctx = (0, import_react21.useContext)(dropZoneContext);
2758
+ const ctx = (0, import_react22.useContext)(dropZoneContext);
2677
2759
  const {
2678
2760
  // These all need setting via context
2679
2761
  data,
@@ -2690,12 +2772,12 @@ function DropZoneEdit({ zone, style }) {
2690
2772
  } = ctx || {};
2691
2773
  let content = data.content || [];
2692
2774
  let zoneCompound = rootDroppableId;
2693
- (0, import_react21.useEffect)(() => {
2775
+ (0, import_react22.useEffect)(() => {
2694
2776
  if (areaId && registerZoneArea) {
2695
2777
  registerZoneArea(areaId);
2696
2778
  }
2697
2779
  }, [areaId]);
2698
- (0, import_react21.useEffect)(() => {
2780
+ (0, import_react22.useEffect)(() => {
2699
2781
  if (ctx == null ? void 0 : ctx.registerZone) {
2700
2782
  ctx == null ? void 0 : ctx.registerZone(zoneCompound);
2701
2783
  }
@@ -2907,7 +2989,7 @@ function DropZoneEdit({ zone, style }) {
2907
2989
  );
2908
2990
  }
2909
2991
  function DropZoneRender({ zone }) {
2910
- const ctx = (0, import_react21.useContext)(dropZoneContext);
2992
+ const ctx = (0, import_react22.useContext)(dropZoneContext);
2911
2993
  const { data, areaId = "root", config } = ctx || {};
2912
2994
  let zoneCompound = rootDroppableId;
2913
2995
  let content = (data == null ? void 0 : data.content) || [];
@@ -2934,7 +3016,7 @@ function DropZoneRender({ zone }) {
2934
3016
  }) });
2935
3017
  }
2936
3018
  function DropZone(props) {
2937
- const ctx = (0, import_react21.useContext)(dropZoneContext);
3019
+ const ctx = (0, import_react22.useContext)(dropZoneContext);
2938
3020
  if ((ctx == null ? void 0 : ctx.mode) === "edit") {
2939
3021
  return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(DropZoneEdit, __spreadValues({}, props));
2940
3022
  }
@@ -2946,7 +3028,7 @@ init_react_import();
2946
3028
 
2947
3029
  // components/IconButton/IconButton.tsx
2948
3030
  init_react_import();
2949
- var import_react22 = require("react");
3031
+ var import_react23 = require("react");
2950
3032
 
2951
3033
  // css-module:/home/runner/work/puck/puck/packages/core/components/IconButton/IconButton.module.css#css-module
2952
3034
  init_react_import();
@@ -2968,7 +3050,7 @@ var IconButton = ({
2968
3050
  fullWidth,
2969
3051
  title
2970
3052
  }) => {
2971
- const [loading, setLoading] = (0, import_react22.useState)(false);
3053
+ const [loading, setLoading] = (0, import_react23.useState)(false);
2972
3054
  const ElementType = href ? "a" : "button";
2973
3055
  const el = /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
2974
3056
  ElementType,
@@ -3008,310 +3090,638 @@ var IconButton = ({
3008
3090
 
3009
3091
  // components/Puck/index.tsx
3010
3092
  init_react_import();
3011
- var import_react28 = require("react");
3012
- var import_react_beautiful_dnd4 = require("react-beautiful-dnd");
3093
+ var import_react31 = require("react");
3094
+ var import_react_beautiful_dnd5 = require("react-beautiful-dnd");
3013
3095
 
3014
3096
  // components/InputOrGroup/index.tsx
3015
3097
  init_react_import();
3016
3098
 
3017
- // components/ExternalInput/index.tsx
3099
+ // css-module:/home/runner/work/puck/puck/packages/core/components/InputOrGroup/styles.module.css#css-module
3018
3100
  init_react_import();
3019
- var import_react23 = require("react");
3101
+ var styles_module_default3 = { "Input": "_Input_nkpu6_1", "Input-label": "_Input-label_nkpu6_27", "Input-labelIcon": "_Input-labelIcon_nkpu6_34", "Input-input": "_Input-input_nkpu6_39", "Input--readOnly": "_Input--readOnly_nkpu6_60", "Input-radioGroupItems": "_Input-radioGroupItems_nkpu6_69", "Input-radio": "_Input-radio_nkpu6_69", "Input-radioInner": "_Input-radioInner_nkpu6_86", "Input-radioInput": "_Input-radioInput_nkpu6_98" };
3020
3102
 
3021
- // css-module:/home/runner/work/puck/puck/packages/core/components/ExternalInput/styles.module.css#css-module
3103
+ // components/InputOrGroup/fields/index.tsx
3022
3104
  init_react_import();
3023
- var styles_module_default3 = { "ExternalInput": "_ExternalInput_l4bks_1", "ExternalInput-actions": "_ExternalInput-actions_l4bks_5", "ExternalInput-button": "_ExternalInput-button_l4bks_9", "ExternalInput-detachButton": "_ExternalInput-detachButton_l4bks_28", "ExternalInput--hasData": "_ExternalInput--hasData_l4bks_35", "ExternalInput-modal": "_ExternalInput-modal_l4bks_55", "ExternalInput--modalVisible": "_ExternalInput--modalVisible_l4bks_69", "ExternalInput-modalInner": "_ExternalInput-modalInner_l4bks_73", "ExternalInput-modalHeading": "_ExternalInput-modalHeading_l4bks_84", "ExternalInput-modalTableWrapper": "_ExternalInput-modalTableWrapper_l4bks_89" };
3024
3105
 
3025
- // components/ExternalInput/index.tsx
3106
+ // components/InputOrGroup/fields/ArrayField/index.tsx
3107
+ init_react_import();
3108
+
3109
+ // css-module:/home/runner/work/puck/puck/packages/core/components/InputOrGroup/fields/ArrayField/styles.module.css#css-module
3110
+ init_react_import();
3111
+ var styles_module_default4 = { "ArrayField": "_ArrayField_zp334_5", "ArrayField--isDraggingFrom": "_ArrayField--isDraggingFrom_zp334_13", "ArrayField-addButton": "_ArrayField-addButton_zp334_17", "ArrayField--hasItems": "_ArrayField--hasItems_zp334_31", "ArrayFieldItem": "_ArrayFieldItem_zp334_45", "ArrayFieldItem--isDragging": "_ArrayFieldItem--isDragging_zp334_53", "ArrayFieldItem--isExpanded": "_ArrayFieldItem--isExpanded_zp334_58", "ArrayFieldItem-summary": "_ArrayFieldItem-summary_zp334_72", "ArrayFieldItem-body": "_ArrayFieldItem-body_zp334_104", "ArrayFieldItem-fieldset": "_ArrayFieldItem-fieldset_zp334_112", "ArrayFieldItem-rhs": "_ArrayFieldItem-rhs_zp334_119", "ArrayFieldItem-actions": "_ArrayFieldItem-actions_zp334_125", "ArrayFieldItem-action": "_ArrayFieldItem-action_zp334_125" };
3112
+
3113
+ // components/InputOrGroup/fields/ArrayField/index.tsx
3114
+ var import_react_beautiful_dnd4 = require("react-beautiful-dnd");
3115
+
3116
+ // components/Draggable/index.tsx
3117
+ init_react_import();
3118
+ var import_react_beautiful_dnd3 = require("react-beautiful-dnd");
3026
3119
  var import_jsx_runtime7 = require("react/jsx-runtime");
3027
- var getClassName5 = get_class_name_factory_default("ExternalInput", styles_module_default3);
3028
- var ExternalInput = ({
3029
- field,
3030
- onChange,
3031
- value = null
3120
+ var Draggable2 = ({
3121
+ className,
3122
+ children,
3123
+ id,
3124
+ index,
3125
+ showShadow,
3126
+ disableAnimations = false
3032
3127
  }) => {
3033
- const [data, setData] = (0, import_react23.useState)([]);
3034
- const [isOpen, setOpen] = (0, import_react23.useState)(false);
3035
- const [selectedData, setSelectedData] = (0, import_react23.useState)(value);
3036
- (0, import_react23.useEffect)(() => {
3037
- (() => __async(void 0, null, function* () {
3038
- if (field.adaptor) {
3039
- const listData = yield field.adaptor.fetchList(field.adaptorParams);
3040
- if (listData) {
3041
- setData(listData);
3128
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_react_beautiful_dnd3.Draggable, { draggableId: id, index, children: (provided, snapshot) => {
3129
+ var _a;
3130
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [
3131
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
3132
+ "div",
3133
+ __spreadProps(__spreadValues(__spreadValues({
3134
+ className: className && className(provided, snapshot),
3135
+ ref: provided.innerRef
3136
+ }, provided.draggableProps), provided.dragHandleProps), {
3137
+ style: __spreadProps(__spreadValues({}, provided.draggableProps.style), {
3138
+ transform: snapshot.isDragging || !disableAnimations ? (_a = provided.draggableProps.style) == null ? void 0 : _a.transform : "translate(0px, 0px)"
3139
+ }),
3140
+ children: children(provided, snapshot)
3141
+ })
3142
+ ),
3143
+ showShadow && snapshot.isDragging && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
3144
+ "div",
3145
+ {
3146
+ className: className && className(provided, snapshot),
3147
+ style: { transform: "none !important" },
3148
+ children: children(provided, snapshot)
3042
3149
  }
3043
- }
3044
- }))();
3045
- }, [field.adaptor, field.adaptorParams]);
3046
- if (!field.adaptor) {
3047
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { children: "Incorrectly configured" });
3048
- }
3049
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
3050
- "div",
3051
- {
3052
- className: getClassName5({
3053
- hasData: !!selectedData,
3054
- modalVisible: isOpen
3055
- }),
3056
- children: [
3057
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: getClassName5("actions"), children: [
3058
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
3059
- "button",
3060
- {
3061
- onClick: () => setOpen(true),
3062
- className: getClassName5("button"),
3063
- children: selectedData ? field.getItemSummary ? field.getItemSummary(selectedData) : `${field.adaptor.name} item` : /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [
3064
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(link_default, { size: "16" }),
3065
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { children: [
3066
- "Select from ",
3067
- field.adaptor.name
3068
- ] })
3069
- ] })
3070
- }
3071
- ),
3072
- selectedData && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
3073
- "button",
3074
- {
3075
- className: getClassName5("detachButton"),
3076
- onClick: () => {
3077
- setSelectedData(null);
3078
- onChange(null);
3079
- },
3080
- children: "Detach"
3081
- }
3082
- )
3083
- ] }),
3084
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: getClassName5("modal"), onClick: () => setOpen(false), children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
3085
- "div",
3086
- {
3087
- className: getClassName5("modalInner"),
3088
- onClick: (e) => e.stopPropagation(),
3089
- children: [
3090
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("h2", { className: getClassName5("modalHeading"), children: "Select content" }),
3091
- data.length ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: getClassName5("modalTableWrapper"), children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("table", { children: [
3092
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("tr", { children: Object.keys(data[0]).map((key) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("th", { style: { textAlign: "left" }, children: key }, key)) }) }),
3093
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("tbody", { children: data.map((item, i) => {
3094
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
3095
- "tr",
3096
- {
3097
- style: { whiteSpace: "nowrap" },
3098
- onClick: (e) => {
3099
- onChange(item);
3100
- setOpen(false);
3101
- setSelectedData(item);
3102
- },
3103
- children: Object.keys(item).map((key) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("td", { children: item[key] }, key))
3104
- },
3105
- i
3106
- );
3107
- }) })
3108
- ] }) }) : /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { style: { padding: 24 }, children: "No content" })
3109
- ]
3110
- }
3111
- ) })
3112
- ]
3113
- }
3114
- );
3150
+ )
3151
+ ] });
3152
+ } });
3115
3153
  };
3116
3154
 
3117
- // css-module:/home/runner/work/puck/puck/packages/core/components/InputOrGroup/styles.module.css#css-module
3155
+ // lib/generate-id.ts
3118
3156
  init_react_import();
3119
- var styles_module_default4 = { "Input": "_Input_izwhv_1", "Input-label": "_Input-label_izwhv_27", "Input-labelIcon": "_Input-labelIcon_izwhv_34", "Input-input": "_Input-input_izwhv_39", "Input--readOnly": "_Input--readOnly_izwhv_60", "Input-arrayItem": "_Input-arrayItem_izwhv_69", "Input-fieldset": "_Input-fieldset_izwhv_95", "Input-arrayItemAction": "_Input-arrayItemAction_izwhv_116", "Input-addButton": "_Input-addButton_izwhv_135", "Input-array": "_Input-array_izwhv_69", "Input-radioGroupItems": "_Input-radioGroupItems_izwhv_156", "Input-radio": "_Input-radio_izwhv_156", "Input-radioInner": "_Input-radioInner_izwhv_173", "Input-radioInput": "_Input-radioInput_izwhv_185" };
3157
+ var import_crypto = require("crypto");
3158
+ var generateId = (type) => `${type}-${(0, import_crypto.randomBytes)(20).toString("hex")}`;
3120
3159
 
3121
- // components/InputOrGroup/index.tsx
3160
+ // components/InputOrGroup/fields/ArrayField/index.tsx
3161
+ var import_react25 = require("react");
3162
+
3163
+ // components/DragIcon/index.tsx
3164
+ init_react_import();
3165
+
3166
+ // css-module:/home/runner/work/puck/puck/packages/core/components/DragIcon/styles.module.css#css-module
3167
+ init_react_import();
3168
+ var styles_module_default5 = { "DragIcon": "_DragIcon_o29on_1" };
3169
+
3170
+ // components/DragIcon/index.tsx
3122
3171
  var import_jsx_runtime8 = require("react/jsx-runtime");
3123
- var getClassName6 = get_class_name_factory_default("Input", styles_module_default4);
3124
- var FieldLabel = ({
3125
- children,
3126
- icon,
3127
- label
3128
- }) => {
3129
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("label", { children: [
3130
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: getClassName6("label"), children: [
3131
- icon ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: getClassName6("labelIcon"), children: icon }) : /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_jsx_runtime8.Fragment, {}),
3132
- label
3133
- ] }),
3134
- children
3135
- ] });
3172
+ var getClassName5 = get_class_name_factory_default("DragIcon", styles_module_default5);
3173
+ var DragIcon = () => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: getClassName5(), children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("svg", { viewBox: "0 0 20 20", width: "12", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("path", { d: "M7 2a2 2 0 1 0 .001 4.001A2 2 0 0 0 7 2zm0 6a2 2 0 1 0 .001 4.001A2 2 0 0 0 7 8zm0 6a2 2 0 1 0 .001 4.001A2 2 0 0 0 7 14zm6-8a2 2 0 1 0-.001-4.001A2 2 0 0 0 13 6zm0 2a2 2 0 1 0 .001 4.001A2 2 0 0 0 13 8zm0 6a2 2 0 1 0 .001 4.001A2 2 0 0 0 13 14z" }) }) });
3174
+
3175
+ // components/Puck/context.tsx
3176
+ init_react_import();
3177
+ var import_react24 = require("react");
3178
+ var defaultAppData = {
3179
+ data: { content: [], root: { title: "" } },
3180
+ state: {
3181
+ leftSideBarVisible: true,
3182
+ arrayState: {}
3183
+ }
3136
3184
  };
3137
- var InputOrGroup = ({
3138
- name,
3185
+ var appContext = (0, import_react24.createContext)({
3186
+ appData: defaultAppData,
3187
+ dispatch: () => null
3188
+ });
3189
+ var AppProvider = appContext.Provider;
3190
+ var useAppContext = () => {
3191
+ const mainContext = (0, import_react24.useContext)(appContext);
3192
+ return __spreadProps(__spreadValues({}, mainContext), {
3193
+ // Helper
3194
+ setState: (state, recordHistory) => {
3195
+ return mainContext.dispatch({
3196
+ type: "setState",
3197
+ state,
3198
+ recordHistory
3199
+ });
3200
+ }
3201
+ });
3202
+ };
3203
+
3204
+ // components/InputOrGroup/fields/ArrayField/index.tsx
3205
+ var import_jsx_runtime9 = require("react/jsx-runtime");
3206
+ var getClassNameInput = get_class_name_factory_default("Input", styles_module_default3);
3207
+ var getClassName6 = get_class_name_factory_default("ArrayField", styles_module_default4);
3208
+ var getClassNameItem = get_class_name_factory_default("ArrayFieldItem", styles_module_default4);
3209
+ var ArrayField = ({
3139
3210
  field,
3140
- value,
3141
- label,
3142
3211
  onChange,
3143
- readOnly
3212
+ value,
3213
+ name,
3214
+ label
3144
3215
  }) => {
3145
- if (field.type === "array") {
3146
- if (!field.arrayFields) {
3147
- return null;
3148
- }
3149
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: getClassName6(), children: [
3150
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("b", { className: getClassName6("label"), children: [
3151
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: getClassName6("labelIcon"), children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(list_default, { size: 16 }) }),
3152
- label || name
3153
- ] }),
3154
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: getClassName6("array"), children: [
3155
- Array.isArray(value) ? value.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
3156
- "details",
3157
- {
3158
- className: getClassName6("arrayItem"),
3159
- children: [
3160
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("summary", { children: [
3161
- field.getItemSummary ? field.getItemSummary(item, i) : `Item #${i}`,
3162
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: getClassName6("arrayItemAction"), children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
3163
- IconButton,
3164
- {
3165
- onClick: () => {
3166
- const existingValue = value || [];
3167
- existingValue.splice(i, 1);
3168
- onChange(existingValue);
3169
- },
3170
- title: "Delete",
3171
- children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(trash_default, { size: 21 })
3172
- }
3173
- ) })
3174
- ] }),
3175
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("fieldset", { className: getClassName6("fieldset"), children: Object.keys(field.arrayFields).map((fieldName) => {
3176
- const subField = field.arrayFields[fieldName];
3177
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
3178
- InputOrGroup,
3179
- {
3180
- name: `${name}_${i}_${fieldName}`,
3181
- label: subField.label || fieldName,
3182
- field: subField,
3183
- value: item[fieldName],
3184
- onChange: (val) => onChange(
3185
- replace(value, i, __spreadProps(__spreadValues({}, item), { [fieldName]: val }))
3186
- )
3187
- },
3188
- `${name}_${i}_${fieldName}`
3189
- );
3190
- }) })
3191
- ]
3192
- },
3193
- `${name}_${i}`
3194
- )) : /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", {}),
3195
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
3196
- "button",
3197
- {
3198
- className: getClassName6("addButton"),
3199
- onClick: () => {
3200
- const existingValue = value || [];
3201
- onChange([...existingValue, field.defaultItemProps || {}]);
3202
- },
3203
- children: "+ Add item"
3204
- }
3205
- )
3206
- ] })
3207
- ] });
3216
+ const [arrayFieldId] = (0, import_react25.useState)(generateId("ArrayField"));
3217
+ const { appData, setState } = useAppContext();
3218
+ const arrayState = appData.state.arrayState[arrayFieldId] || {
3219
+ items: Array.from(value).map((v) => ({
3220
+ _arrayId: generateId("ArrayItem"),
3221
+ data: v
3222
+ })),
3223
+ openId: ""
3224
+ };
3225
+ const setArrayState = (0, import_react25.useCallback)(
3226
+ (newArrayState, recordHistory = false) => {
3227
+ setState(
3228
+ {
3229
+ arrayState: __spreadProps(__spreadValues({}, appData.state.arrayState), {
3230
+ [arrayFieldId]: __spreadValues(__spreadValues({}, arrayState), newArrayState)
3231
+ })
3232
+ },
3233
+ recordHistory
3234
+ );
3235
+ },
3236
+ [arrayState]
3237
+ );
3238
+ (0, import_react25.useEffect)(() => {
3239
+ const newItems = Array.from(value).map((item, idx) => {
3240
+ var _a;
3241
+ return {
3242
+ _arrayId: ((_a = arrayState.items[idx]) == null ? void 0 : _a._arrayId) || generateId("ArrayItem"),
3243
+ data: item
3244
+ };
3245
+ });
3246
+ setArrayState({ items: newItems });
3247
+ }, [value]);
3248
+ if (!field.arrayFields) {
3249
+ return null;
3208
3250
  }
3209
- if (field.type === "external") {
3210
- if (!field.adaptor) {
3211
- return null;
3251
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: getClassNameInput(), children: [
3252
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("b", { className: getClassNameInput("label"), children: [
3253
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: getClassNameInput("labelIcon"), children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(list_default, { size: 16 }) }),
3254
+ label || name
3255
+ ] }),
3256
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
3257
+ import_react_beautiful_dnd4.DragDropContext,
3258
+ {
3259
+ onDragEnd: (event) => {
3260
+ var _a;
3261
+ if (event.destination) {
3262
+ const newValue = reorder(
3263
+ arrayState.items,
3264
+ event.source.index,
3265
+ (_a = event.destination) == null ? void 0 : _a.index
3266
+ );
3267
+ setArrayState(__spreadProps(__spreadValues({}, arrayState), { items: newValue }), false);
3268
+ onChange(newValue.map(({ data }) => data));
3269
+ }
3270
+ },
3271
+ children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(DroppableStrictMode_default, { droppableId: "array", children: (provided, snapshot) => {
3272
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
3273
+ "div",
3274
+ __spreadProps(__spreadValues({}, provided.droppableProps), {
3275
+ ref: provided.innerRef,
3276
+ className: getClassName6({
3277
+ isDraggingFrom: !!snapshot.draggingFromThisWith,
3278
+ hasItems: value.length > 0
3279
+ }),
3280
+ children: [
3281
+ Array.isArray(value) && value.length > 0 ? arrayState.items.map(({ _arrayId, data }, i) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
3282
+ Draggable2,
3283
+ {
3284
+ id: _arrayId,
3285
+ index: i,
3286
+ className: (_, snapshot2) => getClassNameItem({
3287
+ isExpanded: arrayState.openId === _arrayId,
3288
+ isDragging: snapshot2.isDragging
3289
+ }),
3290
+ children: () => /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
3291
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
3292
+ "div",
3293
+ {
3294
+ onClick: () => {
3295
+ if (arrayState.openId === _arrayId) {
3296
+ setArrayState({
3297
+ openId: ""
3298
+ });
3299
+ } else {
3300
+ setArrayState({
3301
+ openId: _arrayId
3302
+ });
3303
+ }
3304
+ },
3305
+ className: getClassNameItem("summary"),
3306
+ children: [
3307
+ field.getItemSummary ? field.getItemSummary(data, i) : `Item #${i}`,
3308
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: getClassNameItem("rhs"), children: [
3309
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: getClassNameItem("actions"), children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: getClassNameItem("action"), children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
3310
+ IconButton,
3311
+ {
3312
+ onClick: () => {
3313
+ const existingValue = [
3314
+ ...value || []
3315
+ ];
3316
+ const existingItems = [
3317
+ ...arrayState.items || []
3318
+ ];
3319
+ existingValue.splice(i, 1);
3320
+ existingItems.splice(i, 1);
3321
+ setArrayState(
3322
+ { items: existingItems },
3323
+ true
3324
+ );
3325
+ onChange(existingValue);
3326
+ },
3327
+ title: "Delete",
3328
+ children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(trash_default, { size: 16 })
3329
+ }
3330
+ ) }) }),
3331
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(DragIcon, {}) })
3332
+ ] })
3333
+ ]
3334
+ }
3335
+ ),
3336
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: getClassNameItem("body"), children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
3337
+ "fieldset",
3338
+ {
3339
+ className: getClassNameItem("fieldset"),
3340
+ children: Object.keys(field.arrayFields).map(
3341
+ (fieldName) => {
3342
+ const subField = field.arrayFields[fieldName];
3343
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
3344
+ InputOrGroup,
3345
+ {
3346
+ name: `${name}_${i}_${fieldName}`,
3347
+ label: subField.label || fieldName,
3348
+ field: subField,
3349
+ value: data[fieldName],
3350
+ onChange: (val) => onChange(
3351
+ replace(value, i, __spreadProps(__spreadValues({}, data), {
3352
+ [fieldName]: val
3353
+ }))
3354
+ )
3355
+ },
3356
+ `${name}_${i}_${fieldName}`
3357
+ );
3358
+ }
3359
+ )
3360
+ }
3361
+ ) })
3362
+ ] })
3363
+ },
3364
+ _arrayId
3365
+ )) : null,
3366
+ provided.placeholder,
3367
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
3368
+ "button",
3369
+ {
3370
+ className: getClassName6("addButton"),
3371
+ onClick: () => {
3372
+ const existingValue = value || [];
3373
+ onChange([...existingValue, field.defaultItemProps || {}]);
3374
+ },
3375
+ children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(plus_default, { size: "21" })
3376
+ }
3377
+ )
3378
+ ]
3379
+ })
3380
+ );
3381
+ } })
3382
+ }
3383
+ )
3384
+ ] });
3385
+ };
3386
+
3387
+ // components/InputOrGroup/fields/DefaultField/index.tsx
3388
+ init_react_import();
3389
+ var import_jsx_runtime10 = require("react/jsx-runtime");
3390
+ var getClassName7 = get_class_name_factory_default("Input", styles_module_default3);
3391
+ var DefaultField = ({
3392
+ field,
3393
+ onChange,
3394
+ readOnly,
3395
+ value,
3396
+ name,
3397
+ label
3398
+ }) => {
3399
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("label", { className: getClassName7({ readOnly }), children: [
3400
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: getClassName7("label"), children: [
3401
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: getClassName7("labelIcon"), children: [
3402
+ field.type === "text" && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(type_default, { size: 16 }),
3403
+ field.type === "number" && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(hash_default, { size: 16 })
3404
+ ] }),
3405
+ label || name
3406
+ ] }),
3407
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3408
+ "input",
3409
+ {
3410
+ className: getClassName7("input"),
3411
+ autoComplete: "off",
3412
+ type: field.type,
3413
+ name,
3414
+ value: typeof value === "undefined" ? "" : value,
3415
+ onChange: (e) => {
3416
+ if (field.type === "number") {
3417
+ onChange(Number(e.currentTarget.value));
3418
+ } else {
3419
+ onChange(e.currentTarget.value);
3420
+ }
3421
+ },
3422
+ readOnly
3423
+ }
3424
+ )
3425
+ ] });
3426
+ };
3427
+
3428
+ // components/InputOrGroup/fields/ExternalField/index.tsx
3429
+ init_react_import();
3430
+
3431
+ // components/ExternalInput/index.tsx
3432
+ init_react_import();
3433
+ var import_react26 = require("react");
3434
+
3435
+ // css-module:/home/runner/work/puck/puck/packages/core/components/ExternalInput/styles.module.css#css-module
3436
+ init_react_import();
3437
+ var styles_module_default6 = { "ExternalInput": "_ExternalInput_l4bks_1", "ExternalInput-actions": "_ExternalInput-actions_l4bks_5", "ExternalInput-button": "_ExternalInput-button_l4bks_9", "ExternalInput-detachButton": "_ExternalInput-detachButton_l4bks_28", "ExternalInput--hasData": "_ExternalInput--hasData_l4bks_35", "ExternalInput-modal": "_ExternalInput-modal_l4bks_55", "ExternalInput--modalVisible": "_ExternalInput--modalVisible_l4bks_69", "ExternalInput-modalInner": "_ExternalInput-modalInner_l4bks_73", "ExternalInput-modalHeading": "_ExternalInput-modalHeading_l4bks_84", "ExternalInput-modalTableWrapper": "_ExternalInput-modalTableWrapper_l4bks_89" };
3438
+
3439
+ // components/ExternalInput/index.tsx
3440
+ var import_jsx_runtime11 = require("react/jsx-runtime");
3441
+ var getClassName8 = get_class_name_factory_default("ExternalInput", styles_module_default6);
3442
+ var ExternalInput = ({
3443
+ field,
3444
+ onChange,
3445
+ value = null
3446
+ }) => {
3447
+ const [data, setData] = (0, import_react26.useState)([]);
3448
+ const [isOpen, setOpen] = (0, import_react26.useState)(false);
3449
+ const [selectedData, setSelectedData] = (0, import_react26.useState)(value);
3450
+ const keys = (0, import_react26.useMemo)(() => {
3451
+ const validKeys = /* @__PURE__ */ new Set();
3452
+ for (const item of data) {
3453
+ for (const key of Object.keys(item)) {
3454
+ if (typeof item[key] === "string" || typeof item[key] === "number") {
3455
+ validKeys.add(key);
3456
+ }
3457
+ }
3212
3458
  }
3213
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: getClassName6(""), children: [
3214
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: getClassName6("label"), children: name === "_data" ? "External content" : label || name }),
3215
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(ExternalInput, { field, onChange, value })
3216
- ] });
3459
+ return Array.from(validKeys);
3460
+ }, [data]);
3461
+ (0, import_react26.useEffect)(() => {
3462
+ (() => __async(void 0, null, function* () {
3463
+ if (field.adaptor) {
3464
+ const listData = yield field.adaptor.fetchList(field.adaptorParams);
3465
+ if (listData) {
3466
+ setData(listData);
3467
+ }
3468
+ }
3469
+ }))();
3470
+ }, [field.adaptor, field.adaptorParams]);
3471
+ if (!field.adaptor) {
3472
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { children: "Incorrectly configured" });
3217
3473
  }
3218
- if (field.type === "select") {
3219
- if (!field.options) {
3220
- return null;
3474
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
3475
+ "div",
3476
+ {
3477
+ className: getClassName8({
3478
+ hasData: !!selectedData,
3479
+ modalVisible: isOpen
3480
+ }),
3481
+ children: [
3482
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: getClassName8("actions"), children: [
3483
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3484
+ "button",
3485
+ {
3486
+ onClick: () => setOpen(true),
3487
+ className: getClassName8("button"),
3488
+ children: selectedData ? field.getItemSummary ? field.getItemSummary(selectedData) : `${field.adaptor.name} item` : /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
3489
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(link_default, { size: "16" }),
3490
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("span", { children: [
3491
+ "Select from ",
3492
+ field.adaptor.name
3493
+ ] })
3494
+ ] })
3495
+ }
3496
+ ),
3497
+ selectedData && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3498
+ "button",
3499
+ {
3500
+ className: getClassName8("detachButton"),
3501
+ onClick: () => {
3502
+ setSelectedData(null);
3503
+ onChange(null);
3504
+ },
3505
+ children: "Detach"
3506
+ }
3507
+ )
3508
+ ] }),
3509
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: getClassName8("modal"), onClick: () => setOpen(false), children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
3510
+ "div",
3511
+ {
3512
+ className: getClassName8("modalInner"),
3513
+ onClick: (e) => e.stopPropagation(),
3514
+ children: [
3515
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("h2", { className: getClassName8("modalHeading"), children: "Select content" }),
3516
+ data.length ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: getClassName8("modalTableWrapper"), children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("table", { children: [
3517
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("tr", { children: keys.map((key) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("th", { style: { textAlign: "left" }, children: key }, key)) }) }),
3518
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("tbody", { children: data.map((item, i) => {
3519
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3520
+ "tr",
3521
+ {
3522
+ style: { whiteSpace: "nowrap" },
3523
+ onClick: (e) => {
3524
+ onChange(item);
3525
+ setOpen(false);
3526
+ setSelectedData(item);
3527
+ },
3528
+ children: keys.map((key) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("td", { children: item[key] }, key))
3529
+ },
3530
+ i
3531
+ );
3532
+ }) })
3533
+ ] }) }) : /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { style: { padding: 24 }, children: "No content" })
3534
+ ]
3535
+ }
3536
+ ) })
3537
+ ]
3221
3538
  }
3222
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("label", { className: getClassName6(), children: [
3223
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: getClassName6("label"), children: [
3224
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: getClassName6("labelIcon"), children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(chevron_down_default, { size: 16 }) }),
3225
- label || name
3226
- ] }),
3227
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
3228
- "select",
3229
- {
3230
- className: getClassName6("input"),
3231
- onChange: (e) => {
3232
- if (e.currentTarget.value === "true" || e.currentTarget.value === "false") {
3233
- onChange(Boolean(e.currentTarget.value));
3234
- return;
3539
+ );
3540
+ };
3541
+
3542
+ // components/InputOrGroup/fields/ExternalField/index.tsx
3543
+ var import_jsx_runtime12 = require("react/jsx-runtime");
3544
+ var getClassName9 = get_class_name_factory_default("Input", styles_module_default3);
3545
+ var ExternalField = ({
3546
+ field,
3547
+ onChange,
3548
+ readOnly,
3549
+ value,
3550
+ name,
3551
+ label
3552
+ }) => {
3553
+ if (!field.adaptor) {
3554
+ return null;
3555
+ }
3556
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: getClassName9(""), children: [
3557
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: getClassName9("label"), children: name === "_data" ? "External content" : label || name }),
3558
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(ExternalInput, { field, onChange, value })
3559
+ ] });
3560
+ };
3561
+
3562
+ // components/InputOrGroup/fields/RadioField/index.tsx
3563
+ init_react_import();
3564
+ var import_jsx_runtime13 = require("react/jsx-runtime");
3565
+ var getClassName10 = get_class_name_factory_default("Input", styles_module_default3);
3566
+ var RadioField = ({
3567
+ field,
3568
+ onChange,
3569
+ readOnly,
3570
+ value,
3571
+ name
3572
+ }) => {
3573
+ if (!field.options) {
3574
+ return null;
3575
+ }
3576
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: getClassName10(), children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: getClassName10("radioGroup"), children: [
3577
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: getClassName10("label"), children: [
3578
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: getClassName10("labelIcon"), children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(check_circle_default, { size: 16 }) }),
3579
+ field.label || name
3580
+ ] }),
3581
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: getClassName10("radioGroupItems"), children: field.options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
3582
+ "label",
3583
+ {
3584
+ className: getClassName10("radio"),
3585
+ children: [
3586
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3587
+ "input",
3588
+ {
3589
+ type: "radio",
3590
+ className: getClassName10("radioInput"),
3591
+ value: option.value,
3592
+ name,
3593
+ onChange: (e) => {
3594
+ if (e.currentTarget.value === "true" || e.currentTarget.value === "false") {
3595
+ onChange(JSON.parse(e.currentTarget.value));
3596
+ return;
3597
+ }
3598
+ onChange(e.currentTarget.value);
3599
+ },
3600
+ readOnly,
3601
+ defaultChecked: value === option.value
3235
3602
  }
3236
- onChange(e.currentTarget.value);
3603
+ ),
3604
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: getClassName10("radioInner"), children: option.label || option.value })
3605
+ ]
3606
+ },
3607
+ option.label + option.value
3608
+ )) })
3609
+ ] }) });
3610
+ };
3611
+
3612
+ // components/InputOrGroup/fields/SelectField/index.tsx
3613
+ init_react_import();
3614
+ var import_jsx_runtime14 = require("react/jsx-runtime");
3615
+ var getClassName11 = get_class_name_factory_default("Input", styles_module_default3);
3616
+ var SelectField = ({
3617
+ field,
3618
+ onChange,
3619
+ label,
3620
+ value,
3621
+ name
3622
+ }) => {
3623
+ if (!field.options) {
3624
+ return null;
3625
+ }
3626
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("label", { className: getClassName11(), children: [
3627
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: getClassName11("label"), children: [
3628
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: getClassName11("labelIcon"), children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(chevron_down_default, { size: 16 }) }),
3629
+ label || name
3630
+ ] }),
3631
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3632
+ "select",
3633
+ {
3634
+ className: getClassName11("input"),
3635
+ onChange: (e) => {
3636
+ if (e.currentTarget.value === "true" || e.currentTarget.value === "false") {
3637
+ onChange(Boolean(e.currentTarget.value));
3638
+ return;
3639
+ }
3640
+ onChange(e.currentTarget.value);
3641
+ },
3642
+ value,
3643
+ children: field.options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3644
+ "option",
3645
+ {
3646
+ label: option.label,
3647
+ value: option.value
3237
3648
  },
3238
- value,
3239
- children: field.options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
3240
- "option",
3241
- {
3242
- label: option.label,
3243
- value: option.value
3244
- },
3245
- option.label + option.value
3246
- ))
3247
- }
3248
- )
3249
- ] });
3649
+ option.label + option.value
3650
+ ))
3651
+ }
3652
+ )
3653
+ ] });
3654
+ };
3655
+
3656
+ // components/InputOrGroup/fields/TextareaField/index.tsx
3657
+ init_react_import();
3658
+ var import_jsx_runtime15 = require("react/jsx-runtime");
3659
+ var getClassName12 = get_class_name_factory_default("Input", styles_module_default3);
3660
+ var TextareaField = ({
3661
+ onChange,
3662
+ readOnly,
3663
+ value,
3664
+ name,
3665
+ label
3666
+ }) => {
3667
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("label", { className: getClassName12({ readOnly }), children: [
3668
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: getClassName12("label"), children: [
3669
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: getClassName12("labelIcon"), children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(type_default, { size: 16 }) }),
3670
+ label || name
3671
+ ] }),
3672
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
3673
+ "textarea",
3674
+ {
3675
+ className: getClassName12("input"),
3676
+ autoComplete: "off",
3677
+ name,
3678
+ value: typeof value === "undefined" ? "" : value,
3679
+ onChange: (e) => onChange(e.currentTarget.value),
3680
+ readOnly,
3681
+ rows: 5
3682
+ }
3683
+ )
3684
+ ] });
3685
+ };
3686
+
3687
+ // components/InputOrGroup/index.tsx
3688
+ var import_jsx_runtime16 = require("react/jsx-runtime");
3689
+ var getClassName13 = get_class_name_factory_default("Input", styles_module_default3);
3690
+ var FieldLabel = ({
3691
+ children,
3692
+ icon,
3693
+ label
3694
+ }) => {
3695
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("label", { children: [
3696
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: getClassName13("label"), children: [
3697
+ icon ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: getClassName13("labelIcon"), children: icon }) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_jsx_runtime16.Fragment, {}),
3698
+ label
3699
+ ] }),
3700
+ children
3701
+ ] });
3702
+ };
3703
+ var InputOrGroup = (props) => {
3704
+ const { name, field, value, onChange, readOnly } = props;
3705
+ if (field.type === "array") {
3706
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(ArrayField, __spreadValues({}, props));
3250
3707
  }
3251
- if (field.type === "textarea") {
3252
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("label", { className: getClassName6({ readOnly }), children: [
3253
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: getClassName6("label"), children: [
3254
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: getClassName6("labelIcon"), children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(type_default, { size: 16 }) }),
3255
- label || name
3256
- ] }),
3257
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
3258
- "textarea",
3259
- {
3260
- className: getClassName6("input"),
3261
- autoComplete: "off",
3262
- name,
3263
- value: typeof value === "undefined" ? "" : value,
3264
- onChange: (e) => onChange(e.currentTarget.value),
3265
- readOnly,
3266
- rows: 5
3267
- }
3268
- )
3269
- ] });
3708
+ if (field.type === "external") {
3709
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(ExternalField, __spreadValues({}, props));
3710
+ }
3711
+ if (field.type === "select") {
3712
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(SelectField, __spreadValues({}, props));
3713
+ }
3714
+ if (field.type === "textarea") {
3715
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(TextareaField, __spreadValues({}, props));
3270
3716
  }
3271
3717
  if (field.type === "radio") {
3272
- if (!field.options) {
3273
- return null;
3274
- }
3275
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: getClassName6(), children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: getClassName6("radioGroup"), children: [
3276
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: getClassName6("label"), children: [
3277
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: getClassName6("labelIcon"), children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(check_circle_default, { size: 16 }) }),
3278
- field.label || name
3279
- ] }),
3280
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: getClassName6("radioGroupItems"), children: field.options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
3281
- "label",
3282
- {
3283
- className: getClassName6("radio"),
3284
- children: [
3285
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
3286
- "input",
3287
- {
3288
- type: "radio",
3289
- className: getClassName6("radioInput"),
3290
- value: option.value,
3291
- name,
3292
- onChange: (e) => {
3293
- if (e.currentTarget.value === "true" || e.currentTarget.value === "false") {
3294
- onChange(JSON.parse(e.currentTarget.value));
3295
- return;
3296
- }
3297
- onChange(e.currentTarget.value);
3298
- },
3299
- readOnly,
3300
- defaultChecked: value === option.value
3301
- }
3302
- ),
3303
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: getClassName6("radioInner"), children: option.label || option.value })
3304
- ]
3305
- },
3306
- option.label + option.value
3307
- )) })
3308
- ] }) });
3718
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(RadioField, __spreadValues({}, props));
3309
3719
  }
3310
3720
  if (field.type === "custom") {
3311
3721
  if (!field.render) {
3312
3722
  return null;
3313
3723
  }
3314
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: getClassName6(), children: field.render({
3724
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: getClassName13(), children: field.render({
3315
3725
  field,
3316
3726
  name,
3317
3727
  value,
@@ -3319,96 +3729,46 @@ var InputOrGroup = ({
3319
3729
  readOnly
3320
3730
  }) });
3321
3731
  }
3322
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("label", { className: getClassName6({ readOnly }), children: [
3323
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: getClassName6("label"), children: [
3324
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: getClassName6("labelIcon"), children: [
3325
- field.type === "text" && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(type_default, { size: 16 }),
3326
- field.type === "number" && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(hash_default, { size: 16 })
3327
- ] }),
3328
- label || name
3329
- ] }),
3330
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
3331
- "input",
3332
- {
3333
- className: getClassName6("input"),
3334
- autoComplete: "off",
3335
- type: field.type,
3336
- name,
3337
- value: typeof value === "undefined" ? "" : value,
3338
- onChange: (e) => {
3339
- if (field.type === "number") {
3340
- onChange(Number(e.currentTarget.value));
3341
- } else {
3342
- onChange(e.currentTarget.value);
3343
- }
3344
- },
3345
- readOnly
3346
- }
3347
- )
3348
- ] });
3732
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(DefaultField, __spreadValues({}, props));
3349
3733
  };
3350
3734
 
3351
3735
  // components/ComponentList/index.tsx
3352
3736
  init_react_import();
3353
- var import_react_beautiful_dnd3 = require("react-beautiful-dnd");
3354
3737
 
3355
3738
  // css-module:/home/runner/work/puck/puck/packages/core/components/ComponentList/styles.module.css#css-module
3356
3739
  init_react_import();
3357
- var styles_module_default5 = { "ComponentList": "_ComponentList_1ybn0_1", "ComponentList-item": "_ComponentList-item_1ybn0_9", "ComponentList-itemShadow": "_ComponentList-itemShadow_1ybn0_10", "ComponentList-itemIcon": "_ComponentList-itemIcon_1ybn0_28" };
3740
+ var styles_module_default7 = { "ComponentList": "_ComponentList_bvy0z_1", "ComponentList-item": "_ComponentList-item_bvy0z_6", "ComponentList-itemIcon": "_ComponentList-itemIcon_bvy0z_24", "ComponentList--isDraggingFrom": "_ComponentList--isDraggingFrom_bvy0z_28" };
3358
3741
 
3359
3742
  // components/ComponentList/index.tsx
3360
- var import_jsx_runtime9 = require("react/jsx-runtime");
3361
- var getClassName7 = get_class_name_factory_default("ComponentList", styles_module_default5);
3743
+ var import_jsx_runtime17 = require("react/jsx-runtime");
3744
+ var getClassName14 = get_class_name_factory_default("ComponentList", styles_module_default7);
3362
3745
  var ComponentList = ({ config }) => {
3363
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(DroppableStrictMode_default, { droppableId: "component-list", isDropDisabled: true, children: (provided, snapshot) => /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
3746
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(DroppableStrictMode_default, { droppableId: "component-list", isDropDisabled: true, children: (provided, snapshot) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
3364
3747
  "div",
3365
3748
  __spreadProps(__spreadValues({}, provided.droppableProps), {
3366
3749
  ref: provided.innerRef,
3367
- className: getClassName7(),
3750
+ className: getClassName14({
3751
+ isDraggingFrom: !!snapshot.draggingFromThisWith
3752
+ }),
3368
3753
  children: [
3369
3754
  Object.keys(config.components).map((componentKey, i) => {
3370
- const componentConfig = config[componentKey];
3371
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
3372
- import_react_beautiful_dnd3.Draggable,
3755
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
3756
+ Draggable2,
3373
3757
  {
3374
- draggableId: componentKey,
3758
+ id: componentKey,
3375
3759
  index: i,
3376
- children: (provided2, snapshot2) => {
3377
- var _a;
3378
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
3379
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
3380
- "div",
3381
- __spreadProps(__spreadValues(__spreadValues({
3382
- ref: provided2.innerRef
3383
- }, provided2.draggableProps), provided2.dragHandleProps), {
3384
- className: getClassName7("item"),
3385
- style: __spreadProps(__spreadValues({}, provided2.draggableProps.style), {
3386
- transform: snapshot2.isDragging ? (_a = provided2.draggableProps.style) == null ? void 0 : _a.transform : "translate(0px, 0px)"
3387
- }),
3388
- children: [
3389
- componentKey,
3390
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: getClassName7("itemIcon"), children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(grid_default, { size: 18 }) })
3391
- ]
3392
- })
3393
- ),
3394
- snapshot2.isDragging && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
3395
- "div",
3396
- {
3397
- className: getClassName7("itemShadow"),
3398
- style: { transform: "none !important" },
3399
- children: [
3400
- componentKey,
3401
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: getClassName7("itemIcon"), children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(grid_default, { size: 18 }) })
3402
- ]
3403
- }
3404
- )
3405
- ] });
3406
- }
3760
+ showShadow: true,
3761
+ disableAnimations: true,
3762
+ className: () => getClassName14("item"),
3763
+ children: () => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_jsx_runtime17.Fragment, { children: [
3764
+ componentKey,
3765
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: getClassName14("itemIcon"), children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(DragIcon, {}) })
3766
+ ] })
3407
3767
  },
3408
3768
  componentKey
3409
3769
  );
3410
3770
  }),
3411
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: { display: "none" }, children: provided.placeholder })
3771
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { style: { display: "none" }, children: provided.placeholder })
3412
3772
  ]
3413
3773
  })
3414
3774
  ) });
@@ -3416,10 +3776,10 @@ var ComponentList = ({ config }) => {
3416
3776
 
3417
3777
  // lib/use-placeholder-style.ts
3418
3778
  init_react_import();
3419
- var import_react24 = require("react");
3779
+ var import_react27 = require("react");
3420
3780
  var usePlaceholderStyle = () => {
3421
3781
  const queryAttr = "data-rbd-drag-handle-draggable-id";
3422
- const [placeholderStyle, setPlaceholderStyle] = (0, import_react24.useState)();
3782
+ const [placeholderStyle, setPlaceholderStyle] = (0, import_react27.useState)();
3423
3783
  const onDragStartOrUpdate = (draggedItem) => {
3424
3784
  var _a;
3425
3785
  const draggableId = draggedItem.draggableId;
@@ -3467,24 +3827,24 @@ init_react_import();
3467
3827
 
3468
3828
  // css-module:/home/runner/work/puck/puck/packages/core/components/SidebarSection/styles.module.css#css-module
3469
3829
  init_react_import();
3470
- var styles_module_default6 = { "SidebarSection": "_SidebarSection_f1p35_1", "SidebarSection-title": "_SidebarSection-title_f1p35_12", "SidebarSection-content": "_SidebarSection-content_f1p35_19", "SidebarSection--noPadding": "_SidebarSection--noPadding_f1p35_24", "SidebarSection-breadcrumbLabel": "_SidebarSection-breadcrumbLabel_f1p35_33", "SidebarSection-breadcrumbs": "_SidebarSection-breadcrumbs_f1p35_44", "SidebarSection-breadcrumb": "_SidebarSection-breadcrumb_f1p35_33", "SidebarSection-heading": "_SidebarSection-heading_f1p35_56" };
3830
+ var styles_module_default8 = { "SidebarSection": "_SidebarSection_f1p35_1", "SidebarSection-title": "_SidebarSection-title_f1p35_12", "SidebarSection-content": "_SidebarSection-content_f1p35_19", "SidebarSection--noPadding": "_SidebarSection--noPadding_f1p35_24", "SidebarSection-breadcrumbLabel": "_SidebarSection-breadcrumbLabel_f1p35_33", "SidebarSection-breadcrumbs": "_SidebarSection-breadcrumbs_f1p35_44", "SidebarSection-breadcrumb": "_SidebarSection-breadcrumb_f1p35_33", "SidebarSection-heading": "_SidebarSection-heading_f1p35_56" };
3471
3831
 
3472
3832
  // components/Heading/index.tsx
3473
3833
  init_react_import();
3474
3834
 
3475
3835
  // css-module:/home/runner/work/puck/puck/packages/core/components/Heading/styles.module.css#css-module
3476
3836
  init_react_import();
3477
- var styles_module_default7 = { "Heading": "_Heading_1bvy5_1", "Heading--xxxxl": "_Heading--xxxxl_1bvy5_13", "Heading--xxxl": "_Heading--xxxl_1bvy5_19", "Heading--xxl": "_Heading--xxl_1bvy5_23", "Heading--xl": "_Heading--xl_1bvy5_27", "Heading--l": "_Heading--l_1bvy5_31", "Heading--m": "_Heading--m_1bvy5_35", "Heading--s": "_Heading--s_1bvy5_39", "Heading--xs": "_Heading--xs_1bvy5_43" };
3837
+ var styles_module_default9 = { "Heading": "_Heading_1bvy5_1", "Heading--xxxxl": "_Heading--xxxxl_1bvy5_13", "Heading--xxxl": "_Heading--xxxl_1bvy5_19", "Heading--xxl": "_Heading--xxl_1bvy5_23", "Heading--xl": "_Heading--xl_1bvy5_27", "Heading--l": "_Heading--l_1bvy5_31", "Heading--m": "_Heading--m_1bvy5_35", "Heading--s": "_Heading--s_1bvy5_39", "Heading--xs": "_Heading--xs_1bvy5_43" };
3478
3838
 
3479
3839
  // components/Heading/index.tsx
3480
- var import_jsx_runtime10 = require("react/jsx-runtime");
3481
- var getClassName8 = get_class_name_factory_default("Heading", styles_module_default7);
3840
+ var import_jsx_runtime18 = require("react/jsx-runtime");
3841
+ var getClassName15 = get_class_name_factory_default("Heading", styles_module_default9);
3482
3842
  var Heading = ({ children, rank, size = "m" }) => {
3483
3843
  const Tag = rank ? `h${rank}` : "span";
3484
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3844
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
3485
3845
  Tag,
3486
3846
  {
3487
- className: getClassName8({
3847
+ className: getClassName15({
3488
3848
  [size]: true
3489
3849
  }),
3490
3850
  children
@@ -3493,8 +3853,8 @@ var Heading = ({ children, rank, size = "m" }) => {
3493
3853
  };
3494
3854
 
3495
3855
  // components/SidebarSection/index.tsx
3496
- var import_jsx_runtime11 = require("react/jsx-runtime");
3497
- var getClassName9 = get_class_name_factory_default("SidebarSection", styles_module_default6);
3856
+ var import_jsx_runtime19 = require("react/jsx-runtime");
3857
+ var getClassName16 = get_class_name_factory_default("SidebarSection", styles_module_default8);
3498
3858
  var SidebarSection = ({
3499
3859
  children,
3500
3860
  title,
@@ -3503,26 +3863,125 @@ var SidebarSection = ({
3503
3863
  breadcrumbClick,
3504
3864
  noPadding
3505
3865
  }) => {
3506
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: getClassName9({ noPadding }), style: { background }, children: [
3507
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: getClassName9("title"), children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: getClassName9("breadcrumbs"), children: [
3508
- breadcrumbs.map((breadcrumb, i) => /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: getClassName9("breadcrumb"), children: [
3509
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3866
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: getClassName16({ noPadding }), style: { background }, children: [
3867
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: getClassName16("title"), children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: getClassName16("breadcrumbs"), children: [
3868
+ breadcrumbs.map((breadcrumb, i) => /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: getClassName16("breadcrumb"), children: [
3869
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
3510
3870
  "div",
3511
3871
  {
3512
- className: getClassName9("breadcrumbLabel"),
3872
+ className: getClassName16("breadcrumbLabel"),
3513
3873
  onClick: () => breadcrumbClick && breadcrumbClick(breadcrumb),
3514
3874
  children: breadcrumb.label
3515
3875
  }
3516
3876
  ),
3517
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(chevron_right_default, { size: 16 })
3877
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(chevron_right_default, { size: 16 })
3518
3878
  ] }, i)),
3519
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: getClassName9("heading"), children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Heading, { rank: 2, size: "xs", children: title }) })
3879
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: getClassName16("heading"), children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Heading, { rank: 2, size: "xs", children: title }) })
3520
3880
  ] }) }),
3521
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: getClassName9("content"), children })
3881
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: getClassName16("content"), children })
3522
3882
  ] });
3523
3883
  };
3524
3884
 
3525
- // lib/reducer.ts
3885
+ // reducer/index.ts
3886
+ init_react_import();
3887
+
3888
+ // lib/use-puck-history.ts
3889
+ init_react_import();
3890
+ var import_react29 = require("react");
3891
+
3892
+ // lib/use-action-history.ts
3893
+ init_react_import();
3894
+ var import_react28 = require("react");
3895
+ var EMPTY_HISTORY_INDEX = -1;
3896
+ function useActionHistory() {
3897
+ const [histories, setHistories] = (0, import_react28.useState)([]);
3898
+ const [currentHistoryIndex, setCurrentHistoryIndex] = (0, import_react28.useState)(EMPTY_HISTORY_INDEX);
3899
+ const currentHistory = histories[currentHistoryIndex];
3900
+ const canRewind = currentHistoryIndex > EMPTY_HISTORY_INDEX;
3901
+ const canForward = currentHistoryIndex < histories.length - 1;
3902
+ const record = (params) => {
3903
+ const history = __spreadValues({
3904
+ id: Math.random().toString()
3905
+ }, params);
3906
+ setHistories((prev) => [
3907
+ ...prev.slice(0, currentHistoryIndex + 1),
3908
+ history
3909
+ ]);
3910
+ setCurrentHistoryIndex((prev) => prev + 1);
3911
+ };
3912
+ const rewind = () => {
3913
+ if (canRewind) {
3914
+ currentHistory.rewind();
3915
+ setCurrentHistoryIndex((prev) => prev - 1);
3916
+ }
3917
+ };
3918
+ const forward = () => {
3919
+ const forwardHistory = histories[currentHistoryIndex + 1];
3920
+ if (canForward && forwardHistory) {
3921
+ forwardHistory.forward();
3922
+ setCurrentHistoryIndex((prev) => prev + 1);
3923
+ }
3924
+ };
3925
+ return {
3926
+ currentHistory,
3927
+ canRewind,
3928
+ canForward,
3929
+ record,
3930
+ rewind,
3931
+ forward
3932
+ };
3933
+ }
3934
+
3935
+ // lib/use-puck-history.ts
3936
+ var import_react_hotkeys_hook = require("react-hotkeys-hook");
3937
+ var import_event_emitter = __toESM(require("event-emitter"));
3938
+ var import_use_debounce2 = require("use-debounce");
3939
+ var DEBOUNCE_TIME = 250;
3940
+ var RECORD_DIFF = "RECORD_DIFF";
3941
+ var historyEmitter = (0, import_event_emitter.default)();
3942
+ var recordDiff = (newAppData) => historyEmitter.emit(RECORD_DIFF, newAppData);
3943
+ var _recordHistory = ({ snapshot, newSnapshot, record, dispatch }) => {
3944
+ record({
3945
+ forward: () => {
3946
+ dispatch({ type: "set", appData: newSnapshot });
3947
+ },
3948
+ rewind: () => {
3949
+ dispatch({ type: "set", appData: snapshot });
3950
+ }
3951
+ });
3952
+ };
3953
+ function usePuckHistory({
3954
+ appData,
3955
+ dispatch
3956
+ }) {
3957
+ const { canForward, canRewind, rewind, forward, record } = useActionHistory();
3958
+ (0, import_react_hotkeys_hook.useHotkeys)("meta+z", rewind, { preventDefault: true });
3959
+ (0, import_react_hotkeys_hook.useHotkeys)("meta+shift+z", forward, { preventDefault: true });
3960
+ (0, import_react_hotkeys_hook.useHotkeys)("meta+y", forward, { preventDefault: true });
3961
+ const [snapshot] = (0, import_use_debounce2.useDebounce)(appData, DEBOUNCE_TIME);
3962
+ const handleRecordDiff = (0, import_use_debounce2.useDebouncedCallback)((newAppData) => {
3963
+ return _recordHistory({
3964
+ snapshot,
3965
+ newSnapshot: newAppData,
3966
+ record,
3967
+ dispatch
3968
+ });
3969
+ }, DEBOUNCE_TIME);
3970
+ (0, import_react29.useEffect)(() => {
3971
+ historyEmitter.on(RECORD_DIFF, handleRecordDiff);
3972
+ return () => {
3973
+ historyEmitter.off(RECORD_DIFF, handleRecordDiff);
3974
+ };
3975
+ }, [handleRecordDiff]);
3976
+ return {
3977
+ canForward,
3978
+ canRewind,
3979
+ rewind,
3980
+ forward
3981
+ };
3982
+ }
3983
+
3984
+ // reducer/data.ts
3526
3985
  init_react_import();
3527
3986
 
3528
3987
  // lib/insert.ts
@@ -3543,13 +4002,6 @@ var remove = (list, index) => {
3543
4002
 
3544
4003
  // lib/reduce-related-zones.ts
3545
4004
  init_react_import();
3546
-
3547
- // lib/generate-id.ts
3548
- init_react_import();
3549
- var import_crypto = require("crypto");
3550
- var generateId = (type) => `${type}-${(0, import_crypto.randomBytes)(20).toString("hex")}`;
3551
-
3552
- // lib/reduce-related-zones.ts
3553
4005
  var reduceRelatedZones = (item, data, fn) => {
3554
4006
  return __spreadProps(__spreadValues({}, data), {
3555
4007
  zones: Object.keys(data.zones || {}).reduce(
@@ -3612,125 +4064,12 @@ var duplicateRelatedZones = (item, data, newId) => {
3612
4064
  });
3613
4065
  };
3614
4066
 
3615
- // lib/use-puck-history.ts
3616
- init_react_import();
3617
- var import_react26 = require("react");
3618
-
3619
- // lib/use-action-history.ts
3620
- init_react_import();
3621
- var import_react25 = require("react");
3622
- var EMPTY_HISTORY_INDEX = -1;
3623
- function useActionHistory() {
3624
- const [histories, setHistories] = (0, import_react25.useState)([]);
3625
- const [currentHistoryIndex, setCurrentHistoryIndex] = (0, import_react25.useState)(EMPTY_HISTORY_INDEX);
3626
- const currentHistory = histories[currentHistoryIndex];
3627
- const canRewind = currentHistoryIndex > EMPTY_HISTORY_INDEX;
3628
- const canForward = currentHistoryIndex < histories.length - 1;
3629
- const record = (params) => {
3630
- const history = __spreadValues({
3631
- id: Math.random().toString()
3632
- }, params);
3633
- setHistories((prev) => [
3634
- ...prev.slice(0, currentHistoryIndex + 1),
3635
- history
3636
- ]);
3637
- setCurrentHistoryIndex((prev) => prev + 1);
3638
- };
3639
- const rewind = () => {
3640
- if (canRewind) {
3641
- currentHistory.rewind();
3642
- setCurrentHistoryIndex((prev) => prev - 1);
3643
- }
3644
- };
3645
- const forward = () => {
3646
- const forwardHistory = histories[currentHistoryIndex + 1];
3647
- if (canForward && forwardHistory) {
3648
- forwardHistory.forward();
3649
- setCurrentHistoryIndex((prev) => prev + 1);
3650
- }
3651
- };
3652
- return {
3653
- currentHistory,
3654
- canRewind,
3655
- canForward,
3656
- record,
3657
- rewind,
3658
- forward
3659
- };
3660
- }
3661
-
3662
- // lib/use-puck-history.ts
3663
- var import_react_hotkeys_hook = require("react-hotkeys-hook");
3664
- var import_event_emitter = __toESM(require("event-emitter"));
3665
- var import_use_debounce2 = require("use-debounce");
3666
- var import_deep_diff = require("deep-diff");
3667
- var DEBOUNCE_TIME = 250;
3668
- var RECORD_DIFF = "RECORD_DIFF";
3669
- var historyEmitter = (0, import_event_emitter.default)();
3670
- var recordDiff = (newData) => historyEmitter.emit(RECORD_DIFF, newData);
3671
- function usePuckHistory({
3672
- data,
3673
- dispatch
3674
- }) {
3675
- const { canForward, canRewind, rewind, forward, record } = useActionHistory();
3676
- (0, import_react_hotkeys_hook.useHotkeys)("meta+z", rewind, { preventDefault: true });
3677
- (0, import_react_hotkeys_hook.useHotkeys)("meta+shift+z", forward, { preventDefault: true });
3678
- (0, import_react_hotkeys_hook.useHotkeys)("meta+y", forward, { preventDefault: true });
3679
- const [snapshot] = (0, import_use_debounce2.useDebounce)(data, DEBOUNCE_TIME);
3680
- const handleRecordDiff = (0, import_use_debounce2.useDebouncedCallback)((newData) => {
3681
- const _diff = (0, import_deep_diff.diff)(snapshot, newData);
3682
- if (!_diff) {
3683
- return;
3684
- }
3685
- record({
3686
- forward: () => {
3687
- const target = structuredClone(data);
3688
- _diff.reduce((target2, change) => {
3689
- (0, import_deep_diff.applyChange)(target2, true, change);
3690
- return target2;
3691
- }, target);
3692
- dispatch({ type: "set", data: target });
3693
- },
3694
- rewind: () => {
3695
- const target = structuredClone(data);
3696
- _diff.reduce((target2, change) => {
3697
- (0, import_deep_diff.revertChange)(target2, true, change);
3698
- return target2;
3699
- }, target);
3700
- dispatch({ type: "set", data: target });
3701
- }
3702
- });
3703
- }, DEBOUNCE_TIME);
3704
- (0, import_react26.useEffect)(() => {
3705
- historyEmitter.on(RECORD_DIFF, handleRecordDiff);
3706
- return () => {
3707
- historyEmitter.off(RECORD_DIFF, handleRecordDiff);
3708
- };
3709
- }, [handleRecordDiff]);
3710
- return {
3711
- canForward,
3712
- canRewind,
3713
- rewind,
3714
- forward,
3715
- record
3716
- };
3717
- }
3718
-
3719
- // lib/reducer.ts
4067
+ // reducer/data.ts
3720
4068
  var zoneCache = {};
3721
4069
  var addToZoneCache = (key, data) => {
3722
4070
  zoneCache[key] = data;
3723
4071
  };
3724
- var storeInterceptor = (reducer) => {
3725
- return (data, action) => {
3726
- const newData = reducer(data, action);
3727
- if (!["registerZone", "unregisterZone", "set"].includes(action.type)) {
3728
- recordDiff(newData);
3729
- }
3730
- return newData;
3731
- };
3732
- };
3733
- var createReducer = ({ config }) => storeInterceptor((data, action) => {
4072
+ var reduceData = (data, action, config) => {
3734
4073
  if (action.type === "insert") {
3735
4074
  const emptyComponentData = {
3736
4075
  type: action.componentType,
@@ -3910,10 +4249,48 @@ var createReducer = ({ config }) => storeInterceptor((data, action) => {
3910
4249
  }
3911
4250
  return __spreadProps(__spreadValues({}, data), { zones: _zones });
3912
4251
  }
3913
- if (action.type === "set") {
4252
+ if (action.type === "setData") {
3914
4253
  return __spreadValues(__spreadValues({}, data), action.data);
3915
4254
  }
3916
4255
  return data;
4256
+ };
4257
+
4258
+ // reducer/state.ts
4259
+ init_react_import();
4260
+ var reduceState = (state, action) => {
4261
+ if (action.type === "setState") {
4262
+ return __spreadValues(__spreadValues({}, state), action.state);
4263
+ }
4264
+ return state;
4265
+ };
4266
+
4267
+ // reducer/actions.tsx
4268
+ init_react_import();
4269
+
4270
+ // reducer/index.ts
4271
+ var storeInterceptor = (reducer) => {
4272
+ return (appData, action) => {
4273
+ const newAppData = reducer(appData, action);
4274
+ const isValidType = ![
4275
+ "registerZone",
4276
+ "unregisterZone",
4277
+ "setData",
4278
+ "setState",
4279
+ "set"
4280
+ ].includes(action.type);
4281
+ if (typeof action.recordHistory !== "undefined" ? action.recordHistory : isValidType) {
4282
+ recordDiff(newAppData);
4283
+ }
4284
+ return newAppData;
4285
+ };
4286
+ };
4287
+ var createReducer = ({ config }) => storeInterceptor((appData, action) => {
4288
+ const data = reduceData(appData.data, action, config);
4289
+ const state = reduceState(appData.state, action);
4290
+ if (action.type === "set") {
4291
+ return __spreadValues(__spreadValues({}, appData), action.appData);
4292
+ }
4293
+ return { data, state };
3917
4294
  });
3918
4295
 
3919
4296
  // components/LayerTree/index.tsx
@@ -3921,7 +4298,7 @@ init_react_import();
3921
4298
 
3922
4299
  // css-module:/home/runner/work/puck/puck/packages/core/components/LayerTree/styles.module.css#css-module
3923
4300
  init_react_import();
3924
- var styles_module_default8 = { "LayerTree": "_LayerTree_1dcmd_1", "LayerTree-zoneTitle": "_LayerTree-zoneTitle_1dcmd_11", "LayerTree-helper": "_LayerTree-helper_1dcmd_17", "Layer": "_Layer_1dcmd_1", "Layer-inner": "_Layer-inner_1dcmd_29", "Layer--containsZone": "_Layer--containsZone_1dcmd_35", "Layer-clickable": "_Layer-clickable_1dcmd_39", "Layer--isSelected": "_Layer--isSelected_1dcmd_48", "Layer--isHovering": "_Layer--isHovering_1dcmd_49", "Layer-chevron": "_Layer-chevron_1dcmd_65", "Layer--childIsSelected": "_Layer--childIsSelected_1dcmd_66", "Layer-zones": "_Layer-zones_1dcmd_70", "Layer-title": "_Layer-title_1dcmd_84", "Layer-icon": "_Layer-icon_1dcmd_92", "Layer-zoneIcon": "_Layer-zoneIcon_1dcmd_97" };
4301
+ var styles_module_default10 = { "LayerTree": "_LayerTree_1dcmd_1", "LayerTree-zoneTitle": "_LayerTree-zoneTitle_1dcmd_11", "LayerTree-helper": "_LayerTree-helper_1dcmd_17", "Layer": "_Layer_1dcmd_1", "Layer-inner": "_Layer-inner_1dcmd_29", "Layer--containsZone": "_Layer--containsZone_1dcmd_35", "Layer-clickable": "_Layer-clickable_1dcmd_39", "Layer--isSelected": "_Layer--isSelected_1dcmd_48", "Layer--isHovering": "_Layer--isHovering_1dcmd_49", "Layer-chevron": "_Layer-chevron_1dcmd_65", "Layer--childIsSelected": "_Layer--childIsSelected_1dcmd_66", "Layer-zones": "_Layer-zones_1dcmd_70", "Layer-title": "_Layer-title_1dcmd_84", "Layer-icon": "_Layer-icon_1dcmd_92", "Layer-zoneIcon": "_Layer-zoneIcon_1dcmd_97" };
3925
4302
 
3926
4303
  // lib/scroll-into-view.ts
3927
4304
  init_react_import();
@@ -3935,7 +4312,7 @@ var scrollIntoView = (el) => {
3935
4312
  };
3936
4313
 
3937
4314
  // components/LayerTree/index.tsx
3938
- var import_react27 = require("react");
4315
+ var import_react30 = require("react");
3939
4316
 
3940
4317
  // lib/find-zones-for-area.ts
3941
4318
  init_react_import();
@@ -3964,9 +4341,9 @@ var isChildOfZone = (item, maybeChild, ctx) => {
3964
4341
  };
3965
4342
 
3966
4343
  // components/LayerTree/index.tsx
3967
- var import_jsx_runtime12 = require("react/jsx-runtime");
3968
- var getClassName10 = get_class_name_factory_default("LayerTree", styles_module_default8);
3969
- var getClassNameLayer = get_class_name_factory_default("Layer", styles_module_default8);
4344
+ var import_jsx_runtime20 = require("react/jsx-runtime");
4345
+ var getClassName17 = get_class_name_factory_default("LayerTree", styles_module_default10);
4346
+ var getClassNameLayer = get_class_name_factory_default("Layer", styles_module_default10);
3970
4347
  var LayerTree = ({
3971
4348
  data,
3972
4349
  zoneContent,
@@ -3976,15 +4353,15 @@ var LayerTree = ({
3976
4353
  label
3977
4354
  }) => {
3978
4355
  const zones = data.zones || {};
3979
- const ctx = (0, import_react27.useContext)(dropZoneContext);
3980
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_jsx_runtime12.Fragment, { children: [
3981
- label && /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: getClassName10("zoneTitle"), children: [
3982
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: getClassName10("zoneIcon"), children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(layers_default, { size: "16" }) }),
4356
+ const ctx = (0, import_react30.useContext)(dropZoneContext);
4357
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_jsx_runtime20.Fragment, { children: [
4358
+ label && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: getClassName17("zoneTitle"), children: [
4359
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: getClassName17("zoneIcon"), children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(layers_default, { size: "16" }) }),
3983
4360
  " ",
3984
4361
  label
3985
4362
  ] }),
3986
- /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("ul", { className: getClassName10(), children: [
3987
- zoneContent.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: getClassName10("helper"), children: "No items" }),
4363
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("ul", { className: getClassName17(), children: [
4364
+ zoneContent.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: getClassName17("helper"), children: "No items" }),
3988
4365
  zoneContent.map((item, i) => {
3989
4366
  const isSelected = (itemSelector == null ? void 0 : itemSelector.index) === i && (itemSelector.zone === zone || itemSelector.zone === rootDroppableId && !zone);
3990
4367
  const zonesForItem = findZonesForArea(data, item.props.id);
@@ -3999,7 +4376,7 @@ var LayerTree = ({
3999
4376
  const selectedItem = itemSelector && data ? getItem(itemSelector, data) : null;
4000
4377
  const isHovering = hoveringComponent === item.props.id;
4001
4378
  const childIsSelected = isChildOfZone(item, selectedItem, ctx);
4002
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
4379
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
4003
4380
  "li",
4004
4381
  {
4005
4382
  className: getClassNameLayer({
@@ -4009,7 +4386,7 @@ var LayerTree = ({
4009
4386
  childIsSelected
4010
4387
  }),
4011
4388
  children: [
4012
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: getClassNameLayer("inner"), children: /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
4389
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: getClassNameLayer("inner"), children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
4013
4390
  "div",
4014
4391
  {
4015
4392
  className: getClassNameLayer("clickable"),
@@ -4040,22 +4417,22 @@ var LayerTree = ({
4040
4417
  setHoveringComponent(null);
4041
4418
  },
4042
4419
  children: [
4043
- containsZone && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
4420
+ containsZone && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4044
4421
  "div",
4045
4422
  {
4046
4423
  className: getClassNameLayer("chevron"),
4047
4424
  title: isSelected ? "Collapse" : "Expand",
4048
- children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(chevron_down_default, { size: "12" })
4425
+ children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(chevron_down_default, { size: "12" })
4049
4426
  }
4050
4427
  ),
4051
- /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: getClassNameLayer("title"), children: [
4052
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: getClassNameLayer("icon"), children: item.type === "Text" || item.type === "Heading" ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(type_default, { size: "16" }) : /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(grid_default, { size: "16" }) }),
4428
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: getClassNameLayer("title"), children: [
4429
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: getClassNameLayer("icon"), children: item.type === "Text" || item.type === "Heading" ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(type_default, { size: "16" }) : /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(grid_default, { size: "16" }) }),
4053
4430
  item.type
4054
4431
  ] })
4055
4432
  ]
4056
4433
  }
4057
4434
  ) }),
4058
- containsZone && Object.keys(zonesForItem).map((zoneKey, idx) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: getClassNameLayer("zones"), children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
4435
+ containsZone && Object.keys(zonesForItem).map((zoneKey, idx) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: getClassNameLayer("zones"), children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4059
4436
  LayerTree,
4060
4437
  {
4061
4438
  data,
@@ -4084,21 +4461,23 @@ var areaContainsZones = (data, area) => {
4084
4461
 
4085
4462
  // lib/flush-zones.ts
4086
4463
  init_react_import();
4087
- var flushZones = (data) => {
4088
- const containsZones = typeof data.zones !== "undefined";
4464
+ var flushZones = (appData) => {
4465
+ const containsZones = typeof appData.data.zones !== "undefined";
4089
4466
  if (containsZones) {
4090
- Object.keys(data.zones || {}).forEach((zone) => {
4091
- addToZoneCache(zone, data.zones[zone]);
4467
+ Object.keys(appData.data.zones || {}).forEach((zone) => {
4468
+ addToZoneCache(zone, appData.data.zones[zone]);
4092
4469
  });
4093
- return __spreadProps(__spreadValues({}, data), {
4094
- zones: {}
4470
+ return __spreadProps(__spreadValues({}, appData), {
4471
+ data: __spreadProps(__spreadValues({}, appData.data), {
4472
+ zones: {}
4473
+ })
4095
4474
  });
4096
4475
  }
4097
- return data;
4476
+ return appData;
4098
4477
  };
4099
4478
 
4100
4479
  // components/Puck/index.tsx
4101
- var import_jsx_runtime13 = require("react/jsx-runtime");
4480
+ var import_jsx_runtime21 = require("react/jsx-runtime");
4102
4481
  var defaultPageFields = {
4103
4482
  title: { type: "text" }
4104
4483
  };
@@ -4109,7 +4488,7 @@ var PluginRenderer = ({
4109
4488
  renderMethod
4110
4489
  }) => {
4111
4490
  return plugins.filter((item) => item[renderMethod]).map((item) => item[renderMethod]).reduce(
4112
- (accChildren, Item) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Item, { data, children: accChildren }),
4491
+ (accChildren, Item) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Item, { data, children: accChildren }),
4113
4492
  children
4114
4493
  );
4115
4494
  };
@@ -4125,21 +4504,38 @@ function Puck({
4125
4504
  headerPath
4126
4505
  }) {
4127
4506
  var _a, _b;
4128
- const [reducer] = (0, import_react28.useState)(() => createReducer({ config }));
4129
- const [data, dispatch] = (0, import_react28.useReducer)(
4507
+ const [reducer] = (0, import_react31.useState)(() => createReducer({ config }));
4508
+ const initialAppData = {
4509
+ data: initialData,
4510
+ state: {
4511
+ leftSideBarVisible: true,
4512
+ arrayState: {}
4513
+ }
4514
+ };
4515
+ const [appData, dispatch] = (0, import_react31.useReducer)(
4130
4516
  reducer,
4131
- flushZones(initialData)
4517
+ flushZones(initialAppData)
4132
4518
  );
4519
+ const { data, state } = appData;
4133
4520
  const { canForward, canRewind, rewind, forward } = usePuckHistory({
4134
- data,
4521
+ appData,
4135
4522
  dispatch
4136
4523
  });
4137
- const [itemSelector, setItemSelector] = (0, import_react28.useState)(null);
4524
+ const { itemSelector, leftSideBarVisible } = state;
4525
+ const setItemSelector = (0, import_react31.useCallback)(
4526
+ (newItemSelector) => {
4527
+ dispatch({
4528
+ type: "setState",
4529
+ state: { itemSelector: newItemSelector }
4530
+ });
4531
+ },
4532
+ []
4533
+ );
4138
4534
  const selectedItem = itemSelector ? getItem(itemSelector, data) : null;
4139
- const Page = (0, import_react28.useCallback)(
4535
+ const Page = (0, import_react31.useCallback)(
4140
4536
  (pageProps) => {
4141
4537
  var _a2, _b2;
4142
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4538
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4143
4539
  PluginRenderer,
4144
4540
  {
4145
4541
  plugins,
@@ -4151,8 +4547,8 @@ function Puck({
4151
4547
  },
4152
4548
  [config.root]
4153
4549
  );
4154
- const PageFieldWrapper = (0, import_react28.useCallback)(
4155
- (props) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4550
+ const PageFieldWrapper = (0, import_react31.useCallback)(
4551
+ (props) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4156
4552
  PluginRenderer,
4157
4553
  {
4158
4554
  plugins,
@@ -4163,8 +4559,8 @@ function Puck({
4163
4559
  ),
4164
4560
  []
4165
4561
  );
4166
- const ComponentFieldWrapper = (0, import_react28.useCallback)(
4167
- (props) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4562
+ const ComponentFieldWrapper = (0, import_react31.useCallback)(
4563
+ (props) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4168
4564
  PluginRenderer,
4169
4565
  {
4170
4566
  plugins,
@@ -4178,15 +4574,14 @@ function Puck({
4178
4574
  const FieldWrapper = itemSelector ? ComponentFieldWrapper : PageFieldWrapper;
4179
4575
  const rootFields = ((_a = config.root) == null ? void 0 : _a.fields) || defaultPageFields;
4180
4576
  let fields = selectedItem ? ((_b = config.components[selectedItem.type]) == null ? void 0 : _b.fields) || {} : rootFields;
4181
- (0, import_react28.useEffect)(() => {
4577
+ (0, import_react31.useEffect)(() => {
4182
4578
  if (onChange)
4183
4579
  onChange(data);
4184
4580
  }, [data]);
4185
4581
  const { onDragStartOrUpdate, placeholderStyle } = usePlaceholderStyle();
4186
- const [leftSidebarVisible, setLeftSidebarVisible] = (0, import_react28.useState)(true);
4187
- const [draggedItem, setDraggedItem] = (0, import_react28.useState)();
4188
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: "puck", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4189
- import_react_beautiful_dnd4.DragDropContext,
4582
+ const [draggedItem, setDraggedItem] = (0, import_react31.useState)();
4583
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "puck", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(AppProvider, { value: { appData, dispatch }, children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4584
+ import_react_beautiful_dnd5.DragDropContext,
4190
4585
  {
4191
4586
  onDragUpdate: (update) => {
4192
4587
  setDraggedItem(__spreadValues(__spreadValues({}, draggedItem), update));
@@ -4237,7 +4632,7 @@ function Puck({
4237
4632
  });
4238
4633
  }
4239
4634
  },
4240
- children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4635
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4241
4636
  DropZoneProvider,
4242
4637
  {
4243
4638
  value: {
@@ -4251,19 +4646,19 @@ function Puck({
4251
4646
  mode: "edit",
4252
4647
  areaId: "root"
4253
4648
  },
4254
- children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(dropZoneContext.Consumer, { children: (ctx) => {
4649
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(dropZoneContext.Consumer, { children: (ctx) => {
4255
4650
  let path = (ctx == null ? void 0 : ctx.pathData) && selectedItem ? ctx == null ? void 0 : ctx.pathData[selectedItem == null ? void 0 : selectedItem.props.id] : void 0;
4256
4651
  if (path) {
4257
4652
  path = [{ label: "Page", selector: null }, ...path];
4258
4653
  path = path.slice(path.length - 2, path.length - 1);
4259
4654
  }
4260
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
4655
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
4261
4656
  "div",
4262
4657
  {
4263
4658
  style: {
4264
4659
  display: "grid",
4265
4660
  gridTemplateAreas: '"header header header" "left editor right"',
4266
- gridTemplateColumns: `${leftSidebarVisible ? "288px" : "0px"} auto 288px`,
4661
+ gridTemplateColumns: `${leftSideBarVisible ? "288px" : "0px"} auto 288px`,
4267
4662
  gridTemplateRows: "min-content auto",
4268
4663
  height: "100vh",
4269
4664
  position: "fixed",
@@ -4273,7 +4668,7 @@ function Puck({
4273
4668
  right: 0
4274
4669
  },
4275
4670
  children: [
4276
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4671
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4277
4672
  "header",
4278
4673
  {
4279
4674
  style: {
@@ -4283,19 +4678,19 @@ function Puck({
4283
4678
  borderBottom: "1px solid var(--puck-color-grey-8)"
4284
4679
  },
4285
4680
  children: renderHeader ? renderHeader({
4286
- children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4681
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4287
4682
  Button,
4288
4683
  {
4289
4684
  onClick: () => {
4290
4685
  onPublish(data);
4291
4686
  },
4292
- icon: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(globe_default, { size: "14px" }),
4687
+ icon: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(globe_default, { size: "14px" }),
4293
4688
  children: "Publish"
4294
4689
  }
4295
4690
  ),
4296
4691
  data,
4297
4692
  dispatch
4298
- }) : /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
4693
+ }) : /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
4299
4694
  "div",
4300
4695
  {
4301
4696
  style: {
@@ -4306,24 +4701,29 @@ function Puck({
4306
4701
  gridTemplateRows: "auto"
4307
4702
  },
4308
4703
  children: [
4309
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4704
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4310
4705
  "div",
4311
4706
  {
4312
4707
  style: {
4313
4708
  display: "flex",
4314
4709
  gap: 16
4315
4710
  },
4316
- children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4711
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4317
4712
  IconButton,
4318
4713
  {
4319
- onClick: () => setLeftSidebarVisible(!leftSidebarVisible),
4714
+ onClick: () => dispatch({
4715
+ type: "setState",
4716
+ state: {
4717
+ leftSideBarVisible: !leftSideBarVisible
4718
+ }
4719
+ }),
4320
4720
  title: "Toggle left sidebar",
4321
- children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(sidebar_default, {})
4721
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(sidebar_default, {})
4322
4722
  }
4323
4723
  )
4324
4724
  }
4325
4725
  ),
4326
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4726
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4327
4727
  "div",
4328
4728
  {
4329
4729
  style: {
@@ -4331,13 +4731,19 @@ function Puck({
4331
4731
  justifyContent: "center",
4332
4732
  alignItems: "center"
4333
4733
  },
4334
- children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(Heading, { rank: 2, size: "xs", children: [
4734
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(Heading, { rank: 2, size: "xs", children: [
4335
4735
  headerTitle || data.root.title || "Page",
4336
- headerPath && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("small", { style: { fontWeight: 400, marginLeft: 4 }, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("code", { children: headerPath }) })
4736
+ headerPath && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4737
+ "small",
4738
+ {
4739
+ style: { fontWeight: 400, marginLeft: 4 },
4740
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("code", { children: headerPath })
4741
+ }
4742
+ )
4337
4743
  ] })
4338
4744
  }
4339
4745
  ),
4340
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
4746
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
4341
4747
  "div",
4342
4748
  {
4343
4749
  style: {
@@ -4346,14 +4752,14 @@ function Puck({
4346
4752
  justifyContent: "flex-end"
4347
4753
  },
4348
4754
  children: [
4349
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: { display: "flex" }, children: [
4350
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4755
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { style: { display: "flex" }, children: [
4756
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4351
4757
  IconButton,
4352
4758
  {
4353
4759
  title: "undo",
4354
4760
  disabled: !canRewind,
4355
4761
  onClick: rewind,
4356
- children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4762
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4357
4763
  chevron_left_default,
4358
4764
  {
4359
4765
  size: 21,
@@ -4362,13 +4768,13 @@ function Puck({
4362
4768
  )
4363
4769
  }
4364
4770
  ),
4365
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4771
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4366
4772
  IconButton,
4367
4773
  {
4368
4774
  title: "redo",
4369
4775
  disabled: !canForward,
4370
4776
  onClick: forward,
4371
- children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4777
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4372
4778
  chevron_right_default,
4373
4779
  {
4374
4780
  size: 21,
@@ -4379,13 +4785,13 @@ function Puck({
4379
4785
  )
4380
4786
  ] }),
4381
4787
  renderHeaderActions && renderHeaderActions({ data, dispatch }),
4382
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4788
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4383
4789
  Button,
4384
4790
  {
4385
4791
  onClick: () => {
4386
4792
  onPublish(data);
4387
4793
  },
4388
- icon: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(globe_default, { size: "14px" }),
4794
+ icon: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(globe_default, { size: "14px" }),
4389
4795
  children: "Publish"
4390
4796
  }
4391
4797
  )
@@ -4397,7 +4803,7 @@ function Puck({
4397
4803
  )
4398
4804
  }
4399
4805
  ),
4400
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
4806
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
4401
4807
  "div",
4402
4808
  {
4403
4809
  style: {
@@ -4409,9 +4815,9 @@ function Puck({
4409
4815
  flexDirection: "column"
4410
4816
  },
4411
4817
  children: [
4412
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SidebarSection, { title: "Components", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(ComponentList, { config }) }),
4413
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(SidebarSection, { title: "Outline", children: [
4414
- (ctx == null ? void 0 : ctx.activeZones) && (ctx == null ? void 0 : ctx.activeZones[rootDroppableId]) && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4818
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SidebarSection, { title: "Components", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(ComponentList, { config }) }),
4819
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(SidebarSection, { title: "Outline", children: [
4820
+ (ctx == null ? void 0 : ctx.activeZones) && (ctx == null ? void 0 : ctx.activeZones[rootDroppableId]) && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4415
4821
  LayerTree,
4416
4822
  {
4417
4823
  data,
@@ -4423,7 +4829,7 @@ function Puck({
4423
4829
  ),
4424
4830
  Object.entries(findZonesForArea(data, "root")).map(
4425
4831
  ([zoneKey, zone]) => {
4426
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4832
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4427
4833
  LayerTree,
4428
4834
  {
4429
4835
  data,
@@ -4441,7 +4847,7 @@ function Puck({
4441
4847
  ]
4442
4848
  }
4443
4849
  ),
4444
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
4850
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
4445
4851
  "div",
4446
4852
  {
4447
4853
  style: {
@@ -4454,7 +4860,7 @@ function Puck({
4454
4860
  onClick: () => setItemSelector(null),
4455
4861
  id: "puck-frame",
4456
4862
  children: [
4457
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4863
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4458
4864
  "div",
4459
4865
  {
4460
4866
  className: "puck-root",
@@ -4463,19 +4869,18 @@ function Puck({
4463
4869
  margin: 32,
4464
4870
  zoom: 0.75
4465
4871
  },
4466
- children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4872
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4467
4873
  "div",
4468
4874
  {
4469
4875
  style: {
4470
- border: "1px solid var(--puck-color-grey-8)",
4471
- transform: "scale(1, 1)"
4876
+ border: "1px solid var(--puck-color-grey-8)"
4472
4877
  },
4473
- children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Page, __spreadProps(__spreadValues({ data }, data.root), { children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(DropZone, { zone: rootDroppableId }) }))
4878
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Page, __spreadProps(__spreadValues({ data }, data.root), { children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(DropZone, { zone: rootDroppableId }) }))
4474
4879
  }
4475
4880
  )
4476
4881
  }
4477
4882
  ),
4478
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4883
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4479
4884
  "div",
4480
4885
  {
4481
4886
  style: {
@@ -4488,7 +4893,7 @@ function Puck({
4488
4893
  ]
4489
4894
  }
4490
4895
  ),
4491
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4896
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4492
4897
  "div",
4493
4898
  {
4494
4899
  style: {
@@ -4500,7 +4905,7 @@ function Puck({
4500
4905
  flexDirection: "column",
4501
4906
  background: "var(--puck-color-white)"
4502
4907
  },
4503
- children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(FieldWrapper, { data, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4908
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(FieldWrapper, { data, children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4504
4909
  SidebarSection,
4505
4910
  {
4506
4911
  noPadding: true,
@@ -4553,13 +4958,13 @@ function Puck({
4553
4958
  });
4554
4959
  } else {
4555
4960
  dispatch({
4556
- type: "set",
4961
+ type: "setData",
4557
4962
  data: { root: newProps }
4558
4963
  });
4559
4964
  }
4560
4965
  };
4561
4966
  if (selectedItem && itemSelector) {
4562
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4967
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4563
4968
  InputOrGroup,
4564
4969
  {
4565
4970
  field,
@@ -4575,13 +4980,15 @@ function Puck({
4575
4980
  `${selectedItem.props.id}_${fieldName}`
4576
4981
  );
4577
4982
  } else {
4578
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4983
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4579
4984
  InputOrGroup,
4580
4985
  {
4581
4986
  field,
4582
4987
  name: fieldName,
4583
4988
  label: field.label,
4584
- readOnly: ((_d = (_c = data.root._meta) == null ? void 0 : _c.locked) == null ? void 0 : _d.indexOf(fieldName)) > -1,
4989
+ readOnly: ((_d = (_c = data.root._meta) == null ? void 0 : _c.locked) == null ? void 0 : _d.indexOf(
4990
+ fieldName
4991
+ )) > -1,
4585
4992
  value: data.root[fieldName],
4586
4993
  onChange: onChange2
4587
4994
  },
@@ -4600,17 +5007,17 @@ function Puck({
4600
5007
  }
4601
5008
  )
4602
5009
  }
4603
- ) });
5010
+ ) }) });
4604
5011
  }
4605
5012
 
4606
5013
  // components/Render/index.tsx
4607
5014
  init_react_import();
4608
- var import_jsx_runtime14 = require("react/jsx-runtime");
5015
+ var import_jsx_runtime22 = require("react/jsx-runtime");
4609
5016
  function Render({ config, data }) {
4610
5017
  if (config.root) {
4611
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(DropZoneProvider, { value: { data, config, mode: "render" }, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(config.root.render, __spreadProps(__spreadValues({}, data.root), { editMode: false, id: "puck-root", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(DropZone, { zone: rootDroppableId }) })) });
5018
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(DropZoneProvider, { value: { data, config, mode: "render" }, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(config.root.render, __spreadProps(__spreadValues({}, data.root), { editMode: false, id: "puck-root", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(DropZone, { zone: rootDroppableId }) })) });
4612
5019
  }
4613
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(DropZoneProvider, { value: { data, config, mode: "render" }, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(DropZone, { zone: rootDroppableId }) });
5020
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(DropZoneProvider, { value: { data, config, mode: "render" }, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(DropZone, { zone: rootDroppableId }) });
4614
5021
  }
4615
5022
  // Annotate the CommonJS export names for ESM import in node:
4616
5023
  0 && (module.exports = {