]> git.proxmox.com Git - mirror_xterm.js.git/blame - src/Interfaces.ts
Merge pull request #746 from Tyriar/745_colon_word_sep
[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
DI
23 selectionContainer: HTMLElement;
24 charMeasure: ICharMeasure;
824a9c6d 25 textarea: HTMLTextAreaElement;
92068f36 26 ybase: number;
e0d98711 27 ydisp: number;
92068f36 28 lines: ICircularList<string>;
e0d98711 29 rows: number;
92068f36 30 cols: number;
824a9c6d 31 browser: IBrowser;
92068f36
DI
32 writeBuffer: string[];
33 children: HTMLElement[];
34 cursorHidden: boolean;
35 cursorState: number;
36 x: number;
37 y: number;
38 defAttr: number;
e0d98711 39
30fcdd6c
DI
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);
e0d98711
DI
45 on(event: string, callback: () => void);
46 scrollDisp(disp: number, suppressScrollEvent: boolean);
824a9c6d 47 cancel(ev: Event, force?: boolean);
92068f36
DI
48 log(text: string): void;
49 emit(event: string, data: any);
50}
51
32b34cbe
DI
52export interface ISelectionManager {
53 selectionText: string;
54}
55
1306431e
DI
56export interface ICharMeasure {
57 width: number;
58 height: number;
59 measure(): void;
60}
61
4c99c032
DI
62export 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
92068f36
DI
69interface 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;
e0d98711 81}
04b1ebf1 82
6198556e
DI
83export 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;
7ac4f1a9
DI
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;
6198556e
DI
100}
101
04b1ebf1
DI
102/**
103 * Handles actions generated by the parser.
104 */
105export interface IInputHandler {
fa3484cd
DI
106 addChar(char: string, code: number): void;
107
f9a286a8
DI
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;
9b662080 115
f4846aa1
DI
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;
0bd469f5 148 /** CSI q */ setCursorStyle(params?: number[]): void;
f4846aa1
DI
149 /** CSI r */ setScrollRegion(params?: number[]): void;
150 /** CSI s */ saveCursor(params?: number[]): void;
151 /** CSI u */ restoreCursor(params?: number[]): void;
04b1ebf1 152}