From bce205560279bcbb63b43740e64460408f8032e1 Mon Sep 17 00:00:00 2001 From: ddCat <2695092045@qq.com> Date: Sat, 22 Aug 2026 13:34:30 +0800 Subject: [PATCH] =?UTF-8?q?fix(canvas):=20=E7=94=BB=E5=B8=83=E4=BA=A4?= =?UTF-8?q?=E4=BA=92=20-=20=E4=BC=98=E5=8C=96=E8=8A=82=E7=82=B9=E8=A7=86?= =?UTF-8?q?=E8=A7=89=E3=80=81=E5=88=86=E9=95=9C=E5=88=97=E4=B8=8E=E6=BB=91?= =?UTF-8?q?=E5=8A=A8=E6=80=A7=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../canvas/canvas-node-prompt-panel.tsx | 2 +- web/src/components/canvas/canvas-node.tsx | 29 +++-------------- .../canvas/canvas-project-sidebar.tsx | 2 +- .../components/canvas/canvas-script-node.tsx | 31 +++++++++---------- web/src/components/canvas/infinite-canvas.tsx | 2 +- web/src/constant/canvas.ts | 2 +- web/src/lib/canvas-theme.ts | 4 +-- web/src/lib/canvas/canvas-project-domain.ts | 6 ++-- web/src/lib/canvas/canvas-short-drama.ts | 2 +- .../lib/canvas/project-chapter-storyboard.ts | 4 +-- .../pages/canvas/use-canvas-render-model.ts | 23 +++++--------- web/src/pages/canvas/use-canvas-storyboard.ts | 6 ++-- 12 files changed, 42 insertions(+), 71 deletions(-) diff --git a/web/src/components/canvas/canvas-node-prompt-panel.tsx b/web/src/components/canvas/canvas-node-prompt-panel.tsx index baa627620..af30e3fe0 100644 --- a/web/src/components/canvas/canvas-node-prompt-panel.tsx +++ b/web/src/components/canvas/canvas-node-prompt-panel.tsx @@ -113,7 +113,7 @@ export function CanvasNodePromptPanel({ node, isRunning, onPromptChange, onConfi } as CSSProperties; const composerSurfaceStyle = { ...composerTokens, - border: `1px solid ${theme.node.edge}`, + border: `1px solid color-mix(in srgb, ${theme.node.edge} 42%, transparent)`, background: theme.node.panel, color: theme.node.text, boxShadow: theme.node.shadow, diff --git a/web/src/components/canvas/canvas-node.tsx b/web/src/components/canvas/canvas-node.tsx index e407fb66f..cb5209fb7 100644 --- a/web/src/components/canvas/canvas-node.tsx +++ b/web/src/components/canvas/canvas-node.tsx @@ -1,6 +1,6 @@ import React, { useCallback, useEffect, useRef, useState } from "react"; import type { ReactNode } from "react"; -import { AlertCircle, BookOpenCheck, CheckCircle2, ChevronRight, Clapperboard, Copy, Download, Image as ImageIcon, Lock, Maximize2, Music2, Pencil, Plus, RefreshCw, Replace, Settings2, Star, Trash2, Type, Upload, Video } from "lucide-react"; +import { AlertCircle, BookOpenCheck, CheckCircle2, ChevronRight, Clapperboard, Copy, Download, Image as ImageIcon, Lock, Maximize2, Music2, Pencil, Plus, RefreshCw, Settings2, Star, Trash2, Type, Video } from "lucide-react"; import { useCanvasNodeActions } from "./canvas-node-action-context"; @@ -95,7 +95,6 @@ export const CanvasNode = React.memo(function CanvasNode({ onOpenTaskDetails, onOpenVersions, onViewImage, - onReplaceMedia, onOpenTextEditor, onOpenDirector, onOpenDrawing, @@ -112,7 +111,6 @@ export const CanvasNode = React.memo(function CanvasNode({ const hasAudioContent = data.type === CanvasNodeType.Audio && Boolean(data.metadata?.content); const isComposerNode = data.type === CanvasNodeType.Config; const hasMediaContent = hasImageContent || hasVideoContent || hasAudioContent; - const hasReplaceAction = !readOnly && (data.type === CanvasNodeType.Image || data.type === CanvasNodeType.Video); const isBatchRoot = data.type === CanvasNodeType.Image && Boolean(data.metadata?.isBatchRoot) && batchCount > 1; const isBatchChild = data.type === CanvasNodeType.Image && Boolean(data.metadata?.batchRootId); const showStatusTrack = Boolean(resourceLabel || data.metadata?.locked || isBatchRoot || (isBatchChild && !readOnly) || (hasMediaContent && !readOnly)); @@ -367,25 +365,6 @@ export const CanvasNode = React.memo(function CanvasNode({ /> - {hasReplaceAction && (!hasMediaContent || isSelected || hovered) ? ( -
event.stopPropagation()} - onPointerDown={(event) => event.stopPropagation()} - > - -
- ) : null} - {data.type === CanvasNodeType.Text && data.metadata?.workflowKind !== "character" && !readOnly ? (
) : null} {showStatusTrack ? ( -
+
{resourceLabel && data.type !== CanvasNodeType.Image ? : null} {hasMediaContent && !readOnly ? : null} {isBatchRoot ? onToggleBatch?.(data.id)} /> : null} @@ -638,7 +617,7 @@ function NodeExternalHeader({ node, scale, active, editable, editing, draft, the style={{ maxWidth: maxHeaderWidth, borderRadius: "var(--r-sm)", - background: theme.node.panel, + background: "transparent", paddingInline: "var(--space-1-half)", color: active ? theme.node.text : theme.node.label, transform: `scale(var(--canvas-live-inverse-scale, ${inverseScale}))`, @@ -653,7 +632,7 @@ function NodeExternalHeader({ node, scale, active, editable, editing, draft, the autoFocus value={draft} className="h-6 min-w-20 max-w-[190px] flex-1 truncate rounded bg-transparent px-1.5 text-xs font-medium outline-none" - style={{ background: theme.spatial.elevated, color: theme.node.text }} + style={{ background: "transparent", color: theme.node.text }} onChange={(event) => onDraftChange(event.target.value)} onFocus={(event) => event.currentTarget.select()} onBlur={onCommit} diff --git a/web/src/components/canvas/canvas-project-sidebar.tsx b/web/src/components/canvas/canvas-project-sidebar.tsx index 4ad72af7b..b1cf5e3a1 100644 --- a/web/src/components/canvas/canvas-project-sidebar.tsx +++ b/web/src/components/canvas/canvas-project-sidebar.tsx @@ -242,7 +242,7 @@ export function CanvasProjectSidebar({ projectId, detail, onAddChapter, onLocate
-
@@ -308,16 +315,8 @@ export function CanvasScriptNodeContent({ ) : null}
-
- onUpdateRow(row.id, { durationSeconds: Math.max(1, row.durationSeconds - 1) })}> - - - {row.durationSeconds}s - onUpdateRow(row.id, { durationSeconds: Math.min(60, row.durationSeconds + 1) })}> - - -
onUpdateRow(row.id, { plotDescription: value })} borderColor={theme.node.stroke} /> + onUpdateRow(row.id, { videoMotionPrompt: value })} borderColor={theme.node.stroke} /> onUpdateRow(row.id, { dialogue: value })} borderColor={theme.node.stroke} />