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