diff --git a/web/src/components/canvas/canvas-frame-node.tsx b/web/src/components/canvas/canvas-frame-node.tsx index e8b2f2c9a..fa9ba016b 100644 --- a/web/src/components/canvas/canvas-frame-node.tsx +++ b/web/src/components/canvas/canvas-frame-node.tsx @@ -6,6 +6,7 @@ import { CometCard } from "@/components/ui/aceternity/comet-card"; import { CanvasFolderPreview } from "@/components/canvas/canvas-folder-preview"; import { CanvasVideoPreviewImage } from "@/components/canvas/canvas-video-preview-image"; import { FRAME_HEADER_HEIGHT, FRAME_PADDING, isCanvasFolderNode } from "@/lib/canvas/canvas-frame"; +import type { CanvasNodeRenderLOD } from "@/lib/canvas/canvas-node-lod"; import { canvasThemes, type CanvasTheme } from "@/lib/canvas-theme"; import { useActiveTheme } from "@/stores/canvas/use-canvas-theme-store"; import { CanvasNodeType, type CanvasFolderStyle, type CanvasFolderTheme, type CanvasNodeData, type Position } from "@/types/canvas"; @@ -14,6 +15,7 @@ type ResizeCorner = "top-left" | "top-right" | "bottom-left" | "bottom-right"; export const CanvasFrameNode = React.memo(function CanvasFrameNode({ data, + renderLOD = "full", dragOffset, childNodes, scale, @@ -33,6 +35,7 @@ export const CanvasFrameNode = React.memo(function CanvasFrameNode({ data: CanvasNodeData; dragOffset?: Position; childNodes: CanvasNodeData[]; + renderLOD?: CanvasNodeRenderLOD; scale: number; isSelected: boolean; isDropTarget: boolean; @@ -51,6 +54,7 @@ export const CanvasFrameNode = React.memo(function CanvasFrameNode({ const collapsed = Boolean(data.metadata?.frame?.collapsed); const folder = isCanvasFolderNode(data); const [editing, setEditing] = useState(false); + const [hovered, setHovered] = useState(false); const [title, setTitle] = useState(data.title); const resizeRef = useRef({ active: false, @@ -148,10 +152,12 @@ export const CanvasFrameNode = React.memo(function CanvasFrameNode({ const active = isSelected || isDropTarget; const linkedFolder = Boolean(data.metadata?.folder?.assetFolderId); + const fullDetail = renderLOD === "full" || hovered || editing; return (