import type { IARCProps, ArcComponentSize, RenderableContent } from '@adam-sv/arc'; import { GraphNodeId } from '@adam-sv/arc'; import { IGraphNode } from '@adam-sv/arc'; export interface ITreeNode extends IGraphNode { data?: NodeType; disabled?: boolean; } export interface IProcessedTreeNode extends ITreeNode { childrenIds: NodeIdType[]; } export interface ITreeProps extends IARCProps { nodes: ITreeNode[]; selectedNodeId?: NodeIdType; nodeListeners?: { didCollapse?: (node: IProcessedTreeNode) => void; didExpand?: (node: IProcessedTreeNode) => void; onClick?: (node: IProcessedTreeNode) => void; }; initiallyExpandedDepth?: number; emptyContentMessage?: string | RenderableContent; componentSize?: ArcComponentSize; allowNonLeafSelection?: boolean; dontExpandParentChain?: boolean; domRef?: React.RefObject; } export interface ITreeGraph { nodes: IProcessedTreeNode[]; rootNodes: IProcessedTreeNode[]; getNode: (id: NodeIdType) => ITreeNode | undefined; getChildren: (id: NodeIdType) => IProcessedTreeNode[]; }