UNPKG

sussudio

Version:

An unofficial VS Code Internal API

100 lines (99 loc) 2.98 kB
/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { Disposable, IDisposable } from "../../../common/lifecycle.mjs"; import "../../../../css!./contextview.mjs"; export declare const enum ContextViewDOMPosition { ABSOLUTE = 1, FIXED = 2, FIXED_SHADOW = 3 } export interface IAnchor { x: number; y: number; width?: number; height?: number; } export declare const enum AnchorAlignment { LEFT = 0, RIGHT = 1 } export declare const enum AnchorPosition { BELOW = 0, ABOVE = 1 } export declare const enum AnchorAxisAlignment { VERTICAL = 0, HORIZONTAL = 1 } export interface IDelegate { getAnchor(): HTMLElement | IAnchor; render(container: HTMLElement): IDisposable | null; focus?(): void; layout?(): void; anchorAlignment?: AnchorAlignment; anchorPosition?: AnchorPosition; anchorAxisAlignment?: AnchorAxisAlignment; canRelayout?: boolean; onDOMEvent?(e: Event, activeElement: HTMLElement): void; onHide?(data?: unknown): void; } export interface IContextViewProvider { showContextView(delegate: IDelegate, container?: HTMLElement): void; hideContextView(): void; layout(): void; } export interface IPosition { top: number; left: number; } export interface ISize { width: number; height: number; } export interface IView extends IPosition, ISize { } export declare const enum LayoutAnchorPosition { Before = 0, After = 1 } export declare enum LayoutAnchorMode { AVOID = 0, ALIGN = 1 } export interface ILayoutAnchor { offset: number; size: number; mode?: LayoutAnchorMode; position: LayoutAnchorPosition; } /** * Lays out a one dimensional view next to an anchor in a viewport. * * @returns The view offset within the viewport. */ export declare function layout(viewportSize: number, viewSize: number, anchor: ILayoutAnchor): number; export declare class ContextView extends Disposable { private static readonly BUBBLE_UP_EVENTS; private static readonly BUBBLE_DOWN_EVENTS; private container; private view; private useFixedPosition; private useShadowDOM; private delegate; private toDisposeOnClean; private toDisposeOnSetContainer; private shadowRoot; private shadowRootHostElement; constructor(container: HTMLElement | null, domPosition: ContextViewDOMPosition); setContainer(container: HTMLElement | null, domPosition: ContextViewDOMPosition): void; show(delegate: IDelegate): void; getViewElement(): HTMLElement; layout(): void; private doLayout; hide(data?: unknown): void; private isVisible; private onDOMEvent; dispose(): void; }