]>
Commit | Line | Data |
---|---|---|
e0d98711 | 1 | /** |
1d300911 | 2 | * @license MIT |
e0d98711 DI |
3 | */ |
4 | ||
4c99c032 DI |
5 | import { LinkMatcherOptions } from './Interfaces'; |
6 | import { LinkMatcherHandler, LinkMatcherValidationCallback } from './Types'; | |
6198556e | 7 | |
824a9c6d PK |
8 | export interface IBrowser { |
9 | isNode: boolean; | |
10 | userAgent: string; | |
11 | platform: string; | |
12 | isFirefox: boolean; | |
13 | isMSIE: boolean; | |
14 | isMac: boolean; | |
15 | isIpad: boolean; | |
16 | isIphone: boolean; | |
17 | isMSWindows: boolean; | |
18 | } | |
19 | ||
e0d98711 | 20 | export interface ITerminal { |
30fcdd6c | 21 | element: HTMLElement; |
e0d98711 | 22 | rowContainer: HTMLElement; |
ad3ae67e | 23 | selectionContainer: HTMLElement; |
8d12881a | 24 | selectionManager: ISelectionManager; |
ad3ae67e | 25 | charMeasure: ICharMeasure; |
824a9c6d | 26 | textarea: HTMLTextAreaElement; |
e0d98711 | 27 | rows: number; |
92068f36 | 28 | cols: number; |
824a9c6d | 29 | browser: IBrowser; |
92068f36 DI |
30 | writeBuffer: string[]; |
31 | children: HTMLElement[]; | |
32 | cursorHidden: boolean; | |
33 | cursorState: number; | |
92068f36 | 34 | defAttr: number; |
95cb6f30 | 35 | scrollback: number; |
bbafdd3d PK |
36 | buffer: any; // This should be a `Buffer` class, but it would result in circular dependency |
37 | viewport: any; // This should be a `Viewport` class, but it would result in circular dependency | |
e0d98711 | 38 | |
30fcdd6c DI |
39 | /** |
40 | * Emit the 'data' event and populate the given data. | |
41 | * @param data The data to populate in the event. | |
42 | */ | |
43 | handler(data: string); | |
e0d98711 DI |
44 | on(event: string, callback: () => void); |
45 | scrollDisp(disp: number, suppressScrollEvent: boolean); | |
824a9c6d | 46 | cancel(ev: Event, force?: boolean); |
92068f36 DI |
47 | log(text: string): void; |
48 | emit(event: string, data: any); | |
bbafdd3d PK |
49 | reset(): void; |
50 | showCursor(): void; | |
92068f36 DI |
51 | } |
52 | ||
32b34cbe DI |
53 | export interface ISelectionManager { |
54 | selectionText: string; | |
280b698a DI |
55 | selectionStart: [number, number]; |
56 | selectionEnd: [number, number]; | |
8d12881a DI |
57 | |
58 | setSelection(row: number, col: number, length: number); | |
32b34cbe DI |
59 | } |
60 | ||
1306431e DI |
61 | export interface ICharMeasure { |
62 | width: number; | |
63 | height: number; | |
64 | measure(): void; | |
65 | } | |
66 | ||
4c99c032 DI |
67 | export interface ILinkifier { |
68 | linkifyRow(rowIndex: number): void; | |
69 | attachHypertextLinkHandler(handler: LinkMatcherHandler): void; | |
70 | registerLinkMatcher(regex: RegExp, handler: LinkMatcherHandler, options?: LinkMatcherOptions): number; | |
71 | deregisterLinkMatcher(matcherId: number): boolean; | |
72 | } | |
73 | ||
92068f36 DI |
74 | interface ICircularList<T> { |
75 | length: number; | |
76 | maxLength: number; | |
77 | ||
78 | forEach(callbackfn: (value: T, index: number, array: T[]) => void): void; | |
79 | get(index: number): T; | |
80 | set(index: number, value: T): void; | |
81 | push(value: T): void; | |
82 | pop(): T; | |
83 | splice(start: number, deleteCount: number, ...items: T[]): void; | |
84 | trimStart(count: number): void; | |
85 | shiftElements(start: number, count: number, offset: number): void; | |
e0d98711 | 86 | } |
04b1ebf1 | 87 | |
6198556e DI |
88 | export interface LinkMatcherOptions { |
89 | /** | |
90 | * The index of the link from the regex.match(text) call. This defaults to 0 | |
91 | * (for regular expressions without capture groups). | |
92 | */ | |
93 | matchIndex?: number; | |
94 | /** | |
95 | * A callback that validates an individual link, returning true if valid and | |
96 | * false if invalid. | |
97 | */ | |
98 | validationCallback?: LinkMatcherValidationCallback; | |
7ac4f1a9 DI |
99 | /** |
100 | * The priority of the link matcher, this defines the order in which the link | |
101 | * matcher is evaluated relative to others, from highest to lowest. The | |
102 | * default value is 0. | |
103 | */ | |
104 | priority?: number; | |
6198556e DI |
105 | } |
106 | ||
04b1ebf1 DI |
107 | /** |
108 | * Handles actions generated by the parser. | |
109 | */ | |
110 | export interface IInputHandler { | |
fa3484cd DI |
111 | addChar(char: string, code: number): void; |
112 | ||
f9a286a8 DI |
113 | /** C0 BEL */ bell(): void; |
114 | /** C0 LF */ lineFeed(): void; | |
115 | /** C0 CR */ carriageReturn(): void; | |
116 | /** C0 BS */ backspace(): void; | |
117 | /** C0 HT */ tab(): void; | |
118 | /** C0 SO */ shiftOut(): void; | |
119 | /** C0 SI */ shiftIn(): void; | |
9b662080 | 120 | |
f4846aa1 DI |
121 | /** CSI @ */ insertChars(params?: number[]): void; |
122 | /** CSI A */ cursorUp(params?: number[]): void; | |
123 | /** CSI B */ cursorDown(params?: number[]): void; | |
124 | /** CSI C */ cursorForward(params?: number[]): void; | |
125 | /** CSI D */ cursorBackward(params?: number[]): void; | |
126 | /** CSI E */ cursorNextLine(params?: number[]): void; | |
127 | /** CSI F */ cursorPrecedingLine(params?: number[]): void; | |
128 | /** CSI G */ cursorCharAbsolute(params?: number[]): void; | |
129 | /** CSI H */ cursorPosition(params?: number[]): void; | |
130 | /** CSI I */ cursorForwardTab(params?: number[]): void; | |
131 | /** CSI J */ eraseInDisplay(params?: number[]): void; | |
132 | /** CSI K */ eraseInLine(params?: number[]): void; | |
133 | /** CSI L */ insertLines(params?: number[]): void; | |
134 | /** CSI M */ deleteLines(params?: number[]): void; | |
135 | /** CSI P */ deleteChars(params?: number[]): void; | |
136 | /** CSI S */ scrollUp(params?: number[]): void; | |
137 | /** CSI T */ scrollDown(params?: number[]): void; | |
138 | /** CSI X */ eraseChars(params?: number[]): void; | |
139 | /** CSI Z */ cursorBackwardTab(params?: number[]): void; | |
140 | /** CSI ` */ charPosAbsolute(params?: number[]): void; | |
141 | /** CSI a */ HPositionRelative(params?: number[]): void; | |
142 | /** CSI b */ repeatPrecedingCharacter(params?: number[]): void; | |
143 | /** CSI c */ sendDeviceAttributes(params?: number[]): void; | |
144 | /** CSI d */ linePosAbsolute(params?: number[]): void; | |
145 | /** CSI e */ VPositionRelative(params?: number[]): void; | |
146 | /** CSI f */ HVPosition(params?: number[]): void; | |
147 | /** CSI g */ tabClear(params?: number[]): void; | |
148 | /** CSI h */ setMode(params?: number[]): void; | |
149 | /** CSI l */ resetMode(params?: number[]): void; | |
150 | /** CSI m */ charAttributes(params?: number[]): void; | |
151 | /** CSI n */ deviceStatus(params?: number[]): void; | |
152 | /** CSI p */ softReset(params?: number[]): void; | |
0bd469f5 | 153 | /** CSI q */ setCursorStyle(params?: number[]): void; |
f4846aa1 DI |
154 | /** CSI r */ setScrollRegion(params?: number[]): void; |
155 | /** CSI s */ saveCursor(params?: number[]): void; | |
156 | /** CSI u */ restoreCursor(params?: number[]): void; | |
04b1ebf1 | 157 | } |