@measured/puck 0.9.1-canary.f4e8d4a → 0.10.0-canary.74cd3a7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -327,7 +327,7 @@ var require_react_is_development = __commonJS({
327
327
  var ContextProvider = REACT_PROVIDER_TYPE;
328
328
  var Element = REACT_ELEMENT_TYPE;
329
329
  var ForwardRef = REACT_FORWARD_REF_TYPE;
330
- var Fragment9 = REACT_FRAGMENT_TYPE;
330
+ var Fragment11 = REACT_FRAGMENT_TYPE;
331
331
  var Lazy = REACT_LAZY_TYPE;
332
332
  var Memo = REACT_MEMO_TYPE;
333
333
  var Portal = REACT_PORTAL_TYPE;
@@ -386,7 +386,7 @@ var require_react_is_development = __commonJS({
386
386
  exports.ContextProvider = ContextProvider;
387
387
  exports.Element = Element;
388
388
  exports.ForwardRef = ForwardRef;
389
- exports.Fragment = Fragment9;
389
+ exports.Fragment = Fragment11;
390
390
  exports.Lazy = Lazy;
391
391
  exports.Memo = Memo;
392
392
  exports.Portal = Portal;
@@ -760,7 +760,7 @@ var require_factoryWithTypeCheckers = __commonJS({
760
760
  function validate(props, propName, componentName, location, propFullName) {
761
761
  if (!(props[propName] instanceof expectedClass)) {
762
762
  var expectedClassName = expectedClass.name || ANONYMOUS;
763
- var actualClassName = getClassName11(props[propName]);
763
+ var actualClassName = getClassName18(props[propName]);
764
764
  return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type " + ("`" + actualClassName + "` supplied to `" + componentName + "`, expected ") + ("instance of `" + expectedClassName + "`."));
765
765
  }
766
766
  return null;
@@ -1012,7 +1012,7 @@ var require_factoryWithTypeCheckers = __commonJS({
1012
1012
  return type;
1013
1013
  }
1014
1014
  }
1015
- function getClassName11(propValue) {
1015
+ function getClassName18(propValue) {
1016
1016
  if (!propValue.constructor || !propValue.constructor.name) {
1017
1017
  return ANONYMOUS;
1018
1018
  }
@@ -1214,11 +1214,11 @@ var Button = ({
1214
1214
 
1215
1215
  // components/DropZone/index.tsx
1216
1216
  init_react_import();
1217
- var import_react21 = require("react");
1217
+ var import_react22 = require("react");
1218
1218
 
1219
1219
  // components/DraggableComponent/index.tsx
1220
1220
  init_react_import();
1221
- var import_react18 = require("react");
1221
+ var import_react19 = require("react");
1222
1222
  var import_react_beautiful_dnd = require("react-beautiful-dnd");
1223
1223
 
1224
1224
  // css-module:/home/runner/work/puck/puck/packages/core/components/DraggableComponent/styles.module.css#css-module
@@ -2130,7 +2130,7 @@ List.propTypes = {
2130
2130
  List.displayName = "List";
2131
2131
  var list_default = List;
2132
2132
 
2133
- // ../../node_modules/react-feather/dist/icons/sidebar.js
2133
+ // ../../node_modules/react-feather/dist/icons/plus.js
2134
2134
  init_react_import();
2135
2135
  var import_react14 = __toESM(require("react"));
2136
2136
  var import_prop_types12 = __toESM(require_prop_types());
@@ -2180,7 +2180,7 @@ function _objectWithoutPropertiesLoose12(source, excluded) {
2180
2180
  }
2181
2181
  return target;
2182
2182
  }
2183
- var Sidebar = (0, import_react14.forwardRef)(function(_ref, ref) {
2183
+ var Plus = (0, import_react14.forwardRef)(function(_ref, ref) {
2184
2184
  var _ref$color = _ref.color, color = _ref$color === void 0 ? "currentColor" : _ref$color, _ref$size = _ref.size, size = _ref$size === void 0 ? 24 : _ref$size, rest = _objectWithoutProperties12(_ref, ["color", "size"]);
2185
2185
  return /* @__PURE__ */ import_react14.default.createElement("svg", _extends12({
2186
2186
  ref,
@@ -2193,28 +2193,26 @@ var Sidebar = (0, import_react14.forwardRef)(function(_ref, ref) {
2193
2193
  strokeWidth: "2",
2194
2194
  strokeLinecap: "round",
2195
2195
  strokeLinejoin: "round"
2196
- }, rest), /* @__PURE__ */ import_react14.default.createElement("rect", {
2197
- x: "3",
2198
- y: "3",
2199
- width: "18",
2200
- height: "18",
2201
- rx: "2",
2202
- ry: "2"
2196
+ }, rest), /* @__PURE__ */ import_react14.default.createElement("line", {
2197
+ x1: "12",
2198
+ y1: "5",
2199
+ x2: "12",
2200
+ y2: "19"
2203
2201
  }), /* @__PURE__ */ import_react14.default.createElement("line", {
2204
- x1: "9",
2205
- y1: "3",
2206
- x2: "9",
2207
- y2: "21"
2202
+ x1: "5",
2203
+ y1: "12",
2204
+ x2: "19",
2205
+ y2: "12"
2208
2206
  }));
2209
2207
  });
2210
- Sidebar.propTypes = {
2208
+ Plus.propTypes = {
2211
2209
  color: import_prop_types12.default.string,
2212
2210
  size: import_prop_types12.default.oneOfType([import_prop_types12.default.string, import_prop_types12.default.number])
2213
2211
  };
2214
- Sidebar.displayName = "Sidebar";
2215
- var sidebar_default = Sidebar;
2212
+ Plus.displayName = "Plus";
2213
+ var plus_default = Plus;
2216
2214
 
2217
- // ../../node_modules/react-feather/dist/icons/trash.js
2215
+ // ../../node_modules/react-feather/dist/icons/sidebar.js
2218
2216
  init_react_import();
2219
2217
  var import_react15 = __toESM(require("react"));
2220
2218
  var import_prop_types13 = __toESM(require_prop_types());
@@ -2264,7 +2262,7 @@ function _objectWithoutPropertiesLoose13(source, excluded) {
2264
2262
  }
2265
2263
  return target;
2266
2264
  }
2267
- var Trash = (0, import_react15.forwardRef)(function(_ref, ref) {
2265
+ var Sidebar = (0, import_react15.forwardRef)(function(_ref, ref) {
2268
2266
  var _ref$color = _ref.color, color = _ref$color === void 0 ? "currentColor" : _ref$color, _ref$size = _ref.size, size = _ref$size === void 0 ? 24 : _ref$size, rest = _objectWithoutProperties13(_ref, ["color", "size"]);
2269
2267
  return /* @__PURE__ */ import_react15.default.createElement("svg", _extends13({
2270
2268
  ref,
@@ -2277,20 +2275,28 @@ var Trash = (0, import_react15.forwardRef)(function(_ref, ref) {
2277
2275
  strokeWidth: "2",
2278
2276
  strokeLinecap: "round",
2279
2277
  strokeLinejoin: "round"
2280
- }, rest), /* @__PURE__ */ import_react15.default.createElement("polyline", {
2281
- points: "3 6 5 6 21 6"
2282
- }), /* @__PURE__ */ import_react15.default.createElement("path", {
2283
- d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"
2278
+ }, rest), /* @__PURE__ */ import_react15.default.createElement("rect", {
2279
+ x: "3",
2280
+ y: "3",
2281
+ width: "18",
2282
+ height: "18",
2283
+ rx: "2",
2284
+ ry: "2"
2285
+ }), /* @__PURE__ */ import_react15.default.createElement("line", {
2286
+ x1: "9",
2287
+ y1: "3",
2288
+ x2: "9",
2289
+ y2: "21"
2284
2290
  }));
2285
2291
  });
2286
- Trash.propTypes = {
2292
+ Sidebar.propTypes = {
2287
2293
  color: import_prop_types13.default.string,
2288
2294
  size: import_prop_types13.default.oneOfType([import_prop_types13.default.string, import_prop_types13.default.number])
2289
2295
  };
2290
- Trash.displayName = "Trash";
2291
- var trash_default = Trash;
2296
+ Sidebar.displayName = "Sidebar";
2297
+ var sidebar_default = Sidebar;
2292
2298
 
2293
- // ../../node_modules/react-feather/dist/icons/type.js
2299
+ // ../../node_modules/react-feather/dist/icons/trash.js
2294
2300
  init_react_import();
2295
2301
  var import_react16 = __toESM(require("react"));
2296
2302
  var import_prop_types14 = __toESM(require_prop_types());
@@ -2340,7 +2346,7 @@ function _objectWithoutPropertiesLoose14(source, excluded) {
2340
2346
  }
2341
2347
  return target;
2342
2348
  }
2343
- var Type = (0, import_react16.forwardRef)(function(_ref, ref) {
2349
+ var Trash = (0, import_react16.forwardRef)(function(_ref, ref) {
2344
2350
  var _ref$color = _ref.color, color = _ref$color === void 0 ? "currentColor" : _ref$color, _ref$size = _ref.size, size = _ref$size === void 0 ? 24 : _ref$size, rest = _objectWithoutProperties14(_ref, ["color", "size"]);
2345
2351
  return /* @__PURE__ */ import_react16.default.createElement("svg", _extends14({
2346
2352
  ref,
@@ -2354,13 +2360,89 @@ var Type = (0, import_react16.forwardRef)(function(_ref, ref) {
2354
2360
  strokeLinecap: "round",
2355
2361
  strokeLinejoin: "round"
2356
2362
  }, rest), /* @__PURE__ */ import_react16.default.createElement("polyline", {
2363
+ points: "3 6 5 6 21 6"
2364
+ }), /* @__PURE__ */ import_react16.default.createElement("path", {
2365
+ d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"
2366
+ }));
2367
+ });
2368
+ Trash.propTypes = {
2369
+ color: import_prop_types14.default.string,
2370
+ size: import_prop_types14.default.oneOfType([import_prop_types14.default.string, import_prop_types14.default.number])
2371
+ };
2372
+ Trash.displayName = "Trash";
2373
+ var trash_default = Trash;
2374
+
2375
+ // ../../node_modules/react-feather/dist/icons/type.js
2376
+ init_react_import();
2377
+ var import_react17 = __toESM(require("react"));
2378
+ var import_prop_types15 = __toESM(require_prop_types());
2379
+ function _extends15() {
2380
+ _extends15 = Object.assign || function(target) {
2381
+ for (var i = 1; i < arguments.length; i++) {
2382
+ var source = arguments[i];
2383
+ for (var key in source) {
2384
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
2385
+ target[key] = source[key];
2386
+ }
2387
+ }
2388
+ }
2389
+ return target;
2390
+ };
2391
+ return _extends15.apply(this, arguments);
2392
+ }
2393
+ function _objectWithoutProperties15(source, excluded) {
2394
+ if (source == null)
2395
+ return {};
2396
+ var target = _objectWithoutPropertiesLoose15(source, excluded);
2397
+ var key, i;
2398
+ if (Object.getOwnPropertySymbols) {
2399
+ var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
2400
+ for (i = 0; i < sourceSymbolKeys.length; i++) {
2401
+ key = sourceSymbolKeys[i];
2402
+ if (excluded.indexOf(key) >= 0)
2403
+ continue;
2404
+ if (!Object.prototype.propertyIsEnumerable.call(source, key))
2405
+ continue;
2406
+ target[key] = source[key];
2407
+ }
2408
+ }
2409
+ return target;
2410
+ }
2411
+ function _objectWithoutPropertiesLoose15(source, excluded) {
2412
+ if (source == null)
2413
+ return {};
2414
+ var target = {};
2415
+ var sourceKeys = Object.keys(source);
2416
+ var key, i;
2417
+ for (i = 0; i < sourceKeys.length; i++) {
2418
+ key = sourceKeys[i];
2419
+ if (excluded.indexOf(key) >= 0)
2420
+ continue;
2421
+ target[key] = source[key];
2422
+ }
2423
+ return target;
2424
+ }
2425
+ var Type = (0, import_react17.forwardRef)(function(_ref, ref) {
2426
+ var _ref$color = _ref.color, color = _ref$color === void 0 ? "currentColor" : _ref$color, _ref$size = _ref.size, size = _ref$size === void 0 ? 24 : _ref$size, rest = _objectWithoutProperties15(_ref, ["color", "size"]);
2427
+ return /* @__PURE__ */ import_react17.default.createElement("svg", _extends15({
2428
+ ref,
2429
+ xmlns: "http://www.w3.org/2000/svg",
2430
+ width: size,
2431
+ height: size,
2432
+ viewBox: "0 0 24 24",
2433
+ fill: "none",
2434
+ stroke: color,
2435
+ strokeWidth: "2",
2436
+ strokeLinecap: "round",
2437
+ strokeLinejoin: "round"
2438
+ }, rest), /* @__PURE__ */ import_react17.default.createElement("polyline", {
2357
2439
  points: "4 7 4 4 20 4 20 7"
2358
- }), /* @__PURE__ */ import_react16.default.createElement("line", {
2440
+ }), /* @__PURE__ */ import_react17.default.createElement("line", {
2359
2441
  x1: "9",
2360
2442
  y1: "20",
2361
2443
  x2: "15",
2362
2444
  y2: "20"
2363
- }), /* @__PURE__ */ import_react16.default.createElement("line", {
2445
+ }), /* @__PURE__ */ import_react17.default.createElement("line", {
2364
2446
  x1: "12",
2365
2447
  y1: "4",
2366
2448
  x2: "12",
@@ -2368,18 +2450,18 @@ var Type = (0, import_react16.forwardRef)(function(_ref, ref) {
2368
2450
  }));
2369
2451
  });
2370
2452
  Type.propTypes = {
2371
- color: import_prop_types14.default.string,
2372
- size: import_prop_types14.default.oneOfType([import_prop_types14.default.string, import_prop_types14.default.number])
2453
+ color: import_prop_types15.default.string,
2454
+ size: import_prop_types15.default.oneOfType([import_prop_types15.default.string, import_prop_types15.default.number])
2373
2455
  };
2374
2456
  Type.displayName = "Type";
2375
2457
  var type_default = Type;
2376
2458
 
2377
2459
  // lib/use-modifier-held.ts
2378
2460
  init_react_import();
2379
- var import_react17 = require("react");
2461
+ var import_react18 = require("react");
2380
2462
  var useModifierHeld = (modifier) => {
2381
- const [modifierHeld, setModifierHeld] = (0, import_react17.useState)(false);
2382
- (0, import_react17.useEffect)(() => {
2463
+ const [modifierHeld, setModifierHeld] = (0, import_react18.useState)(false);
2464
+ (0, import_react18.useEffect)(() => {
2383
2465
  function downHandler({ key }) {
2384
2466
  if (key === modifier) {
2385
2467
  setModifierHeld(true);
@@ -2423,7 +2505,7 @@ var DraggableComponent = ({
2423
2505
  style
2424
2506
  }) => {
2425
2507
  const isModifierHeld = useModifierHeld("Alt");
2426
- (0, import_react18.useEffect)(onMount, []);
2508
+ (0, import_react19.useEffect)(onMount, []);
2427
2509
  return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
2428
2510
  import_react_beautiful_dnd.Draggable,
2429
2511
  {
@@ -2467,13 +2549,13 @@ var DraggableComponent = ({
2467
2549
 
2468
2550
  // components/DroppableStrictMode/index.tsx
2469
2551
  init_react_import();
2470
- var import_react19 = require("react");
2552
+ var import_react20 = require("react");
2471
2553
  var import_react_beautiful_dnd2 = require("react-beautiful-dnd");
2472
2554
  var import_jsx_runtime3 = require("react/jsx-runtime");
2473
2555
  var DroppableStrictMode = (_a) => {
2474
2556
  var _b = _a, { children } = _b, props = __objRest(_b, ["children"]);
2475
- const [enabled, setEnabled] = (0, import_react19.useState)(false);
2476
- (0, import_react19.useEffect)(() => {
2557
+ const [enabled, setEnabled] = (0, import_react20.useState)(false);
2558
+ (0, import_react20.useEffect)(() => {
2477
2559
  const animation = requestAnimationFrame(() => setEnabled(true));
2478
2560
  return () => {
2479
2561
  cancelAnimationFrame(animation);
@@ -2552,7 +2634,7 @@ var styles_module_default2 = { "DropZone": "_DropZone_ou0z5_1", "DropZone-conten
2552
2634
 
2553
2635
  // components/DropZone/context.tsx
2554
2636
  init_react_import();
2555
- var import_react20 = require("react");
2637
+ var import_react21 = require("react");
2556
2638
  var import_use_debounce = require("use-debounce");
2557
2639
 
2558
2640
  // lib/get-zone-id.ts
@@ -2569,29 +2651,29 @@ var getZoneId = (zoneCompound) => {
2569
2651
 
2570
2652
  // components/DropZone/context.tsx
2571
2653
  var import_jsx_runtime4 = require("react/jsx-runtime");
2572
- var dropZoneContext = (0, import_react20.createContext)(null);
2654
+ var dropZoneContext = (0, import_react21.createContext)(null);
2573
2655
  var DropZoneProvider = ({
2574
2656
  children,
2575
2657
  value
2576
2658
  }) => {
2577
- const [hoveringArea, setHoveringArea] = (0, import_react20.useState)(null);
2578
- const [hoveringZone, setHoveringZone] = (0, import_react20.useState)(
2659
+ const [hoveringArea, setHoveringArea] = (0, import_react21.useState)(null);
2660
+ const [hoveringZone, setHoveringZone] = (0, import_react21.useState)(
2579
2661
  rootDroppableId
2580
2662
  );
2581
- const [hoveringComponent, setHoveringComponent] = (0, import_react20.useState)();
2663
+ const [hoveringComponent, setHoveringComponent] = (0, import_react21.useState)();
2582
2664
  const [hoveringAreaDb] = (0, import_use_debounce.useDebounce)(hoveringArea, 75, { leading: false });
2583
- const [areasWithZones, setAreasWithZones] = (0, import_react20.useState)(
2665
+ const [areasWithZones, setAreasWithZones] = (0, import_react21.useState)(
2584
2666
  {}
2585
2667
  );
2586
- const [activeZones, setActiveZones] = (0, import_react20.useState)({});
2668
+ const [activeZones, setActiveZones] = (0, import_react21.useState)({});
2587
2669
  const { dispatch = null } = value ? value : {};
2588
- const registerZoneArea = (0, import_react20.useCallback)(
2670
+ const registerZoneArea = (0, import_react21.useCallback)(
2589
2671
  (area) => {
2590
2672
  setAreasWithZones((latest) => __spreadProps(__spreadValues({}, latest), { [area]: true }));
2591
2673
  },
2592
2674
  [setAreasWithZones]
2593
2675
  );
2594
- const registerZone = (0, import_react20.useCallback)(
2676
+ const registerZone = (0, import_react21.useCallback)(
2595
2677
  (zoneCompound) => {
2596
2678
  if (!dispatch) {
2597
2679
  return;
@@ -2604,7 +2686,7 @@ var DropZoneProvider = ({
2604
2686
  },
2605
2687
  [setActiveZones, dispatch]
2606
2688
  );
2607
- const unregisterZone = (0, import_react20.useCallback)(
2689
+ const unregisterZone = (0, import_react21.useCallback)(
2608
2690
  (zoneCompound) => {
2609
2691
  if (!dispatch) {
2610
2692
  return;
@@ -2619,8 +2701,8 @@ var DropZoneProvider = ({
2619
2701
  },
2620
2702
  [setActiveZones, dispatch]
2621
2703
  );
2622
- const [pathData, setPathData] = (0, import_react20.useState)();
2623
- const registerPath = (0, import_react20.useCallback)(
2704
+ const [pathData, setPathData] = (0, import_react21.useState)();
2705
+ const registerPath = (0, import_react21.useCallback)(
2624
2706
  (selector) => {
2625
2707
  if (!(value == null ? void 0 : value.data)) {
2626
2708
  return;
@@ -2673,7 +2755,7 @@ var import_jsx_runtime5 = require("react/jsx-runtime");
2673
2755
  var getClassName3 = get_class_name_factory_default("DropZone", styles_module_default2);
2674
2756
  function DropZoneEdit({ zone, style }) {
2675
2757
  var _a;
2676
- const ctx = (0, import_react21.useContext)(dropZoneContext);
2758
+ const ctx = (0, import_react22.useContext)(dropZoneContext);
2677
2759
  const {
2678
2760
  // These all need setting via context
2679
2761
  data,
@@ -2690,12 +2772,12 @@ function DropZoneEdit({ zone, style }) {
2690
2772
  } = ctx || {};
2691
2773
  let content = data.content || [];
2692
2774
  let zoneCompound = rootDroppableId;
2693
- (0, import_react21.useEffect)(() => {
2775
+ (0, import_react22.useEffect)(() => {
2694
2776
  if (areaId && registerZoneArea) {
2695
2777
  registerZoneArea(areaId);
2696
2778
  }
2697
2779
  }, [areaId]);
2698
- (0, import_react21.useEffect)(() => {
2780
+ (0, import_react22.useEffect)(() => {
2699
2781
  if (ctx == null ? void 0 : ctx.registerZone) {
2700
2782
  ctx == null ? void 0 : ctx.registerZone(zoneCompound);
2701
2783
  }
@@ -2907,7 +2989,7 @@ function DropZoneEdit({ zone, style }) {
2907
2989
  );
2908
2990
  }
2909
2991
  function DropZoneRender({ zone }) {
2910
- const ctx = (0, import_react21.useContext)(dropZoneContext);
2992
+ const ctx = (0, import_react22.useContext)(dropZoneContext);
2911
2993
  const { data, areaId = "root", config } = ctx || {};
2912
2994
  let zoneCompound = rootDroppableId;
2913
2995
  let content = (data == null ? void 0 : data.content) || [];
@@ -2934,7 +3016,7 @@ function DropZoneRender({ zone }) {
2934
3016
  }) });
2935
3017
  }
2936
3018
  function DropZone(props) {
2937
- const ctx = (0, import_react21.useContext)(dropZoneContext);
3019
+ const ctx = (0, import_react22.useContext)(dropZoneContext);
2938
3020
  if ((ctx == null ? void 0 : ctx.mode) === "edit") {
2939
3021
  return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(DropZoneEdit, __spreadValues({}, props));
2940
3022
  }
@@ -2946,7 +3028,7 @@ init_react_import();
2946
3028
 
2947
3029
  // components/IconButton/IconButton.tsx
2948
3030
  init_react_import();
2949
- var import_react22 = require("react");
3031
+ var import_react23 = require("react");
2950
3032
 
2951
3033
  // css-module:/home/runner/work/puck/puck/packages/core/components/IconButton/IconButton.module.css#css-module
2952
3034
  init_react_import();
@@ -2968,7 +3050,7 @@ var IconButton = ({
2968
3050
  fullWidth,
2969
3051
  title
2970
3052
  }) => {
2971
- const [loading, setLoading] = (0, import_react22.useState)(false);
3053
+ const [loading, setLoading] = (0, import_react23.useState)(false);
2972
3054
  const ElementType = href ? "a" : "button";
2973
3055
  const el = /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
2974
3056
  ElementType,
@@ -3008,310 +3090,633 @@ 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"
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;
3250
+ }
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));
3204
3269
  }
3205
- )
3206
- ] })
3207
- ] });
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
+ () => Object.keys(data).filter(
3452
+ (key) => typeof data[key] === "string" || typeof data[key] === "number"
3453
+ ),
3454
+ [data]
3455
+ );
3456
+ (0, import_react26.useEffect)(() => {
3457
+ (() => __async(void 0, null, function* () {
3458
+ if (field.adaptor) {
3459
+ const listData = yield field.adaptor.fetchList(field.adaptorParams);
3460
+ if (listData) {
3461
+ setData(listData);
3462
+ }
3463
+ }
3464
+ }))();
3465
+ }, [field.adaptor, field.adaptorParams]);
3466
+ if (!field.adaptor) {
3467
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { children: "Incorrectly configured" });
3208
3468
  }
3209
- if (field.type === "external") {
3210
- if (!field.adaptor) {
3211
- return null;
3469
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
3470
+ "div",
3471
+ {
3472
+ className: getClassName8({
3473
+ hasData: !!selectedData,
3474
+ modalVisible: isOpen
3475
+ }),
3476
+ children: [
3477
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: getClassName8("actions"), children: [
3478
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3479
+ "button",
3480
+ {
3481
+ onClick: () => setOpen(true),
3482
+ className: getClassName8("button"),
3483
+ children: selectedData ? field.getItemSummary ? field.getItemSummary(selectedData) : `${field.adaptor.name} item` : /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
3484
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(link_default, { size: "16" }),
3485
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("span", { children: [
3486
+ "Select from ",
3487
+ field.adaptor.name
3488
+ ] })
3489
+ ] })
3490
+ }
3491
+ ),
3492
+ selectedData && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3493
+ "button",
3494
+ {
3495
+ className: getClassName8("detachButton"),
3496
+ onClick: () => {
3497
+ setSelectedData(null);
3498
+ onChange(null);
3499
+ },
3500
+ children: "Detach"
3501
+ }
3502
+ )
3503
+ ] }),
3504
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: getClassName8("modal"), onClick: () => setOpen(false), children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
3505
+ "div",
3506
+ {
3507
+ className: getClassName8("modalInner"),
3508
+ onClick: (e) => e.stopPropagation(),
3509
+ children: [
3510
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("h2", { className: getClassName8("modalHeading"), children: "Select content" }),
3511
+ data.length ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: getClassName8("modalTableWrapper"), children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("table", { children: [
3512
+ /* @__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)) }) }),
3513
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("tbody", { children: data.map((item, i) => {
3514
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3515
+ "tr",
3516
+ {
3517
+ style: { whiteSpace: "nowrap" },
3518
+ onClick: (e) => {
3519
+ onChange(item);
3520
+ setOpen(false);
3521
+ setSelectedData(item);
3522
+ },
3523
+ children: keys.map((key) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("td", { children: item[key] }, key))
3524
+ },
3525
+ i
3526
+ );
3527
+ }) })
3528
+ ] }) }) : /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { style: { padding: 24 }, children: "No content" })
3529
+ ]
3530
+ }
3531
+ ) })
3532
+ ]
3212
3533
  }
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
- ] });
3534
+ );
3535
+ };
3536
+
3537
+ // components/InputOrGroup/fields/ExternalField/index.tsx
3538
+ var import_jsx_runtime12 = require("react/jsx-runtime");
3539
+ var getClassName9 = get_class_name_factory_default("Input", styles_module_default3);
3540
+ var ExternalField = ({
3541
+ field,
3542
+ onChange,
3543
+ readOnly,
3544
+ value,
3545
+ name,
3546
+ label
3547
+ }) => {
3548
+ if (!field.adaptor) {
3549
+ return null;
3217
3550
  }
3218
- if (field.type === "select") {
3219
- if (!field.options) {
3220
- return null;
3221
- }
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;
3551
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: getClassName9(""), children: [
3552
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: getClassName9("label"), children: name === "_data" ? "External content" : label || name }),
3553
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(ExternalInput, { field, onChange, value })
3554
+ ] });
3555
+ };
3556
+
3557
+ // components/InputOrGroup/fields/RadioField/index.tsx
3558
+ init_react_import();
3559
+ var import_jsx_runtime13 = require("react/jsx-runtime");
3560
+ var getClassName10 = get_class_name_factory_default("Input", styles_module_default3);
3561
+ var RadioField = ({
3562
+ field,
3563
+ onChange,
3564
+ readOnly,
3565
+ value,
3566
+ name
3567
+ }) => {
3568
+ if (!field.options) {
3569
+ return null;
3570
+ }
3571
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: getClassName10(), children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: getClassName10("radioGroup"), children: [
3572
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: getClassName10("label"), children: [
3573
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: getClassName10("labelIcon"), children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(check_circle_default, { size: 16 }) }),
3574
+ field.label || name
3575
+ ] }),
3576
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: getClassName10("radioGroupItems"), children: field.options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
3577
+ "label",
3578
+ {
3579
+ className: getClassName10("radio"),
3580
+ children: [
3581
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3582
+ "input",
3583
+ {
3584
+ type: "radio",
3585
+ className: getClassName10("radioInput"),
3586
+ value: option.value,
3587
+ name,
3588
+ onChange: (e) => {
3589
+ if (e.currentTarget.value === "true" || e.currentTarget.value === "false") {
3590
+ onChange(JSON.parse(e.currentTarget.value));
3591
+ return;
3592
+ }
3593
+ onChange(e.currentTarget.value);
3594
+ },
3595
+ readOnly,
3596
+ defaultChecked: value === option.value
3235
3597
  }
3236
- onChange(e.currentTarget.value);
3598
+ ),
3599
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: getClassName10("radioInner"), children: option.label || option.value })
3600
+ ]
3601
+ },
3602
+ option.label + option.value
3603
+ )) })
3604
+ ] }) });
3605
+ };
3606
+
3607
+ // components/InputOrGroup/fields/SelectField/index.tsx
3608
+ init_react_import();
3609
+ var import_jsx_runtime14 = require("react/jsx-runtime");
3610
+ var getClassName11 = get_class_name_factory_default("Input", styles_module_default3);
3611
+ var SelectField = ({
3612
+ field,
3613
+ onChange,
3614
+ label,
3615
+ value,
3616
+ name
3617
+ }) => {
3618
+ if (!field.options) {
3619
+ return null;
3620
+ }
3621
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("label", { className: getClassName11(), children: [
3622
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: getClassName11("label"), children: [
3623
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: getClassName11("labelIcon"), children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(chevron_down_default, { size: 16 }) }),
3624
+ label || name
3625
+ ] }),
3626
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3627
+ "select",
3628
+ {
3629
+ className: getClassName11("input"),
3630
+ onChange: (e) => {
3631
+ if (e.currentTarget.value === "true" || e.currentTarget.value === "false") {
3632
+ onChange(Boolean(e.currentTarget.value));
3633
+ return;
3634
+ }
3635
+ onChange(e.currentTarget.value);
3636
+ },
3637
+ value,
3638
+ children: field.options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3639
+ "option",
3640
+ {
3641
+ label: option.label,
3642
+ value: option.value
3237
3643
  },
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
- ] });
3644
+ option.label + option.value
3645
+ ))
3646
+ }
3647
+ )
3648
+ ] });
3649
+ };
3650
+
3651
+ // components/InputOrGroup/fields/TextareaField/index.tsx
3652
+ init_react_import();
3653
+ var import_jsx_runtime15 = require("react/jsx-runtime");
3654
+ var getClassName12 = get_class_name_factory_default("Input", styles_module_default3);
3655
+ var TextareaField = ({
3656
+ onChange,
3657
+ readOnly,
3658
+ value,
3659
+ name,
3660
+ label
3661
+ }) => {
3662
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("label", { className: getClassName12({ readOnly }), children: [
3663
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: getClassName12("label"), children: [
3664
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: getClassName12("labelIcon"), children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(type_default, { size: 16 }) }),
3665
+ label || name
3666
+ ] }),
3667
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
3668
+ "textarea",
3669
+ {
3670
+ className: getClassName12("input"),
3671
+ autoComplete: "off",
3672
+ name,
3673
+ value: typeof value === "undefined" ? "" : value,
3674
+ onChange: (e) => onChange(e.currentTarget.value),
3675
+ readOnly,
3676
+ rows: 5
3677
+ }
3678
+ )
3679
+ ] });
3680
+ };
3681
+
3682
+ // components/InputOrGroup/index.tsx
3683
+ var import_jsx_runtime16 = require("react/jsx-runtime");
3684
+ var getClassName13 = get_class_name_factory_default("Input", styles_module_default3);
3685
+ var FieldLabel = ({
3686
+ children,
3687
+ icon,
3688
+ label
3689
+ }) => {
3690
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("label", { children: [
3691
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: getClassName13("label"), children: [
3692
+ icon ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: getClassName13("labelIcon"), children: icon }) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_jsx_runtime16.Fragment, {}),
3693
+ label
3694
+ ] }),
3695
+ children
3696
+ ] });
3697
+ };
3698
+ var InputOrGroup = (props) => {
3699
+ const { name, field, value, onChange, readOnly } = props;
3700
+ if (field.type === "array") {
3701
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(ArrayField, __spreadValues({}, props));
3250
3702
  }
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
- ] });
3703
+ if (field.type === "external") {
3704
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(ExternalField, __spreadValues({}, props));
3705
+ }
3706
+ if (field.type === "select") {
3707
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(SelectField, __spreadValues({}, props));
3708
+ }
3709
+ if (field.type === "textarea") {
3710
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(TextareaField, __spreadValues({}, props));
3270
3711
  }
3271
3712
  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
- ] }) });
3713
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(RadioField, __spreadValues({}, props));
3309
3714
  }
3310
3715
  if (field.type === "custom") {
3311
3716
  if (!field.render) {
3312
3717
  return null;
3313
3718
  }
3314
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: getClassName6(), children: field.render({
3719
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: getClassName13(), children: field.render({
3315
3720
  field,
3316
3721
  name,
3317
3722
  value,
@@ -3319,96 +3724,46 @@ var InputOrGroup = ({
3319
3724
  readOnly
3320
3725
  }) });
3321
3726
  }
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
- ] });
3727
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(DefaultField, __spreadValues({}, props));
3349
3728
  };
3350
3729
 
3351
3730
  // components/ComponentList/index.tsx
3352
3731
  init_react_import();
3353
- var import_react_beautiful_dnd3 = require("react-beautiful-dnd");
3354
3732
 
3355
3733
  // css-module:/home/runner/work/puck/puck/packages/core/components/ComponentList/styles.module.css#css-module
3356
3734
  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" };
3735
+ 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
3736
 
3359
3737
  // 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);
3738
+ var import_jsx_runtime17 = require("react/jsx-runtime");
3739
+ var getClassName14 = get_class_name_factory_default("ComponentList", styles_module_default7);
3362
3740
  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)(
3741
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(DroppableStrictMode_default, { droppableId: "component-list", isDropDisabled: true, children: (provided, snapshot) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
3364
3742
  "div",
3365
3743
  __spreadProps(__spreadValues({}, provided.droppableProps), {
3366
3744
  ref: provided.innerRef,
3367
- className: getClassName7(),
3745
+ className: getClassName14({
3746
+ isDraggingFrom: !!snapshot.draggingFromThisWith
3747
+ }),
3368
3748
  children: [
3369
3749
  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,
3750
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
3751
+ Draggable2,
3373
3752
  {
3374
- draggableId: componentKey,
3753
+ id: componentKey,
3375
3754
  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
- }
3755
+ showShadow: true,
3756
+ disableAnimations: true,
3757
+ className: () => getClassName14("item"),
3758
+ children: () => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_jsx_runtime17.Fragment, { children: [
3759
+ componentKey,
3760
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: getClassName14("itemIcon"), children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(DragIcon, {}) })
3761
+ ] })
3407
3762
  },
3408
3763
  componentKey
3409
3764
  );
3410
3765
  }),
3411
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: { display: "none" }, children: provided.placeholder })
3766
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { style: { display: "none" }, children: provided.placeholder })
3412
3767
  ]
3413
3768
  })
3414
3769
  ) });
@@ -3416,10 +3771,10 @@ var ComponentList = ({ config }) => {
3416
3771
 
3417
3772
  // lib/use-placeholder-style.ts
3418
3773
  init_react_import();
3419
- var import_react24 = require("react");
3774
+ var import_react27 = require("react");
3420
3775
  var usePlaceholderStyle = () => {
3421
3776
  const queryAttr = "data-rbd-drag-handle-draggable-id";
3422
- const [placeholderStyle, setPlaceholderStyle] = (0, import_react24.useState)();
3777
+ const [placeholderStyle, setPlaceholderStyle] = (0, import_react27.useState)();
3423
3778
  const onDragStartOrUpdate = (draggedItem) => {
3424
3779
  var _a;
3425
3780
  const draggableId = draggedItem.draggableId;
@@ -3467,24 +3822,24 @@ init_react_import();
3467
3822
 
3468
3823
  // css-module:/home/runner/work/puck/puck/packages/core/components/SidebarSection/styles.module.css#css-module
3469
3824
  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" };
3825
+ 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
3826
 
3472
3827
  // components/Heading/index.tsx
3473
3828
  init_react_import();
3474
3829
 
3475
3830
  // css-module:/home/runner/work/puck/puck/packages/core/components/Heading/styles.module.css#css-module
3476
3831
  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" };
3832
+ 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
3833
 
3479
3834
  // 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);
3835
+ var import_jsx_runtime18 = require("react/jsx-runtime");
3836
+ var getClassName15 = get_class_name_factory_default("Heading", styles_module_default9);
3482
3837
  var Heading = ({ children, rank, size = "m" }) => {
3483
3838
  const Tag = rank ? `h${rank}` : "span";
3484
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3839
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
3485
3840
  Tag,
3486
3841
  {
3487
- className: getClassName8({
3842
+ className: getClassName15({
3488
3843
  [size]: true
3489
3844
  }),
3490
3845
  children
@@ -3493,8 +3848,8 @@ var Heading = ({ children, rank, size = "m" }) => {
3493
3848
  };
3494
3849
 
3495
3850
  // 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);
3851
+ var import_jsx_runtime19 = require("react/jsx-runtime");
3852
+ var getClassName16 = get_class_name_factory_default("SidebarSection", styles_module_default8);
3498
3853
  var SidebarSection = ({
3499
3854
  children,
3500
3855
  title,
@@ -3503,26 +3858,125 @@ var SidebarSection = ({
3503
3858
  breadcrumbClick,
3504
3859
  noPadding
3505
3860
  }) => {
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)(
3861
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: getClassName16({ noPadding }), style: { background }, children: [
3862
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: getClassName16("title"), children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: getClassName16("breadcrumbs"), children: [
3863
+ breadcrumbs.map((breadcrumb, i) => /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: getClassName16("breadcrumb"), children: [
3864
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
3510
3865
  "div",
3511
3866
  {
3512
- className: getClassName9("breadcrumbLabel"),
3867
+ className: getClassName16("breadcrumbLabel"),
3513
3868
  onClick: () => breadcrumbClick && breadcrumbClick(breadcrumb),
3514
3869
  children: breadcrumb.label
3515
3870
  }
3516
3871
  ),
3517
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(chevron_right_default, { size: 16 })
3872
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(chevron_right_default, { size: 16 })
3518
3873
  ] }, 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 }) })
3874
+ /* @__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
3875
  ] }) }),
3521
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: getClassName9("content"), children })
3876
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: getClassName16("content"), children })
3522
3877
  ] });
3523
3878
  };
3524
3879
 
3525
- // lib/reducer.ts
3880
+ // reducer/index.ts
3881
+ init_react_import();
3882
+
3883
+ // lib/use-puck-history.ts
3884
+ init_react_import();
3885
+ var import_react29 = require("react");
3886
+
3887
+ // lib/use-action-history.ts
3888
+ init_react_import();
3889
+ var import_react28 = require("react");
3890
+ var EMPTY_HISTORY_INDEX = -1;
3891
+ function useActionHistory() {
3892
+ const [histories, setHistories] = (0, import_react28.useState)([]);
3893
+ const [currentHistoryIndex, setCurrentHistoryIndex] = (0, import_react28.useState)(EMPTY_HISTORY_INDEX);
3894
+ const currentHistory = histories[currentHistoryIndex];
3895
+ const canRewind = currentHistoryIndex > EMPTY_HISTORY_INDEX;
3896
+ const canForward = currentHistoryIndex < histories.length - 1;
3897
+ const record = (params) => {
3898
+ const history = __spreadValues({
3899
+ id: Math.random().toString()
3900
+ }, params);
3901
+ setHistories((prev) => [
3902
+ ...prev.slice(0, currentHistoryIndex + 1),
3903
+ history
3904
+ ]);
3905
+ setCurrentHistoryIndex((prev) => prev + 1);
3906
+ };
3907
+ const rewind = () => {
3908
+ if (canRewind) {
3909
+ currentHistory.rewind();
3910
+ setCurrentHistoryIndex((prev) => prev - 1);
3911
+ }
3912
+ };
3913
+ const forward = () => {
3914
+ const forwardHistory = histories[currentHistoryIndex + 1];
3915
+ if (canForward && forwardHistory) {
3916
+ forwardHistory.forward();
3917
+ setCurrentHistoryIndex((prev) => prev + 1);
3918
+ }
3919
+ };
3920
+ return {
3921
+ currentHistory,
3922
+ canRewind,
3923
+ canForward,
3924
+ record,
3925
+ rewind,
3926
+ forward
3927
+ };
3928
+ }
3929
+
3930
+ // lib/use-puck-history.ts
3931
+ var import_react_hotkeys_hook = require("react-hotkeys-hook");
3932
+ var import_event_emitter = __toESM(require("event-emitter"));
3933
+ var import_use_debounce2 = require("use-debounce");
3934
+ var DEBOUNCE_TIME = 250;
3935
+ var RECORD_DIFF = "RECORD_DIFF";
3936
+ var historyEmitter = (0, import_event_emitter.default)();
3937
+ var recordDiff = (newAppData) => historyEmitter.emit(RECORD_DIFF, newAppData);
3938
+ var _recordHistory = ({ snapshot, newSnapshot, record, dispatch }) => {
3939
+ record({
3940
+ forward: () => {
3941
+ dispatch({ type: "set", appData: newSnapshot });
3942
+ },
3943
+ rewind: () => {
3944
+ dispatch({ type: "set", appData: snapshot });
3945
+ }
3946
+ });
3947
+ };
3948
+ function usePuckHistory({
3949
+ appData,
3950
+ dispatch
3951
+ }) {
3952
+ const { canForward, canRewind, rewind, forward, record } = useActionHistory();
3953
+ (0, import_react_hotkeys_hook.useHotkeys)("meta+z", rewind, { preventDefault: true });
3954
+ (0, import_react_hotkeys_hook.useHotkeys)("meta+shift+z", forward, { preventDefault: true });
3955
+ (0, import_react_hotkeys_hook.useHotkeys)("meta+y", forward, { preventDefault: true });
3956
+ const [snapshot] = (0, import_use_debounce2.useDebounce)(appData, DEBOUNCE_TIME);
3957
+ const handleRecordDiff = (0, import_use_debounce2.useDebouncedCallback)((newAppData) => {
3958
+ return _recordHistory({
3959
+ snapshot,
3960
+ newSnapshot: newAppData,
3961
+ record,
3962
+ dispatch
3963
+ });
3964
+ }, DEBOUNCE_TIME);
3965
+ (0, import_react29.useEffect)(() => {
3966
+ historyEmitter.on(RECORD_DIFF, handleRecordDiff);
3967
+ return () => {
3968
+ historyEmitter.off(RECORD_DIFF, handleRecordDiff);
3969
+ };
3970
+ }, [handleRecordDiff]);
3971
+ return {
3972
+ canForward,
3973
+ canRewind,
3974
+ rewind,
3975
+ forward
3976
+ };
3977
+ }
3978
+
3979
+ // reducer/data.ts
3526
3980
  init_react_import();
3527
3981
 
3528
3982
  // lib/insert.ts
@@ -3543,13 +3997,6 @@ var remove = (list, index) => {
3543
3997
 
3544
3998
  // lib/reduce-related-zones.ts
3545
3999
  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
4000
  var reduceRelatedZones = (item, data, fn) => {
3554
4001
  return __spreadProps(__spreadValues({}, data), {
3555
4002
  zones: Object.keys(data.zones || {}).reduce(
@@ -3612,125 +4059,12 @@ var duplicateRelatedZones = (item, data, newId) => {
3612
4059
  });
3613
4060
  };
3614
4061
 
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
4062
+ // reducer/data.ts
3720
4063
  var zoneCache = {};
3721
4064
  var addToZoneCache = (key, data) => {
3722
4065
  zoneCache[key] = data;
3723
4066
  };
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) => {
4067
+ var reduceData = (data, action, config) => {
3734
4068
  if (action.type === "insert") {
3735
4069
  const emptyComponentData = {
3736
4070
  type: action.componentType,
@@ -3910,10 +4244,48 @@ var createReducer = ({ config }) => storeInterceptor((data, action) => {
3910
4244
  }
3911
4245
  return __spreadProps(__spreadValues({}, data), { zones: _zones });
3912
4246
  }
3913
- if (action.type === "set") {
4247
+ if (action.type === "setData") {
3914
4248
  return __spreadValues(__spreadValues({}, data), action.data);
3915
4249
  }
3916
4250
  return data;
4251
+ };
4252
+
4253
+ // reducer/state.ts
4254
+ init_react_import();
4255
+ var reduceState = (state, action) => {
4256
+ if (action.type === "setState") {
4257
+ return __spreadValues(__spreadValues({}, state), action.state);
4258
+ }
4259
+ return state;
4260
+ };
4261
+
4262
+ // reducer/actions.tsx
4263
+ init_react_import();
4264
+
4265
+ // reducer/index.ts
4266
+ var storeInterceptor = (reducer) => {
4267
+ return (appData, action) => {
4268
+ const newAppData = reducer(appData, action);
4269
+ const isValidType = ![
4270
+ "registerZone",
4271
+ "unregisterZone",
4272
+ "setData",
4273
+ "setState",
4274
+ "set"
4275
+ ].includes(action.type);
4276
+ if (typeof action.recordHistory !== "undefined" ? action.recordHistory : isValidType) {
4277
+ recordDiff(newAppData);
4278
+ }
4279
+ return newAppData;
4280
+ };
4281
+ };
4282
+ var createReducer = ({ config }) => storeInterceptor((appData, action) => {
4283
+ const data = reduceData(appData.data, action, config);
4284
+ const state = reduceState(appData.state, action);
4285
+ if (action.type === "set") {
4286
+ return __spreadValues(__spreadValues({}, appData), action.appData);
4287
+ }
4288
+ return { data, state };
3917
4289
  });
3918
4290
 
3919
4291
  // components/LayerTree/index.tsx
@@ -3921,7 +4293,7 @@ init_react_import();
3921
4293
 
3922
4294
  // css-module:/home/runner/work/puck/puck/packages/core/components/LayerTree/styles.module.css#css-module
3923
4295
  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" };
4296
+ 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
4297
 
3926
4298
  // lib/scroll-into-view.ts
3927
4299
  init_react_import();
@@ -3935,7 +4307,7 @@ var scrollIntoView = (el) => {
3935
4307
  };
3936
4308
 
3937
4309
  // components/LayerTree/index.tsx
3938
- var import_react27 = require("react");
4310
+ var import_react30 = require("react");
3939
4311
 
3940
4312
  // lib/find-zones-for-area.ts
3941
4313
  init_react_import();
@@ -3964,9 +4336,9 @@ var isChildOfZone = (item, maybeChild, ctx) => {
3964
4336
  };
3965
4337
 
3966
4338
  // 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);
4339
+ var import_jsx_runtime20 = require("react/jsx-runtime");
4340
+ var getClassName17 = get_class_name_factory_default("LayerTree", styles_module_default10);
4341
+ var getClassNameLayer = get_class_name_factory_default("Layer", styles_module_default10);
3970
4342
  var LayerTree = ({
3971
4343
  data,
3972
4344
  zoneContent,
@@ -3976,15 +4348,15 @@ var LayerTree = ({
3976
4348
  label
3977
4349
  }) => {
3978
4350
  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" }) }),
4351
+ const ctx = (0, import_react30.useContext)(dropZoneContext);
4352
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_jsx_runtime20.Fragment, { children: [
4353
+ label && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: getClassName17("zoneTitle"), children: [
4354
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: getClassName17("zoneIcon"), children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(layers_default, { size: "16" }) }),
3983
4355
  " ",
3984
4356
  label
3985
4357
  ] }),
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" }),
4358
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("ul", { className: getClassName17(), children: [
4359
+ zoneContent.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: getClassName17("helper"), children: "No items" }),
3988
4360
  zoneContent.map((item, i) => {
3989
4361
  const isSelected = (itemSelector == null ? void 0 : itemSelector.index) === i && (itemSelector.zone === zone || itemSelector.zone === rootDroppableId && !zone);
3990
4362
  const zonesForItem = findZonesForArea(data, item.props.id);
@@ -3999,7 +4371,7 @@ var LayerTree = ({
3999
4371
  const selectedItem = itemSelector && data ? getItem(itemSelector, data) : null;
4000
4372
  const isHovering = hoveringComponent === item.props.id;
4001
4373
  const childIsSelected = isChildOfZone(item, selectedItem, ctx);
4002
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
4374
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
4003
4375
  "li",
4004
4376
  {
4005
4377
  className: getClassNameLayer({
@@ -4009,7 +4381,7 @@ var LayerTree = ({
4009
4381
  childIsSelected
4010
4382
  }),
4011
4383
  children: [
4012
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: getClassNameLayer("inner"), children: /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
4384
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: getClassNameLayer("inner"), children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
4013
4385
  "div",
4014
4386
  {
4015
4387
  className: getClassNameLayer("clickable"),
@@ -4040,22 +4412,22 @@ var LayerTree = ({
4040
4412
  setHoveringComponent(null);
4041
4413
  },
4042
4414
  children: [
4043
- containsZone && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
4415
+ containsZone && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4044
4416
  "div",
4045
4417
  {
4046
4418
  className: getClassNameLayer("chevron"),
4047
4419
  title: isSelected ? "Collapse" : "Expand",
4048
- children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(chevron_down_default, { size: "12" })
4420
+ children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(chevron_down_default, { size: "12" })
4049
4421
  }
4050
4422
  ),
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" }) }),
4423
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: getClassNameLayer("title"), children: [
4424
+ /* @__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
4425
  item.type
4054
4426
  ] })
4055
4427
  ]
4056
4428
  }
4057
4429
  ) }),
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)(
4430
+ 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
4431
  LayerTree,
4060
4432
  {
4061
4433
  data,
@@ -4084,21 +4456,23 @@ var areaContainsZones = (data, area) => {
4084
4456
 
4085
4457
  // lib/flush-zones.ts
4086
4458
  init_react_import();
4087
- var flushZones = (data) => {
4088
- const containsZones = typeof data.zones !== "undefined";
4459
+ var flushZones = (appData) => {
4460
+ const containsZones = typeof appData.data.zones !== "undefined";
4089
4461
  if (containsZones) {
4090
- Object.keys(data.zones || {}).forEach((zone) => {
4091
- addToZoneCache(zone, data.zones[zone]);
4462
+ Object.keys(appData.data.zones || {}).forEach((zone) => {
4463
+ addToZoneCache(zone, appData.data.zones[zone]);
4092
4464
  });
4093
- return __spreadProps(__spreadValues({}, data), {
4094
- zones: {}
4465
+ return __spreadProps(__spreadValues({}, appData), {
4466
+ data: __spreadProps(__spreadValues({}, appData.data), {
4467
+ zones: {}
4468
+ })
4095
4469
  });
4096
4470
  }
4097
- return data;
4471
+ return appData;
4098
4472
  };
4099
4473
 
4100
4474
  // components/Puck/index.tsx
4101
- var import_jsx_runtime13 = require("react/jsx-runtime");
4475
+ var import_jsx_runtime21 = require("react/jsx-runtime");
4102
4476
  var defaultPageFields = {
4103
4477
  title: { type: "text" }
4104
4478
  };
@@ -4109,7 +4483,7 @@ var PluginRenderer = ({
4109
4483
  renderMethod
4110
4484
  }) => {
4111
4485
  return plugins.filter((item) => item[renderMethod]).map((item) => item[renderMethod]).reduce(
4112
- (accChildren, Item) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Item, { data, children: accChildren }),
4486
+ (accChildren, Item) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Item, { data, children: accChildren }),
4113
4487
  children
4114
4488
  );
4115
4489
  };
@@ -4125,21 +4499,38 @@ function Puck({
4125
4499
  headerPath
4126
4500
  }) {
4127
4501
  var _a, _b;
4128
- const [reducer] = (0, import_react28.useState)(() => createReducer({ config }));
4129
- const [data, dispatch] = (0, import_react28.useReducer)(
4502
+ const [reducer] = (0, import_react31.useState)(() => createReducer({ config }));
4503
+ const initialAppData = {
4504
+ data: initialData,
4505
+ state: {
4506
+ leftSideBarVisible: true,
4507
+ arrayState: {}
4508
+ }
4509
+ };
4510
+ const [appData, dispatch] = (0, import_react31.useReducer)(
4130
4511
  reducer,
4131
- flushZones(initialData)
4512
+ flushZones(initialAppData)
4132
4513
  );
4514
+ const { data, state } = appData;
4133
4515
  const { canForward, canRewind, rewind, forward } = usePuckHistory({
4134
- data,
4516
+ appData,
4135
4517
  dispatch
4136
4518
  });
4137
- const [itemSelector, setItemSelector] = (0, import_react28.useState)(null);
4519
+ const { itemSelector, leftSideBarVisible } = state;
4520
+ const setItemSelector = (0, import_react31.useCallback)(
4521
+ (newItemSelector) => {
4522
+ dispatch({
4523
+ type: "setState",
4524
+ state: { itemSelector: newItemSelector }
4525
+ });
4526
+ },
4527
+ []
4528
+ );
4138
4529
  const selectedItem = itemSelector ? getItem(itemSelector, data) : null;
4139
- const Page = (0, import_react28.useCallback)(
4530
+ const Page = (0, import_react31.useCallback)(
4140
4531
  (pageProps) => {
4141
4532
  var _a2, _b2;
4142
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4533
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4143
4534
  PluginRenderer,
4144
4535
  {
4145
4536
  plugins,
@@ -4151,8 +4542,8 @@ function Puck({
4151
4542
  },
4152
4543
  [config.root]
4153
4544
  );
4154
- const PageFieldWrapper = (0, import_react28.useCallback)(
4155
- (props) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4545
+ const PageFieldWrapper = (0, import_react31.useCallback)(
4546
+ (props) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4156
4547
  PluginRenderer,
4157
4548
  {
4158
4549
  plugins,
@@ -4163,8 +4554,8 @@ function Puck({
4163
4554
  ),
4164
4555
  []
4165
4556
  );
4166
- const ComponentFieldWrapper = (0, import_react28.useCallback)(
4167
- (props) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4557
+ const ComponentFieldWrapper = (0, import_react31.useCallback)(
4558
+ (props) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4168
4559
  PluginRenderer,
4169
4560
  {
4170
4561
  plugins,
@@ -4178,15 +4569,14 @@ function Puck({
4178
4569
  const FieldWrapper = itemSelector ? ComponentFieldWrapper : PageFieldWrapper;
4179
4570
  const rootFields = ((_a = config.root) == null ? void 0 : _a.fields) || defaultPageFields;
4180
4571
  let fields = selectedItem ? ((_b = config.components[selectedItem.type]) == null ? void 0 : _b.fields) || {} : rootFields;
4181
- (0, import_react28.useEffect)(() => {
4572
+ (0, import_react31.useEffect)(() => {
4182
4573
  if (onChange)
4183
4574
  onChange(data);
4184
4575
  }, [data]);
4185
4576
  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,
4577
+ const [draggedItem, setDraggedItem] = (0, import_react31.useState)();
4578
+ 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)(
4579
+ import_react_beautiful_dnd5.DragDropContext,
4190
4580
  {
4191
4581
  onDragUpdate: (update) => {
4192
4582
  setDraggedItem(__spreadValues(__spreadValues({}, draggedItem), update));
@@ -4237,7 +4627,7 @@ function Puck({
4237
4627
  });
4238
4628
  }
4239
4629
  },
4240
- children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4630
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4241
4631
  DropZoneProvider,
4242
4632
  {
4243
4633
  value: {
@@ -4251,19 +4641,19 @@ function Puck({
4251
4641
  mode: "edit",
4252
4642
  areaId: "root"
4253
4643
  },
4254
- children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(dropZoneContext.Consumer, { children: (ctx) => {
4644
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(dropZoneContext.Consumer, { children: (ctx) => {
4255
4645
  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
4646
  if (path) {
4257
4647
  path = [{ label: "Page", selector: null }, ...path];
4258
4648
  path = path.slice(path.length - 2, path.length - 1);
4259
4649
  }
4260
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
4650
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
4261
4651
  "div",
4262
4652
  {
4263
4653
  style: {
4264
4654
  display: "grid",
4265
4655
  gridTemplateAreas: '"header header header" "left editor right"',
4266
- gridTemplateColumns: `${leftSidebarVisible ? "288px" : "0px"} auto 288px`,
4656
+ gridTemplateColumns: `${leftSideBarVisible ? "288px" : "0px"} auto 288px`,
4267
4657
  gridTemplateRows: "min-content auto",
4268
4658
  height: "100vh",
4269
4659
  position: "fixed",
@@ -4273,7 +4663,7 @@ function Puck({
4273
4663
  right: 0
4274
4664
  },
4275
4665
  children: [
4276
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4666
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4277
4667
  "header",
4278
4668
  {
4279
4669
  style: {
@@ -4283,19 +4673,19 @@ function Puck({
4283
4673
  borderBottom: "1px solid var(--puck-color-grey-8)"
4284
4674
  },
4285
4675
  children: renderHeader ? renderHeader({
4286
- children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4676
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4287
4677
  Button,
4288
4678
  {
4289
4679
  onClick: () => {
4290
4680
  onPublish(data);
4291
4681
  },
4292
- icon: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(globe_default, { size: "14px" }),
4682
+ icon: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(globe_default, { size: "14px" }),
4293
4683
  children: "Publish"
4294
4684
  }
4295
4685
  ),
4296
4686
  data,
4297
4687
  dispatch
4298
- }) : /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
4688
+ }) : /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
4299
4689
  "div",
4300
4690
  {
4301
4691
  style: {
@@ -4306,24 +4696,29 @@ function Puck({
4306
4696
  gridTemplateRows: "auto"
4307
4697
  },
4308
4698
  children: [
4309
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4699
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4310
4700
  "div",
4311
4701
  {
4312
4702
  style: {
4313
4703
  display: "flex",
4314
4704
  gap: 16
4315
4705
  },
4316
- children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4706
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4317
4707
  IconButton,
4318
4708
  {
4319
- onClick: () => setLeftSidebarVisible(!leftSidebarVisible),
4709
+ onClick: () => dispatch({
4710
+ type: "setState",
4711
+ state: {
4712
+ leftSideBarVisible: !leftSideBarVisible
4713
+ }
4714
+ }),
4320
4715
  title: "Toggle left sidebar",
4321
- children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(sidebar_default, {})
4716
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(sidebar_default, {})
4322
4717
  }
4323
4718
  )
4324
4719
  }
4325
4720
  ),
4326
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4721
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4327
4722
  "div",
4328
4723
  {
4329
4724
  style: {
@@ -4331,13 +4726,19 @@ function Puck({
4331
4726
  justifyContent: "center",
4332
4727
  alignItems: "center"
4333
4728
  },
4334
- children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(Heading, { rank: 2, size: "xs", children: [
4729
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(Heading, { rank: 2, size: "xs", children: [
4335
4730
  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 }) })
4731
+ headerPath && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4732
+ "small",
4733
+ {
4734
+ style: { fontWeight: 400, marginLeft: 4 },
4735
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("code", { children: headerPath })
4736
+ }
4737
+ )
4337
4738
  ] })
4338
4739
  }
4339
4740
  ),
4340
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
4741
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
4341
4742
  "div",
4342
4743
  {
4343
4744
  style: {
@@ -4346,14 +4747,14 @@ function Puck({
4346
4747
  justifyContent: "flex-end"
4347
4748
  },
4348
4749
  children: [
4349
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: { display: "flex" }, children: [
4350
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4750
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { style: { display: "flex" }, children: [
4751
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4351
4752
  IconButton,
4352
4753
  {
4353
4754
  title: "undo",
4354
4755
  disabled: !canRewind,
4355
4756
  onClick: rewind,
4356
- children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4757
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4357
4758
  chevron_left_default,
4358
4759
  {
4359
4760
  size: 21,
@@ -4362,13 +4763,13 @@ function Puck({
4362
4763
  )
4363
4764
  }
4364
4765
  ),
4365
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4766
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4366
4767
  IconButton,
4367
4768
  {
4368
4769
  title: "redo",
4369
4770
  disabled: !canForward,
4370
4771
  onClick: forward,
4371
- children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4772
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4372
4773
  chevron_right_default,
4373
4774
  {
4374
4775
  size: 21,
@@ -4379,13 +4780,13 @@ function Puck({
4379
4780
  )
4380
4781
  ] }),
4381
4782
  renderHeaderActions && renderHeaderActions({ data, dispatch }),
4382
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4783
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4383
4784
  Button,
4384
4785
  {
4385
4786
  onClick: () => {
4386
4787
  onPublish(data);
4387
4788
  },
4388
- icon: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(globe_default, { size: "14px" }),
4789
+ icon: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(globe_default, { size: "14px" }),
4389
4790
  children: "Publish"
4390
4791
  }
4391
4792
  )
@@ -4397,7 +4798,7 @@ function Puck({
4397
4798
  )
4398
4799
  }
4399
4800
  ),
4400
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
4801
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
4401
4802
  "div",
4402
4803
  {
4403
4804
  style: {
@@ -4409,9 +4810,9 @@ function Puck({
4409
4810
  flexDirection: "column"
4410
4811
  },
4411
4812
  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)(
4813
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SidebarSection, { title: "Components", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(ComponentList, { config }) }),
4814
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(SidebarSection, { title: "Outline", children: [
4815
+ (ctx == null ? void 0 : ctx.activeZones) && (ctx == null ? void 0 : ctx.activeZones[rootDroppableId]) && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4415
4816
  LayerTree,
4416
4817
  {
4417
4818
  data,
@@ -4423,7 +4824,7 @@ function Puck({
4423
4824
  ),
4424
4825
  Object.entries(findZonesForArea(data, "root")).map(
4425
4826
  ([zoneKey, zone]) => {
4426
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4827
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4427
4828
  LayerTree,
4428
4829
  {
4429
4830
  data,
@@ -4441,7 +4842,7 @@ function Puck({
4441
4842
  ]
4442
4843
  }
4443
4844
  ),
4444
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
4845
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
4445
4846
  "div",
4446
4847
  {
4447
4848
  style: {
@@ -4454,7 +4855,7 @@ function Puck({
4454
4855
  onClick: () => setItemSelector(null),
4455
4856
  id: "puck-frame",
4456
4857
  children: [
4457
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4858
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4458
4859
  "div",
4459
4860
  {
4460
4861
  className: "puck-root",
@@ -4463,18 +4864,18 @@ function Puck({
4463
4864
  margin: 32,
4464
4865
  zoom: 0.75
4465
4866
  },
4466
- children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4867
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4467
4868
  "div",
4468
4869
  {
4469
4870
  style: {
4470
4871
  border: "1px solid var(--puck-color-grey-8)"
4471
4872
  },
4472
- children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Page, __spreadProps(__spreadValues({ data }, data.root), { children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(DropZone, { zone: rootDroppableId }) }))
4873
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Page, __spreadProps(__spreadValues({ data }, data.root), { children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(DropZone, { zone: rootDroppableId }) }))
4473
4874
  }
4474
4875
  )
4475
4876
  }
4476
4877
  ),
4477
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4878
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4478
4879
  "div",
4479
4880
  {
4480
4881
  style: {
@@ -4487,7 +4888,7 @@ function Puck({
4487
4888
  ]
4488
4889
  }
4489
4890
  ),
4490
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4891
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4491
4892
  "div",
4492
4893
  {
4493
4894
  style: {
@@ -4499,7 +4900,7 @@ function Puck({
4499
4900
  flexDirection: "column",
4500
4901
  background: "var(--puck-color-white)"
4501
4902
  },
4502
- children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(FieldWrapper, { data, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4903
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(FieldWrapper, { data, children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4503
4904
  SidebarSection,
4504
4905
  {
4505
4906
  noPadding: true,
@@ -4552,13 +4953,13 @@ function Puck({
4552
4953
  });
4553
4954
  } else {
4554
4955
  dispatch({
4555
- type: "set",
4956
+ type: "setData",
4556
4957
  data: { root: newProps }
4557
4958
  });
4558
4959
  }
4559
4960
  };
4560
4961
  if (selectedItem && itemSelector) {
4561
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4962
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4562
4963
  InputOrGroup,
4563
4964
  {
4564
4965
  field,
@@ -4574,13 +4975,15 @@ function Puck({
4574
4975
  `${selectedItem.props.id}_${fieldName}`
4575
4976
  );
4576
4977
  } else {
4577
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4978
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4578
4979
  InputOrGroup,
4579
4980
  {
4580
4981
  field,
4581
4982
  name: fieldName,
4582
4983
  label: field.label,
4583
- readOnly: ((_d = (_c = data.root._meta) == null ? void 0 : _c.locked) == null ? void 0 : _d.indexOf(fieldName)) > -1,
4984
+ readOnly: ((_d = (_c = data.root._meta) == null ? void 0 : _c.locked) == null ? void 0 : _d.indexOf(
4985
+ fieldName
4986
+ )) > -1,
4584
4987
  value: data.root[fieldName],
4585
4988
  onChange: onChange2
4586
4989
  },
@@ -4599,17 +5002,17 @@ function Puck({
4599
5002
  }
4600
5003
  )
4601
5004
  }
4602
- ) });
5005
+ ) }) });
4603
5006
  }
4604
5007
 
4605
5008
  // components/Render/index.tsx
4606
5009
  init_react_import();
4607
- var import_jsx_runtime14 = require("react/jsx-runtime");
5010
+ var import_jsx_runtime22 = require("react/jsx-runtime");
4608
5011
  function Render({ config, data }) {
4609
5012
  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 }) })) });
5013
+ 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
5014
  }
4612
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(DropZoneProvider, { value: { data, config, mode: "render" }, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(DropZone, { zone: rootDroppableId }) });
5015
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(DropZoneProvider, { value: { data, config, mode: "render" }, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(DropZone, { zone: rootDroppableId }) });
4613
5016
  }
4614
5017
  // Annotate the CommonJS export names for ESM import in node:
4615
5018
  0 && (module.exports = {