161 lines
3.9 KiB
TypeScript
161 lines
3.9 KiB
TypeScript
/**
|
|
* Copyright (c) 2018 The xterm.js authors. All rights reserved.
|
|
* @license MIT
|
|
*/
|
|
|
|
import { IEvent, IEventEmitter } from 'common/EventEmitter';
|
|
import { IDeleteEvent, IInsertEvent } from 'common/CircularList';
|
|
|
|
export interface IDisposable {
|
|
dispose(): void;
|
|
}
|
|
|
|
export type XtermListener = (...args: any[]) => void;
|
|
|
|
/**
|
|
* A keyboard event interface which does not depend on the DOM, KeyboardEvent implicitly extends
|
|
* this event.
|
|
*/
|
|
export interface IKeyboardEvent {
|
|
altKey: boolean;
|
|
ctrlKey: boolean;
|
|
shiftKey: boolean;
|
|
metaKey: boolean;
|
|
keyCode: number;
|
|
key: string;
|
|
type: string;
|
|
}
|
|
|
|
export interface ICircularList<T> {
|
|
length: number;
|
|
maxLength: number;
|
|
isFull: boolean;
|
|
|
|
onDeleteEmitter: IEventEmitter<IDeleteEvent>;
|
|
onDelete: IEvent<IDeleteEvent>;
|
|
onInsertEmitter: IEventEmitter<IInsertEvent>;
|
|
onInsert: IEvent<IInsertEvent>;
|
|
onTrimEmitter: IEventEmitter<number>;
|
|
onTrim: IEvent<number>;
|
|
|
|
get(index: number): T | undefined;
|
|
set(index: number, value: T): void;
|
|
push(value: T): void;
|
|
recycle(): T | undefined;
|
|
pop(): T | undefined;
|
|
splice(start: number, deleteCount: number, ...items: T[]): void;
|
|
trimStart(count: number): void;
|
|
shiftElements(start: number, count: number, offset: number): void;
|
|
}
|
|
|
|
export const enum KeyboardResultType {
|
|
SEND_KEY,
|
|
SELECT_ALL,
|
|
PAGE_UP,
|
|
PAGE_DOWN
|
|
}
|
|
|
|
export interface IKeyboardResult {
|
|
type: KeyboardResultType;
|
|
cancel: boolean;
|
|
key: string | undefined;
|
|
}
|
|
|
|
export interface ICharset {
|
|
[key: string]: string;
|
|
}
|
|
|
|
export type CharData = [number, string, number, number];
|
|
export type IColorRGB = [number, number, number];
|
|
|
|
/** Attribute data */
|
|
export interface IAttributeData {
|
|
fg: number;
|
|
bg: number;
|
|
|
|
clone(): IAttributeData;
|
|
|
|
// flags
|
|
isInverse(): number;
|
|
isBold(): number;
|
|
isUnderline(): number;
|
|
isBlink(): number;
|
|
isInvisible(): number;
|
|
isItalic(): number;
|
|
isDim(): number;
|
|
|
|
// color modes
|
|
getFgColorMode(): number;
|
|
getBgColorMode(): number;
|
|
isFgRGB(): boolean;
|
|
isBgRGB(): boolean;
|
|
isFgPalette(): boolean;
|
|
isBgPalette(): boolean;
|
|
isFgDefault(): boolean;
|
|
isBgDefault(): boolean;
|
|
|
|
// colors
|
|
getFgColor(): number;
|
|
getBgColor(): number;
|
|
}
|
|
|
|
/** Cell data */
|
|
export interface ICellData extends IAttributeData {
|
|
content: number;
|
|
combinedData: string;
|
|
isCombined(): number;
|
|
getWidth(): number;
|
|
getChars(): string;
|
|
getCode(): number;
|
|
setFromCharData(value: CharData): void;
|
|
getAsCharData(): CharData;
|
|
}
|
|
|
|
/**
|
|
* Interface for a line in the terminal buffer.
|
|
*/
|
|
export interface IBufferLine {
|
|
length: number;
|
|
isWrapped: boolean;
|
|
get(index: number): CharData;
|
|
set(index: number, value: CharData): void;
|
|
loadCell(index: number, cell: ICellData): ICellData;
|
|
setCell(index: number, cell: ICellData): void;
|
|
setCellFromCodePoint(index: number, codePoint: number, width: number, fg: number, bg: number): void;
|
|
addCodepointToCell(index: number, codePoint: number): void;
|
|
insertCells(pos: number, n: number, ch: ICellData): void;
|
|
deleteCells(pos: number, n: number, fill: ICellData): void;
|
|
replaceCells(start: number, end: number, fill: ICellData): void;
|
|
resize(cols: number, fill: ICellData): void;
|
|
fill(fillCellData: ICellData): void;
|
|
copyFrom(line: IBufferLine): void;
|
|
clone(): IBufferLine;
|
|
getTrimmedLength(): number;
|
|
translateToString(trimRight?: boolean, startCol?: number, endCol?: number): string;
|
|
|
|
/* direct access to cell attrs */
|
|
getWidth(index: number): number;
|
|
hasWidth(index: number): number;
|
|
getFg(index: number): number;
|
|
getBg(index: number): number;
|
|
hasContent(index: number): number;
|
|
getCodePoint(index: number): number;
|
|
isCombined(index: number): number;
|
|
getString(index: number): string;
|
|
}
|
|
|
|
export interface IMarker extends IDisposable {
|
|
readonly id: number;
|
|
readonly isDisposed: boolean;
|
|
readonly line: number;
|
|
}
|
|
|
|
export interface IDecPrivateModes {
|
|
applicationCursorKeys: boolean;
|
|
}
|
|
|
|
export interface IRowRange {
|
|
start: number;
|
|
end: number;
|
|
}
|