auto-save 2026-05-14 03:37 (~5)
This commit is contained in:
@@ -88,7 +88,8 @@ export default function Home() {
|
||||
const [selectedFrames, setSelectedFrames] = useState<Set<number>>(new Set())
|
||||
const [expandedFrame, setExpandedFrame] = useState<number | null>(null)
|
||||
const [framePanelScale, setFramePanelScale] = useState(1)
|
||||
const [framePanelPinned, setFramePanelPinned] = useState(true)
|
||||
const [framePanelDock, setFramePanelDock] = useState<CanvasPanelDock>("left")
|
||||
const framePanelPinned = framePanelDock !== "canvas"
|
||||
const [videoPanelJobId, setVideoPanelJobId] = useState<string | null>(null)
|
||||
const [videoPanelScale, setVideoPanelScale] = useState(1)
|
||||
const [videoPanelDock, setVideoPanelDock] = useState<CanvasPanelDock>("left")
|
||||
@@ -210,7 +211,7 @@ export default function Home() {
|
||||
}, [])
|
||||
|
||||
const handleOpenFramePanel = useCallback((idx: number) => {
|
||||
if (expandedFrame === null) setFramePanelPinned(true)
|
||||
if (expandedFrame === null) setFramePanelDock("left")
|
||||
setExpandedFrame(idx)
|
||||
}, [expandedFrame])
|
||||
|
||||
@@ -499,6 +500,7 @@ export default function Home() {
|
||||
expandedFrame,
|
||||
framePanelScale,
|
||||
framePanelPinned,
|
||||
framePanelDock,
|
||||
videoPanelJobId,
|
||||
videoPanelScale,
|
||||
videoPanelDock,
|
||||
@@ -509,7 +511,8 @@ export default function Home() {
|
||||
onExpandFrame: setExpandedFrame,
|
||||
onOpenFramePanel: handleOpenFramePanel,
|
||||
onFramePanelScaleChange: handleFramePanelScaleChange,
|
||||
onFramePanelPinnedChange: setFramePanelPinned,
|
||||
onFramePanelPinnedChange: (pinned: boolean) => setFramePanelDock(pinned ? "left" : "canvas"),
|
||||
onFramePanelDockChange: setFramePanelDock,
|
||||
onCloseExpandedFrame: () => setExpandedFrame(null),
|
||||
onAddManualFrame: handleAddManualFrame,
|
||||
onAddManualFrameForJob: handleAddManualFrameForJob,
|
||||
@@ -533,7 +536,7 @@ export default function Home() {
|
||||
onCopyImage: handleCopyImage,
|
||||
pinnedNodes,
|
||||
onToggleNodePin: handleToggleNodePin,
|
||||
}), [job, jobs, activeJobId, submitting, analyzing, selectedFrames, expandedFrame, framePanelScale, framePanelPinned, videoPanelJobId, videoPanelScale, videoPanelDock, handleSubmit, handleUpload, handleAnalyze, handleToggleFrame, handleOpenFramePanel, handleFramePanelScaleChange, handleAddManualFrame, handleAddManualFrameForJob, handleOpenVideoPanel, handleVideoPanelScaleChange, handleSwitchJob, setJob, handleDeleteJob, handleDeleteFrame, handleDeleteFrameForJob, handleDeleteGenerated, handleDeleteVideo, handleDeleteCutout, handleCopyImage, pinnedNodes, handleToggleNodePin])
|
||||
}), [job, jobs, activeJobId, submitting, analyzing, selectedFrames, expandedFrame, framePanelScale, framePanelPinned, framePanelDock, videoPanelJobId, videoPanelScale, videoPanelDock, handleSubmit, handleUpload, handleAnalyze, handleToggleFrame, handleOpenFramePanel, handleFramePanelScaleChange, handleAddManualFrame, handleAddManualFrameForJob, handleOpenVideoPanel, handleVideoPanelScaleChange, handleSwitchJob, setJob, handleDeleteJob, handleDeleteFrame, handleDeleteFrameForJob, handleDeleteGenerated, handleDeleteVideo, handleDeleteCutout, handleCopyImage, pinnedNodes, handleToggleNodePin])
|
||||
|
||||
// 用 useNodesState 让 ReactFlow 自己管位置(避免轮询时重置 drag)
|
||||
const savedSizes = useMemo(() => loadNodeSizes(), [])
|
||||
|
||||
Reference in New Issue
Block a user