UNPKG

@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
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; }