UNPKG

sussudio

Version:

An unofficial VS Code Internal API

108 lines (107 loc) 4.11 kB
/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { IDragAndDropData } from "../../dnd.mjs"; import { IKeyboardEvent } from "../../keyboardEvent.mjs"; import { GestureEvent } from "../../touch.mjs"; export interface IListVirtualDelegate<T> { getHeight(element: T): number; getTemplateId(element: T): string; hasDynamicHeight?(element: T): boolean; getDynamicHeight?(element: T): number | null; setDynamicHeight?(element: T, height: number): void; } export interface IListRenderer<T, TTemplateData> { readonly templateId: string; renderTemplate(container: HTMLElement): TTemplateData; renderElement(element: T, index: number, templateData: TTemplateData, height: number | undefined): void; disposeElement?(element: T, index: number, templateData: TTemplateData, height: number | undefined): void; disposeTemplate(templateData: TTemplateData): void; } export interface IListEvent<T> { elements: T[]; indexes: number[]; browserEvent?: UIEvent; } export interface IListMouseEvent<T> { browserEvent: MouseEvent; element: T | undefined; index: number | undefined; } export interface IListTouchEvent<T> { browserEvent: TouchEvent; element: T | undefined; index: number | undefined; } export interface IListGestureEvent<T> { browserEvent: GestureEvent; element: T | undefined; index: number | undefined; } export interface IListDragEvent<T> { browserEvent: DragEvent; element: T | undefined; index: number | undefined; } export interface IListContextMenuEvent<T> { browserEvent: UIEvent; element: T | undefined; index: number | undefined; anchor: HTMLElement | { x: number; y: number; }; } export interface IIdentityProvider<T> { getId(element: T): { toString(): string; }; } export interface IKeyboardNavigationLabelProvider<T> { /** * Return a keyboard navigation label(s) which will be used by * the list for filtering/navigating. Return `undefined` to make * an element always match. */ getKeyboardNavigationLabel(element: T): { toString(): string | undefined; } | { toString(): string | undefined; }[] | undefined; } export interface IKeyboardNavigationDelegate { mightProducePrintableCharacter(event: IKeyboardEvent): boolean; } export declare const enum ListDragOverEffect { Copy = 0, Move = 1 } export interface IListDragOverReaction { accept: boolean; effect?: ListDragOverEffect; feedback?: number[]; } export declare const ListDragOverReactions: { reject(): IListDragOverReaction; accept(): IListDragOverReaction; }; export interface IListDragAndDrop<T> { getDragURI(element: T): string | null; getDragLabel?(elements: T[], originalEvent: DragEvent): string | undefined; onDragStart?(data: IDragAndDropData, originalEvent: DragEvent): void; onDragOver(data: IDragAndDropData, targetElement: T | undefined, targetIndex: number | undefined, originalEvent: DragEvent): boolean | IListDragOverReaction; onDragLeave?(data: IDragAndDropData, targetElement: T | undefined, targetIndex: number | undefined, originalEvent: DragEvent): void; drop(data: IDragAndDropData, targetElement: T | undefined, targetIndex: number | undefined, originalEvent: DragEvent): void; onDragEnd?(originalEvent: DragEvent): void; } export declare class ListError extends Error { constructor(user: string, message: string); } export declare abstract class CachedListVirtualDelegate<T extends object> implements IListVirtualDelegate<T> { private cache; getHeight(element: T): number; protected abstract estimateHeight(element: T): number; abstract getTemplateId(element: T): string; setDynamicHeight(element: T, height: number): void; }