UNPKG

ascii-ui

Version:

Graphic terminal emulator for HTML canvas elements

133 lines (132 loc) 4.11 kB
import { EventManager } from './EventManager'; import { FocusManager } from './FocusManager'; import { Widget, WidgetConstructor } from './Widget'; import { BidirectionalIterator, WidgetContainer } from './WidgetContainer'; export declare type AcceptedImage = HTMLImageElement | HTMLCanvasElement; export declare type EscapeCallback = (params: EscapeCommandParams) => number; export interface ImageOffset { x: number; y: number; } export interface ImageSize { width: number; height: number; } export interface ImageCropParams { srcX: number; srcY: number; srcW: number; srcH: number; } export interface EscapeCommandParams { text: string; index: number; match: string; col: number; line: number; terminal: Terminal; } export interface TileSize { columns: number; rows: number; } export interface TilePosition { col: number; line: number; } export interface CharStyle { font?: string; offsetX?: number; offsetY?: number; fg?: string; bg?: string; } export interface ViewPortOptions { top?: number; right?: number; bottom?: number; left?: number; } export interface TerminalOptions extends CharStyle { tileWidth?: number; tileHeight?: number; columns?: number; rows?: number; minColumns?: number; minRows?: number; maxColumns?: number; maxRows?: number; autoRender?: boolean; autoSize?: boolean; cursor?: boolean; cursorFrequency?: number; decayTime?: number; decayInitialAlpha?: number; commands?: { [key: string]: EscapeCallback; }; viewport?: ViewPortOptions; avoidDoubleRendering?: boolean; verbose?: boolean; clearStyle?: TextTile; } export interface TextTile extends CharStyle { char: string; } export interface ImageTile { image: AcceptedImage; dstW: number; dstH: number; offset?: ImageOffset; crop?: ImageCropParams; } export declare class Terminal implements WidgetContainer { static defaultOptions: TerminalOptions; readonly focusManager: FocusManager; readonly eventManager: EventManager; protected readonly options: TerminalOptions; private readonly canvas; private readonly ctx; private readonly buffer; private dirtyTiles; private readonly decayTiles; private decayChange; private cursorX; private cursorY; private cursorVisible; private updateCursorInterval; private escapeCharactersRegExpString; private lastRenderTime; private readonly attachedWidgets; constructor(canvas: HTMLCanvasElement, options?: TerminalOptions); setOptions(options: TerminalOptions): void; clear(): void; clear(col: number, line: number, width: number, height: number): void; render(): void; renderAll(): void; getViewport(): ViewPortOptions; getSize(): TileSize; isCursorEnabled(): boolean; getCursor(): TilePosition; setCursor(col: number, line: number): void; moveCursor(dx: number, dy: number): void; getTilePosition(x: number, y: number): TilePosition; setTextStyle(style: CharStyle): void; getTextStyle(): CharStyle; setText(text: string, col?: number, line?: number): void; setImage(img: AcceptedImage, col?: number, line?: number, offset?: ImageOffset, size?: ImageSize, crop?: ImageCropParams): void; getText(size?: number, col?: number, line?: number): string; setTiles(tiles: TextTile | TextTile[] | ImageTile | ImageTile[], col?: number, line?: number): void; getParent(): WidgetContainer; attachWidget<WidgetType extends Widget>(WidgetClass: WidgetConstructor<WidgetType>, options?: any): WidgetType; dettachWidget(widget: Widget): boolean; getWidgetAt(column: number, line: number): Widget; getLeafWidgetAt(column: number, line: number): Widget; getWidgetPath(widget: Widget): Array<Widget | WidgetContainer>; [Symbol.iterator](startWidget?: Widget | number): BidirectionalIterator<Widget>; private iterateTiles; private setCursorFrequency; private info; private addDirtyTile; private resize; }