export interface Node { children?: Array>; data: T; isExpanded?: boolean; } export interface LinkProps { source: T; target: T; } export interface BaseProp { id: number; name: string; } export type Link = 'curve' | 'line' | 'step'; export interface ChildrenProps { ancestors: Array>; depth: number; expandCollapseNode: (targetNode: Node) => void; isExpanded: boolean; node: Node; nodeSize: { height: number; width: number; }; onMouseDown: (e: React.MouseEvent) => void; onMouseUp: (callback: () => void) => (e: React.MouseEvent) => void; } export interface TreeProps { changeTree?: (newTree: Node) => void; children: (props: ChildrenProps) => JSX.Element; containerHeight: number; containerWidth: number; contentHeight?: number; contentWidth?: number; node: { height: number; isDefaultExpanded?: (data: TData) => boolean; width: number; }; tree: Node; treeLink?: { getStroke?: (props: LinkProps) => string | undefined; getStrokeDasharray?: ( props: LinkProps ) => string | number | undefined; getStrokeOpacity?: (props: LinkProps) => string | number | undefined; getStrokeWidth?: (props: LinkProps) => string | number | undefined; type?: Link; }; }