import { memo, useMemo } from "react"; import { type WorkflowNode, WorkflowNodeType } from "@/domain/workflow"; import ApplyNode from "./node/ApplyNode"; import BranchNode from "./node/BranchNode"; import ConditionNode from "./node/ConditionNode"; import DeployNode from "./node/DeployNode"; import EndNode from "./node/EndNode"; import ExecuteResultBranchNode from "./node/ExecuteResultBranchNode"; import ExecuteResultNode from "./node/ExecuteResultNode"; import NotifyNode from "./node/NotifyNode"; import StartNode from "./node/StartNode"; import UploadNode from "./node/UploadNode"; export type WorkflowElementProps = { node: WorkflowNode; disabled?: boolean; branchId?: string; branchIndex?: number; }; const WorkflowElement = ({ node, disabled, branchId, branchIndex }: WorkflowElementProps) => { const nodeEl = useMemo(() => { switch (node.type) { case WorkflowNodeType.Start: return ; case WorkflowNodeType.Apply: return ; case WorkflowNodeType.Upload: return ; case WorkflowNodeType.Deploy: return ; case WorkflowNodeType.Notify: return ; case WorkflowNodeType.Branch: return ; case WorkflowNodeType.ExecuteResultBranch: return ; case WorkflowNodeType.ExecuteSuccess: case WorkflowNodeType.ExecuteFailure: return ; case WorkflowNodeType.Condition: return ; case WorkflowNodeType.End: return ; default: console.warn(`[certimate] unsupported workflow node type: ${node.type}`); return <>; } }, [node, disabled, branchId, branchIndex]); return <>{nodeEl}; }; export default memo(WorkflowElement);