]>
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; |
59f75555 DI |
36 | buffers: IBufferSet; |
37 | buffer: IBuffer; | |
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 | ||
59f75555 DI |
53 | export interface IBuffer { |
54 | lines: ICircularList<[number, string, number][]>; | |
55 | ydisp: number; | |
56 | ybase: number; | |
57 | y: number; | |
58 | x: number; | |
59 | tabs: any; | |
60 | } | |
61 | ||
62 | export interface IBufferSet { | |
63 | alt: IBuffer; | |
64 | normal: IBuffer; | |
65 | active: IBuffer; | |
66 | ||
67 | activateNormalBuffer(): void; | |
68 | activateAltBuffer(): void; | |
69 | } | |
70 | ||
32b34cbe DI |
71 | export interface ISelectionManager { |
72 | selectionText: string; | |
280b698a DI |
73 | selectionStart: [number, number]; |
74 | selectionEnd: [number, number]; | |
8d12881a DI |
75 | |
76 | setSelection(row: number, col: number, length: number); | |
32b34cbe DI |
77 | } |
78 | ||
1306431e DI |
79 | export interface ICharMeasure { |
80 | width: number; | |
81 | height: number; | |
82 | measure(): void; | |
83 | } | |
84 | ||
4c99c032 DI |
85 | export interface ILinkifier { |
86 | linkifyRow(rowIndex: number): void; | |
87 | attachHypertextLinkHandler(handler: LinkMatcherHandler): void; | |
88 | registerLinkMatcher(regex: RegExp, handler: LinkMatcherHandler, options?: LinkMatcherOptions): number; | |
89 | deregisterLinkMatcher(matcherId: number): boolean; | |
90 | } | |
91 | ||
59f75555 | 92 | export interface ICircularList<T> extends IEventEmitter { |
92068f36 DI |
93 | length: number; |
94 | maxLength: number; | |
95 | ||
96 | forEach(callbackfn: (value: T, index: number, array: T[]) => void): void; | |
97 | get(index: number): T; | |
98 | set(index: number, value: T): void; | |
99 | push(value: T): void; | |
100 | pop(): T; | |
101 | splice(start: number, deleteCount: number, ...items: T[]): void; | |
102 | trimStart(count: number): void; | |
103 | shiftElements(start: number, count: number, offset: number): void; | |
e0d98711 | 104 | } |
04b1ebf1 | 105 | |
59f75555 DI |
106 | export interface IEventEmitter { |
107 | on(type, listener): void; | |
108 | off(type, listener): void; | |
109 | } | |
110 | ||
6198556e DI |
111 | export interface LinkMatcherOptions { |
112 | /** | |
113 | * The index of the link from the regex.match(text) call. This defaults to 0 | |
114 | * (for regular expressions without capture groups). | |
115 | */ | |
116 | matchIndex?: number; | |
117 | /** | |
118 | * A callback that validates an individual link, returning true if valid and | |
119 | * false if invalid. | |
120 | */ | |
121 | validationCallback?: LinkMatcherValidationCallback; | |
7ac4f1a9 DI |
122 | /** |
123 | * The priority of the link matcher, this defines the order in which the link | |
124 | * matcher is evaluated relative to others, from highest to lowest. The | |
125 | * default value is 0. | |
126 | */ | |
127 | priority?: number; | |
6198556e DI |
128 | } |
129 | ||
04b1ebf1 DI |
130 | /** |
131 | * Handles actions generated by the parser. | |
132 | */ | |
133 | export interface IInputHandler { | |
fa3484cd DI |
134 | addChar(char: string, code: number): void; |
135 | ||
f9a286a8 DI |
136 | /** C0 BEL */ bell(): void; |
137 | /** C0 LF */ lineFeed(): void; | |
138 | /** C0 CR */ carriageReturn(): void; | |
139 | /** C0 BS */ backspace(): void; | |
140 | /** C0 HT */ tab(): void; | |
141 | /** C0 SO */ shiftOut(): void; | |
142 | /** C0 SI */ shiftIn(): void; | |
9b662080 | 143 | |
f4846aa1 DI |
144 | /** CSI @ */ insertChars(params?: number[]): void; |
145 | /** CSI A */ cursorUp(params?: number[]): void; | |
146 | /** CSI B */ cursorDown(params?: number[]): void; | |
147 | /** CSI C */ cursorForward(params?: number[]): void; | |
148 | /** CSI D */ cursorBackward(params?: number[]): void; | |
149 | /** CSI E */ cursorNextLine(params?: number[]): void; | |
150 | /** CSI F */ cursorPrecedingLine(params?: number[]): void; | |
151 | /** CSI G */ cursorCharAbsolute(params?: number[]): void; | |
152 | /** CSI H */ cursorPosition(params?: number[]): void; | |
153 | /** CSI I */ cursorForwardTab(params?: number[]): void; | |
154 | /** CSI J */ eraseInDisplay(params?: number[]): void; | |
155 | /** CSI K */ eraseInLine(params?: number[]): void; | |
156 | /** CSI L */ insertLines(params?: number[]): void; | |
157 | /** CSI M */ deleteLines(params?: number[]): void; | |
158 | /** CSI P */ deleteChars(params?: number[]): void; | |
159 | /** CSI S */ scrollUp(params?: number[]): void; | |
160 | /** CSI T */ scrollDown(params?: number[]): void; | |
161 | /** CSI X */ eraseChars(params?: number[]): void; | |
162 | /** CSI Z */ cursorBackwardTab(params?: number[]): void; | |
163 | /** CSI ` */ charPosAbsolute(params?: number[]): void; | |
164 | /** CSI a */ HPositionRelative(params?: number[]): void; | |
165 | /** CSI b */ repeatPrecedingCharacter(params?: number[]): void; | |
166 | /** CSI c */ sendDeviceAttributes(params?: number[]): void; | |
167 | /** CSI d */ linePosAbsolute(params?: number[]): void; | |
168 | /** CSI e */ VPositionRelative(params?: number[]): void; | |
169 | /** CSI f */ HVPosition(params?: number[]): void; | |
170 | /** CSI g */ tabClear(params?: number[]): void; | |
171 | /** CSI h */ setMode(params?: number[]): void; | |
172 | /** CSI l */ resetMode(params?: number[]): void; | |
173 | /** CSI m */ charAttributes(params?: number[]): void; | |
174 | /** CSI n */ deviceStatus(params?: number[]): void; | |
175 | /** CSI p */ softReset(params?: number[]): void; | |
0bd469f5 | 176 | /** CSI q */ setCursorStyle(params?: number[]): void; |
f4846aa1 DI |
177 | /** CSI r */ setScrollRegion(params?: number[]): void; |
178 | /** CSI s */ saveCursor(params?: number[]): void; | |
179 | /** CSI u */ restoreCursor(params?: number[]): void; | |
04b1ebf1 | 180 | } |