import { BoolFunc } from "./utils"; import * as handlers from "./handlers"; import * as renderers from "./renderers"; import { ElementType, MouseEventHandler } from "react"; import { ListOnScrollProps } from "react-window"; import { NodeApi } from "../interfaces/node-api"; import { OpenMap } from "../state/open-slice"; import { useDragDropManager } from "react-dnd"; export interface TreeProps { /* Data Options */ data?: readonly T[]; initialData?: readonly T[]; /* Data Handlers */ onCreate?: handlers.CreateHandler; onMove?: handlers.MoveHandler; onRename?: handlers.RenameHandler; onDelete?: handlers.DeleteHandler; /* Renderers*/ children?: ElementType>; renderRow?: ElementType>; renderDragPreview?: ElementType; renderCursor?: ElementType; renderContainer?: ElementType<{}>; /* Sizes */ rowHeight?: number; overscanCount?: number; width?: number | string; height?: number; indent?: number; paddingTop?: number; paddingBottom?: number; padding?: number; /* Config */ childrenAccessor?: string | ((d: T) => readonly T[] | null); idAccessor?: string | ((d: T) => string); openByDefault?: boolean; selectionFollowsFocus?: boolean; disableMultiSelection?: boolean; disableEdit?: string | boolean | BoolFunc; disableDrag?: string | boolean | BoolFunc; disableDrop?: | string | boolean | ((args: { parentNode: NodeApi; dragNodes: NodeApi[]; index: number; }) => boolean); /* Event Handlers */ onActivate?: (node: NodeApi) => void; onSelect?: (nodes: NodeApi[]) => void; onScroll?: (props: ListOnScrollProps) => void; onToggle?: (id: string) => void; onFocus?: (node: NodeApi) => void; /* Selection */ selection?: string; /* Open State */ initialOpenState?: OpenMap; /* Search */ searchTerm?: string; searchMatch?: (node: NodeApi, searchTerm: string) => boolean; /* Extra */ className?: string | undefined; rowClassName?: string | undefined; dndRootElement?: globalThis.Node | null; onClick?: MouseEventHandler; onContextMenu?: MouseEventHandler; dndManager?: ReturnType; }