]> git.proxmox.com Git - mirror_xterm.js.git/blame - src/Interfaces.ts
Merge pull request #926 from ficristo/search-fix
[mirror_xterm.js.git] / src / Interfaces.ts
CommitLineData
e0d98711 1/**
1d300911 2 * @license MIT
e0d98711
DI
3 */
4
4c99c032
DI
5import { LinkMatcherOptions } from './Interfaces';
6import { LinkMatcherHandler, LinkMatcherValidationCallback } from './Types';
6198556e 7
824a9c6d
PK
8export 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 20export 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;
bb526aaa 51 blankLine(cur?: boolean, isWrapped?: boolean, cols?: number);
92068f36
DI
52}
53
59f75555
DI
54export 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
63export interface IBufferSet {
64 alt: IBuffer;
65 normal: IBuffer;
66 active: IBuffer;
67
68 activateNormalBuffer(): void;
69 activateAltBuffer(): void;
70}
71
32b34cbe
DI
72export interface ISelectionManager {
73 selectionText: string;
280b698a
DI
74 selectionStart: [number, number];
75 selectionEnd: [number, number];
8d12881a
DI
76
77 setSelection(row: number, col: number, length: number);
32b34cbe
DI
78}
79
1306431e
DI
80export interface ICharMeasure {
81 width: number;
82 height: number;
83 measure(): void;
84}
85
4c99c032
DI
86export 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
59f75555 93export interface ICircularList<T> extends IEventEmitter {
92068f36
DI
94 length: number;
95 maxLength: number;
f03d00a4 96 forEach: (callbackfn: (value: T, index: number) => void) => void;
92068f36 97
92068f36
DI
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;
e0d98711 105}
04b1ebf1 106
59f75555
DI
107export interface IEventEmitter {
108 on(type, listener): void;
109 off(type, listener): void;
110}
111
6198556e
DI
112export 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;
7ac4f1a9
DI
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;
6198556e
DI
129}
130
04b1ebf1
DI
131/**
132 * Handles actions generated by the parser.
133 */
134export interface IInputHandler {
fa3484cd
DI
135 addChar(char: string, code: number): void;
136
f9a286a8
DI
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;
9b662080 144
f4846aa1
DI
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;
0bd469f5 177 /** CSI q */ setCursorStyle(params?: number[]): void;
f4846aa1
DI
178 /** CSI r */ setScrollRegion(params?: number[]): void;
179 /** CSI s */ saveCursor(params?: number[]): void;
180 /** CSI u */ restoreCursor(params?: number[]): void;
04b1ebf1 181}