168 lines
5.4 KiB
TypeScript
168 lines
5.4 KiB
TypeScript
/**
|
|
* Copyright (c) 2017 The xterm.js authors. All rights reserved.
|
|
* @license MIT
|
|
*/
|
|
|
|
import { IEventEmitter } from 'xterm';
|
|
import { ITerminalOptions, ILinkMatcherOptions, IMouseZoneManager, LinkMatcherHandler, LinkMatcherValidationCallback, LineData, IColorSet, IRenderer, IBufferSet, IBuffer, ISelectionManager } from '../typings/xterm-internal';
|
|
|
|
export type CustomKeyEventHandler = (event: KeyboardEvent) => boolean;
|
|
|
|
export enum LinkHoverEventTypes {
|
|
HOVER = 'linkhover',
|
|
TOOLTIP = 'linktooltip',
|
|
LEAVE = 'linkleave'
|
|
}
|
|
|
|
/**
|
|
* This interface encapsulates everything needed from the Terminal by the
|
|
* InputHandler. This cleanly separates the large amount of methods needed by
|
|
* InputHandler cleanly from the ITerminal interface.
|
|
*/
|
|
export interface IInputHandlingTerminal extends IEventEmitter {
|
|
element: HTMLElement;
|
|
options: ITerminalOptions;
|
|
cols: number;
|
|
rows: number;
|
|
charset: ICharset;
|
|
gcharset: number;
|
|
glevel: number;
|
|
charsets: ICharset[];
|
|
applicationKeypad: boolean;
|
|
applicationCursor: boolean;
|
|
originMode: boolean;
|
|
insertMode: boolean;
|
|
wraparoundMode: boolean;
|
|
bracketedPasteMode: boolean;
|
|
defAttr: number;
|
|
curAttr: number;
|
|
prefix: string;
|
|
savedCols: number;
|
|
x10Mouse: boolean;
|
|
vt200Mouse: boolean;
|
|
normalMouse: boolean;
|
|
mouseEvents: boolean;
|
|
sendFocus: boolean;
|
|
utfMouse: boolean;
|
|
sgrMouse: boolean;
|
|
urxvtMouse: boolean;
|
|
cursorHidden: boolean;
|
|
|
|
buffers: IBufferSet;
|
|
buffer: IBuffer;
|
|
viewport: IViewport;
|
|
selectionManager: ISelectionManager;
|
|
|
|
bell(): void;
|
|
focus(): void;
|
|
convertEol: boolean;
|
|
updateRange(y: number): void;
|
|
scroll(isWrapped?: boolean): void;
|
|
setgLevel(g: number): void;
|
|
eraseAttr(): number;
|
|
eraseRight(x: number, y: number): void;
|
|
eraseLine(y: number): void;
|
|
eraseLeft(x: number, y: number): void;
|
|
blankLine(cur?: boolean, isWrapped?: boolean): LineData;
|
|
is(term: string): boolean;
|
|
send(data: string): void;
|
|
setgCharset(g: number, charset: ICharset): void;
|
|
resize(x: number, y: number): void;
|
|
log(text: string, data?: any): void;
|
|
reset(): void;
|
|
showCursor(): void;
|
|
refresh(start: number, end: number): void;
|
|
matchColor(r1: number, g1: number, b1: number): number;
|
|
error(text: string, data?: any): void;
|
|
setOption(key: string, value: any): void;
|
|
}
|
|
|
|
export interface IViewport {
|
|
syncScrollArea(): void;
|
|
onWheel(ev: WheelEvent): void;
|
|
onTouchStart(ev: TouchEvent): void;
|
|
onTouchMove(ev: TouchEvent): void;
|
|
onThemeChanged(colors: IColorSet): void;
|
|
}
|
|
|
|
export interface ICompositionHelper {
|
|
compositionstart(): void;
|
|
compositionupdate(ev: CompositionEvent): void;
|
|
compositionend(): void;
|
|
updateCompositionElements(dontRecurse?: boolean): void;
|
|
keydown(ev: KeyboardEvent): boolean;
|
|
}
|
|
|
|
/**
|
|
* Handles actions generated by the parser.
|
|
*/
|
|
export interface IInputHandler {
|
|
addChar(char: string, code: number): void;
|
|
|
|
/** C0 BEL */ bell(): void;
|
|
/** C0 LF */ lineFeed(): void;
|
|
/** C0 CR */ carriageReturn(): void;
|
|
/** C0 BS */ backspace(): void;
|
|
/** C0 HT */ tab(): void;
|
|
/** C0 SO */ shiftOut(): void;
|
|
/** C0 SI */ shiftIn(): void;
|
|
|
|
/** CSI @ */ insertChars(params?: number[]): void;
|
|
/** CSI A */ cursorUp(params?: number[]): void;
|
|
/** CSI B */ cursorDown(params?: number[]): void;
|
|
/** CSI C */ cursorForward(params?: number[]): void;
|
|
/** CSI D */ cursorBackward(params?: number[]): void;
|
|
/** CSI E */ cursorNextLine(params?: number[]): void;
|
|
/** CSI F */ cursorPrecedingLine(params?: number[]): void;
|
|
/** CSI G */ cursorCharAbsolute(params?: number[]): void;
|
|
/** CSI H */ cursorPosition(params?: number[]): void;
|
|
/** CSI I */ cursorForwardTab(params?: number[]): void;
|
|
/** CSI J */ eraseInDisplay(params?: number[]): void;
|
|
/** CSI K */ eraseInLine(params?: number[]): void;
|
|
/** CSI L */ insertLines(params?: number[]): void;
|
|
/** CSI M */ deleteLines(params?: number[]): void;
|
|
/** CSI P */ deleteChars(params?: number[]): void;
|
|
/** CSI S */ scrollUp(params?: number[]): void;
|
|
/** CSI T */ scrollDown(params?: number[]): void;
|
|
/** CSI X */ eraseChars(params?: number[]): void;
|
|
/** CSI Z */ cursorBackwardTab(params?: number[]): void;
|
|
/** CSI ` */ charPosAbsolute(params?: number[]): void;
|
|
/** CSI a */ HPositionRelative(params?: number[]): void;
|
|
/** CSI b */ repeatPrecedingCharacter(params?: number[]): void;
|
|
/** CSI c */ sendDeviceAttributes(params?: number[]): void;
|
|
/** CSI d */ linePosAbsolute(params?: number[]): void;
|
|
/** CSI e */ VPositionRelative(params?: number[]): void;
|
|
/** CSI f */ HVPosition(params?: number[]): void;
|
|
/** CSI g */ tabClear(params?: number[]): void;
|
|
/** CSI h */ setMode(params?: number[]): void;
|
|
/** CSI l */ resetMode(params?: number[]): void;
|
|
/** CSI m */ charAttributes(params?: number[]): void;
|
|
/** CSI n */ deviceStatus(params?: number[]): void;
|
|
/** CSI p */ softReset(params?: number[]): void;
|
|
/** CSI q */ setCursorStyle(params?: number[]): void;
|
|
/** CSI r */ setScrollRegion(params?: number[]): void;
|
|
/** CSI s */ saveCursor(params?: number[]): void;
|
|
/** CSI u */ restoreCursor(params?: number[]): void;
|
|
}
|
|
|
|
export interface ILinkMatcher {
|
|
id: number;
|
|
regex: RegExp;
|
|
handler: LinkMatcherHandler;
|
|
hoverTooltipCallback?: LinkMatcherHandler;
|
|
hoverLeaveCallback?: () => void;
|
|
matchIndex?: number;
|
|
validationCallback?: LinkMatcherValidationCallback;
|
|
priority?: number;
|
|
}
|
|
|
|
export interface ICharset {
|
|
[key: string]: string;
|
|
}
|
|
|
|
export interface ILinkHoverEvent {
|
|
x: number;
|
|
y: number;
|
|
length: number;
|
|
}
|