import { useCallback, useEffect, useMemo } from 'react'; import { Background, Controls, MiniMap, Panel, ReactFlow, addEdge, useEdgesState, useNodesState } from '@xyflow/react'; import '@xyflow/react/dist/style.css'; import CustomEdge from './CustomEdge'; import CustomNode from './CustomNode'; import GraphControls from './GraphControls'; import { transformGraphData } from '../../utils/graphTransformers'; const nodeTypes = { serviceNode: CustomNode }; const edgeTypes = { default: CustomEdge }; export default function ArchitectureGraph({ graphData, onNodeClick }) { const transformed = useMemo(() => transformGraphData(graphData), [graphData]); const [nodes, setNodes, onNodesChange] = useNodesState([]); const [edges, setEdges, onEdgesChange] = useEdgesState([]); useEffect(() => { setNodes(transformed.nodes || []); setEdges(transformed.edges || []); }, [setEdges, setNodes, transformed]); const onConnect = useCallback((params) => setEdges((current) => addEdge(params, current)), [setEdges]); return (