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

Sign up to get free protection for your applications and to get access to all the features.
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,18 +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
4876
  border: "1px solid var(--puck-color-grey-8)"
4471
4877
  },
4472
- 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 }) }))
4473
4879
  }
4474
4880
  )
4475
4881
  }
4476
4882
  ),
4477
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4883
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4478
4884
  "div",
4479
4885
  {
4480
4886
  style: {
@@ -4487,7 +4893,7 @@ function Puck({
4487
4893
  ]
4488
4894
  }
4489
4895
  ),
4490
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4896
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4491
4897
  "div",
4492
4898
  {
4493
4899
  style: {
@@ -4499,7 +4905,7 @@ function Puck({
4499
4905
  flexDirection: "column",
4500
4906
  background: "var(--puck-color-white)"
4501
4907
  },
4502
- 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)(
4503
4909
  SidebarSection,
4504
4910
  {
4505
4911
  noPadding: true,
@@ -4552,13 +4958,13 @@ function Puck({
4552
4958
  });
4553
4959
  } else {
4554
4960
  dispatch({
4555
- type: "set",
4961
+ type: "setData",
4556
4962
  data: { root: newProps }
4557
4963
  });
4558
4964
  }
4559
4965
  };
4560
4966
  if (selectedItem && itemSelector) {
4561
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4967
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4562
4968
  InputOrGroup,
4563
4969
  {
4564
4970
  field,
@@ -4574,13 +4980,15 @@ function Puck({
4574
4980
  `${selectedItem.props.id}_${fieldName}`
4575
4981
  );
4576
4982
  } else {
4577
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4983
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4578
4984
  InputOrGroup,
4579
4985
  {
4580
4986
  field,
4581
4987
  name: fieldName,
4582
4988
  label: field.label,
4583
- 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,
4584
4992
  value: data.root[fieldName],
4585
4993
  onChange: onChange2
4586
4994
  },
@@ -4599,17 +5007,17 @@ function Puck({
4599
5007
  }
4600
5008
  )
4601
5009
  }
4602
- ) });
5010
+ ) }) });
4603
5011
  }
4604
5012
 
4605
5013
  // components/Render/index.tsx
4606
5014
  init_react_import();
4607
- var import_jsx_runtime14 = require("react/jsx-runtime");
5015
+ var import_jsx_runtime22 = require("react/jsx-runtime");
4608
5016
  function Render({ config, data }) {
4609
5017
  if (config.root) {
4610
- 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 }) })) });
4611
5019
  }
4612
- 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 }) });
4613
5021
  }
4614
5022
  // Annotate the CommonJS export names for ESM import in node:
4615
5023
  0 && (module.exports = {