5 import { LinkMatcherOptions } from './Interfaces';
6 import { LinkMatcherHandler, LinkMatcherValidationCallback } from './Types';
8 export interface IBrowser {
20 export interface ITerminal {
22 rowContainer: HTMLElement;
23 selectionContainer: HTMLElement;
24 selectionManager: ISelectionManager;
25 charMeasure: ICharMeasure;
26 textarea: HTMLTextAreaElement;
29 lines: ICircularList<string>;
33 writeBuffer: string[];
34 children: HTMLElement[];
35 cursorHidden: boolean;
43 * Emit the 'data' event and populate the given data.
44 * @param data The data to populate in the event.
46 handler(data: string);
47 on(event: string, callback: () => void);
48 scrollDisp(disp: number, suppressScrollEvent: boolean);
49 cancel(ev: Event, force?: boolean);
50 log(text: string): void;
51 emit(event: string, data: any);
54 export interface ISelectionManager {
55 selectionText: string;
56 selectionStart: [number, number];
57 selectionEnd: [number, number];
59 setSelection(row: number, col: number, length: number);
62 export interface ICharMeasure {
68 export interface ILinkifier {
69 linkifyRow(rowIndex: number): void;
70 attachHypertextLinkHandler(handler: LinkMatcherHandler): void;
71 registerLinkMatcher(regex: RegExp, handler: LinkMatcherHandler, options?: LinkMatcherOptions): number;
72 deregisterLinkMatcher(matcherId: number): boolean;
75 interface ICircularList<T> {
79 forEach(callbackfn: (value: T, index: number, array: T[]) => void): void;
80 get(index: number): T;
81 set(index: number, value: T): void;
84 splice(start: number, deleteCount: number, ...items: T[]): void;
85 trimStart(count: number): void;
86 shiftElements(start: number, count: number, offset: number): void;
89 export interface LinkMatcherOptions {
91 * The index of the link from the regex.match(text) call. This defaults to 0
92 * (for regular expressions without capture groups).
96 * A callback that validates an individual link, returning true if valid and
99 validationCallback?: LinkMatcherValidationCallback;
101 * The priority of the link matcher, this defines the order in which the link
102 * matcher is evaluated relative to others, from highest to lowest. The
103 * default value is 0.
109 * Handles actions generated by the parser.
111 export interface IInputHandler {
112 addChar(char: string, code: number): void;
114 /** C0 BEL */ bell(): void;
115 /** C0 LF */ lineFeed(): void;
116 /** C0 CR */ carriageReturn(): void;
117 /** C0 BS */ backspace(): void;
118 /** C0 HT */ tab(): void;
119 /** C0 SO */ shiftOut(): void;
120 /** C0 SI */ shiftIn(): void;
122 /** CSI @ */ insertChars(params?: number[]): void;
123 /** CSI A */ cursorUp(params?: number[]): void;
124 /** CSI B */ cursorDown(params?: number[]): void;
125 /** CSI C */ cursorForward(params?: number[]): void;
126 /** CSI D */ cursorBackward(params?: number[]): void;
127 /** CSI E */ cursorNextLine(params?: number[]): void;
128 /** CSI F */ cursorPrecedingLine(params?: number[]): void;
129 /** CSI G */ cursorCharAbsolute(params?: number[]): void;
130 /** CSI H */ cursorPosition(params?: number[]): void;
131 /** CSI I */ cursorForwardTab(params?: number[]): void;
132 /** CSI J */ eraseInDisplay(params?: number[]): void;
133 /** CSI K */ eraseInLine(params?: number[]): void;
134 /** CSI L */ insertLines(params?: number[]): void;
135 /** CSI M */ deleteLines(params?: number[]): void;
136 /** CSI P */ deleteChars(params?: number[]): void;
137 /** CSI S */ scrollUp(params?: number[]): void;
138 /** CSI T */ scrollDown(params?: number[]): void;
139 /** CSI X */ eraseChars(params?: number[]): void;
140 /** CSI Z */ cursorBackwardTab(params?: number[]): void;
141 /** CSI ` */ charPosAbsolute(params?: number[]): void;
142 /** CSI a */ HPositionRelative(params?: number[]): void;
143 /** CSI b */ repeatPrecedingCharacter(params?: number[]): void;
144 /** CSI c */ sendDeviceAttributes(params?: number[]): void;
145 /** CSI d */ linePosAbsolute(params?: number[]): void;
146 /** CSI e */ VPositionRelative(params?: number[]): void;
147 /** CSI f */ HVPosition(params?: number[]): void;
148 /** CSI g */ tabClear(params?: number[]): void;
149 /** CSI h */ setMode(params?: number[]): void;
150 /** CSI l */ resetMode(params?: number[]): void;
151 /** CSI m */ charAttributes(params?: number[]): void;
152 /** CSI n */ deviceStatus(params?: number[]): void;
153 /** CSI p */ softReset(params?: number[]): void;
154 /** CSI q */ setCursorStyle(params?: number[]): void;
155 /** CSI r */ setScrollRegion(params?: number[]): void;
156 /** CSI s */ saveCursor(params?: number[]): void;
157 /** CSI u */ restoreCursor(params?: number[]): void;