@opentui/core
Version:
OpenTUI is a TypeScript library on a native Zig core for building terminal user interfaces (TUIs)
96 lines (95 loc) • 2.98 kB
TypeScript
import { type Clock } from "./clock.js";
import { type ParsedKey } from "./parse.keypress.js";
import { type RawMouseEvent } from "./parse.mouse.js";
import type { PasteMetadata } from "./paste.js";
export { SystemClock, type Clock, type TimerHandle } from "./clock.js";
export type StdinResponseProtocol = "csi" | "cpr" | "osc" | "dcs" | "apc" | "unknown";
export type StdinEvent = {
type: "key";
raw: string;
key: ParsedKey;
} | {
type: "mouse";
raw: string;
encoding: "sgr" | "x10";
event: RawMouseEvent;
} | {
type: "paste";
bytes: Uint8Array;
metadata?: PasteMetadata;
} | {
type: "response";
protocol: StdinResponseProtocol;
sequence: string;
};
export interface StdinParserProtocolContext {
kittyKeyboardEnabled: boolean;
privateCapabilityRepliesActive: boolean;
pixelResolutionQueryActive: boolean;
explicitWidthCprActive: boolean;
startupCursorCprActive: boolean;
}
export interface StdinParserOptions {
timeoutMs?: number;
maxPendingBytes?: number;
armTimeouts?: boolean;
onTimeoutFlush?: () => void;
useKittyKeyboard?: boolean;
protocolContext?: Partial<StdinParserProtocolContext>;
clock?: Clock;
}
export declare class StdinParser {
private readonly pending;
private readonly events;
private readonly timeoutMs;
private readonly maxPendingBytes;
private readonly armTimeouts;
private readonly onTimeoutFlush;
private readonly useKittyKeyboard;
private readonly mouseParser;
private readonly clock;
private protocolContext;
private timeoutId;
private destroyed;
private pendingSinceMs;
private pendingTimeoutPaused;
private suspendedPixelResolutionPrefixLength;
private forceFlush;
private justFlushedEsc;
private state;
private cursor;
private unitStart;
private paste;
constructor(options?: StdinParserOptions);
get bufferCapacity(): number;
updateProtocolContext(patch: Partial<StdinParserProtocolContext>): void;
private getAbortableStartupCursorCprState;
abortPendingStartupCursorCpr(): void;
push(data: Uint8Array): void;
read(): StdinEvent | null;
drain(onEvent: (event: StdinEvent) => void): void;
flushTimeout(nowMsValue?: number): void;
private tryForceFlush;
reset(): void;
hasPendingPixelResolutionResponse(): boolean;
pausePendingTimeout(): void;
resumePendingTimeout(): void;
resetMouseState(): void;
destroy(): void;
private ensureAlive;
private scanPending;
private emitKeyOrResponse;
private emitMouse;
private emitLegacyHighByte;
private emitOpaqueResponse;
private consumePrefix;
private takePendingBytes;
private flushPendingOverflow;
private markPending;
private consumePasteBytes;
private pushPasteBytes;
private reconcileDeferredStateWithProtocolContext;
private reconcileTimeoutState;
private clearTimeout;
private resetState;
}