export interface ITerminal {
element: HTMLElement;
rowContainer: HTMLElement;
+ selectionContainer: HTMLElement;
+ selectionManager: ISelectionManager;
+ charMeasure: ICharMeasure;
textarea: HTMLTextAreaElement;
- ybase: number;
- ydisp: number;
- lines: ICircularList<string>;
rows: number;
cols: number;
browser: IBrowser;
children: HTMLElement[];
cursorHidden: boolean;
cursorState: number;
- x: number;
- y: number;
defAttr: number;
+ scrollback: number;
+ buffers: IBufferSet;
+ buffer: IBuffer;
/**
* Emit the 'data' event and populate the given data.
cancel(ev: Event, force?: boolean);
log(text: string): void;
emit(event: string, data: any);
+ reset(): void;
+ showCursor(): void;
+ blankLine(cur?: boolean, isWrapped?: boolean, cols?: number);
+}
+
+export interface IBuffer {
+ lines: ICircularList<[number, string, number][]>;
+ ydisp: number;
+ ybase: number;
+ y: number;
+ x: number;
+ tabs: any;
+}
+
+export interface IBufferSet {
+ alt: IBuffer;
+ normal: IBuffer;
+ active: IBuffer;
+
+ activateNormalBuffer(): void;
+ activateAltBuffer(): void;
+}
+
+export interface ISelectionManager {
+ selectionText: string;
+ selectionStart: [number, number];
+ selectionEnd: [number, number];
+
+ setSelection(row: number, col: number, length: number);
}
export interface ICharMeasure {
deregisterLinkMatcher(matcherId: number): boolean;
}
-interface ICircularList<T> {
+export interface ICircularList<T> extends IEventEmitter {
length: number;
maxLength: number;
+ forEach: (callbackfn: (value: T, index: number) => void) => void;
- forEach(callbackfn: (value: T, index: number, array: T[]) => void): void;
get(index: number): T;
set(index: number, value: T): void;
push(value: T): void;
shiftElements(start: number, count: number, offset: number): void;
}
+export interface IEventEmitter {
+ on(type, listener): void;
+ off(type, listener): void;
+}
+
export interface LinkMatcherOptions {
/**
* The index of the link from the regex.match(text) call. This defaults to 0
* false if invalid.
*/
validationCallback?: LinkMatcherValidationCallback;
+ /**
+ * The priority of the link matcher, this defines the order in which the link
+ * matcher is evaluated relative to others, from highest to lowest. The
+ * default value is 0.
+ */
+ priority?: number;
}
/**