import React, { memo, useContext } from 'react'; import { GraphContext } from '../GraphContext'; import { isNode } from '../graph-utils'; function renderNode(d, props, graphContext) { const nodeType = d.type || 'default'; if (!props.nodeTypes[nodeType]) { console.warn(`No node type found for type "${nodeType}". Using fallback type "default".`); } const NodeComponent = props.nodeTypes[nodeType] || props.nodeTypes.default; const selected = graphContext.state.selectedElements .filter(isNode) .map(e => e.id) .includes(d.id); return ( ); } const NodeRenderer = memo((props) => { const graphContext = useContext(GraphContext); const { transform, nodes } = graphContext.state; const transformStyle = { transform : `translate(${transform[0]}px,${transform[1]}px) scale(${transform[2]})` }; return (
{nodes.map(d => renderNode(d, props, graphContext))}
); }); NodeRenderer.displayName = 'NodeRenderer'; NodeRenderer.whyDidYouRender = false; export default NodeRenderer;