asciitorium
Version:
an ASCII CLUI framework
45 lines (44 loc) • 1.51 kB
TypeScript
import { Component, ComponentProps } from '../core/Component.js';
import type { State } from '../core/State.js';
import { SizeContext } from '../core/types.js';
export type TextAlignment = 'top-left' | 'top' | 'top-right' | 'left' | 'center' | 'right' | 'bottom-left' | 'bottom' | 'bottom-right';
export interface TextOptions extends Omit<ComponentProps, 'children'> {
content?: string | State<any> | (string | State<any>)[];
textAlign?: TextAlignment;
children?: (string | State<any>) | (string | State<any>)[];
scrollable?: boolean;
wrap?: boolean;
typewriter?: boolean;
typewriterSpeed?: number;
typewriterPauseFactor?: number;
}
export declare class Text extends Component {
private source;
private textAlign?;
private scrollableViewport;
private totalLines;
private scrollOffset;
private isScrollable;
private shouldWrap;
private stateUnsubscribers;
private isTypewriter;
private typewriterSpeed;
private typewriterPauseFactor;
private visibleCharCount;
private typewriterIntervalId?;
private fullContent;
private isPaused;
private pauseTimeoutId?;
focusable: boolean;
hasFocus: boolean;
constructor(options: TextOptions);
private startTypewriter;
private stopTypewriter;
private subscribeToStates;
destroy(): void;
handleEvent(event: string): boolean;
resolveSize(context: SizeContext): void;
getContentAsString(): string;
draw(): string[][];
private wrapText;
}