import React from 'react'; import type { GraphNode } from './force-directed/types'; export interface NodeItemProps { node: GraphNode; isSelected: boolean; isHovered: boolean; pinned: boolean; defaultNodeSize: number; defaultNodeColor: string; showLabel?: boolean; onClick?: (n: GraphNode) => void; onDoubleClick?: (e: React.MouseEvent, n: GraphNode) => void; onMouseEnter?: (n: GraphNode) => void; onMouseLeave?: () => void; onMouseDown?: (e: React.MouseEvent, n: GraphNode) => void; } export const NodeItem: React.FC = ({ node, isSelected, isHovered, pinned, defaultNodeSize, defaultNodeColor, showLabel = true, onClick, onDoubleClick, onMouseEnter, onMouseLeave, onMouseDown, }) => { const nodeSize = node.size || defaultNodeSize; const nodeColor = node.color || defaultNodeColor; const x = node.x ?? 0; const y = node.y ?? 0; return ( onClick?.(node)} onDoubleClick={(e) => onDoubleClick?.(e, node)} onMouseEnter={() => onMouseEnter?.(node)} onMouseLeave={() => onMouseLeave?.()} onMouseDown={(e) => onMouseDown?.(e, node)} > {pinned && ( )} {showLabel && node.label && ( {node.label} )} ); }; export default NodeItem;