auto-save 2026-05-17 11:01 (~5)

This commit is contained in:
2026-05-17 11:01:54 +08:00
parent a30a9de26e
commit 31b8738dac
5 changed files with 89 additions and 77 deletions

View File

@@ -24,6 +24,9 @@ import {
} from "@/lib/api"
import { TRANSPARENT_HUMAN_NEGATIVE_PROMPT, TRANSPARENT_HUMAN_VIDEO_PROMPT } from "@/lib/workflow-target"
type FlowNodeData = NodeData & Record<string, unknown>
type StudioFlowNode = Node<FlowNodeData>
const NODE_TYPES = {
input: InputNode,
visual: VisualLabNode,
@@ -767,7 +770,7 @@ export default function Home() {
// 用 useNodesState 让 ReactFlow 自己管位置(避免轮询时重置 drag
const savedSizes = useMemo(() => loadNodeSizes(), [])
const [nodes, setNodes] = useNodesState<Node>(
const [nodes, setNodes] = useNodesState<StudioFlowNode>(
LAYOUT.map((n) => {
const s = savedSizes[n.id] ?? {}
const w = s.w ?? n.w
@@ -777,7 +780,7 @@ export default function Home() {
id: n.id,
type: n.type,
position: { x: n.x, y: n.y },
data: nodeData,
data: nodeData as FlowNodeData,
draggable: !isPinned,
width: w,
...(typeof h === "number" ? { height: h } : {}),
@@ -876,7 +879,7 @@ export default function Home() {
// Job 数据变化时只更新节点 data 不动 position
useEffect(() => {
setNodes((prev) => prev.map((n) => ({ ...n, data: nodeData })))
setNodes((prev) => prev.map((n) => ({ ...n, data: nodeData as FlowNodeData })))
}, [nodeData, setNodes])
// 关键帧详情面板是独立 ReactFlow 节点:可拖动、跟随画布缩放。
@@ -900,7 +903,7 @@ export default function Home() {
return prev.map((n) => n.id === KEYFRAME_PANEL_ID
? {
...n,
data: nodeData,
data: nodeData as FlowNodeData,
draggable: !framePanelPinned,
dragHandle: framePanelPinned ? undefined : ".keyframe-panel-drag",
}
@@ -914,7 +917,7 @@ export default function Home() {
id: KEYFRAME_PANEL_ID,
type: "keyframePanel",
position: defaultPosition,
data: nodeData,
data: nodeData as FlowNodeData,
draggable: !framePanelPinned,
dragHandle: framePanelPinned ? undefined : ".keyframe-panel-drag",
selectable: true,
@@ -953,7 +956,7 @@ export default function Home() {
return prev.map((n) => n.id === VIDEO_FRAME_PANEL_ID
? {
...n,
data: nodeData,
data: nodeData as FlowNodeData,
draggable: videoPanelDock === "canvas",
dragHandle: videoPanelDock === "canvas" ? ".video-frame-panel-drag" : undefined,
}
@@ -967,7 +970,7 @@ export default function Home() {
id: VIDEO_FRAME_PANEL_ID,
type: "videoFramePanel",
position: defaultPosition,
data: nodeData,
data: nodeData as FlowNodeData,
draggable: videoPanelDock === "canvas",
dragHandle: videoPanelDock === "canvas" ? ".video-frame-panel-drag" : undefined,
selectable: true,