sussudio
Version:
An unofficial VS Code Internal API
57 lines (56 loc) • 3.47 kB
text/typescript
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { IIdentityProvider } from "../list/list.mjs";
import { IIndexTreeModelOptions, IIndexTreeModelSpliceOptions, IList } from "./indexTreeModel.mjs";
import { ICollapseStateChangeEvent, ITreeElement, ITreeModel, ITreeModelSpliceEvent, ITreeNode, ITreeSorter } from "./tree.mjs";
import { Event } from "../../../common/event.mjs";
export type ITreeNodeCallback<T, TFilterData> = (node: ITreeNode<T, TFilterData>) => void;
export interface IObjectTreeModel<T extends NonNullable<any>, TFilterData extends NonNullable<any> = void> extends ITreeModel<T | null, TFilterData, T | null> {
setChildren(element: T | null, children: Iterable<ITreeElement<T>> | undefined, options?: IObjectTreeModelSetChildrenOptions<T, TFilterData>): void;
resort(element?: T | null, recursive?: boolean): void;
updateElementHeight(element: T, height: number | undefined): void;
}
export interface IObjectTreeModelSetChildrenOptions<T, TFilterData> extends IIndexTreeModelSpliceOptions<T, TFilterData> {
}
export interface IObjectTreeModelOptions<T, TFilterData> extends IIndexTreeModelOptions<T, TFilterData> {
readonly sorter?: ITreeSorter<T>;
readonly identityProvider?: IIdentityProvider<T>;
}
export declare class ObjectTreeModel<T extends NonNullable<any>, TFilterData extends NonNullable<any> = void> implements IObjectTreeModel<T, TFilterData> {
private user;
readonly rootRef: null;
private model;
private nodes;
private readonly nodesByIdentity;
private readonly identityProvider?;
private sorter?;
readonly onDidSplice: Event<ITreeModelSpliceEvent<T | null, TFilterData>>;
readonly onDidChangeCollapseState: Event<ICollapseStateChangeEvent<T, TFilterData>>;
readonly onDidChangeRenderNodeCount: Event<ITreeNode<T, TFilterData>>;
get size(): number;
constructor(user: string, list: IList<ITreeNode<T, TFilterData>>, options?: IObjectTreeModelOptions<T, TFilterData>);
setChildren(element: T | null, children?: Iterable<ITreeElement<T>>, options?: IObjectTreeModelSetChildrenOptions<T, TFilterData>): void;
private _setChildren;
private preserveCollapseState;
rerender(element: T | null): void;
updateElementHeight(element: T, height: number | undefined): void;
resort(element?: T | null, recursive?: boolean): void;
private resortChildren;
getFirstElementChild(ref?: T | null): T | null | undefined;
getLastElementAncestor(ref?: T | null): T | null | undefined;
has(element: T | null): boolean;
getListIndex(element: T | null): number;
getListRenderCount(element: T | null): number;
isCollapsible(element: T | null): boolean;
setCollapsible(element: T | null, collapsible?: boolean): boolean;
isCollapsed(element: T | null): boolean;
setCollapsed(element: T | null, collapsed?: boolean, recursive?: boolean): boolean;
expandTo(element: T | null): void;
refilter(): void;
getNode(element?: T | null): ITreeNode<T | null, TFilterData>;
getNodeLocation(node: ITreeNode<T, TFilterData>): T | null;
getParentNodeLocation(element: T | null): T | null;
private getElementLocation;
}