@measured/puck 0.9.1-canary.efa4f45 → 0.10.0-canary.2a12826
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.css +224 -171
- package/dist/index.d.ts +35 -8
- package/dist/index.js +1039 -632
- 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,638 @@ 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
|
-
name: `${name}_${i}_${fieldName}`,
|
3181
|
-
label: subField.label || fieldName,
|
3182
|
-
field: subField,
|
3183
|
-
value: item[fieldName],
|
3184
|
-
onChange: (val) => onChange(
|
3185
|
-
replace(value, i, __spreadProps(__spreadValues({}, item), { [fieldName]: val }))
|
3186
|
-
)
|
3187
|
-
},
|
3188
|
-
`${name}_${i}_${fieldName}`
|
3189
|
-
);
|
3190
|
-
}) })
|
3191
|
-
]
|
3192
|
-
},
|
3193
|
-
`${name}_${i}`
|
3194
|
-
)) : /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", {}),
|
3195
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
3196
|
-
"button",
|
3197
|
-
{
|
3198
|
-
className: getClassName6("addButton"),
|
3199
|
-
onClick: () => {
|
3200
|
-
const existingValue = value || [];
|
3201
|
-
onChange([...existingValue, field.defaultItemProps || {}]);
|
3202
|
-
},
|
3203
|
-
children: "+ Add item"
|
3204
|
-
}
|
3205
|
-
)
|
3206
|
-
] })
|
3207
|
-
] });
|
3216
|
+
const [arrayFieldId] = (0, import_react25.useState)(generateId("ArrayField"));
|
3217
|
+
const { appData, setState } = useAppContext();
|
3218
|
+
const arrayState = appData.state.arrayState[arrayFieldId] || {
|
3219
|
+
items: Array.from(value).map((v) => ({
|
3220
|
+
_arrayId: generateId("ArrayItem"),
|
3221
|
+
data: v
|
3222
|
+
})),
|
3223
|
+
openId: ""
|
3224
|
+
};
|
3225
|
+
const setArrayState = (0, import_react25.useCallback)(
|
3226
|
+
(newArrayState, recordHistory = false) => {
|
3227
|
+
setState(
|
3228
|
+
{
|
3229
|
+
arrayState: __spreadProps(__spreadValues({}, appData.state.arrayState), {
|
3230
|
+
[arrayFieldId]: __spreadValues(__spreadValues({}, arrayState), newArrayState)
|
3231
|
+
})
|
3232
|
+
},
|
3233
|
+
recordHistory
|
3234
|
+
);
|
3235
|
+
},
|
3236
|
+
[arrayState]
|
3237
|
+
);
|
3238
|
+
(0, import_react25.useEffect)(() => {
|
3239
|
+
const newItems = Array.from(value).map((item, idx) => {
|
3240
|
+
var _a;
|
3241
|
+
return {
|
3242
|
+
_arrayId: ((_a = arrayState.items[idx]) == null ? void 0 : _a._arrayId) || generateId("ArrayItem"),
|
3243
|
+
data: item
|
3244
|
+
};
|
3245
|
+
});
|
3246
|
+
setArrayState({ items: newItems });
|
3247
|
+
}, [value]);
|
3248
|
+
if (!field.arrayFields) {
|
3249
|
+
return null;
|
3208
3250
|
}
|
3209
|
-
|
3210
|
-
|
3211
|
-
|
3251
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: getClassNameInput(), children: [
|
3252
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("b", { className: getClassNameInput("label"), children: [
|
3253
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: getClassNameInput("labelIcon"), children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(list_default, { size: 16 }) }),
|
3254
|
+
label || name
|
3255
|
+
] }),
|
3256
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
3257
|
+
import_react_beautiful_dnd4.DragDropContext,
|
3258
|
+
{
|
3259
|
+
onDragEnd: (event) => {
|
3260
|
+
var _a;
|
3261
|
+
if (event.destination) {
|
3262
|
+
const newValue = reorder(
|
3263
|
+
arrayState.items,
|
3264
|
+
event.source.index,
|
3265
|
+
(_a = event.destination) == null ? void 0 : _a.index
|
3266
|
+
);
|
3267
|
+
setArrayState(__spreadProps(__spreadValues({}, arrayState), { items: newValue }), false);
|
3268
|
+
onChange(newValue.map(({ data }) => data));
|
3269
|
+
}
|
3270
|
+
},
|
3271
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(DroppableStrictMode_default, { droppableId: "array", children: (provided, snapshot) => {
|
3272
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
3273
|
+
"div",
|
3274
|
+
__spreadProps(__spreadValues({}, provided.droppableProps), {
|
3275
|
+
ref: provided.innerRef,
|
3276
|
+
className: getClassName6({
|
3277
|
+
isDraggingFrom: !!snapshot.draggingFromThisWith,
|
3278
|
+
hasItems: value.length > 0
|
3279
|
+
}),
|
3280
|
+
children: [
|
3281
|
+
Array.isArray(value) && value.length > 0 ? arrayState.items.map(({ _arrayId, data }, i) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
3282
|
+
Draggable2,
|
3283
|
+
{
|
3284
|
+
id: _arrayId,
|
3285
|
+
index: i,
|
3286
|
+
className: (_, snapshot2) => getClassNameItem({
|
3287
|
+
isExpanded: arrayState.openId === _arrayId,
|
3288
|
+
isDragging: snapshot2.isDragging
|
3289
|
+
}),
|
3290
|
+
children: () => /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
|
3291
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
3292
|
+
"div",
|
3293
|
+
{
|
3294
|
+
onClick: () => {
|
3295
|
+
if (arrayState.openId === _arrayId) {
|
3296
|
+
setArrayState({
|
3297
|
+
openId: ""
|
3298
|
+
});
|
3299
|
+
} else {
|
3300
|
+
setArrayState({
|
3301
|
+
openId: _arrayId
|
3302
|
+
});
|
3303
|
+
}
|
3304
|
+
},
|
3305
|
+
className: getClassNameItem("summary"),
|
3306
|
+
children: [
|
3307
|
+
field.getItemSummary ? field.getItemSummary(data, i) : `Item #${i}`,
|
3308
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: getClassNameItem("rhs"), children: [
|
3309
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: getClassNameItem("actions"), children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: getClassNameItem("action"), children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
3310
|
+
IconButton,
|
3311
|
+
{
|
3312
|
+
onClick: () => {
|
3313
|
+
const existingValue = [
|
3314
|
+
...value || []
|
3315
|
+
];
|
3316
|
+
const existingItems = [
|
3317
|
+
...arrayState.items || []
|
3318
|
+
];
|
3319
|
+
existingValue.splice(i, 1);
|
3320
|
+
existingItems.splice(i, 1);
|
3321
|
+
setArrayState(
|
3322
|
+
{ items: existingItems },
|
3323
|
+
true
|
3324
|
+
);
|
3325
|
+
onChange(existingValue);
|
3326
|
+
},
|
3327
|
+
title: "Delete",
|
3328
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(trash_default, { size: 16 })
|
3329
|
+
}
|
3330
|
+
) }) }),
|
3331
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(DragIcon, {}) })
|
3332
|
+
] })
|
3333
|
+
]
|
3334
|
+
}
|
3335
|
+
),
|
3336
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: getClassNameItem("body"), children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
3337
|
+
"fieldset",
|
3338
|
+
{
|
3339
|
+
className: getClassNameItem("fieldset"),
|
3340
|
+
children: Object.keys(field.arrayFields).map(
|
3341
|
+
(fieldName) => {
|
3342
|
+
const subField = field.arrayFields[fieldName];
|
3343
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
3344
|
+
InputOrGroup,
|
3345
|
+
{
|
3346
|
+
name: `${name}_${i}_${fieldName}`,
|
3347
|
+
label: subField.label || fieldName,
|
3348
|
+
field: subField,
|
3349
|
+
value: data[fieldName],
|
3350
|
+
onChange: (val) => onChange(
|
3351
|
+
replace(value, i, __spreadProps(__spreadValues({}, data), {
|
3352
|
+
[fieldName]: val
|
3353
|
+
}))
|
3354
|
+
)
|
3355
|
+
},
|
3356
|
+
`${name}_${i}_${fieldName}`
|
3357
|
+
);
|
3358
|
+
}
|
3359
|
+
)
|
3360
|
+
}
|
3361
|
+
) })
|
3362
|
+
] })
|
3363
|
+
},
|
3364
|
+
_arrayId
|
3365
|
+
)) : null,
|
3366
|
+
provided.placeholder,
|
3367
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
3368
|
+
"button",
|
3369
|
+
{
|
3370
|
+
className: getClassName6("addButton"),
|
3371
|
+
onClick: () => {
|
3372
|
+
const existingValue = value || [];
|
3373
|
+
onChange([...existingValue, field.defaultItemProps || {}]);
|
3374
|
+
},
|
3375
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(plus_default, { size: "21" })
|
3376
|
+
}
|
3377
|
+
)
|
3378
|
+
]
|
3379
|
+
})
|
3380
|
+
);
|
3381
|
+
} })
|
3382
|
+
}
|
3383
|
+
)
|
3384
|
+
] });
|
3385
|
+
};
|
3386
|
+
|
3387
|
+
// components/InputOrGroup/fields/DefaultField/index.tsx
|
3388
|
+
init_react_import();
|
3389
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
3390
|
+
var getClassName7 = get_class_name_factory_default("Input", styles_module_default3);
|
3391
|
+
var DefaultField = ({
|
3392
|
+
field,
|
3393
|
+
onChange,
|
3394
|
+
readOnly,
|
3395
|
+
value,
|
3396
|
+
name,
|
3397
|
+
label
|
3398
|
+
}) => {
|
3399
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("label", { className: getClassName7({ readOnly }), children: [
|
3400
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: getClassName7("label"), children: [
|
3401
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: getClassName7("labelIcon"), children: [
|
3402
|
+
field.type === "text" && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(type_default, { size: 16 }),
|
3403
|
+
field.type === "number" && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(hash_default, { size: 16 })
|
3404
|
+
] }),
|
3405
|
+
label || name
|
3406
|
+
] }),
|
3407
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
3408
|
+
"input",
|
3409
|
+
{
|
3410
|
+
className: getClassName7("input"),
|
3411
|
+
autoComplete: "off",
|
3412
|
+
type: field.type,
|
3413
|
+
name,
|
3414
|
+
value: typeof value === "undefined" ? "" : value,
|
3415
|
+
onChange: (e) => {
|
3416
|
+
if (field.type === "number") {
|
3417
|
+
onChange(Number(e.currentTarget.value));
|
3418
|
+
} else {
|
3419
|
+
onChange(e.currentTarget.value);
|
3420
|
+
}
|
3421
|
+
},
|
3422
|
+
readOnly
|
3423
|
+
}
|
3424
|
+
)
|
3425
|
+
] });
|
3426
|
+
};
|
3427
|
+
|
3428
|
+
// components/InputOrGroup/fields/ExternalField/index.tsx
|
3429
|
+
init_react_import();
|
3430
|
+
|
3431
|
+
// components/ExternalInput/index.tsx
|
3432
|
+
init_react_import();
|
3433
|
+
var import_react26 = require("react");
|
3434
|
+
|
3435
|
+
// css-module:/home/runner/work/puck/puck/packages/core/components/ExternalInput/styles.module.css#css-module
|
3436
|
+
init_react_import();
|
3437
|
+
var styles_module_default6 = { "ExternalInput": "_ExternalInput_l4bks_1", "ExternalInput-actions": "_ExternalInput-actions_l4bks_5", "ExternalInput-button": "_ExternalInput-button_l4bks_9", "ExternalInput-detachButton": "_ExternalInput-detachButton_l4bks_28", "ExternalInput--hasData": "_ExternalInput--hasData_l4bks_35", "ExternalInput-modal": "_ExternalInput-modal_l4bks_55", "ExternalInput--modalVisible": "_ExternalInput--modalVisible_l4bks_69", "ExternalInput-modalInner": "_ExternalInput-modalInner_l4bks_73", "ExternalInput-modalHeading": "_ExternalInput-modalHeading_l4bks_84", "ExternalInput-modalTableWrapper": "_ExternalInput-modalTableWrapper_l4bks_89" };
|
3438
|
+
|
3439
|
+
// components/ExternalInput/index.tsx
|
3440
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
3441
|
+
var getClassName8 = get_class_name_factory_default("ExternalInput", styles_module_default6);
|
3442
|
+
var ExternalInput = ({
|
3443
|
+
field,
|
3444
|
+
onChange,
|
3445
|
+
value = null
|
3446
|
+
}) => {
|
3447
|
+
const [data, setData] = (0, import_react26.useState)([]);
|
3448
|
+
const [isOpen, setOpen] = (0, import_react26.useState)(false);
|
3449
|
+
const [selectedData, setSelectedData] = (0, import_react26.useState)(value);
|
3450
|
+
const keys = (0, import_react26.useMemo)(() => {
|
3451
|
+
const validKeys = /* @__PURE__ */ new Set();
|
3452
|
+
for (const item of data) {
|
3453
|
+
for (const key of Object.keys(item)) {
|
3454
|
+
if (typeof item[key] === "string" || typeof item[key] === "number") {
|
3455
|
+
validKeys.add(key);
|
3456
|
+
}
|
3457
|
+
}
|
3212
3458
|
}
|
3213
|
-
return
|
3214
|
-
|
3215
|
-
|
3216
|
-
|
3459
|
+
return Array.from(validKeys);
|
3460
|
+
}, [data]);
|
3461
|
+
(0, import_react26.useEffect)(() => {
|
3462
|
+
(() => __async(void 0, null, function* () {
|
3463
|
+
if (field.adaptor) {
|
3464
|
+
const listData = yield field.adaptor.fetchList(field.adaptorParams);
|
3465
|
+
if (listData) {
|
3466
|
+
setData(listData);
|
3467
|
+
}
|
3468
|
+
}
|
3469
|
+
}))();
|
3470
|
+
}, [field.adaptor, field.adaptorParams]);
|
3471
|
+
if (!field.adaptor) {
|
3472
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { children: "Incorrectly configured" });
|
3217
3473
|
}
|
3218
|
-
|
3219
|
-
|
3220
|
-
|
3474
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
|
3475
|
+
"div",
|
3476
|
+
{
|
3477
|
+
className: getClassName8({
|
3478
|
+
hasData: !!selectedData,
|
3479
|
+
modalVisible: isOpen
|
3480
|
+
}),
|
3481
|
+
children: [
|
3482
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: getClassName8("actions"), children: [
|
3483
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
3484
|
+
"button",
|
3485
|
+
{
|
3486
|
+
onClick: () => setOpen(true),
|
3487
|
+
className: getClassName8("button"),
|
3488
|
+
children: selectedData ? field.getItemSummary ? field.getItemSummary(selectedData) : `${field.adaptor.name} item` : /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
|
3489
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(link_default, { size: "16" }),
|
3490
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("span", { children: [
|
3491
|
+
"Select from ",
|
3492
|
+
field.adaptor.name
|
3493
|
+
] })
|
3494
|
+
] })
|
3495
|
+
}
|
3496
|
+
),
|
3497
|
+
selectedData && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
3498
|
+
"button",
|
3499
|
+
{
|
3500
|
+
className: getClassName8("detachButton"),
|
3501
|
+
onClick: () => {
|
3502
|
+
setSelectedData(null);
|
3503
|
+
onChange(null);
|
3504
|
+
},
|
3505
|
+
children: "Detach"
|
3506
|
+
}
|
3507
|
+
)
|
3508
|
+
] }),
|
3509
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: getClassName8("modal"), onClick: () => setOpen(false), children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
|
3510
|
+
"div",
|
3511
|
+
{
|
3512
|
+
className: getClassName8("modalInner"),
|
3513
|
+
onClick: (e) => e.stopPropagation(),
|
3514
|
+
children: [
|
3515
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("h2", { className: getClassName8("modalHeading"), children: "Select content" }),
|
3516
|
+
data.length ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: getClassName8("modalTableWrapper"), children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("table", { children: [
|
3517
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("tr", { children: keys.map((key) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("th", { style: { textAlign: "left" }, children: key }, key)) }) }),
|
3518
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("tbody", { children: data.map((item, i) => {
|
3519
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
3520
|
+
"tr",
|
3521
|
+
{
|
3522
|
+
style: { whiteSpace: "nowrap" },
|
3523
|
+
onClick: (e) => {
|
3524
|
+
onChange(item);
|
3525
|
+
setOpen(false);
|
3526
|
+
setSelectedData(item);
|
3527
|
+
},
|
3528
|
+
children: keys.map((key) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("td", { children: item[key] }, key))
|
3529
|
+
},
|
3530
|
+
i
|
3531
|
+
);
|
3532
|
+
}) })
|
3533
|
+
] }) }) : /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { style: { padding: 24 }, children: "No content" })
|
3534
|
+
]
|
3535
|
+
}
|
3536
|
+
) })
|
3537
|
+
]
|
3221
3538
|
}
|
3222
|
-
|
3223
|
-
|
3224
|
-
|
3225
|
-
|
3226
|
-
|
3227
|
-
|
3228
|
-
|
3229
|
-
|
3230
|
-
|
3231
|
-
|
3232
|
-
|
3233
|
-
|
3234
|
-
|
3539
|
+
);
|
3540
|
+
};
|
3541
|
+
|
3542
|
+
// components/InputOrGroup/fields/ExternalField/index.tsx
|
3543
|
+
var import_jsx_runtime12 = require("react/jsx-runtime");
|
3544
|
+
var getClassName9 = get_class_name_factory_default("Input", styles_module_default3);
|
3545
|
+
var ExternalField = ({
|
3546
|
+
field,
|
3547
|
+
onChange,
|
3548
|
+
readOnly,
|
3549
|
+
value,
|
3550
|
+
name,
|
3551
|
+
label
|
3552
|
+
}) => {
|
3553
|
+
if (!field.adaptor) {
|
3554
|
+
return null;
|
3555
|
+
}
|
3556
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: getClassName9(""), children: [
|
3557
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: getClassName9("label"), children: name === "_data" ? "External content" : label || name }),
|
3558
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(ExternalInput, { field, onChange, value })
|
3559
|
+
] });
|
3560
|
+
};
|
3561
|
+
|
3562
|
+
// components/InputOrGroup/fields/RadioField/index.tsx
|
3563
|
+
init_react_import();
|
3564
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
3565
|
+
var getClassName10 = get_class_name_factory_default("Input", styles_module_default3);
|
3566
|
+
var RadioField = ({
|
3567
|
+
field,
|
3568
|
+
onChange,
|
3569
|
+
readOnly,
|
3570
|
+
value,
|
3571
|
+
name
|
3572
|
+
}) => {
|
3573
|
+
if (!field.options) {
|
3574
|
+
return null;
|
3575
|
+
}
|
3576
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: getClassName10(), children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: getClassName10("radioGroup"), children: [
|
3577
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: getClassName10("label"), children: [
|
3578
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: getClassName10("labelIcon"), children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(check_circle_default, { size: 16 }) }),
|
3579
|
+
field.label || name
|
3580
|
+
] }),
|
3581
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: getClassName10("radioGroupItems"), children: field.options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
|
3582
|
+
"label",
|
3583
|
+
{
|
3584
|
+
className: getClassName10("radio"),
|
3585
|
+
children: [
|
3586
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
3587
|
+
"input",
|
3588
|
+
{
|
3589
|
+
type: "radio",
|
3590
|
+
className: getClassName10("radioInput"),
|
3591
|
+
value: option.value,
|
3592
|
+
name,
|
3593
|
+
onChange: (e) => {
|
3594
|
+
if (e.currentTarget.value === "true" || e.currentTarget.value === "false") {
|
3595
|
+
onChange(JSON.parse(e.currentTarget.value));
|
3596
|
+
return;
|
3597
|
+
}
|
3598
|
+
onChange(e.currentTarget.value);
|
3599
|
+
},
|
3600
|
+
readOnly,
|
3601
|
+
defaultChecked: value === option.value
|
3235
3602
|
}
|
3236
|
-
|
3603
|
+
),
|
3604
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: getClassName10("radioInner"), children: option.label || option.value })
|
3605
|
+
]
|
3606
|
+
},
|
3607
|
+
option.label + option.value
|
3608
|
+
)) })
|
3609
|
+
] }) });
|
3610
|
+
};
|
3611
|
+
|
3612
|
+
// components/InputOrGroup/fields/SelectField/index.tsx
|
3613
|
+
init_react_import();
|
3614
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
3615
|
+
var getClassName11 = get_class_name_factory_default("Input", styles_module_default3);
|
3616
|
+
var SelectField = ({
|
3617
|
+
field,
|
3618
|
+
onChange,
|
3619
|
+
label,
|
3620
|
+
value,
|
3621
|
+
name
|
3622
|
+
}) => {
|
3623
|
+
if (!field.options) {
|
3624
|
+
return null;
|
3625
|
+
}
|
3626
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("label", { className: getClassName11(), children: [
|
3627
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: getClassName11("label"), children: [
|
3628
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: getClassName11("labelIcon"), children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(chevron_down_default, { size: 16 }) }),
|
3629
|
+
label || name
|
3630
|
+
] }),
|
3631
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
3632
|
+
"select",
|
3633
|
+
{
|
3634
|
+
className: getClassName11("input"),
|
3635
|
+
onChange: (e) => {
|
3636
|
+
if (e.currentTarget.value === "true" || e.currentTarget.value === "false") {
|
3637
|
+
onChange(Boolean(e.currentTarget.value));
|
3638
|
+
return;
|
3639
|
+
}
|
3640
|
+
onChange(e.currentTarget.value);
|
3641
|
+
},
|
3642
|
+
value,
|
3643
|
+
children: field.options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
3644
|
+
"option",
|
3645
|
+
{
|
3646
|
+
label: option.label,
|
3647
|
+
value: option.value
|
3237
3648
|
},
|
3238
|
-
value
|
3239
|
-
|
3240
|
-
|
3241
|
-
|
3242
|
-
|
3243
|
-
|
3244
|
-
|
3245
|
-
|
3246
|
-
|
3247
|
-
|
3248
|
-
|
3249
|
-
|
3649
|
+
option.label + option.value
|
3650
|
+
))
|
3651
|
+
}
|
3652
|
+
)
|
3653
|
+
] });
|
3654
|
+
};
|
3655
|
+
|
3656
|
+
// components/InputOrGroup/fields/TextareaField/index.tsx
|
3657
|
+
init_react_import();
|
3658
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
3659
|
+
var getClassName12 = get_class_name_factory_default("Input", styles_module_default3);
|
3660
|
+
var TextareaField = ({
|
3661
|
+
onChange,
|
3662
|
+
readOnly,
|
3663
|
+
value,
|
3664
|
+
name,
|
3665
|
+
label
|
3666
|
+
}) => {
|
3667
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("label", { className: getClassName12({ readOnly }), children: [
|
3668
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: getClassName12("label"), children: [
|
3669
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: getClassName12("labelIcon"), children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(type_default, { size: 16 }) }),
|
3670
|
+
label || name
|
3671
|
+
] }),
|
3672
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
3673
|
+
"textarea",
|
3674
|
+
{
|
3675
|
+
className: getClassName12("input"),
|
3676
|
+
autoComplete: "off",
|
3677
|
+
name,
|
3678
|
+
value: typeof value === "undefined" ? "" : value,
|
3679
|
+
onChange: (e) => onChange(e.currentTarget.value),
|
3680
|
+
readOnly,
|
3681
|
+
rows: 5
|
3682
|
+
}
|
3683
|
+
)
|
3684
|
+
] });
|
3685
|
+
};
|
3686
|
+
|
3687
|
+
// components/InputOrGroup/index.tsx
|
3688
|
+
var import_jsx_runtime16 = require("react/jsx-runtime");
|
3689
|
+
var getClassName13 = get_class_name_factory_default("Input", styles_module_default3);
|
3690
|
+
var FieldLabel = ({
|
3691
|
+
children,
|
3692
|
+
icon,
|
3693
|
+
label
|
3694
|
+
}) => {
|
3695
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("label", { children: [
|
3696
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: getClassName13("label"), children: [
|
3697
|
+
icon ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: getClassName13("labelIcon"), children: icon }) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_jsx_runtime16.Fragment, {}),
|
3698
|
+
label
|
3699
|
+
] }),
|
3700
|
+
children
|
3701
|
+
] });
|
3702
|
+
};
|
3703
|
+
var InputOrGroup = (props) => {
|
3704
|
+
const { name, field, value, onChange, readOnly } = props;
|
3705
|
+
if (field.type === "array") {
|
3706
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(ArrayField, __spreadValues({}, props));
|
3250
3707
|
}
|
3251
|
-
if (field.type === "
|
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
|
-
] });
|
3708
|
+
if (field.type === "external") {
|
3709
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(ExternalField, __spreadValues({}, props));
|
3710
|
+
}
|
3711
|
+
if (field.type === "select") {
|
3712
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(SelectField, __spreadValues({}, props));
|
3713
|
+
}
|
3714
|
+
if (field.type === "textarea") {
|
3715
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(TextareaField, __spreadValues({}, props));
|
3270
3716
|
}
|
3271
3717
|
if (field.type === "radio") {
|
3272
|
-
|
3273
|
-
return null;
|
3274
|
-
}
|
3275
|
-
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: getClassName6(), children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: getClassName6("radioGroup"), children: [
|
3276
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: getClassName6("label"), children: [
|
3277
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: getClassName6("labelIcon"), children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(check_circle_default, { size: 16 }) }),
|
3278
|
-
field.label || name
|
3279
|
-
] }),
|
3280
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: getClassName6("radioGroupItems"), children: field.options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
3281
|
-
"label",
|
3282
|
-
{
|
3283
|
-
className: getClassName6("radio"),
|
3284
|
-
children: [
|
3285
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
3286
|
-
"input",
|
3287
|
-
{
|
3288
|
-
type: "radio",
|
3289
|
-
className: getClassName6("radioInput"),
|
3290
|
-
value: option.value,
|
3291
|
-
name,
|
3292
|
-
onChange: (e) => {
|
3293
|
-
if (e.currentTarget.value === "true" || e.currentTarget.value === "false") {
|
3294
|
-
onChange(JSON.parse(e.currentTarget.value));
|
3295
|
-
return;
|
3296
|
-
}
|
3297
|
-
onChange(e.currentTarget.value);
|
3298
|
-
},
|
3299
|
-
readOnly,
|
3300
|
-
defaultChecked: value === option.value
|
3301
|
-
}
|
3302
|
-
),
|
3303
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: getClassName6("radioInner"), children: option.label || option.value })
|
3304
|
-
]
|
3305
|
-
},
|
3306
|
-
option.label + option.value
|
3307
|
-
)) })
|
3308
|
-
] }) });
|
3718
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(RadioField, __spreadValues({}, props));
|
3309
3719
|
}
|
3310
3720
|
if (field.type === "custom") {
|
3311
3721
|
if (!field.render) {
|
3312
3722
|
return null;
|
3313
3723
|
}
|
3314
|
-
return /* @__PURE__ */ (0,
|
3724
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: getClassName13(), children: field.render({
|
3315
3725
|
field,
|
3316
3726
|
name,
|
3317
3727
|
value,
|
@@ -3319,96 +3729,46 @@ var InputOrGroup = ({
|
|
3319
3729
|
readOnly
|
3320
3730
|
}) });
|
3321
3731
|
}
|
3322
|
-
return /* @__PURE__ */ (0,
|
3323
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: getClassName6("label"), children: [
|
3324
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: getClassName6("labelIcon"), children: [
|
3325
|
-
field.type === "text" && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(type_default, { size: 16 }),
|
3326
|
-
field.type === "number" && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(hash_default, { size: 16 })
|
3327
|
-
] }),
|
3328
|
-
label || name
|
3329
|
-
] }),
|
3330
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
3331
|
-
"input",
|
3332
|
-
{
|
3333
|
-
className: getClassName6("input"),
|
3334
|
-
autoComplete: "off",
|
3335
|
-
type: field.type,
|
3336
|
-
name,
|
3337
|
-
value: typeof value === "undefined" ? "" : value,
|
3338
|
-
onChange: (e) => {
|
3339
|
-
if (field.type === "number") {
|
3340
|
-
onChange(Number(e.currentTarget.value));
|
3341
|
-
} else {
|
3342
|
-
onChange(e.currentTarget.value);
|
3343
|
-
}
|
3344
|
-
},
|
3345
|
-
readOnly
|
3346
|
-
}
|
3347
|
-
)
|
3348
|
-
] });
|
3732
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(DefaultField, __spreadValues({}, props));
|
3349
3733
|
};
|
3350
3734
|
|
3351
3735
|
// components/ComponentList/index.tsx
|
3352
3736
|
init_react_import();
|
3353
|
-
var import_react_beautiful_dnd3 = require("react-beautiful-dnd");
|
3354
3737
|
|
3355
3738
|
// css-module:/home/runner/work/puck/puck/packages/core/components/ComponentList/styles.module.css#css-module
|
3356
3739
|
init_react_import();
|
3357
|
-
var
|
3740
|
+
var styles_module_default7 = { "ComponentList": "_ComponentList_bvy0z_1", "ComponentList-item": "_ComponentList-item_bvy0z_6", "ComponentList-itemIcon": "_ComponentList-itemIcon_bvy0z_24", "ComponentList--isDraggingFrom": "_ComponentList--isDraggingFrom_bvy0z_28" };
|
3358
3741
|
|
3359
3742
|
// components/ComponentList/index.tsx
|
3360
|
-
var
|
3361
|
-
var
|
3743
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
3744
|
+
var getClassName14 = get_class_name_factory_default("ComponentList", styles_module_default7);
|
3362
3745
|
var ComponentList = ({ config }) => {
|
3363
|
-
return /* @__PURE__ */ (0,
|
3746
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(DroppableStrictMode_default, { droppableId: "component-list", isDropDisabled: true, children: (provided, snapshot) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
3364
3747
|
"div",
|
3365
3748
|
__spreadProps(__spreadValues({}, provided.droppableProps), {
|
3366
3749
|
ref: provided.innerRef,
|
3367
|
-
className:
|
3750
|
+
className: getClassName14({
|
3751
|
+
isDraggingFrom: !!snapshot.draggingFromThisWith
|
3752
|
+
}),
|
3368
3753
|
children: [
|
3369
3754
|
Object.keys(config.components).map((componentKey, i) => {
|
3370
|
-
|
3371
|
-
|
3372
|
-
import_react_beautiful_dnd3.Draggable,
|
3755
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
3756
|
+
Draggable2,
|
3373
3757
|
{
|
3374
|
-
|
3758
|
+
id: componentKey,
|
3375
3759
|
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
|
-
}
|
3760
|
+
showShadow: true,
|
3761
|
+
disableAnimations: true,
|
3762
|
+
className: () => getClassName14("item"),
|
3763
|
+
children: () => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_jsx_runtime17.Fragment, { children: [
|
3764
|
+
componentKey,
|
3765
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: getClassName14("itemIcon"), children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(DragIcon, {}) })
|
3766
|
+
] })
|
3407
3767
|
},
|
3408
3768
|
componentKey
|
3409
3769
|
);
|
3410
3770
|
}),
|
3411
|
-
/* @__PURE__ */ (0,
|
3771
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { style: { display: "none" }, children: provided.placeholder })
|
3412
3772
|
]
|
3413
3773
|
})
|
3414
3774
|
) });
|
@@ -3416,10 +3776,10 @@ var ComponentList = ({ config }) => {
|
|
3416
3776
|
|
3417
3777
|
// lib/use-placeholder-style.ts
|
3418
3778
|
init_react_import();
|
3419
|
-
var
|
3779
|
+
var import_react27 = require("react");
|
3420
3780
|
var usePlaceholderStyle = () => {
|
3421
3781
|
const queryAttr = "data-rbd-drag-handle-draggable-id";
|
3422
|
-
const [placeholderStyle, setPlaceholderStyle] = (0,
|
3782
|
+
const [placeholderStyle, setPlaceholderStyle] = (0, import_react27.useState)();
|
3423
3783
|
const onDragStartOrUpdate = (draggedItem) => {
|
3424
3784
|
var _a;
|
3425
3785
|
const draggableId = draggedItem.draggableId;
|
@@ -3467,24 +3827,24 @@ init_react_import();
|
|
3467
3827
|
|
3468
3828
|
// css-module:/home/runner/work/puck/puck/packages/core/components/SidebarSection/styles.module.css#css-module
|
3469
3829
|
init_react_import();
|
3470
|
-
var
|
3830
|
+
var styles_module_default8 = { "SidebarSection": "_SidebarSection_f1p35_1", "SidebarSection-title": "_SidebarSection-title_f1p35_12", "SidebarSection-content": "_SidebarSection-content_f1p35_19", "SidebarSection--noPadding": "_SidebarSection--noPadding_f1p35_24", "SidebarSection-breadcrumbLabel": "_SidebarSection-breadcrumbLabel_f1p35_33", "SidebarSection-breadcrumbs": "_SidebarSection-breadcrumbs_f1p35_44", "SidebarSection-breadcrumb": "_SidebarSection-breadcrumb_f1p35_33", "SidebarSection-heading": "_SidebarSection-heading_f1p35_56" };
|
3471
3831
|
|
3472
3832
|
// components/Heading/index.tsx
|
3473
3833
|
init_react_import();
|
3474
3834
|
|
3475
3835
|
// css-module:/home/runner/work/puck/puck/packages/core/components/Heading/styles.module.css#css-module
|
3476
3836
|
init_react_import();
|
3477
|
-
var
|
3837
|
+
var styles_module_default9 = { "Heading": "_Heading_1bvy5_1", "Heading--xxxxl": "_Heading--xxxxl_1bvy5_13", "Heading--xxxl": "_Heading--xxxl_1bvy5_19", "Heading--xxl": "_Heading--xxl_1bvy5_23", "Heading--xl": "_Heading--xl_1bvy5_27", "Heading--l": "_Heading--l_1bvy5_31", "Heading--m": "_Heading--m_1bvy5_35", "Heading--s": "_Heading--s_1bvy5_39", "Heading--xs": "_Heading--xs_1bvy5_43" };
|
3478
3838
|
|
3479
3839
|
// components/Heading/index.tsx
|
3480
|
-
var
|
3481
|
-
var
|
3840
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
3841
|
+
var getClassName15 = get_class_name_factory_default("Heading", styles_module_default9);
|
3482
3842
|
var Heading = ({ children, rank, size = "m" }) => {
|
3483
3843
|
const Tag = rank ? `h${rank}` : "span";
|
3484
|
-
return /* @__PURE__ */ (0,
|
3844
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
3485
3845
|
Tag,
|
3486
3846
|
{
|
3487
|
-
className:
|
3847
|
+
className: getClassName15({
|
3488
3848
|
[size]: true
|
3489
3849
|
}),
|
3490
3850
|
children
|
@@ -3493,8 +3853,8 @@ var Heading = ({ children, rank, size = "m" }) => {
|
|
3493
3853
|
};
|
3494
3854
|
|
3495
3855
|
// components/SidebarSection/index.tsx
|
3496
|
-
var
|
3497
|
-
var
|
3856
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
3857
|
+
var getClassName16 = get_class_name_factory_default("SidebarSection", styles_module_default8);
|
3498
3858
|
var SidebarSection = ({
|
3499
3859
|
children,
|
3500
3860
|
title,
|
@@ -3503,26 +3863,125 @@ var SidebarSection = ({
|
|
3503
3863
|
breadcrumbClick,
|
3504
3864
|
noPadding
|
3505
3865
|
}) => {
|
3506
|
-
return /* @__PURE__ */ (0,
|
3507
|
-
/* @__PURE__ */ (0,
|
3508
|
-
breadcrumbs.map((breadcrumb, i) => /* @__PURE__ */ (0,
|
3509
|
-
/* @__PURE__ */ (0,
|
3866
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: getClassName16({ noPadding }), style: { background }, children: [
|
3867
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: getClassName16("title"), children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: getClassName16("breadcrumbs"), children: [
|
3868
|
+
breadcrumbs.map((breadcrumb, i) => /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: getClassName16("breadcrumb"), children: [
|
3869
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
3510
3870
|
"div",
|
3511
3871
|
{
|
3512
|
-
className:
|
3872
|
+
className: getClassName16("breadcrumbLabel"),
|
3513
3873
|
onClick: () => breadcrumbClick && breadcrumbClick(breadcrumb),
|
3514
3874
|
children: breadcrumb.label
|
3515
3875
|
}
|
3516
3876
|
),
|
3517
|
-
/* @__PURE__ */ (0,
|
3877
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(chevron_right_default, { size: 16 })
|
3518
3878
|
] }, i)),
|
3519
|
-
/* @__PURE__ */ (0,
|
3879
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: getClassName16("heading"), children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Heading, { rank: 2, size: "xs", children: title }) })
|
3520
3880
|
] }) }),
|
3521
|
-
/* @__PURE__ */ (0,
|
3881
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: getClassName16("content"), children })
|
3522
3882
|
] });
|
3523
3883
|
};
|
3524
3884
|
|
3525
|
-
//
|
3885
|
+
// reducer/index.ts
|
3886
|
+
init_react_import();
|
3887
|
+
|
3888
|
+
// lib/use-puck-history.ts
|
3889
|
+
init_react_import();
|
3890
|
+
var import_react29 = require("react");
|
3891
|
+
|
3892
|
+
// lib/use-action-history.ts
|
3893
|
+
init_react_import();
|
3894
|
+
var import_react28 = require("react");
|
3895
|
+
var EMPTY_HISTORY_INDEX = -1;
|
3896
|
+
function useActionHistory() {
|
3897
|
+
const [histories, setHistories] = (0, import_react28.useState)([]);
|
3898
|
+
const [currentHistoryIndex, setCurrentHistoryIndex] = (0, import_react28.useState)(EMPTY_HISTORY_INDEX);
|
3899
|
+
const currentHistory = histories[currentHistoryIndex];
|
3900
|
+
const canRewind = currentHistoryIndex > EMPTY_HISTORY_INDEX;
|
3901
|
+
const canForward = currentHistoryIndex < histories.length - 1;
|
3902
|
+
const record = (params) => {
|
3903
|
+
const history = __spreadValues({
|
3904
|
+
id: Math.random().toString()
|
3905
|
+
}, params);
|
3906
|
+
setHistories((prev) => [
|
3907
|
+
...prev.slice(0, currentHistoryIndex + 1),
|
3908
|
+
history
|
3909
|
+
]);
|
3910
|
+
setCurrentHistoryIndex((prev) => prev + 1);
|
3911
|
+
};
|
3912
|
+
const rewind = () => {
|
3913
|
+
if (canRewind) {
|
3914
|
+
currentHistory.rewind();
|
3915
|
+
setCurrentHistoryIndex((prev) => prev - 1);
|
3916
|
+
}
|
3917
|
+
};
|
3918
|
+
const forward = () => {
|
3919
|
+
const forwardHistory = histories[currentHistoryIndex + 1];
|
3920
|
+
if (canForward && forwardHistory) {
|
3921
|
+
forwardHistory.forward();
|
3922
|
+
setCurrentHistoryIndex((prev) => prev + 1);
|
3923
|
+
}
|
3924
|
+
};
|
3925
|
+
return {
|
3926
|
+
currentHistory,
|
3927
|
+
canRewind,
|
3928
|
+
canForward,
|
3929
|
+
record,
|
3930
|
+
rewind,
|
3931
|
+
forward
|
3932
|
+
};
|
3933
|
+
}
|
3934
|
+
|
3935
|
+
// lib/use-puck-history.ts
|
3936
|
+
var import_react_hotkeys_hook = require("react-hotkeys-hook");
|
3937
|
+
var import_event_emitter = __toESM(require("event-emitter"));
|
3938
|
+
var import_use_debounce2 = require("use-debounce");
|
3939
|
+
var DEBOUNCE_TIME = 250;
|
3940
|
+
var RECORD_DIFF = "RECORD_DIFF";
|
3941
|
+
var historyEmitter = (0, import_event_emitter.default)();
|
3942
|
+
var recordDiff = (newAppData) => historyEmitter.emit(RECORD_DIFF, newAppData);
|
3943
|
+
var _recordHistory = ({ snapshot, newSnapshot, record, dispatch }) => {
|
3944
|
+
record({
|
3945
|
+
forward: () => {
|
3946
|
+
dispatch({ type: "set", appData: newSnapshot });
|
3947
|
+
},
|
3948
|
+
rewind: () => {
|
3949
|
+
dispatch({ type: "set", appData: snapshot });
|
3950
|
+
}
|
3951
|
+
});
|
3952
|
+
};
|
3953
|
+
function usePuckHistory({
|
3954
|
+
appData,
|
3955
|
+
dispatch
|
3956
|
+
}) {
|
3957
|
+
const { canForward, canRewind, rewind, forward, record } = useActionHistory();
|
3958
|
+
(0, import_react_hotkeys_hook.useHotkeys)("meta+z", rewind, { preventDefault: true });
|
3959
|
+
(0, import_react_hotkeys_hook.useHotkeys)("meta+shift+z", forward, { preventDefault: true });
|
3960
|
+
(0, import_react_hotkeys_hook.useHotkeys)("meta+y", forward, { preventDefault: true });
|
3961
|
+
const [snapshot] = (0, import_use_debounce2.useDebounce)(appData, DEBOUNCE_TIME);
|
3962
|
+
const handleRecordDiff = (0, import_use_debounce2.useDebouncedCallback)((newAppData) => {
|
3963
|
+
return _recordHistory({
|
3964
|
+
snapshot,
|
3965
|
+
newSnapshot: newAppData,
|
3966
|
+
record,
|
3967
|
+
dispatch
|
3968
|
+
});
|
3969
|
+
}, DEBOUNCE_TIME);
|
3970
|
+
(0, import_react29.useEffect)(() => {
|
3971
|
+
historyEmitter.on(RECORD_DIFF, handleRecordDiff);
|
3972
|
+
return () => {
|
3973
|
+
historyEmitter.off(RECORD_DIFF, handleRecordDiff);
|
3974
|
+
};
|
3975
|
+
}, [handleRecordDiff]);
|
3976
|
+
return {
|
3977
|
+
canForward,
|
3978
|
+
canRewind,
|
3979
|
+
rewind,
|
3980
|
+
forward
|
3981
|
+
};
|
3982
|
+
}
|
3983
|
+
|
3984
|
+
// reducer/data.ts
|
3526
3985
|
init_react_import();
|
3527
3986
|
|
3528
3987
|
// lib/insert.ts
|
@@ -3543,13 +4002,6 @@ var remove = (list, index) => {
|
|
3543
4002
|
|
3544
4003
|
// lib/reduce-related-zones.ts
|
3545
4004
|
init_react_import();
|
3546
|
-
|
3547
|
-
// lib/generate-id.ts
|
3548
|
-
init_react_import();
|
3549
|
-
var import_crypto = require("crypto");
|
3550
|
-
var generateId = (type) => `${type}-${(0, import_crypto.randomBytes)(20).toString("hex")}`;
|
3551
|
-
|
3552
|
-
// lib/reduce-related-zones.ts
|
3553
4005
|
var reduceRelatedZones = (item, data, fn) => {
|
3554
4006
|
return __spreadProps(__spreadValues({}, data), {
|
3555
4007
|
zones: Object.keys(data.zones || {}).reduce(
|
@@ -3612,125 +4064,12 @@ var duplicateRelatedZones = (item, data, newId) => {
|
|
3612
4064
|
});
|
3613
4065
|
};
|
3614
4066
|
|
3615
|
-
//
|
3616
|
-
init_react_import();
|
3617
|
-
var import_react26 = require("react");
|
3618
|
-
|
3619
|
-
// lib/use-action-history.ts
|
3620
|
-
init_react_import();
|
3621
|
-
var import_react25 = require("react");
|
3622
|
-
var EMPTY_HISTORY_INDEX = -1;
|
3623
|
-
function useActionHistory() {
|
3624
|
-
const [histories, setHistories] = (0, import_react25.useState)([]);
|
3625
|
-
const [currentHistoryIndex, setCurrentHistoryIndex] = (0, import_react25.useState)(EMPTY_HISTORY_INDEX);
|
3626
|
-
const currentHistory = histories[currentHistoryIndex];
|
3627
|
-
const canRewind = currentHistoryIndex > EMPTY_HISTORY_INDEX;
|
3628
|
-
const canForward = currentHistoryIndex < histories.length - 1;
|
3629
|
-
const record = (params) => {
|
3630
|
-
const history = __spreadValues({
|
3631
|
-
id: Math.random().toString()
|
3632
|
-
}, params);
|
3633
|
-
setHistories((prev) => [
|
3634
|
-
...prev.slice(0, currentHistoryIndex + 1),
|
3635
|
-
history
|
3636
|
-
]);
|
3637
|
-
setCurrentHistoryIndex((prev) => prev + 1);
|
3638
|
-
};
|
3639
|
-
const rewind = () => {
|
3640
|
-
if (canRewind) {
|
3641
|
-
currentHistory.rewind();
|
3642
|
-
setCurrentHistoryIndex((prev) => prev - 1);
|
3643
|
-
}
|
3644
|
-
};
|
3645
|
-
const forward = () => {
|
3646
|
-
const forwardHistory = histories[currentHistoryIndex + 1];
|
3647
|
-
if (canForward && forwardHistory) {
|
3648
|
-
forwardHistory.forward();
|
3649
|
-
setCurrentHistoryIndex((prev) => prev + 1);
|
3650
|
-
}
|
3651
|
-
};
|
3652
|
-
return {
|
3653
|
-
currentHistory,
|
3654
|
-
canRewind,
|
3655
|
-
canForward,
|
3656
|
-
record,
|
3657
|
-
rewind,
|
3658
|
-
forward
|
3659
|
-
};
|
3660
|
-
}
|
3661
|
-
|
3662
|
-
// lib/use-puck-history.ts
|
3663
|
-
var import_react_hotkeys_hook = require("react-hotkeys-hook");
|
3664
|
-
var import_event_emitter = __toESM(require("event-emitter"));
|
3665
|
-
var import_use_debounce2 = require("use-debounce");
|
3666
|
-
var import_deep_diff = require("deep-diff");
|
3667
|
-
var DEBOUNCE_TIME = 250;
|
3668
|
-
var RECORD_DIFF = "RECORD_DIFF";
|
3669
|
-
var historyEmitter = (0, import_event_emitter.default)();
|
3670
|
-
var recordDiff = (newData) => historyEmitter.emit(RECORD_DIFF, newData);
|
3671
|
-
function usePuckHistory({
|
3672
|
-
data,
|
3673
|
-
dispatch
|
3674
|
-
}) {
|
3675
|
-
const { canForward, canRewind, rewind, forward, record } = useActionHistory();
|
3676
|
-
(0, import_react_hotkeys_hook.useHotkeys)("meta+z", rewind, { preventDefault: true });
|
3677
|
-
(0, import_react_hotkeys_hook.useHotkeys)("meta+shift+z", forward, { preventDefault: true });
|
3678
|
-
(0, import_react_hotkeys_hook.useHotkeys)("meta+y", forward, { preventDefault: true });
|
3679
|
-
const [snapshot] = (0, import_use_debounce2.useDebounce)(data, DEBOUNCE_TIME);
|
3680
|
-
const handleRecordDiff = (0, import_use_debounce2.useDebouncedCallback)((newData) => {
|
3681
|
-
const _diff = (0, import_deep_diff.diff)(snapshot, newData);
|
3682
|
-
if (!_diff) {
|
3683
|
-
return;
|
3684
|
-
}
|
3685
|
-
record({
|
3686
|
-
forward: () => {
|
3687
|
-
const target = structuredClone(data);
|
3688
|
-
_diff.reduce((target2, change) => {
|
3689
|
-
(0, import_deep_diff.applyChange)(target2, true, change);
|
3690
|
-
return target2;
|
3691
|
-
}, target);
|
3692
|
-
dispatch({ type: "set", data: target });
|
3693
|
-
},
|
3694
|
-
rewind: () => {
|
3695
|
-
const target = structuredClone(data);
|
3696
|
-
_diff.reduce((target2, change) => {
|
3697
|
-
(0, import_deep_diff.revertChange)(target2, true, change);
|
3698
|
-
return target2;
|
3699
|
-
}, target);
|
3700
|
-
dispatch({ type: "set", data: target });
|
3701
|
-
}
|
3702
|
-
});
|
3703
|
-
}, DEBOUNCE_TIME);
|
3704
|
-
(0, import_react26.useEffect)(() => {
|
3705
|
-
historyEmitter.on(RECORD_DIFF, handleRecordDiff);
|
3706
|
-
return () => {
|
3707
|
-
historyEmitter.off(RECORD_DIFF, handleRecordDiff);
|
3708
|
-
};
|
3709
|
-
}, [handleRecordDiff]);
|
3710
|
-
return {
|
3711
|
-
canForward,
|
3712
|
-
canRewind,
|
3713
|
-
rewind,
|
3714
|
-
forward,
|
3715
|
-
record
|
3716
|
-
};
|
3717
|
-
}
|
3718
|
-
|
3719
|
-
// lib/reducer.ts
|
4067
|
+
// reducer/data.ts
|
3720
4068
|
var zoneCache = {};
|
3721
4069
|
var addToZoneCache = (key, data) => {
|
3722
4070
|
zoneCache[key] = data;
|
3723
4071
|
};
|
3724
|
-
var
|
3725
|
-
return (data, action) => {
|
3726
|
-
const newData = reducer(data, action);
|
3727
|
-
if (!["registerZone", "unregisterZone", "set"].includes(action.type)) {
|
3728
|
-
recordDiff(newData);
|
3729
|
-
}
|
3730
|
-
return newData;
|
3731
|
-
};
|
3732
|
-
};
|
3733
|
-
var createReducer = ({ config }) => storeInterceptor((data, action) => {
|
4072
|
+
var reduceData = (data, action, config) => {
|
3734
4073
|
if (action.type === "insert") {
|
3735
4074
|
const emptyComponentData = {
|
3736
4075
|
type: action.componentType,
|
@@ -3910,10 +4249,48 @@ var createReducer = ({ config }) => storeInterceptor((data, action) => {
|
|
3910
4249
|
}
|
3911
4250
|
return __spreadProps(__spreadValues({}, data), { zones: _zones });
|
3912
4251
|
}
|
3913
|
-
if (action.type === "
|
4252
|
+
if (action.type === "setData") {
|
3914
4253
|
return __spreadValues(__spreadValues({}, data), action.data);
|
3915
4254
|
}
|
3916
4255
|
return data;
|
4256
|
+
};
|
4257
|
+
|
4258
|
+
// reducer/state.ts
|
4259
|
+
init_react_import();
|
4260
|
+
var reduceState = (state, action) => {
|
4261
|
+
if (action.type === "setState") {
|
4262
|
+
return __spreadValues(__spreadValues({}, state), action.state);
|
4263
|
+
}
|
4264
|
+
return state;
|
4265
|
+
};
|
4266
|
+
|
4267
|
+
// reducer/actions.tsx
|
4268
|
+
init_react_import();
|
4269
|
+
|
4270
|
+
// reducer/index.ts
|
4271
|
+
var storeInterceptor = (reducer) => {
|
4272
|
+
return (appData, action) => {
|
4273
|
+
const newAppData = reducer(appData, action);
|
4274
|
+
const isValidType = ![
|
4275
|
+
"registerZone",
|
4276
|
+
"unregisterZone",
|
4277
|
+
"setData",
|
4278
|
+
"setState",
|
4279
|
+
"set"
|
4280
|
+
].includes(action.type);
|
4281
|
+
if (typeof action.recordHistory !== "undefined" ? action.recordHistory : isValidType) {
|
4282
|
+
recordDiff(newAppData);
|
4283
|
+
}
|
4284
|
+
return newAppData;
|
4285
|
+
};
|
4286
|
+
};
|
4287
|
+
var createReducer = ({ config }) => storeInterceptor((appData, action) => {
|
4288
|
+
const data = reduceData(appData.data, action, config);
|
4289
|
+
const state = reduceState(appData.state, action);
|
4290
|
+
if (action.type === "set") {
|
4291
|
+
return __spreadValues(__spreadValues({}, appData), action.appData);
|
4292
|
+
}
|
4293
|
+
return { data, state };
|
3917
4294
|
});
|
3918
4295
|
|
3919
4296
|
// components/LayerTree/index.tsx
|
@@ -3921,7 +4298,7 @@ init_react_import();
|
|
3921
4298
|
|
3922
4299
|
// css-module:/home/runner/work/puck/puck/packages/core/components/LayerTree/styles.module.css#css-module
|
3923
4300
|
init_react_import();
|
3924
|
-
var
|
4301
|
+
var styles_module_default10 = { "LayerTree": "_LayerTree_1dcmd_1", "LayerTree-zoneTitle": "_LayerTree-zoneTitle_1dcmd_11", "LayerTree-helper": "_LayerTree-helper_1dcmd_17", "Layer": "_Layer_1dcmd_1", "Layer-inner": "_Layer-inner_1dcmd_29", "Layer--containsZone": "_Layer--containsZone_1dcmd_35", "Layer-clickable": "_Layer-clickable_1dcmd_39", "Layer--isSelected": "_Layer--isSelected_1dcmd_48", "Layer--isHovering": "_Layer--isHovering_1dcmd_49", "Layer-chevron": "_Layer-chevron_1dcmd_65", "Layer--childIsSelected": "_Layer--childIsSelected_1dcmd_66", "Layer-zones": "_Layer-zones_1dcmd_70", "Layer-title": "_Layer-title_1dcmd_84", "Layer-icon": "_Layer-icon_1dcmd_92", "Layer-zoneIcon": "_Layer-zoneIcon_1dcmd_97" };
|
3925
4302
|
|
3926
4303
|
// lib/scroll-into-view.ts
|
3927
4304
|
init_react_import();
|
@@ -3935,7 +4312,7 @@ var scrollIntoView = (el) => {
|
|
3935
4312
|
};
|
3936
4313
|
|
3937
4314
|
// components/LayerTree/index.tsx
|
3938
|
-
var
|
4315
|
+
var import_react30 = require("react");
|
3939
4316
|
|
3940
4317
|
// lib/find-zones-for-area.ts
|
3941
4318
|
init_react_import();
|
@@ -3964,9 +4341,9 @@ var isChildOfZone = (item, maybeChild, ctx) => {
|
|
3964
4341
|
};
|
3965
4342
|
|
3966
4343
|
// components/LayerTree/index.tsx
|
3967
|
-
var
|
3968
|
-
var
|
3969
|
-
var getClassNameLayer = get_class_name_factory_default("Layer",
|
4344
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
4345
|
+
var getClassName17 = get_class_name_factory_default("LayerTree", styles_module_default10);
|
4346
|
+
var getClassNameLayer = get_class_name_factory_default("Layer", styles_module_default10);
|
3970
4347
|
var LayerTree = ({
|
3971
4348
|
data,
|
3972
4349
|
zoneContent,
|
@@ -3976,15 +4353,15 @@ var LayerTree = ({
|
|
3976
4353
|
label
|
3977
4354
|
}) => {
|
3978
4355
|
const zones = data.zones || {};
|
3979
|
-
const ctx = (0,
|
3980
|
-
return /* @__PURE__ */ (0,
|
3981
|
-
label && /* @__PURE__ */ (0,
|
3982
|
-
/* @__PURE__ */ (0,
|
4356
|
+
const ctx = (0, import_react30.useContext)(dropZoneContext);
|
4357
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_jsx_runtime20.Fragment, { children: [
|
4358
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: getClassName17("zoneTitle"), children: [
|
4359
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: getClassName17("zoneIcon"), children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(layers_default, { size: "16" }) }),
|
3983
4360
|
" ",
|
3984
4361
|
label
|
3985
4362
|
] }),
|
3986
|
-
/* @__PURE__ */ (0,
|
3987
|
-
zoneContent.length === 0 && /* @__PURE__ */ (0,
|
4363
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("ul", { className: getClassName17(), children: [
|
4364
|
+
zoneContent.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: getClassName17("helper"), children: "No items" }),
|
3988
4365
|
zoneContent.map((item, i) => {
|
3989
4366
|
const isSelected = (itemSelector == null ? void 0 : itemSelector.index) === i && (itemSelector.zone === zone || itemSelector.zone === rootDroppableId && !zone);
|
3990
4367
|
const zonesForItem = findZonesForArea(data, item.props.id);
|
@@ -3999,7 +4376,7 @@ var LayerTree = ({
|
|
3999
4376
|
const selectedItem = itemSelector && data ? getItem(itemSelector, data) : null;
|
4000
4377
|
const isHovering = hoveringComponent === item.props.id;
|
4001
4378
|
const childIsSelected = isChildOfZone(item, selectedItem, ctx);
|
4002
|
-
return /* @__PURE__ */ (0,
|
4379
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
4003
4380
|
"li",
|
4004
4381
|
{
|
4005
4382
|
className: getClassNameLayer({
|
@@ -4009,7 +4386,7 @@ var LayerTree = ({
|
|
4009
4386
|
childIsSelected
|
4010
4387
|
}),
|
4011
4388
|
children: [
|
4012
|
-
/* @__PURE__ */ (0,
|
4389
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: getClassNameLayer("inner"), children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
4013
4390
|
"div",
|
4014
4391
|
{
|
4015
4392
|
className: getClassNameLayer("clickable"),
|
@@ -4040,22 +4417,22 @@ var LayerTree = ({
|
|
4040
4417
|
setHoveringComponent(null);
|
4041
4418
|
},
|
4042
4419
|
children: [
|
4043
|
-
containsZone && /* @__PURE__ */ (0,
|
4420
|
+
containsZone && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
4044
4421
|
"div",
|
4045
4422
|
{
|
4046
4423
|
className: getClassNameLayer("chevron"),
|
4047
4424
|
title: isSelected ? "Collapse" : "Expand",
|
4048
|
-
children: /* @__PURE__ */ (0,
|
4425
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(chevron_down_default, { size: "12" })
|
4049
4426
|
}
|
4050
4427
|
),
|
4051
|
-
/* @__PURE__ */ (0,
|
4052
|
-
/* @__PURE__ */ (0,
|
4428
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: getClassNameLayer("title"), children: [
|
4429
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: getClassNameLayer("icon"), children: item.type === "Text" || item.type === "Heading" ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(type_default, { size: "16" }) : /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(grid_default, { size: "16" }) }),
|
4053
4430
|
item.type
|
4054
4431
|
] })
|
4055
4432
|
]
|
4056
4433
|
}
|
4057
4434
|
) }),
|
4058
|
-
containsZone && Object.keys(zonesForItem).map((zoneKey, idx) => /* @__PURE__ */ (0,
|
4435
|
+
containsZone && Object.keys(zonesForItem).map((zoneKey, idx) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: getClassNameLayer("zones"), children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
4059
4436
|
LayerTree,
|
4060
4437
|
{
|
4061
4438
|
data,
|
@@ -4084,21 +4461,23 @@ var areaContainsZones = (data, area) => {
|
|
4084
4461
|
|
4085
4462
|
// lib/flush-zones.ts
|
4086
4463
|
init_react_import();
|
4087
|
-
var flushZones = (
|
4088
|
-
const containsZones = typeof data.zones !== "undefined";
|
4464
|
+
var flushZones = (appData) => {
|
4465
|
+
const containsZones = typeof appData.data.zones !== "undefined";
|
4089
4466
|
if (containsZones) {
|
4090
|
-
Object.keys(data.zones || {}).forEach((zone) => {
|
4091
|
-
addToZoneCache(zone, data.zones[zone]);
|
4467
|
+
Object.keys(appData.data.zones || {}).forEach((zone) => {
|
4468
|
+
addToZoneCache(zone, appData.data.zones[zone]);
|
4092
4469
|
});
|
4093
|
-
return __spreadProps(__spreadValues({},
|
4094
|
-
|
4470
|
+
return __spreadProps(__spreadValues({}, appData), {
|
4471
|
+
data: __spreadProps(__spreadValues({}, appData.data), {
|
4472
|
+
zones: {}
|
4473
|
+
})
|
4095
4474
|
});
|
4096
4475
|
}
|
4097
|
-
return
|
4476
|
+
return appData;
|
4098
4477
|
};
|
4099
4478
|
|
4100
4479
|
// components/Puck/index.tsx
|
4101
|
-
var
|
4480
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
4102
4481
|
var defaultPageFields = {
|
4103
4482
|
title: { type: "text" }
|
4104
4483
|
};
|
@@ -4109,7 +4488,7 @@ var PluginRenderer = ({
|
|
4109
4488
|
renderMethod
|
4110
4489
|
}) => {
|
4111
4490
|
return plugins.filter((item) => item[renderMethod]).map((item) => item[renderMethod]).reduce(
|
4112
|
-
(accChildren, Item) => /* @__PURE__ */ (0,
|
4491
|
+
(accChildren, Item) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Item, { data, children: accChildren }),
|
4113
4492
|
children
|
4114
4493
|
);
|
4115
4494
|
};
|
@@ -4125,21 +4504,38 @@ function Puck({
|
|
4125
4504
|
headerPath
|
4126
4505
|
}) {
|
4127
4506
|
var _a, _b;
|
4128
|
-
const [reducer] = (0,
|
4129
|
-
const
|
4507
|
+
const [reducer] = (0, import_react31.useState)(() => createReducer({ config }));
|
4508
|
+
const initialAppData = {
|
4509
|
+
data: initialData,
|
4510
|
+
state: {
|
4511
|
+
leftSideBarVisible: true,
|
4512
|
+
arrayState: {}
|
4513
|
+
}
|
4514
|
+
};
|
4515
|
+
const [appData, dispatch] = (0, import_react31.useReducer)(
|
4130
4516
|
reducer,
|
4131
|
-
flushZones(
|
4517
|
+
flushZones(initialAppData)
|
4132
4518
|
);
|
4519
|
+
const { data, state } = appData;
|
4133
4520
|
const { canForward, canRewind, rewind, forward } = usePuckHistory({
|
4134
|
-
|
4521
|
+
appData,
|
4135
4522
|
dispatch
|
4136
4523
|
});
|
4137
|
-
const
|
4524
|
+
const { itemSelector, leftSideBarVisible } = state;
|
4525
|
+
const setItemSelector = (0, import_react31.useCallback)(
|
4526
|
+
(newItemSelector) => {
|
4527
|
+
dispatch({
|
4528
|
+
type: "setState",
|
4529
|
+
state: { itemSelector: newItemSelector }
|
4530
|
+
});
|
4531
|
+
},
|
4532
|
+
[]
|
4533
|
+
);
|
4138
4534
|
const selectedItem = itemSelector ? getItem(itemSelector, data) : null;
|
4139
|
-
const Page = (0,
|
4535
|
+
const Page = (0, import_react31.useCallback)(
|
4140
4536
|
(pageProps) => {
|
4141
4537
|
var _a2, _b2;
|
4142
|
-
return /* @__PURE__ */ (0,
|
4538
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
4143
4539
|
PluginRenderer,
|
4144
4540
|
{
|
4145
4541
|
plugins,
|
@@ -4151,8 +4547,8 @@ function Puck({
|
|
4151
4547
|
},
|
4152
4548
|
[config.root]
|
4153
4549
|
);
|
4154
|
-
const PageFieldWrapper = (0,
|
4155
|
-
(props) => /* @__PURE__ */ (0,
|
4550
|
+
const PageFieldWrapper = (0, import_react31.useCallback)(
|
4551
|
+
(props) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
4156
4552
|
PluginRenderer,
|
4157
4553
|
{
|
4158
4554
|
plugins,
|
@@ -4163,8 +4559,8 @@ function Puck({
|
|
4163
4559
|
),
|
4164
4560
|
[]
|
4165
4561
|
);
|
4166
|
-
const ComponentFieldWrapper = (0,
|
4167
|
-
(props) => /* @__PURE__ */ (0,
|
4562
|
+
const ComponentFieldWrapper = (0, import_react31.useCallback)(
|
4563
|
+
(props) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
4168
4564
|
PluginRenderer,
|
4169
4565
|
{
|
4170
4566
|
plugins,
|
@@ -4178,15 +4574,14 @@ function Puck({
|
|
4178
4574
|
const FieldWrapper = itemSelector ? ComponentFieldWrapper : PageFieldWrapper;
|
4179
4575
|
const rootFields = ((_a = config.root) == null ? void 0 : _a.fields) || defaultPageFields;
|
4180
4576
|
let fields = selectedItem ? ((_b = config.components[selectedItem.type]) == null ? void 0 : _b.fields) || {} : rootFields;
|
4181
|
-
(0,
|
4577
|
+
(0, import_react31.useEffect)(() => {
|
4182
4578
|
if (onChange)
|
4183
4579
|
onChange(data);
|
4184
4580
|
}, [data]);
|
4185
4581
|
const { onDragStartOrUpdate, placeholderStyle } = usePlaceholderStyle();
|
4186
|
-
const [
|
4187
|
-
|
4188
|
-
|
4189
|
-
import_react_beautiful_dnd4.DragDropContext,
|
4582
|
+
const [draggedItem, setDraggedItem] = (0, import_react31.useState)();
|
4583
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "puck", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(AppProvider, { value: { appData, dispatch }, children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
4584
|
+
import_react_beautiful_dnd5.DragDropContext,
|
4190
4585
|
{
|
4191
4586
|
onDragUpdate: (update) => {
|
4192
4587
|
setDraggedItem(__spreadValues(__spreadValues({}, draggedItem), update));
|
@@ -4237,7 +4632,7 @@ function Puck({
|
|
4237
4632
|
});
|
4238
4633
|
}
|
4239
4634
|
},
|
4240
|
-
children: /* @__PURE__ */ (0,
|
4635
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
4241
4636
|
DropZoneProvider,
|
4242
4637
|
{
|
4243
4638
|
value: {
|
@@ -4251,19 +4646,19 @@ function Puck({
|
|
4251
4646
|
mode: "edit",
|
4252
4647
|
areaId: "root"
|
4253
4648
|
},
|
4254
|
-
children: /* @__PURE__ */ (0,
|
4649
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(dropZoneContext.Consumer, { children: (ctx) => {
|
4255
4650
|
let path = (ctx == null ? void 0 : ctx.pathData) && selectedItem ? ctx == null ? void 0 : ctx.pathData[selectedItem == null ? void 0 : selectedItem.props.id] : void 0;
|
4256
4651
|
if (path) {
|
4257
4652
|
path = [{ label: "Page", selector: null }, ...path];
|
4258
4653
|
path = path.slice(path.length - 2, path.length - 1);
|
4259
4654
|
}
|
4260
|
-
return /* @__PURE__ */ (0,
|
4655
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
|
4261
4656
|
"div",
|
4262
4657
|
{
|
4263
4658
|
style: {
|
4264
4659
|
display: "grid",
|
4265
4660
|
gridTemplateAreas: '"header header header" "left editor right"',
|
4266
|
-
gridTemplateColumns: `${
|
4661
|
+
gridTemplateColumns: `${leftSideBarVisible ? "288px" : "0px"} auto 288px`,
|
4267
4662
|
gridTemplateRows: "min-content auto",
|
4268
4663
|
height: "100vh",
|
4269
4664
|
position: "fixed",
|
@@ -4273,7 +4668,7 @@ function Puck({
|
|
4273
4668
|
right: 0
|
4274
4669
|
},
|
4275
4670
|
children: [
|
4276
|
-
/* @__PURE__ */ (0,
|
4671
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
4277
4672
|
"header",
|
4278
4673
|
{
|
4279
4674
|
style: {
|
@@ -4283,19 +4678,19 @@ function Puck({
|
|
4283
4678
|
borderBottom: "1px solid var(--puck-color-grey-8)"
|
4284
4679
|
},
|
4285
4680
|
children: renderHeader ? renderHeader({
|
4286
|
-
children: /* @__PURE__ */ (0,
|
4681
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
4287
4682
|
Button,
|
4288
4683
|
{
|
4289
4684
|
onClick: () => {
|
4290
4685
|
onPublish(data);
|
4291
4686
|
},
|
4292
|
-
icon: /* @__PURE__ */ (0,
|
4687
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(globe_default, { size: "14px" }),
|
4293
4688
|
children: "Publish"
|
4294
4689
|
}
|
4295
4690
|
),
|
4296
4691
|
data,
|
4297
4692
|
dispatch
|
4298
|
-
}) : /* @__PURE__ */ (0,
|
4693
|
+
}) : /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
|
4299
4694
|
"div",
|
4300
4695
|
{
|
4301
4696
|
style: {
|
@@ -4306,24 +4701,29 @@ function Puck({
|
|
4306
4701
|
gridTemplateRows: "auto"
|
4307
4702
|
},
|
4308
4703
|
children: [
|
4309
|
-
/* @__PURE__ */ (0,
|
4704
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
4310
4705
|
"div",
|
4311
4706
|
{
|
4312
4707
|
style: {
|
4313
4708
|
display: "flex",
|
4314
4709
|
gap: 16
|
4315
4710
|
},
|
4316
|
-
children: /* @__PURE__ */ (0,
|
4711
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
4317
4712
|
IconButton,
|
4318
4713
|
{
|
4319
|
-
onClick: () =>
|
4714
|
+
onClick: () => dispatch({
|
4715
|
+
type: "setState",
|
4716
|
+
state: {
|
4717
|
+
leftSideBarVisible: !leftSideBarVisible
|
4718
|
+
}
|
4719
|
+
}),
|
4320
4720
|
title: "Toggle left sidebar",
|
4321
|
-
children: /* @__PURE__ */ (0,
|
4721
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(sidebar_default, {})
|
4322
4722
|
}
|
4323
4723
|
)
|
4324
4724
|
}
|
4325
4725
|
),
|
4326
|
-
/* @__PURE__ */ (0,
|
4726
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
4327
4727
|
"div",
|
4328
4728
|
{
|
4329
4729
|
style: {
|
@@ -4331,13 +4731,19 @@ function Puck({
|
|
4331
4731
|
justifyContent: "center",
|
4332
4732
|
alignItems: "center"
|
4333
4733
|
},
|
4334
|
-
children: /* @__PURE__ */ (0,
|
4734
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(Heading, { rank: 2, size: "xs", children: [
|
4335
4735
|
headerTitle || data.root.title || "Page",
|
4336
|
-
headerPath && /* @__PURE__ */ (0,
|
4736
|
+
headerPath && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
4737
|
+
"small",
|
4738
|
+
{
|
4739
|
+
style: { fontWeight: 400, marginLeft: 4 },
|
4740
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("code", { children: headerPath })
|
4741
|
+
}
|
4742
|
+
)
|
4337
4743
|
] })
|
4338
4744
|
}
|
4339
4745
|
),
|
4340
|
-
/* @__PURE__ */ (0,
|
4746
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
|
4341
4747
|
"div",
|
4342
4748
|
{
|
4343
4749
|
style: {
|
@@ -4346,14 +4752,14 @@ function Puck({
|
|
4346
4752
|
justifyContent: "flex-end"
|
4347
4753
|
},
|
4348
4754
|
children: [
|
4349
|
-
/* @__PURE__ */ (0,
|
4350
|
-
/* @__PURE__ */ (0,
|
4755
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { style: { display: "flex" }, children: [
|
4756
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
4351
4757
|
IconButton,
|
4352
4758
|
{
|
4353
4759
|
title: "undo",
|
4354
4760
|
disabled: !canRewind,
|
4355
4761
|
onClick: rewind,
|
4356
|
-
children: /* @__PURE__ */ (0,
|
4762
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
4357
4763
|
chevron_left_default,
|
4358
4764
|
{
|
4359
4765
|
size: 21,
|
@@ -4362,13 +4768,13 @@ function Puck({
|
|
4362
4768
|
)
|
4363
4769
|
}
|
4364
4770
|
),
|
4365
|
-
/* @__PURE__ */ (0,
|
4771
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
4366
4772
|
IconButton,
|
4367
4773
|
{
|
4368
4774
|
title: "redo",
|
4369
4775
|
disabled: !canForward,
|
4370
4776
|
onClick: forward,
|
4371
|
-
children: /* @__PURE__ */ (0,
|
4777
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
4372
4778
|
chevron_right_default,
|
4373
4779
|
{
|
4374
4780
|
size: 21,
|
@@ -4379,13 +4785,13 @@ function Puck({
|
|
4379
4785
|
)
|
4380
4786
|
] }),
|
4381
4787
|
renderHeaderActions && renderHeaderActions({ data, dispatch }),
|
4382
|
-
/* @__PURE__ */ (0,
|
4788
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
4383
4789
|
Button,
|
4384
4790
|
{
|
4385
4791
|
onClick: () => {
|
4386
4792
|
onPublish(data);
|
4387
4793
|
},
|
4388
|
-
icon: /* @__PURE__ */ (0,
|
4794
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(globe_default, { size: "14px" }),
|
4389
4795
|
children: "Publish"
|
4390
4796
|
}
|
4391
4797
|
)
|
@@ -4397,7 +4803,7 @@ function Puck({
|
|
4397
4803
|
)
|
4398
4804
|
}
|
4399
4805
|
),
|
4400
|
-
/* @__PURE__ */ (0,
|
4806
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
|
4401
4807
|
"div",
|
4402
4808
|
{
|
4403
4809
|
style: {
|
@@ -4409,9 +4815,9 @@ function Puck({
|
|
4409
4815
|
flexDirection: "column"
|
4410
4816
|
},
|
4411
4817
|
children: [
|
4412
|
-
/* @__PURE__ */ (0,
|
4413
|
-
/* @__PURE__ */ (0,
|
4414
|
-
(ctx == null ? void 0 : ctx.activeZones) && (ctx == null ? void 0 : ctx.activeZones[rootDroppableId]) && /* @__PURE__ */ (0,
|
4818
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SidebarSection, { title: "Components", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(ComponentList, { config }) }),
|
4819
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(SidebarSection, { title: "Outline", children: [
|
4820
|
+
(ctx == null ? void 0 : ctx.activeZones) && (ctx == null ? void 0 : ctx.activeZones[rootDroppableId]) && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
4415
4821
|
LayerTree,
|
4416
4822
|
{
|
4417
4823
|
data,
|
@@ -4423,7 +4829,7 @@ function Puck({
|
|
4423
4829
|
),
|
4424
4830
|
Object.entries(findZonesForArea(data, "root")).map(
|
4425
4831
|
([zoneKey, zone]) => {
|
4426
|
-
return /* @__PURE__ */ (0,
|
4832
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
4427
4833
|
LayerTree,
|
4428
4834
|
{
|
4429
4835
|
data,
|
@@ -4441,7 +4847,7 @@ function Puck({
|
|
4441
4847
|
]
|
4442
4848
|
}
|
4443
4849
|
),
|
4444
|
-
/* @__PURE__ */ (0,
|
4850
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
|
4445
4851
|
"div",
|
4446
4852
|
{
|
4447
4853
|
style: {
|
@@ -4454,7 +4860,7 @@ function Puck({
|
|
4454
4860
|
onClick: () => setItemSelector(null),
|
4455
4861
|
id: "puck-frame",
|
4456
4862
|
children: [
|
4457
|
-
/* @__PURE__ */ (0,
|
4863
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
4458
4864
|
"div",
|
4459
4865
|
{
|
4460
4866
|
className: "puck-root",
|
@@ -4463,19 +4869,18 @@ function Puck({
|
|
4463
4869
|
margin: 32,
|
4464
4870
|
zoom: 0.75
|
4465
4871
|
},
|
4466
|
-
children: /* @__PURE__ */ (0,
|
4872
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
4467
4873
|
"div",
|
4468
4874
|
{
|
4469
4875
|
style: {
|
4470
|
-
border: "1px solid var(--puck-color-grey-8)"
|
4471
|
-
transform: "scale(1, 1)"
|
4876
|
+
border: "1px solid var(--puck-color-grey-8)"
|
4472
4877
|
},
|
4473
|
-
children: /* @__PURE__ */ (0,
|
4878
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Page, __spreadProps(__spreadValues({ data }, data.root), { children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(DropZone, { zone: rootDroppableId }) }))
|
4474
4879
|
}
|
4475
4880
|
)
|
4476
4881
|
}
|
4477
4882
|
),
|
4478
|
-
/* @__PURE__ */ (0,
|
4883
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
4479
4884
|
"div",
|
4480
4885
|
{
|
4481
4886
|
style: {
|
@@ -4488,7 +4893,7 @@ function Puck({
|
|
4488
4893
|
]
|
4489
4894
|
}
|
4490
4895
|
),
|
4491
|
-
/* @__PURE__ */ (0,
|
4896
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
4492
4897
|
"div",
|
4493
4898
|
{
|
4494
4899
|
style: {
|
@@ -4500,7 +4905,7 @@ function Puck({
|
|
4500
4905
|
flexDirection: "column",
|
4501
4906
|
background: "var(--puck-color-white)"
|
4502
4907
|
},
|
4503
|
-
children: /* @__PURE__ */ (0,
|
4908
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(FieldWrapper, { data, children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
4504
4909
|
SidebarSection,
|
4505
4910
|
{
|
4506
4911
|
noPadding: true,
|
@@ -4553,13 +4958,13 @@ function Puck({
|
|
4553
4958
|
});
|
4554
4959
|
} else {
|
4555
4960
|
dispatch({
|
4556
|
-
type: "
|
4961
|
+
type: "setData",
|
4557
4962
|
data: { root: newProps }
|
4558
4963
|
});
|
4559
4964
|
}
|
4560
4965
|
};
|
4561
4966
|
if (selectedItem && itemSelector) {
|
4562
|
-
return /* @__PURE__ */ (0,
|
4967
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
4563
4968
|
InputOrGroup,
|
4564
4969
|
{
|
4565
4970
|
field,
|
@@ -4575,13 +4980,15 @@ function Puck({
|
|
4575
4980
|
`${selectedItem.props.id}_${fieldName}`
|
4576
4981
|
);
|
4577
4982
|
} else {
|
4578
|
-
return /* @__PURE__ */ (0,
|
4983
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
4579
4984
|
InputOrGroup,
|
4580
4985
|
{
|
4581
4986
|
field,
|
4582
4987
|
name: fieldName,
|
4583
4988
|
label: field.label,
|
4584
|
-
readOnly: ((_d = (_c = data.root._meta) == null ? void 0 : _c.locked) == null ? void 0 : _d.indexOf(
|
4989
|
+
readOnly: ((_d = (_c = data.root._meta) == null ? void 0 : _c.locked) == null ? void 0 : _d.indexOf(
|
4990
|
+
fieldName
|
4991
|
+
)) > -1,
|
4585
4992
|
value: data.root[fieldName],
|
4586
4993
|
onChange: onChange2
|
4587
4994
|
},
|
@@ -4600,17 +5007,17 @@ function Puck({
|
|
4600
5007
|
}
|
4601
5008
|
)
|
4602
5009
|
}
|
4603
|
-
) });
|
5010
|
+
) }) });
|
4604
5011
|
}
|
4605
5012
|
|
4606
5013
|
// components/Render/index.tsx
|
4607
5014
|
init_react_import();
|
4608
|
-
var
|
5015
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
4609
5016
|
function Render({ config, data }) {
|
4610
5017
|
if (config.root) {
|
4611
|
-
return /* @__PURE__ */ (0,
|
5018
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(DropZoneProvider, { value: { data, config, mode: "render" }, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(config.root.render, __spreadProps(__spreadValues({}, data.root), { editMode: false, id: "puck-root", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(DropZone, { zone: rootDroppableId }) })) });
|
4612
5019
|
}
|
4613
|
-
return /* @__PURE__ */ (0,
|
5020
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(DropZoneProvider, { value: { data, config, mode: "render" }, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(DropZone, { zone: rootDroppableId }) });
|
4614
5021
|
}
|
4615
5022
|
// Annotate the CommonJS export names for ESM import in node:
|
4616
5023
|
0 && (module.exports = {
|