Your Name 1912bcd25b
Some checks failed
Lint / build (20) (push) Has been cancelled
Playwright Tests / test (push) Has been cancelled
chore: sync all remaining local workspace changes
2026-05-08 11:26:57 +08:00

395 lines
14 KiB
JavaScript

/*
* Extracted from browser-delivered Turbopack chunk: fd0220e4d10052af.701bdafa2d.js
* Module id: 579306
* For reading/searching only; this factory depends on the original Turbopack runtime.
*/
const moduleFactory = (e) => {
"use strict";
var t = e.i(462214),
n = e.i(358379),
i = e.i(111558),
r = e.i(41671),
a = e.i(791997),
o = e.i(111581);
function s(e, t) {
return `停止下载 (${e}/${t})`;
}
let c = "border border-[#FF3B30] bg-black/80 hover:!bg-red-500/20";
e.s(
[
"batchZipRunningGroupExtraClass",
0,
c,
"batchZipRunningVirtualBtnClassName",
0,
"flex items-center gap-1.5 rounded-lg px-3 py-1.5 text-xs text-white transition-colors border border-[#FF3B30] bg-black/80 hover:!bg-red-500/20",
"formatBatchZipDownloadRunningLabel",
() => s,
],
579306,
);
let l = {
padding: "4px",
borderRadius: 12,
border: "0.5px solid var(--canvas-controls-border)",
background: "var(--canvas-controls-bg)",
boxShadow: "var(--canvas-shadow-dropdown)",
backdropFilter: "blur(16px)",
},
u =
"flex h-8 items-center justify-center rounded-lg transition-colors hover:bg-canvas-controls-hover text-[13px] select-none cursor-pointer text-canvas-controls-text px-2 gap-1.5",
h = { width: 0, borderLeft: "0.5px solid var(--canvas-controls-border)" },
f = [
null,
"#FF3B30",
"#FF9500",
"#FFCC00",
"#34C759",
"#30D5C8",
"#007AFF",
"#5856D6",
"#FF2D95",
"#8E8E93",
];
function d() {
return (0, t.jsx)("div", {
className: "mx-0.5 h-4 flex-shrink-0",
style: h,
});
}
function p({ currentColor: e, onSelect: n }) {
return (0, t.jsx)("div", {
style: { ...l, padding: "12px", width: "max-content" },
children: (0, t.jsx)("div", {
className: "grid grid-cols-5 gap-3",
children: f.map((i) => {
let r = i === e || (null === i && null === e);
return (0, t.jsx)(
"div",
{
className:
"flex h-9 w-9 cursor-pointer items-center justify-center rounded-full transition-transform hover:scale-110",
style: {
outline: r
? `2px solid ${i ?? "var(--border-brand)"}`
: "none",
outlineOffset: 2,
},
onClick: (e) => {
e.stopPropagation(), n(i);
},
children:
null === i
? (0, t.jsx)("div", {
className:
"border-canvas-controls-border bg-canvas-controls-hover relative h-7 w-7 rounded-full border-2",
children: (0, t.jsx)("div", {
className:
"absolute left-1/2 top-1/2 h-[2px] w-full -translate-x-1/2 -translate-y-1/2 rotate-45 rounded",
style: { background: "#FF3B30" },
}),
})
: (0, t.jsx)("div", {
className: "h-7 w-7 rounded-full",
style: { background: i },
}),
},
i ?? "none",
);
}),
}),
});
}
function g({ onSelect: e, onClose: n }) {
return (0, t.jsxs)("div", {
className: "flex flex-col gap-1",
style: {
...l,
padding: "4px",
width: "max-content",
minWidth: "120px",
},
children: [
(0, t.jsxs)("div", {
className:
"text-canvas-controls-text hover:bg-canvas-controls-hover flex cursor-pointer items-center gap-2 rounded-md px-3 py-2 text-sm transition-colors",
onClick: (t) => {
t.stopPropagation(), e("grid");
},
children: [
(0, t.jsx)(r.Icons.layoutGrid, { width: 16, height: 16 }),
(0, t.jsx)("span", { children: "宫格排列" }),
],
}),
(0, t.jsxs)("div", {
className:
"text-canvas-controls-text hover:bg-canvas-controls-hover flex cursor-pointer items-center gap-2 rounded-md px-3 py-2 text-sm transition-colors",
onClick: (t) => {
t.stopPropagation(), e("horizontal");
},
children: [
(0, t.jsx)(r.Icons.workflow, { width: 16, height: 16 }),
(0, t.jsx)("span", { children: "水平排列" }),
],
}),
(0, t.jsxs)("div", {
className:
"text-canvas-controls-text hover:bg-canvas-controls-hover flex cursor-pointer items-center gap-2 rounded-md px-3 py-2 text-sm transition-colors",
onClick: (t) => {
t.stopPropagation(), e("vertical");
},
children: [
(0, t.jsx)(r.Icons.list, { width: 16, height: 16 }),
(0, t.jsx)("span", { children: "垂直排列" }),
],
}),
],
});
}
function b({
groupColor: e = null,
workflowUuid: h,
isGroupRunning: f = !1,
isStoryboardGroup: b = !1,
isStoryboardImageGroup: m = !1,
pipelineProgress: w,
onColorChange: v,
onRunGroup: x,
onCreateWorkflow: y,
onUngroup: _,
onLayoutChange: S,
onBatchGenerateVideo: E,
groupNodeId: M,
onDownloadAll: T,
}) {
let k,
C,
A = (0, a.useCanvasThemeStore)((e) => e.theme),
{ batchZipDownload: N, cancelBatchZipDownload: I } = (0,
o.useCanvasCallbacks)(),
P = "running" === N.status && "group" === N.mode && N.groupId === M,
[R, L] = (0, n.useState)(!1),
[D, j] = (0, n.useState)(!1),
O = (0, n.useRef)(null),
F = (0, n.useRef)(null),
U = (0, n.useRef)(null),
B = (0, n.useRef)(null);
(0, n.useEffect)(() => {
let e = (e) => {
let t = e.target;
!R || O.current?.contains(t) || U.current?.contains(t) || L(!1),
!D || F.current?.contains(t) || B.current?.contains(t) || j(!1);
};
return (
(R || D) && document.addEventListener("mousedown", e),
() => document.removeEventListener("mousedown", e)
);
}, [R, D]);
let H = (0, n.useCallback)((e) => {
e.stopPropagation(), L((e) => !e), j(!1);
}, []),
z = (0, n.useCallback)((e) => {
e.stopPropagation(), j((e) => !e), L(!1);
}, []),
G = (0, n.useCallback)(
(e) => {
v?.(e), L(!1);
},
[v],
),
$ = (0, n.useCallback)(
(e) => {
S?.(e), j(!1);
},
[S],
),
V = (0, n.useCallback)(() => {
if (!O.current) return;
let e = O.current.getBoundingClientRect();
return { top: e.top, left: e.left };
}, []),
W = (0, n.useCallback)(() => {
if (!F.current) return;
let e = F.current.getBoundingClientRect();
return { top: e.top, left: e.left + e.width / 2 };
}, []);
return (0, t.jsxs)(t.Fragment, {
children: [
(0, t.jsxs)("div", {
className:
"nodrag z-50 flex items-center gap-0.5 whitespace-nowrap",
style: l,
children: [
(0, t.jsx)("div", {
ref: O,
children: (0, t.jsx)("div", {
className:
"hover:bg-canvas-controls-hover flex h-8 w-8 cursor-pointer items-center justify-center rounded-lg transition-colors",
onClick: H,
children: e
? (0, t.jsx)("div", {
className: "size-6 rounded-full",
style: { background: e },
})
: (0, t.jsx)("div", {
className: "size-6 rounded-full bg-[#D9D9D9]",
}),
}),
}),
(0, t.jsx)("div", {
ref: F,
children: (0, t.jsx)("div", {
className:
"hover:bg-canvas-controls-hover flex h-8 w-8 cursor-pointer items-center justify-center rounded-lg",
onClick: z,
children: (0, t.jsx)(r.Icons.LayoutPanelTop, {
width: 16,
height: 16,
}),
}),
}),
(0, t.jsx)("div", {
className: "flex items-center self-stretch py-2",
children: (0, t.jsx)(d, {}),
}),
(0, t.jsx)("div", {
className: `${u} ${f ? "text-red-400 hover:bg-red-500/20" : ""}`,
onClick: x,
children: f
? (0, t.jsxs)(t.Fragment, {
children: [
(0, t.jsx)(r.Icons.lucideSquare, {
width: 14,
height: 14,
}),
(0, t.jsxs)("span", {
children: ["停止", w ? ` (${w})` : ""],
}),
],
})
: (0, t.jsxs)(t.Fragment, {
children: [
b
? (0, t.jsx)(r.Icons.Refresh, {
width: 16,
height: 16,
})
: (0, t.jsx)(r.Icons.PlayLine, {
width: 16,
height: 16,
}),
(0, t.jsx)("span", {
children: b ? "重新生成" : "整组执行",
}),
],
}),
}),
m &&
(0, t.jsxs)("div", {
className: `${u}`,
onClick: E,
children: [
(0, t.jsx)(r.Icons.VideoAdd, { width: 16, height: 16 }),
(0, t.jsx)("span", { children: "批量生成视频" }),
],
}),
!b &&
(0, t.jsxs)("div", {
className: u,
onClick: y,
children: [
(0, t.jsx)(r.Icons.GitFork, { width: 16, height: 16 }),
(0, t.jsx)("span", {
children: h ? "更新工具箱" : "添加到工具箱",
}),
],
}),
(0, t.jsxs)("div", {
className: u,
onClick: _,
children: [
(0, t.jsx)(r.Icons.group, { width: 16, height: 16 }),
(0, t.jsx)("span", { children: "解组" }),
],
}),
T &&
(0, t.jsx)("div", {
className: P && "running" === N.status ? `${u} ${c}` : u,
onClick: (e) => {
e.stopPropagation(), P ? I?.() : T();
},
children:
P && "running" === N.status
? (0, t.jsxs)(t.Fragment, {
children: [
(0, t.jsx)(r.Icons.lucideSquare, {
width: 16,
height: 16,
}),
(0, t.jsx)("span", {
children: s(N.current, N.total),
}),
],
})
: (0, t.jsxs)(t.Fragment, {
children: [
(0, t.jsx)(r.Icons.BulkDownload, {
width: 16,
height: 16,
}),
(0, t.jsx)("span", { children: "批量下载" }),
],
}),
}),
],
}),
R &&
((k = V())
? (0, i.createPortal)(
(0, t.jsx)("div", {
ref: U,
className: `nodrag nopan nowheel ${"light" === A ? "canvas-light" : ""}`,
style: {
position: "fixed",
top: k.top,
left: k.left,
transform: "translateY(-100%) translateY(-8px)",
zIndex: "var(--z-sticky)",
},
onMouseDown: (e) => e.stopPropagation(),
children: (0, t.jsx)(p, { currentColor: e, onSelect: G }),
}),
document.body,
)
: null),
D &&
((C = W())
? (0, i.createPortal)(
(0, t.jsx)("div", {
ref: B,
className: `nodrag nopan nowheel ${"light" === A ? "canvas-light" : ""}`,
style: {
position: "fixed",
top: C.top,
left: C.left,
transform: "translate(-50%, -100%) translateY(-8px)",
zIndex: "var(--z-sticky)",
},
onMouseDown: (e) => e.stopPropagation(),
children: (0, t.jsx)(g, {
onSelect: $,
onClose: () => j(!1),
}),
}),
document.body,
)
: null),
],
});
}
e.s(["GroupNodeToolbar", () => b, "LayoutPicker", () => g], 970683);
};
export default moduleFactory;