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);