@delove/reaflow
Version:
Node-based Visualizations for React
61 lines (60 loc) • 2.38 kB
TypeScript
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>>;