From f69f803f0f69cf7f22a42ade2d7f5a41bb359296 Mon Sep 17 00:00:00 2001 From: Daniel Imms <2193314+Tyriar@users.noreply.github.com> Date: Tue, 15 Aug 2023 07:46:51 -0700 Subject: [PATCH] Implement public APIs internally to inherit docs Part of #4663 --- src/browser/Types.d.ts | 81 ++++-------------------------------------- 1 file changed, 7 insertions(+), 74 deletions(-) diff --git a/src/browser/Types.d.ts b/src/browser/Types.d.ts index d32b6099..7b445269 100644 --- a/src/browser/Types.d.ts +++ b/src/browser/Types.d.ts @@ -3,15 +3,19 @@ * @license MIT */ -import { IDecorationOptions, IDecoration, IDisposable, IMarker } from 'xterm'; +import { IDecorationOptions, IDecoration, IDisposable, IMarker, Terminal as ITerminalApi } from 'xterm'; import { IEvent } from 'common/EventEmitter'; import { ICoreTerminal, CharData, ITerminalOptions, IColor } from 'common/Types'; import { IMouseService, IRenderService } from './services/Services'; import { IBuffer } from 'common/buffer/Types'; import { IFunctionIdentifier, IParams } from 'common/parser/Types'; -export interface ITerminal extends IPublicTerminal, ICoreTerminal { - element: HTMLElement | undefined; +/** + * A portion of the public API that are implemented identially internally and simply passed through. + */ +type InternalPassthroughApis = Omit; + +export interface ITerminal extends InternalPassthroughApis, ICoreTerminal { screenElement: HTMLElement | undefined; browser: IBrowser; buffer: IBuffer; @@ -26,78 +30,7 @@ export interface ITerminal extends IPublicTerminal, ICoreTerminal { onWillOpen: IEvent; cancel(ev: Event, force?: boolean): boolean | void; -} - -// Portions of the public API that are required by the internal Terminal -export interface IPublicTerminal extends IDisposable { - textarea: HTMLTextAreaElement | undefined; - rows: number; - cols: number; - buffer: IBuffer; - markers: IMarker[]; - onCursorMove: IEvent; - onData: IEvent; - onBinary: IEvent; - onKey: IEvent<{ key: string, domEvent: KeyboardEvent }>; - onLineFeed: IEvent; - onScroll: IEvent; - onSelectionChange: IEvent; - onRender: IEvent<{ start: number, end: number }>; - onResize: IEvent<{ cols: number, rows: number }>; - onWriteParsed: IEvent; - onTitleChange: IEvent; - onBell: IEvent; - blur(): void; - focus(): void; - resize(columns: number, rows: number): void; - open(parent: HTMLElement): void; - attachCustomKeyEventHandler(customKeyEventHandler: (event: KeyboardEvent) => boolean): void; - registerCsiHandler(id: IFunctionIdentifier, callback: (params: IParams) => boolean | Promise): IDisposable; - registerDcsHandler(id: IFunctionIdentifier, callback: (data: string, param: IParams) => boolean | Promise): IDisposable; - registerEscHandler(id: IFunctionIdentifier, callback: () => boolean | Promise): IDisposable; - registerOscHandler(ident: number, callback: (data: string) => boolean | Promise): IDisposable; - registerLinkProvider(linkProvider: ILinkProvider): IDisposable; - registerCharacterJoiner(handler: (text: string) => [number, number][]): number; - deregisterCharacterJoiner(joinerId: number): void; addMarker(cursorYOffset: number): IMarker; - registerDecoration(decorationOptions: IDecorationOptions): IDecoration | undefined; - hasSelection(): boolean; - getSelection(): string; - getSelectionPosition(): IBufferRange | undefined; - clearSelection(): void; - select(column: number, row: number, length: number): void; - selectAll(): void; - selectLines(start: number, end: number): void; - dispose(): void; - /** - * Scroll the display of the terminal - * @param amount The number of lines to scroll down (negative scroll up). - */ - scrollLines(amount: number): void; - /** - * Scroll the display of the terminal by a number of pages. - * @param pageCount The number of pages to scroll (negative scrolls up). - */ - scrollPages(pageCount: number): void; - /** - * Scrolls the display of the terminal to the top. - */ - scrollToTop(): void; - /** - * Scrolls the display of the terminal to the bottom. - */ - scrollToBottom(): void; - /** - * Scrolls to a line within the buffer. - * @param line The 0-based line index to scroll to. - */ - scrollToLine(line: number): void; - clear(): void; - write(data: string | Uint8Array, callback?: () => void): void; - paste(data: string): void; - refresh(start: number, end: number): void; - clearTextureAtlas(): void; - reset(): void; } export type CustomKeyEventHandler = (event: KeyboardEvent) => boolean;