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