ascii-ui
Version:
Graphic terminal emulator for HTML canvas elements
33 lines (32 loc) • 1.21 kB
TypeScript
import { Terminal, TilePosition, TileSize } from './Terminal';
import { WidgetContainer } from './WidgetContainer';
export declare type WidgetConstructor<WidgetClass> = new (terminal: Terminal, options?: any, parent?: WidgetContainer) => WidgetClass;
export interface WidgetOptions {
col?: number;
line?: number;
width?: number;
height?: number;
focusable?: boolean;
tabIndex?: number;
}
export declare abstract class Widget<OptionsType extends WidgetOptions = WidgetOptions> {
static defaultOptions: WidgetOptions;
protected terminal: Terminal;
protected parent?: WidgetContainer;
protected options: OptionsType;
protected focused: boolean;
protected allocated: boolean;
constructor(terminal: Terminal, options?: OptionsType, parent?: WidgetContainer);
destruct(): void;
getParent(): WidgetContainer;
setOptions(options: OptionsType): void;
getSize(): TileSize;
getPosition(): TilePosition;
isAt(column: number, line: number): boolean;
isFocusable(): boolean;
focus(): boolean;
blur(): boolean;
isFocused(): boolean;
abstract render(): void;
protected abstract updateOptions(changedOptions: OptionsType): void;
}