import Model from '../model/Model'; import List from './List'; import { DimensionLoose, ParsedValue, OptionDataValue, OptionDataItemObject } from '../util/types'; import { Dictionary } from 'zrender/lib/core/types'; declare type TreeTraverseOrder = 'preorder' | 'postorder'; declare type TreeTraverseCallback = (this: Ctx, node: TreeNode) => boolean | void; declare type TreeTraverseOption = { order?: TreeTraverseOrder; attr?: 'children' | 'viewChildren'; }; interface TreeNodeOption extends Pick, 'name' | 'value'> { children?: TreeNodeOption[]; } export declare class TreeNode { name: string; depth: number; height: number; parentNode: TreeNode; dataIndex: number; children: TreeNode[]; viewChildren: TreeNode[]; isExpand: boolean; readonly hostTree: Tree; constructor(name: string, hostTree: Tree); isRemoved(): boolean; eachNode(options: TreeTraverseOrder, cb: TreeTraverseCallback, context?: Ctx): void; eachNode(options: TreeTraverseOption, cb: TreeTraverseCallback, context?: Ctx): void; eachNode(cb: TreeTraverseCallback, context?: Ctx): void; updateDepthAndHeight(depth: number): void; getNodeById(id: string): TreeNode; contains(node: TreeNode): boolean; getAncestors(includeSelf?: boolean): TreeNode[]; getAncestorsIndices(): number[]; getDescendantIndices(): number[]; getValue(dimension?: DimensionLoose): ParsedValue; setLayout(layout: any, merge?: boolean): void; getLayout(): any; getModel(): Model; getLevelModel(): Model; setVisual(key: string, value: any): void; setVisual(obj: Dictionary): void; getVisual(key: string): any; getRawIndex(): number; getId(): string; isAncestorOf(node: TreeNode): boolean; isDescendantOf(node: TreeNode): boolean; } declare class Tree { type: 'tree'; root: TreeNode; data: List; hostModel: HostModel; levelModels: Model[]; private _nodes; constructor(hostModel: HostModel); eachNode(options: TreeTraverseOrder, cb: TreeTraverseCallback, context?: Ctx): void; eachNode(options: TreeTraverseOption, cb: TreeTraverseCallback, context?: Ctx): void; eachNode(cb: TreeTraverseCallback, context?: Ctx): void; getNodeByDataIndex(dataIndex: number): TreeNode; getNodeById(name: string): TreeNode; update(): void; clearLayouts(): void; static createTree(dataRoot: T, hostModel: HostModel, beforeLink?: (data: List) => void): Tree; } export default Tree;