@opentui/core
Version:
OpenTUI is a TypeScript library for building terminal user interfaces (TUIs)
121 lines (120 loc) • 3.81 kB
TypeScript
import type { RGBA } from "./lib/RGBA";
import type { EventEmitter } from "events";
import type { Selection } from "./lib/selection";
import type { Renderable } from "./Renderable";
import type { InternalKeyHandler, KeyHandler } from "./lib/KeyHandler";
export declare const TextAttributes: {
NONE: number;
BOLD: number;
DIM: number;
ITALIC: number;
UNDERLINE: number;
BLINK: number;
INVERSE: number;
HIDDEN: number;
STRIKETHROUGH: number;
};
export declare const ATTRIBUTE_BASE_BITS = 8;
export declare const ATTRIBUTE_BASE_MASK = 255;
/**
* Extract the base 8 bits of attributes from a u32 attribute value.
* Currently we only use the first 8 bits for standard text attributes.
*/
export declare function getBaseAttributes(attr: number): number;
export type CursorStyle = "block" | "line" | "underline";
export interface CursorStyleOptions {
style: CursorStyle;
blinking: boolean;
}
export declare enum DebugOverlayCorner {
topLeft = 0,
topRight = 1,
bottomLeft = 2,
bottomRight = 3
}
export type WidthMethod = "wcwidth" | "unicode";
export interface RendererEvents {
resize: (width: number, height: number) => void;
key: (data: Buffer) => void;
"memory:snapshot": (snapshot: {
heapUsed: number;
heapTotal: number;
arrayBuffers: number;
}) => void;
selection: (selection: Selection) => void;
"debugOverlay:toggle": (enabled: boolean) => void;
}
export interface RenderContext extends EventEmitter {
addToHitGrid: (x: number, y: number, width: number, height: number, id: number) => void;
pushHitGridScissorRect: (x: number, y: number, width: number, height: number) => void;
popHitGridScissorRect: () => void;
clearHitGridScissorRects: () => void;
width: number;
height: number;
requestRender: () => void;
setCursorPosition: (x: number, y: number, visible: boolean) => void;
setCursorStyle: (style: CursorStyle, blinking: boolean) => void;
setCursorColor: (color: RGBA) => void;
widthMethod: WidthMethod;
capabilities: any | null;
requestLive: () => void;
dropLive: () => void;
hasSelection: boolean;
getSelection: () => Selection | null;
requestSelectionUpdate: () => void;
currentFocusedRenderable: Renderable | null;
focusRenderable: (renderable: Renderable) => void;
registerLifecyclePass: (renderable: Renderable) => void;
unregisterLifecyclePass: (renderable: Renderable) => void;
getLifecyclePasses: () => Set<Renderable>;
keyInput: KeyHandler;
_internalKeyInput: InternalKeyHandler;
clearSelection: () => void;
startSelection: (renderable: Renderable, x: number, y: number) => void;
updateSelection: (currentRenderable: Renderable | undefined, x: number, y: number, options?: {
finishDragging?: boolean;
}) => void;
}
export type Timeout = ReturnType<typeof setTimeout> | undefined;
export interface ViewportBounds {
x: number;
y: number;
width: number;
height: number;
}
export interface Highlight {
start: number;
end: number;
styleId: number;
priority?: number | null;
hlRef?: number | null;
}
export interface LineInfo {
lineStarts: number[];
lineWidths: number[];
maxLineWidth: number;
lineSources: number[];
lineWraps: number[];
}
export interface LineInfoProvider {
get lineInfo(): LineInfo;
get lineCount(): number;
get virtualLineCount(): number;
get scrollY(): number;
}
export interface CapturedSpan {
text: string;
fg: RGBA;
bg: RGBA;
attributes: number;
width: number;
}
export interface CapturedLine {
spans: CapturedSpan[];
}
export interface CapturedFrame {
cols: number;
rows: number;
cursor: [number, number];
lines: CapturedLine[];
}