ascii-ui
Version:
Graphic terminal emulator for HTML canvas elements
50 lines (49 loc) • 1.87 kB
TypeScript
import { CharStyle, Terminal, TileSize } from '../Terminal';
import { Widget, WidgetConstructor, WidgetOptions } from '../Widget';
import { BidirectionalIterator, WidgetContainer } from '../WidgetContainer';
export interface GridOptions extends WidgetOptions {
rows: number;
columns: number;
fullSize?: boolean;
borders?: boolean;
borderStyle?: GridBorderOptions;
calculateGridSpace?(available: number, cells: number, isRow: boolean, terminal: Terminal): number[];
}
export interface GridBorderOptions extends CharStyle {
top?: string;
right?: string;
bottom?: string;
left?: string;
topLeft?: string;
topRight?: string;
bottomRight?: string;
bottomLeft?: string;
noTop?: string;
noRight?: string;
noBottom?: string;
noLeft?: string;
cross?: string;
}
export declare class Grid extends Widget<GridOptions> implements WidgetContainer {
static defaultOptions: GridOptions;
private readonly attachedWidgets;
private columnStarts;
private rowStarts;
private borderTiles;
constructor(terminal: Terminal, options: GridOptions, parent?: WidgetContainer);
destruct(): void;
render(): void;
align(): void;
attachWidget<WidgetType>(col: number, line: number, width: number, height: number, WidgetClass: WidgetConstructor<WidgetType>, options: any): WidgetType;
dettachWidget(widget: Widget): boolean;
getWidgetAt(column: number, line: number): Widget;
[Symbol.iterator](startWidget?: Widget | number): BidirectionalIterator<Widget>;
getWidgetGrid(column: number, line: number): Widget;
getCellSize(column: number, line: number): TileSize;
protected updateOptions(changes: GridOptions): void;
private calculateBorders;
private renderBorders;
private alignWidgets;
private recalculateCellSizes;
private resizedEventHandler;
}