UNPKG

@opentui/core

Version:

OpenTUI is a TypeScript library on a native Zig core for building terminal user interfaces (TUIs)

68 lines (67 loc) 2.65 kB
import { type RenderableOptions, Renderable } from "../Renderable.js"; import type { KeyEvent, PasteEvent } from "../lib/KeyHandler.js"; import type { RenderContext } from "../types.js"; import type { OptimizedBuffer } from "../buffer.js"; import { type Selection } from "../lib/selection.js"; export type EmbeddedTerminalDataSource = "input" | "response"; export interface EmbeddedTerminalOptions extends RenderableOptions<EmbeddedTerminalRenderable> { cols?: number; rows?: number; maxScrollback?: number; onData?: (data: Uint8Array, source: EmbeddedTerminalDataSource) => void; onTerminalResize?: (cols: number, rows: number) => void; onScreenChange?: () => void; selectable?: boolean; } export type EmbeddedTerminalScreen = { text: string; lines: string[]; columns: number; rows: number; cursor: { x: number; y: number; visible: boolean; }; }; export declare class EmbeddedTerminalRenderable extends Renderable { selectable: boolean; private readonly lib; private handle; private _onData?; private _onTerminalResize?; private _onScreenChange?; private keyreleaseHandler; private hadRenderHooks; private selection; constructor(ctx: RenderContext, options: EmbeddedTerminalOptions); get onData(): ((data: Uint8Array, source: EmbeddedTerminalDataSource) => void) | undefined; set onData(value: ((data: Uint8Array, source: EmbeddedTerminalDataSource) => void) | undefined); get onTerminalResize(): ((cols: number, rows: number) => void) | undefined; set onTerminalResize(value: ((cols: number, rows: number) => void) | undefined); get onScreenChange(): (() => void) | undefined; set onScreenChange(value: (() => void) | undefined); screen(): EmbeddedTerminalScreen; write(data: string | Uint8Array): void; invalidate(): void; encodeKey(key: KeyEvent): Uint8Array; encodePaste(bytes: Uint8Array): Uint8Array; shouldStartSelection(x: number, y: number): boolean; onSelectionChanged(selection: Selection | null): boolean; hasSelection(): boolean; getSelectedText(): string; focus(): void; blur(): void; handleKeyPress(key: KeyEvent): boolean; handlePaste(event: PasteEvent): void; render(buffer: OptimizedBuffer, deltaTime: number): void; protected onResize(width: number, height: number): void; protected renderSelf(buffer: OptimizedBuffer): void; protected destroySelf(): void; protected onRemove(): void; private setupMouse; private forwardMouse; private flushResponses; private removeKeyreleaseHandler; private send; }