]>
Commit | Line | Data |
---|---|---|
1 | /** | |
2 | * @license MIT | |
3 | */ | |
4 | ||
5 | import { LinkMatcherOptions } from './Interfaces'; | |
6 | import { LinkMatcherHandler, LinkMatcherValidationCallback } from './Types'; | |
7 | ||
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 | ||
20 | export interface ITerminal { | |
21 | element: HTMLElement; | |
22 | rowContainer: HTMLElement; | |
23 | selectionContainer: HTMLElement; | |
24 | selectionManager: ISelectionManager; | |
25 | charMeasure: ICharMeasure; | |
26 | textarea: HTMLTextAreaElement; | |
27 | rows: number; | |
28 | cols: number; | |
29 | browser: IBrowser; | |
30 | writeBuffer: string[]; | |
31 | children: HTMLElement[]; | |
32 | cursorHidden: boolean; | |
33 | cursorState: number; | |
34 | defAttr: number; | |
35 | scrollback: number; | |
36 | buffers: IBufferSet; | |
37 | buffer: IBuffer; | |
38 | ||
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); | |
44 | on(event: string, callback: () => void); | |
45 | scrollDisp(disp: number, suppressScrollEvent: boolean); | |
46 | cancel(ev: Event, force?: boolean); | |
47 | log(text: string): void; | |
48 | emit(event: string, data: any); | |
49 | reset(): void; | |
50 | showCursor(): void; | |
51 | blankLine(cur?: boolean, isWrapped?: boolean, cols?: number); | |
52 | } | |
53 | ||
54 | export interface IBuffer { | |
55 | lines: ICircularList<[number, string, number][]>; | |
56 | ydisp: number; | |
57 | ybase: number; | |
58 | y: number; | |
59 | x: number; | |
60 | tabs: any; | |
61 | } | |
62 | ||
63 | export interface IBufferSet { | |
64 | alt: IBuffer; | |
65 | normal: IBuffer; | |
66 | active: IBuffer; | |
67 | ||
68 | activateNormalBuffer(): void; | |
69 | activateAltBuffer(): void; | |
70 | } | |
71 | ||
72 | export interface ISelectionManager { | |
73 | selectionText: string; | |
74 | selectionStart: [number, number]; | |
75 | selectionEnd: [number, number]; | |
76 | ||
77 | setSelection(row: number, col: number, length: number); | |
78 | } | |
79 | ||
80 | export interface ICharMeasure { | |
81 | width: number; | |
82 | height: number; | |
83 | measure(): void; | |
84 | } | |
85 | ||
86 | export interface ILinkifier { | |
87 | linkifyRow(rowIndex: number): void; | |
88 | attachHypertextLinkHandler(handler: LinkMatcherHandler): void; | |
89 | registerLinkMatcher(regex: RegExp, handler: LinkMatcherHandler, options?: LinkMatcherOptions): number; | |
90 | deregisterLinkMatcher(matcherId: number): boolean; | |
91 | } | |
92 | ||
93 | export interface ICircularList<T> extends IEventEmitter { | |
94 | length: number; | |
95 | maxLength: number; | |
96 | forEach: (callbackfn: (value: T, index: number) => void) => void; | |
97 | ||
98 | get(index: number): T; | |
99 | set(index: number, value: T): void; | |
100 | push(value: T): void; | |
101 | pop(): T; | |
102 | splice(start: number, deleteCount: number, ...items: T[]): void; | |
103 | trimStart(count: number): void; | |
104 | shiftElements(start: number, count: number, offset: number): void; | |
105 | } | |
106 | ||
107 | export interface IEventEmitter { | |
108 | on(type, listener): void; | |
109 | off(type, listener): void; | |
110 | } | |
111 | ||
112 | export interface LinkMatcherOptions { | |
113 | /** | |
114 | * The index of the link from the regex.match(text) call. This defaults to 0 | |
115 | * (for regular expressions without capture groups). | |
116 | */ | |
117 | matchIndex?: number; | |
118 | /** | |
119 | * A callback that validates an individual link, returning true if valid and | |
120 | * false if invalid. | |
121 | */ | |
122 | validationCallback?: LinkMatcherValidationCallback; | |
123 | /** | |
124 | * The priority of the link matcher, this defines the order in which the link | |
125 | * matcher is evaluated relative to others, from highest to lowest. The | |
126 | * default value is 0. | |
127 | */ | |
128 | priority?: number; | |
129 | } | |
130 | ||
131 | /** | |
132 | * Handles actions generated by the parser. | |
133 | */ | |
134 | export interface IInputHandler { | |
135 | addChar(char: string, code: number): void; | |
136 | ||
137 | /** C0 BEL */ bell(): void; | |
138 | /** C0 LF */ lineFeed(): void; | |
139 | /** C0 CR */ carriageReturn(): void; | |
140 | /** C0 BS */ backspace(): void; | |
141 | /** C0 HT */ tab(): void; | |
142 | /** C0 SO */ shiftOut(): void; | |
143 | /** C0 SI */ shiftIn(): void; | |
144 | ||
145 | /** CSI @ */ insertChars(params?: number[]): void; | |
146 | /** CSI A */ cursorUp(params?: number[]): void; | |
147 | /** CSI B */ cursorDown(params?: number[]): void; | |
148 | /** CSI C */ cursorForward(params?: number[]): void; | |
149 | /** CSI D */ cursorBackward(params?: number[]): void; | |
150 | /** CSI E */ cursorNextLine(params?: number[]): void; | |
151 | /** CSI F */ cursorPrecedingLine(params?: number[]): void; | |
152 | /** CSI G */ cursorCharAbsolute(params?: number[]): void; | |
153 | /** CSI H */ cursorPosition(params?: number[]): void; | |
154 | /** CSI I */ cursorForwardTab(params?: number[]): void; | |
155 | /** CSI J */ eraseInDisplay(params?: number[]): void; | |
156 | /** CSI K */ eraseInLine(params?: number[]): void; | |
157 | /** CSI L */ insertLines(params?: number[]): void; | |
158 | /** CSI M */ deleteLines(params?: number[]): void; | |
159 | /** CSI P */ deleteChars(params?: number[]): void; | |
160 | /** CSI S */ scrollUp(params?: number[]): void; | |
161 | /** CSI T */ scrollDown(params?: number[]): void; | |
162 | /** CSI X */ eraseChars(params?: number[]): void; | |
163 | /** CSI Z */ cursorBackwardTab(params?: number[]): void; | |
164 | /** CSI ` */ charPosAbsolute(params?: number[]): void; | |
165 | /** CSI a */ HPositionRelative(params?: number[]): void; | |
166 | /** CSI b */ repeatPrecedingCharacter(params?: number[]): void; | |
167 | /** CSI c */ sendDeviceAttributes(params?: number[]): void; | |
168 | /** CSI d */ linePosAbsolute(params?: number[]): void; | |
169 | /** CSI e */ VPositionRelative(params?: number[]): void; | |
170 | /** CSI f */ HVPosition(params?: number[]): void; | |
171 | /** CSI g */ tabClear(params?: number[]): void; | |
172 | /** CSI h */ setMode(params?: number[]): void; | |
173 | /** CSI l */ resetMode(params?: number[]): void; | |
174 | /** CSI m */ charAttributes(params?: number[]): void; | |
175 | /** CSI n */ deviceStatus(params?: number[]): void; | |
176 | /** CSI p */ softReset(params?: number[]): void; | |
177 | /** CSI q */ setCursorStyle(params?: number[]): void; | |
178 | /** CSI r */ setScrollRegion(params?: number[]): void; | |
179 | /** CSI s */ saveCursor(params?: number[]): void; | |
180 | /** CSI u */ restoreCursor(params?: number[]): void; | |
181 | } |