import { CanvasNodeType } from "@/types/canvas"; import type { CanvasNodeMetadata } from "@/types/canvas"; type CanvasNodeSpec = { width: number; height: number; title: string; metadata?: CanvasNodeMetadata; }; export const NODE_DEFAULT_SIZE = { [CanvasNodeType.Image]: { width: 340, height: 240, title: "New Generation" }, [CanvasNodeType.Text]: { width: 340, height: 240, title: "Note" }, [CanvasNodeType.Config]: { width: 340, height: 240, title: "生成配置" }, [CanvasNodeType.Video]: { width: 420, height: 236, title: "Video" }, [CanvasNodeType.Audio]: { width: 340, height: 120, title: "Audio" }, [CanvasNodeType.Group]: { width: 760, height: 480, title: "组" }, } satisfies Record; export const NODE_SPECS = { [CanvasNodeType.Image]: { ...NODE_DEFAULT_SIZE[CanvasNodeType.Image], metadata: { content: "", status: "idle" }, }, [CanvasNodeType.Text]: { ...NODE_DEFAULT_SIZE[CanvasNodeType.Text], metadata: { content: "", status: "idle", fontSize: 14 }, }, [CanvasNodeType.Config]: { ...NODE_DEFAULT_SIZE[CanvasNodeType.Config], metadata: { content: "", status: "idle", generationMode: "image" }, }, [CanvasNodeType.Video]: { ...NODE_DEFAULT_SIZE[CanvasNodeType.Video], metadata: { content: "", status: "idle" }, }, [CanvasNodeType.Audio]: { ...NODE_DEFAULT_SIZE[CanvasNodeType.Audio], metadata: { content: "", status: "idle" }, }, [CanvasNodeType.Group]: { ...NODE_DEFAULT_SIZE[CanvasNodeType.Group], metadata: { status: "idle" }, }, } satisfies Record; export function getNodeSpec(type: CanvasNodeType) { return NODE_SPECS[type]; }