/** @packageDocumentation * @module Tree */ import "./ControlledTree.scss"; import * as React from "react"; import { HighlightableTreeProps, HighlightingEngine } from "../../HighlightingEngine"; import { TreeActions } from "../TreeActions"; import { TreeModelNode, TreeModelNodePlaceholder, VisibleTreeNodes } from "../TreeModel"; import { ITreeNodeLoader } from "../TreeNodeLoader"; import { TreeNodeRendererProps } from "./TreeNodeRenderer"; /** * Data structure that describes range of rendered items in the tree. * @alpha */ export interface RenderedItemsRange { overscanStartIndex: number; overscanStopIndex: number; visibleStartIndex: number; visibleStopIndex: number; } /** * Properties for [[TreeRenderer]] component. * @public */ export interface TreeRendererProps { treeActions: TreeActions; nodeLoader: ITreeNodeLoader; /** Callback that is used to determine node height. */ nodeHeight: (node: TreeModelNode | TreeModelNodePlaceholder, index: number) => number; /** Flat list of nodes to be rendered. */ visibleNodes: VisibleTreeNodes; /** Callback to render custom node. */ nodeRenderer?: (props: TreeNodeRendererProps) => React.ReactNode; /** Properties used to highlight nodes and scroll to active match while filtering. */ nodeHighlightingProps?: HighlightableTreeProps; /** * Callback that is called when rendered items range changes. * @alpha */ onItemsRendered?: (renderedItems: RenderedItemsRange) => void; /** * Callback used when an editor closes * @internal */ onNodeEditorClosed?: () => void; /** Width of the tree area. */ width?: number; /** Height of the tree area. */ height?: number; } /** * Attributes found on TreeRenderer component * @public */ export interface TreeRendererAttributes { /** * Scroll to the specified node. * @param nodeId Id of the target node to scroll to. * @param alignment Controls scrolling behavior. See [react-window](https://github.com/bvaughn/react-window) documentation * on `scrollToItem` for details. */ scrollToNode(nodeId: string, alignment?: Alignment): void; } declare type Alignment = "auto" | "smart" | "center" | "end" | "start"; /** * Context of [[TreeRenderer]] component. * @beta */ export interface TreeRendererContext { /** Callback to render custom node. */ nodeRenderer: (props: TreeNodeRendererProps) => React.ReactNode; treeActions: TreeActions; nodeLoader: ITreeNodeLoader; /** Flat list of nodes to be rendered. */ visibleNodes: VisibleTreeNodes; /** Engine used to created node highlighting properties. */ highlightingEngine?: HighlightingEngine; /** * Callback used detect when label is rendered. It is used by TreeRenderer for scrolling to active match. * @internal */ onLabelRendered?: (node: TreeModelNode) => void; /** * A callback that node calls after rendering to report its width * @internal */ onNodeWidthMeasured?: (width: number) => void; /** * Callback used when an editor closes * @internal */ onNodeEditorClosed?: () => void; } /** * [[TreeRenderer]] context provider, consumer and custom hook. * @beta */ export declare const /** * Context of [[TreeRenderer]] provider. * @beta */ TreeRendererContextProvider: React.ProviderExoticComponent>, /** * Context of [[TreeRenderer]] consumer. * @beta */ TreeRendererContextConsumer: React.ExoticComponent>, /** * Custom hook to use [[TreeRenderer]] context. * @beta */ useTreeRendererContext:

(component: React.ComponentType

) => TreeRendererContext; /** * Default component for rendering tree. * @beta */ export declare class TreeRenderer extends React.Component implements TreeRendererAttributes { private observableScrollToItem; private refSubscription; /** @inheritdoc */ scrollToNode(nodeId: string, alignment?: Alignment): void; private setTreeRendererRef; render(): JSX.Element; } export {}; //# sourceMappingURL=TreeRenderer.d.ts.map