@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.css +224 -171
- package/dist/index.d.ts +35 -8
- package/dist/index.js +1033 -630
- package/package.json +1 -1
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
|
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 =
|
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 =
|
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
|
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
|
1217
|
+
var import_react22 = require("react");
|
1218
1218
|
|
1219
1219
|
// components/DraggableComponent/index.tsx
|
1220
1220
|
init_react_import();
|
1221
|
-
var
|
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/
|
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
|
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("
|
2197
|
-
|
2198
|
-
|
2199
|
-
|
2200
|
-
|
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: "
|
2205
|
-
y1: "
|
2206
|
-
x2: "
|
2207
|
-
y2: "
|
2202
|
+
x1: "5",
|
2203
|
+
y1: "12",
|
2204
|
+
x2: "19",
|
2205
|
+
y2: "12"
|
2208
2206
|
}));
|
2209
2207
|
});
|
2210
|
-
|
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
|
-
|
2215
|
-
var
|
2212
|
+
Plus.displayName = "Plus";
|
2213
|
+
var plus_default = Plus;
|
2216
2214
|
|
2217
|
-
// ../../node_modules/react-feather/dist/icons/
|
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
|
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("
|
2281
|
-
|
2282
|
-
|
2283
|
-
|
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
|
-
|
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
|
-
|
2291
|
-
var
|
2296
|
+
Sidebar.displayName = "Sidebar";
|
2297
|
+
var sidebar_default = Sidebar;
|
2292
2298
|
|
2293
|
-
// ../../node_modules/react-feather/dist/icons/
|
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
|
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__ */
|
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__ */
|
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:
|
2372
|
-
size:
|
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
|
2461
|
+
var import_react18 = require("react");
|
2380
2462
|
var useModifierHeld = (modifier) => {
|
2381
|
-
const [modifierHeld, setModifierHeld] = (0,
|
2382
|
-
(0,
|
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,
|
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
|
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,
|
2476
|
-
(0,
|
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
|
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,
|
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,
|
2578
|
-
const [hoveringZone, setHoveringZone] = (0,
|
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,
|
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,
|
2665
|
+
const [areasWithZones, setAreasWithZones] = (0, import_react21.useState)(
|
2584
2666
|
{}
|
2585
2667
|
);
|
2586
|
-
const [activeZones, setActiveZones] = (0,
|
2668
|
+
const [activeZones, setActiveZones] = (0, import_react21.useState)({});
|
2587
2669
|
const { dispatch = null } = value ? value : {};
|
2588
|
-
const registerZoneArea = (0,
|
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,
|
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,
|
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,
|
2623
|
-
const registerPath = (0,
|
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,
|
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,
|
2775
|
+
(0, import_react22.useEffect)(() => {
|
2694
2776
|
if (areaId && registerZoneArea) {
|
2695
2777
|
registerZoneArea(areaId);
|
2696
2778
|
}
|
2697
2779
|
}, [areaId]);
|
2698
|
-
(0,
|
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,
|
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,
|
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
|
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,
|
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
|
3012
|
-
var
|
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/
|
3099
|
+
// css-module:/home/runner/work/puck/puck/packages/core/components/InputOrGroup/styles.module.css#css-module
|
3018
3100
|
init_react_import();
|
3019
|
-
var
|
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
|
-
//
|
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/
|
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
|
3028
|
-
|
3029
|
-
|
3030
|
-
|
3031
|
-
|
3120
|
+
var Draggable2 = ({
|
3121
|
+
className,
|
3122
|
+
children,
|
3123
|
+
id,
|
3124
|
+
index,
|
3125
|
+
showShadow,
|
3126
|
+
disableAnimations = false
|
3032
3127
|
}) => {
|
3033
|
-
|
3034
|
-
|
3035
|
-
|
3036
|
-
|
3037
|
-
|
3038
|
-
|
3039
|
-
|
3040
|
-
|
3041
|
-
|
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
|
-
}
|
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
|
-
//
|
3155
|
+
// lib/generate-id.ts
|
3118
3156
|
init_react_import();
|
3119
|
-
var
|
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
|
3124
|
-
var
|
3125
|
-
|
3126
|
-
|
3127
|
-
|
3128
|
-
|
3129
|
-
|
3130
|
-
|
3131
|
-
|
3132
|
-
|
3133
|
-
|
3134
|
-
|
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
|
3138
|
-
|
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
|
-
|
3212
|
+
value,
|
3213
|
+
name,
|
3214
|
+
label
|
3144
3215
|
}) => {
|
3145
|
-
|
3146
|
-
|
3147
|
-
|
3148
|
-
|
3149
|
-
|
3150
|
-
|
3151
|
-
|
3152
|
-
|
3153
|
-
|
3154
|
-
|
3155
|
-
|
3156
|
-
|
3157
|
-
|
3158
|
-
|
3159
|
-
|
3160
|
-
|
3161
|
-
|
3162
|
-
|
3163
|
-
|
3164
|
-
|
3165
|
-
|
3166
|
-
|
3167
|
-
|
3168
|
-
|
3169
|
-
|
3170
|
-
|
3171
|
-
|
3172
|
-
|
3173
|
-
|
3174
|
-
|
3175
|
-
|
3176
|
-
|
3177
|
-
|
3178
|
-
|
3179
|
-
|
3180
|
-
|
3181
|
-
|
3182
|
-
|
3183
|
-
|
3184
|
-
|
3185
|
-
|
3186
|
-
|
3187
|
-
|
3188
|
-
|
3189
|
-
|
3190
|
-
|
3191
|
-
|
3192
|
-
|
3193
|
-
|
3194
|
-
|
3195
|
-
|
3196
|
-
|
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
|
-
|
3210
|
-
|
3211
|
-
|
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
|
-
|
3214
|
-
|
3215
|
-
|
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
|
-
|
3219
|
-
|
3220
|
-
|
3221
|
-
|
3222
|
-
|
3223
|
-
|
3224
|
-
|
3225
|
-
|
3226
|
-
|
3227
|
-
|
3228
|
-
|
3229
|
-
|
3230
|
-
|
3231
|
-
|
3232
|
-
|
3233
|
-
|
3234
|
-
|
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
|
-
|
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
|
-
|
3240
|
-
|
3241
|
-
|
3242
|
-
|
3243
|
-
|
3244
|
-
|
3245
|
-
|
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 === "
|
3252
|
-
return /* @__PURE__ */ (0,
|
3253
|
-
|
3254
|
-
|
3255
|
-
|
3256
|
-
|
3257
|
-
|
3258
|
-
|
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
|
-
|
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,
|
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,
|
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
|
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
|
3361
|
-
var
|
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,
|
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:
|
3745
|
+
className: getClassName14({
|
3746
|
+
isDraggingFrom: !!snapshot.draggingFromThisWith
|
3747
|
+
}),
|
3368
3748
|
children: [
|
3369
3749
|
Object.keys(config.components).map((componentKey, i) => {
|
3370
|
-
|
3371
|
-
|
3372
|
-
import_react_beautiful_dnd3.Draggable,
|
3750
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
3751
|
+
Draggable2,
|
3373
3752
|
{
|
3374
|
-
|
3753
|
+
id: componentKey,
|
3375
3754
|
index: i,
|
3376
|
-
|
3377
|
-
|
3378
|
-
|
3379
|
-
|
3380
|
-
|
3381
|
-
|
3382
|
-
|
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,
|
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
|
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,
|
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
|
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
|
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
|
3481
|
-
var
|
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,
|
3839
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
3485
3840
|
Tag,
|
3486
3841
|
{
|
3487
|
-
className:
|
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
|
3497
|
-
var
|
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,
|
3507
|
-
/* @__PURE__ */ (0,
|
3508
|
-
breadcrumbs.map((breadcrumb, i) => /* @__PURE__ */ (0,
|
3509
|
-
/* @__PURE__ */ (0,
|
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:
|
3867
|
+
className: getClassName16("breadcrumbLabel"),
|
3513
3868
|
onClick: () => breadcrumbClick && breadcrumbClick(breadcrumb),
|
3514
3869
|
children: breadcrumb.label
|
3515
3870
|
}
|
3516
3871
|
),
|
3517
|
-
/* @__PURE__ */ (0,
|
3872
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(chevron_right_default, { size: 16 })
|
3518
3873
|
] }, i)),
|
3519
|
-
/* @__PURE__ */ (0,
|
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,
|
3876
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: getClassName16("content"), children })
|
3522
3877
|
] });
|
3523
3878
|
};
|
3524
3879
|
|
3525
|
-
//
|
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
|
-
//
|
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
|
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 === "
|
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
|
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
|
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
|
3968
|
-
var
|
3969
|
-
var getClassNameLayer = get_class_name_factory_default("Layer",
|
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,
|
3980
|
-
return /* @__PURE__ */ (0,
|
3981
|
-
label && /* @__PURE__ */ (0,
|
3982
|
-
/* @__PURE__ */ (0,
|
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,
|
3987
|
-
zoneContent.length === 0 && /* @__PURE__ */ (0,
|
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,
|
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,
|
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,
|
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,
|
4420
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(chevron_down_default, { size: "12" })
|
4049
4421
|
}
|
4050
4422
|
),
|
4051
|
-
/* @__PURE__ */ (0,
|
4052
|
-
/* @__PURE__ */ (0,
|
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,
|
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 = (
|
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({},
|
4094
|
-
|
4465
|
+
return __spreadProps(__spreadValues({}, appData), {
|
4466
|
+
data: __spreadProps(__spreadValues({}, appData.data), {
|
4467
|
+
zones: {}
|
4468
|
+
})
|
4095
4469
|
});
|
4096
4470
|
}
|
4097
|
-
return
|
4471
|
+
return appData;
|
4098
4472
|
};
|
4099
4473
|
|
4100
4474
|
// components/Puck/index.tsx
|
4101
|
-
var
|
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,
|
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,
|
4129
|
-
const
|
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(
|
4512
|
+
flushZones(initialAppData)
|
4132
4513
|
);
|
4514
|
+
const { data, state } = appData;
|
4133
4515
|
const { canForward, canRewind, rewind, forward } = usePuckHistory({
|
4134
|
-
|
4516
|
+
appData,
|
4135
4517
|
dispatch
|
4136
4518
|
});
|
4137
|
-
const
|
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,
|
4530
|
+
const Page = (0, import_react31.useCallback)(
|
4140
4531
|
(pageProps) => {
|
4141
4532
|
var _a2, _b2;
|
4142
|
-
return /* @__PURE__ */ (0,
|
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,
|
4155
|
-
(props) => /* @__PURE__ */ (0,
|
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,
|
4167
|
-
(props) => /* @__PURE__ */ (0,
|
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,
|
4572
|
+
(0, import_react31.useEffect)(() => {
|
4182
4573
|
if (onChange)
|
4183
4574
|
onChange(data);
|
4184
4575
|
}, [data]);
|
4185
4576
|
const { onDragStartOrUpdate, placeholderStyle } = usePlaceholderStyle();
|
4186
|
-
const [
|
4187
|
-
|
4188
|
-
|
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,
|
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,
|
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,
|
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: `${
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
4706
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
4317
4707
|
IconButton,
|
4318
4708
|
{
|
4319
|
-
onClick: () =>
|
4709
|
+
onClick: () => dispatch({
|
4710
|
+
type: "setState",
|
4711
|
+
state: {
|
4712
|
+
leftSideBarVisible: !leftSideBarVisible
|
4713
|
+
}
|
4714
|
+
}),
|
4320
4715
|
title: "Toggle left sidebar",
|
4321
|
-
children: /* @__PURE__ */ (0,
|
4716
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(sidebar_default, {})
|
4322
4717
|
}
|
4323
4718
|
)
|
4324
4719
|
}
|
4325
4720
|
),
|
4326
|
-
/* @__PURE__ */ (0,
|
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,
|
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,
|
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,
|
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,
|
4350
|
-
/* @__PURE__ */ (0,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
4413
|
-
/* @__PURE__ */ (0,
|
4414
|
-
(ctx == null ? void 0 : ctx.activeZones) && (ctx == null ? void 0 : ctx.activeZones[rootDroppableId]) && /* @__PURE__ */ (0,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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: "
|
4956
|
+
type: "setData",
|
4556
4957
|
data: { root: newProps }
|
4557
4958
|
});
|
4558
4959
|
}
|
4559
4960
|
};
|
4560
4961
|
if (selectedItem && itemSelector) {
|
4561
|
-
return /* @__PURE__ */ (0,
|
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,
|
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(
|
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
|
5010
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
4608
5011
|
function Render({ config, data }) {
|
4609
5012
|
if (config.root) {
|
4610
|
-
return /* @__PURE__ */ (0,
|
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,
|
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 = {
|