import type { FlowEdge, FlowNode } from '../manifest';
import { KIND_LABELS, STATUS_LABELS, TRIGGER_LABELS } from '../manifest';
import { stageColor } from './nodeShapes';
interface Props {
selectedNode: FlowNode | null;
selectedEdge: FlowEdge | null;
allNodes: FlowNode[];
allEdges: FlowEdge[];
onSelectNode: (id: string) => void;
}
export function NodeDetailPanel({
selectedNode,
selectedEdge,
allNodes,
allEdges,
onSelectNode,
}: Props) {
if (selectedEdge) {
const source = allNodes.find((n) => n.id === selectedEdge.source);
const target = allNodes.find((n) => n.id === selectedEdge.target);
return (
{selectedNode.stage}
{selectedNode.label}
{selectedNode.id}
{KIND_LABELS[selectedNode.kind]}
{TRIGGER_LABELS[selectedNode.trigger]}
{STATUS_LABELS[selectedNode.status]}
{selectedNode.menu && (
메뉴: {selectedNode.menu}
)}
{selectedNode.shortDescription && (
개요
{selectedNode.shortDescription}
)}
{selectedNode.notes && (
)}
{selectedNode.file && (
코드
{selectedNode.file}
{selectedNode.symbol && (
{selectedNode.symbol}
)}
)}
{selectedNode.actor && (
)}
{selectedNode.triggers && selectedNode.triggers.length > 0 && (
발화 조건
{selectedNode.triggers.map((t, i) => (
- {t}
))}
)}
{selectedNode.inputs && selectedNode.inputs.length > 0 && (
입력 (Inputs)
{selectedNode.inputs.map((x, i) => (
- {x}
))}
)}
{selectedNode.outputs && selectedNode.outputs.length > 0 && (
출력 (Outputs)
{selectedNode.outputs.map((x, i) => (
- {x}
))}
)}
{selectedNode.params && selectedNode.params.length > 0 && (
파라미터
{selectedNode.params.map((x, i) => (
- {x}
))}
)}
{selectedNode.rules && selectedNode.rules.length > 0 && (
규칙
{selectedNode.rules.map((x, i) => (
- {x}
))}
)}
{incoming.length > 0 && (
들어오는 흐름 ({incoming.length})
{incoming.map((e) => {
const src = allNodes.find((n) => n.id === e.source);
return (
);
})}
)}
{outgoing.length > 0 && (
나가는 흐름 ({outgoing.length})
{outgoing.map((e) => {
const tgt = allNodes.find((n) => n.id === e.target);
return (
);
})}
)}
{selectedNode.tags && selectedNode.tags.length > 0 && (
태그
{selectedNode.tags.map((t) => (
{t}
))}
)}
);
}