import { IIdentityProvider, IKeyboardNavigationLabelProvider, IListVirtualDelegate } from "../list/list.js"; import { AbstractTree, IAbstractTreeOptions, IAbstractTreeOptionsUpdate } from "./abstractTree.js"; import { CompressibleObjectTreeModel, ElementMapper, ICompressedTreeElement, ICompressedTreeNode } from "./compressedObjectTreeModel.js"; import { IObjectTreeModel } from "./objectTreeModel.js"; import { ICollapseStateChangeEvent, IObjectTreeElement, ITreeElementRenderDetails, ITreeModel, ITreeNode, ITreeRenderer, ITreeSorter } from "./tree.js"; import { Event } from "../../../common/event.js"; export interface IObjectTreeOptions extends IAbstractTreeOptions { readonly sorter?: ITreeSorter; } export interface IObjectTreeSetChildrenOptions { /** * If set, child updates will recurse the given number of levels even if * items in the splice operation are unchanged. `Infinity` is a valid value. */ readonly diffDepth?: number; /** * Identity provider used to optimize splice() calls in the IndexTree. If * this is not present, optimized splicing is not enabled. * * Warning: if this is present, calls to `setChildren()` will not replace * or update nodes if their identity is the same, even if the elements are * different. For this, you should call `rerender()`. */ readonly diffIdentityProvider?: IIdentityProvider; } export declare class ObjectTree extends AbstractTree { protected readonly user: string; protected model: IObjectTreeModel; get onDidChangeCollapseState(): Event>; constructor(user: string, container: HTMLElement, delegate: IListVirtualDelegate, renderers: ITreeRenderer[], options?: IObjectTreeOptions); setChildren(element: T | null, children?: Iterable>, options?: IObjectTreeSetChildrenOptions): void; rerender(element?: T): void; updateElementHeight(element: T, height: number | undefined): void; resort(element: T | null, recursive?: boolean): void; hasElement(element: T): boolean; protected createModel(user: string, options: IObjectTreeOptions): ITreeModel; } interface ICompressedTreeNodeProvider { getCompressedTreeNode(location: T | null): ITreeNode | null, TFilterData>; } export interface ICompressibleTreeRenderer extends ITreeRenderer { renderCompressedElements(node: ITreeNode, TFilterData>, index: number, templateData: TTemplateData, details?: ITreeElementRenderDetails): void; disposeCompressedElements?(node: ITreeNode, TFilterData>, index: number, templateData: TTemplateData, details?: ITreeElementRenderDetails): void; } export interface ICompressibleKeyboardNavigationLabelProvider extends IKeyboardNavigationLabelProvider { getCompressedNodeKeyboardNavigationLabel(elements: T[]): { toString(): string | undefined; } | undefined; } export interface ICompressibleObjectTreeOptions extends IObjectTreeOptions { readonly compressionEnabled?: boolean; readonly elementMapper?: ElementMapper; readonly keyboardNavigationLabelProvider?: ICompressibleKeyboardNavigationLabelProvider; } export interface ICompressibleObjectTreeOptionsUpdate extends IAbstractTreeOptionsUpdate { readonly compressionEnabled?: boolean; } export declare class CompressibleObjectTree extends ObjectTree implements ICompressedTreeNodeProvider { protected model: CompressibleObjectTreeModel; constructor(user: string, container: HTMLElement, delegate: IListVirtualDelegate, renderers: ICompressibleTreeRenderer[], options?: ICompressibleObjectTreeOptions); setChildren(element: T | null, children?: Iterable>, options?: IObjectTreeSetChildrenOptions): void; protected createModel(user: string, options: ICompressibleObjectTreeOptions): ITreeModel; updateOptions(optionsUpdate?: ICompressibleObjectTreeOptionsUpdate): void; getCompressedTreeNode(element?: T | null): ITreeNode | null, TFilterData>; } export {};