UNPKG

@delove/reaflow

Version:

Node-based Visualizations for React

61 lines (60 loc) 2.38 kB
import React, { FC, ReactElement, ReactNode } from 'react'; import { Port, PortProps } from '../Port'; import { Label, LabelProps } from '../Label'; import { EdgeData, NodeData, PortData } from '../../types'; import { Icon, IconProps } from '../Icon'; import { Remove, RemoveProps } from '../Remove'; import { NodeDragEvents } from '../../utils/useNodeDrag'; import { Edge, EdgeProps } from '../Edge'; export interface NodeChildProps { height: number; width: number; x: number; y: number; node: NodeData; nodes?: NodeData[]; edges?: EdgeData[]; } export type NodeDragType = 'node' | 'port' | 'multiportOnly' | 'all'; export type NodeChildrenAsFunction = (nodeChildProps: NodeChildProps) => ReactNode; export interface NodeProps<T = any> extends NodeDragEvents<NodeData<T>, PortData> { id: string; height: number; width: number; x: number; y: number; rx: number; ry: number; offsetX?: number; offsetY?: number; disabled?: boolean; ports?: PortProps[]; labels?: LabelProps[]; properties: NodeData<T>; className?: string; style?: any; children?: ReactNode | NodeChildrenAsFunction; parent?: string; animated?: boolean; draggable?: boolean; linkable?: boolean; selectable?: boolean; removable?: boolean; dragType?: NodeDragType; dragCursor?: string; nodes?: NodeData[]; edges?: EdgeData[]; onRemove?: (event: React.MouseEvent<SVGGElement, MouseEvent>, node: NodeData) => void; onClick?: (event: React.MouseEvent<SVGGElement, MouseEvent>, data: NodeData) => void; onKeyDown?: (event: React.KeyboardEvent<SVGGElement>, data: NodeData) => void; onEnter?: (event: React.MouseEvent<SVGGElement, MouseEvent>, node: NodeData) => void; onLeave?: (event: React.MouseEvent<SVGGElement, MouseEvent>, node: NodeData) => void; childNode?: ReactElement<NodeProps, typeof Node> | ((node: NodeProps) => ReactElement<NodeProps, typeof Node>); childEdge?: ReactElement<EdgeProps, typeof Edge> | ((edge: EdgeProps) => ReactElement<NodeProps, typeof Edge>); remove: ReactElement<RemoveProps, typeof Remove>; icon: ReactElement<IconProps, typeof Icon>; label: ReactElement<LabelProps, typeof Label>; port: ReactElement<PortProps, typeof Port>; tooltip?: React.ElementType; } export declare const Node: FC<Partial<NodeProps>>;