react-curse
Version:
A curses-like blazingly fast react renderer
49 lines (48 loc) • 1.49 kB
TypeScript
import { type TextProps } from './components/Text';
import { type TextElement } from './reconciler';
import { type ReactElement } from 'react';
export type Color = number | string | 'Black' | 'Red' | 'Green' | 'Yellow' | 'Blue' | 'Magenta' | 'Cyan' | 'White' | 'BrightBlack' | 'BrightRed' | 'BrightGreen' | 'BrightYellow' | 'BrightBlue' | 'BrightMagenta' | 'BrightCyan' | 'BrightWhite';
export interface Modifier {
background?: Color;
color?: Color;
clear?: boolean;
bold?: boolean;
dim?: boolean;
italic?: boolean;
underline?: boolean;
blinking?: boolean;
inverse?: boolean;
strikethrough?: boolean;
}
export type Char = [string, Modifier];
interface Bounds {
x: number;
y: number;
x1: number;
y1: number;
x2: number;
y2: number;
}
declare class Screen {
buffer: Char[][];
cursor: {
x: number;
y: number;
};
size: {
x1: number;
y1: number;
x2: number;
y2: number;
};
constructor();
generateBuffer(): Char[][];
clearBuffer(): void;
render(elements: TextElement[]): void;
stringAt(value: string, limit: number): number;
renderElement(element: ReactElement | ReactElement[] | any, prevBounds: Bounds, prevProps?: TextProps): void;
fill(bounds: Bounds, prevBounds: Bounds, modifiers: TextProps): void;
put(text: string, bounds: Bounds, modifiers: TextProps): number;
carret(bounds: Bounds): void;
}
export default Screen;