sussudio
Version:
An unofficial VS Code Internal API
96 lines (95 loc) • 5.99 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 { IList } from "./indexTreeModel.mjs";
import { IObjectTreeModel, IObjectTreeModelOptions, IObjectTreeModelSetChildrenOptions } from "./objectTreeModel.mjs";
import { ICollapseStateChangeEvent, ITreeElement, ITreeModel, ITreeModelSpliceEvent, ITreeNode } from "./tree.mjs";
import { Event } from "../../../common/event.mjs";
export interface ICompressedTreeElement<T> extends ITreeElement<T> {
readonly children?: Iterable<ICompressedTreeElement<T>>;
readonly incompressible?: boolean;
}
export interface ICompressedTreeNode<T> {
readonly elements: T[];
readonly incompressible: boolean;
}
export declare function compress<T>(element: ICompressedTreeElement<T>): ITreeElement<ICompressedTreeNode<T>>;
export declare function decompress<T>(element: ITreeElement<ICompressedTreeNode<T>>): ICompressedTreeElement<T>;
interface ICompressedObjectTreeModelOptions<T, TFilterData> extends IObjectTreeModelOptions<ICompressedTreeNode<T>, TFilterData> {
readonly compressionEnabled?: boolean;
}
export declare class CompressedObjectTreeModel<T extends NonNullable<any>, TFilterData extends NonNullable<any> = void> implements ITreeModel<ICompressedTreeNode<T> | null, TFilterData, T | null> {
private user;
readonly rootRef: null;
get onDidSplice(): Event<ITreeModelSpliceEvent<ICompressedTreeNode<T> | null, TFilterData>>;
get onDidChangeCollapseState(): Event<ICollapseStateChangeEvent<ICompressedTreeNode<T>, TFilterData>>;
get onDidChangeRenderNodeCount(): Event<ITreeNode<ICompressedTreeNode<T>, TFilterData>>;
private model;
private nodes;
private enabled;
private readonly identityProvider?;
get size(): number;
constructor(user: string, list: IList<ITreeNode<ICompressedTreeNode<T>, TFilterData>>, options?: ICompressedObjectTreeModelOptions<T, TFilterData>);
setChildren(element: T | null, children: Iterable<ICompressedTreeElement<T>> | undefined, options: IObjectTreeModelSetChildrenOptions<T, TFilterData>): void;
isCompressionEnabled(): boolean;
setCompressionEnabled(enabled: boolean): void;
private _setChildren;
has(element: T | null): boolean;
getListIndex(location: T | null): number;
getListRenderCount(location: T | null): number;
getNode(location?: T | null | undefined): ITreeNode<ICompressedTreeNode<T> | null, TFilterData>;
getNodeLocation(node: ITreeNode<ICompressedTreeNode<T>, TFilterData>): T | null;
getParentNodeLocation(location: T | null): T | null;
getFirstElementChild(location: T | null): ICompressedTreeNode<T> | null | undefined;
getLastElementAncestor(location?: T | null | undefined): ICompressedTreeNode<T> | null | undefined;
isCollapsible(location: T | null): boolean;
setCollapsible(location: T | null, collapsible?: boolean): boolean;
isCollapsed(location: T | null): boolean;
setCollapsed(location: T | null, collapsed?: boolean | undefined, recursive?: boolean | undefined): boolean;
expandTo(location: T | null): void;
rerender(location: T | null): void;
updateElementHeight(element: T, height: number): void;
refilter(): void;
resort(location?: T | null, recursive?: boolean): void;
getCompressedNode(element: T | null): ICompressedTreeNode<T> | null;
}
export type ElementMapper<T> = (elements: T[]) => T;
export declare const DefaultElementMapper: ElementMapper<any>;
export type CompressedNodeUnwrapper<T> = (node: ICompressedTreeNode<T>) => T;
export interface ICompressibleObjectTreeModelOptions<T, TFilterData> extends IObjectTreeModelOptions<T, TFilterData> {
readonly compressionEnabled?: boolean;
readonly elementMapper?: ElementMapper<T>;
}
export declare class CompressibleObjectTreeModel<T extends NonNullable<any>, TFilterData extends NonNullable<any> = void> implements IObjectTreeModel<T, TFilterData> {
readonly rootRef: null;
get onDidSplice(): Event<ITreeModelSpliceEvent<T | null, TFilterData>>;
get onDidChangeCollapseState(): Event<ICollapseStateChangeEvent<T | null, TFilterData>>;
get onDidChangeRenderNodeCount(): Event<ITreeNode<T | null, TFilterData>>;
private elementMapper;
private nodeMapper;
private model;
constructor(user: string, list: IList<ITreeNode<T, TFilterData>>, options?: ICompressibleObjectTreeModelOptions<T, TFilterData>);
setChildren(element: T | null, children?: Iterable<ICompressedTreeElement<T>>, options?: IObjectTreeModelSetChildrenOptions<T, TFilterData>): void;
isCompressionEnabled(): boolean;
setCompressionEnabled(enabled: boolean): void;
has(location: T | null): boolean;
getListIndex(location: T | null): number;
getListRenderCount(location: T | null): number;
getNode(location?: T | null | undefined): ITreeNode<T | null, any>;
getNodeLocation(node: ITreeNode<T | null, any>): T | null;
getParentNodeLocation(location: T | null): T | null;
getFirstElementChild(location: T | null): T | null | undefined;
getLastElementAncestor(location?: T | null | undefined): T | null | undefined;
isCollapsible(location: T | null): boolean;
setCollapsible(location: T | null, collapsed?: boolean): boolean;
isCollapsed(location: T | null): boolean;
setCollapsed(location: T | null, collapsed?: boolean | undefined, recursive?: boolean | undefined): boolean;
expandTo(location: T | null): void;
rerender(location: T | null): void;
updateElementHeight(element: T, height: number): void;
refilter(): void;
resort(element?: T | null, recursive?: boolean): void;
getCompressedTreeNode(location?: T | null): ITreeNode<ICompressedTreeNode<T> | null, TFilterData>;
}
export {};