From 5ba89004382f142e5b52e15c00d5509f70ceb757 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 18 Apr 2026 17:46:48 +0800 Subject: [PATCH] fix: wire libtv connection controls --- .../canvas/LiblibVideoCanvasReplica.tsx | 109 ++++++++++++++++-- 1 file changed, 102 insertions(+), 7 deletions(-) diff --git a/components/canvas/LiblibVideoCanvasReplica.tsx b/components/canvas/LiblibVideoCanvasReplica.tsx index 3913c7eed..840e2aa99 100644 --- a/components/canvas/LiblibVideoCanvasReplica.tsx +++ b/components/canvas/LiblibVideoCanvasReplica.tsx @@ -1195,6 +1195,7 @@ export function LiblibVideoCanvasReplica({ canvasId, isLoading = false }: Liblib const node = createWorkflowNode(workflow, 440 + index * 24, 350 + index * 18); addNodes([node], []); setActivePanel(null); + setConnectionMenu(null); toast.success("已添加工作流"); }, [addNodes] @@ -1742,7 +1743,15 @@ export function LiblibVideoCanvasReplica({ canvasId, isLoading = false }: Liblib routerBack={() => router.push("/")} /> - setActivePanel((current) => current === panel ? null : panel)} /> + { + setCanvasCommand(null); + setNodeContextMenu(null); + setConnectionMenu(null); + setActivePanel((current) => current === panel ? null : panel); + }} + /> void; + onCreate: (kind: Exclude) => void; + state: NonNullable; +}) { + const title = state.side === "target" ? "添加上下文" : "引用该节点生成"; + + return ( +
event.stopPropagation()} + style={{ + left: + state.side === "target" + ? `max(12px, min(${state.screenX - 252}px, calc(100vw - 252px)))` + : `min(${state.screenX + 12}px, calc(100vw - 252px))`, + top: `min(${state.screenY - 120}px, calc(100vh - 330px))`, + }} + > +
+
+

{title}

+
{node.title}
+
+ +
+ + {CONNECTION_ADD_MODULES.map((item) => { + const Icon = item.icon; + return ( + + ); + })} +
+ ); +} + function NodeContextMenu({ node, onClose, @@ -3725,12 +3790,14 @@ function CanvasNodeShell({ children, node, onContextMenu, + onOpenConnectionMenu, onPointerDown, selected, }: { children: ReactNode; node: CloneNode; onContextMenu: (event: ReactMouseEvent) => void; + onOpenConnectionMenu: (event: ReactMouseEvent, side: ConnectionSide) => void; onPointerDown: (event: ReactPointerEvent) => void; selected: boolean; }) { @@ -3750,17 +3817,45 @@ function CanvasNodeShell({ > {targetModuleKind ? ( <> - + + ) : ( <> - - + + )} {children}