sussudio
Version:
An unofficial VS Code Internal API
38 lines (37 loc) • 1.65 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 { IActionViewItem } from "./ui/actionbar/actionbar.mjs";
import { AnchorAlignment, AnchorAxisAlignment } from "./ui/contextview/contextview.mjs";
import { IAction, IActionRunner } from "../common/actions.mjs";
import { ResolvedKeybinding } from "../common/keybindings.mjs";
export interface IContextMenuEvent {
readonly shiftKey?: boolean;
readonly ctrlKey?: boolean;
readonly altKey?: boolean;
readonly metaKey?: boolean;
}
export interface IContextMenuDelegate {
getAnchor(): HTMLElement | {
x: number;
y: number;
width?: number;
height?: number;
};
getActions(): readonly IAction[];
getCheckedActionsRepresentation?(action: IAction): 'radio' | 'checkbox';
getActionViewItem?(action: IAction): IActionViewItem | undefined;
getActionsContext?(event?: IContextMenuEvent): unknown;
getKeyBinding?(action: IAction): ResolvedKeybinding | undefined;
getMenuClassName?(): string;
onHide?(didCancel: boolean): void;
actionRunner?: IActionRunner;
autoSelectFirstItem?: boolean;
anchorAlignment?: AnchorAlignment;
anchorAxisAlignment?: AnchorAxisAlignment;
domForShadowRoot?: HTMLElement;
}
export interface IContextMenuProvider {
showContextMenu(delegate: IContextMenuDelegate): void;
}