@opentui/core 0.5.0 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/platform/ffi.ts", "../src/platform/runtime.ts", "../../../node_modules/.bun/ansi-regex@6.2.2/node_modules/ansi-regex/index.js", "../../../node_modules/.bun/strip-ansi@7.1.2/node_modules/strip-ansi/index.js", "../../../node_modules/.bun/get-east-asian-width@1.4.0/node_modules/get-east-asian-width/lookup.js", "../../../node_modules/.bun/get-east-asian-width@1.4.0/node_modules/get-east-asian-width/index.js", "../../../node_modules/.bun/emoji-regex@10.6.0/node_modules/emoji-regex/index.mjs", "../../../node_modules/.bun/string-width@7.2.0/node_modules/string-width/index.js", "../src/platform/assets.ts", "../src/lib/singleton.ts", "../src/lib/env.ts", "../src/zig.ts", "../src/lib/RGBA.ts", "../src/lib/border.ts", "../src/lib/KeyHandler.ts", "../src/lib/ascii.font.ts", "../src/types.ts", "../src/utils.ts", "../src/lib/styled-text.ts", "../src/lib/hast-styled-text.ts", "../src/lib/clock.ts", "../src/lib/parse.keypress.ts", "../src/lib/parse.keypress-kitty.ts", "../src/lib/scroll-acceleration.ts", "../src/lib/yoga.options.ts", "../src/lib/parse.mouse.ts", "../src/lib/selection.ts", "../src/lib/stdin-parser.ts", "../src/lib/tree-sitter-styled-text.ts", "../src/lib/tree-sitter/client.ts", "../src/lib/debounce.ts", "../src/lib/queue.ts", "../src/lib/tree-sitter/default-parser-assets.bun.ts", "../src/node-asset-target.ts", "../src/platform/runtime-assets.bun.ts", "../src/lib/tree-sitter/default-parsers.ts", "../src/lib/bunfs.ts", "../src/platform/worker.ts", "../src/lib/data-paths.ts", "../src/lib/validate-dir-name.ts", "../src/lib/tree-sitter/resolve-ft.ts", "../src/lib/tree-sitter/index.ts", "../src/lib/extmarks-history.ts", "../src/lib/extmarks.ts", "../src/lib/terminal-palette.ts", "../src/lib/paste.ts", "../src/lib/clipboard.ts", "../src/lib/detect-links.ts", "../src/buffer.ts", "../src/text-buffer.ts", "../../../node_modules/.bun/bun-ffi-structs@0.3.1+1fb4c65d43e298b9/node_modules/bun-ffi-structs/dist/index.js", "../src/zig-structs.ts", "../src/yoga.ts"],
3
+ "sources": ["../src/platform/ffi.ts", "../src/platform/runtime.ts", "../../../node_modules/.bun/ansi-regex@6.2.2/node_modules/ansi-regex/index.js", "../../../node_modules/.bun/strip-ansi@7.1.2/node_modules/strip-ansi/index.js", "../../../node_modules/.bun/get-east-asian-width@1.4.0/node_modules/get-east-asian-width/lookup.js", "../../../node_modules/.bun/get-east-asian-width@1.4.0/node_modules/get-east-asian-width/index.js", "../../../node_modules/.bun/emoji-regex@10.6.0/node_modules/emoji-regex/index.mjs", "../../../node_modules/.bun/string-width@7.2.0/node_modules/string-width/index.js", "../src/platform/assets.ts", "../src/lib/singleton.ts", "../src/lib/env.ts", "../src/zig.ts", "../src/lib/RGBA.ts", "../src/lib/border.ts", "../src/lib/KeyHandler.ts", "../src/lib/ascii.font.ts", "../src/types.ts", "../src/utils.ts", "../src/lib/styled-text.ts", "../src/lib/hast-styled-text.ts", "../src/lib/clock.ts", "../src/lib/parse.keypress.ts", "../src/lib/parse.keypress-kitty.ts", "../src/lib/scroll-acceleration.ts", "../src/lib/yoga.options.ts", "../src/lib/parse.mouse.ts", "../src/lib/selection.ts", "../src/lib/stdin-parser.ts", "../src/lib/tree-sitter-styled-text.ts", "../src/lib/tree-sitter/client.ts", "../src/lib/debounce.ts", "../src/lib/queue.ts", "../src/lib/tree-sitter/default-parser-assets.bun.ts", "../src/node-asset-target.ts", "../src/platform/runtime-assets.bun.ts", "../src/lib/tree-sitter/default-parsers.ts", "../src/lib/bunfs.ts", "../src/platform/worker.ts", "../src/lib/data-paths.ts", "../src/lib/validate-dir-name.ts", "../src/lib/tree-sitter/resolve-ft.ts", "../src/lib/tree-sitter/index.ts", "../src/lib/extmarks-history.ts", "../src/lib/extmarks.ts", "../src/lib/terminal-palette.ts", "../src/lib/paste.ts", "../src/lib/host-clipboard.internal.ts", "../src/lib/host-clipboard.native.ts", "../src/lib/clipboard.ts", "../src/lib/detect-links.ts", "../src/buffer.ts", "../src/text-buffer.ts", "../../../node_modules/.bun/bun-ffi-structs@0.3.1+1fb4c65d43e298b9/node_modules/bun-ffi-structs/dist/index.js", "../src/zig-structs.ts", "../src/yoga.ts"],
4
4
  "sourcesContent": [
5
5
  "import { createRequire } from \"node:module\"\nimport { fileURLToPath } from \"node:url\"\n\ndeclare const pointerBrand: unique symbol\n\n// This module owns OpenTUI's native FFI surface. Portable code imports this\n// file instead of bun:ffi, so backends can keep the same call sites.\n\n// External FFI producers may expose their own branded pointer types. Public APIs\n// that consume foreign pointers should accept the raw pointer shape and normalize\n// it before crossing OpenTUI's native boundary.\nexport type PointerInput = number | bigint\n\n// Runtime pointers are numbers in Bun and bigints in Node's experimental FFI.\n// Keep both in our own type, and narrow only inside a backend that requires it.\nexport type Pointer = PointerInput & { readonly [pointerBrand]: \"Pointer\" }\n\ntype PointerSource = ArrayBufferLike | ArrayBufferView\n\n// Bun accepts numeric pointers only. Keep this type private so Bun's pointer\n// model does not leak into the exported surface.\ntype BunPointer = number\n\n// These names match the Bun FFI type strings OpenTUI uses today. Other\n// backends map them at library load time instead of wrapping every native call.\nexport const FFIType = {\n char: \"char\",\n int8_t: \"int8_t\",\n i8: \"i8\",\n uint8_t: \"uint8_t\",\n u8: \"u8\",\n int16_t: \"int16_t\",\n i16: \"i16\",\n uint16_t: \"uint16_t\",\n u16: \"u16\",\n int32_t: \"int32_t\",\n i32: \"i32\",\n int: \"int\",\n uint32_t: \"uint32_t\",\n u32: \"u32\",\n int64_t: \"int64_t\",\n i64: \"i64\",\n uint64_t: \"uint64_t\",\n u64: \"u64\",\n double: \"double\",\n f64: \"f64\",\n float: \"float\",\n f32: \"f32\",\n bool: \"bool\",\n ptr: \"ptr\",\n pointer: \"pointer\",\n void: \"void\",\n cstring: \"cstring\",\n function: \"function\",\n usize: \"usize\",\n callback: \"callback\",\n napi_env: \"napi_env\",\n napi_value: \"napi_value\",\n buffer: \"buffer\",\n} as const\n\nexport type FFIType = (typeof FFIType)[keyof typeof FFIType]\n// Kept as a source-shape compatibility alias for Bun-style call sites.\nexport type FFITypeOrString = FFIType\n\n// A function definition describes one native symbol. `ptr` overrides the symbol\n// address and follows the same pointer safety rules as normal pointer values.\nexport interface FFIFunction {\n readonly args?: readonly FFITypeOrString[]\n readonly returns?: FFITypeOrString\n readonly ptr?: Pointer\n readonly threadsafe?: boolean\n}\n\n// A callback instance owns a native trampoline. `close()` invalidates `ptr`;\n// callers must not pass that pointer to native code after close.\nexport interface FFICallbackInstance {\n readonly ptr: Pointer | null\n readonly threadsafe: boolean\n close(): void\n}\n\n// A loaded library owns callbacks created through `createCallback()`.\n//\n// Typical use:\n// const callback = library.createCallback(handler, { args: [\"ptr\"], returns: \"void\" })\n// library.symbols.setLogCallback(callback.ptr)\n//\n// `close()` first closes the native library, then closes any callbacks that\n// remain open.\nexport interface Library<Fns extends Record<string, FFIFunction>> {\n symbols: { [K in keyof Fns]: (...args: any[]) => any }\n createCallback(callback: (...args: any[]) => any, definition: FFIFunction): FFICallbackInstance\n close(): void\n}\n\n// A backend normalizes runtime differences once. Do not wrap hot symbol calls\n// here unless a backend must adapt them.\ninterface FfiBackend {\n dlopen<Fns extends Record<string, FFIFunction>>(path: string | URL, symbols: Fns): Library<Fns>\n ptr(value: PointerSource): Pointer\n suffix: string\n toArrayBuffer(pointer: Pointer, offset: number | undefined, length: number): ArrayBuffer\n}\n\ninterface BunFFIFunction {\n readonly args?: readonly FFITypeOrString[]\n readonly returns?: FFITypeOrString\n readonly ptr?: BunPointer\n readonly threadsafe?: boolean\n}\n\ninterface BunFfiLibrary<Fns extends Record<string, BunFFIFunction>> {\n symbols: { [K in keyof Fns]: (...args: any[]) => any }\n close(): void\n}\n\ninterface BunFfiBackend {\n JSCallback: new (callback: (...args: any[]) => any, definition: BunFFIFunction) => FFICallbackInstance\n dlopen<Fns extends Record<string, BunFFIFunction>>(path: string | URL, symbols: Fns): BunFfiLibrary<Fns>\n ptr(value: PointerSource): Pointer\n suffix: string\n toArrayBuffer(pointer: BunPointer, offset: number | undefined, length: number): ArrayBuffer\n}\n\ninterface NodeFFIFunction {\n readonly arguments: readonly string[]\n readonly return: string\n}\n\ninterface NodeDynamicLibrary {\n close(): void\n registerCallback(signature: NodeFFIFunction, callback: (...args: any[]) => any): bigint\n unregisterCallback(pointer: bigint): void\n}\n\ninterface NodeFfiLibrary {\n readonly lib: NodeDynamicLibrary\n readonly functions: Record<string, (...args: any[]) => any>\n}\n\ninterface NodeFfiBackend {\n dlopen(path: string | null, symbols: Record<string, NodeFFIFunction>): NodeFfiLibrary\n getRawPointer(source: ArrayBuffer): bigint\n suffix: string\n toArrayBuffer(pointer: bigint, length: number, copy?: boolean): ArrayBuffer\n}\n\nexport const FFI_UNAVAILABLE = \"OpenTUI native FFI is not available for this runtime yet\"\nexport const BUN_DLOPEN_NULL = \"Bun FFI backend does not support dlopen(null)\"\nexport const LIBRARY_CLOSED = \"Cannot create FFI callback after library.close() has been called\"\nexport const NODE_CALLBACK_THREADSAFE =\n \"Node FFI callbacks are same-thread only and do not support threadsafe callbacks\"\nexport const NODE_NAPI_UNSUPPORTED = \"Node FFI backend does not support Bun N-API FFI types\"\nexport const NODE_POINTER_OVERRIDE = \"Node FFI backend does not support FFIFunction.ptr overrides\"\nexport const NODE_POINTER_ARGUMENT = \"Node FFI pointer arguments must be a Pointer, ArrayBuffer, or ArrayBufferView\"\nexport const NODE_PTR_VALUE =\n \"node:ffi ptr() only supports ArrayBuffer and ArrayBufferView values backed by ArrayBuffer\"\nexport const NODE_STRING_RETURN = \"Node FFI backend does not normalize string return values (yet)\"\nexport const NODE_USIZE_UNSUPPORTED = \"Node FFI backend does not support usize yet\"\nexport const POINTER_NEGATIVE = \"Pointer must be non-negative\"\nexport const POINTER_OFFSET_NEGATIVE = \"Pointer offset must be non-negative\"\nexport const POINTER_OFFSET_UNSAFE = \"Pointer offset must be a safe integer\"\nexport const POINTER_UNSAFE = \"Pointer exceeds safe integer range\"\nconst arrayBufferByteLength = Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, \"byteLength\")?.get\n\nfunction isArrayBuffer(value: unknown): value is ArrayBuffer {\n if (value === null || typeof value !== \"object\" || arrayBufferByteLength == null) return false\n try {\n arrayBufferByteLength.call(value)\n return true\n } catch {\n return false\n }\n}\n\nfunction unavailable(cause?: unknown): never {\n throw new Error(FFI_UNAVAILABLE, { cause })\n}\n\n// The placeholder backend lets non-Bun runtimes load without errors.\nfunction createUnsupportedBackend(cause?: unknown): FfiBackend {\n return {\n dlopen() {\n return unavailable(cause)\n },\n ptr() {\n return unavailable(cause)\n },\n suffix: \"\",\n toArrayBuffer() {\n return unavailable(cause)\n },\n }\n}\n\nconst isBun =\n typeof process !== \"undefined\" &&\n typeof process.versions === \"object\" &&\n process.versions !== null &&\n typeof process.versions.bun === \"string\"\nexport const usesBunFFI = isBun\n\nconst requireModule = createRequire(import.meta.url)\nconst backend = loadBackend()\n\nfunction loadBackend(): FfiBackend {\n // Keep the Bun module import behind the runtime check so Node does not\n // resolve bun:ffi during import.\n if (isBun) {\n return createBunBackend(requireModule(\"bun:ffi\") as BunFfiBackend)\n }\n\n try {\n const nodeFfi = requireModule(\"node:ffi\") as NodeFfiBackend & { default?: NodeFfiBackend }\n return createNodeBackend(nodeFfi.default ?? nodeFfi)\n } catch (error) {\n return createUnsupportedBackend(error)\n }\n}\n\n// Normalize foreign pointer-like values into the current runtime's pointer\n// representation before passing them to native code.\nexport function toPointer(value: PointerInput): Pointer {\n if (isBun && typeof value === \"bigint\") {\n return toSafeNumberPointer(value) as Pointer\n }\n\n if (!isBun && typeof value === \"number\") {\n return toSafeBigIntPointer(value) as Pointer\n }\n\n return value as Pointer\n}\n\nexport function ffiBool(value: boolean): 0 | 1 {\n return value ? 1 : 0\n}\n\nexport function trimNodeFFIOutputBytes(buffer: Uint8Array, length: number): Uint8Array {\n if (length === buffer.byteLength) return buffer\n return new Uint8Array((buffer.buffer as ArrayBuffer).transferToFixedLength(length))\n}\n\n// Convert a bigint pointer to a number only when JavaScript can represent it\n// exactly. A rounded pointer would target the wrong address.\nfunction toSafeNumberPointer(pointer: bigint): number {\n if (pointer < 0n) {\n throw new Error(POINTER_NEGATIVE)\n }\n\n if (pointer > BigInt(Number.MAX_SAFE_INTEGER)) {\n throw new Error(POINTER_UNSAFE)\n }\n\n return Number(pointer)\n}\n\nfunction toSafeBigIntPointer(pointer: number): bigint {\n if (pointer < 0) {\n throw new Error(POINTER_NEGATIVE)\n }\n\n if (!Number.isSafeInteger(pointer)) {\n throw new Error(POINTER_UNSAFE)\n }\n\n return BigInt(pointer)\n}\n\n// Wrap a backend callback so the loaded library can close it later. The wrapper\n// keeps `ptr` live until close, then clears it so callers cannot reuse a stale\n// trampoline pointer.\nfunction createManagedCallback(raw: FFICallbackInstance, callbacks: Set<FFICallbackInstance>): FFICallbackInstance {\n let ptr = raw.ptr\n let closed = false\n\n const instance: FFICallbackInstance = {\n get ptr() {\n return ptr\n },\n get threadsafe() {\n return raw.threadsafe\n },\n close() {\n if (closed) {\n return\n }\n\n closed = true\n callbacks.delete(instance)\n try {\n raw.close()\n } finally {\n // Clear the pointer even if the backend close throws. The trampoline is\n // no longer safe to use.\n ptr = null\n }\n },\n }\n\n callbacks.add(instance)\n\n return instance\n}\n\nfunction normalizeBunDefinitions<Fns extends Record<string, FFIFunction>>(\n definitions: Fns,\n): { [K in keyof Fns]: BunFFIFunction } {\n // Normalize all Bun definitions before `dlopen()`. Bun rejects bigint pointer\n // overrides, so convert them once before loading the native library.\n return Object.fromEntries(\n Object.entries(definitions).map(([name, definition]) => [name, normalizeBunDefinition(definition)]),\n ) as { [K in keyof Fns]: BunFFIFunction }\n}\n\nfunction normalizeBunDefinition(definition: FFIFunction): BunFFIFunction {\n return {\n args: definition.args,\n returns: definition.returns,\n ptr: definition.ptr == null ? undefined : toBunPointer(definition.ptr),\n threadsafe: definition.threadsafe,\n }\n}\n\n// Convert Pointer pointers to Bun pointers at the Bun boundary only.\nfunction toBunPointer(pointer: Pointer): BunPointer {\n return typeof pointer === \"bigint\" ? toSafeNumberPointer(pointer) : pointer\n}\n\n// Create a Bun backend from bun:ffi.\nexport function createBunBackend(bun: BunFfiBackend): FfiBackend {\n return {\n dlopen(path, symbols) {\n if (path === null) {\n throw new Error(BUN_DLOPEN_NULL)\n }\n\n const library = bun.dlopen(path, normalizeBunDefinitions(symbols))\n const callbacks = new Set<FFICallbackInstance>()\n let closed = false\n\n return {\n symbols: library.symbols,\n createCallback(callback, definition) {\n if (closed) {\n // A closed library no longer owns native state. New callbacks would\n // have no cleanup path.\n throw new Error(LIBRARY_CLOSED)\n }\n\n // Bun callbacks are standalone objects. OpenTUI treats them as\n // library-owned to match the future Node FFI shape and to avoid\n // leaked trampolines.\n const raw = new bun.JSCallback(callback, normalizeBunDefinition(definition))\n\n return createManagedCallback(raw, callbacks)\n },\n close() {\n if (closed) {\n return\n }\n\n closed = true\n\n try {\n // Close native state while callbacks still point to live\n // trampolines. Native teardown may call back during final cleanup.\n library.close()\n } finally {\n // After native teardown, close any JS trampolines the caller did\n // not close explicitly.\n for (const callback of [...callbacks]) {\n callback.close()\n }\n }\n },\n }\n },\n ptr: bun.ptr,\n suffix: bun.suffix,\n toArrayBuffer(pointer, offset, length) {\n // Bun only accepts numeric pointers here. Keep the coercion at this\n // backend boundary.\n return bun.toArrayBuffer(toBunPointer(pointer), offset, length)\n },\n }\n}\n\n// Create a Node backend from node:ffi.\nexport function createNodeBackend(nodeFfi: NodeFfiBackend): FfiBackend {\n return {\n dlopen(path, symbols) {\n const { lib, functions } = nodeFfi.dlopen(toNodeLibraryPath(path), normalizeNodeDefinitions(symbols))\n const callbacks = new Set<FFICallbackInstance>()\n let closed = false\n let libraryClosed = false\n\n return {\n symbols: wrapNodeSymbols(functions, symbols),\n createCallback(callback, definition) {\n if (closed) {\n throw new Error(LIBRARY_CLOSED)\n }\n\n if (definition.threadsafe) {\n throw new Error(NODE_CALLBACK_THREADSAFE)\n }\n\n const callbackPointer = lib.registerCallback(normalizeNodeDefinition(definition), callback)\n const raw: FFICallbackInstance = {\n ptr: callbackPointer as Pointer,\n threadsafe: false,\n close() {\n if (!libraryClosed) {\n lib.unregisterCallback(callbackPointer)\n }\n },\n }\n\n return createManagedCallback(raw, callbacks)\n },\n close() {\n if (closed) {\n return\n }\n\n closed = true\n\n try {\n libraryClosed = true\n lib.close()\n } finally {\n for (const callback of [...callbacks]) {\n callback.close()\n }\n }\n },\n }\n },\n ptr(value) {\n return toNodeSourcePointer(nodeFfi, value) as Pointer\n },\n suffix: nodeFfi.suffix,\n toArrayBuffer(pointer, offset, length) {\n return nodeFfi.toArrayBuffer(toBigIntPointer(pointer) + toNodePointerOffset(offset), length, false)\n },\n }\n}\n\nfunction toNodeLibraryPath(path: string | URL | null): string | null {\n return path instanceof URL ? fileURLToPath(path) : path\n}\n\nfunction normalizeNodeDefinitions<Fns extends Record<string, FFIFunction>>(\n definitions: Fns,\n): Record<string, NodeFFIFunction> {\n return Object.fromEntries(\n Object.entries(definitions).map(([name, definition]) => [name, normalizeNodeDefinition(definition)]),\n )\n}\n\nfunction wrapNodeSymbols<Fns extends Record<string, FFIFunction>>(\n functions: Record<string, (...args: any[]) => any>,\n definitions: Fns,\n): { [K in keyof Fns]: (...args: any[]) => any } {\n return Object.fromEntries(\n Object.entries(functions).map(([name, fn]) => [name, wrapNodeSymbol(fn, definitions[name])]),\n ) as { [K in keyof Fns]: (...args: any[]) => any }\n}\n\nfunction wrapNodeSymbol(fn: (...args: any[]) => any, definition: FFIFunction): (...args: any[]) => any {\n const pointerArgIndexes = (definition.args ?? []).flatMap((type, index) =>\n isNodePointerArgumentType(type) ? [index] : [],\n )\n\n if (pointerArgIndexes.length === 0) {\n return fn\n }\n\n // Fixed wrappers avoid rest/slice/spread overhead on pointer-heavy signatures. One-pointer arity 7 is faster generic.\n if (definition.args?.length === 7 && pointerArgIndexes.length >= 2) {\n return wrapNodeSymbol7(fn, pointerArgIndexes)\n }\n\n if (definition.args?.length === 8) {\n return wrapNodeSymbol8(fn, pointerArgIndexes)\n }\n\n const pointerArgs = new Set(pointerArgIndexes)\n const normalize = (value: unknown, index: number) =>\n pointerArgs.has(index) ? toNodePointerArgumentFast(value) : value\n\n switch (definition.args?.length) {\n case 1:\n return function (arg0: unknown) {\n if (arguments.length !== 1) return Reflect.apply(fn, undefined, arguments)\n return fn(normalize(arg0, 0))\n }\n case 2:\n return function (arg0: unknown, arg1: unknown) {\n if (arguments.length !== 2) return Reflect.apply(fn, undefined, arguments)\n return fn(normalize(arg0, 0), normalize(arg1, 1))\n }\n case 3:\n return function (arg0: unknown, arg1: unknown, arg2: unknown) {\n if (arguments.length !== 3) return Reflect.apply(fn, undefined, arguments)\n return fn(normalize(arg0, 0), normalize(arg1, 1), normalize(arg2, 2))\n }\n }\n\n return (...args: any[]) => {\n const normalizedArgs = args.slice()\n\n for (const index of pointerArgIndexes) {\n normalizedArgs[index] = toNodePointerArgument(normalizedArgs[index])\n }\n\n return fn(...normalizedArgs)\n }\n}\n\nfunction wrapNodeSymbol7(fn: (...args: any[]) => any, pointerArgIndexes: number[]): (...args: any[]) => any {\n const pointer0 = pointerArgIndexes.includes(0)\n const pointer1 = pointerArgIndexes.includes(1)\n const pointer2 = pointerArgIndexes.includes(2)\n const pointer3 = pointerArgIndexes.includes(3)\n const pointer4 = pointerArgIndexes.includes(4)\n const pointer5 = pointerArgIndexes.includes(5)\n const pointer6 = pointerArgIndexes.includes(6)\n const normalize = (value: unknown, pointer: boolean) => (pointer ? toNodePointerArgumentFast(value) : value)\n\n return function (\n arg0: unknown,\n arg1: unknown,\n arg2: unknown,\n arg3: unknown,\n arg4: unknown,\n arg5: unknown,\n arg6: unknown,\n ) {\n if (arguments.length !== 7) return Reflect.apply(fn, undefined, arguments)\n return fn(\n normalize(arg0, pointer0),\n normalize(arg1, pointer1),\n normalize(arg2, pointer2),\n normalize(arg3, pointer3),\n normalize(arg4, pointer4),\n normalize(arg5, pointer5),\n normalize(arg6, pointer6),\n )\n }\n}\n\nfunction wrapNodeSymbol8(fn: (...args: any[]) => any, pointerArgIndexes: number[]): (...args: any[]) => any {\n const pointer0 = pointerArgIndexes.includes(0)\n const pointer1 = pointerArgIndexes.includes(1)\n const pointer2 = pointerArgIndexes.includes(2)\n const pointer3 = pointerArgIndexes.includes(3)\n const pointer4 = pointerArgIndexes.includes(4)\n const pointer5 = pointerArgIndexes.includes(5)\n const pointer6 = pointerArgIndexes.includes(6)\n const pointer7 = pointerArgIndexes.includes(7)\n const normalize = (value: unknown, pointer: boolean) => (pointer ? toNodePointerArgumentFast(value) : value)\n\n return function (\n arg0: unknown,\n arg1: unknown,\n arg2: unknown,\n arg3: unknown,\n arg4: unknown,\n arg5: unknown,\n arg6: unknown,\n arg7: unknown,\n ) {\n if (arguments.length !== 8) return Reflect.apply(fn, undefined, arguments)\n return fn(\n normalize(arg0, pointer0),\n normalize(arg1, pointer1),\n normalize(arg2, pointer2),\n normalize(arg3, pointer3),\n normalize(arg4, pointer4),\n normalize(arg5, pointer5),\n normalize(arg6, pointer6),\n normalize(arg7, pointer7),\n )\n }\n}\n\nfunction toNodePointerArgumentFast(value: unknown): bigint | ArrayBuffer | ArrayBufferView {\n if (typeof value === \"bigint\") {\n return value >= 0n ? value : toNodePointerArgument(value)\n }\n\n if (ArrayBuffer.isView(value) && value.byteLength > 0 && value.buffer instanceof ArrayBuffer) {\n return value\n }\n\n if (value instanceof ArrayBuffer && value.byteLength > 0) {\n return value\n }\n\n return toNodePointerArgument(value)\n}\n\nfunction isNodePointerArgumentType(type: FFITypeOrString): boolean {\n return type === FFIType.ptr || type === FFIType.pointer || type === FFIType.function || type === FFIType.callback\n}\n\nfunction toNodePointerArgument(value: unknown): bigint | ArrayBuffer | ArrayBufferView {\n if (value == null) {\n return 0n\n }\n\n if (typeof value === \"number\" || typeof value === \"bigint\") {\n return toBigIntPointer(value as Pointer)\n }\n\n if (ArrayBuffer.isView(value)) {\n if (!isArrayBuffer(value.buffer)) {\n throw new TypeError(NODE_PTR_VALUE)\n }\n\n if (value.byteLength === 0) {\n return 0n\n }\n\n return value\n }\n\n if (isArrayBuffer(value)) {\n if (value.byteLength === 0) {\n return 0n\n }\n\n return value\n }\n\n throw new TypeError(NODE_POINTER_ARGUMENT)\n}\n\nfunction toNodeSourcePointer(nodeFfi: NodeFfiBackend, value: PointerSource): bigint {\n if (ArrayBuffer.isView(value)) {\n if (!isArrayBuffer(value.buffer)) {\n throw new TypeError(NODE_PTR_VALUE)\n }\n\n return nodeFfi.getRawPointer(value.buffer) + BigInt(value.byteOffset)\n }\n\n if (isArrayBuffer(value)) {\n return nodeFfi.getRawPointer(value)\n }\n\n throw new TypeError(NODE_PTR_VALUE)\n}\n\nfunction toNodePointerOffset(offset: number | undefined): bigint {\n if (offset == null) {\n return 0n\n }\n\n if (offset < 0) {\n throw new Error(POINTER_OFFSET_NEGATIVE)\n }\n\n if (!Number.isSafeInteger(offset)) {\n throw new Error(POINTER_OFFSET_UNSAFE)\n }\n\n return BigInt(offset)\n}\n\nfunction normalizeNodeDefinition(definition: FFIFunction): NodeFFIFunction {\n if (definition.ptr != null) {\n throw new Error(NODE_POINTER_OVERRIDE)\n }\n\n return {\n arguments: (definition.args ?? []).map((type) => toNodeFFIType(type, \"parameter\")),\n return: toNodeFFIType(definition.returns ?? FFIType.void, \"result\"),\n }\n}\n\nfunction toNodeFFIType(type: FFITypeOrString, position: \"parameter\" | \"result\"): string {\n switch (type) {\n case FFIType.char:\n return \"char\"\n case FFIType.int8_t:\n case FFIType.i8:\n return \"i8\"\n case FFIType.uint8_t:\n case FFIType.u8:\n return \"u8\"\n case FFIType.int16_t:\n case FFIType.i16:\n return \"i16\"\n case FFIType.uint16_t:\n case FFIType.u16:\n return \"u16\"\n case FFIType.int32_t:\n case FFIType.int:\n case FFIType.i32:\n return \"i32\"\n case FFIType.uint32_t:\n case FFIType.u32:\n return \"u32\"\n case FFIType.int64_t:\n case FFIType.i64:\n return \"i64\"\n case FFIType.uint64_t:\n case FFIType.u64:\n return \"u64\"\n case FFIType.double:\n case FFIType.f64:\n return \"f64\"\n case FFIType.float:\n case FFIType.f32:\n return \"f32\"\n case FFIType.bool:\n return \"bool\"\n case FFIType.ptr:\n case FFIType.pointer:\n return \"pointer\"\n case FFIType.void:\n return \"void\"\n case FFIType.cstring:\n // TODO(audit): cstring vs string semantics differ between backends.\n //\n // The type-name mapping here is intentional, but the runtime marshalling\n // is not equivalent:\n // - Bun's `cstring` parameter rejects raw JavaScript strings; callers\n // must pass a TypedArray, a Pointer, or a CString.\n // - Node's `string` parameter copies a JavaScript string to a\n // temporary NUL-terminated UTF-8 buffer for the duration of the\n // call.\n //\n // Callsites should encode strings into byte buffers and pass pointers\n // instead of relying on either backend's string handling.\n if (position === \"result\") {\n throw new Error(NODE_STRING_RETURN)\n }\n\n return \"string\"\n case FFIType.function:\n case FFIType.callback:\n // Pointer-like types (pointer, string, buffer, arraybuffer, and function)\n // are all passed as pointers in node:ffi.\n return \"pointer\"\n case FFIType.usize:\n // `usize` needs an ABI audit before Node support; use u64 would require\n // BigInt call sites and u32 can truncate pointers.\n throw new Error(NODE_USIZE_UNSUPPORTED)\n case FFIType.napi_env:\n case FFIType.napi_value:\n // Bun's N-API bridge types are not equivalent to raw Node FFI pointers.\n throw new Error(NODE_NAPI_UNSUPPORTED)\n case FFIType.buffer:\n return \"buffer\"\n default:\n return unsupportedNodeFFIType(type)\n }\n}\n\nfunction unsupportedNodeFFIType(type: never): never {\n throw new Error(`Unsupported FFIType for node:ffi: ${String(type)}`)\n}\n\nfunction toBigIntPointer(pointer: Pointer): bigint {\n if (typeof pointer === \"bigint\") {\n if (pointer < 0n) {\n throw new Error(POINTER_NEGATIVE)\n }\n\n return pointer\n }\n\n return toSafeBigIntPointer(pointer)\n}\n\nexport const dlopen = backend.dlopen\nexport const ptr = backend.ptr\nexport const suffix = backend.suffix\nexport const toArrayBuffer = backend.toArrayBuffer\n",
6
6
  "import { existsSync } from \"node:fs\"\nimport { mkdir, writeFile as writeFileNode } from \"node:fs/promises\"\nimport { dirname, isAbsolute, resolve } from \"node:path\"\nimport { fileURLToPath } from \"node:url\"\n\nimport stringWidthLib from \"string-width\"\nimport stripAnsiLib from \"strip-ansi\"\n\nimport { resolveAssetRootPath } from \"./assets.js\"\n\nexport interface WriteFileOptions {\n createPath?: boolean\n mode?: number\n}\n\ninterface BunLike {\n sleep(msOrDate: number | Date): Promise<void>\n stringWidth(text: string): number\n stripANSI(text: string): string\n write(destination: string | URL, data: string | ArrayBufferView, options?: WriteFileOptions): Promise<number>\n}\n\ninterface FileImportModule {\n default: string\n}\n\ntype FilePathFallback = string | URL | (() => string | URL)\n\nexport interface ResolveBundledFilePathOptions {\n loadBundledFileFallback?: boolean\n useAssetRoot?: boolean\n}\n\ntype GlobalWithBun = typeof globalThis & { Bun?: BunLike }\n\nconst TEXT_ENCODER = new TextEncoder()\nconst bun = (globalThis as GlobalWithBun).Bun\n\nexport const sleep: (msOrDate: number | Date) => Promise<void> = bun?.sleep ?? standardSleep\nexport const stringWidth: (text: string) => number = bun?.stringWidth ?? stringWidthLib\nexport const stripANSI: (text: string) => string = bun?.stripANSI ?? stripAnsiLib\nexport const writeFile: (\n destination: string | URL,\n data: string | ArrayBufferView,\n options?: WriteFileOptions,\n) => Promise<number> = bun?.write ?? writeFilePortable\n\n// Bun only discovers bundled file-like assets from the literal import expression at the call site.\nexport async function resolveBundledFilePath(\n key: string,\n loadBundledFile: () => Promise<FileImportModule>,\n fallbackPath: FilePathFallback,\n metaUrl: string,\n options: ResolveBundledFilePathOptions = {},\n): Promise<string> {\n if (options.useAssetRoot ?? true) {\n const configuredPath = resolveAssetRootPath(key)\n if (configuredPath !== undefined) {\n return configuredPath\n }\n }\n\n if (!bun) {\n const path = resolveFallbackFilePath(fallbackPath, metaUrl)\n if (existsSync(path)) {\n return path\n }\n\n return (await loadBundledFilePath(loadBundledFile, metaUrl, options.loadBundledFileFallback ?? false)) ?? path\n }\n\n // A bundled `type: \"file\"` import can resolve to a module whose `default` is not a path string\n // (e.g. when the same file is also emitted as a build entrypoint), so fall back to the source path.\n const loaded = (await loadBundledFile()).default\n if (typeof loaded !== \"string\") {\n return resolveFallbackFilePath(fallbackPath, metaUrl)\n }\n\n return normalizeLoadedFilePath(loaded, metaUrl)\n}\n\nfunction resolveFallbackFilePath(fallbackPath: FilePathFallback, metaUrl: string): string {\n const path = typeof fallbackPath === \"function\" ? fallbackPath() : fallbackPath\n return fileURLToPath(path instanceof URL ? path : new URL(path, metaUrl))\n}\n\nfunction normalizeLoadedFilePath(loadedPath: string, baseUrl: string): string {\n if (loadedPath.startsWith(\"file:\")) {\n return fileURLToPath(loadedPath)\n }\n\n if (isAbsolute(loadedPath)) {\n return loadedPath\n }\n\n return resolve(dirname(fileURLToPath(baseUrl)), loadedPath)\n}\n\nasync function loadBundledFilePath(\n loadBundledFile: () => Promise<FileImportModule>,\n metaUrl: string,\n loadBundledFileFallback: boolean,\n): Promise<string | undefined> {\n const specifier = extractBundledImportSpecifier(loadBundledFile)\n if (!specifier) {\n if (!loadBundledFileFallback) {\n return undefined\n }\n try {\n return normalizeLoadedFilePath((await loadBundledFile()).default, metaUrl)\n } catch {\n return undefined\n }\n }\n\n try {\n const moduleUrl = new URL(specifier, metaUrl)\n const loaded = (await import(moduleUrl.href)) as FileImportModule\n return normalizeLoadedFilePath(loaded.default, moduleUrl.href)\n } catch {\n return undefined\n }\n}\n\nfunction extractBundledImportSpecifier(loadBundledFile: () => Promise<FileImportModule>): string | undefined {\n const match = String(loadBundledFile).match(/\\bimport\\(\\s*([\"'`])([^\"'`]+)\\1/)\n return match?.[2]\n}\n\nfunction standardSleep(msOrDate: number | Date): Promise<void> {\n const ms = msOrDate instanceof Date ? msOrDate.getTime() - Date.now() : msOrDate\n return new Promise((resolve) => setTimeout(resolve, ms))\n}\n\nasync function writeFilePortable(\n destination: string | URL,\n data: string | ArrayBufferView,\n options?: WriteFileOptions,\n): Promise<number> {\n const destinationPath = destination instanceof URL ? fileURLToPath(destination) : destination\n\n if (options?.createPath) {\n await mkdir(dirname(destinationPath), { recursive: true })\n }\n\n const bytes =\n typeof data === \"string\" ? TEXT_ENCODER.encode(data) : new Uint8Array(data.buffer, data.byteOffset, data.byteLength)\n\n await writeFileNode(destinationPath, bytes, { mode: options?.mode })\n\n return bytes.byteLength\n}\n",
@@ -13,7 +13,7 @@
13
13
  "import { statSync } from \"node:fs\"\nimport { isAbsolute, join } from \"node:path\"\nimport { fileURLToPath } from \"node:url\"\n\nimport { registerEnvVar } from \"../lib/env.js\"\n\ntype AssetFallback = string | URL | (() => string | URL)\n\nregisterEnvVar({\n name: \"OTUI_ASSET_ROOT\",\n description: \"Absolute directory containing relocatable OpenTUI runtime assets\",\n type: \"string\",\n default: \"\",\n})\n\nexport function resolveAssetPath(key: string, fallback?: AssetFallback): string {\n validateAssetKey(key)\n\n const configuredPath = resolveAssetRootPath(key)\n if (configuredPath !== undefined) {\n return configuredPath\n }\n\n if (fallback === undefined) {\n throw new Error(`OpenTUI asset ${JSON.stringify(key)} has no package-relative fallback`)\n }\n\n const value = typeof fallback === \"function\" ? fallback() : fallback\n return value instanceof URL ? fileURLToPath(value) : value\n}\n\nexport function resolveAssetRootPath(key: string): string | undefined {\n validateAssetKey(key)\n\n const root = process.env.OTUI_ASSET_ROOT\n if (!root) {\n return undefined\n }\n\n if (!isAbsolute(root)) {\n throw new Error(`OTUI_ASSET_ROOT must be an absolute directory, got ${JSON.stringify(root)}`)\n }\n\n const assetPath = join(root, key)\n let isFile = false\n try {\n isFile = statSync(assetPath).isFile()\n } catch {}\n if (!isFile) {\n throw new Error(`Missing OpenTUI asset ${JSON.stringify(key)} at ${JSON.stringify(assetPath)}`)\n }\n return assetPath\n}\n\nexport function validateAssetKey(key: string): void {\n if (key.length === 0 || isAbsolute(key) || key.includes(\"\\\\\") || key.split(\"/\").includes(\"..\")) {\n throw new Error(`Invalid OpenTUI asset key: ${JSON.stringify(key)}`)\n }\n}\n",
14
14
  "const singletonCacheSymbol = Symbol.for(\"@opentui/core/singleton\")\n\n/**\n * Ensures a value is initialized once per process,\n * persists across Bun hot reloads, and is type-safe.\n */\nexport function singleton<T>(key: string, factory: () => T): T {\n // @ts-expect-error this symbol is only used in this file and is not part of the public API\n const bag = (globalThis[singletonCacheSymbol] ??= {})\n if (!(key in bag)) {\n bag[key] = factory()\n }\n return bag[key] as T\n}\n\nexport function getSingleton<T>(key: string): T | undefined {\n // @ts-expect-error this symbol is only used in this file and is not part of the public API\n const bag = globalThis[singletonCacheSymbol]\n return bag?.[key] as T | undefined\n}\n\nexport function destroySingleton(key: string): void {\n // @ts-expect-error this symbol is only used in this file and is not part of the public API\n const bag = globalThis[singletonCacheSymbol]\n if (bag && key in bag) {\n delete bag[key]\n }\n}\n\nexport function hasSingleton(key: string): boolean {\n // @ts-expect-error this symbol is only used in this file and is not part of the public API\n const bag = globalThis[singletonCacheSymbol]\n return bag && key in bag\n}\n",
15
15
  "import { singleton } from \"./singleton.js\"\n\n/**\n * Environment variable registry\n *\n * Usage:\n * ```ts\n * import { registerEnvVar, env } from \"./lib/env.ts\";\n *\n * // Register environment variables\n * registerEnvVar({\n * name: \"DEBUG\",\n * description: \"Enable debug logging\",\n * type: \"boolean\",\n * default: false\n * });\n *\n * registerEnvVar({\n * name: \"PORT\",\n * description: \"Server port number\",\n * type: \"number\",\n * default: 3000\n * });\n *\n * // Access environment variables\n * if (env.DEBUG) {\n * console.log(\"Debug mode enabled\");\n * }\n *\n * const port = env.PORT; // number\n * ```\n */\n\nexport interface EnvVarConfig {\n name: string\n description: string\n default?: string | boolean | number\n required?: boolean\n type?: \"string\" | \"boolean\" | \"number\"\n}\n\nexport const envRegistry: Record<string, EnvVarConfig> = singleton(\"env-registry\", () => ({}))\n\nexport function registerEnvVar(config: EnvVarConfig): void {\n const existing = envRegistry[config.name]\n if (existing) {\n if (\n existing.description !== config.description ||\n existing.type !== config.type ||\n existing.default !== config.default ||\n existing.required !== config.required\n ) {\n throw new Error(\n `Environment variable \"${config.name}\" is already registered with different configuration. ` +\n `Existing: ${JSON.stringify(existing)}, New: ${JSON.stringify(config)}`,\n )\n }\n return\n }\n envRegistry[config.name] = config\n}\n\nfunction normalizeBoolean(value: string): boolean {\n const lowerValue = value.toLowerCase()\n return [\"true\", \"1\", \"on\", \"yes\"].includes(lowerValue)\n}\n\nfunction parseEnvValue(config: EnvVarConfig): string | boolean | number | undefined {\n const envValue = process.env[config.name]\n\n if (envValue === undefined && config.default !== undefined) {\n return config.default\n }\n\n if (envValue === undefined && config.required === false) {\n return undefined\n }\n\n if (envValue === undefined) {\n throw new Error(`Required environment variable ${config.name} is not set. ${config.description}`)\n }\n\n switch (config.type) {\n case \"boolean\":\n return typeof envValue === \"boolean\" ? envValue : normalizeBoolean(envValue)\n case \"number\":\n const numValue = Number(envValue)\n if (isNaN(numValue)) {\n throw new Error(`Environment variable ${config.name} must be a valid number, got: ${envValue}`)\n }\n return numValue\n case \"string\":\n default:\n return envValue\n }\n}\n\nclass EnvStore {\n private parsedValues: Map<string, string | boolean | number | undefined> = new Map()\n\n get(key: string): any {\n if (this.parsedValues.has(key)) {\n return this.parsedValues.get(key)!\n }\n\n if (!(key in envRegistry)) {\n throw new Error(`Environment variable ${key} is not registered.`)\n }\n\n try {\n const value = parseEnvValue(envRegistry[key])\n this.parsedValues.set(key, value)\n return value\n } catch (error) {\n throw new Error(`Failed to parse env var ${key}: ${error instanceof Error ? error.message : String(error)}`)\n }\n }\n\n has(key: string): boolean {\n return key in envRegistry\n }\n\n clearCache(): void {\n this.parsedValues.clear()\n }\n}\n\nconst envStore = singleton(\"env-store\", () => new EnvStore())\n\nexport function clearEnvCache(): void {\n envStore.clearCache()\n}\n\nexport function generateEnvMarkdown(): string {\n const configs = Object.values(envRegistry)\n\n if (configs.length === 0) {\n return \"# Environment Variables\\n\\nNo environment variables registered.\\n\"\n }\n\n let markdown = \"# Environment Variables\\n\\n\"\n\n for (const config of configs) {\n markdown += `## ${config.name}\\n\\n`\n markdown += `${config.description}\\n\\n`\n\n markdown += `**Type:** \\`${config.type || \"string\"}\\` \\n`\n\n if (config.default !== undefined) {\n const defaultValue = typeof config.default === \"string\" ? `\"${config.default}\"` : String(config.default)\n markdown += `**Default:** \\`${defaultValue}\\`\\n`\n } else if (config.required === false) {\n markdown += \"**Default:** *unset*\\n\"\n } else {\n markdown += \"**Default:** *Required*\\n\"\n }\n\n markdown += \"\\n\"\n }\n\n return markdown\n}\n\nexport function generateEnvColored(): string {\n const configs = Object.values(envRegistry)\n\n if (configs.length === 0) {\n return \"\\x1b[1;36mEnvironment Variables\\x1b[0m\\n\\nNo environment variables registered.\\n\"\n }\n\n let output = \"\\x1b[1;36mEnvironment Variables\\x1b[0m\\n\\n\"\n\n for (const config of configs) {\n output += `\\x1b[1;33m${config.name}\\x1b[0m\\n`\n output += `${config.description}\\n`\n output += `\\x1b[32mType:\\x1b[0m \\x1b[36m${config.type || \"string\"}\\x1b[0m\\n`\n\n if (config.default !== undefined) {\n const defaultValue = typeof config.default === \"string\" ? `\"${config.default}\"` : String(config.default)\n output += `\\x1b[32mDefault:\\x1b[0m \\x1b[35m${defaultValue}\\x1b[0m\\n`\n } else if (config.required === false) {\n output += \"\\x1b[32mDefault:\\x1b[0m \\x1b[35munset\\x1b[0m\\n\"\n } else {\n output += `\\x1b[32mDefault:\\x1b[0m \\x1b[31mRequired\\x1b[0m\\n`\n }\n\n output += \"\\n\"\n }\n\n return output\n}\n\nexport const env = new Proxy({} as Record<string, any>, {\n get(target, prop: string) {\n if (typeof prop !== \"string\") {\n return undefined\n }\n return envStore.get(prop)\n },\n\n has(target, prop: string) {\n return envStore.has(prop)\n },\n\n ownKeys() {\n return Object.keys(envRegistry)\n },\n\n getOwnPropertyDescriptor(target, prop: string) {\n if (envStore.has(prop)) {\n return {\n enumerable: true,\n configurable: true,\n get: () => envStore.get(prop),\n }\n }\n return undefined\n },\n})\n",
16
- "import {\n dlopen,\n ffiBool,\n trimNodeFFIOutputBytes,\n toArrayBuffer,\n ptr,\n toPointer,\n type FFICallbackInstance,\n type Pointer,\n usesBunFFI,\n} from \"./platform/ffi.js\"\nimport { writeFile } from \"./platform/runtime.js\"\nimport { existsSync, writeFileSync } from \"fs\"\nimport { EventEmitter } from \"events\"\nimport {\n type CursorStyle,\n type CursorStyleOptions,\n type TargetChannel,\n type DebugOverlayCorner,\n type WidthMethod,\n type TerminalCapabilities,\n type Highlight,\n type LineInfo,\n type MousePointerStyle,\n type ImageRenderProtocol,\n} from \"./types.js\"\nexport type {\n LineInfo,\n AllocatorStats,\n AudioStreamCreateOptions,\n BuildOptions,\n NativeAudioCaptureStats,\n NativeAudioStreamStats,\n NativeRenderStats,\n}\n\nimport { RGBA } from \"./lib/RGBA.js\"\nimport { OptimizedBuffer } from \"./buffer.js\"\nimport { TextBuffer } from \"./text-buffer.js\"\nimport { env, registerEnvVar } from \"./lib/env.js\"\nimport {\n StyledChunkStruct,\n HighlightStruct,\n LogicalCursorStruct,\n VisualCursorStruct,\n TerminalCapabilitiesStruct,\n EncodedCharStruct,\n LineInfoStruct,\n MeasureResultStruct,\n CursorStateStruct,\n CursorStyleOptionsStruct,\n GridDrawOptionsStruct,\n NativeSpanFeedOptionsStruct,\n NativeSpanFeedStatsStruct,\n ReserveInfoStruct,\n AudioCreateOptionsStruct,\n AudioStartOptionsStruct,\n AudioVoiceOptionsStruct,\n AudioStreamCreateOptionsStruct,\n AudioStreamStatsStruct,\n AudioCaptureStatsStruct,\n NativeAudioStreamCloseReason as NativeAudioStreamCloseReasonValue,\n NativeAudioStreamFormat as NativeAudioStreamFormatValue,\n NativeAudioStreamState as NativeAudioStreamStateValue,\n AudioStatsStruct,\n BuildOptionsStruct,\n AllocatorStatsStruct,\n NativeRenderStatsStruct,\n NativeImageInfoStruct,\n ImageDrawOptionsStruct,\n} from \"./zig-structs.js\"\nimport type {\n NativeSpanFeedOptions,\n NativeSpanFeedStats,\n ReserveInfo,\n AudioCreateOptions,\n AudioStartOptions,\n AudioVoiceOptions,\n AudioStreamCreateOptions,\n NativeAudioStreamCloseReason as NativeAudioStreamCloseReasonType,\n NativeAudioStreamFormat as NativeAudioStreamFormatType,\n NativeAudioStreamState as NativeAudioStreamStateType,\n NativeAudioStreamStats,\n NativeAudioCaptureStats,\n AudioStats,\n BuildOptions,\n AllocatorStats,\n NativeRenderStats,\n NativeImageInfo,\n} from \"./zig-structs.js\"\nexport const NativeAudioStreamState = NativeAudioStreamStateValue\nexport type NativeAudioStreamState = NativeAudioStreamStateType\nexport const NativeAudioStreamCloseReason = NativeAudioStreamCloseReasonValue\nexport type NativeAudioStreamCloseReason = NativeAudioStreamCloseReasonType\nexport const NativeAudioStreamFormat = NativeAudioStreamFormatValue\nexport type NativeAudioStreamFormat = NativeAudioStreamFormatType\nimport { isBunfsPath } from \"./lib/bunfs.js\"\nimport { resolveNativeLibraryPath } from \"#opentui/runtime-assets\"\nimport { allocStruct } from \"bun-ffi-structs\"\n\nregisterEnvVar({\n name: \"OPENTUI_LIBC\",\n description: \"Select Linux native libc package. Supported values: glibc, musl.\",\n type: \"string\",\n default: \"\",\n})\n\nexport type NativeHandle<T extends string> = Pointer & { readonly __nativeHandle: T }\nexport type RendererHandle = NativeHandle<\"renderer\">\nexport type OptimizedBufferHandle = NativeHandle<\"optimized_buffer\">\nexport type TextBufferHandle = NativeHandle<\"text_buffer\">\nexport type TextBufferViewHandle = NativeHandle<\"text_buffer_view\">\nexport type EditBufferHandle = NativeHandle<\"edit_buffer\">\nexport type EditorViewHandle = NativeHandle<\"editor_view\">\nexport type SyntaxStyleHandle = NativeHandle<\"syntax_style\">\nexport type EventSinkHandle = NativeHandle<\"event_sink\">\nexport type AudioEngineHandle = NativeHandle<\"audio_engine\">\nexport type NativeRenderableHandle = NativeHandle<\"native_renderable\">\nexport type ImageHandle = NativeHandle<\"image\">\nlet targetLibPath: string | undefined\nlet targetLibError: Error | undefined\n\ntry {\n targetLibPath = await resolveNativeLibraryPath()\n if (isBunfsPath(targetLibPath)) {\n targetLibPath = targetLibPath.replace(\"../\", \"\")\n }\n if (!existsSync(targetLibPath)) {\n throw new Error(`OpenTUI native library does not exist at ${JSON.stringify(targetLibPath)}`)\n }\n} catch (error) {\n targetLibError = error instanceof Error ? error : new Error(String(error))\n}\n\nregisterEnvVar({\n name: \"OTUI_DEBUG_FFI\",\n description: \"Enable debug logging for the FFI bindings.\",\n type: \"boolean\",\n default: false,\n})\n\nregisterEnvVar({\n name: \"OTUI_TRACE_FFI\",\n description: \"Enable tracing for the FFI bindings.\",\n type: \"boolean\",\n default: false,\n})\n\n// Env vars used in terminal.zig\nregisterEnvVar({\n name: \"OPENTUI_FORCE_WCWIDTH\",\n description: \"Use wcwidth for character width calculations when the variable is present\",\n type: \"string\",\n required: false,\n})\nregisterEnvVar({\n name: \"OPENTUI_FORCE_UNICODE\",\n description: \"Force Mode 2026 Unicode support when the variable is present\",\n type: \"string\",\n required: false,\n})\nregisterEnvVar({\n name: \"OPENTUI_GRAPHICS\",\n description: \"Control Kitty and Sixel graphics detection with the exact value true, 1, false, or 0\",\n type: \"string\",\n required: false,\n})\nregisterEnvVar({\n name: \"OPENTUI_IMAGE_PROTOCOL\",\n description: \"Override image rendering protocol: auto, kitty, sixel, or blocks\",\n type: \"string\",\n default: \"auto\",\n})\nregisterEnvVar({\n name: \"OPENTUI_FORCE_NOZWJ\",\n description: \"Use no_zwj width mode when the variable is present\",\n type: \"string\",\n required: false,\n})\n\n// Cursor & mouse pointer style mappings (avoid recreation on each call)\nconst CURSOR_STYLE_TO_ID = { block: 0, line: 1, underline: 2, default: 3 } as const\nconst CURSOR_ID_TO_STYLE = [\"block\", \"line\", \"underline\", \"default\"] as const\nconst MOUSE_STYLE_TO_ID = { default: 0, pointer: 1, text: 2, crosshair: 3, move: 4, \"not-allowed\": 5 } as const\nconst MAX_FFI_U32 = 0xffff_ffff\n// Global singleton state for FFI tracing to prevent duplicate exit handlers\nlet globalTraceSymbols: Record<string, number[]> | null = null\nlet globalFFILogPath: string | null = null\nlet exitHandlerRegistered = false\n\nfunction toNumber(value: number | bigint): number {\n return typeof value === \"bigint\" ? Number(value) : value\n}\n\nfunction toSafeByteCount(value: number | bigint, label: string): number {\n if (typeof value !== \"bigint\") {\n return value\n }\n\n if (value > BigInt(Number.MAX_SAFE_INTEGER)) {\n throw new RangeError(`${label} exceeds JavaScript safe integer range`)\n }\n\n return Number(value)\n}\n\nfunction toSafeFFIU32Length(value: number, label: string): number {\n if (!Number.isSafeInteger(value) || value < 0 || value > MAX_FFI_U32) {\n throw new RangeError(`${label} exceeds native u32 length limit`)\n }\n\n return value\n}\n\nfunction isFFIU32(value: number): boolean {\n return Number.isInteger(value) && value >= 0 && value <= MAX_FFI_U32\n}\n\nfunction ptrOrNull(value: ArrayBufferView): Pointer | null {\n return value.byteLength === 0 ? null : ptr(value)\n}\n\nfunction rgbaPtr(value: RGBA): Pointer {\n return ptr(value.buffer)\n}\n\nfunction optionalRgbaPtr(value: RGBA | null | undefined): Pointer | null {\n return value ? rgbaPtr(value) : null\n}\n\nfunction getOpenTUILib(libPath?: string) {\n const resolvedLibPath = libPath || targetLibPath\n if (!resolvedLibPath) {\n throw (\n targetLibError ??\n new Error(`OpenTUI is not supported on the current platform: ${process.platform}-${process.arch}`)\n )\n }\n\n const rawSymbols = dlopen(resolvedLibPath, {\n // Logging\n setLogCallback: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n // Event bus\n createEventSink: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n destroyEventSink: {\n args: [\"u32\"],\n returns: \"void\",\n },\n createNativeRenderable: {\n args: [],\n returns: \"u32\",\n },\n destroyNativeRenderable: {\n args: [\"u32\"],\n returns: \"void\",\n },\n nativeRenderableAttachYogaNode: {\n args: [\"u32\", \"ptr\"],\n returns: \"bool\",\n },\n nativeRenderableSetMeasureTarget: {\n args: [\"u32\", \"u32\", \"u32\"],\n returns: \"bool\",\n },\n // Renderer management\n createRenderer: {\n args: [\"u32\", \"u32\", \"u8\", \"u8\", \"ptr\"],\n returns: \"u32\",\n },\n setTerminalEnvVar: {\n args: [\"u32\", \"ptr\", \"u32\", \"ptr\", \"u32\"],\n returns: \"bool\",\n },\n destroyRenderer: {\n args: [\"u32\"],\n returns: \"void\",\n },\n setUseThread: {\n args: [\"u32\", \"bool\"],\n returns: \"void\",\n },\n setClearOnShutdown: {\n args: [\"u32\", \"bool\"],\n returns: \"void\",\n },\n setBackgroundColor: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n setRenderOffset: {\n args: [\"u32\", \"u32\"],\n returns: \"void\",\n },\n resetSplitScrollback: {\n args: [\"u32\", \"u32\", \"u32\"],\n returns: \"u32\",\n },\n syncSplitScrollback: {\n args: [\"u32\", \"u32\"],\n returns: \"u32\",\n },\n getSplitOutputOffset: {\n args: [\"u32\", \"u32\"],\n returns: \"u32\",\n },\n setPendingSplitFooterTransition: {\n args: [\"u32\", \"u8\", \"u32\", \"u32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n clearPendingSplitFooterTransition: {\n args: [\"u32\"],\n returns: \"void\",\n },\n updateStats: {\n args: [\"u32\", \"f64\", \"u32\", \"f64\"],\n returns: \"void\",\n },\n updateMemoryStats: {\n args: [\"u32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n getRenderStats: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n render: {\n args: [\"u32\", \"bool\"],\n returns: \"u8\",\n },\n repaintSplitFooter: {\n args: [\"u32\", \"u32\", \"bool\"],\n returns: \"u64\",\n },\n // Single FFI entrypoint for split commit append. beginFrame/finalizeFrame let\n // native code decide whether this call is a standalone commit or part of a\n // larger batched frame envelope.\n commitSplitFooterSnapshot: {\n args: [\"u32\", \"u32\", \"u32\", \"bool\", \"bool\", \"u32\", \"bool\", \"bool\", \"bool\"],\n returns: \"u64\",\n },\n getNextBuffer: {\n args: [\"u32\"],\n returns: \"u32\",\n },\n getCurrentBuffer: {\n args: [\"u32\"],\n returns: \"u32\",\n },\n rendererSetPaletteState: {\n args: [\"u32\", \"ptr\", \"u32\", \"ptr\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n\n queryPixelResolution: {\n args: [\"u32\"],\n returns: \"void\",\n },\n queryThemeColors: {\n args: [\"u32\"],\n returns: \"void\",\n },\n\n createOptimizedBuffer: {\n args: [\"u32\", \"u32\", \"bool\", \"u8\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n destroyOptimizedBuffer: {\n args: [\"u32\"],\n returns: \"void\",\n },\n\n drawFrameBuffer: {\n args: [\"u32\", \"i32\", \"i32\", \"u32\", \"u32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n getBufferWidth: {\n args: [\"u32\"],\n returns: \"u32\",\n },\n getBufferHeight: {\n args: [\"u32\"],\n returns: \"u32\",\n },\n bufferClear: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n bufferGetCharPtr: {\n args: [\"u32\"],\n returns: \"ptr\",\n },\n bufferGetFgPtr: {\n args: [\"u32\"],\n returns: \"ptr\",\n },\n bufferGetBgPtr: {\n args: [\"u32\"],\n returns: \"ptr\",\n },\n bufferGetAttributesPtr: {\n args: [\"u32\"],\n returns: \"ptr\",\n },\n bufferGetRespectAlpha: {\n args: [\"u32\"],\n returns: \"bool\",\n },\n bufferSetRespectAlpha: {\n args: [\"u32\", \"bool\"],\n returns: \"void\",\n },\n bufferGetId: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n bufferGetRealCharSize: {\n args: [\"u32\"],\n returns: \"u32\",\n },\n bufferWriteResolvedChars: {\n args: [\"u32\", \"ptr\", \"u32\", \"bool\"],\n returns: \"u32\",\n },\n\n bufferDrawText: {\n args: [\"u32\", \"ptr\", \"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n bufferSetCellWithAlphaBlending: {\n args: [\"u32\", \"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n bufferSetCell: {\n args: [\"u32\", \"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n bufferFillRect: {\n args: [\"u32\", \"u32\", \"u32\", \"u32\", \"u32\", \"ptr\"],\n returns: \"void\",\n },\n bufferColorMatrix: {\n args: [\"u32\", \"ptr\", \"ptr\", \"u32\", \"f32\", \"u8\"],\n returns: \"void\",\n },\n bufferColorMatrixUniform: {\n args: [\"u32\", \"ptr\", \"f32\", \"u8\"],\n returns: \"void\",\n },\n bufferResize: {\n args: [\"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n\n // Link API\n linkAlloc: {\n args: [\"ptr\", \"u32\"],\n returns: \"u32\",\n },\n linkGetUrl: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n attributesWithLink: {\n args: [\"u32\", \"u32\"],\n returns: \"u32\",\n },\n attributesGetLinkId: {\n args: [\"u32\"],\n returns: \"u32\",\n },\n\n resizeRenderer: {\n args: [\"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n\n // Cursor functions (now renderer-scoped)\n setCursorPosition: {\n args: [\"u32\", \"i32\", \"i32\", \"bool\"],\n returns: \"void\",\n },\n setCursorColor: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n getCursorState: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n\n // Cursor and mouse pointer style (combined)\n setCursorStyleOptions: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n\n // Debug overlay\n setDebugOverlay: {\n args: [\"u32\", \"bool\", \"u8\"],\n returns: \"void\",\n },\n\n // Terminal control\n clearTerminal: {\n args: [\"u32\"],\n returns: \"void\",\n },\n setTerminalTitle: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n copyToClipboardOSC52: {\n args: [\"u32\", \"u8\", \"ptr\", \"u32\"],\n returns: \"bool\",\n },\n clearClipboardOSC52: {\n args: [\"u32\", \"u8\"],\n returns: \"bool\",\n },\n triggerNotification: {\n args: [\"u32\", \"ptr\", \"u32\", \"ptr\", \"u32\"],\n returns: \"bool\",\n },\n\n bufferDrawSuperSampleBuffer: {\n args: [\"u32\", \"u32\", \"u32\", \"ptr\", \"u32\", \"u8\", \"u32\"],\n returns: \"void\",\n },\n bufferDrawImage: {\n args: [\"u32\", \"u32\", \"ptr\"],\n returns: \"u8\",\n },\n bufferDrawPackedBuffer: {\n args: [\"u32\", \"ptr\", \"u32\", \"u32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n bufferDrawGrayscaleBuffer: {\n args: [\"u32\", \"i32\", \"i32\", \"ptr\", \"u32\", \"u32\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n bufferDrawGrayscaleBufferSupersampled: {\n args: [\"u32\", \"i32\", \"i32\", \"ptr\", \"u32\", \"u32\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n bufferDrawGrid: {\n args: [\"u32\", \"ptr\", \"ptr\", \"ptr\", \"ptr\", \"u32\", \"ptr\", \"u32\", \"ptr\"],\n returns: \"void\",\n },\n bufferDrawBox: {\n args: [\"u32\", \"i32\", \"i32\", \"u32\", \"u32\", \"ptr\", \"u32\", \"ptr\", \"ptr\", \"ptr\", \"ptr\", \"u32\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n bufferPushScissorRect: {\n args: [\"u32\", \"i32\", \"i32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n bufferPopScissorRect: {\n args: [\"u32\"],\n returns: \"void\",\n },\n bufferClearScissorRects: {\n args: [\"u32\"],\n returns: \"void\",\n },\n bufferPushOpacity: {\n args: [\"u32\", \"f32\"],\n returns: \"void\",\n },\n bufferPopOpacity: {\n args: [\"u32\"],\n returns: \"void\",\n },\n bufferGetCurrentOpacity: {\n args: [\"u32\"],\n returns: \"f32\",\n },\n bufferClearOpacity: {\n args: [\"u32\"],\n returns: \"void\",\n },\n\n addToHitGrid: {\n args: [\"u32\", \"i32\", \"i32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n clearCurrentHitGrid: {\n args: [\"u32\"],\n returns: \"void\",\n },\n hitGridPushScissorRect: {\n args: [\"u32\", \"i32\", \"i32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n hitGridPopScissorRect: {\n args: [\"u32\"],\n returns: \"void\",\n },\n hitGridClearScissorRects: {\n args: [\"u32\"],\n returns: \"void\",\n },\n addToCurrentHitGridClipped: {\n args: [\"u32\", \"i32\", \"i32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n checkHit: {\n args: [\"u32\", \"u32\", \"u32\"],\n returns: \"u32\",\n },\n getHitGridDirty: {\n args: [\"u32\"],\n returns: \"bool\",\n },\n dumpHitGrid: {\n args: [\"u32\"],\n returns: \"void\",\n },\n dumpBuffers: {\n args: [\"u32\", \"i64\"],\n returns: \"void\",\n },\n dumpOutputBuffer: {\n args: [\"u32\", \"i64\"],\n returns: \"void\",\n },\n restoreTerminalModes: {\n args: [\"u32\"],\n returns: \"void\",\n },\n enableMouse: {\n args: [\"u32\", \"bool\"],\n returns: \"void\",\n },\n disableMouse: {\n args: [\"u32\"],\n returns: \"void\",\n },\n enableKittyKeyboard: {\n args: [\"u32\", \"u8\"],\n returns: \"void\",\n },\n disableKittyKeyboard: {\n args: [\"u32\"],\n returns: \"void\",\n },\n setKittyKeyboardFlags: {\n args: [\"u32\", \"u8\"],\n returns: \"void\",\n },\n getKittyKeyboardFlags: {\n args: [\"u32\"],\n returns: \"u8\",\n },\n setupTerminal: {\n args: [\"u32\", \"bool\"],\n returns: \"void\",\n },\n suspendRenderer: {\n args: [\"u32\"],\n returns: \"void\",\n },\n resumeRenderer: {\n args: [\"u32\"],\n returns: \"void\",\n },\n writeOut: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n\n // TextBuffer functions\n createTextBuffer: {\n args: [\"u8\"],\n returns: \"u32\",\n },\n destroyTextBuffer: {\n args: [\"u32\"],\n returns: \"void\",\n },\n textBufferGetLength: {\n args: [\"u32\"],\n returns: \"u32\",\n },\n textBufferGetByteSize: {\n args: [\"u32\"],\n returns: \"u32\",\n },\n\n textBufferReset: {\n args: [\"u32\"],\n returns: \"void\",\n },\n textBufferClear: {\n args: [\"u32\"],\n returns: \"void\",\n },\n textBufferSetDefaultFg: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n textBufferSetDefaultBg: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n textBufferSetDefaultAttributes: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n textBufferResetDefaults: {\n args: [\"u32\"],\n returns: \"void\",\n },\n textBufferGetTabWidth: {\n args: [\"u32\"],\n returns: \"u8\",\n },\n textBufferSetTabWidth: {\n args: [\"u32\", \"u8\"],\n returns: \"void\",\n },\n textBufferRegisterMemBuffer: {\n args: [\"u32\", \"ptr\", \"u32\", \"bool\"],\n returns: \"u16\",\n },\n textBufferReplaceMemBuffer: {\n args: [\"u32\", \"u8\", \"ptr\", \"u32\", \"bool\"],\n returns: \"bool\",\n },\n textBufferClearMemRegistry: {\n args: [\"u32\"],\n returns: \"void\",\n },\n textBufferSetTextFromMem: {\n args: [\"u32\", \"u8\"],\n returns: \"void\",\n },\n textBufferAppend: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n textBufferAppendFromMemId: {\n args: [\"u32\", \"u8\"],\n returns: \"void\",\n },\n textBufferLoadFile: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"bool\",\n },\n textBufferSetStyledText: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n textBufferGetLineCount: {\n args: [\"u32\"],\n returns: \"u32\",\n },\n textBufferGetPlainText: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n textBufferAddHighlightByCharRange: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n textBufferAddHighlight: {\n args: [\"u32\", \"u32\", \"ptr\"],\n returns: \"void\",\n },\n textBufferRemoveHighlightsByRef: {\n args: [\"u32\", \"u16\"],\n returns: \"void\",\n },\n textBufferClearLineHighlights: {\n args: [\"u32\", \"u32\"],\n returns: \"void\",\n },\n textBufferClearAllHighlights: {\n args: [\"u32\"],\n returns: \"void\",\n },\n textBufferSetSyntaxStyle: {\n args: [\"u32\", \"u32\"],\n returns: \"bool\",\n },\n textBufferGetLineHighlightsPtr: {\n args: [\"u32\", \"u32\", \"ptr\"],\n returns: \"ptr\",\n },\n textBufferFreeLineHighlights: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\",\n },\n textBufferGetHighlightCount: {\n args: [\"u32\"],\n returns: \"u32\",\n },\n textBufferGetTextRange: {\n args: [\"u32\", \"u32\", \"u32\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n textBufferGetTextRangeByCoords: {\n args: [\"u32\", \"u32\", \"u32\", \"u32\", \"u32\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n\n // TextBufferView functions\n createTextBufferView: {\n args: [\"u32\"],\n returns: \"u32\",\n },\n destroyTextBufferView: {\n args: [\"u32\"],\n returns: \"void\",\n },\n textBufferViewSetSelection: {\n args: [\"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferViewResetSelection: {\n args: [\"u32\"],\n returns: \"void\",\n },\n textBufferViewGetSelectionInfo: {\n args: [\"u32\"],\n returns: \"u64\",\n },\n textBufferViewSetLocalSelection: {\n args: [\"u32\", \"i32\", \"i32\", \"i32\", \"i32\", \"ptr\", \"ptr\"],\n returns: \"bool\",\n },\n textBufferViewUpdateSelection: {\n args: [\"u32\", \"u32\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferViewUpdateLocalSelection: {\n args: [\"u32\", \"i32\", \"i32\", \"i32\", \"i32\", \"ptr\", \"ptr\"],\n returns: \"bool\",\n },\n textBufferViewResetLocalSelection: {\n args: [\"u32\"],\n returns: \"void\",\n },\n textBufferViewSetWrapWidth: {\n args: [\"u32\", \"u32\"],\n returns: \"void\",\n },\n textBufferViewSetWrapMode: {\n args: [\"u32\", \"u8\"],\n returns: \"void\",\n },\n textBufferViewSetFirstLineOffset: {\n args: [\"u32\", \"u32\"],\n returns: \"void\",\n },\n textBufferViewSetViewportSize: {\n args: [\"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n textBufferViewSetViewport: {\n args: [\"u32\", \"u32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n textBufferViewGetVirtualLineCount: {\n args: [\"u32\"],\n returns: \"u32\",\n },\n textBufferViewGetLineInfoDirect: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n textBufferViewGetLogicalLineInfoDirect: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n textBufferViewGetSelectedText: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n textBufferViewGetPlainText: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n textBufferViewSetTabIndicator: {\n args: [\"u32\", \"u32\"],\n returns: \"void\",\n },\n textBufferViewSetTabIndicatorColor: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n textBufferViewSetTruncate: {\n args: [\"u32\", \"bool\"],\n returns: \"void\",\n },\n textBufferViewMeasureForDimensions: {\n args: [\"u32\", \"u32\", \"u32\", \"ptr\"],\n returns: \"bool\",\n },\n bufferDrawTextBufferView: {\n args: [\"u32\", \"u32\", \"i32\", \"i32\"],\n returns: \"void\",\n },\n bufferDrawEditorView: {\n args: [\"u32\", \"u32\", \"i32\", \"i32\"],\n returns: \"void\",\n },\n\n // EditorView functions\n createEditorView: {\n args: [\"u32\", \"u32\", \"u32\"],\n returns: \"u32\",\n },\n destroyEditorView: {\n args: [\"u32\"],\n returns: \"void\",\n },\n editorViewSetViewportSize: {\n args: [\"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n editorViewSetViewport: {\n args: [\"u32\", \"u32\", \"u32\", \"u32\", \"u32\", \"bool\"],\n returns: \"void\",\n },\n editorViewGetViewport: {\n args: [\"u32\", \"ptr\", \"ptr\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewSetScrollMargin: {\n args: [\"u32\", \"f32\"],\n returns: \"void\",\n },\n editorViewSetWrapMode: {\n args: [\"u32\", \"u8\"],\n returns: \"void\",\n },\n editorViewGetVirtualLineCount: {\n args: [\"u32\"],\n returns: \"u32\",\n },\n editorViewGetTotalVirtualLineCount: {\n args: [\"u32\"],\n returns: \"u32\",\n },\n editorViewGetTextBufferView: {\n args: [\"u32\"],\n returns: \"u32\",\n },\n editorViewGetLineInfoDirect: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n editorViewGetLogicalLineInfoDirect: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n\n // EditBuffer functions\n createEditBuffer: {\n args: [\"u8\", \"u32\"],\n returns: \"u32\",\n },\n destroyEditBuffer: {\n args: [\"u32\"],\n returns: \"void\",\n },\n editBufferSetText: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n editBufferSetTextFromMem: {\n args: [\"u32\", \"u8\"],\n returns: \"void\",\n },\n editBufferReplaceText: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n editBufferReplaceTextFromMem: {\n args: [\"u32\", \"u8\"],\n returns: \"void\",\n },\n editBufferGetText: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n editBufferInsertChar: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n editBufferInsertText: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n editBufferDeleteChar: {\n args: [\"u32\"],\n returns: \"void\",\n },\n editBufferDeleteCharBackward: {\n args: [\"u32\"],\n returns: \"void\",\n },\n editBufferDeleteRange: {\n args: [\"u32\", \"u32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n editBufferNewLine: {\n args: [\"u32\"],\n returns: \"void\",\n },\n editBufferDeleteLine: {\n args: [\"u32\"],\n returns: \"void\",\n },\n editBufferMoveCursorLeft: {\n args: [\"u32\"],\n returns: \"void\",\n },\n editBufferMoveCursorRight: {\n args: [\"u32\"],\n returns: \"void\",\n },\n editBufferMoveCursorUp: {\n args: [\"u32\"],\n returns: \"void\",\n },\n editBufferMoveCursorDown: {\n args: [\"u32\"],\n returns: \"void\",\n },\n editBufferGotoLine: {\n args: [\"u32\", \"u32\"],\n returns: \"void\",\n },\n editBufferSetCursor: {\n args: [\"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n editBufferSetCursorToLineCol: {\n args: [\"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n editBufferSetCursorByOffset: {\n args: [\"u32\", \"u32\"],\n returns: \"void\",\n },\n editBufferGetCursorPosition: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n editBufferGetId: {\n args: [\"u32\"],\n returns: \"u16\",\n },\n editBufferGetTextBuffer: {\n args: [\"u32\"],\n returns: \"u32\",\n },\n editBufferDebugLogRope: {\n args: [\"u32\"],\n returns: \"void\",\n },\n editBufferUndo: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n editBufferRedo: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n editBufferCanUndo: {\n args: [\"u32\"],\n returns: \"bool\",\n },\n editBufferCanRedo: {\n args: [\"u32\"],\n returns: \"bool\",\n },\n editBufferClearHistory: {\n args: [\"u32\"],\n returns: \"void\",\n },\n editBufferClear: {\n args: [\"u32\"],\n returns: \"void\",\n },\n editBufferGetNextWordBoundary: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n editBufferGetPrevWordBoundary: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n editBufferGetEOL: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n editBufferOffsetToPosition: {\n args: [\"u32\", \"u32\", \"ptr\"],\n returns: \"bool\",\n },\n editBufferPositionToOffset: {\n args: [\"u32\", \"u32\", \"u32\"],\n returns: \"u32\",\n },\n editBufferGetLineStartOffset: {\n args: [\"u32\", \"u32\"],\n returns: \"u32\",\n },\n editBufferGetTextRange: {\n args: [\"u32\", \"u32\", \"u32\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n editBufferGetTextRangeByCoords: {\n args: [\"u32\", \"u32\", \"u32\", \"u32\", \"u32\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n\n // EditorView selection and editing methods\n editorViewSetSelection: {\n args: [\"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewResetSelection: {\n args: [\"u32\"],\n returns: \"void\",\n },\n editorViewGetSelection: {\n args: [\"u32\"],\n returns: \"u64\",\n },\n editorViewSetLocalSelection: {\n args: [\"u32\", \"i32\", \"i32\", \"i32\", \"i32\", \"ptr\", \"ptr\", \"bool\", \"bool\"],\n returns: \"bool\",\n },\n editorViewUpdateSelection: {\n args: [\"u32\", \"u32\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewUpdateLocalSelection: {\n args: [\"u32\", \"i32\", \"i32\", \"i32\", \"i32\", \"ptr\", \"ptr\", \"bool\", \"bool\"],\n returns: \"bool\",\n },\n editorViewResetLocalSelection: {\n args: [\"u32\"],\n returns: \"void\",\n },\n editorViewGetSelectedTextBytes: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n editorViewGetCursor: {\n args: [\"u32\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewGetText: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n\n // EditorView VisualCursor methods\n editorViewGetVisualCursor: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n\n editorViewMoveUpVisual: {\n args: [\"u32\"],\n returns: \"void\",\n },\n editorViewMoveDownVisual: {\n args: [\"u32\"],\n returns: \"void\",\n },\n editorViewDeleteSelectedText: {\n args: [\"u32\"],\n returns: \"void\",\n },\n editorViewSetCursorByOffset: {\n args: [\"u32\", \"u32\"],\n returns: \"void\",\n },\n editorViewGetNextWordBoundary: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n editorViewGetPrevWordBoundary: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n editorViewGetEOL: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n editorViewGetVisualSOL: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n editorViewGetVisualEOL: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n editorViewSetPlaceholderStyledText: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n editorViewSetTabIndicator: {\n args: [\"u32\", \"u32\"],\n returns: \"void\",\n },\n editorViewSetTabIndicatorColor: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n\n getArenaAllocatedBytes: {\n args: [],\n returns: \"u64\",\n },\n getBuildOptions: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n getAllocatorStats: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n\n // SyntaxStyle functions\n createSyntaxStyle: {\n args: [],\n returns: \"u32\",\n },\n destroySyntaxStyle: {\n args: [\"u32\"],\n returns: \"void\",\n },\n syntaxStyleRegister: {\n args: [\"u32\", \"ptr\", \"u32\", \"ptr\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n syntaxStyleResolveByName: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n syntaxStyleGetStyleCount: {\n args: [\"u32\"],\n returns: \"u32\",\n },\n\n imageInfo: { args: [\"ptr\", \"u32\", \"ptr\"], returns: \"u32\" },\n imageDecode: { args: [\"ptr\", \"u32\", \"ptr\"], returns: \"u32\" },\n imageCreateFromRgba: { args: [\"ptr\", \"u64\", \"u32\", \"u32\", \"u32\", \"ptr\"], returns: \"u32\" },\n imageDestroy: { args: [\"u32\"], returns: \"void\" },\n imageGetInfo: { args: [\"u32\", \"ptr\"], returns: \"u32\" },\n imageGetPixelsPtr: { args: [\"u32\"], returns: \"ptr\" },\n imageClone: { args: [\"u32\", \"ptr\"], returns: \"u32\" },\n imageCopyPixels: { args: [\"u32\", \"ptr\", \"u64\", \"u32\", \"u8\"], returns: \"u32\" },\n imageResize: { args: [\"u32\", \"u32\", \"u32\", \"u32\", \"ptr\"], returns: \"u32\" },\n imageExtract: { args: [\"u32\", \"u32\", \"u32\", \"u32\", \"u32\", \"ptr\"], returns: \"u32\" },\n imageExtend: { args: [\"u32\", \"u32\", \"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\"], returns: \"u32\" },\n imageTransform: { args: [\"u32\", \"u32\", \"ptr\"], returns: \"u32\" },\n imageComposite: { args: [\"u32\", \"u32\", \"i32\", \"i32\", \"u32\", \"u8\", \"ptr\"], returns: \"u32\" },\n\n // Terminal capability functions\n getTerminalCapabilities: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n processCapabilityResponse: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n\n // Unicode encoding API\n encodeUnicode: {\n args: [\"ptr\", \"u32\", \"ptr\", \"ptr\", \"u8\"],\n returns: \"bool\",\n },\n freeUnicode: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\",\n },\n bufferDrawChar: {\n args: [\"u32\", \"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n\n // Yoga layout\n yogaConfigCreate: {\n args: [],\n returns: \"ptr\",\n },\n yogaConfigFree: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n yogaConfigSetUseWebDefaults: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\",\n },\n yogaConfigGetUseWebDefaults: {\n args: [\"ptr\"],\n returns: \"bool\",\n },\n yogaConfigSetPointScaleFactor: {\n args: [\"ptr\", \"f32\"],\n returns: \"void\",\n },\n yogaConfigGetPointScaleFactor: {\n args: [\"ptr\"],\n returns: \"f32\",\n },\n yogaConfigSetErrata: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\",\n },\n yogaConfigGetErrata: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n yogaConfigSetExperimentalFeatureEnabled: {\n args: [\"ptr\", \"u32\", \"bool\"],\n returns: \"void\",\n },\n yogaConfigIsExperimentalFeatureEnabled: {\n args: [\"ptr\", \"u32\"],\n returns: \"bool\",\n },\n yogaNodeCreate: {\n args: [],\n returns: \"ptr\",\n },\n yogaNodeCreateForOpenTUI: {\n args: [],\n returns: \"ptr\",\n },\n yogaNodeCreateWithConfig: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n yogaNodeFree: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n yogaNodeFreeRecursive: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n yogaNodeReset: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n yogaNodeCopyStyle: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n yogaNodeInsertChild: {\n args: [\"ptr\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n yogaNodeRemoveChild: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n yogaNodeRemoveAllChildren: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n yogaNodeGetChild: {\n args: [\"ptr\", \"u32\"],\n returns: \"ptr\",\n },\n yogaNodeGetChildCount: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n yogaNodeGetParent: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n yogaNodeCalculateLayout: {\n args: [\"ptr\", \"f32\", \"f32\", \"u32\"],\n returns: \"void\",\n },\n yogaNodeIsDirty: {\n args: [\"ptr\"],\n returns: \"bool\",\n },\n yogaNodeMarkDirty: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n yogaNodeGetHasNewLayout: {\n args: [\"ptr\"],\n returns: \"bool\",\n },\n yogaNodeSetHasNewLayout: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\",\n },\n yogaNodeSetIsReferenceBaseline: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\",\n },\n yogaNodeIsReferenceBaseline: {\n args: [\"ptr\"],\n returns: \"bool\",\n },\n yogaNodeSetAlwaysFormsContainingBlock: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\",\n },\n yogaNodeGetAlwaysFormsContainingBlock: {\n args: [\"ptr\"],\n returns: \"bool\",\n },\n yogaNodeGetComputedLayout: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n yogaNodeLayoutGetEdge: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"f32\",\n },\n yogaNodeStyleSetEnum: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n yogaNodeStyleGetEnum: {\n args: [\"ptr\", \"u32\"],\n returns: \"u32\",\n },\n yogaNodeStyleSetFloat: {\n args: [\"ptr\", \"u32\", \"f32\"],\n returns: \"void\",\n },\n yogaNodeStyleGetFloat: {\n args: [\"ptr\", \"u32\"],\n returns: \"f32\",\n },\n yogaNodeStyleSetBorder: {\n args: [\"ptr\", \"u32\", \"f32\"],\n returns: \"void\",\n },\n yogaNodeStyleGetBorder: {\n args: [\"ptr\", \"u32\"],\n returns: \"f32\",\n },\n yogaNodeStyleSetValue: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"f32\"],\n returns: \"void\",\n },\n yogaNodeStyleGetValue: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"u64\",\n },\n yogaNodeSetMeasureFunc: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\",\n },\n yogaNodeUnsetMeasureFunc: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n yogaNodeHasMeasureFunc: {\n args: [\"ptr\"],\n returns: \"bool\",\n },\n yogaNodeSetDirtiedFunc: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\",\n },\n yogaNodeUnsetDirtiedFunc: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n yogaStoreMeasureResult: {\n args: [\"f32\", \"f32\"],\n returns: \"void\",\n },\n yogaSetMeasureCallback: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n yogaSetDirtiedCallback: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n\n // Audio\n createAudioEngine: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n destroyAudioEngine: {\n args: [\"u32\"],\n returns: \"void\",\n },\n audioRefreshPlaybackDevices: {\n args: [\"u32\"],\n returns: \"i32\",\n },\n audioGetPlaybackDeviceCount: {\n args: [\"u32\"],\n returns: \"u32\",\n },\n audioGetPlaybackDeviceName: {\n args: [\"u32\", \"u32\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n audioIsPlaybackDeviceDefault: {\n args: [\"u32\", \"u32\"],\n returns: \"bool\",\n },\n audioSelectPlaybackDevice: {\n args: [\"u32\", \"u32\"],\n returns: \"i32\",\n },\n audioClearPlaybackDeviceSelection: {\n args: [\"u32\"],\n returns: \"void\",\n },\n audioRefreshCaptureDevices: {\n args: [\"u32\"],\n returns: \"i32\",\n },\n audioGetCaptureDeviceCount: {\n args: [\"u32\"],\n returns: \"u32\",\n },\n audioGetCaptureDeviceName: {\n args: [\"u32\", \"u32\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n audioIsCaptureDeviceDefault: {\n args: [\"u32\", \"u32\"],\n returns: \"bool\",\n },\n audioSelectCaptureDevice: {\n args: [\"u32\", \"u32\"],\n returns: \"i32\",\n },\n audioClearCaptureDeviceSelection: {\n args: [\"u32\"],\n returns: \"void\",\n },\n audioStartCapture: {\n args: [\"u32\", \"ptr\", \"u32\", \"u32\"],\n returns: \"i32\",\n },\n audioStopCapture: {\n args: [\"u32\"],\n returns: \"i32\",\n },\n audioIsCaptureRunning: {\n args: [\"u32\"],\n returns: \"bool\",\n },\n audioReadCapture: {\n args: [\"u32\", \"ptr\", \"u32\", \"u32\", \"ptr\"],\n returns: \"i32\",\n },\n audioGetCaptureStats: {\n args: [\"u32\", \"ptr\"],\n returns: \"i32\",\n },\n audioStart: {\n args: [\"u32\", \"ptr\"],\n returns: \"i32\",\n },\n audioStartMixer: {\n args: [\"u32\"],\n returns: \"i32\",\n },\n audioStop: {\n args: [\"u32\"],\n returns: \"i32\",\n },\n audioCreateStream: {\n args: [\"u32\", \"ptr\", \"ptr\"],\n returns: \"i32\",\n },\n audioWriteStream: {\n args: [\"u32\", \"u32\", \"ptr\", \"u32\"],\n returns: \"i32\",\n },\n audioEndStream: {\n args: [\"u32\", \"u32\"],\n returns: \"i32\",\n },\n audioRestartStream: {\n args: [\"u32\", \"u32\"],\n returns: \"i32\",\n },\n audioSetStreamVolume: {\n args: [\"u32\", \"u32\", \"f32\"],\n returns: \"i32\",\n },\n audioSetStreamPan: {\n args: [\"u32\", \"u32\", \"f32\"],\n returns: \"i32\",\n },\n audioSetStreamGroup: {\n args: [\"u32\", \"u32\", \"u32\"],\n returns: \"i32\",\n },\n audioGetStreamStats: {\n args: [\"u32\", \"u32\", \"ptr\"],\n returns: \"i32\",\n },\n audioCloseStream: {\n args: [\"u32\", \"u32\", \"u32\", \"ptr\"],\n returns: \"i32\",\n },\n audioLoad: {\n args: [\"u32\", \"ptr\", \"u32\", \"ptr\"],\n returns: \"i32\",\n },\n audioUnload: {\n args: [\"u32\", \"u32\"],\n returns: \"i32\",\n },\n audioPlay: {\n args: [\"u32\", \"u32\", \"ptr\", \"ptr\"],\n returns: \"i32\",\n },\n audioStopVoice: {\n args: [\"u32\", \"u32\"],\n returns: \"i32\",\n },\n audioSetVoiceGroup: {\n args: [\"u32\", \"u32\", \"u32\"],\n returns: \"i32\",\n },\n audioCreateGroup: {\n args: [\"u32\", \"ptr\", \"u32\", \"ptr\"],\n returns: \"i32\",\n },\n audioSetGroupVolume: {\n args: [\"u32\", \"u32\", \"f32\"],\n returns: \"i32\",\n },\n audioSetMasterVolume: {\n args: [\"u32\", \"f32\"],\n returns: \"i32\",\n },\n audioMixToBuffer: {\n args: [\"u32\", \"ptr\", \"u32\", \"u8\"],\n returns: \"i32\",\n },\n audioEnableTap: {\n args: [\"u32\", \"bool\", \"u32\"],\n returns: \"i32\",\n },\n audioReadTap: {\n args: [\"u32\", \"ptr\", \"u32\", \"u8\", \"ptr\"],\n returns: \"i32\",\n },\n audioGetStats: {\n args: [\"u32\", \"ptr\"],\n returns: \"i32\",\n },\n\n // NativeSpanFeed\n createNativeSpanFeed: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n attachNativeSpanFeed: {\n args: [\"ptr\"],\n returns: \"i32\",\n },\n destroyNativeSpanFeed: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n streamWrite: {\n args: [\"ptr\", \"ptr\", \"u32\"],\n returns: \"i32\",\n },\n streamCommit: {\n args: [\"ptr\"],\n returns: \"i32\",\n },\n streamDrainSpans: {\n args: [\"ptr\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n streamClose: {\n args: [\"ptr\"],\n returns: \"i32\",\n },\n streamReserve: {\n args: [\"ptr\", \"u32\", \"ptr\"],\n returns: \"i32\",\n },\n streamCommitReserved: {\n args: [\"ptr\", \"u32\"],\n returns: \"i32\",\n },\n streamSetOptions: {\n args: [\"ptr\", \"ptr\"],\n returns: \"i32\",\n },\n streamGetStats: {\n args: [\"ptr\", \"ptr\"],\n returns: \"i32\",\n },\n streamSetCallback: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n })\n\n if (env.OTUI_DEBUG_FFI || env.OTUI_TRACE_FFI) {\n return {\n ...rawSymbols,\n symbols: convertToDebugSymbols(rawSymbols.symbols),\n }\n }\n\n return rawSymbols\n}\n\nfunction convertToDebugSymbols<T extends Record<string, any>>(symbols: T): T {\n // Initialize global state on first call\n if (!globalTraceSymbols) {\n globalTraceSymbols = {}\n }\n\n // Initialize global debug log path on first call\n if (env.OTUI_DEBUG_FFI && !globalFFILogPath) {\n const now = new Date()\n const timestamp = now.toISOString().replace(/[:.]/g, \"-\").replace(/T/, \"_\").split(\"Z\")[0]\n globalFFILogPath = `ffi_otui_debug_${timestamp}.log`\n }\n\n const debugSymbols: Record<string, any> = {}\n let hasTracing = false\n\n Object.entries(symbols).forEach(([key, value]) => {\n debugSymbols[key] = value\n })\n\n if (env.OTUI_DEBUG_FFI && globalFFILogPath) {\n const logPath = globalFFILogPath\n const writeSync = (msg: string) => {\n writeFileSync(logPath, msg + \"\\n\", { flag: \"a\" })\n }\n\n Object.entries(symbols).forEach(([key, value]) => {\n if (typeof value === \"function\") {\n debugSymbols[key] = (...args: any[]) => {\n writeSync(`${key}(${args.map((arg) => String(arg)).join(\", \")})`)\n const result = value(...args)\n writeSync(`${key} returned: ${String(result)}`)\n return result\n }\n }\n })\n }\n\n if (env.OTUI_TRACE_FFI) {\n hasTracing = true\n Object.entries(symbols).forEach(([key, value]) => {\n if (typeof value === \"function\") {\n // Initialize trace array for this symbol if not exists\n if (!globalTraceSymbols![key]) {\n globalTraceSymbols![key] = []\n }\n\n const originalFunc = debugSymbols[key]\n debugSymbols[key] = (...args: any[]) => {\n const start = performance.now()\n const result = originalFunc(...args)\n const end = performance.now()\n globalTraceSymbols![key].push(end - start)\n return result\n }\n }\n })\n }\n\n // Register exit handler only once\n if ((env.OTUI_DEBUG_FFI || env.OTUI_TRACE_FFI) && !exitHandlerRegistered) {\n exitHandlerRegistered = true\n\n process.on(\"exit\", () => {\n if (globalTraceSymbols) {\n const allStats: Array<{\n name: string\n count: number\n total: number\n average: number\n min: number\n max: number\n median: number\n p90: number\n p99: number\n }> = []\n\n for (const [key, timings] of Object.entries(globalTraceSymbols)) {\n if (!Array.isArray(timings) || timings.length === 0) {\n continue\n }\n\n const sortedTimings = [...timings].sort((a, b) => a - b)\n const count = sortedTimings.length\n\n const total = sortedTimings.reduce((acc, t) => acc + t, 0)\n const average = total / count\n const min = sortedTimings[0]\n const max = sortedTimings[count - 1]\n\n const medianIndex = Math.floor(count / 2)\n const p90Index = Math.floor(count * 0.9)\n const p99Index = Math.floor(count * 0.99)\n\n const median = sortedTimings[medianIndex]\n const p90 = sortedTimings[Math.min(p90Index, count - 1)]\n const p99 = sortedTimings[Math.min(p99Index, count - 1)]\n\n allStats.push({\n name: key,\n count,\n total,\n average,\n min,\n max,\n median,\n p90,\n p99,\n })\n }\n\n allStats.sort((a, b) => b.total - a.total)\n\n const lines: string[] = []\n lines.push(\"\\n--- OpenTUI FFI Call Performance ---\")\n lines.push(\"Sorted by total time spent (descending)\")\n lines.push(\n \"-------------------------------------------------------------------------------------------------------------------------\",\n )\n\n if (allStats.length === 0) {\n lines.push(\"No trace data collected or all symbols had zero calls.\")\n } else {\n const nameHeader = \"Symbol\"\n const callsHeader = \"Calls\"\n const totalHeader = \"Total (ms)\"\n const avgHeader = \"Avg (ms)\"\n const minHeader = \"Min (ms)\"\n const maxHeader = \"Max (ms)\"\n const medHeader = \"Med (ms)\"\n const p90Header = \"P90 (ms)\"\n const p99Header = \"P99 (ms)\"\n\n const nameWidth = Math.max(nameHeader.length, ...allStats.map((s) => s.name.length))\n const countWidth = Math.max(callsHeader.length, ...allStats.map((s) => String(s.count).length))\n const totalWidth = Math.max(totalHeader.length, ...allStats.map((s) => s.total.toFixed(2).length))\n const avgWidth = Math.max(avgHeader.length, ...allStats.map((s) => s.average.toFixed(2).length))\n const statWidthMin = Math.max(minHeader.length, ...allStats.map((s) => s.min.toFixed(2).length))\n const statWidthMax = Math.max(maxHeader.length, ...allStats.map((s) => s.max.toFixed(2).length))\n const medianWidth = Math.max(medHeader.length, ...allStats.map((s) => s.median.toFixed(2).length))\n const p90Width = Math.max(p90Header.length, ...allStats.map((s) => s.p90.toFixed(2).length))\n const p99Width = Math.max(p99Header.length, ...allStats.map((s) => s.p99.toFixed(2).length))\n\n lines.push(\n `${nameHeader.padEnd(nameWidth)} | ` +\n `${callsHeader.padStart(countWidth)} | ` +\n `${totalHeader.padStart(totalWidth)} | ` +\n `${avgHeader.padStart(avgWidth)} | ` +\n `${minHeader.padStart(statWidthMin)} | ` +\n `${maxHeader.padStart(statWidthMax)} | ` +\n `${medHeader.padStart(medianWidth)} | ` +\n `${p90Header.padStart(p90Width)} | ` +\n `${p99Header.padStart(p99Width)}`,\n )\n lines.push(\n `${\"-\".repeat(nameWidth)}-+-${\"-\".repeat(countWidth)}-+-${\"-\".repeat(totalWidth)}-+-${\"-\".repeat(avgWidth)}-+-${\"-\".repeat(statWidthMin)}-+-${\"-\".repeat(statWidthMax)}-+-${\"-\".repeat(medianWidth)}-+-${\"-\".repeat(p90Width)}-+-${\"-\".repeat(p99Width)}`,\n )\n\n allStats.forEach((stat) => {\n lines.push(\n `${stat.name.padEnd(nameWidth)} | ` +\n `${String(stat.count).padStart(countWidth)} | ` +\n `${stat.total.toFixed(2).padStart(totalWidth)} | ` +\n `${stat.average.toFixed(2).padStart(avgWidth)} | ` +\n `${stat.min.toFixed(2).padStart(statWidthMin)} | ` +\n `${stat.max.toFixed(2).padStart(statWidthMax)} | ` +\n `${stat.median.toFixed(2).padStart(medianWidth)} | ` +\n `${stat.p90.toFixed(2).padStart(p90Width)} | ` +\n `${stat.p99.toFixed(2).padStart(p99Width)}`,\n )\n })\n }\n lines.push(\n \"-------------------------------------------------------------------------------------------------------------------------\",\n )\n\n const output = lines.join(\"\\n\")\n console.log(output)\n\n try {\n const now = new Date()\n const timestamp = now.toISOString().replace(/[:.]/g, \"-\").replace(/T/, \"_\").split(\"Z\")[0]\n const traceFilePath = `ffi_otui_trace_${timestamp}.log`\n void writeFile(traceFilePath, output).catch((error) => {\n console.error(\"Failed to write FFI trace file:\", error)\n })\n } catch (e) {\n console.error(\"Failed to write FFI trace file:\", e)\n }\n }\n })\n }\n\n return debugSymbols as T\n}\n\n// Log levels matching Zig's LogLevel enum\nexport enum LogLevel {\n Error = 0,\n Warn = 1,\n Info = 2,\n Debug = 3,\n}\n\n/**\n * VisualCursor represents a cursor position with both visual and logical coordinates.\n * Visual coordinates (visualRow, visualCol) are VIEWPORT-RELATIVE.\n * This means visualRow=0 is the first visible line in the viewport, not the first line in the document.\n * Logical coordinates (logicalRow, logicalCol) are document-absolute.\n */\nexport interface VisualCursor {\n visualRow: number // Viewport-relative row (0 = top of viewport)\n visualCol: number // Viewport-relative column (0 = left edge of viewport when not wrapping)\n logicalRow: number // Document-absolute row\n logicalCol: number // Document-absolute column\n offset: number // Global display-width offset from buffer start\n}\n\nexport interface LogicalCursor {\n row: number\n col: number\n offset: number\n}\n\nexport interface MeasureResult {\n lineCount: number\n widthColsMax: number\n}\n\nexport interface CursorState {\n x: number\n y: number\n visible: boolean\n style: CursorStyle\n blinking: boolean\n color: RGBA\n}\n\nexport type NativeSpanFeedEventHandler = (eventId: number, arg0: Pointer, arg1: number | bigint) => void\n\nexport type NativeBufferedOutput = \"stdout\" | \"memory\"\n\nexport interface NativeRendererCreateOptions {\n remote?: boolean\n feedPtr?: Pointer | null\n bufferedOutput?: NativeBufferedOutput\n}\n\nexport interface NativeRenderOperationResult {\n renderOffset: number\n status: number\n}\n\nexport interface NativeYogaLayout {\n left: number\n top: number\n right: number\n bottom: number\n width: number\n height: number\n}\n\nexport type NativeYogaMeasureCallback = (\n node: Pointer | null,\n width: number,\n widthMode: number,\n height: number,\n heightMode: number,\n) => void\n\nexport type NativeYogaDirtiedCallback = (node: Pointer | null) => void\n\nexport const NativeMeasureTargetKind = {\n None: 0,\n TextBufferView: 1,\n EditorView: 2,\n} as const\n\nexport type NativeMeasureTargetKind = (typeof NativeMeasureTargetKind)[keyof typeof NativeMeasureTargetKind]\n\nexport type NativeMeasureTargetHandle = TextBufferViewHandle | EditorViewHandle\n\nexport interface AudioEngineLib {\n createAudioEngine: (options?: AudioCreateOptions | null) => AudioEngineHandle | null\n destroyAudioEngine: (engine: AudioEngineHandle) => void\n audioRefreshPlaybackDevices: (engine: AudioEngineHandle) => number\n audioGetPlaybackDeviceCount: (engine: AudioEngineHandle) => number\n audioGetPlaybackDeviceName: (engine: AudioEngineHandle, index: number) => string\n audioIsPlaybackDeviceDefault: (engine: AudioEngineHandle, index: number) => boolean\n audioSelectPlaybackDevice: (engine: AudioEngineHandle, index: number) => number\n audioClearPlaybackDeviceSelection: (engine: AudioEngineHandle) => void\n audioRefreshCaptureDevices: (engine: AudioEngineHandle) => number\n audioGetCaptureDeviceCount: (engine: AudioEngineHandle) => number\n audioGetCaptureDeviceName: (engine: AudioEngineHandle, index: number) => string\n audioIsCaptureDeviceDefault: (engine: AudioEngineHandle, index: number) => boolean\n audioSelectCaptureDevice: (engine: AudioEngineHandle, index: number) => number\n audioClearCaptureDeviceSelection: (engine: AudioEngineHandle) => void\n audioStartCapture: (\n engine: AudioEngineHandle,\n options: AudioStartOptions | undefined,\n channels: number,\n capacityFrames: number,\n ) => number\n audioStopCapture: (engine: AudioEngineHandle) => number\n audioIsCaptureRunning: (engine: AudioEngineHandle) => boolean\n audioReadCapture: (\n engine: AudioEngineHandle,\n outBuffer: Float32Array,\n frameCount: number,\n ) => { status: number; framesRead: number }\n audioGetCaptureStats: (engine: AudioEngineHandle) => { status: number; stats: NativeAudioCaptureStats | null }\n audioStart: (engine: AudioEngineHandle, options?: AudioStartOptions | null) => number\n audioStartMixer: (engine: AudioEngineHandle) => number\n audioStop: (engine: AudioEngineHandle) => number\n audioCreateStream: (\n engine: AudioEngineHandle,\n options: AudioStreamCreateOptions,\n ) => { status: number; streamId: number | null }\n audioWriteStream: (engine: AudioEngineHandle, streamId: number, data: Uint8Array) => number\n audioEndStream: (engine: AudioEngineHandle, streamId: number) => number\n audioRestartStream: (engine: AudioEngineHandle, streamId: number) => number\n audioSetStreamVolume: (engine: AudioEngineHandle, streamId: number, volume: number) => number\n audioSetStreamPan: (engine: AudioEngineHandle, streamId: number, pan: number) => number\n audioSetStreamGroup: (engine: AudioEngineHandle, streamId: number, groupId: number) => number\n audioGetStreamStats: (engine: AudioEngineHandle, streamId: number) => NativeAudioStreamStats | null\n audioCloseStream: (\n engine: AudioEngineHandle,\n streamId: number,\n reason: NativeAudioStreamCloseReason,\n ) => { status: number; stats: NativeAudioStreamStats | null }\n audioLoad: (engine: AudioEngineHandle, data: Uint8Array) => { status: number; soundId: number | null }\n audioUnload: (engine: AudioEngineHandle, soundId: number) => number\n audioPlay: (\n engine: AudioEngineHandle,\n soundId: number,\n options?: AudioVoiceOptions,\n ) => { status: number; voiceId: number | null }\n audioStopVoice: (engine: AudioEngineHandle, voiceId: number) => number\n audioSetVoiceGroup: (engine: AudioEngineHandle, voiceId: number, groupId: number) => number\n audioCreateGroup: (engine: AudioEngineHandle, name: string) => { status: number; groupId: number | null }\n audioSetGroupVolume: (engine: AudioEngineHandle, groupId: number, volume: number) => number\n audioSetMasterVolume: (engine: AudioEngineHandle, volume: number) => number\n audioMixToBuffer: (engine: AudioEngineHandle, outBuffer: Float32Array, frameCount: number, channels: number) => number\n audioEnableTap: (engine: AudioEngineHandle, enabled: boolean, capacityFrames: number) => number\n audioReadTap: (\n engine: AudioEngineHandle,\n outBuffer: Float32Array,\n frameCount: number,\n channels: number,\n ) => { status: number; framesRead: number }\n audioGetStats: (engine: AudioEngineHandle) => AudioStats | null\n}\n\nexport interface RenderLib extends AudioEngineLib {\n createRenderer: (width: number, height: number, options?: NativeRendererCreateOptions) => RendererHandle | null\n setTerminalEnvVar: (renderer: RendererHandle, key: string, value: string) => boolean\n destroyRenderer: (renderer: RendererHandle) => void\n setUseThread: (renderer: RendererHandle, useThread: boolean) => void\n setClearOnShutdown: (renderer: RendererHandle, clear: boolean) => void\n setBackgroundColor: (renderer: RendererHandle, color: RGBA) => void\n setRenderOffset: (renderer: RendererHandle, offset: number) => void\n resetSplitScrollback: (renderer: RendererHandle, seedRows: number, pinnedRenderOffset: number) => number\n syncSplitScrollback: (renderer: RendererHandle, pinnedRenderOffset: number) => number\n getSplitOutputOffset: (renderer: RendererHandle, surfaceOffset: number) => number\n setPendingSplitFooterTransition: (\n renderer: RendererHandle,\n mode: number,\n sourceTopLine: number,\n sourceHeight: number,\n targetTopLine: number,\n targetHeight: number,\n scrollLines: number,\n ) => void\n clearPendingSplitFooterTransition: (renderer: RendererHandle) => void\n updateStats: (renderer: RendererHandle, time: number, fps: number, frameCallbackTime: number) => void\n updateMemoryStats: (renderer: RendererHandle, heapUsed: number, heapTotal: number, arrayBuffers: number) => void\n getRenderStats: (renderer: RendererHandle) => NativeRenderStats\n render: (renderer: RendererHandle, force: boolean) => number\n repaintSplitFooter: (\n renderer: RendererHandle,\n pinnedRenderOffset: number,\n force: boolean,\n ) => NativeRenderOperationResult\n commitSplitFooterSnapshot: (\n renderer: RendererHandle,\n snapshot: OptimizedBuffer,\n rowColumns: number,\n startOnNewLine: boolean,\n trailingNewline: boolean,\n pinnedRenderOffset: number,\n force: boolean,\n // beginFrame/finalizeFrame mark commit boundaries when one JS flush contains\n // multiple stdout snapshots. Defaults preserve old one-call behavior.\n beginFrame?: boolean,\n finalizeFrame?: boolean,\n ) => NativeRenderOperationResult\n getNextBuffer: (renderer: RendererHandle) => OptimizedBuffer\n getCurrentBuffer: (renderer: RendererHandle) => OptimizedBuffer\n rendererSetPaletteState: (\n renderer: RendererHandle,\n palette: readonly RGBA[],\n defaultForeground: RGBA,\n defaultBackground: RGBA,\n paletteEpoch: number,\n ) => void\n createOptimizedBuffer: (\n width: number,\n height: number,\n widthMethod: WidthMethod,\n respectAlpha?: boolean,\n id?: string,\n ) => OptimizedBuffer\n destroyOptimizedBuffer: (bufferPtr: OptimizedBufferHandle) => void\n drawFrameBuffer: (\n targetBufferPtr: OptimizedBufferHandle,\n destX: number,\n destY: number,\n bufferPtr: OptimizedBufferHandle,\n sourceX?: number,\n sourceY?: number,\n sourceWidth?: number,\n sourceHeight?: number,\n ) => void\n getBufferWidth: (buffer: OptimizedBufferHandle) => number\n getBufferHeight: (buffer: OptimizedBufferHandle) => number\n bufferClear: (buffer: OptimizedBufferHandle, color: RGBA) => void\n bufferGetCharPtr: (buffer: OptimizedBufferHandle) => Pointer\n bufferGetFgPtr: (buffer: OptimizedBufferHandle) => Pointer\n bufferGetBgPtr: (buffer: OptimizedBufferHandle) => Pointer\n bufferGetAttributesPtr: (buffer: OptimizedBufferHandle) => Pointer\n bufferGetRespectAlpha: (buffer: OptimizedBufferHandle) => boolean\n bufferSetRespectAlpha: (buffer: OptimizedBufferHandle, respectAlpha: boolean) => void\n bufferGetId: (buffer: OptimizedBufferHandle) => string\n bufferGetRealCharSize: (buffer: OptimizedBufferHandle) => number\n bufferWriteResolvedChars: (buffer: OptimizedBufferHandle, outputBuffer: Uint8Array, addLineBreaks: boolean) => number\n bufferDrawText: (\n buffer: OptimizedBufferHandle,\n text: string,\n x: number,\n y: number,\n color: RGBA,\n bgColor?: RGBA,\n attributes?: number,\n ) => void\n bufferSetCellWithAlphaBlending: (\n buffer: OptimizedBufferHandle,\n x: number,\n y: number,\n char: string,\n color: RGBA,\n bgColor: RGBA,\n attributes?: number,\n ) => void\n bufferSetCell: (\n buffer: OptimizedBufferHandle,\n x: number,\n y: number,\n char: string,\n color: RGBA,\n bgColor: RGBA,\n attributes?: number,\n ) => void\n bufferFillRect: (\n buffer: OptimizedBufferHandle,\n x: number,\n y: number,\n width: number,\n height: number,\n color: RGBA,\n ) => void\n bufferColorMatrix: (\n buffer: OptimizedBufferHandle,\n matrixPtr: Pointer,\n cellMaskPtr: Pointer,\n cellMaskCount: number,\n strength: number,\n target: TargetChannel,\n ) => void\n bufferColorMatrixUniform: (\n buffer: OptimizedBufferHandle,\n matrixPtr: Pointer,\n strength: number,\n target: TargetChannel,\n ) => void\n bufferDrawSuperSampleBuffer: (\n buffer: OptimizedBufferHandle,\n x: number,\n y: number,\n pixelDataPtr: Pointer,\n pixelDataLength: number,\n format: \"bgra8unorm\" | \"rgba8unorm\",\n alignedBytesPerRow: number,\n ) => void\n bufferDrawImage: (\n buffer: OptimizedBufferHandle,\n image: ImageHandle,\n x: number,\n y: number,\n width: number,\n height: number,\n pixelWidth: number,\n pixelHeight: number,\n sourceX: number,\n sourceY: number,\n sourceWidth: number,\n sourceHeight: number,\n protocol: ImageRenderProtocol,\n ) => boolean\n bufferDrawPackedBuffer: (\n buffer: OptimizedBufferHandle,\n dataPtr: Pointer,\n dataLen: number,\n posX: number,\n posY: number,\n terminalWidthCells: number,\n terminalHeightCells: number,\n ) => void\n bufferDrawGrayscaleBuffer: (\n buffer: OptimizedBufferHandle,\n posX: number,\n posY: number,\n intensitiesPtr: Pointer,\n srcWidth: number,\n srcHeight: number,\n fg: RGBA | null,\n bg: RGBA | null,\n ) => void\n bufferDrawGrayscaleBufferSupersampled: (\n buffer: OptimizedBufferHandle,\n posX: number,\n posY: number,\n intensitiesPtr: Pointer,\n srcWidth: number,\n srcHeight: number,\n fg: RGBA | null,\n bg: RGBA | null,\n ) => void\n bufferDrawGrid: (\n buffer: OptimizedBufferHandle,\n borderChars: Uint32Array,\n borderFg: RGBA,\n borderBg: RGBA,\n columnOffsets: Int32Array,\n columnCount: number,\n rowOffsets: Int32Array,\n rowCount: number,\n options: { drawInner: boolean; drawOuter: boolean },\n ) => void\n bufferDrawBox: (\n buffer: OptimizedBufferHandle,\n x: number,\n y: number,\n width: number,\n height: number,\n borderChars: Uint32Array,\n packedOptions: number,\n borderColor: RGBA,\n backgroundColor: RGBA,\n titleColor: RGBA,\n title: string | null,\n bottomTitle: string | null,\n ) => void\n bufferResize: (buffer: OptimizedBufferHandle, width: number, height: number) => void\n resizeRenderer: (renderer: RendererHandle, width: number, height: number) => void\n setCursorPosition: (renderer: RendererHandle, x: number, y: number, visible: boolean) => void\n setCursorColor: (renderer: RendererHandle, color: RGBA) => void\n getCursorState: (renderer: RendererHandle) => CursorState\n setCursorStyleOptions: (renderer: RendererHandle, options: CursorStyleOptions) => void\n setDebugOverlay: (renderer: RendererHandle, enabled: boolean, corner: DebugOverlayCorner) => void\n clearTerminal: (renderer: RendererHandle) => void\n setTerminalTitle: (renderer: RendererHandle, title: string) => void\n copyToClipboardOSC52: (renderer: RendererHandle, target: number, textUtf8: Uint8Array) => boolean\n clearClipboardOSC52: (renderer: RendererHandle, target: number) => boolean\n triggerNotification: (renderer: RendererHandle, message: string, title?: string) => boolean\n addToHitGrid: (renderer: RendererHandle, x: number, y: number, width: number, height: number, id: number) => void\n clearCurrentHitGrid: (renderer: RendererHandle) => void\n hitGridPushScissorRect: (renderer: RendererHandle, x: number, y: number, width: number, height: number) => void\n hitGridPopScissorRect: (renderer: RendererHandle) => void\n hitGridClearScissorRects: (renderer: RendererHandle) => void\n addToCurrentHitGridClipped: (\n renderer: RendererHandle,\n x: number,\n y: number,\n width: number,\n height: number,\n id: number,\n ) => void\n checkHit: (renderer: RendererHandle, x: number, y: number) => number\n getHitGridDirty: (renderer: RendererHandle) => boolean\n dumpHitGrid: (renderer: RendererHandle) => void\n dumpBuffers: (renderer: RendererHandle, timestamp?: number) => void\n dumpOutputBuffer: (renderer: RendererHandle, timestamp?: number) => void\n restoreTerminalModes: (renderer: RendererHandle) => void\n enableMouse: (renderer: RendererHandle, enableMovement: boolean) => void\n disableMouse: (renderer: RendererHandle) => void\n enableKittyKeyboard: (renderer: RendererHandle, flags: number) => void\n disableKittyKeyboard: (renderer: RendererHandle) => void\n setKittyKeyboardFlags: (renderer: RendererHandle, flags: number) => void\n getKittyKeyboardFlags: (renderer: RendererHandle) => number\n setupTerminal: (renderer: RendererHandle, useAlternateScreen: boolean) => void\n suspendRenderer: (renderer: RendererHandle) => void\n resumeRenderer: (renderer: RendererHandle) => void\n queryPixelResolution: (renderer: RendererHandle) => void\n queryThemeColors: (renderer: RendererHandle) => void\n writeOut: (renderer: RendererHandle, data: string | Uint8Array) => void\n\n // Yoga layout methods\n yogaConfigCreate: () => Pointer\n yogaConfigFree: (config: Pointer) => void\n yogaConfigSetUseWebDefaults: (config: Pointer, enabled: boolean) => void\n yogaConfigGetUseWebDefaults: (config: Pointer) => boolean\n yogaConfigSetPointScaleFactor: (config: Pointer, pointScaleFactor: number) => void\n yogaConfigGetPointScaleFactor: (config: Pointer) => number\n yogaConfigSetErrata: (config: Pointer, errata: number) => void\n yogaConfigGetErrata: (config: Pointer) => number\n yogaConfigSetExperimentalFeatureEnabled: (config: Pointer, feature: number, enabled: boolean) => void\n yogaConfigIsExperimentalFeatureEnabled: (config: Pointer, feature: number) => boolean\n yogaNodeCreate: () => Pointer\n yogaNodeCreateForOpenTUI: () => Pointer\n yogaNodeCreateWithConfig: (config: Pointer) => Pointer\n yogaNodeFree: (node: Pointer) => void\n yogaNodeFreeRecursive: (node: Pointer) => void\n yogaNodeReset: (node: Pointer) => void\n yogaNodeCopyStyle: (dstNode: Pointer, srcNode: Pointer) => void\n yogaNodeInsertChild: (node: Pointer, child: Pointer, index: number) => void\n yogaNodeRemoveChild: (node: Pointer, child: Pointer) => void\n yogaNodeRemoveAllChildren: (node: Pointer) => void\n yogaNodeGetChild: (node: Pointer, index: number) => Pointer | null\n yogaNodeGetChildCount: (node: Pointer) => number\n yogaNodeGetParent: (node: Pointer) => Pointer | null\n yogaNodeCalculateLayout: (node: Pointer, width: number, height: number, direction: number) => void\n yogaNodeIsDirty: (node: Pointer) => boolean\n yogaNodeMarkDirty: (node: Pointer) => void\n yogaNodeGetHasNewLayout: (node: Pointer) => boolean\n yogaNodeSetHasNewLayout: (node: Pointer, hasNewLayout: boolean) => void\n yogaNodeSetIsReferenceBaseline: (node: Pointer, isReferenceBaseline: boolean) => void\n yogaNodeIsReferenceBaseline: (node: Pointer) => boolean\n yogaNodeSetAlwaysFormsContainingBlock: (node: Pointer, alwaysFormsContainingBlock: boolean) => void\n yogaNodeGetAlwaysFormsContainingBlock: (node: Pointer) => boolean\n yogaNodeGetComputedLayout: (node: Pointer) => NativeYogaLayout\n yogaNodeLayoutGetEdge: (node: Pointer, kind: number, edge: number) => number\n yogaNodeStyleSetEnum: (node: Pointer, kind: number, value: number) => void\n yogaNodeStyleGetEnum: (node: Pointer, kind: number) => number\n yogaNodeStyleSetFloat: (node: Pointer, kind: number, value: number) => void\n yogaNodeStyleGetFloat: (node: Pointer, kind: number) => number\n yogaNodeStyleSetBorder: (node: Pointer, edge: number, border: number) => void\n yogaNodeStyleGetBorder: (node: Pointer, edge: number) => number\n yogaNodeStyleSetValue: (node: Pointer, kind: number, edgeOrGutter: number, unit: number, value: number) => void\n yogaNodeStyleGetValue: (node: Pointer, kind: number, edgeOrGutter: number) => number | bigint\n yogaNodeSetMeasureFunc: (node: Pointer, enabled: boolean) => void\n yogaNodeUnsetMeasureFunc: (node: Pointer) => void\n yogaNodeHasMeasureFunc: (node: Pointer) => boolean\n yogaNodeSetDirtiedFunc: (node: Pointer, enabled: boolean) => void\n yogaNodeUnsetDirtiedFunc: (node: Pointer) => void\n yogaStoreMeasureResult: (width: number, height: number) => void\n yogaSetMeasureCallback: (callback: Pointer | null) => void\n yogaSetDirtiedCallback: (callback: Pointer | null) => void\n createYogaMeasureCallback: (callback: NativeYogaMeasureCallback) => FFICallbackInstance\n createYogaDirtiedCallback: (callback: NativeYogaDirtiedCallback) => FFICallbackInstance\n\n // TextBuffer methods\n createTextBuffer: (widthMethod: WidthMethod) => TextBuffer\n destroyTextBuffer: (buffer: TextBufferHandle) => void\n textBufferGetLength: (buffer: TextBufferHandle) => number\n textBufferGetByteSize: (buffer: TextBufferHandle) => number\n\n textBufferReset: (buffer: TextBufferHandle) => void\n textBufferClear: (buffer: TextBufferHandle) => void\n textBufferRegisterMemBuffer: (buffer: TextBufferHandle, bytes: Uint8Array, owned?: boolean) => number\n textBufferReplaceMemBuffer: (buffer: TextBufferHandle, memId: number, bytes: Uint8Array, owned?: boolean) => boolean\n textBufferClearMemRegistry: (buffer: TextBufferHandle) => void\n textBufferSetTextFromMem: (buffer: TextBufferHandle, memId: number) => void\n textBufferAppend: (buffer: TextBufferHandle, bytes: Uint8Array) => void\n textBufferAppendFromMemId: (buffer: TextBufferHandle, memId: number) => void\n textBufferLoadFile: (buffer: TextBufferHandle, path: string) => boolean\n textBufferSetStyledText: (\n buffer: TextBufferHandle,\n chunks: Array<{ text: string; fg?: RGBA | null; bg?: RGBA | null; attributes?: number; link?: { url: string } }>,\n ) => void\n textBufferSetDefaultFg: (buffer: TextBufferHandle, fg: RGBA | null) => void\n textBufferSetDefaultBg: (buffer: TextBufferHandle, bg: RGBA | null) => void\n textBufferSetDefaultAttributes: (buffer: TextBufferHandle, attributes: number | null) => void\n textBufferResetDefaults: (buffer: TextBufferHandle) => void\n textBufferGetTabWidth: (buffer: TextBufferHandle) => number\n textBufferSetTabWidth: (buffer: TextBufferHandle, width: number) => void\n textBufferGetLineCount: (buffer: TextBufferHandle) => number\n getPlainTextBytes: (buffer: TextBufferHandle, maxLength: number) => Uint8Array | null\n textBufferGetTextRange: (\n buffer: TextBufferHandle,\n startOffset: number,\n endOffset: number,\n maxLength: number,\n ) => Uint8Array | null\n textBufferGetTextRangeByCoords: (\n buffer: TextBufferHandle,\n startRow: number,\n startCol: number,\n endRow: number,\n endCol: number,\n maxLength: number,\n ) => Uint8Array | null\n\n // TextBufferView methods\n createTextBufferView: (textBuffer: TextBufferHandle) => TextBufferViewHandle\n destroyTextBufferView: (view: TextBufferViewHandle) => void\n textBufferViewSetSelection: (\n view: TextBufferViewHandle,\n start: number,\n end: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n ) => void\n textBufferViewResetSelection: (view: TextBufferViewHandle) => void\n textBufferViewGetSelection: (view: TextBufferViewHandle) => { start: number; end: number } | null\n textBufferViewSetLocalSelection: (\n view: TextBufferViewHandle,\n anchorX: number,\n anchorY: number,\n focusX: number,\n focusY: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n ) => boolean\n textBufferViewUpdateSelection: (\n view: TextBufferViewHandle,\n end: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n ) => void\n textBufferViewUpdateLocalSelection: (\n view: TextBufferViewHandle,\n anchorX: number,\n anchorY: number,\n focusX: number,\n focusY: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n ) => boolean\n textBufferViewResetLocalSelection: (view: TextBufferViewHandle) => void\n textBufferViewSetWrapWidth: (view: TextBufferViewHandle, width: number) => void\n textBufferViewSetWrapMode: (view: TextBufferViewHandle, mode: \"none\" | \"char\" | \"word\") => void\n textBufferViewSetFirstLineOffset: (view: TextBufferViewHandle, offset: number) => void\n textBufferViewSetViewportSize: (view: TextBufferViewHandle, width: number, height: number) => void\n textBufferViewSetViewport: (view: TextBufferViewHandle, x: number, y: number, width: number, height: number) => void\n textBufferViewGetLineInfo: (view: TextBufferViewHandle) => LineInfo\n textBufferViewGetLogicalLineInfo: (view: TextBufferViewHandle) => LineInfo\n textBufferViewGetSelectedTextBytes: (view: TextBufferViewHandle, maxLength: number) => Uint8Array | null\n textBufferViewGetPlainTextBytes: (view: TextBufferViewHandle, maxLength: number) => Uint8Array | null\n textBufferViewSetTabIndicator: (view: TextBufferViewHandle, indicator: number) => void\n textBufferViewSetTabIndicatorColor: (view: TextBufferViewHandle, color: RGBA) => void\n textBufferViewSetTruncate: (view: TextBufferViewHandle, truncate: boolean) => void\n textBufferViewMeasureForDimensions: (\n view: TextBufferViewHandle,\n width: number,\n height: number,\n ) => MeasureResult | null\n textBufferViewGetVirtualLineCount: (view: TextBufferViewHandle) => number\n\n readonly encoder: TextEncoder\n readonly decoder: TextDecoder\n bufferDrawTextBufferView: (buffer: OptimizedBufferHandle, view: TextBufferViewHandle, x: number, y: number) => void\n bufferDrawEditorView: (buffer: OptimizedBufferHandle, view: EditorViewHandle, x: number, y: number) => void\n\n // EditBuffer methods\n createEditBuffer: (widthMethod: WidthMethod) => EditBufferHandle\n destroyEditBuffer: (buffer: EditBufferHandle) => void\n editBufferSetText: (buffer: EditBufferHandle, textBytes: Uint8Array) => void\n editBufferSetTextFromMem: (buffer: EditBufferHandle, memId: number) => void\n editBufferReplaceText: (buffer: EditBufferHandle, textBytes: Uint8Array) => void\n editBufferReplaceTextFromMem: (buffer: EditBufferHandle, memId: number) => void\n editBufferGetText: (buffer: EditBufferHandle, maxLength: number) => Uint8Array | null\n editBufferInsertChar: (buffer: EditBufferHandle, char: string) => void\n editBufferInsertText: (buffer: EditBufferHandle, text: string) => void\n editBufferDeleteChar: (buffer: EditBufferHandle) => void\n editBufferDeleteCharBackward: (buffer: EditBufferHandle) => void\n editBufferDeleteRange: (\n buffer: EditBufferHandle,\n startLine: number,\n startCol: number,\n endLine: number,\n endCol: number,\n ) => void\n editBufferNewLine: (buffer: EditBufferHandle) => void\n editBufferDeleteLine: (buffer: EditBufferHandle) => void\n editBufferMoveCursorLeft: (buffer: EditBufferHandle) => void\n editBufferMoveCursorRight: (buffer: EditBufferHandle) => void\n editBufferMoveCursorUp: (buffer: EditBufferHandle) => void\n editBufferMoveCursorDown: (buffer: EditBufferHandle) => void\n editBufferGotoLine: (buffer: EditBufferHandle, line: number) => void\n editBufferSetCursor: (buffer: EditBufferHandle, line: number, col: number) => void\n editBufferSetCursorToLineCol: (buffer: EditBufferHandle, line: number, col: number) => void\n editBufferSetCursorByOffset: (buffer: EditBufferHandle, offset: number) => void\n editBufferGetCursorPosition: (buffer: EditBufferHandle) => LogicalCursor\n editBufferGetId: (buffer: EditBufferHandle) => number\n editBufferGetTextBuffer: (buffer: EditBufferHandle) => TextBufferHandle\n editBufferDebugLogRope: (buffer: EditBufferHandle) => void\n editBufferUndo: (buffer: EditBufferHandle, maxLength: number) => Uint8Array | null\n editBufferRedo: (buffer: EditBufferHandle, maxLength: number) => Uint8Array | null\n editBufferCanUndo: (buffer: EditBufferHandle) => boolean\n editBufferCanRedo: (buffer: EditBufferHandle) => boolean\n editBufferClearHistory: (buffer: EditBufferHandle) => void\n editBufferClear: (buffer: EditBufferHandle) => void\n editBufferGetNextWordBoundary: (buffer: EditBufferHandle) => { row: number; col: number; offset: number }\n editBufferGetPrevWordBoundary: (buffer: EditBufferHandle) => { row: number; col: number; offset: number }\n editBufferGetEOL: (buffer: EditBufferHandle) => { row: number; col: number; offset: number }\n editBufferOffsetToPosition: (\n buffer: EditBufferHandle,\n offset: number,\n ) => { row: number; col: number; offset: number } | null\n editBufferPositionToOffset: (buffer: EditBufferHandle, row: number, col: number) => number\n editBufferGetLineStartOffset: (buffer: EditBufferHandle, row: number) => number\n editBufferGetTextRange: (\n buffer: EditBufferHandle,\n startOffset: number,\n endOffset: number,\n maxLength: number,\n ) => Uint8Array | null\n editBufferGetTextRangeByCoords: (\n buffer: EditBufferHandle,\n startRow: number,\n startCol: number,\n endRow: number,\n endCol: number,\n maxLength: number,\n ) => Uint8Array | null\n\n // EditorView methods\n createEditorView: (editBufferPtr: EditBufferHandle, viewportWidth: number, viewportHeight: number) => EditorViewHandle\n destroyEditorView: (view: EditorViewHandle) => void\n editorViewSetViewportSize: (view: EditorViewHandle, width: number, height: number) => void\n editorViewSetViewport: (\n view: EditorViewHandle,\n x: number,\n y: number,\n width: number,\n height: number,\n moveCursor: boolean,\n ) => void\n editorViewGetViewport: (view: EditorViewHandle) => { offsetY: number; offsetX: number; height: number; width: number }\n editorViewSetScrollMargin: (view: EditorViewHandle, margin: number) => void\n editorViewSetWrapMode: (view: EditorViewHandle, mode: \"none\" | \"char\" | \"word\") => void\n editorViewGetVirtualLineCount: (view: EditorViewHandle) => number\n editorViewGetTotalVirtualLineCount: (view: EditorViewHandle) => number\n editorViewGetTextBufferView: (view: EditorViewHandle) => TextBufferViewHandle\n editorViewSetSelection: (\n view: EditorViewHandle,\n start: number,\n end: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n ) => void\n editorViewResetSelection: (view: EditorViewHandle) => void\n editorViewGetSelection: (view: EditorViewHandle) => { start: number; end: number } | null\n editorViewSetLocalSelection: (\n view: EditorViewHandle,\n anchorX: number,\n anchorY: number,\n focusX: number,\n focusY: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n updateCursor: boolean,\n followCursor: boolean,\n ) => boolean\n\n editorViewUpdateSelection: (view: EditorViewHandle, end: number, bgColor: RGBA | null, fgColor: RGBA | null) => void\n editorViewUpdateLocalSelection: (\n view: EditorViewHandle,\n anchorX: number,\n anchorY: number,\n focusX: number,\n focusY: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n updateCursor: boolean,\n followCursor: boolean,\n ) => boolean\n\n editorViewResetLocalSelection: (view: EditorViewHandle) => void\n editorViewGetSelectedTextBytes: (view: EditorViewHandle, maxLength: number) => Uint8Array | null\n editorViewGetCursor: (view: EditorViewHandle) => { row: number; col: number }\n editorViewGetText: (view: EditorViewHandle, maxLength: number) => Uint8Array | null\n editorViewGetVisualCursor: (view: EditorViewHandle) => VisualCursor\n editorViewMoveUpVisual: (view: EditorViewHandle) => void\n editorViewMoveDownVisual: (view: EditorViewHandle) => void\n editorViewDeleteSelectedText: (view: EditorViewHandle) => void\n editorViewSetCursorByOffset: (view: EditorViewHandle, offset: number) => void\n editorViewGetNextWordBoundary: (view: EditorViewHandle) => VisualCursor\n editorViewGetPrevWordBoundary: (view: EditorViewHandle) => VisualCursor\n editorViewGetEOL: (view: EditorViewHandle) => VisualCursor\n editorViewGetVisualSOL: (view: EditorViewHandle) => VisualCursor\n editorViewGetVisualEOL: (view: EditorViewHandle) => VisualCursor\n editorViewGetLineInfo: (view: EditorViewHandle) => LineInfo\n editorViewGetLogicalLineInfo: (view: EditorViewHandle) => LineInfo\n editorViewSetPlaceholderStyledText: (\n view: EditorViewHandle,\n chunks: Array<{ text: string; fg?: RGBA | null; bg?: RGBA | null; attributes?: number }>,\n ) => void\n editorViewSetTabIndicator: (view: EditorViewHandle, indicator: number) => void\n editorViewSetTabIndicatorColor: (view: EditorViewHandle, color: RGBA) => void\n\n bufferPushScissorRect: (buffer: OptimizedBufferHandle, x: number, y: number, width: number, height: number) => void\n bufferPopScissorRect: (buffer: OptimizedBufferHandle) => void\n bufferClearScissorRects: (buffer: OptimizedBufferHandle) => void\n bufferPushOpacity: (buffer: OptimizedBufferHandle, opacity: number) => void\n bufferPopOpacity: (buffer: OptimizedBufferHandle) => void\n bufferGetCurrentOpacity: (buffer: OptimizedBufferHandle) => number\n bufferClearOpacity: (buffer: OptimizedBufferHandle) => void\n textBufferAddHighlightByCharRange: (buffer: TextBufferHandle, highlight: Highlight) => void\n textBufferAddHighlight: (buffer: TextBufferHandle, lineIdx: number, highlight: Highlight) => void\n textBufferRemoveHighlightsByRef: (buffer: TextBufferHandle, hlRef: number) => void\n textBufferClearLineHighlights: (buffer: TextBufferHandle, lineIdx: number) => void\n textBufferClearAllHighlights: (buffer: TextBufferHandle) => void\n textBufferSetSyntaxStyle: (buffer: TextBufferHandle, style: SyntaxStyleHandle | null) => boolean\n textBufferGetLineHighlights: (buffer: TextBufferHandle, lineIdx: number) => Array<Highlight>\n textBufferGetHighlightCount: (buffer: TextBufferHandle) => number\n\n getArenaAllocatedBytes: () => number\n getBuildOptions: () => BuildOptions\n getAllocatorStats: () => AllocatorStats\n\n createSyntaxStyle: () => SyntaxStyleHandle\n destroySyntaxStyle: (style: SyntaxStyleHandle) => void\n syntaxStyleRegister: (\n style: SyntaxStyleHandle,\n name: string,\n fg: RGBA | null,\n bg: RGBA | null,\n attributes: number,\n ) => number\n syntaxStyleResolveByName: (style: SyntaxStyleHandle, name: string) => number | null\n syntaxStyleGetStyleCount: (style: SyntaxStyleHandle) => number\n\n imageInfo: (data: Uint8Array) => { status: number; info: NativeImageInfo }\n imageDecode: (data: Uint8Array) => { status: number; handle: ImageHandle | null }\n imageCreateFromRgba: (\n pixels: Uint8Array,\n width: number,\n height: number,\n stride: number,\n ) => { status: number; handle: ImageHandle | null }\n imageDestroy: (image: ImageHandle) => void\n imageGetInfo: (image: ImageHandle) => { status: number; info: NativeImageInfo }\n imageGetPixelsPtr: (image: ImageHandle) => Pointer | null\n imageClone: (image: ImageHandle) => { status: number; handle: ImageHandle | null }\n imageCopyPixels: (image: ImageHandle, destination: Uint8Array, stride: number, bgra: boolean) => number\n imageResize: (\n image: ImageHandle,\n width: number,\n height: number,\n filter: number,\n ) => { status: number; handle: ImageHandle | null }\n imageExtract: (\n image: ImageHandle,\n left: number,\n top: number,\n width: number,\n height: number,\n ) => { status: number; handle: ImageHandle | null }\n imageExtend: (\n image: ImageHandle,\n top: number,\n right: number,\n bottom: number,\n left: number,\n background: Uint8Array,\n ) => { status: number; handle: ImageHandle | null }\n imageTransform: (image: ImageHandle, operation: number) => { status: number; handle: ImageHandle | null }\n imageComposite: (\n base: ImageHandle,\n overlay: ImageHandle,\n left: number,\n top: number,\n blend: number,\n opacity: number,\n ) => { status: number; handle: ImageHandle | null }\n\n getTerminalCapabilities: (renderer: RendererHandle) => TerminalCapabilities\n processCapabilityResponse: (renderer: RendererHandle, response: string) => void\n\n encodeUnicode: (\n text: string,\n widthMethod: WidthMethod,\n ) => { ptr: Pointer; data: Array<{ width: number; char: number }> } | null\n freeUnicode: (encoded: { ptr: Pointer; data: Array<{ width: number; char: number }> }) => void\n bufferDrawChar: (\n buffer: OptimizedBufferHandle,\n char: number,\n x: number,\n y: number,\n fg: RGBA,\n bg: RGBA,\n attributes?: number,\n ) => void\n\n registerNativeSpanFeedStream: (stream: Pointer, handler: NativeSpanFeedEventHandler) => void\n unregisterNativeSpanFeedStream: (stream: Pointer) => void\n createNativeSpanFeed: (options?: NativeSpanFeedOptions | null) => Pointer\n attachNativeSpanFeed: (stream: Pointer) => number\n destroyNativeSpanFeed: (stream: Pointer) => void\n streamWrite: (stream: Pointer, data: Uint8Array | string) => number\n streamCommit: (stream: Pointer) => number\n streamDrainSpans: (stream: Pointer, outBuffer: Uint8Array, maxSpans: number) => number\n streamClose: (stream: Pointer) => number\n streamSetOptions: (stream: Pointer, options: NativeSpanFeedOptions) => number\n streamGetStats: (stream: Pointer) => NativeSpanFeedStats | null\n streamReserve: (stream: Pointer, minLen: number) => { status: number; info: ReserveInfo | null }\n streamCommitReserved: (stream: Pointer, length: number) => number\n createNativeRenderable: () => NativeRenderableHandle\n destroyNativeRenderable: (handle: NativeRenderableHandle) => void\n nativeRenderableAttachYogaNode: (handle: NativeRenderableHandle, node: Pointer) => boolean\n nativeRenderableSetMeasureTarget: (\n handle: NativeRenderableHandle,\n kind: NativeMeasureTargetKind,\n target: NativeMeasureTargetHandle | 0,\n ) => boolean\n onNativeEvent: (name: string, handler: (data: ArrayBuffer) => void) => void\n onceNativeEvent: (name: string, handler: (data: ArrayBuffer) => void) => void\n offNativeEvent: (name: string, handler: (data: ArrayBuffer) => void) => void\n onAnyNativeEvent: (handler: (name: string, data: ArrayBuffer) => void) => void\n}\n\nclass FFIRenderLib implements RenderLib {\n private opentui: ReturnType<typeof getOpenTUILib>\n // Layout reads are synchronous and non-reentrant. Retain one backing buffer so\n // Node does not allocate and resolve a new output pointer for every node.\n private readonly yogaLayout = new Float32Array(6)\n private readonly yogaLayoutPtr = ptr(this.yogaLayout)\n private readonly ffiStructStorage = {\n logicalCursor: {\n ...allocStruct(LogicalCursorStruct),\n result: { row: 0, col: 0, offset: 0 } as LogicalCursor,\n },\n visualCursor: {\n ...allocStruct(VisualCursorStruct),\n result: {\n visualRow: 0,\n visualCol: 0,\n logicalRow: 0,\n logicalCol: 0,\n offset: 0,\n } as VisualCursor,\n },\n measureResult: {\n ...allocStruct(MeasureResultStruct),\n result: { lineCount: 0, widthColsMax: 0 } as MeasureResult,\n },\n audioStreamStats: {\n ...allocStruct(AudioStreamStatsStruct),\n result: {\n bytesReceived: 0n,\n framesDecoded: 0n,\n framesPlayed: 0n,\n state: 0,\n sampleRate: 0,\n channels: 0,\n bufferedFrames: 0,\n capacityFrames: 0,\n underruns: 0,\n errorCode: 0,\n readyGeneration: 0,\n } as NativeAudioStreamStats,\n },\n imageDrawOptions: allocStruct(ImageDrawOptionsStruct),\n gridDrawOptions: allocStruct(GridDrawOptionsStruct),\n }\n public readonly encoder: TextEncoder = new TextEncoder()\n public readonly decoder: TextDecoder = new TextDecoder()\n private logCallbackWrapper: FFICallbackInstance | null = null\n private eventCallbackWrapper: FFICallbackInstance | null = null\n private eventSinkPtr: EventSinkHandle | null = null\n private _nativeEvents: EventEmitter = new EventEmitter()\n private _anyEventHandlers: Array<(name: string, data: ArrayBuffer) => void> = []\n private nativeSpanFeedCallbackWrapper: FFICallbackInstance | null = null\n private nativeSpanFeedHandlers = new Map<Pointer, NativeSpanFeedEventHandler>()\n\n public createNativeRenderable(): NativeRenderableHandle {\n const handle = this.opentui.symbols.createNativeRenderable() as NativeRenderableHandle\n if (!handle) throw new Error(\"Failed to create native renderable\")\n return handle\n }\n\n public destroyNativeRenderable(handle: NativeRenderableHandle): void {\n this.opentui.symbols.destroyNativeRenderable(handle)\n }\n\n public nativeRenderableAttachYogaNode(handle: NativeRenderableHandle, node: Pointer): boolean {\n // Node's FFI returns bools as 0/1 numbers; normalize so the interface stays truthful.\n return Boolean(this.opentui.symbols.nativeRenderableAttachYogaNode(handle, node))\n }\n\n public nativeRenderableSetMeasureTarget(\n handle: NativeRenderableHandle,\n kind: NativeMeasureTargetKind,\n target: NativeMeasureTargetHandle | 0,\n ): boolean {\n return Boolean(this.opentui.symbols.nativeRenderableSetMeasureTarget(handle, kind, target))\n }\n\n constructor(libPath?: string) {\n this.opentui = getOpenTUILib(libPath)\n try {\n this.setupLogging()\n this.setupEventBus()\n } catch (error) {\n this.dispose()\n throw error\n }\n }\n\n private setupLogging() {\n if (this.logCallbackWrapper) {\n return\n }\n\n const logCallback = this.opentui.createCallback(\n (level: number, msgPtr: Pointer, msgLen: number) => {\n try {\n if (msgLen === 0 || !msgPtr) {\n return\n }\n\n const msgBuffer = toArrayBuffer(msgPtr, 0, msgLen)\n const msgBytes = new Uint8Array(msgBuffer)\n const message = this.decoder.decode(msgBytes)\n\n switch (level) {\n case LogLevel.Error:\n console.error(message)\n break\n case LogLevel.Warn:\n console.warn(message)\n break\n case LogLevel.Info:\n console.info(message)\n break\n case LogLevel.Debug:\n console.debug(message)\n break\n default:\n console.log(message)\n }\n } catch (error) {\n console.error(\"Error in Zig log callback:\", error)\n }\n },\n {\n args: [\"u8\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n )\n\n this.logCallbackWrapper = logCallback\n\n if (!logCallback.ptr) {\n throw new Error(\"Failed to create log callback\")\n }\n\n this.setLogCallback(logCallback.ptr)\n }\n\n private setLogCallback(callbackPtr: Pointer | null) {\n this.opentui.symbols.setLogCallback(callbackPtr)\n }\n\n public dispose(): void {\n try {\n if (this.eventSinkPtr) {\n this.opentui.symbols.destroyEventSink(this.eventSinkPtr)\n this.eventSinkPtr = null\n }\n\n this.yogaSetMeasureCallback(null)\n this.yogaSetDirtiedCallback(null)\n this.setLogCallback(null)\n } finally {\n try {\n this.opentui.close()\n } finally {\n this.eventCallbackWrapper = null\n this.logCallbackWrapper = null\n this.nativeSpanFeedCallbackWrapper = null\n this.nativeSpanFeedHandlers.clear()\n }\n }\n }\n\n private setupEventBus() {\n if (this.eventCallbackWrapper) {\n return\n }\n\n const eventCallback = this.opentui.createCallback(\n (namePtr: Pointer, nameLen: number, dataPtr: Pointer, dataLen: number) => {\n try {\n if (nameLen === 0 || !namePtr) {\n return\n }\n\n const eventName = this.decoder.decode(toArrayBuffer(namePtr, 0, nameLen))\n const eventData = dataLen > 0 && dataPtr ? toArrayBuffer(dataPtr, 0, dataLen).slice(0) : new ArrayBuffer(0)\n\n queueMicrotask(() => {\n this._nativeEvents.emit(eventName, eventData)\n\n for (const handler of this._anyEventHandlers) {\n handler(eventName, eventData)\n }\n })\n } catch (error) {\n console.error(\"Error in native event callback:\", error)\n }\n },\n {\n args: [\"ptr\", \"u32\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n )\n\n this.eventCallbackWrapper = eventCallback\n\n if (!eventCallback.ptr) {\n throw new Error(\"Failed to create event callback\")\n }\n\n this.eventSinkPtr = this.opentui.symbols.createEventSink(eventCallback.ptr)\n if (!this.eventSinkPtr) {\n eventCallback.close()\n this.eventCallbackWrapper = null\n throw new Error(\"Failed to create native event sink\")\n }\n }\n\n private ensureNativeSpanFeedCallback(): FFICallbackInstance {\n if (this.nativeSpanFeedCallbackWrapper) {\n return this.nativeSpanFeedCallbackWrapper\n }\n\n const callback = this.opentui.createCallback(\n (streamPtr: Pointer, eventId: number, arg0: Pointer, arg1: number | bigint) => {\n const handler = this.nativeSpanFeedHandlers.get(streamPtr)\n if (handler) {\n handler(eventId, arg0, arg1)\n }\n },\n {\n args: [\"ptr\", \"u32\", \"ptr\", \"u64\"],\n returns: \"void\",\n },\n )\n\n this.nativeSpanFeedCallbackWrapper = callback\n\n if (!callback.ptr) {\n throw new Error(\"Failed to create native span feed callback\")\n }\n\n return callback\n }\n\n public createRenderer(width: number, height: number, options: NativeRendererCreateOptions = {}) {\n const bufferedOutputKind = options.bufferedOutput === \"memory\" ? 1 : 0\n const remoteMode = options.remote === undefined ? 0 : options.remote ? 2 : 1\n // `feedPtr` is an internal wiring detail: non-null selects the feed backend\n // used for custom Writable output. When null, `bufferedOutput` selects the\n // buffered stdout or memory backend.\n const feedPtr = options.feedPtr ?? null\n const renderer = this.opentui.symbols.createRenderer(\n width,\n height,\n bufferedOutputKind,\n remoteMode,\n feedPtr,\n ) as RendererHandle\n return renderer ? renderer : null\n }\n\n public setTerminalEnvVar(renderer: Pointer, key: string, value: string): boolean {\n const keyBytes = this.encoder.encode(key)\n const valueBytes = this.encoder.encode(value)\n return this.opentui.symbols.setTerminalEnvVar(\n renderer,\n ptrOrNull(keyBytes),\n keyBytes.byteLength,\n ptrOrNull(valueBytes),\n valueBytes.byteLength,\n )\n }\n\n public destroyRenderer(renderer: Pointer): void {\n this.opentui.symbols.destroyRenderer(renderer)\n }\n\n public setUseThread(renderer: Pointer, useThread: boolean) {\n this.opentui.symbols.setUseThread(renderer, ffiBool(useThread))\n }\n\n public setClearOnShutdown(renderer: Pointer, clear: boolean) {\n this.opentui.symbols.setClearOnShutdown(renderer, ffiBool(clear))\n }\n\n public setBackgroundColor(renderer: Pointer, color: RGBA) {\n this.opentui.symbols.setBackgroundColor(renderer, rgbaPtr(color))\n }\n\n public setRenderOffset(renderer: Pointer, offset: number) {\n this.opentui.symbols.setRenderOffset(renderer, offset)\n }\n\n public resetSplitScrollback(renderer: Pointer, seedRows: number, pinnedRenderOffset: number): number {\n return this.opentui.symbols.resetSplitScrollback(renderer, seedRows, pinnedRenderOffset)\n }\n\n public syncSplitScrollback(renderer: Pointer, pinnedRenderOffset: number): number {\n return this.opentui.symbols.syncSplitScrollback(renderer, pinnedRenderOffset)\n }\n\n public getSplitOutputOffset(renderer: Pointer, surfaceOffset: number): number {\n return this.opentui.symbols.getSplitOutputOffset(renderer, surfaceOffset)\n }\n\n public setPendingSplitFooterTransition(\n renderer: Pointer,\n mode: number,\n sourceTopLine: number,\n sourceHeight: number,\n targetTopLine: number,\n targetHeight: number,\n scrollLines: number,\n ): void {\n this.opentui.symbols.setPendingSplitFooterTransition(\n renderer,\n mode,\n sourceTopLine,\n sourceHeight,\n targetTopLine,\n targetHeight,\n scrollLines,\n )\n }\n\n public clearPendingSplitFooterTransition(renderer: Pointer): void {\n this.opentui.symbols.clearPendingSplitFooterTransition(renderer)\n }\n\n public updateStats(renderer: Pointer, time: number, fps: number, frameCallbackTime: number) {\n this.opentui.symbols.updateStats(renderer, time, fps, frameCallbackTime)\n }\n\n public updateMemoryStats(renderer: Pointer, heapUsed: number, heapTotal: number, arrayBuffers: number) {\n this.opentui.symbols.updateMemoryStats(renderer, heapUsed, heapTotal, arrayBuffers)\n }\n\n public getRenderStats(renderer: Pointer): NativeRenderStats {\n const statsBuffer = new ArrayBuffer(NativeRenderStatsStruct.size)\n this.opentui.symbols.getRenderStats(renderer, ptr(statsBuffer))\n const stats = NativeRenderStatsStruct.unpack(statsBuffer)\n\n return {\n nativeLastFrameTime: stats.lastFrameTime,\n nativeAverageFrameTime: stats.averageFrameTime,\n nativeFrameCount: toNumber(stats.frameCount),\n cellsUpdated: stats.cellsUpdated,\n averageCellsUpdated: stats.averageCellsUpdated,\n nativeRenderTime: stats.renderTimeValid ? stats.renderTime : undefined,\n nativeStdoutWriteTime: stats.stdoutWriteTimeValid ? stats.stdoutWriteTime : undefined,\n }\n }\n\n public getNextBuffer(renderer: Pointer): OptimizedBuffer {\n const bufferPtr = this.opentui.symbols.getNextBuffer(renderer)\n if (!bufferPtr) {\n throw new Error(\"Failed to get next buffer\")\n }\n\n const width = this.opentui.symbols.getBufferWidth(bufferPtr)\n const height = this.opentui.symbols.getBufferHeight(bufferPtr)\n\n return new OptimizedBuffer(this, bufferPtr, width, height, { id: \"next buffer\", widthMethod: \"unicode\" })\n }\n\n public getCurrentBuffer(renderer: Pointer): OptimizedBuffer {\n const bufferPtr = this.opentui.symbols.getCurrentBuffer(renderer)\n if (!bufferPtr) {\n throw new Error(\"Failed to get current buffer\")\n }\n\n const width = this.opentui.symbols.getBufferWidth(bufferPtr)\n const height = this.opentui.symbols.getBufferHeight(bufferPtr)\n\n return new OptimizedBuffer(this, bufferPtr, width, height, { id: \"current buffer\", widthMethod: \"unicode\" })\n }\n\n public rendererSetPaletteState(\n renderer: Pointer,\n palette: readonly RGBA[],\n defaultForeground: RGBA,\n defaultBackground: RGBA,\n paletteEpoch: number,\n ): void {\n const paletteBuffer = new Uint16Array(palette.length * 4)\n\n for (let index = 0; index < palette.length; index++) {\n paletteBuffer.set(palette[index].buffer, index * 4)\n }\n\n this.opentui.symbols.rendererSetPaletteState(\n renderer,\n ptr(paletteBuffer),\n palette.length,\n rgbaPtr(defaultForeground),\n rgbaPtr(defaultBackground),\n paletteEpoch >>> 0,\n )\n }\n\n public bufferGetCharPtr(buffer: Pointer): Pointer {\n const ptr = this.opentui.symbols.bufferGetCharPtr(buffer)\n if (!ptr) {\n throw new Error(\"Failed to get char pointer\")\n }\n return ptr\n }\n\n public bufferGetFgPtr(buffer: Pointer): Pointer {\n const ptr = this.opentui.symbols.bufferGetFgPtr(buffer)\n if (!ptr) {\n throw new Error(\"Failed to get fg pointer\")\n }\n return ptr\n }\n\n public bufferGetBgPtr(buffer: Pointer): Pointer {\n const ptr = this.opentui.symbols.bufferGetBgPtr(buffer)\n if (!ptr) {\n throw new Error(\"Failed to get bg pointer\")\n }\n return ptr\n }\n\n public bufferGetAttributesPtr(buffer: Pointer): Pointer {\n const ptr = this.opentui.symbols.bufferGetAttributesPtr(buffer)\n if (!ptr) {\n throw new Error(\"Failed to get attributes pointer\")\n }\n return ptr\n }\n\n public bufferGetRespectAlpha(buffer: Pointer): boolean {\n return this.opentui.symbols.bufferGetRespectAlpha(buffer)\n }\n\n public bufferSetRespectAlpha(buffer: Pointer, respectAlpha: boolean): void {\n this.opentui.symbols.bufferSetRespectAlpha(buffer, ffiBool(respectAlpha))\n }\n\n public bufferGetId(buffer: Pointer): string {\n const maxLen = 256\n const outBuffer = new Uint8Array(maxLen)\n const actualLen = this.opentui.symbols.bufferGetId(buffer, ptr(outBuffer), maxLen)\n return this.decoder.decode(outBuffer.slice(0, actualLen))\n }\n\n public bufferGetRealCharSize(buffer: Pointer): number {\n return this.opentui.symbols.bufferGetRealCharSize(buffer)\n }\n\n public bufferWriteResolvedChars(buffer: Pointer, outputBuffer: Uint8Array, addLineBreaks: boolean): number {\n return this.opentui.symbols.bufferWriteResolvedChars(\n buffer,\n ptrOrNull(outputBuffer),\n outputBuffer.byteLength,\n ffiBool(addLineBreaks),\n )\n }\n\n public getBufferWidth(buffer: Pointer): number {\n return this.opentui.symbols.getBufferWidth(buffer)\n }\n\n public getBufferHeight(buffer: Pointer): number {\n return this.opentui.symbols.getBufferHeight(buffer)\n }\n\n public bufferClear(buffer: Pointer, color: RGBA) {\n this.opentui.symbols.bufferClear(buffer, rgbaPtr(color))\n }\n\n public bufferDrawText(\n buffer: Pointer,\n text: string,\n x: number,\n y: number,\n color: RGBA,\n bgColor?: RGBA,\n attributes?: number,\n ) {\n const textBytes = this.encoder.encode(text)\n const bg = optionalRgbaPtr(bgColor)\n const fg = rgbaPtr(color)\n\n this.opentui.symbols.bufferDrawText(\n buffer,\n ptrOrNull(textBytes),\n textBytes.byteLength,\n x,\n y,\n fg,\n bg,\n attributes ?? 0,\n )\n }\n\n public bufferSetCellWithAlphaBlending(\n buffer: Pointer,\n x: number,\n y: number,\n char: string,\n color: RGBA,\n bgColor: RGBA,\n attributes?: number,\n ) {\n const charPtr = char.codePointAt(0) ?? \" \".codePointAt(0)!\n const bg = rgbaPtr(bgColor)\n const fg = rgbaPtr(color)\n\n this.opentui.symbols.bufferSetCellWithAlphaBlending(buffer, x, y, charPtr, fg, bg, attributes ?? 0)\n }\n\n public bufferSetCell(\n buffer: Pointer,\n x: number,\n y: number,\n char: string,\n color: RGBA,\n bgColor: RGBA,\n attributes?: number,\n ) {\n const charPtr = char.codePointAt(0) ?? \" \".codePointAt(0)!\n const bg = rgbaPtr(bgColor)\n const fg = rgbaPtr(color)\n\n this.opentui.symbols.bufferSetCell(buffer, x, y, charPtr, fg, bg, attributes ?? 0)\n }\n\n public bufferFillRect(buffer: Pointer, x: number, y: number, width: number, height: number, color: RGBA) {\n const bg = rgbaPtr(color)\n this.opentui.symbols.bufferFillRect(buffer, x, y, width, height, bg)\n }\n\n public bufferColorMatrix(\n buffer: Pointer,\n matrixPtr: Pointer,\n cellMaskPtr: Pointer,\n cellMaskCount: number,\n strength: number,\n target: TargetChannel,\n ): void {\n this.opentui.symbols.bufferColorMatrix(buffer, matrixPtr, cellMaskPtr, cellMaskCount, strength, target)\n }\n\n public bufferColorMatrixUniform(buffer: Pointer, matrixPtr: Pointer, strength: number, target: TargetChannel): void {\n this.opentui.symbols.bufferColorMatrixUniform(buffer, matrixPtr, strength, target)\n }\n\n public bufferDrawSuperSampleBuffer(\n buffer: Pointer,\n x: number,\n y: number,\n pixelDataPtr: Pointer,\n pixelDataLength: number,\n format: \"bgra8unorm\" | \"rgba8unorm\",\n alignedBytesPerRow: number,\n ): void {\n const formatId = format === \"bgra8unorm\" ? 0 : 1\n this.opentui.symbols.bufferDrawSuperSampleBuffer(\n buffer,\n x,\n y,\n pixelDataPtr,\n pixelDataLength,\n formatId,\n alignedBytesPerRow,\n )\n }\n\n public bufferDrawImage(\n buffer: OptimizedBufferHandle,\n image: ImageHandle,\n x: number,\n y: number,\n width: number,\n height: number,\n pixelWidth: number,\n pixelHeight: number,\n sourceX: number,\n sourceY: number,\n sourceWidth: number,\n sourceHeight: number,\n protocol: ImageRenderProtocol,\n ): boolean {\n const protocolId = { auto: 0, kitty: 1, sixel: 2, blocks: 3 }[protocol]\n const storage = this.ffiStructStorage.imageDrawOptions\n ImageDrawOptionsStruct.packInto(\n {\n x,\n y,\n width,\n height,\n pixelWidth,\n pixelHeight,\n sourceX,\n sourceY,\n sourceWidth,\n sourceHeight,\n protocol: protocolId,\n },\n storage.view,\n 0,\n )\n return Boolean(this.opentui.symbols.bufferDrawImage(buffer, image, storage.buffer))\n }\n\n public bufferDrawPackedBuffer(\n buffer: Pointer,\n dataPtr: Pointer,\n dataLen: number,\n posX: number,\n posY: number,\n terminalWidthCells: number,\n terminalHeightCells: number,\n ): void {\n this.opentui.symbols.bufferDrawPackedBuffer(\n buffer,\n dataPtr,\n dataLen,\n posX,\n posY,\n terminalWidthCells,\n terminalHeightCells,\n )\n }\n\n public bufferDrawGrayscaleBuffer(\n buffer: Pointer,\n posX: number,\n posY: number,\n intensitiesPtr: Pointer,\n srcWidth: number,\n srcHeight: number,\n fg: RGBA | null,\n bg: RGBA | null,\n ): void {\n this.opentui.symbols.bufferDrawGrayscaleBuffer(\n buffer,\n posX,\n posY,\n intensitiesPtr,\n srcWidth,\n srcHeight,\n optionalRgbaPtr(fg),\n optionalRgbaPtr(bg),\n )\n }\n\n public bufferDrawGrayscaleBufferSupersampled(\n buffer: Pointer,\n posX: number,\n posY: number,\n intensitiesPtr: Pointer,\n srcWidth: number,\n srcHeight: number,\n fg: RGBA | null,\n bg: RGBA | null,\n ): void {\n this.opentui.symbols.bufferDrawGrayscaleBufferSupersampled(\n buffer,\n posX,\n posY,\n intensitiesPtr,\n srcWidth,\n srcHeight,\n optionalRgbaPtr(fg),\n optionalRgbaPtr(bg),\n )\n }\n\n public bufferDrawGrid(\n buffer: Pointer,\n borderChars: Uint32Array,\n borderFg: RGBA,\n borderBg: RGBA,\n columnOffsets: Int32Array,\n columnCount: number,\n rowOffsets: Int32Array,\n rowCount: number,\n options: { drawInner: boolean; drawOuter: boolean },\n ): void {\n GridDrawOptionsStruct.packInto(\n { drawInner: options.drawInner, drawOuter: options.drawOuter },\n this.ffiStructStorage.gridDrawOptions.view,\n 0,\n )\n\n this.opentui.symbols.bufferDrawGrid(\n buffer,\n ptr(borderChars),\n rgbaPtr(borderFg),\n rgbaPtr(borderBg),\n ptr(columnOffsets),\n columnCount,\n ptr(rowOffsets),\n rowCount,\n this.ffiStructStorage.gridDrawOptions.buffer,\n )\n }\n\n public bufferDrawBox(\n buffer: Pointer,\n x: number,\n y: number,\n width: number,\n height: number,\n borderChars: Uint32Array,\n packedOptions: number,\n borderColor: RGBA,\n backgroundColor: RGBA,\n titleColor: RGBA,\n title: string | null,\n bottomTitle: string | null,\n ): void {\n const titleBytes = title ? this.encoder.encode(title) : null\n const titleLen = titleBytes?.byteLength ?? 0\n const titlePtr = titleBytes ? ptr(titleBytes) : null\n\n const bottomTitleBytes = bottomTitle ? this.encoder.encode(bottomTitle) : null\n const bottomTitleLen = bottomTitleBytes?.byteLength ?? 0\n const bottomTitlePtr = bottomTitleBytes ? ptr(bottomTitleBytes) : null\n\n this.opentui.symbols.bufferDrawBox(\n buffer,\n x,\n y,\n width,\n height,\n ptr(borderChars),\n packedOptions,\n rgbaPtr(borderColor),\n rgbaPtr(backgroundColor),\n rgbaPtr(titleColor),\n titlePtr,\n titleLen,\n bottomTitlePtr,\n bottomTitleLen,\n )\n }\n\n public bufferResize(buffer: Pointer, width: number, height: number): void {\n this.opentui.symbols.bufferResize(buffer, width, height)\n }\n\n // Link API\n public linkAlloc(url: string): number {\n const urlBytes = this.encoder.encode(url)\n return this.opentui.symbols.linkAlloc(ptrOrNull(urlBytes), urlBytes.byteLength)\n }\n\n public linkGetUrl(linkId: number, maxLen: number = 512): string {\n const outBuffer = new Uint8Array(maxLen)\n const actualLen = this.opentui.symbols.linkGetUrl(linkId, ptrOrNull(outBuffer), maxLen)\n return this.decoder.decode(outBuffer.slice(0, actualLen))\n }\n\n public attributesWithLink(baseAttributes: number, linkId: number): number {\n return this.opentui.symbols.attributesWithLink(baseAttributes, linkId)\n }\n\n public attributesGetLinkId(attributes: number): number {\n return this.opentui.symbols.attributesGetLinkId(attributes)\n }\n\n public resizeRenderer(renderer: Pointer, width: number, height: number) {\n this.opentui.symbols.resizeRenderer(renderer, width, height)\n }\n\n public setCursorPosition(renderer: Pointer, x: number, y: number, visible: boolean) {\n this.opentui.symbols.setCursorPosition(renderer, x, y, ffiBool(visible))\n }\n\n public setCursorColor(renderer: Pointer, color: RGBA) {\n this.opentui.symbols.setCursorColor(renderer, rgbaPtr(color))\n }\n\n public getCursorState(renderer: Pointer): CursorState {\n const cursorBuffer = new ArrayBuffer(CursorStateStruct.size)\n this.opentui.symbols.getCursorState(renderer, ptr(cursorBuffer))\n const struct = CursorStateStruct.unpack(cursorBuffer)\n\n return {\n x: struct.x,\n y: struct.y,\n visible: struct.visible,\n style: CURSOR_ID_TO_STYLE[struct.style] ?? \"block\",\n blinking: struct.blinking,\n color: RGBA.fromValues(struct.r, struct.g, struct.b, struct.a),\n }\n }\n\n public setCursorStyleOptions(renderer: Pointer, options: CursorStyleOptions): void {\n const style = options.style != null ? CURSOR_STYLE_TO_ID[options.style] : 255\n const blinking = options.blinking != null ? (options.blinking ? 1 : 0) : 255\n const cursor = options.cursor != null ? MOUSE_STYLE_TO_ID[options.cursor] : 255\n\n const buffer = CursorStyleOptionsStruct.pack({ style, blinking, color: options.color, cursor })\n this.opentui.symbols.setCursorStyleOptions(renderer, buffer)\n }\n\n public render(renderer: Pointer, force: boolean): number {\n return this.opentui.symbols.render(renderer, ffiBool(force))\n }\n\n private unpackRenderOperationResult(value: number | bigint): NativeRenderOperationResult {\n const packed = typeof value === \"bigint\" ? value : BigInt(value)\n return {\n renderOffset: Number(packed & 0xffffffffn),\n status: Number((packed >> 32n) & 0xffn),\n }\n }\n\n public repaintSplitFooter(\n renderer: Pointer,\n pinnedRenderOffset: number,\n force: boolean,\n ): NativeRenderOperationResult {\n return this.unpackRenderOperationResult(\n this.opentui.symbols.repaintSplitFooter(renderer, pinnedRenderOffset, ffiBool(force)),\n )\n }\n\n public commitSplitFooterSnapshot(\n renderer: Pointer,\n snapshot: OptimizedBuffer,\n rowColumns: number,\n startOnNewLine: boolean,\n trailingNewline: boolean,\n pinnedRenderOffset: number,\n force: boolean,\n beginFrame: boolean = true,\n finalizeFrame: boolean = true,\n ): NativeRenderOperationResult {\n return this.unpackRenderOperationResult(\n this.opentui.symbols.commitSplitFooterSnapshot(\n renderer,\n snapshot.ptr,\n rowColumns,\n ffiBool(startOnNewLine),\n ffiBool(trailingNewline),\n pinnedRenderOffset,\n ffiBool(force),\n ffiBool(beginFrame),\n ffiBool(finalizeFrame),\n ),\n )\n }\n\n public createOptimizedBuffer(\n width: number,\n height: number,\n widthMethod: WidthMethod,\n respectAlpha: boolean = false,\n id?: string,\n ): OptimizedBuffer {\n if (Number.isNaN(width) || Number.isNaN(height)) {\n console.error(new Error(`Invalid dimensions for OptimizedBuffer: ${width}x${height}`).stack)\n }\n\n const widthMethodCode = widthMethod === \"wcwidth\" ? 0 : 1\n const idToUse = id || \"unnamed buffer\"\n const idBytes = this.encoder.encode(idToUse)\n const bufferPtr = this.opentui.symbols.createOptimizedBuffer(\n width,\n height,\n ffiBool(respectAlpha),\n widthMethodCode,\n ptr(idBytes),\n idBytes.byteLength,\n )\n if (!bufferPtr) {\n throw new Error(`Failed to create optimized buffer: ${width}x${height}`)\n }\n\n return new OptimizedBuffer(this, bufferPtr, width, height, { respectAlpha, id, widthMethod })\n }\n\n public destroyOptimizedBuffer(bufferPtr: Pointer) {\n this.opentui.symbols.destroyOptimizedBuffer(bufferPtr)\n }\n\n public drawFrameBuffer(\n targetBufferPtr: Pointer,\n destX: number,\n destY: number,\n bufferPtr: Pointer,\n sourceX?: number,\n sourceY?: number,\n sourceWidth?: number,\n sourceHeight?: number,\n ) {\n const srcX = sourceX ?? 0\n const srcY = sourceY ?? 0\n const srcWidth = sourceWidth ?? 0\n const srcHeight = sourceHeight ?? 0\n this.opentui.symbols.drawFrameBuffer(targetBufferPtr, destX, destY, bufferPtr, srcX, srcY, srcWidth, srcHeight)\n }\n\n public setDebugOverlay(renderer: Pointer, enabled: boolean, corner: DebugOverlayCorner) {\n this.opentui.symbols.setDebugOverlay(renderer, ffiBool(enabled), corner)\n }\n\n public clearTerminal(renderer: Pointer) {\n this.opentui.symbols.clearTerminal(renderer)\n }\n\n public setTerminalTitle(renderer: Pointer, title: string) {\n const titleBytes = this.encoder.encode(title)\n this.opentui.symbols.setTerminalTitle(renderer, ptrOrNull(titleBytes), titleBytes.byteLength)\n }\n\n public copyToClipboardOSC52(renderer: Pointer, target: number, textUtf8: Uint8Array): boolean {\n if (textUtf8.byteLength > 0xffffffff) return false\n return Boolean(\n this.opentui.symbols.copyToClipboardOSC52(renderer, target, ptrOrNull(textUtf8), textUtf8.byteLength),\n )\n }\n\n public clearClipboardOSC52(renderer: Pointer, target: number): boolean {\n return Boolean(this.opentui.symbols.clearClipboardOSC52(renderer, target))\n }\n\n public triggerNotification(renderer: Pointer, message: string, title?: string): boolean {\n const messageBytes = this.encoder.encode(message)\n const titleBytes = title === undefined ? null : this.encoder.encode(title)\n return Boolean(\n this.opentui.symbols.triggerNotification(\n renderer,\n messageBytes,\n messageBytes.length,\n titleBytes,\n titleBytes?.length ?? 0,\n ),\n )\n }\n\n public addToHitGrid(renderer: Pointer, x: number, y: number, width: number, height: number, id: number) {\n this.opentui.symbols.addToHitGrid(renderer, x, y, width, height, id)\n }\n\n public clearCurrentHitGrid(renderer: Pointer) {\n this.opentui.symbols.clearCurrentHitGrid(renderer)\n }\n\n public hitGridPushScissorRect(renderer: Pointer, x: number, y: number, width: number, height: number) {\n this.opentui.symbols.hitGridPushScissorRect(renderer, x, y, width, height)\n }\n\n public hitGridPopScissorRect(renderer: Pointer) {\n this.opentui.symbols.hitGridPopScissorRect(renderer)\n }\n\n public hitGridClearScissorRects(renderer: Pointer) {\n this.opentui.symbols.hitGridClearScissorRects(renderer)\n }\n\n public addToCurrentHitGridClipped(\n renderer: Pointer,\n x: number,\n y: number,\n width: number,\n height: number,\n id: number,\n ) {\n this.opentui.symbols.addToCurrentHitGridClipped(renderer, x, y, width, height, id)\n }\n\n public checkHit(renderer: Pointer, x: number, y: number): number {\n return this.opentui.symbols.checkHit(renderer, x, y)\n }\n\n public getHitGridDirty(renderer: Pointer): boolean {\n return this.opentui.symbols.getHitGridDirty(renderer)\n }\n\n public dumpHitGrid(renderer: Pointer): void {\n this.opentui.symbols.dumpHitGrid(renderer)\n }\n\n public dumpBuffers(renderer: Pointer, timestamp?: number): void {\n const ts = BigInt(timestamp ?? Date.now())\n this.opentui.symbols.dumpBuffers(renderer, ts)\n }\n\n public dumpOutputBuffer(renderer: Pointer, timestamp?: number): void {\n const ts = BigInt(timestamp ?? Date.now())\n this.opentui.symbols.dumpOutputBuffer(renderer, ts)\n }\n\n public restoreTerminalModes(renderer: Pointer): void {\n this.opentui.symbols.restoreTerminalModes(renderer)\n }\n\n public enableMouse(renderer: Pointer, enableMovement: boolean): void {\n this.opentui.symbols.enableMouse(renderer, ffiBool(enableMovement))\n }\n\n public disableMouse(renderer: Pointer): void {\n this.opentui.symbols.disableMouse(renderer)\n }\n\n public enableKittyKeyboard(renderer: Pointer, flags: number): void {\n this.opentui.symbols.enableKittyKeyboard(renderer, flags)\n }\n\n public disableKittyKeyboard(renderer: Pointer): void {\n this.opentui.symbols.disableKittyKeyboard(renderer)\n }\n\n public setKittyKeyboardFlags(renderer: Pointer, flags: number): void {\n this.opentui.symbols.setKittyKeyboardFlags(renderer, flags)\n }\n\n public getKittyKeyboardFlags(renderer: Pointer): number {\n return this.opentui.symbols.getKittyKeyboardFlags(renderer)\n }\n\n public setupTerminal(renderer: Pointer, useAlternateScreen: boolean): void {\n this.opentui.symbols.setupTerminal(renderer, ffiBool(useAlternateScreen))\n }\n\n public suspendRenderer(renderer: Pointer): void {\n this.opentui.symbols.suspendRenderer(renderer)\n }\n\n public resumeRenderer(renderer: Pointer): void {\n this.opentui.symbols.resumeRenderer(renderer)\n }\n\n public queryPixelResolution(renderer: Pointer): void {\n this.opentui.symbols.queryPixelResolution(renderer)\n }\n\n public queryThemeColors(renderer: Pointer): void {\n this.opentui.symbols.queryThemeColors(renderer)\n }\n\n /**\n * Write data to stdout, synchronizing with the render thread if necessary.\n * This should be used for ALL stdout writes to avoid race conditions when\n * the render thread is active.\n */\n public writeOut(renderer: Pointer, data: string | Uint8Array): void {\n const bytes = typeof data === \"string\" ? new TextEncoder().encode(data) : data\n if (bytes.length === 0) return\n this.opentui.symbols.writeOut(renderer, ptrOrNull(bytes), bytes.byteLength)\n }\n\n public yogaConfigCreate(): Pointer {\n const config = this.opentui.symbols.yogaConfigCreate()\n if (!config) throw new Error(\"Failed to create Yoga config\")\n return config\n }\n\n public yogaConfigFree(config: Pointer): void {\n this.opentui.symbols.yogaConfigFree(config)\n }\n\n public yogaConfigSetUseWebDefaults(config: Pointer, enabled: boolean): void {\n this.opentui.symbols.yogaConfigSetUseWebDefaults(config, ffiBool(enabled))\n }\n\n public yogaConfigGetUseWebDefaults(config: Pointer): boolean {\n return this.opentui.symbols.yogaConfigGetUseWebDefaults(config)\n }\n\n public yogaConfigSetPointScaleFactor(config: Pointer, pointScaleFactor: number): void {\n this.opentui.symbols.yogaConfigSetPointScaleFactor(config, pointScaleFactor)\n }\n\n public yogaConfigGetPointScaleFactor(config: Pointer): number {\n return this.opentui.symbols.yogaConfigGetPointScaleFactor(config)\n }\n\n public yogaConfigSetErrata(config: Pointer, errata: number): void {\n this.opentui.symbols.yogaConfigSetErrata(config, errata)\n }\n\n public yogaConfigGetErrata(config: Pointer): number {\n return this.opentui.symbols.yogaConfigGetErrata(config)\n }\n\n public yogaConfigSetExperimentalFeatureEnabled(config: Pointer, feature: number, enabled: boolean): void {\n this.opentui.symbols.yogaConfigSetExperimentalFeatureEnabled(config, feature, ffiBool(enabled))\n }\n\n public yogaConfigIsExperimentalFeatureEnabled(config: Pointer, feature: number): boolean {\n return this.opentui.symbols.yogaConfigIsExperimentalFeatureEnabled(config, feature)\n }\n\n public yogaNodeCreate(): Pointer {\n const node = this.opentui.symbols.yogaNodeCreate()\n if (!node) throw new Error(\"Failed to create Yoga node\")\n return node\n }\n\n public yogaNodeCreateForOpenTUI(): Pointer {\n const node = this.opentui.symbols.yogaNodeCreateForOpenTUI()\n if (!node) throw new Error(\"Failed to create OpenTUI Yoga node\")\n return node\n }\n\n public yogaNodeCreateWithConfig(config: Pointer): Pointer {\n const node = this.opentui.symbols.yogaNodeCreateWithConfig(config)\n if (!node) throw new Error(\"Failed to create Yoga node\")\n return node\n }\n\n public yogaNodeFree(node: Pointer): void {\n this.opentui.symbols.yogaNodeFree(node)\n }\n\n public yogaNodeFreeRecursive(node: Pointer): void {\n this.opentui.symbols.yogaNodeFreeRecursive(node)\n }\n\n public yogaNodeReset(node: Pointer): void {\n this.opentui.symbols.yogaNodeReset(node)\n }\n\n public yogaNodeCopyStyle(dstNode: Pointer, srcNode: Pointer): void {\n this.opentui.symbols.yogaNodeCopyStyle(dstNode, srcNode)\n }\n\n public yogaNodeInsertChild(node: Pointer, child: Pointer, index: number): void {\n this.opentui.symbols.yogaNodeInsertChild(node, child, index)\n }\n\n public yogaNodeRemoveChild(node: Pointer, child: Pointer): void {\n this.opentui.symbols.yogaNodeRemoveChild(node, child)\n }\n\n public yogaNodeRemoveAllChildren(node: Pointer): void {\n this.opentui.symbols.yogaNodeRemoveAllChildren(node)\n }\n\n public yogaNodeGetChild(node: Pointer, index: number): Pointer | null {\n return this.opentui.symbols.yogaNodeGetChild(node, index) || null\n }\n\n public yogaNodeGetChildCount(node: Pointer): number {\n return this.opentui.symbols.yogaNodeGetChildCount(node)\n }\n\n public yogaNodeGetParent(node: Pointer): Pointer | null {\n return this.opentui.symbols.yogaNodeGetParent(node) || null\n }\n\n public yogaNodeCalculateLayout(node: Pointer, width: number, height: number, direction: number): void {\n this.opentui.symbols.yogaNodeCalculateLayout(node, width, height, direction)\n }\n\n public yogaNodeIsDirty(node: Pointer): boolean {\n return this.opentui.symbols.yogaNodeIsDirty(node)\n }\n\n public yogaNodeMarkDirty(node: Pointer): void {\n this.opentui.symbols.yogaNodeMarkDirty(node)\n }\n\n public yogaNodeGetHasNewLayout(node: Pointer): boolean {\n return this.opentui.symbols.yogaNodeGetHasNewLayout(node)\n }\n\n public yogaNodeSetHasNewLayout(node: Pointer, hasNewLayout: boolean): void {\n this.opentui.symbols.yogaNodeSetHasNewLayout(node, ffiBool(hasNewLayout))\n }\n\n public yogaNodeSetIsReferenceBaseline(node: Pointer, isReferenceBaseline: boolean): void {\n this.opentui.symbols.yogaNodeSetIsReferenceBaseline(node, ffiBool(isReferenceBaseline))\n }\n\n public yogaNodeIsReferenceBaseline(node: Pointer): boolean {\n return this.opentui.symbols.yogaNodeIsReferenceBaseline(node)\n }\n\n public yogaNodeSetAlwaysFormsContainingBlock(node: Pointer, alwaysFormsContainingBlock: boolean): void {\n this.opentui.symbols.yogaNodeSetAlwaysFormsContainingBlock(node, ffiBool(alwaysFormsContainingBlock))\n }\n\n public yogaNodeGetAlwaysFormsContainingBlock(node: Pointer): boolean {\n return this.opentui.symbols.yogaNodeGetAlwaysFormsContainingBlock(node)\n }\n\n public yogaNodeGetComputedLayout(node: Pointer): NativeYogaLayout {\n const layout = this.yogaLayout\n this.opentui.symbols.yogaNodeGetComputedLayout(node, this.yogaLayoutPtr)\n return {\n left: layout[0]!,\n top: layout[1]!,\n right: layout[2]!,\n bottom: layout[3]!,\n width: layout[4]!,\n height: layout[5]!,\n }\n }\n\n public yogaNodeLayoutGetEdge(node: Pointer, kind: number, edge: number): number {\n return this.opentui.symbols.yogaNodeLayoutGetEdge(node, kind, edge)\n }\n\n public yogaNodeStyleSetEnum(node: Pointer, kind: number, value: number): void {\n this.opentui.symbols.yogaNodeStyleSetEnum(node, kind, value)\n }\n\n public yogaNodeStyleGetEnum(node: Pointer, kind: number): number {\n return this.opentui.symbols.yogaNodeStyleGetEnum(node, kind)\n }\n\n public yogaNodeStyleSetFloat(node: Pointer, kind: number, value: number): void {\n this.opentui.symbols.yogaNodeStyleSetFloat(node, kind, value)\n }\n\n public yogaNodeStyleGetFloat(node: Pointer, kind: number): number {\n return this.opentui.symbols.yogaNodeStyleGetFloat(node, kind)\n }\n\n public yogaNodeStyleSetBorder(node: Pointer, edge: number, border: number): void {\n this.opentui.symbols.yogaNodeStyleSetBorder(node, edge, border)\n }\n\n public yogaNodeStyleGetBorder(node: Pointer, edge: number): number {\n return this.opentui.symbols.yogaNodeStyleGetBorder(node, edge)\n }\n\n public yogaNodeStyleSetValue(node: Pointer, kind: number, edgeOrGutter: number, unit: number, value: number): void {\n this.opentui.symbols.yogaNodeStyleSetValue(node, kind, edgeOrGutter, unit, value)\n }\n\n public yogaNodeStyleGetValue(node: Pointer, kind: number, edgeOrGutter: number): number | bigint {\n return this.opentui.symbols.yogaNodeStyleGetValue(node, kind, edgeOrGutter)\n }\n\n public yogaNodeSetMeasureFunc(node: Pointer, enabled: boolean): void {\n this.opentui.symbols.yogaNodeSetMeasureFunc(node, ffiBool(enabled))\n }\n\n public yogaNodeUnsetMeasureFunc(node: Pointer): void {\n this.opentui.symbols.yogaNodeUnsetMeasureFunc(node)\n }\n\n public yogaNodeHasMeasureFunc(node: Pointer): boolean {\n // Node's FFI returns bools as 0/1 numbers; normalize so the interface stays truthful.\n return Boolean(this.opentui.symbols.yogaNodeHasMeasureFunc(node))\n }\n\n public yogaNodeSetDirtiedFunc(node: Pointer, enabled: boolean): void {\n this.opentui.symbols.yogaNodeSetDirtiedFunc(node, ffiBool(enabled))\n }\n\n public yogaNodeUnsetDirtiedFunc(node: Pointer): void {\n this.opentui.symbols.yogaNodeUnsetDirtiedFunc(node)\n }\n\n public yogaStoreMeasureResult(width: number, height: number): void {\n this.opentui.symbols.yogaStoreMeasureResult(width, height)\n }\n\n public yogaSetMeasureCallback(callback: Pointer | null): void {\n this.opentui.symbols.yogaSetMeasureCallback(callback)\n }\n\n public yogaSetDirtiedCallback(callback: Pointer | null): void {\n this.opentui.symbols.yogaSetDirtiedCallback(callback)\n }\n\n public createYogaMeasureCallback(callback: NativeYogaMeasureCallback): FFICallbackInstance {\n return this.opentui.createCallback(callback, {\n args: [\"ptr\", \"f32\", \"u32\", \"f32\", \"u32\"],\n returns: \"void\",\n })\n }\n\n public createYogaDirtiedCallback(callback: NativeYogaDirtiedCallback): FFICallbackInstance {\n return this.opentui.createCallback(callback, {\n args: [\"ptr\"],\n returns: \"void\",\n })\n }\n\n // TextBuffer methods\n public createTextBuffer(widthMethod: WidthMethod): TextBuffer {\n const widthMethodCode = widthMethod === \"wcwidth\" ? 0 : 1\n const bufferPtr = this.opentui.symbols.createTextBuffer(widthMethodCode)\n if (!bufferPtr) {\n throw new Error(`Failed to create TextBuffer`)\n }\n\n return new TextBuffer(this, bufferPtr)\n }\n\n public destroyTextBuffer(buffer: Pointer): void {\n this.opentui.symbols.destroyTextBuffer(buffer)\n }\n\n public textBufferGetLength(buffer: Pointer): number {\n return this.opentui.symbols.textBufferGetLength(buffer)\n }\n\n public textBufferGetByteSize(buffer: Pointer): number {\n return this.opentui.symbols.textBufferGetByteSize(buffer)\n }\n\n public textBufferReset(buffer: Pointer): void {\n this.opentui.symbols.textBufferReset(buffer)\n }\n\n public textBufferClear(buffer: Pointer): void {\n this.opentui.symbols.textBufferClear(buffer)\n }\n\n public textBufferSetDefaultFg(buffer: Pointer, fg: RGBA | null): void {\n const fgPtr = optionalRgbaPtr(fg)\n this.opentui.symbols.textBufferSetDefaultFg(buffer, fgPtr)\n }\n\n public textBufferSetDefaultBg(buffer: Pointer, bg: RGBA | null): void {\n const bgPtr = optionalRgbaPtr(bg)\n this.opentui.symbols.textBufferSetDefaultBg(buffer, bgPtr)\n }\n\n public textBufferSetDefaultAttributes(buffer: Pointer, attributes: number | null): void {\n const attrValue = attributes === null ? null : new Uint32Array([attributes])\n this.opentui.symbols.textBufferSetDefaultAttributes(buffer, attrValue ? ptr(attrValue) : null)\n }\n\n public textBufferResetDefaults(buffer: Pointer): void {\n this.opentui.symbols.textBufferResetDefaults(buffer)\n }\n\n public textBufferGetTabWidth(buffer: Pointer): number {\n return this.opentui.symbols.textBufferGetTabWidth(buffer)\n }\n\n public textBufferSetTabWidth(buffer: Pointer, width: number): void {\n this.opentui.symbols.textBufferSetTabWidth(buffer, width)\n }\n\n public textBufferRegisterMemBuffer(buffer: Pointer, bytes: Uint8Array, owned: boolean = false): number {\n const result = this.opentui.symbols.textBufferRegisterMemBuffer(\n buffer,\n ptrOrNull(bytes),\n bytes.byteLength,\n ffiBool(owned),\n )\n if (result === 0xffff) {\n throw new Error(\"Failed to register memory buffer\")\n }\n return result\n }\n\n public textBufferReplaceMemBuffer(\n buffer: Pointer,\n memId: number,\n bytes: Uint8Array,\n owned: boolean = false,\n ): boolean {\n return this.opentui.symbols.textBufferReplaceMemBuffer(\n buffer,\n memId,\n ptrOrNull(bytes),\n bytes.byteLength,\n ffiBool(owned),\n )\n }\n\n public textBufferClearMemRegistry(buffer: Pointer): void {\n this.opentui.symbols.textBufferClearMemRegistry(buffer)\n }\n\n public textBufferSetTextFromMem(buffer: Pointer, memId: number): void {\n this.opentui.symbols.textBufferSetTextFromMem(buffer, memId)\n }\n\n public textBufferAppend(buffer: Pointer, bytes: Uint8Array): void {\n this.opentui.symbols.textBufferAppend(buffer, ptrOrNull(bytes), bytes.byteLength)\n }\n\n public textBufferAppendFromMemId(buffer: Pointer, memId: number): void {\n this.opentui.symbols.textBufferAppendFromMemId(buffer, memId)\n }\n\n public textBufferLoadFile(buffer: Pointer, path: string): boolean {\n const pathBytes = this.encoder.encode(path)\n return this.opentui.symbols.textBufferLoadFile(buffer, ptrOrNull(pathBytes), pathBytes.byteLength)\n }\n\n public textBufferSetStyledText(\n buffer: Pointer,\n chunks: Array<{ text: string; fg?: RGBA | null; bg?: RGBA | null; attributes?: number; link?: { url: string } }>,\n ): void {\n if (chunks.length === 0) {\n this.textBufferClear(buffer)\n return\n }\n\n const chunksBuffer = StyledChunkStruct.packList(chunks)\n this.opentui.symbols.textBufferSetStyledText(buffer, chunksBuffer, chunks.length)\n }\n\n public textBufferGetLineCount(buffer: Pointer): number {\n return this.opentui.symbols.textBufferGetLineCount(buffer)\n }\n\n private textBufferGetPlainText(buffer: Pointer, outPtr: Pointer | null, maxLen: number): number {\n return this.opentui.symbols.textBufferGetPlainText(buffer, outPtr, maxLen)\n }\n\n public getPlainTextBytes(buffer: Pointer, maxLength: number): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n\n const actualLen = this.textBufferGetPlainText(buffer, ptrOrNull(outBuffer), maxLength)\n\n if (actualLen === 0) {\n return null\n }\n\n return outBuffer.slice(0, actualLen)\n }\n\n public textBufferGetTextRange(\n buffer: Pointer,\n startOffset: number,\n endOffset: number,\n maxLength: number,\n ): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n\n const actualLen = this.opentui.symbols.textBufferGetTextRange(\n buffer,\n startOffset,\n endOffset,\n ptrOrNull(outBuffer),\n maxLength,\n )\n\n const len = actualLen\n\n if (len === 0) {\n return null\n }\n\n return outBuffer.slice(0, len)\n }\n\n public textBufferGetTextRangeByCoords(\n buffer: Pointer,\n startRow: number,\n startCol: number,\n endRow: number,\n endCol: number,\n maxLength: number,\n ): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n\n const actualLen = this.opentui.symbols.textBufferGetTextRangeByCoords(\n buffer,\n startRow,\n startCol,\n endRow,\n endCol,\n ptrOrNull(outBuffer),\n maxLength,\n )\n\n const len = actualLen\n\n if (len === 0) {\n return null\n }\n\n return usesBunFFI ? outBuffer.slice(0, len) : trimNodeFFIOutputBytes(outBuffer, len)\n }\n\n // TextBufferView methods\n public createTextBufferView(textBuffer: TextBufferHandle): TextBufferViewHandle {\n const viewPtr = this.opentui.symbols.createTextBufferView(textBuffer) as TextBufferViewHandle\n if (!viewPtr) {\n throw new Error(\"Failed to create TextBufferView\")\n }\n return viewPtr\n }\n\n public destroyTextBufferView(view: Pointer): void {\n this.opentui.symbols.destroyTextBufferView(view)\n }\n\n public textBufferViewSetSelection(\n view: Pointer,\n start: number,\n end: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n ): void {\n const bg = optionalRgbaPtr(bgColor)\n const fg = optionalRgbaPtr(fgColor)\n this.opentui.symbols.textBufferViewSetSelection(view, start, end, bg, fg)\n }\n\n public textBufferViewResetSelection(view: Pointer): void {\n this.opentui.symbols.textBufferViewResetSelection(view)\n }\n\n public textBufferViewGetSelection(view: Pointer): { start: number; end: number } | null {\n const packedInfo = this.textBufferViewGetSelectionInfo(view)\n\n // Check for no selection marker (0xFFFFFFFF_FFFFFFFF)\n if (packedInfo === 0xffff_ffff_ffff_ffffn) {\n return null\n }\n\n const start = Number(packedInfo >> 32n)\n const end = Number(packedInfo & 0xffff_ffffn)\n\n return { start, end }\n }\n\n private textBufferViewGetSelectionInfo(view: Pointer): bigint {\n return this.opentui.symbols.textBufferViewGetSelectionInfo(view)\n }\n\n public textBufferViewSetLocalSelection(\n view: Pointer,\n anchorX: number,\n anchorY: number,\n focusX: number,\n focusY: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n ): boolean {\n const bg = optionalRgbaPtr(bgColor)\n const fg = optionalRgbaPtr(fgColor)\n return Boolean(this.opentui.symbols.textBufferViewSetLocalSelection(view, anchorX, anchorY, focusX, focusY, bg, fg))\n }\n\n public textBufferViewUpdateSelection(view: Pointer, end: number, bgColor: RGBA | null, fgColor: RGBA | null): void {\n const bg = optionalRgbaPtr(bgColor)\n const fg = optionalRgbaPtr(fgColor)\n this.opentui.symbols.textBufferViewUpdateSelection(view, end, bg, fg)\n }\n\n public textBufferViewUpdateLocalSelection(\n view: Pointer,\n anchorX: number,\n anchorY: number,\n focusX: number,\n focusY: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n ): boolean {\n const bg = optionalRgbaPtr(bgColor)\n const fg = optionalRgbaPtr(fgColor)\n return Boolean(\n this.opentui.symbols.textBufferViewUpdateLocalSelection(view, anchorX, anchorY, focusX, focusY, bg, fg),\n )\n }\n\n public textBufferViewResetLocalSelection(view: Pointer): void {\n this.opentui.symbols.textBufferViewResetLocalSelection(view)\n }\n\n public textBufferViewSetWrapWidth(view: Pointer, width: number): void {\n this.opentui.symbols.textBufferViewSetWrapWidth(view, width)\n }\n\n public textBufferViewSetWrapMode(view: Pointer, mode: \"none\" | \"char\" | \"word\"): void {\n const modeValue = mode === \"none\" ? 0 : mode === \"char\" ? 1 : 2\n this.opentui.symbols.textBufferViewSetWrapMode(view, modeValue)\n }\n\n public textBufferViewSetFirstLineOffset(view: Pointer, offset: number): void {\n this.opentui.symbols.textBufferViewSetFirstLineOffset(view, offset)\n }\n\n public textBufferViewSetViewportSize(view: Pointer, width: number, height: number): void {\n this.opentui.symbols.textBufferViewSetViewportSize(view, width, height)\n }\n\n public textBufferViewSetViewport(view: Pointer, x: number, y: number, width: number, height: number): void {\n this.opentui.symbols.textBufferViewSetViewport(view, x, y, width, height)\n }\n\n public textBufferViewGetLineInfo(view: Pointer): LineInfo {\n const outBuffer = new ArrayBuffer(LineInfoStruct.size)\n this.textBufferViewGetLineInfoDirect(view, ptr(outBuffer))\n const struct = LineInfoStruct.unpack(outBuffer)\n\n const lineStartCols = struct.startCols as number[]\n const lineWidthCols = struct.widthCols as number[]\n const lineWidthColsMax = struct.widthColsMax\n\n return {\n lineStartCols,\n lineWidthCols,\n lineWidthColsMax,\n lineSources: struct.sources as number[],\n lineWraps: struct.wraps as number[],\n }\n }\n\n public textBufferViewGetLogicalLineInfo(view: Pointer): LineInfo {\n const outBuffer = new ArrayBuffer(LineInfoStruct.size)\n this.textBufferViewGetLogicalLineInfoDirect(view, ptr(outBuffer))\n const struct = LineInfoStruct.unpack(outBuffer)\n\n const lineStartCols = struct.startCols as number[]\n const lineWidthCols = struct.widthCols as number[]\n const lineWidthColsMax = struct.widthColsMax\n\n return {\n lineStartCols,\n lineWidthCols,\n lineWidthColsMax,\n lineSources: struct.sources as number[],\n lineWraps: struct.wraps as number[],\n }\n }\n\n public textBufferViewGetVirtualLineCount(view: Pointer): number {\n return this.opentui.symbols.textBufferViewGetVirtualLineCount(view)\n }\n\n private textBufferViewGetLineInfoDirect(view: Pointer, outPtr: Pointer): void {\n this.opentui.symbols.textBufferViewGetLineInfoDirect(view, outPtr)\n }\n\n private textBufferViewGetLogicalLineInfoDirect(view: Pointer, outPtr: Pointer): void {\n this.opentui.symbols.textBufferViewGetLogicalLineInfoDirect(view, outPtr)\n }\n\n private textBufferViewGetSelectedText(view: Pointer, outPtr: Pointer | null, maxLen: number): number {\n return this.opentui.symbols.textBufferViewGetSelectedText(view, outPtr, maxLen)\n }\n\n private textBufferViewGetPlainText(view: Pointer, outPtr: Pointer | null, maxLen: number): number {\n return this.opentui.symbols.textBufferViewGetPlainText(view, outPtr, maxLen)\n }\n\n public textBufferViewGetSelectedTextBytes(view: Pointer, maxLength: number): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n\n const actualLen = this.textBufferViewGetSelectedText(view, ptrOrNull(outBuffer), maxLength)\n\n if (actualLen === 0) {\n return null\n }\n\n return outBuffer.slice(0, actualLen)\n }\n\n public textBufferViewGetPlainTextBytes(view: Pointer, maxLength: number): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n\n const actualLen = this.textBufferViewGetPlainText(view, ptrOrNull(outBuffer), maxLength)\n\n if (actualLen === 0) {\n return null\n }\n\n return outBuffer.slice(0, actualLen)\n }\n\n public textBufferViewSetTabIndicator(view: Pointer, indicator: number): void {\n this.opentui.symbols.textBufferViewSetTabIndicator(view, indicator)\n }\n\n public textBufferViewSetTabIndicatorColor(view: Pointer, color: RGBA): void {\n this.opentui.symbols.textBufferViewSetTabIndicatorColor(view, rgbaPtr(color))\n }\n\n public textBufferViewSetTruncate(view: Pointer, truncate: boolean): void {\n this.opentui.symbols.textBufferViewSetTruncate(view, ffiBool(truncate))\n }\n\n public textBufferViewMeasureForDimensions(view: Pointer, width: number, height: number): MeasureResult | null {\n const storage = this.ffiStructStorage.measureResult\n const success = this.opentui.symbols.textBufferViewMeasureForDimensions(view, width, height, storage.buffer)\n if (!success) return null\n const result = MeasureResultStruct.unpackInto(storage.view, storage.result)\n return { lineCount: result.lineCount, widthColsMax: result.widthColsMax }\n }\n\n public textBufferAddHighlightByCharRange(buffer: Pointer, highlight: Highlight): void {\n const packedHighlight = HighlightStruct.pack(highlight)\n this.opentui.symbols.textBufferAddHighlightByCharRange(buffer, ptr(packedHighlight))\n }\n\n public textBufferAddHighlight(buffer: Pointer, lineIdx: number, highlight: Highlight): void {\n const packedHighlight = HighlightStruct.pack(highlight)\n this.opentui.symbols.textBufferAddHighlight(buffer, lineIdx, ptr(packedHighlight))\n }\n\n public textBufferRemoveHighlightsByRef(buffer: Pointer, hlRef: number): void {\n this.opentui.symbols.textBufferRemoveHighlightsByRef(buffer, hlRef)\n }\n\n public textBufferClearLineHighlights(buffer: Pointer, lineIdx: number): void {\n this.opentui.symbols.textBufferClearLineHighlights(buffer, lineIdx)\n }\n\n public textBufferClearAllHighlights(buffer: Pointer): void {\n this.opentui.symbols.textBufferClearAllHighlights(buffer)\n }\n\n public textBufferSetSyntaxStyle(buffer: Pointer, style: Pointer | null): boolean {\n return this.opentui.symbols.textBufferSetSyntaxStyle(buffer, style ?? 0)\n }\n\n public textBufferGetLineHighlights(buffer: Pointer, lineIdx: number): Array<Highlight> {\n const outCountBuf = new Uint32Array(1)\n\n const nativePtr = this.opentui.symbols.textBufferGetLineHighlightsPtr(buffer, lineIdx, ptr(outCountBuf))\n if (!nativePtr) return []\n\n const count = outCountBuf[0]\n const byteLen = count * HighlightStruct.size\n const raw = toArrayBuffer(nativePtr, 0, byteLen)\n const results = HighlightStruct.unpackList(raw, count)\n\n this.opentui.symbols.textBufferFreeLineHighlights(nativePtr, count)\n\n return results\n }\n\n public textBufferGetHighlightCount(buffer: Pointer): number {\n return this.opentui.symbols.textBufferGetHighlightCount(buffer)\n }\n\n public getArenaAllocatedBytes(): number {\n const result = this.opentui.symbols.getArenaAllocatedBytes()\n return toSafeByteCount(result, \"Arena allocated bytes\")\n }\n\n public getBuildOptions(): BuildOptions {\n const optionsBuffer = new ArrayBuffer(BuildOptionsStruct.size)\n this.opentui.symbols.getBuildOptions(ptr(optionsBuffer))\n const options = BuildOptionsStruct.unpack(optionsBuffer)\n\n return {\n gpaSafeStats: !!options.gpaSafeStats,\n gpaMemoryLimitTracking: !!options.gpaMemoryLimitTracking,\n }\n }\n\n public getAllocatorStats(): AllocatorStats {\n const statsBuffer = new ArrayBuffer(AllocatorStatsStruct.size)\n this.opentui.symbols.getAllocatorStats(ptr(statsBuffer))\n const stats = AllocatorStatsStruct.unpack(statsBuffer)\n\n return {\n totalRequestedBytes: toNumber(stats.totalRequestedBytes),\n activeAllocations: toNumber(stats.activeAllocations),\n smallAllocations: toNumber(stats.smallAllocations),\n largeAllocations: toNumber(stats.largeAllocations),\n requestedBytesValid: !!stats.requestedBytesValid,\n }\n }\n\n public bufferDrawTextBufferView(buffer: Pointer, view: Pointer, x: number, y: number): void {\n this.opentui.symbols.bufferDrawTextBufferView(buffer, view, x, y)\n }\n\n public bufferDrawEditorView(buffer: Pointer, view: Pointer, x: number, y: number): void {\n this.opentui.symbols.bufferDrawEditorView(buffer, view, x, y)\n }\n\n // EditorView methods\n public createEditorView(\n editBufferPtr: EditBufferHandle,\n viewportWidth: number,\n viewportHeight: number,\n ): EditorViewHandle {\n const viewPtr = this.opentui.symbols.createEditorView(\n editBufferPtr,\n viewportWidth,\n viewportHeight,\n ) as EditorViewHandle\n if (!viewPtr) {\n throw new Error(\"Failed to create EditorView\")\n }\n return viewPtr\n }\n\n public destroyEditorView(view: Pointer): void {\n this.opentui.symbols.destroyEditorView(view)\n }\n\n public editorViewSetViewportSize(view: Pointer, width: number, height: number): void {\n this.opentui.symbols.editorViewSetViewportSize(view, width, height)\n }\n\n public editorViewSetViewport(\n view: Pointer,\n x: number,\n y: number,\n width: number,\n height: number,\n moveCursor: boolean,\n ): void {\n this.opentui.symbols.editorViewSetViewport(view, x, y, width, height, ffiBool(moveCursor))\n }\n\n public editorViewGetViewport(view: Pointer): { offsetY: number; offsetX: number; height: number; width: number } {\n const x = new Uint32Array(1)\n const y = new Uint32Array(1)\n const width = new Uint32Array(1)\n const height = new Uint32Array(1)\n\n this.opentui.symbols.editorViewGetViewport(view, ptr(x), ptr(y), ptr(width), ptr(height))\n\n return {\n offsetX: x[0],\n offsetY: y[0],\n width: width[0],\n height: height[0],\n }\n }\n\n public editorViewSetScrollMargin(view: Pointer, margin: number): void {\n this.opentui.symbols.editorViewSetScrollMargin(view, margin)\n }\n\n public editorViewSetWrapMode(view: Pointer, mode: \"none\" | \"char\" | \"word\"): void {\n const modeValue = mode === \"none\" ? 0 : mode === \"char\" ? 1 : 2\n this.opentui.symbols.editorViewSetWrapMode(view, modeValue)\n }\n\n public editorViewGetVirtualLineCount(view: Pointer): number {\n return this.opentui.symbols.editorViewGetVirtualLineCount(view)\n }\n\n public editorViewGetTotalVirtualLineCount(view: Pointer): number {\n return this.opentui.symbols.editorViewGetTotalVirtualLineCount(view)\n }\n\n public editorViewGetTextBufferView(view: EditorViewHandle): TextBufferViewHandle {\n const result = this.opentui.symbols.editorViewGetTextBufferView(view) as TextBufferViewHandle\n if (!result) {\n throw new Error(\"Failed to get TextBufferView from EditorView\")\n }\n return result\n }\n\n public editorViewGetLineInfo(view: Pointer): LineInfo {\n const outBuffer = new ArrayBuffer(LineInfoStruct.size)\n this.opentui.symbols.editorViewGetLineInfoDirect(view, ptr(outBuffer))\n const struct = LineInfoStruct.unpack(outBuffer)\n\n const lineStartCols = struct.startCols as number[]\n const lineWidthCols = struct.widthCols as number[]\n const lineWidthColsMax = struct.widthColsMax\n\n return {\n lineStartCols,\n lineWidthCols,\n lineWidthColsMax,\n lineSources: struct.sources as number[],\n lineWraps: struct.wraps as number[],\n }\n }\n\n public editorViewGetLogicalLineInfo(view: Pointer): LineInfo {\n const outBuffer = new ArrayBuffer(LineInfoStruct.size)\n this.opentui.symbols.editorViewGetLogicalLineInfoDirect(view, ptr(outBuffer))\n const struct = LineInfoStruct.unpack(outBuffer)\n\n const lineStartCols = struct.startCols as number[]\n const lineWidthCols = struct.widthCols as number[]\n const lineWidthColsMax = struct.widthColsMax\n\n return {\n lineStartCols,\n lineWidthCols,\n lineWidthColsMax,\n lineSources: struct.sources as number[],\n lineWraps: struct.wraps as number[],\n }\n }\n\n // EditBuffer implementations\n public createEditBuffer(widthMethod: WidthMethod): EditBufferHandle {\n const widthMethodCode = widthMethod === \"wcwidth\" ? 0 : 1\n const bufferPtr = this.opentui.symbols.createEditBuffer(widthMethodCode, this.eventSinkPtr ?? 0) as EditBufferHandle\n if (!bufferPtr) {\n throw new Error(\"Failed to create EditBuffer\")\n }\n return bufferPtr\n }\n\n public destroyEditBuffer(buffer: Pointer): void {\n this.opentui.symbols.destroyEditBuffer(buffer)\n }\n\n public editBufferSetText(buffer: Pointer, textBytes: Uint8Array): void {\n this.opentui.symbols.editBufferSetText(buffer, ptrOrNull(textBytes), textBytes.byteLength)\n }\n\n public editBufferSetTextFromMem(buffer: Pointer, memId: number): void {\n this.opentui.symbols.editBufferSetTextFromMem(buffer, memId)\n }\n\n public editBufferReplaceText(buffer: Pointer, textBytes: Uint8Array): void {\n this.opentui.symbols.editBufferReplaceText(buffer, ptrOrNull(textBytes), textBytes.byteLength)\n }\n\n public editBufferReplaceTextFromMem(buffer: Pointer, memId: number): void {\n this.opentui.symbols.editBufferReplaceTextFromMem(buffer, memId)\n }\n\n public editBufferGetText(buffer: Pointer, maxLength: number): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n const actualLen = this.opentui.symbols.editBufferGetText(buffer, ptrOrNull(outBuffer), maxLength)\n const len = actualLen\n if (len === 0) return null\n return outBuffer.slice(0, len)\n }\n\n public editBufferInsertChar(buffer: Pointer, char: string): void {\n const charBytes = this.encoder.encode(char)\n this.opentui.symbols.editBufferInsertChar(buffer, ptrOrNull(charBytes), charBytes.byteLength)\n }\n\n public editBufferInsertText(buffer: Pointer, text: string): void {\n const textBytes = this.encoder.encode(text)\n this.opentui.symbols.editBufferInsertText(buffer, ptrOrNull(textBytes), textBytes.byteLength)\n }\n\n public editBufferDeleteChar(buffer: Pointer): void {\n this.opentui.symbols.editBufferDeleteChar(buffer)\n }\n\n public editBufferDeleteCharBackward(buffer: Pointer): void {\n this.opentui.symbols.editBufferDeleteCharBackward(buffer)\n }\n\n public editBufferDeleteRange(\n buffer: Pointer,\n startLine: number,\n startCol: number,\n endLine: number,\n endCol: number,\n ): void {\n this.opentui.symbols.editBufferDeleteRange(buffer, startLine, startCol, endLine, endCol)\n }\n\n public editBufferNewLine(buffer: Pointer): void {\n this.opentui.symbols.editBufferNewLine(buffer)\n }\n\n public editBufferDeleteLine(buffer: Pointer): void {\n this.opentui.symbols.editBufferDeleteLine(buffer)\n }\n\n public editBufferMoveCursorLeft(buffer: Pointer): void {\n this.opentui.symbols.editBufferMoveCursorLeft(buffer)\n }\n\n public editBufferMoveCursorRight(buffer: Pointer): void {\n this.opentui.symbols.editBufferMoveCursorRight(buffer)\n }\n\n public editBufferMoveCursorUp(buffer: Pointer): void {\n this.opentui.symbols.editBufferMoveCursorUp(buffer)\n }\n\n public editBufferMoveCursorDown(buffer: Pointer): void {\n this.opentui.symbols.editBufferMoveCursorDown(buffer)\n }\n\n public editBufferGotoLine(buffer: Pointer, line: number): void {\n this.opentui.symbols.editBufferGotoLine(buffer, line)\n }\n\n public editBufferSetCursor(buffer: Pointer, line: number, byteOffset: number): void {\n this.opentui.symbols.editBufferSetCursor(buffer, line, byteOffset)\n }\n\n public editBufferSetCursorToLineCol(buffer: Pointer, line: number, col: number): void {\n this.opentui.symbols.editBufferSetCursorToLineCol(buffer, line, col)\n }\n\n public editBufferSetCursorByOffset(buffer: Pointer, offset: number): void {\n this.opentui.symbols.editBufferSetCursorByOffset(buffer, offset)\n }\n\n public editBufferGetCursorPosition(buffer: Pointer): LogicalCursor {\n const storage = this.ffiStructStorage.logicalCursor\n this.opentui.symbols.editBufferGetCursorPosition(buffer, storage.buffer)\n const cursor = LogicalCursorStruct.unpackInto(storage.view, storage.result)\n return { row: cursor.row, col: cursor.col, offset: cursor.offset }\n }\n\n public editBufferGetId(buffer: Pointer): number {\n return this.opentui.symbols.editBufferGetId(buffer)\n }\n\n public editBufferGetTextBuffer(buffer: EditBufferHandle): TextBufferHandle {\n const result = this.opentui.symbols.editBufferGetTextBuffer(buffer) as TextBufferHandle\n if (!result) {\n throw new Error(\"Failed to get TextBuffer from EditBuffer\")\n }\n return result\n }\n\n public editBufferDebugLogRope(buffer: Pointer): void {\n this.opentui.symbols.editBufferDebugLogRope(buffer)\n }\n\n public editBufferUndo(buffer: Pointer, maxLength: number): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n const actualLen = this.opentui.symbols.editBufferUndo(buffer, ptrOrNull(outBuffer), maxLength)\n const len = actualLen\n if (len === 0) return null\n return outBuffer.slice(0, len)\n }\n\n public editBufferRedo(buffer: Pointer, maxLength: number): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n const actualLen = this.opentui.symbols.editBufferRedo(buffer, ptrOrNull(outBuffer), maxLength)\n const len = actualLen\n if (len === 0) return null\n return outBuffer.slice(0, len)\n }\n\n public editBufferCanUndo(buffer: Pointer): boolean {\n return Boolean(this.opentui.symbols.editBufferCanUndo(buffer))\n }\n\n public editBufferCanRedo(buffer: Pointer): boolean {\n return Boolean(this.opentui.symbols.editBufferCanRedo(buffer))\n }\n\n public editBufferClearHistory(buffer: Pointer): void {\n this.opentui.symbols.editBufferClearHistory(buffer)\n }\n\n public editBufferClear(buffer: Pointer): void {\n this.opentui.symbols.editBufferClear(buffer)\n }\n\n public editBufferGetNextWordBoundary(buffer: Pointer): LogicalCursor {\n const storage = this.ffiStructStorage.logicalCursor\n this.opentui.symbols.editBufferGetNextWordBoundary(buffer, storage.buffer)\n const cursor = LogicalCursorStruct.unpackInto(storage.view, storage.result)\n return { row: cursor.row, col: cursor.col, offset: cursor.offset }\n }\n\n public editBufferGetPrevWordBoundary(buffer: Pointer): LogicalCursor {\n const storage = this.ffiStructStorage.logicalCursor\n this.opentui.symbols.editBufferGetPrevWordBoundary(buffer, storage.buffer)\n const cursor = LogicalCursorStruct.unpackInto(storage.view, storage.result)\n return { row: cursor.row, col: cursor.col, offset: cursor.offset }\n }\n\n public editBufferGetEOL(buffer: Pointer): LogicalCursor {\n const storage = this.ffiStructStorage.logicalCursor\n this.opentui.symbols.editBufferGetEOL(buffer, storage.buffer)\n const cursor = LogicalCursorStruct.unpackInto(storage.view, storage.result)\n return { row: cursor.row, col: cursor.col, offset: cursor.offset }\n }\n\n public editBufferOffsetToPosition(buffer: Pointer, offset: number): LogicalCursor | null {\n const storage = this.ffiStructStorage.logicalCursor\n const success = this.opentui.symbols.editBufferOffsetToPosition(buffer, offset, storage.buffer)\n if (!success) return null\n const cursor = LogicalCursorStruct.unpackInto(storage.view, storage.result)\n return { row: cursor.row, col: cursor.col, offset: cursor.offset }\n }\n\n public editBufferPositionToOffset(buffer: Pointer, row: number, col: number): number {\n return this.opentui.symbols.editBufferPositionToOffset(buffer, row, col)\n }\n\n public editBufferGetLineStartOffset(buffer: Pointer, row: number): number {\n return this.opentui.symbols.editBufferGetLineStartOffset(buffer, row)\n }\n\n public editBufferGetTextRange(\n buffer: Pointer,\n startOffset: number,\n endOffset: number,\n maxLength: number,\n ): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n const actualLen = this.opentui.symbols.editBufferGetTextRange(\n buffer,\n startOffset,\n endOffset,\n ptrOrNull(outBuffer),\n maxLength,\n )\n const len = actualLen\n if (len === 0) return null\n return outBuffer.slice(0, len)\n }\n\n public editBufferGetTextRangeByCoords(\n buffer: Pointer,\n startRow: number,\n startCol: number,\n endRow: number,\n endCol: number,\n maxLength: number,\n ): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n const actualLen = this.opentui.symbols.editBufferGetTextRangeByCoords(\n buffer,\n startRow,\n startCol,\n endRow,\n endCol,\n ptrOrNull(outBuffer),\n maxLength,\n )\n const len = actualLen\n if (len === 0) return null\n return usesBunFFI ? outBuffer.slice(0, len) : trimNodeFFIOutputBytes(outBuffer, len)\n }\n\n // EditorView selection and editing implementations\n public editorViewSetSelection(\n view: Pointer,\n start: number,\n end: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n ): void {\n const bg = optionalRgbaPtr(bgColor)\n const fg = optionalRgbaPtr(fgColor)\n this.opentui.symbols.editorViewSetSelection(view, start, end, bg, fg)\n }\n\n public editorViewResetSelection(view: Pointer): void {\n this.opentui.symbols.editorViewResetSelection(view)\n }\n\n public editorViewGetSelection(view: Pointer): { start: number; end: number } | null {\n const packedInfo = this.opentui.symbols.editorViewGetSelection(view)\n if (packedInfo === 0xffff_ffff_ffff_ffffn) {\n return null\n }\n const start = Number(packedInfo >> 32n)\n const end = Number(packedInfo & 0xffff_ffffn)\n return { start, end }\n }\n\n public editorViewSetLocalSelection(\n view: Pointer,\n anchorX: number,\n anchorY: number,\n focusX: number,\n focusY: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n updateCursor: boolean,\n followCursor: boolean,\n ): boolean {\n const bg = optionalRgbaPtr(bgColor)\n const fg = optionalRgbaPtr(fgColor)\n return Boolean(\n this.opentui.symbols.editorViewSetLocalSelection(\n view,\n anchorX,\n anchorY,\n focusX,\n focusY,\n bg,\n fg,\n ffiBool(updateCursor),\n ffiBool(followCursor),\n ),\n )\n }\n\n public editorViewUpdateSelection(view: Pointer, end: number, bgColor: RGBA | null, fgColor: RGBA | null): void {\n const bg = optionalRgbaPtr(bgColor)\n const fg = optionalRgbaPtr(fgColor)\n this.opentui.symbols.editorViewUpdateSelection(view, end, bg, fg)\n }\n\n public editorViewUpdateLocalSelection(\n view: Pointer,\n anchorX: number,\n anchorY: number,\n focusX: number,\n focusY: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n updateCursor: boolean,\n followCursor: boolean,\n ): boolean {\n const bg = optionalRgbaPtr(bgColor)\n const fg = optionalRgbaPtr(fgColor)\n return Boolean(\n this.opentui.symbols.editorViewUpdateLocalSelection(\n view,\n anchorX,\n anchorY,\n focusX,\n focusY,\n bg,\n fg,\n ffiBool(updateCursor),\n ffiBool(followCursor),\n ),\n )\n }\n\n public editorViewResetLocalSelection(view: Pointer): void {\n this.opentui.symbols.editorViewResetLocalSelection(view)\n }\n\n public editorViewGetSelectedTextBytes(view: Pointer, maxLength: number): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n const actualLen = this.opentui.symbols.editorViewGetSelectedTextBytes(view, ptrOrNull(outBuffer), maxLength)\n const len = actualLen\n if (len === 0) return null\n return outBuffer.slice(0, len)\n }\n\n public editorViewGetCursor(view: Pointer): { row: number; col: number } {\n const row = new Uint32Array(1)\n const col = new Uint32Array(1)\n this.opentui.symbols.editorViewGetCursor(view, ptr(row), ptr(col))\n return { row: row[0], col: col[0] }\n }\n\n public editorViewGetText(view: Pointer, maxLength: number): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n const actualLen = this.opentui.symbols.editorViewGetText(view, ptrOrNull(outBuffer), maxLength)\n const len = actualLen\n if (len === 0) return null\n return outBuffer.slice(0, len)\n }\n\n public editorViewGetVisualCursor(view: Pointer): VisualCursor {\n const storage = this.ffiStructStorage.visualCursor\n this.opentui.symbols.editorViewGetVisualCursor(view, storage.buffer)\n const cursor = VisualCursorStruct.unpackInto(storage.view, storage.result)\n return { ...cursor }\n }\n\n public editorViewMoveUpVisual(view: Pointer): void {\n this.opentui.symbols.editorViewMoveUpVisual(view)\n }\n\n public editorViewMoveDownVisual(view: Pointer): void {\n this.opentui.symbols.editorViewMoveDownVisual(view)\n }\n\n public editorViewDeleteSelectedText(view: Pointer): void {\n this.opentui.symbols.editorViewDeleteSelectedText(view)\n }\n\n public editorViewSetCursorByOffset(view: Pointer, offset: number): void {\n this.opentui.symbols.editorViewSetCursorByOffset(view, offset)\n }\n\n public editorViewGetNextWordBoundary(view: Pointer): VisualCursor {\n const storage = this.ffiStructStorage.visualCursor\n this.opentui.symbols.editorViewGetNextWordBoundary(view, storage.buffer)\n const cursor = VisualCursorStruct.unpackInto(storage.view, storage.result)\n return { ...cursor }\n }\n\n public editorViewGetPrevWordBoundary(view: Pointer): VisualCursor {\n const storage = this.ffiStructStorage.visualCursor\n this.opentui.symbols.editorViewGetPrevWordBoundary(view, storage.buffer)\n const cursor = VisualCursorStruct.unpackInto(storage.view, storage.result)\n return { ...cursor }\n }\n\n public editorViewGetEOL(view: Pointer): VisualCursor {\n const storage = this.ffiStructStorage.visualCursor\n this.opentui.symbols.editorViewGetEOL(view, storage.buffer)\n const cursor = VisualCursorStruct.unpackInto(storage.view, storage.result)\n return { ...cursor }\n }\n\n public editorViewGetVisualSOL(view: Pointer): VisualCursor {\n const storage = this.ffiStructStorage.visualCursor\n this.opentui.symbols.editorViewGetVisualSOL(view, storage.buffer)\n const cursor = VisualCursorStruct.unpackInto(storage.view, storage.result)\n return { ...cursor }\n }\n\n public editorViewGetVisualEOL(view: Pointer): VisualCursor {\n const storage = this.ffiStructStorage.visualCursor\n this.opentui.symbols.editorViewGetVisualEOL(view, storage.buffer)\n const cursor = VisualCursorStruct.unpackInto(storage.view, storage.result)\n return { ...cursor }\n }\n\n public bufferPushScissorRect(buffer: Pointer, x: number, y: number, width: number, height: number): void {\n this.opentui.symbols.bufferPushScissorRect(buffer, x, y, width, height)\n }\n\n public bufferPopScissorRect(buffer: Pointer): void {\n this.opentui.symbols.bufferPopScissorRect(buffer)\n }\n\n public bufferClearScissorRects(buffer: Pointer): void {\n this.opentui.symbols.bufferClearScissorRects(buffer)\n }\n\n public bufferPushOpacity(buffer: Pointer, opacity: number): void {\n this.opentui.symbols.bufferPushOpacity(buffer, opacity)\n }\n\n public bufferPopOpacity(buffer: Pointer): void {\n this.opentui.symbols.bufferPopOpacity(buffer)\n }\n\n public bufferGetCurrentOpacity(buffer: Pointer): number {\n return this.opentui.symbols.bufferGetCurrentOpacity(buffer)\n }\n\n public bufferClearOpacity(buffer: Pointer): void {\n this.opentui.symbols.bufferClearOpacity(buffer)\n }\n\n public getTerminalCapabilities(renderer: Pointer): TerminalCapabilities {\n const capsBuffer = new ArrayBuffer(TerminalCapabilitiesStruct.size)\n this.opentui.symbols.getTerminalCapabilities(renderer, ptr(capsBuffer))\n\n const caps = TerminalCapabilitiesStruct.unpack(capsBuffer)\n\n return {\n kitty_keyboard: caps.kitty_keyboard,\n kitty_graphics: caps.kitty_graphics,\n rgb: caps.rgb,\n ansi256: caps.ansi256,\n unicode: caps.unicode,\n sgr_pixels: caps.sgr_pixels,\n color_scheme_updates: caps.color_scheme_updates,\n explicit_width: caps.explicit_width,\n scaled_text: caps.scaled_text,\n sixel: caps.sixel,\n focus_tracking: caps.focus_tracking,\n sync: caps.sync,\n bracketed_paste: caps.bracketed_paste,\n hyperlinks: caps.hyperlinks,\n osc52: caps.osc52,\n osc52_support: caps.osc52_support,\n notifications: caps.notifications,\n explicit_cursor_positioning: caps.explicit_cursor_positioning,\n remote: caps.remote,\n multiplexer: caps.multiplexer,\n image_protocol: caps.image_protocol,\n terminal: {\n name: caps.term_name ?? \"\",\n version: caps.term_version ?? \"\",\n from_xtversion: caps.term_from_xtversion,\n },\n }\n }\n\n public processCapabilityResponse(renderer: Pointer, response: string): void {\n const responseBytes = this.encoder.encode(response)\n this.opentui.symbols.processCapabilityResponse(renderer, ptrOrNull(responseBytes), responseBytes.byteLength)\n }\n\n public encodeUnicode(\n text: string,\n widthMethod: WidthMethod,\n ): { ptr: Pointer; data: Array<{ width: number; char: number }> } | null {\n const textBytes = this.encoder.encode(text)\n const widthMethodCode = widthMethod === \"wcwidth\" ? 0 : 1\n\n const outPtrBuffer = new ArrayBuffer(8) // Pointer-sized out slot\n const outLenBuffer = new ArrayBuffer(8) // Native length out slot\n\n const success = this.opentui.symbols.encodeUnicode(\n ptrOrNull(textBytes),\n textBytes.byteLength,\n ptr(outPtrBuffer),\n ptr(outLenBuffer),\n widthMethodCode,\n )\n\n if (!success) {\n return null\n }\n\n const outPtrView = new BigUint64Array(outPtrBuffer)\n const outLenView = new BigUint64Array(outLenBuffer)\n\n const resultLen = Number(outLenView[0])\n\n if (resultLen === 0) {\n return { ptr: 0 as Pointer, data: [] }\n }\n\n const resultPtr = toPointer(outPtrView[0])\n\n // Convert pointer to ArrayBuffer and use EncodedCharStruct to unpack the list\n const byteLen = resultLen * EncodedCharStruct.size\n const raw = toArrayBuffer(resultPtr, 0, byteLen)\n const data = EncodedCharStruct.unpackList(raw, resultLen)\n\n return { ptr: resultPtr, data }\n }\n\n public freeUnicode(encoded: { ptr: Pointer; data: Array<{ width: number; char: number }> }): void {\n this.opentui.symbols.freeUnicode(encoded.ptr, encoded.data.length)\n }\n\n public bufferDrawChar(\n buffer: Pointer,\n char: number,\n x: number,\n y: number,\n fg: RGBA,\n bg: RGBA,\n attributes: number = 0,\n ): void {\n this.opentui.symbols.bufferDrawChar(buffer, char, x, y, rgbaPtr(fg), rgbaPtr(bg), attributes)\n }\n\n public createAudioEngine(options?: AudioCreateOptions | null): AudioEngineHandle | null {\n const optionsBuffer = options == null ? null : AudioCreateOptionsStruct.pack(options)\n const engineHandle = this.opentui.symbols.createAudioEngine(\n optionsBuffer ? ptr(optionsBuffer) : null,\n ) as AudioEngineHandle\n return engineHandle ? engineHandle : null\n }\n\n public destroyAudioEngine(engine: AudioEngineHandle): void {\n this.opentui.symbols.destroyAudioEngine(engine)\n }\n\n public audioRefreshPlaybackDevices(engine: Pointer): number {\n return this.opentui.symbols.audioRefreshPlaybackDevices(engine)\n }\n\n public audioGetPlaybackDeviceCount(engine: Pointer): number {\n return this.opentui.symbols.audioGetPlaybackDeviceCount(engine)\n }\n\n public audioGetPlaybackDeviceName(engine: Pointer, index: number): string {\n const outBuffer = new Uint8Array(512)\n const bytesWritten = toNumber(\n this.opentui.symbols.audioGetPlaybackDeviceName(engine, index, ptr(outBuffer), outBuffer.length),\n )\n const safeBytesWritten = Math.max(0, Math.min(outBuffer.length, bytesWritten))\n return this.decoder.decode(outBuffer.subarray(0, safeBytesWritten))\n }\n\n public audioIsPlaybackDeviceDefault(engine: Pointer, index: number): boolean {\n return this.opentui.symbols.audioIsPlaybackDeviceDefault(engine, index)\n }\n\n public audioSelectPlaybackDevice(engine: Pointer, index: number): number {\n return this.opentui.symbols.audioSelectPlaybackDevice(engine, index)\n }\n\n public audioClearPlaybackDeviceSelection(engine: Pointer): void {\n this.opentui.symbols.audioClearPlaybackDeviceSelection(engine)\n }\n\n public audioRefreshCaptureDevices(engine: AudioEngineHandle): number {\n return this.opentui.symbols.audioRefreshCaptureDevices(engine)\n }\n\n public audioGetCaptureDeviceCount(engine: AudioEngineHandle): number {\n return this.opentui.symbols.audioGetCaptureDeviceCount(engine)\n }\n\n public audioGetCaptureDeviceName(engine: AudioEngineHandle, index: number): string {\n const outBuffer = new Uint8Array(512)\n const bytesWritten = toNumber(\n this.opentui.symbols.audioGetCaptureDeviceName(engine, index, outBuffer, outBuffer.length),\n )\n const safeBytesWritten = Math.max(0, Math.min(outBuffer.length, bytesWritten))\n return this.decoder.decode(outBuffer.subarray(0, safeBytesWritten))\n }\n\n public audioIsCaptureDeviceDefault(engine: AudioEngineHandle, index: number): boolean {\n return Boolean(this.opentui.symbols.audioIsCaptureDeviceDefault(engine, index))\n }\n\n public audioSelectCaptureDevice(engine: AudioEngineHandle, index: number): number {\n return this.opentui.symbols.audioSelectCaptureDevice(engine, index)\n }\n\n public audioClearCaptureDeviceSelection(engine: AudioEngineHandle): void {\n this.opentui.symbols.audioClearCaptureDeviceSelection(engine)\n }\n\n public audioStartCapture(\n engine: AudioEngineHandle,\n options: AudioStartOptions | undefined,\n channels: number,\n capacityFrames: number,\n ): number {\n let optionsBuffer: ArrayBuffer\n try {\n const noFixedSizedCallback = options?.noFixedSizedCallback\n optionsBuffer = AudioStartOptionsStruct.pack(options ?? {})\n if (noFixedSizedCallback === undefined) {\n const field = AudioStartOptionsStruct.layoutByName.get(\"noFixedSizedCallback\")\n if (!field) return -1\n new DataView(optionsBuffer).setUint8(field.offset, 1)\n }\n } catch {\n return -1\n }\n return this.opentui.symbols.audioStartCapture(engine, optionsBuffer, channels, capacityFrames)\n }\n\n public audioStopCapture(engine: AudioEngineHandle): number {\n return this.opentui.symbols.audioStopCapture(engine)\n }\n\n public audioIsCaptureRunning(engine: AudioEngineHandle): boolean {\n return Boolean(this.opentui.symbols.audioIsCaptureRunning(engine))\n }\n\n public audioReadCapture(\n engine: AudioEngineHandle,\n outBuffer: Float32Array,\n frameCount: number,\n ): { status: number; framesRead: number } {\n const outFramesReadBuffer = new ArrayBuffer(4)\n const sampleCapacity = toSafeFFIU32Length(outBuffer.length, \"Audio capture output sample capacity\")\n const status = this.opentui.symbols.audioReadCapture(\n engine,\n outBuffer,\n sampleCapacity,\n frameCount,\n outFramesReadBuffer,\n )\n if (status !== 0) return { status, framesRead: 0 }\n return { status, framesRead: new Uint32Array(outFramesReadBuffer)[0] ?? 0 }\n }\n\n public audioGetCaptureStats(engine: AudioEngineHandle): { status: number; stats: NativeAudioCaptureStats | null } {\n const statsBuffer = new ArrayBuffer(AudioCaptureStatsStruct.size)\n const status = this.opentui.symbols.audioGetCaptureStats(engine, statsBuffer)\n if (status !== 0) return { status, stats: null }\n const stats = AudioCaptureStatsStruct.unpack(statsBuffer)\n return {\n status,\n stats: {\n framesReceived: typeof stats.framesReceived === \"bigint\" ? stats.framesReceived : BigInt(stats.framesReceived),\n framesRead: typeof stats.framesRead === \"bigint\" ? stats.framesRead : BigInt(stats.framesRead),\n framesDropped: typeof stats.framesDropped === \"bigint\" ? stats.framesDropped : BigInt(stats.framesDropped),\n sampleRate: stats.sampleRate,\n channels: stats.channels,\n bufferedFrames: stats.bufferedFrames,\n capacityFrames: stats.capacityFrames,\n },\n }\n }\n\n public audioStart(engine: Pointer, options?: AudioStartOptions | null): number {\n let optionsBuffer: ArrayBuffer | null\n try {\n optionsBuffer = options == null ? null : AudioStartOptionsStruct.pack(options)\n } catch {\n return -1\n }\n return this.opentui.symbols.audioStart(engine, optionsBuffer ? ptr(optionsBuffer) : null)\n }\n\n public audioStartMixer(engine: Pointer): number {\n return this.opentui.symbols.audioStartMixer(engine)\n }\n\n public audioStop(engine: Pointer): number {\n return this.opentui.symbols.audioStop(engine)\n }\n\n public audioCreateStream(\n engine: AudioEngineHandle,\n options: AudioStreamCreateOptions,\n ): { status: number; streamId: number | null } {\n if (\n !isFFIU32(options.groupId) ||\n (options.format !== NativeAudioStreamFormat.Mp3 && options.format !== NativeAudioStreamFormat.Flac)\n ) {\n return { status: -1, streamId: null }\n }\n const optionsBuffer = AudioStreamCreateOptionsStruct.pack(options)\n const outBuffer = new ArrayBuffer(4)\n const status = this.opentui.symbols.audioCreateStream(engine, optionsBuffer, outBuffer)\n if (status !== 0) return { status, streamId: null }\n return { status, streamId: new Uint32Array(outBuffer)[0] ?? null }\n }\n\n public audioWriteStream(engine: AudioEngineHandle, streamId: number, data: Uint8Array): number {\n const dataLength = toSafeFFIU32Length(data.byteLength, \"Audio stream data length\")\n return this.opentui.symbols.audioWriteStream(engine, streamId, dataLength === 0 ? null : data, dataLength)\n }\n\n public audioEndStream(engine: AudioEngineHandle, streamId: number): number {\n return this.opentui.symbols.audioEndStream(engine, streamId)\n }\n\n public audioRestartStream(engine: AudioEngineHandle, streamId: number): number {\n return this.opentui.symbols.audioRestartStream(engine, streamId)\n }\n\n public audioSetStreamVolume(engine: AudioEngineHandle, streamId: number, volume: number): number {\n return this.opentui.symbols.audioSetStreamVolume(engine, streamId, volume)\n }\n\n public audioSetStreamPan(engine: AudioEngineHandle, streamId: number, pan: number): number {\n return this.opentui.symbols.audioSetStreamPan(engine, streamId, pan)\n }\n\n public audioSetStreamGroup(engine: AudioEngineHandle, streamId: number, groupId: number): number {\n if (!isFFIU32(groupId)) return -1\n return this.opentui.symbols.audioSetStreamGroup(engine, streamId, groupId)\n }\n\n public audioGetStreamStats(engine: AudioEngineHandle, streamId: number): NativeAudioStreamStats | null {\n const storage = this.ffiStructStorage.audioStreamStats\n const status = this.opentui.symbols.audioGetStreamStats(engine, streamId, storage.buffer)\n if (status !== 0) return null\n const stats = AudioStreamStatsStruct.unpackInto(storage.view, storage.result) as NativeAudioStreamStats\n return { ...stats }\n }\n\n public audioCloseStream(\n engine: AudioEngineHandle,\n streamId: number,\n reason: NativeAudioStreamCloseReason,\n ): { status: number; stats: NativeAudioStreamStats | null } {\n const storage = this.ffiStructStorage.audioStreamStats\n const status = this.opentui.symbols.audioCloseStream(engine, streamId, reason, storage.buffer)\n if (status !== 0) return { status, stats: null }\n const stats = AudioStreamStatsStruct.unpackInto(storage.view, storage.result) as NativeAudioStreamStats\n return { status, stats: { ...stats } }\n }\n\n public audioLoad(engine: Pointer, data: Uint8Array): { status: number; soundId: number | null } {\n const outBuffer = new ArrayBuffer(4)\n const dataLength = toSafeFFIU32Length(data.byteLength, \"Audio data length\")\n const status = this.opentui.symbols.audioLoad(engine, ptr(data), dataLength, ptr(outBuffer))\n if (status !== 0) {\n return { status, soundId: null }\n }\n const view = new Uint32Array(outBuffer)\n return { status, soundId: view[0] }\n }\n\n public audioUnload(engine: Pointer, soundId: number): number {\n return this.opentui.symbols.audioUnload(engine, soundId)\n }\n\n public audioPlay(\n engine: Pointer,\n soundId: number,\n options?: AudioVoiceOptions,\n ): { status: number; voiceId: number | null } {\n if (options?.groupId !== undefined && !isFFIU32(options.groupId)) return { status: -1, voiceId: null }\n const outBuffer = new ArrayBuffer(4)\n const optionsBuffer = options ? AudioVoiceOptionsStruct.pack(options) : null\n const status = this.opentui.symbols.audioPlay(\n engine,\n soundId,\n optionsBuffer ? ptr(optionsBuffer) : null,\n ptr(outBuffer),\n )\n if (status !== 0) {\n return { status, voiceId: null }\n }\n const view = new Uint32Array(outBuffer)\n return { status, voiceId: view[0] }\n }\n\n public audioStopVoice(engine: Pointer, voiceId: number): number {\n return this.opentui.symbols.audioStopVoice(engine, voiceId)\n }\n\n public audioSetVoiceGroup(engine: Pointer, voiceId: number, groupId: number): number {\n if (!isFFIU32(groupId)) return -1\n return this.opentui.symbols.audioSetVoiceGroup(engine, voiceId, groupId)\n }\n\n public audioCreateGroup(engine: Pointer, name: string): { status: number; groupId: number | null } {\n const outBuffer = new ArrayBuffer(4)\n const nameBytes = this.encoder.encode(name)\n const nameLength = toSafeFFIU32Length(nameBytes.byteLength, \"Audio group name length\")\n const status = this.opentui.symbols.audioCreateGroup(engine, ptr(nameBytes), nameLength, ptr(outBuffer))\n if (status !== 0) {\n return { status, groupId: null }\n }\n const view = new Uint32Array(outBuffer)\n return { status, groupId: view[0] }\n }\n\n public audioSetGroupVolume(engine: Pointer, groupId: number, volume: number): number {\n return this.opentui.symbols.audioSetGroupVolume(engine, groupId, volume)\n }\n\n public audioSetMasterVolume(engine: Pointer, volume: number): number {\n return this.opentui.symbols.audioSetMasterVolume(engine, volume)\n }\n\n public audioMixToBuffer(engine: Pointer, outBuffer: Float32Array, frameCount: number, channels: number): number {\n return this.opentui.symbols.audioMixToBuffer(engine, ptr(outBuffer), frameCount, channels)\n }\n\n public audioEnableTap(engine: Pointer, enabled: boolean, capacityFrames: number): number {\n return this.opentui.symbols.audioEnableTap(engine, ffiBool(enabled), capacityFrames)\n }\n\n public audioReadTap(\n engine: Pointer,\n outBuffer: Float32Array,\n frameCount: number,\n channels: number,\n ): { status: number; framesRead: number } {\n const outFramesReadBuffer = new ArrayBuffer(4)\n const status = this.opentui.symbols.audioReadTap(\n engine,\n ptr(outBuffer),\n frameCount,\n channels,\n ptr(outFramesReadBuffer),\n )\n if (status !== 0) {\n return { status, framesRead: 0 }\n }\n const view = new Uint32Array(outFramesReadBuffer)\n return { status, framesRead: view[0] ?? 0 }\n }\n\n public audioGetStats(engine: Pointer): AudioStats | null {\n const statsBuffer = new ArrayBuffer(AudioStatsStruct.size)\n const status = this.opentui.symbols.audioGetStats(engine, ptr(statsBuffer))\n if (status !== 0) {\n return null\n }\n const stats = AudioStatsStruct.unpack(statsBuffer)\n return {\n soundsLoaded: stats.soundsLoaded,\n voicesActive: stats.voicesActive,\n framesMixed: typeof stats.framesMixed === \"bigint\" ? stats.framesMixed : BigInt(stats.framesMixed),\n lockMisses: stats.lockMisses,\n lastPeak: stats.lastPeak,\n lastRms: stats.lastRms,\n }\n }\n\n public registerNativeSpanFeedStream(stream: Pointer, handler: NativeSpanFeedEventHandler): void {\n const callback = this.ensureNativeSpanFeedCallback()\n this.nativeSpanFeedHandlers.set(stream, handler)\n this.opentui.symbols.streamSetCallback(stream, callback.ptr)\n }\n\n public unregisterNativeSpanFeedStream(stream: Pointer): void {\n this.opentui.symbols.streamSetCallback(stream, null)\n this.nativeSpanFeedHandlers.delete(stream)\n }\n\n public createNativeSpanFeed(options?: NativeSpanFeedOptions | null): Pointer {\n const optionsBuffer = options == null ? null : NativeSpanFeedOptionsStruct.pack(options)\n const streamPtr = this.opentui.symbols.createNativeSpanFeed(optionsBuffer ? ptr(optionsBuffer) : null)\n if (!streamPtr) {\n throw new Error(\"Failed to create stream\")\n }\n return streamPtr\n }\n\n public attachNativeSpanFeed(stream: Pointer): number {\n return this.opentui.symbols.attachNativeSpanFeed(stream)\n }\n\n public destroyNativeSpanFeed(stream: Pointer): void {\n this.opentui.symbols.destroyNativeSpanFeed(stream)\n this.nativeSpanFeedHandlers.delete(stream)\n }\n\n public streamWrite(stream: Pointer, data: Uint8Array | string): number {\n const bytes = typeof data === \"string\" ? this.encoder.encode(data) : data\n return this.opentui.symbols.streamWrite(stream, ptrOrNull(bytes), bytes.byteLength)\n }\n\n public streamCommit(stream: Pointer): number {\n return this.opentui.symbols.streamCommit(stream)\n }\n\n public streamDrainSpans(stream: Pointer, outBuffer: Uint8Array, maxSpans: number): number {\n const count = this.opentui.symbols.streamDrainSpans(stream, ptr(outBuffer), maxSpans)\n return toNumber(count)\n }\n\n public streamClose(stream: Pointer): number {\n return this.opentui.symbols.streamClose(stream)\n }\n\n public streamSetOptions(stream: Pointer, options: NativeSpanFeedOptions): number {\n const optionsBuffer = NativeSpanFeedOptionsStruct.pack(options)\n return this.opentui.symbols.streamSetOptions(stream, ptr(optionsBuffer))\n }\n\n public streamGetStats(stream: Pointer): NativeSpanFeedStats | null {\n const statsBuffer = new ArrayBuffer(NativeSpanFeedStatsStruct.size)\n const status = this.opentui.symbols.streamGetStats(stream, ptr(statsBuffer))\n if (status !== 0) {\n return null\n }\n const stats = NativeSpanFeedStatsStruct.unpack(statsBuffer)\n return {\n bytesWritten: typeof stats.bytesWritten === \"bigint\" ? stats.bytesWritten : BigInt(stats.bytesWritten),\n spansCommitted: typeof stats.spansCommitted === \"bigint\" ? stats.spansCommitted : BigInt(stats.spansCommitted),\n chunks: stats.chunks,\n pendingSpans: stats.pendingSpans,\n }\n }\n\n public streamReserve(stream: Pointer, minLen: number): { status: number; info: ReserveInfo | null } {\n const reserveBuffer = new ArrayBuffer(ReserveInfoStruct.size)\n const status = this.opentui.symbols.streamReserve(stream, minLen, ptr(reserveBuffer))\n if (status !== 0) {\n return { status, info: null }\n }\n return { status, info: ReserveInfoStruct.unpack(reserveBuffer) }\n }\n\n public streamCommitReserved(stream: Pointer, length: number): number {\n return this.opentui.symbols.streamCommitReserved(stream, length)\n }\n\n public createSyntaxStyle(): SyntaxStyleHandle {\n const styleHandle = this.opentui.symbols.createSyntaxStyle() as SyntaxStyleHandle\n if (!styleHandle) {\n throw new Error(\"Failed to create SyntaxStyle\")\n }\n return styleHandle\n }\n\n public destroySyntaxStyle(style: SyntaxStyleHandle): void {\n this.opentui.symbols.destroySyntaxStyle(style)\n }\n\n public syntaxStyleRegister(\n style: SyntaxStyleHandle,\n name: string,\n fg: RGBA | null,\n bg: RGBA | null,\n attributes: number,\n ): number {\n const nameBytes = this.encoder.encode(name)\n const fgPtr = optionalRgbaPtr(fg)\n const bgPtr = optionalRgbaPtr(bg)\n return this.opentui.symbols.syntaxStyleRegister(\n style,\n ptrOrNull(nameBytes),\n nameBytes.byteLength,\n fgPtr,\n bgPtr,\n attributes,\n )\n }\n\n public syntaxStyleResolveByName(style: SyntaxStyleHandle, name: string): number | null {\n const nameBytes = this.encoder.encode(name)\n const id = this.opentui.symbols.syntaxStyleResolveByName(style, ptrOrNull(nameBytes), nameBytes.byteLength)\n return id === 0 ? null : id\n }\n\n public syntaxStyleGetStyleCount(style: SyntaxStyleHandle): number {\n return this.opentui.symbols.syntaxStyleGetStyleCount(style)\n }\n\n private imageHandleResult(status: number, output: Uint32Array): { status: number; handle: ImageHandle | null } {\n return { status, handle: status === 0 && output[0] !== 0 ? (output[0] as ImageHandle) : null }\n }\n\n public imageInfo(data: Uint8Array): { status: number; info: NativeImageInfo } {\n const length = toSafeFFIU32Length(data.byteLength, \"image data\")\n const output = new ArrayBuffer(NativeImageInfoStruct.size)\n const status = this.opentui.symbols.imageInfo(data.byteLength === 0 ? null : data, length, output)\n return { status, info: NativeImageInfoStruct.unpack(output) }\n }\n\n public imageDecode(data: Uint8Array): { status: number; handle: ImageHandle | null } {\n const length = toSafeFFIU32Length(data.byteLength, \"image data\")\n const output = new Uint32Array(1)\n return this.imageHandleResult(\n this.opentui.symbols.imageDecode(data.byteLength === 0 ? null : data, length, output),\n output,\n )\n }\n\n public imageCreateFromRgba(\n pixels: Uint8Array,\n width: number,\n height: number,\n stride: number,\n ): { status: number; handle: ImageHandle | null } {\n const output = new Uint32Array(1)\n const status = this.opentui.symbols.imageCreateFromRgba(\n pixels.byteLength === 0 ? null : pixels,\n BigInt(pixels.byteLength),\n width,\n height,\n stride,\n output,\n )\n return this.imageHandleResult(status, output)\n }\n\n public imageDestroy(image: ImageHandle): void {\n this.opentui.symbols.imageDestroy(image)\n }\n\n public imageGetInfo(image: ImageHandle): { status: number; info: NativeImageInfo } {\n const output = new ArrayBuffer(NativeImageInfoStruct.size)\n const status = this.opentui.symbols.imageGetInfo(image, output)\n return { status, info: NativeImageInfoStruct.unpack(output) }\n }\n\n public imageGetPixelsPtr(image: ImageHandle): Pointer | null {\n const pointer = this.opentui.symbols.imageGetPixelsPtr(image)\n return pointer === null || pointer === 0 || pointer === 0n ? null : pointer\n }\n\n public imageClone(image: ImageHandle): { status: number; handle: ImageHandle | null } {\n const output = new Uint32Array(1)\n return this.imageHandleResult(this.opentui.symbols.imageClone(image, output), output)\n }\n\n public imageCopyPixels(image: ImageHandle, destination: Uint8Array, stride: number, bgra: boolean): number {\n return this.opentui.symbols.imageCopyPixels(\n image,\n destination.byteLength === 0 ? null : destination,\n BigInt(destination.byteLength),\n stride,\n bgra ? 1 : 0,\n )\n }\n\n public imageResize(\n image: ImageHandle,\n width: number,\n height: number,\n filter: number,\n ): { status: number; handle: ImageHandle | null } {\n const output = new Uint32Array(1)\n return this.imageHandleResult(this.opentui.symbols.imageResize(image, width, height, filter, output), output)\n }\n\n public imageExtract(\n image: ImageHandle,\n left: number,\n top: number,\n width: number,\n height: number,\n ): { status: number; handle: ImageHandle | null } {\n const output = new Uint32Array(1)\n return this.imageHandleResult(this.opentui.symbols.imageExtract(image, left, top, width, height, output), output)\n }\n\n public imageExtend(\n image: ImageHandle,\n top: number,\n right: number,\n bottom: number,\n left: number,\n background: Uint8Array,\n ): { status: number; handle: ImageHandle | null } {\n if (!(background instanceof Uint8Array) || background.byteLength !== 4) return { status: 7, handle: null }\n const output = new Uint32Array(1)\n return this.imageHandleResult(\n this.opentui.symbols.imageExtend(image, top, right, bottom, left, background, output),\n output,\n )\n }\n\n public imageTransform(image: ImageHandle, operation: number): { status: number; handle: ImageHandle | null } {\n const output = new Uint32Array(1)\n return this.imageHandleResult(this.opentui.symbols.imageTransform(image, operation, output), output)\n }\n\n public imageComposite(\n base: ImageHandle,\n overlay: ImageHandle,\n left: number,\n top: number,\n blend: number,\n opacity: number,\n ): { status: number; handle: ImageHandle | null } {\n const output = new Uint32Array(1)\n return this.imageHandleResult(\n this.opentui.symbols.imageComposite(base, overlay, left, top, blend, opacity, output),\n output,\n )\n }\n\n public editorViewSetPlaceholderStyledText(\n view: EditorViewHandle,\n chunks: Array<{ text: string; fg?: RGBA | null; bg?: RGBA | null; attributes?: number }>,\n ): void {\n const nonEmptyChunks = chunks.filter((c) => c.text.length > 0)\n if (nonEmptyChunks.length === 0) {\n this.opentui.symbols.editorViewSetPlaceholderStyledText(view, null, 0)\n return\n }\n\n const chunksBuffer = StyledChunkStruct.packList(nonEmptyChunks)\n this.opentui.symbols.editorViewSetPlaceholderStyledText(view, chunksBuffer, nonEmptyChunks.length)\n }\n\n public editorViewSetTabIndicator(view: EditorViewHandle, indicator: number): void {\n this.opentui.symbols.editorViewSetTabIndicator(view, indicator)\n }\n\n public editorViewSetTabIndicatorColor(view: EditorViewHandle, color: RGBA): void {\n this.opentui.symbols.editorViewSetTabIndicatorColor(view, rgbaPtr(color))\n }\n\n public onNativeEvent(name: string, handler: (data: ArrayBuffer) => void): void {\n this._nativeEvents.on(name, handler)\n }\n\n public onceNativeEvent(name: string, handler: (data: ArrayBuffer) => void): void {\n this._nativeEvents.once(name, handler)\n }\n\n public offNativeEvent(name: string, handler: (data: ArrayBuffer) => void): void {\n this._nativeEvents.off(name, handler)\n }\n\n public onAnyNativeEvent(handler: (name: string, data: ArrayBuffer) => void): void {\n this._anyEventHandlers.push(handler)\n }\n}\n\nlet opentuiLibPath: string | undefined\nlet opentuiLib: RenderLib | undefined\nlet renderLibResolved = false\n\nexport function setRenderLibPath(libPath: string) {\n if (opentuiLibPath !== libPath) {\n if (renderLibResolved) {\n throw new Error(\"setRenderLibPath() must be called before resolveRenderLib()\")\n }\n if (opentuiLib instanceof FFIRenderLib) {\n opentuiLib.dispose()\n }\n opentuiLibPath = libPath\n opentuiLib = undefined\n }\n}\n\nexport function resolveRenderLib(): RenderLib {\n if (!opentuiLib) {\n try {\n opentuiLib = new FFIRenderLib(opentuiLibPath)\n } catch (error) {\n throw new Error(\n `Failed to initialize OpenTUI render library: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n )\n }\n }\n renderLibResolved = true\n return opentuiLib\n}\n\n// Try eager loading\ntry {\n opentuiLib = new FFIRenderLib(opentuiLibPath)\n} catch (error) {}\n",
16
+ "import {\n dlopen,\n ffiBool,\n trimNodeFFIOutputBytes,\n toArrayBuffer,\n ptr,\n toPointer,\n type FFICallbackInstance,\n type Pointer,\n usesBunFFI,\n} from \"./platform/ffi.js\"\nimport { writeFile } from \"./platform/runtime.js\"\nimport { existsSync, writeFileSync } from \"fs\"\nimport { EventEmitter } from \"events\"\nimport {\n type CursorStyle,\n type CursorStyleOptions,\n type TargetChannel,\n type DebugOverlayCorner,\n type WidthMethod,\n type TerminalCapabilities,\n type Highlight,\n type LineInfo,\n type MousePointerStyle,\n type ImageRenderProtocol,\n} from \"./types.js\"\nexport type {\n LineInfo,\n AllocatorStats,\n AudioStreamCreateOptions,\n BuildOptions,\n NativeAudioCaptureStats,\n NativeAudioStreamStats,\n NativeRenderStats,\n}\n\nimport { RGBA } from \"./lib/RGBA.js\"\nimport { OptimizedBuffer } from \"./buffer.js\"\nimport { TextBuffer } from \"./text-buffer.js\"\nimport { env, registerEnvVar } from \"./lib/env.js\"\nimport {\n StyledChunkStruct,\n HighlightStruct,\n LogicalCursorStruct,\n VisualCursorStruct,\n TerminalCapabilitiesStruct,\n EncodedCharStruct,\n LineInfoStruct,\n MeasureResultStruct,\n CursorStateStruct,\n CursorStyleOptionsStruct,\n GridDrawOptionsStruct,\n NativeSpanFeedOptionsStruct,\n NativeSpanFeedStatsStruct,\n ReserveInfoStruct,\n AudioCreateOptionsStruct,\n AudioStartOptionsStruct,\n AudioVoiceOptionsStruct,\n AudioStreamCreateOptionsStruct,\n AudioStreamStatsStruct,\n AudioCaptureStatsStruct,\n NativeAudioStreamCloseReason as NativeAudioStreamCloseReasonValue,\n NativeAudioStreamFormat as NativeAudioStreamFormatValue,\n NativeAudioStreamState as NativeAudioStreamStateValue,\n AudioStatsStruct,\n BuildOptionsStruct,\n AllocatorStatsStruct,\n NativeRenderStatsStruct,\n NativeImageInfoStruct,\n ImageDrawOptionsStruct,\n} from \"./zig-structs.js\"\nimport type {\n NativeSpanFeedOptions,\n NativeSpanFeedStats,\n ReserveInfo,\n AudioCreateOptions,\n AudioStartOptions,\n AudioVoiceOptions,\n AudioStreamCreateOptions,\n NativeAudioStreamCloseReason as NativeAudioStreamCloseReasonType,\n NativeAudioStreamFormat as NativeAudioStreamFormatType,\n NativeAudioStreamState as NativeAudioStreamStateType,\n NativeAudioStreamStats,\n NativeAudioCaptureStats,\n AudioStats,\n BuildOptions,\n AllocatorStats,\n NativeRenderStats,\n NativeImageInfo,\n} from \"./zig-structs.js\"\nexport const NativeAudioStreamState = NativeAudioStreamStateValue\nexport type NativeAudioStreamState = NativeAudioStreamStateType\nexport const NativeAudioStreamCloseReason = NativeAudioStreamCloseReasonValue\nexport type NativeAudioStreamCloseReason = NativeAudioStreamCloseReasonType\nexport const NativeAudioStreamFormat = NativeAudioStreamFormatValue\nexport type NativeAudioStreamFormat = NativeAudioStreamFormatType\nimport { isBunfsPath } from \"./lib/bunfs.js\"\nimport { resolveNativeLibraryPath } from \"#opentui/runtime-assets\"\nimport { allocStruct } from \"bun-ffi-structs\"\n\nregisterEnvVar({\n name: \"OPENTUI_LIBC\",\n description: \"Select Linux native libc package. Supported values: glibc, musl.\",\n type: \"string\",\n default: \"\",\n})\n\nexport type NativeHandle<T extends string> = Pointer & { readonly __nativeHandle: T }\nexport type RendererHandle = NativeHandle<\"renderer\">\nexport type OptimizedBufferHandle = NativeHandle<\"optimized_buffer\">\nexport type TextBufferHandle = NativeHandle<\"text_buffer\">\nexport type TextBufferViewHandle = NativeHandle<\"text_buffer_view\">\nexport type EditBufferHandle = NativeHandle<\"edit_buffer\">\nexport type EditorViewHandle = NativeHandle<\"editor_view\">\nexport type SyntaxStyleHandle = NativeHandle<\"syntax_style\">\nexport type EventSinkHandle = NativeHandle<\"event_sink\">\nexport type AudioEngineHandle = NativeHandle<\"audio_engine\">\nexport type NativeRenderableHandle = NativeHandle<\"native_renderable\">\nexport type ImageHandle = NativeHandle<\"image\">\nexport type ClipboardServiceHandle = number & { readonly __nativeHandle: \"clipboard_service\" }\nexport type ClipboardOperationHandle = number & { readonly __nativeHandle: \"clipboard_operation\" }\n\nexport enum NativeClipboardOperationStatus {\n Pending = 0,\n Read = 1,\n Empty = 2,\n Written = 3,\n Cleared = 4,\n Unsupported = 5,\n Cancelled = 6,\n TimedOut = 7,\n LimitExceeded = 8,\n Failed = 9,\n InvalidHandle = 10,\n}\n\nexport enum NativeClipboardStartStatus {\n Ok = 0,\n InvalidService = 1,\n ShuttingDown = 2,\n LimitExceeded = 3,\n InvalidArgument = 4,\n OutOfMemory = 5,\n}\n\nexport enum NativeClipboardCancelStatus {\n Requested = 0,\n AlreadyTerminal = 1,\n InvalidHandle = 2,\n}\n\nexport enum NativeClipboardCopyStatus {\n Ok = 0,\n BufferTooSmall = 1,\n InvalidHandle = 2,\n InvalidState = 3,\n InvalidArgument = 4,\n}\n\nexport enum NativeClipboardDestroyStatus {\n Destroyed = 0,\n NotReady = 1,\n InvalidHandle = 2,\n}\n\nexport enum NativeClipboardShutdownStatus {\n Pending = 0,\n Ready = 1,\n InvalidHandle = 2,\n}\nlet targetLibPath: string | undefined\nlet targetLibError: Error | undefined\n\ntry {\n targetLibPath = await resolveNativeLibraryPath()\n if (isBunfsPath(targetLibPath)) {\n targetLibPath = targetLibPath.replace(\"../\", \"\")\n }\n if (!existsSync(targetLibPath)) {\n throw new Error(`OpenTUI native library does not exist at ${JSON.stringify(targetLibPath)}`)\n }\n} catch (error) {\n targetLibError = error instanceof Error ? error : new Error(String(error))\n}\n\nregisterEnvVar({\n name: \"OTUI_DEBUG_FFI\",\n description: \"Enable debug logging for the FFI bindings.\",\n type: \"boolean\",\n default: false,\n})\n\nregisterEnvVar({\n name: \"OTUI_TRACE_FFI\",\n description: \"Enable tracing for the FFI bindings.\",\n type: \"boolean\",\n default: false,\n})\n\n// Env vars used in terminal.zig\nregisterEnvVar({\n name: \"OPENTUI_FORCE_WCWIDTH\",\n description: \"Use wcwidth for character width calculations when the variable is present\",\n type: \"string\",\n required: false,\n})\nregisterEnvVar({\n name: \"OPENTUI_FORCE_UNICODE\",\n description: \"Force Mode 2026 Unicode support when the variable is present\",\n type: \"string\",\n required: false,\n})\nregisterEnvVar({\n name: \"OPENTUI_GRAPHICS\",\n description: \"Control Kitty and Sixel graphics detection with the exact value true, 1, false, or 0\",\n type: \"string\",\n required: false,\n})\nregisterEnvVar({\n name: \"OPENTUI_IMAGE_PROTOCOL\",\n description: \"Override image rendering protocol: auto, kitty, sixel, or blocks\",\n type: \"string\",\n default: \"auto\",\n})\nregisterEnvVar({\n name: \"OPENTUI_FORCE_NOZWJ\",\n description: \"Use no_zwj width mode when the variable is present\",\n type: \"string\",\n required: false,\n})\n\n// Cursor & mouse pointer style mappings (avoid recreation on each call)\nconst CURSOR_STYLE_TO_ID = { block: 0, line: 1, underline: 2, default: 3 } as const\nconst CURSOR_ID_TO_STYLE = [\"block\", \"line\", \"underline\", \"default\"] as const\nconst MOUSE_STYLE_TO_ID = { default: 0, pointer: 1, text: 2, crosshair: 3, move: 4, \"not-allowed\": 5 } as const\nconst MAX_FFI_U32 = 0xffff_ffff\n// Global singleton state for FFI tracing to prevent duplicate exit handlers\nlet globalTraceSymbols: Record<string, number[]> | null = null\nlet globalFFILogPath: string | null = null\nlet exitHandlerRegistered = false\n\nfunction toNumber(value: number | bigint): number {\n return typeof value === \"bigint\" ? Number(value) : value\n}\n\nfunction toSafeByteCount(value: number | bigint, label: string): number {\n if (typeof value !== \"bigint\") {\n return value\n }\n\n if (value > BigInt(Number.MAX_SAFE_INTEGER)) {\n throw new RangeError(`${label} exceeds JavaScript safe integer range`)\n }\n\n return Number(value)\n}\n\nfunction toSafeFFIU32Length(value: number, label: string): number {\n if (!Number.isSafeInteger(value) || value < 0 || value > MAX_FFI_U32) {\n throw new RangeError(`${label} exceeds native u32 length limit`)\n }\n\n return value\n}\n\nfunction isFFIU32(value: number): boolean {\n return Number.isInteger(value) && value >= 0 && value <= MAX_FFI_U32\n}\n\nfunction ptrOrNull(value: ArrayBufferView): Pointer | null {\n return value.byteLength === 0 ? null : ptr(value)\n}\n\nfunction rgbaPtr(value: RGBA): Pointer {\n return ptr(value.buffer)\n}\n\nfunction optionalRgbaPtr(value: RGBA | null | undefined): Pointer | null {\n return value ? rgbaPtr(value) : null\n}\n\nfunction getOpenTUILib(libPath?: string) {\n const resolvedLibPath = libPath || targetLibPath\n if (!resolvedLibPath) {\n throw (\n targetLibError ??\n new Error(`OpenTUI is not supported on the current platform: ${process.platform}-${process.arch}`)\n )\n }\n\n const rawSymbols = dlopen(resolvedLibPath, {\n // Logging\n setLogCallback: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n // Event bus\n createEventSink: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n destroyEventSink: {\n args: [\"u32\"],\n returns: \"void\",\n },\n createNativeRenderable: {\n args: [],\n returns: \"u32\",\n },\n destroyNativeRenderable: {\n args: [\"u32\"],\n returns: \"void\",\n },\n nativeRenderableAttachYogaNode: {\n args: [\"u32\", \"ptr\"],\n returns: \"bool\",\n },\n nativeRenderableSetMeasureTarget: {\n args: [\"u32\", \"u32\", \"u32\"],\n returns: \"bool\",\n },\n // Renderer management\n createRenderer: {\n args: [\"u32\", \"u32\", \"u8\", \"u8\", \"ptr\"],\n returns: \"u32\",\n },\n setTerminalEnvVar: {\n args: [\"u32\", \"ptr\", \"u32\", \"ptr\", \"u32\"],\n returns: \"bool\",\n },\n destroyRenderer: {\n args: [\"u32\"],\n returns: \"void\",\n },\n setUseThread: {\n args: [\"u32\", \"bool\"],\n returns: \"void\",\n },\n setClearOnShutdown: {\n args: [\"u32\", \"bool\"],\n returns: \"void\",\n },\n setBackgroundColor: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n setRenderOffset: {\n args: [\"u32\", \"u32\"],\n returns: \"void\",\n },\n resetSplitScrollback: {\n args: [\"u32\", \"u32\", \"u32\"],\n returns: \"u32\",\n },\n syncSplitScrollback: {\n args: [\"u32\", \"u32\"],\n returns: \"u32\",\n },\n getSplitOutputOffset: {\n args: [\"u32\", \"u32\"],\n returns: \"u32\",\n },\n setPendingSplitFooterTransition: {\n args: [\"u32\", \"u8\", \"u32\", \"u32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n clearPendingSplitFooterTransition: {\n args: [\"u32\"],\n returns: \"void\",\n },\n updateStats: {\n args: [\"u32\", \"f64\", \"u32\", \"f64\"],\n returns: \"void\",\n },\n updateMemoryStats: {\n args: [\"u32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n getRenderStats: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n render: {\n args: [\"u32\", \"bool\"],\n returns: \"u8\",\n },\n repaintSplitFooter: {\n args: [\"u32\", \"u32\", \"bool\"],\n returns: \"u64\",\n },\n // Single FFI entrypoint for split commit append. beginFrame/finalizeFrame let\n // native code decide whether this call is a standalone commit or part of a\n // larger batched frame envelope.\n commitSplitFooterSnapshot: {\n args: [\"u32\", \"u32\", \"u32\", \"bool\", \"bool\", \"u32\", \"bool\", \"bool\", \"bool\"],\n returns: \"u64\",\n },\n getNextBuffer: {\n args: [\"u32\"],\n returns: \"u32\",\n },\n getCurrentBuffer: {\n args: [\"u32\"],\n returns: \"u32\",\n },\n rendererSetPaletteState: {\n args: [\"u32\", \"ptr\", \"u32\", \"ptr\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n\n queryPixelResolution: {\n args: [\"u32\"],\n returns: \"void\",\n },\n queryThemeColors: {\n args: [\"u32\"],\n returns: \"void\",\n },\n\n createOptimizedBuffer: {\n args: [\"u32\", \"u32\", \"bool\", \"u8\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n destroyOptimizedBuffer: {\n args: [\"u32\"],\n returns: \"void\",\n },\n\n drawFrameBuffer: {\n args: [\"u32\", \"i32\", \"i32\", \"u32\", \"u32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n getBufferWidth: {\n args: [\"u32\"],\n returns: \"u32\",\n },\n getBufferHeight: {\n args: [\"u32\"],\n returns: \"u32\",\n },\n bufferClear: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n bufferGetCharPtr: {\n args: [\"u32\"],\n returns: \"ptr\",\n },\n bufferGetFgPtr: {\n args: [\"u32\"],\n returns: \"ptr\",\n },\n bufferGetBgPtr: {\n args: [\"u32\"],\n returns: \"ptr\",\n },\n bufferGetAttributesPtr: {\n args: [\"u32\"],\n returns: \"ptr\",\n },\n bufferGetRespectAlpha: {\n args: [\"u32\"],\n returns: \"bool\",\n },\n bufferSetRespectAlpha: {\n args: [\"u32\", \"bool\"],\n returns: \"void\",\n },\n bufferGetId: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n bufferGetRealCharSize: {\n args: [\"u32\"],\n returns: \"u32\",\n },\n bufferWriteResolvedChars: {\n args: [\"u32\", \"ptr\", \"u32\", \"bool\"],\n returns: \"u32\",\n },\n\n bufferDrawText: {\n args: [\"u32\", \"ptr\", \"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n bufferSetCellWithAlphaBlending: {\n args: [\"u32\", \"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n bufferSetCell: {\n args: [\"u32\", \"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n bufferFillRect: {\n args: [\"u32\", \"u32\", \"u32\", \"u32\", \"u32\", \"ptr\"],\n returns: \"void\",\n },\n bufferColorMatrix: {\n args: [\"u32\", \"ptr\", \"ptr\", \"u32\", \"f32\", \"u8\"],\n returns: \"void\",\n },\n bufferColorMatrixUniform: {\n args: [\"u32\", \"ptr\", \"f32\", \"u8\"],\n returns: \"void\",\n },\n bufferResize: {\n args: [\"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n\n // Link API\n linkAlloc: {\n args: [\"ptr\", \"u32\"],\n returns: \"u32\",\n },\n linkGetUrl: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n attributesWithLink: {\n args: [\"u32\", \"u32\"],\n returns: \"u32\",\n },\n attributesGetLinkId: {\n args: [\"u32\"],\n returns: \"u32\",\n },\n\n resizeRenderer: {\n args: [\"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n\n // Cursor functions (now renderer-scoped)\n setCursorPosition: {\n args: [\"u32\", \"i32\", \"i32\", \"bool\"],\n returns: \"void\",\n },\n setCursorColor: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n getCursorState: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n\n // Cursor and mouse pointer style (combined)\n setCursorStyleOptions: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n\n // Debug overlay\n setDebugOverlay: {\n args: [\"u32\", \"bool\", \"u8\"],\n returns: \"void\",\n },\n\n // Terminal control\n clearTerminal: {\n args: [\"u32\"],\n returns: \"void\",\n },\n setTerminalTitle: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n copyToClipboardOSC52: {\n args: [\"u32\", \"u8\", \"ptr\", \"u32\"],\n returns: \"bool\",\n },\n clearClipboardOSC52: {\n args: [\"u32\", \"u8\"],\n returns: \"bool\",\n },\n clipboardServiceCreate: {\n args: [\"u32\", \"u32\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n clipboardServiceBeginShutdown: {\n args: [\"u32\"],\n returns: \"u8\",\n },\n clipboardServicePollShutdown: {\n args: [\"u32\"],\n returns: \"u8\",\n },\n clipboardServiceDestroy: {\n args: [\"u32\"],\n returns: \"u8\",\n },\n clipboardServiceDrain: {\n args: [\"u32\"],\n returns: \"u8\",\n },\n clipboardReadOperationStart: {\n args: [\"u32\", \"ptr\", \"u32\", \"u8\", \"u32\", \"u32\", \"u32\", \"u32\", \"ptr\"],\n returns: \"u8\",\n },\n clipboardWriteOperationStart: {\n args: [\"u32\", \"ptr\", \"u32\", \"u8\", \"u32\", \"ptr\"],\n returns: \"u8\",\n },\n clipboardClearOperationStart: {\n args: [\"u32\", \"u8\", \"u32\", \"ptr\"],\n returns: \"u8\",\n },\n clipboardOperationPoll: {\n args: [\"u32\"],\n returns: \"u8\",\n },\n clipboardOperationCancel: {\n args: [\"u32\"],\n returns: \"u8\",\n },\n clipboardOperationResultMimeLength: {\n args: [\"u32\", \"ptr\"],\n returns: \"u8\",\n },\n clipboardOperationResultMimeCopy: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"u8\",\n },\n clipboardOperationResultDataLength: {\n args: [\"u32\", \"ptr\"],\n returns: \"u8\",\n },\n clipboardOperationResultDataCopy: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"u8\",\n },\n clipboardOperationResultErrorCode: {\n args: [\"u32\", \"ptr\"],\n returns: \"u8\",\n },\n clipboardOperationResultDiagnosticLength: {\n args: [\"u32\", \"ptr\"],\n returns: \"u8\",\n },\n clipboardOperationResultDiagnosticCopy: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"u8\",\n },\n clipboardOperationDestroy: {\n args: [\"u32\"],\n returns: \"u8\",\n },\n triggerNotification: {\n args: [\"u32\", \"ptr\", \"u32\", \"ptr\", \"u32\"],\n returns: \"bool\",\n },\n\n bufferDrawSuperSampleBuffer: {\n args: [\"u32\", \"u32\", \"u32\", \"ptr\", \"u32\", \"u8\", \"u32\"],\n returns: \"void\",\n },\n bufferDrawImage: {\n args: [\"u32\", \"u32\", \"ptr\"],\n returns: \"u8\",\n },\n bufferDrawPackedBuffer: {\n args: [\"u32\", \"ptr\", \"u32\", \"u32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n bufferDrawGrayscaleBuffer: {\n args: [\"u32\", \"i32\", \"i32\", \"ptr\", \"u32\", \"u32\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n bufferDrawGrayscaleBufferSupersampled: {\n args: [\"u32\", \"i32\", \"i32\", \"ptr\", \"u32\", \"u32\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n bufferDrawGrid: {\n args: [\"u32\", \"ptr\", \"ptr\", \"ptr\", \"ptr\", \"u32\", \"ptr\", \"u32\", \"ptr\"],\n returns: \"void\",\n },\n bufferDrawBox: {\n args: [\"u32\", \"i32\", \"i32\", \"u32\", \"u32\", \"ptr\", \"u32\", \"ptr\", \"ptr\", \"ptr\", \"ptr\", \"u32\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n bufferPushScissorRect: {\n args: [\"u32\", \"i32\", \"i32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n bufferPopScissorRect: {\n args: [\"u32\"],\n returns: \"void\",\n },\n bufferClearScissorRects: {\n args: [\"u32\"],\n returns: \"void\",\n },\n bufferPushOpacity: {\n args: [\"u32\", \"f32\"],\n returns: \"void\",\n },\n bufferPopOpacity: {\n args: [\"u32\"],\n returns: \"void\",\n },\n bufferGetCurrentOpacity: {\n args: [\"u32\"],\n returns: \"f32\",\n },\n bufferClearOpacity: {\n args: [\"u32\"],\n returns: \"void\",\n },\n\n addToHitGrid: {\n args: [\"u32\", \"i32\", \"i32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n clearCurrentHitGrid: {\n args: [\"u32\"],\n returns: \"void\",\n },\n hitGridPushScissorRect: {\n args: [\"u32\", \"i32\", \"i32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n hitGridPopScissorRect: {\n args: [\"u32\"],\n returns: \"void\",\n },\n hitGridClearScissorRects: {\n args: [\"u32\"],\n returns: \"void\",\n },\n addToCurrentHitGridClipped: {\n args: [\"u32\", \"i32\", \"i32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n checkHit: {\n args: [\"u32\", \"u32\", \"u32\"],\n returns: \"u32\",\n },\n getHitGridDirty: {\n args: [\"u32\"],\n returns: \"bool\",\n },\n dumpHitGrid: {\n args: [\"u32\"],\n returns: \"void\",\n },\n dumpBuffers: {\n args: [\"u32\", \"i64\"],\n returns: \"void\",\n },\n dumpOutputBuffer: {\n args: [\"u32\", \"i64\"],\n returns: \"void\",\n },\n restoreTerminalModes: {\n args: [\"u32\"],\n returns: \"void\",\n },\n enableMouse: {\n args: [\"u32\", \"bool\"],\n returns: \"void\",\n },\n disableMouse: {\n args: [\"u32\"],\n returns: \"void\",\n },\n enableKittyKeyboard: {\n args: [\"u32\", \"u8\"],\n returns: \"void\",\n },\n disableKittyKeyboard: {\n args: [\"u32\"],\n returns: \"void\",\n },\n setKittyKeyboardFlags: {\n args: [\"u32\", \"u8\"],\n returns: \"void\",\n },\n getKittyKeyboardFlags: {\n args: [\"u32\"],\n returns: \"u8\",\n },\n setupTerminal: {\n args: [\"u32\", \"bool\"],\n returns: \"void\",\n },\n suspendRenderer: {\n args: [\"u32\"],\n returns: \"void\",\n },\n resumeRenderer: {\n args: [\"u32\"],\n returns: \"void\",\n },\n writeOut: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n\n // TextBuffer functions\n createTextBuffer: {\n args: [\"u8\"],\n returns: \"u32\",\n },\n destroyTextBuffer: {\n args: [\"u32\"],\n returns: \"void\",\n },\n textBufferGetLength: {\n args: [\"u32\"],\n returns: \"u32\",\n },\n textBufferGetByteSize: {\n args: [\"u32\"],\n returns: \"u32\",\n },\n\n textBufferReset: {\n args: [\"u32\"],\n returns: \"void\",\n },\n textBufferClear: {\n args: [\"u32\"],\n returns: \"void\",\n },\n textBufferSetDefaultFg: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n textBufferSetDefaultBg: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n textBufferSetDefaultAttributes: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n textBufferResetDefaults: {\n args: [\"u32\"],\n returns: \"void\",\n },\n textBufferGetTabWidth: {\n args: [\"u32\"],\n returns: \"u8\",\n },\n textBufferSetTabWidth: {\n args: [\"u32\", \"u8\"],\n returns: \"void\",\n },\n textBufferRegisterMemBuffer: {\n args: [\"u32\", \"ptr\", \"u32\", \"bool\"],\n returns: \"u16\",\n },\n textBufferReplaceMemBuffer: {\n args: [\"u32\", \"u8\", \"ptr\", \"u32\", \"bool\"],\n returns: \"bool\",\n },\n textBufferClearMemRegistry: {\n args: [\"u32\"],\n returns: \"void\",\n },\n textBufferSetTextFromMem: {\n args: [\"u32\", \"u8\"],\n returns: \"void\",\n },\n textBufferAppend: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n textBufferAppendFromMemId: {\n args: [\"u32\", \"u8\"],\n returns: \"void\",\n },\n textBufferLoadFile: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"bool\",\n },\n textBufferSetStyledText: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n textBufferGetLineCount: {\n args: [\"u32\"],\n returns: \"u32\",\n },\n textBufferGetPlainText: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n textBufferAddHighlightByCharRange: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n textBufferAddHighlight: {\n args: [\"u32\", \"u32\", \"ptr\"],\n returns: \"void\",\n },\n textBufferRemoveHighlightsByRef: {\n args: [\"u32\", \"u16\"],\n returns: \"void\",\n },\n textBufferClearLineHighlights: {\n args: [\"u32\", \"u32\"],\n returns: \"void\",\n },\n textBufferClearAllHighlights: {\n args: [\"u32\"],\n returns: \"void\",\n },\n textBufferSetSyntaxStyle: {\n args: [\"u32\", \"u32\"],\n returns: \"bool\",\n },\n textBufferGetLineHighlightsPtr: {\n args: [\"u32\", \"u32\", \"ptr\"],\n returns: \"ptr\",\n },\n textBufferFreeLineHighlights: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\",\n },\n textBufferGetHighlightCount: {\n args: [\"u32\"],\n returns: \"u32\",\n },\n textBufferGetTextRange: {\n args: [\"u32\", \"u32\", \"u32\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n textBufferGetTextRangeByCoords: {\n args: [\"u32\", \"u32\", \"u32\", \"u32\", \"u32\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n\n // TextBufferView functions\n createTextBufferView: {\n args: [\"u32\"],\n returns: \"u32\",\n },\n destroyTextBufferView: {\n args: [\"u32\"],\n returns: \"void\",\n },\n textBufferViewSetSelection: {\n args: [\"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferViewResetSelection: {\n args: [\"u32\"],\n returns: \"void\",\n },\n textBufferViewGetSelectionInfo: {\n args: [\"u32\"],\n returns: \"u64\",\n },\n textBufferViewSetLocalSelection: {\n args: [\"u32\", \"i32\", \"i32\", \"i32\", \"i32\", \"ptr\", \"ptr\"],\n returns: \"bool\",\n },\n textBufferViewUpdateSelection: {\n args: [\"u32\", \"u32\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferViewUpdateLocalSelection: {\n args: [\"u32\", \"i32\", \"i32\", \"i32\", \"i32\", \"ptr\", \"ptr\"],\n returns: \"bool\",\n },\n textBufferViewResetLocalSelection: {\n args: [\"u32\"],\n returns: \"void\",\n },\n textBufferViewSetWrapWidth: {\n args: [\"u32\", \"u32\"],\n returns: \"void\",\n },\n textBufferViewSetWrapMode: {\n args: [\"u32\", \"u8\"],\n returns: \"void\",\n },\n textBufferViewSetFirstLineOffset: {\n args: [\"u32\", \"u32\"],\n returns: \"void\",\n },\n textBufferViewSetViewportSize: {\n args: [\"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n textBufferViewSetViewport: {\n args: [\"u32\", \"u32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n textBufferViewGetVirtualLineCount: {\n args: [\"u32\"],\n returns: \"u32\",\n },\n textBufferViewGetLineInfoDirect: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n textBufferViewGetLogicalLineInfoDirect: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n textBufferViewGetSelectedText: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n textBufferViewGetPlainText: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n textBufferViewSetTabIndicator: {\n args: [\"u32\", \"u32\"],\n returns: \"void\",\n },\n textBufferViewSetTabIndicatorColor: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n textBufferViewSetTruncate: {\n args: [\"u32\", \"bool\"],\n returns: \"void\",\n },\n textBufferViewMeasureForDimensions: {\n args: [\"u32\", \"u32\", \"u32\", \"ptr\"],\n returns: \"bool\",\n },\n bufferDrawTextBufferView: {\n args: [\"u32\", \"u32\", \"i32\", \"i32\"],\n returns: \"void\",\n },\n bufferDrawEditorView: {\n args: [\"u32\", \"u32\", \"i32\", \"i32\"],\n returns: \"void\",\n },\n\n // EditorView functions\n createEditorView: {\n args: [\"u32\", \"u32\", \"u32\"],\n returns: \"u32\",\n },\n destroyEditorView: {\n args: [\"u32\"],\n returns: \"void\",\n },\n editorViewSetViewportSize: {\n args: [\"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n editorViewSetViewport: {\n args: [\"u32\", \"u32\", \"u32\", \"u32\", \"u32\", \"bool\"],\n returns: \"void\",\n },\n editorViewGetViewport: {\n args: [\"u32\", \"ptr\", \"ptr\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewSetScrollMargin: {\n args: [\"u32\", \"f32\"],\n returns: \"void\",\n },\n editorViewSetWrapMode: {\n args: [\"u32\", \"u8\"],\n returns: \"void\",\n },\n editorViewGetVirtualLineCount: {\n args: [\"u32\"],\n returns: \"u32\",\n },\n editorViewGetTotalVirtualLineCount: {\n args: [\"u32\"],\n returns: \"u32\",\n },\n editorViewGetTextBufferView: {\n args: [\"u32\"],\n returns: \"u32\",\n },\n editorViewGetLineInfoDirect: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n editorViewGetLogicalLineInfoDirect: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n\n // EditBuffer functions\n createEditBuffer: {\n args: [\"u8\", \"u32\"],\n returns: \"u32\",\n },\n destroyEditBuffer: {\n args: [\"u32\"],\n returns: \"void\",\n },\n editBufferSetText: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n editBufferSetTextFromMem: {\n args: [\"u32\", \"u8\"],\n returns: \"void\",\n },\n editBufferReplaceText: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n editBufferReplaceTextFromMem: {\n args: [\"u32\", \"u8\"],\n returns: \"void\",\n },\n editBufferGetText: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n editBufferInsertChar: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n editBufferInsertText: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n editBufferDeleteChar: {\n args: [\"u32\"],\n returns: \"void\",\n },\n editBufferDeleteCharBackward: {\n args: [\"u32\"],\n returns: \"void\",\n },\n editBufferDeleteRange: {\n args: [\"u32\", \"u32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n editBufferNewLine: {\n args: [\"u32\"],\n returns: \"void\",\n },\n editBufferDeleteLine: {\n args: [\"u32\"],\n returns: \"void\",\n },\n editBufferMoveCursorLeft: {\n args: [\"u32\"],\n returns: \"void\",\n },\n editBufferMoveCursorRight: {\n args: [\"u32\"],\n returns: \"void\",\n },\n editBufferMoveCursorUp: {\n args: [\"u32\"],\n returns: \"void\",\n },\n editBufferMoveCursorDown: {\n args: [\"u32\"],\n returns: \"void\",\n },\n editBufferGotoLine: {\n args: [\"u32\", \"u32\"],\n returns: \"void\",\n },\n editBufferSetCursor: {\n args: [\"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n editBufferSetCursorToLineCol: {\n args: [\"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n editBufferSetCursorByOffset: {\n args: [\"u32\", \"u32\"],\n returns: \"void\",\n },\n editBufferGetCursorPosition: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n editBufferGetId: {\n args: [\"u32\"],\n returns: \"u16\",\n },\n editBufferGetTextBuffer: {\n args: [\"u32\"],\n returns: \"u32\",\n },\n editBufferDebugLogRope: {\n args: [\"u32\"],\n returns: \"void\",\n },\n editBufferUndo: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n editBufferRedo: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n editBufferCanUndo: {\n args: [\"u32\"],\n returns: \"bool\",\n },\n editBufferCanRedo: {\n args: [\"u32\"],\n returns: \"bool\",\n },\n editBufferClearHistory: {\n args: [\"u32\"],\n returns: \"void\",\n },\n editBufferClear: {\n args: [\"u32\"],\n returns: \"void\",\n },\n editBufferGetNextWordBoundary: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n editBufferGetPrevWordBoundary: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n editBufferGetEOL: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n editBufferOffsetToPosition: {\n args: [\"u32\", \"u32\", \"ptr\"],\n returns: \"bool\",\n },\n editBufferPositionToOffset: {\n args: [\"u32\", \"u32\", \"u32\"],\n returns: \"u32\",\n },\n editBufferGetLineStartOffset: {\n args: [\"u32\", \"u32\"],\n returns: \"u32\",\n },\n editBufferGetTextRange: {\n args: [\"u32\", \"u32\", \"u32\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n editBufferGetTextRangeByCoords: {\n args: [\"u32\", \"u32\", \"u32\", \"u32\", \"u32\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n\n // EditorView selection and editing methods\n editorViewSetSelection: {\n args: [\"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewResetSelection: {\n args: [\"u32\"],\n returns: \"void\",\n },\n editorViewGetSelection: {\n args: [\"u32\"],\n returns: \"u64\",\n },\n editorViewSetLocalSelection: {\n args: [\"u32\", \"i32\", \"i32\", \"i32\", \"i32\", \"ptr\", \"ptr\", \"bool\", \"bool\"],\n returns: \"bool\",\n },\n editorViewUpdateSelection: {\n args: [\"u32\", \"u32\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewUpdateLocalSelection: {\n args: [\"u32\", \"i32\", \"i32\", \"i32\", \"i32\", \"ptr\", \"ptr\", \"bool\", \"bool\"],\n returns: \"bool\",\n },\n editorViewResetLocalSelection: {\n args: [\"u32\"],\n returns: \"void\",\n },\n editorViewGetSelectedTextBytes: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n editorViewGetCursor: {\n args: [\"u32\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewGetText: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n\n // EditorView VisualCursor methods\n editorViewGetVisualCursor: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n\n editorViewMoveUpVisual: {\n args: [\"u32\"],\n returns: \"void\",\n },\n editorViewMoveDownVisual: {\n args: [\"u32\"],\n returns: \"void\",\n },\n editorViewDeleteSelectedText: {\n args: [\"u32\"],\n returns: \"void\",\n },\n editorViewSetCursorByOffset: {\n args: [\"u32\", \"u32\"],\n returns: \"void\",\n },\n editorViewGetNextWordBoundary: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n editorViewGetPrevWordBoundary: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n editorViewGetEOL: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n editorViewGetVisualSOL: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n editorViewGetVisualEOL: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n editorViewSetPlaceholderStyledText: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n editorViewSetTabIndicator: {\n args: [\"u32\", \"u32\"],\n returns: \"void\",\n },\n editorViewSetTabIndicatorColor: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n\n getArenaAllocatedBytes: {\n args: [],\n returns: \"u64\",\n },\n getBuildOptions: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n getAllocatorStats: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n\n // SyntaxStyle functions\n createSyntaxStyle: {\n args: [],\n returns: \"u32\",\n },\n destroySyntaxStyle: {\n args: [\"u32\"],\n returns: \"void\",\n },\n syntaxStyleRegister: {\n args: [\"u32\", \"ptr\", \"u32\", \"ptr\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n syntaxStyleResolveByName: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n syntaxStyleGetStyleCount: {\n args: [\"u32\"],\n returns: \"u32\",\n },\n\n imageInfo: { args: [\"ptr\", \"u32\", \"ptr\"], returns: \"u32\" },\n imageRetainIccCache: { args: [], returns: \"void\" },\n imageReleaseIccCache: { args: [], returns: \"void\" },\n imageTestFailIccProfileCopyAllocationOnce: { args: [], returns: \"void\" },\n imageDecode: { args: [\"ptr\", \"u32\", \"ptr\"], returns: \"u32\" },\n imageCreateFromRgba: { args: [\"ptr\", \"u64\", \"u32\", \"u32\", \"u32\", \"ptr\"], returns: \"u32\" },\n imageDestroy: { args: [\"u32\"], returns: \"void\" },\n imageRetain: { args: [\"u32\", \"ptr\"], returns: \"u32\" },\n imageGetInfo: { args: [\"u32\", \"ptr\"], returns: \"u32\" },\n imageMaterialize: { args: [\"u32\"], returns: \"u32\" },\n imageEnsureEncodedPng: { args: [\"u32\"], returns: \"u32\" },\n imageGetPixelsPtr: { args: [\"u32\"], returns: \"ptr\" },\n imageClone: { args: [\"u32\", \"ptr\"], returns: \"u32\" },\n imageCopyPixels: { args: [\"u32\", \"ptr\", \"u64\", \"u32\", \"u8\"], returns: \"u32\" },\n imageResize: { args: [\"u32\", \"u32\", \"u32\", \"u32\", \"ptr\"], returns: \"u32\" },\n imageExtract: { args: [\"u32\", \"u32\", \"u32\", \"u32\", \"u32\", \"ptr\"], returns: \"u32\" },\n imageExtend: { args: [\"u32\", \"u32\", \"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\"], returns: \"u32\" },\n imageTransform: { args: [\"u32\", \"u32\", \"ptr\"], returns: \"u32\" },\n imageComposite: { args: [\"u32\", \"u32\", \"i32\", \"i32\", \"u32\", \"u8\", \"ptr\"], returns: \"u32\" },\n\n // Terminal capability functions\n getTerminalCapabilities: {\n args: [\"u32\", \"ptr\"],\n returns: \"void\",\n },\n processCapabilityResponse: {\n args: [\"u32\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n\n // Unicode encoding API\n encodeUnicode: {\n args: [\"ptr\", \"u32\", \"ptr\", \"ptr\", \"u8\"],\n returns: \"bool\",\n },\n freeUnicode: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\",\n },\n bufferDrawChar: {\n args: [\"u32\", \"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n\n // Yoga layout\n yogaConfigCreate: {\n args: [],\n returns: \"ptr\",\n },\n yogaConfigFree: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n yogaConfigSetUseWebDefaults: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\",\n },\n yogaConfigGetUseWebDefaults: {\n args: [\"ptr\"],\n returns: \"bool\",\n },\n yogaConfigSetPointScaleFactor: {\n args: [\"ptr\", \"f32\"],\n returns: \"void\",\n },\n yogaConfigGetPointScaleFactor: {\n args: [\"ptr\"],\n returns: \"f32\",\n },\n yogaConfigSetErrata: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\",\n },\n yogaConfigGetErrata: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n yogaConfigSetExperimentalFeatureEnabled: {\n args: [\"ptr\", \"u32\", \"bool\"],\n returns: \"void\",\n },\n yogaConfigIsExperimentalFeatureEnabled: {\n args: [\"ptr\", \"u32\"],\n returns: \"bool\",\n },\n yogaNodeCreate: {\n args: [],\n returns: \"ptr\",\n },\n yogaNodeCreateForOpenTUI: {\n args: [],\n returns: \"ptr\",\n },\n yogaNodeCreateWithConfig: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n yogaNodeFree: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n yogaNodeFreeRecursive: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n yogaNodeReset: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n yogaNodeCopyStyle: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n yogaNodeInsertChild: {\n args: [\"ptr\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n yogaNodeRemoveChild: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n yogaNodeRemoveAllChildren: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n yogaNodeGetChild: {\n args: [\"ptr\", \"u32\"],\n returns: \"ptr\",\n },\n yogaNodeGetChildCount: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n yogaNodeGetParent: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n yogaNodeCalculateLayout: {\n args: [\"ptr\", \"f32\", \"f32\", \"u32\"],\n returns: \"void\",\n },\n yogaNodeIsDirty: {\n args: [\"ptr\"],\n returns: \"bool\",\n },\n yogaNodeMarkDirty: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n yogaNodeGetHasNewLayout: {\n args: [\"ptr\"],\n returns: \"bool\",\n },\n yogaNodeSetHasNewLayout: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\",\n },\n yogaNodeSetIsReferenceBaseline: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\",\n },\n yogaNodeIsReferenceBaseline: {\n args: [\"ptr\"],\n returns: \"bool\",\n },\n yogaNodeSetAlwaysFormsContainingBlock: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\",\n },\n yogaNodeGetAlwaysFormsContainingBlock: {\n args: [\"ptr\"],\n returns: \"bool\",\n },\n yogaNodeGetComputedLayout: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n yogaNodeLayoutGetEdge: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"f32\",\n },\n yogaNodeStyleSetEnum: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n yogaNodeStyleGetEnum: {\n args: [\"ptr\", \"u32\"],\n returns: \"u32\",\n },\n yogaNodeStyleSetFloat: {\n args: [\"ptr\", \"u32\", \"f32\"],\n returns: \"void\",\n },\n yogaNodeStyleGetFloat: {\n args: [\"ptr\", \"u32\"],\n returns: \"f32\",\n },\n yogaNodeStyleSetBorder: {\n args: [\"ptr\", \"u32\", \"f32\"],\n returns: \"void\",\n },\n yogaNodeStyleGetBorder: {\n args: [\"ptr\", \"u32\"],\n returns: \"f32\",\n },\n yogaNodeStyleSetValue: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"f32\"],\n returns: \"void\",\n },\n yogaNodeStyleGetValue: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"u64\",\n },\n yogaNodeSetMeasureFunc: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\",\n },\n yogaNodeUnsetMeasureFunc: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n yogaNodeHasMeasureFunc: {\n args: [\"ptr\"],\n returns: \"bool\",\n },\n yogaNodeSetDirtiedFunc: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\",\n },\n yogaNodeUnsetDirtiedFunc: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n yogaStoreMeasureResult: {\n args: [\"f32\", \"f32\"],\n returns: \"void\",\n },\n yogaSetMeasureCallback: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n yogaSetDirtiedCallback: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n\n // Audio\n createAudioEngine: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n destroyAudioEngine: {\n args: [\"u32\"],\n returns: \"void\",\n },\n audioRefreshPlaybackDevices: {\n args: [\"u32\"],\n returns: \"i32\",\n },\n audioGetPlaybackDeviceCount: {\n args: [\"u32\"],\n returns: \"u32\",\n },\n audioGetPlaybackDeviceName: {\n args: [\"u32\", \"u32\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n audioIsPlaybackDeviceDefault: {\n args: [\"u32\", \"u32\"],\n returns: \"bool\",\n },\n audioSelectPlaybackDevice: {\n args: [\"u32\", \"u32\"],\n returns: \"i32\",\n },\n audioClearPlaybackDeviceSelection: {\n args: [\"u32\"],\n returns: \"void\",\n },\n audioRefreshCaptureDevices: {\n args: [\"u32\"],\n returns: \"i32\",\n },\n audioGetCaptureDeviceCount: {\n args: [\"u32\"],\n returns: \"u32\",\n },\n audioGetCaptureDeviceName: {\n args: [\"u32\", \"u32\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n audioIsCaptureDeviceDefault: {\n args: [\"u32\", \"u32\"],\n returns: \"bool\",\n },\n audioSelectCaptureDevice: {\n args: [\"u32\", \"u32\"],\n returns: \"i32\",\n },\n audioClearCaptureDeviceSelection: {\n args: [\"u32\"],\n returns: \"void\",\n },\n audioStartCapture: {\n args: [\"u32\", \"ptr\", \"u32\", \"u32\"],\n returns: \"i32\",\n },\n audioStopCapture: {\n args: [\"u32\"],\n returns: \"i32\",\n },\n audioIsCaptureRunning: {\n args: [\"u32\"],\n returns: \"bool\",\n },\n audioReadCapture: {\n args: [\"u32\", \"ptr\", \"u32\", \"u32\", \"ptr\"],\n returns: \"i32\",\n },\n audioGetCaptureStats: {\n args: [\"u32\", \"ptr\"],\n returns: \"i32\",\n },\n audioStart: {\n args: [\"u32\", \"ptr\"],\n returns: \"i32\",\n },\n audioStartMixer: {\n args: [\"u32\"],\n returns: \"i32\",\n },\n audioStop: {\n args: [\"u32\"],\n returns: \"i32\",\n },\n audioCreateStream: {\n args: [\"u32\", \"ptr\", \"ptr\"],\n returns: \"i32\",\n },\n audioWriteStream: {\n args: [\"u32\", \"u32\", \"ptr\", \"u32\"],\n returns: \"i32\",\n },\n audioEndStream: {\n args: [\"u32\", \"u32\"],\n returns: \"i32\",\n },\n audioRestartStream: {\n args: [\"u32\", \"u32\"],\n returns: \"i32\",\n },\n audioSetStreamVolume: {\n args: [\"u32\", \"u32\", \"f32\"],\n returns: \"i32\",\n },\n audioSetStreamPan: {\n args: [\"u32\", \"u32\", \"f32\"],\n returns: \"i32\",\n },\n audioSetStreamGroup: {\n args: [\"u32\", \"u32\", \"u32\"],\n returns: \"i32\",\n },\n audioGetStreamStats: {\n args: [\"u32\", \"u32\", \"ptr\"],\n returns: \"i32\",\n },\n audioCloseStream: {\n args: [\"u32\", \"u32\", \"u32\", \"ptr\"],\n returns: \"i32\",\n },\n audioLoad: {\n args: [\"u32\", \"ptr\", \"u32\", \"ptr\"],\n returns: \"i32\",\n },\n audioUnload: {\n args: [\"u32\", \"u32\"],\n returns: \"i32\",\n },\n audioPlay: {\n args: [\"u32\", \"u32\", \"ptr\", \"ptr\"],\n returns: \"i32\",\n },\n audioStopVoice: {\n args: [\"u32\", \"u32\"],\n returns: \"i32\",\n },\n audioSetVoiceGroup: {\n args: [\"u32\", \"u32\", \"u32\"],\n returns: \"i32\",\n },\n audioCreateGroup: {\n args: [\"u32\", \"ptr\", \"u32\", \"ptr\"],\n returns: \"i32\",\n },\n audioSetGroupVolume: {\n args: [\"u32\", \"u32\", \"f32\"],\n returns: \"i32\",\n },\n audioSetMasterVolume: {\n args: [\"u32\", \"f32\"],\n returns: \"i32\",\n },\n audioMixToBuffer: {\n args: [\"u32\", \"ptr\", \"u32\", \"u8\"],\n returns: \"i32\",\n },\n audioEnableTap: {\n args: [\"u32\", \"bool\", \"u32\"],\n returns: \"i32\",\n },\n audioReadTap: {\n args: [\"u32\", \"ptr\", \"u32\", \"u8\", \"ptr\"],\n returns: \"i32\",\n },\n audioGetStats: {\n args: [\"u32\", \"ptr\"],\n returns: \"i32\",\n },\n\n // NativeSpanFeed\n createNativeSpanFeed: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n attachNativeSpanFeed: {\n args: [\"ptr\"],\n returns: \"i32\",\n },\n destroyNativeSpanFeed: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n streamWrite: {\n args: [\"ptr\", \"ptr\", \"u32\"],\n returns: \"i32\",\n },\n streamCommit: {\n args: [\"ptr\"],\n returns: \"i32\",\n },\n streamDrainSpans: {\n args: [\"ptr\", \"ptr\", \"u32\"],\n returns: \"u32\",\n },\n streamClose: {\n args: [\"ptr\"],\n returns: \"i32\",\n },\n streamReserve: {\n args: [\"ptr\", \"u32\", \"ptr\"],\n returns: \"i32\",\n },\n streamCommitReserved: {\n args: [\"ptr\", \"u32\"],\n returns: \"i32\",\n },\n streamSetOptions: {\n args: [\"ptr\", \"ptr\"],\n returns: \"i32\",\n },\n streamGetStats: {\n args: [\"ptr\", \"ptr\"],\n returns: \"i32\",\n },\n streamSetCallback: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n })\n\n if (env.OTUI_DEBUG_FFI || env.OTUI_TRACE_FFI) {\n return {\n ...rawSymbols,\n symbols: convertToDebugSymbols(rawSymbols.symbols),\n }\n }\n\n return rawSymbols\n}\n\nfunction convertToDebugSymbols<T extends Record<string, any>>(symbols: T): T {\n // Initialize global state on first call\n if (!globalTraceSymbols) {\n globalTraceSymbols = {}\n }\n\n // Initialize global debug log path on first call\n if (env.OTUI_DEBUG_FFI && !globalFFILogPath) {\n const now = new Date()\n const timestamp = now.toISOString().replace(/[:.]/g, \"-\").replace(/T/, \"_\").split(\"Z\")[0]\n globalFFILogPath = `ffi_otui_debug_${timestamp}.log`\n }\n\n const debugSymbols: Record<string, any> = {}\n let hasTracing = false\n\n Object.entries(symbols).forEach(([key, value]) => {\n debugSymbols[key] = value\n })\n\n if (env.OTUI_DEBUG_FFI && globalFFILogPath) {\n const logPath = globalFFILogPath\n const writeSync = (msg: string) => {\n writeFileSync(logPath, msg + \"\\n\", { flag: \"a\" })\n }\n\n Object.entries(symbols).forEach(([key, value]) => {\n if (typeof value === \"function\") {\n debugSymbols[key] = (...args: any[]) => {\n writeSync(`${key}(${args.map((arg) => String(arg)).join(\", \")})`)\n const result = value(...args)\n writeSync(`${key} returned: ${String(result)}`)\n return result\n }\n }\n })\n }\n\n if (env.OTUI_TRACE_FFI) {\n hasTracing = true\n Object.entries(symbols).forEach(([key, value]) => {\n if (typeof value === \"function\") {\n // Initialize trace array for this symbol if not exists\n if (!globalTraceSymbols![key]) {\n globalTraceSymbols![key] = []\n }\n\n const originalFunc = debugSymbols[key]\n debugSymbols[key] = (...args: any[]) => {\n const start = performance.now()\n const result = originalFunc(...args)\n const end = performance.now()\n globalTraceSymbols![key].push(end - start)\n return result\n }\n }\n })\n }\n\n // Register exit handler only once\n if ((env.OTUI_DEBUG_FFI || env.OTUI_TRACE_FFI) && !exitHandlerRegistered) {\n exitHandlerRegistered = true\n\n process.on(\"exit\", () => {\n if (globalTraceSymbols) {\n const allStats: Array<{\n name: string\n count: number\n total: number\n average: number\n min: number\n max: number\n median: number\n p90: number\n p99: number\n }> = []\n\n for (const [key, timings] of Object.entries(globalTraceSymbols)) {\n if (!Array.isArray(timings) || timings.length === 0) {\n continue\n }\n\n const sortedTimings = [...timings].sort((a, b) => a - b)\n const count = sortedTimings.length\n\n const total = sortedTimings.reduce((acc, t) => acc + t, 0)\n const average = total / count\n const min = sortedTimings[0]\n const max = sortedTimings[count - 1]\n\n const medianIndex = Math.floor(count / 2)\n const p90Index = Math.floor(count * 0.9)\n const p99Index = Math.floor(count * 0.99)\n\n const median = sortedTimings[medianIndex]\n const p90 = sortedTimings[Math.min(p90Index, count - 1)]\n const p99 = sortedTimings[Math.min(p99Index, count - 1)]\n\n allStats.push({\n name: key,\n count,\n total,\n average,\n min,\n max,\n median,\n p90,\n p99,\n })\n }\n\n allStats.sort((a, b) => b.total - a.total)\n\n const lines: string[] = []\n lines.push(\"\\n--- OpenTUI FFI Call Performance ---\")\n lines.push(\"Sorted by total time spent (descending)\")\n lines.push(\n \"-------------------------------------------------------------------------------------------------------------------------\",\n )\n\n if (allStats.length === 0) {\n lines.push(\"No trace data collected or all symbols had zero calls.\")\n } else {\n const nameHeader = \"Symbol\"\n const callsHeader = \"Calls\"\n const totalHeader = \"Total (ms)\"\n const avgHeader = \"Avg (ms)\"\n const minHeader = \"Min (ms)\"\n const maxHeader = \"Max (ms)\"\n const medHeader = \"Med (ms)\"\n const p90Header = \"P90 (ms)\"\n const p99Header = \"P99 (ms)\"\n\n const nameWidth = Math.max(nameHeader.length, ...allStats.map((s) => s.name.length))\n const countWidth = Math.max(callsHeader.length, ...allStats.map((s) => String(s.count).length))\n const totalWidth = Math.max(totalHeader.length, ...allStats.map((s) => s.total.toFixed(2).length))\n const avgWidth = Math.max(avgHeader.length, ...allStats.map((s) => s.average.toFixed(2).length))\n const statWidthMin = Math.max(minHeader.length, ...allStats.map((s) => s.min.toFixed(2).length))\n const statWidthMax = Math.max(maxHeader.length, ...allStats.map((s) => s.max.toFixed(2).length))\n const medianWidth = Math.max(medHeader.length, ...allStats.map((s) => s.median.toFixed(2).length))\n const p90Width = Math.max(p90Header.length, ...allStats.map((s) => s.p90.toFixed(2).length))\n const p99Width = Math.max(p99Header.length, ...allStats.map((s) => s.p99.toFixed(2).length))\n\n lines.push(\n `${nameHeader.padEnd(nameWidth)} | ` +\n `${callsHeader.padStart(countWidth)} | ` +\n `${totalHeader.padStart(totalWidth)} | ` +\n `${avgHeader.padStart(avgWidth)} | ` +\n `${minHeader.padStart(statWidthMin)} | ` +\n `${maxHeader.padStart(statWidthMax)} | ` +\n `${medHeader.padStart(medianWidth)} | ` +\n `${p90Header.padStart(p90Width)} | ` +\n `${p99Header.padStart(p99Width)}`,\n )\n lines.push(\n `${\"-\".repeat(nameWidth)}-+-${\"-\".repeat(countWidth)}-+-${\"-\".repeat(totalWidth)}-+-${\"-\".repeat(avgWidth)}-+-${\"-\".repeat(statWidthMin)}-+-${\"-\".repeat(statWidthMax)}-+-${\"-\".repeat(medianWidth)}-+-${\"-\".repeat(p90Width)}-+-${\"-\".repeat(p99Width)}`,\n )\n\n allStats.forEach((stat) => {\n lines.push(\n `${stat.name.padEnd(nameWidth)} | ` +\n `${String(stat.count).padStart(countWidth)} | ` +\n `${stat.total.toFixed(2).padStart(totalWidth)} | ` +\n `${stat.average.toFixed(2).padStart(avgWidth)} | ` +\n `${stat.min.toFixed(2).padStart(statWidthMin)} | ` +\n `${stat.max.toFixed(2).padStart(statWidthMax)} | ` +\n `${stat.median.toFixed(2).padStart(medianWidth)} | ` +\n `${stat.p90.toFixed(2).padStart(p90Width)} | ` +\n `${stat.p99.toFixed(2).padStart(p99Width)}`,\n )\n })\n }\n lines.push(\n \"-------------------------------------------------------------------------------------------------------------------------\",\n )\n\n const output = lines.join(\"\\n\")\n console.log(output)\n\n try {\n const now = new Date()\n const timestamp = now.toISOString().replace(/[:.]/g, \"-\").replace(/T/, \"_\").split(\"Z\")[0]\n const traceFilePath = `ffi_otui_trace_${timestamp}.log`\n void writeFile(traceFilePath, output).catch((error) => {\n console.error(\"Failed to write FFI trace file:\", error)\n })\n } catch (e) {\n console.error(\"Failed to write FFI trace file:\", e)\n }\n }\n })\n }\n\n return debugSymbols as T\n}\n\n// Log levels matching Zig's LogLevel enum\nexport enum LogLevel {\n Error = 0,\n Warn = 1,\n Info = 2,\n Debug = 3,\n}\n\n/**\n * VisualCursor represents a cursor position with both visual and logical coordinates.\n * Visual coordinates (visualRow, visualCol) are VIEWPORT-RELATIVE.\n * This means visualRow=0 is the first visible line in the viewport, not the first line in the document.\n * Logical coordinates (logicalRow, logicalCol) are document-absolute.\n */\nexport interface VisualCursor {\n visualRow: number // Viewport-relative row (0 = top of viewport)\n visualCol: number // Viewport-relative column (0 = left edge of viewport when not wrapping)\n logicalRow: number // Document-absolute row\n logicalCol: number // Document-absolute column\n offset: number // Global display-width offset from buffer start\n}\n\nexport interface LogicalCursor {\n row: number\n col: number\n offset: number\n}\n\nexport interface MeasureResult {\n lineCount: number\n widthColsMax: number\n}\n\nexport interface CursorState {\n x: number\n y: number\n visible: boolean\n style: CursorStyle\n blinking: boolean\n color: RGBA\n}\n\nexport type NativeSpanFeedEventHandler = (eventId: number, arg0: Pointer, arg1: number | bigint) => void\n\nexport type NativeBufferedOutput = \"stdout\" | \"memory\"\n\nexport interface NativeRendererCreateOptions {\n remote?: boolean\n feedPtr?: Pointer | null\n bufferedOutput?: NativeBufferedOutput\n}\n\nexport interface NativeRenderOperationResult {\n renderOffset: number\n status: number\n}\n\nexport interface NativeYogaLayout {\n left: number\n top: number\n right: number\n bottom: number\n width: number\n height: number\n}\n\nexport type NativeYogaMeasureCallback = (\n node: Pointer | null,\n width: number,\n widthMode: number,\n height: number,\n heightMode: number,\n) => void\n\nexport type NativeYogaDirtiedCallback = (node: Pointer | null) => void\n\nexport const NativeMeasureTargetKind = {\n None: 0,\n TextBufferView: 1,\n EditorView: 2,\n} as const\n\nexport type NativeMeasureTargetKind = (typeof NativeMeasureTargetKind)[keyof typeof NativeMeasureTargetKind]\n\nexport type NativeMeasureTargetHandle = TextBufferViewHandle | EditorViewHandle\n\nexport interface AudioEngineLib {\n createAudioEngine: (options?: AudioCreateOptions | null) => AudioEngineHandle | null\n destroyAudioEngine: (engine: AudioEngineHandle) => void\n audioRefreshPlaybackDevices: (engine: AudioEngineHandle) => number\n audioGetPlaybackDeviceCount: (engine: AudioEngineHandle) => number\n audioGetPlaybackDeviceName: (engine: AudioEngineHandle, index: number) => string\n audioIsPlaybackDeviceDefault: (engine: AudioEngineHandle, index: number) => boolean\n audioSelectPlaybackDevice: (engine: AudioEngineHandle, index: number) => number\n audioClearPlaybackDeviceSelection: (engine: AudioEngineHandle) => void\n audioRefreshCaptureDevices: (engine: AudioEngineHandle) => number\n audioGetCaptureDeviceCount: (engine: AudioEngineHandle) => number\n audioGetCaptureDeviceName: (engine: AudioEngineHandle, index: number) => string\n audioIsCaptureDeviceDefault: (engine: AudioEngineHandle, index: number) => boolean\n audioSelectCaptureDevice: (engine: AudioEngineHandle, index: number) => number\n audioClearCaptureDeviceSelection: (engine: AudioEngineHandle) => void\n audioStartCapture: (\n engine: AudioEngineHandle,\n options: AudioStartOptions | undefined,\n channels: number,\n capacityFrames: number,\n ) => number\n audioStopCapture: (engine: AudioEngineHandle) => number\n audioIsCaptureRunning: (engine: AudioEngineHandle) => boolean\n audioReadCapture: (\n engine: AudioEngineHandle,\n outBuffer: Float32Array,\n frameCount: number,\n ) => { status: number; framesRead: number }\n audioGetCaptureStats: (engine: AudioEngineHandle) => { status: number; stats: NativeAudioCaptureStats | null }\n audioStart: (engine: AudioEngineHandle, options?: AudioStartOptions | null) => number\n audioStartMixer: (engine: AudioEngineHandle) => number\n audioStop: (engine: AudioEngineHandle) => number\n audioCreateStream: (\n engine: AudioEngineHandle,\n options: AudioStreamCreateOptions,\n ) => { status: number; streamId: number | null }\n audioWriteStream: (engine: AudioEngineHandle, streamId: number, data: Uint8Array) => number\n audioEndStream: (engine: AudioEngineHandle, streamId: number) => number\n audioRestartStream: (engine: AudioEngineHandle, streamId: number) => number\n audioSetStreamVolume: (engine: AudioEngineHandle, streamId: number, volume: number) => number\n audioSetStreamPan: (engine: AudioEngineHandle, streamId: number, pan: number) => number\n audioSetStreamGroup: (engine: AudioEngineHandle, streamId: number, groupId: number) => number\n audioGetStreamStats: (engine: AudioEngineHandle, streamId: number) => NativeAudioStreamStats | null\n audioCloseStream: (\n engine: AudioEngineHandle,\n streamId: number,\n reason: NativeAudioStreamCloseReason,\n ) => { status: number; stats: NativeAudioStreamStats | null }\n audioLoad: (engine: AudioEngineHandle, data: Uint8Array) => { status: number; soundId: number | null }\n audioUnload: (engine: AudioEngineHandle, soundId: number) => number\n audioPlay: (\n engine: AudioEngineHandle,\n soundId: number,\n options?: AudioVoiceOptions,\n ) => { status: number; voiceId: number | null }\n audioStopVoice: (engine: AudioEngineHandle, voiceId: number) => number\n audioSetVoiceGroup: (engine: AudioEngineHandle, voiceId: number, groupId: number) => number\n audioCreateGroup: (engine: AudioEngineHandle, name: string) => { status: number; groupId: number | null }\n audioSetGroupVolume: (engine: AudioEngineHandle, groupId: number, volume: number) => number\n audioSetMasterVolume: (engine: AudioEngineHandle, volume: number) => number\n audioMixToBuffer: (engine: AudioEngineHandle, outBuffer: Float32Array, frameCount: number, channels: number) => number\n audioEnableTap: (engine: AudioEngineHandle, enabled: boolean, capacityFrames: number) => number\n audioReadTap: (\n engine: AudioEngineHandle,\n outBuffer: Float32Array,\n frameCount: number,\n channels: number,\n ) => { status: number; framesRead: number }\n audioGetStats: (engine: AudioEngineHandle) => AudioStats | null\n}\n\nexport interface RenderLib extends AudioEngineLib {\n createRenderer: (width: number, height: number, options?: NativeRendererCreateOptions) => RendererHandle | null\n setTerminalEnvVar: (renderer: RendererHandle, key: string, value: string) => boolean\n destroyRenderer: (renderer: RendererHandle) => void\n setUseThread: (renderer: RendererHandle, useThread: boolean) => void\n setClearOnShutdown: (renderer: RendererHandle, clear: boolean) => void\n setBackgroundColor: (renderer: RendererHandle, color: RGBA) => void\n setRenderOffset: (renderer: RendererHandle, offset: number) => void\n resetSplitScrollback: (renderer: RendererHandle, seedRows: number, pinnedRenderOffset: number) => number\n syncSplitScrollback: (renderer: RendererHandle, pinnedRenderOffset: number) => number\n getSplitOutputOffset: (renderer: RendererHandle, surfaceOffset: number) => number\n setPendingSplitFooterTransition: (\n renderer: RendererHandle,\n mode: number,\n sourceTopLine: number,\n sourceHeight: number,\n targetTopLine: number,\n targetHeight: number,\n scrollLines: number,\n ) => void\n clearPendingSplitFooterTransition: (renderer: RendererHandle) => void\n updateStats: (renderer: RendererHandle, time: number, fps: number, frameCallbackTime: number) => void\n updateMemoryStats: (renderer: RendererHandle, heapUsed: number, heapTotal: number, arrayBuffers: number) => void\n getRenderStats: (renderer: RendererHandle) => NativeRenderStats\n render: (renderer: RendererHandle, force: boolean) => number\n repaintSplitFooter: (\n renderer: RendererHandle,\n pinnedRenderOffset: number,\n force: boolean,\n ) => NativeRenderOperationResult\n commitSplitFooterSnapshot: (\n renderer: RendererHandle,\n snapshot: OptimizedBuffer,\n rowColumns: number,\n startOnNewLine: boolean,\n trailingNewline: boolean,\n pinnedRenderOffset: number,\n force: boolean,\n // beginFrame/finalizeFrame mark commit boundaries when one JS flush contains\n // multiple stdout snapshots. Defaults preserve old one-call behavior.\n beginFrame?: boolean,\n finalizeFrame?: boolean,\n ) => NativeRenderOperationResult\n getNextBuffer: (renderer: RendererHandle) => OptimizedBuffer\n getCurrentBuffer: (renderer: RendererHandle) => OptimizedBuffer\n rendererSetPaletteState: (\n renderer: RendererHandle,\n palette: readonly RGBA[],\n defaultForeground: RGBA,\n defaultBackground: RGBA,\n paletteEpoch: number,\n ) => void\n createOptimizedBuffer: (\n width: number,\n height: number,\n widthMethod: WidthMethod,\n respectAlpha?: boolean,\n id?: string,\n ) => OptimizedBuffer\n destroyOptimizedBuffer: (bufferPtr: OptimizedBufferHandle) => void\n drawFrameBuffer: (\n targetBufferPtr: OptimizedBufferHandle,\n destX: number,\n destY: number,\n bufferPtr: OptimizedBufferHandle,\n sourceX?: number,\n sourceY?: number,\n sourceWidth?: number,\n sourceHeight?: number,\n ) => void\n getBufferWidth: (buffer: OptimizedBufferHandle) => number\n getBufferHeight: (buffer: OptimizedBufferHandle) => number\n bufferClear: (buffer: OptimizedBufferHandle, color: RGBA) => void\n bufferGetCharPtr: (buffer: OptimizedBufferHandle) => Pointer\n bufferGetFgPtr: (buffer: OptimizedBufferHandle) => Pointer\n bufferGetBgPtr: (buffer: OptimizedBufferHandle) => Pointer\n bufferGetAttributesPtr: (buffer: OptimizedBufferHandle) => Pointer\n bufferGetRespectAlpha: (buffer: OptimizedBufferHandle) => boolean\n bufferSetRespectAlpha: (buffer: OptimizedBufferHandle, respectAlpha: boolean) => void\n bufferGetId: (buffer: OptimizedBufferHandle) => string\n bufferGetRealCharSize: (buffer: OptimizedBufferHandle) => number\n bufferWriteResolvedChars: (buffer: OptimizedBufferHandle, outputBuffer: Uint8Array, addLineBreaks: boolean) => number\n bufferDrawText: (\n buffer: OptimizedBufferHandle,\n text: string,\n x: number,\n y: number,\n color: RGBA,\n bgColor?: RGBA,\n attributes?: number,\n ) => void\n bufferSetCellWithAlphaBlending: (\n buffer: OptimizedBufferHandle,\n x: number,\n y: number,\n char: string,\n color: RGBA,\n bgColor: RGBA,\n attributes?: number,\n ) => void\n bufferSetCell: (\n buffer: OptimizedBufferHandle,\n x: number,\n y: number,\n char: string,\n color: RGBA,\n bgColor: RGBA,\n attributes?: number,\n ) => void\n bufferFillRect: (\n buffer: OptimizedBufferHandle,\n x: number,\n y: number,\n width: number,\n height: number,\n color: RGBA,\n ) => void\n bufferColorMatrix: (\n buffer: OptimizedBufferHandle,\n matrixPtr: Pointer,\n cellMaskPtr: Pointer,\n cellMaskCount: number,\n strength: number,\n target: TargetChannel,\n ) => void\n bufferColorMatrixUniform: (\n buffer: OptimizedBufferHandle,\n matrixPtr: Pointer,\n strength: number,\n target: TargetChannel,\n ) => void\n bufferDrawSuperSampleBuffer: (\n buffer: OptimizedBufferHandle,\n x: number,\n y: number,\n pixelDataPtr: Pointer,\n pixelDataLength: number,\n format: \"bgra8unorm\" | \"rgba8unorm\",\n alignedBytesPerRow: number,\n ) => void\n bufferDrawImage: (\n buffer: OptimizedBufferHandle,\n image: ImageHandle,\n x: number,\n y: number,\n width: number,\n height: number,\n pixelWidth: number,\n pixelHeight: number,\n sourceX: number,\n sourceY: number,\n sourceWidth: number,\n sourceHeight: number,\n protocol: ImageRenderProtocol,\n ) => boolean\n bufferDrawPackedBuffer: (\n buffer: OptimizedBufferHandle,\n dataPtr: Pointer,\n dataLen: number,\n posX: number,\n posY: number,\n terminalWidthCells: number,\n terminalHeightCells: number,\n ) => void\n bufferDrawGrayscaleBuffer: (\n buffer: OptimizedBufferHandle,\n posX: number,\n posY: number,\n intensitiesPtr: Pointer,\n srcWidth: number,\n srcHeight: number,\n fg: RGBA | null,\n bg: RGBA | null,\n ) => void\n bufferDrawGrayscaleBufferSupersampled: (\n buffer: OptimizedBufferHandle,\n posX: number,\n posY: number,\n intensitiesPtr: Pointer,\n srcWidth: number,\n srcHeight: number,\n fg: RGBA | null,\n bg: RGBA | null,\n ) => void\n bufferDrawGrid: (\n buffer: OptimizedBufferHandle,\n borderChars: Uint32Array,\n borderFg: RGBA,\n borderBg: RGBA,\n columnOffsets: Int32Array,\n columnCount: number,\n rowOffsets: Int32Array,\n rowCount: number,\n options: { drawInner: boolean; drawOuter: boolean },\n ) => void\n bufferDrawBox: (\n buffer: OptimizedBufferHandle,\n x: number,\n y: number,\n width: number,\n height: number,\n borderChars: Uint32Array,\n packedOptions: number,\n borderColor: RGBA,\n backgroundColor: RGBA,\n titleColor: RGBA,\n title: string | null,\n bottomTitle: string | null,\n ) => void\n bufferResize: (buffer: OptimizedBufferHandle, width: number, height: number) => void\n resizeRenderer: (renderer: RendererHandle, width: number, height: number) => void\n setCursorPosition: (renderer: RendererHandle, x: number, y: number, visible: boolean) => void\n setCursorColor: (renderer: RendererHandle, color: RGBA) => void\n getCursorState: (renderer: RendererHandle) => CursorState\n setCursorStyleOptions: (renderer: RendererHandle, options: CursorStyleOptions) => void\n setDebugOverlay: (renderer: RendererHandle, enabled: boolean, corner: DebugOverlayCorner) => void\n clearTerminal: (renderer: RendererHandle) => void\n setTerminalTitle: (renderer: RendererHandle, title: string) => void\n copyToClipboardOSC52: (renderer: RendererHandle, target: number, textUtf8: Uint8Array) => boolean\n clearClipboardOSC52: (renderer: RendererHandle, target: number) => boolean\n clipboardServiceCreate: (\n maxConcurrentOperations: number,\n maxProviderTransfers: number,\n waylandSeat?: string,\n ) => ClipboardServiceHandle | null\n clipboardServiceBeginShutdown: (service: ClipboardServiceHandle) => NativeClipboardShutdownStatus\n clipboardServicePollShutdown: (service: ClipboardServiceHandle) => NativeClipboardShutdownStatus\n clipboardServiceDestroy: (service: ClipboardServiceHandle) => NativeClipboardDestroyStatus\n clipboardServiceDrain: (service: ClipboardServiceHandle) => number\n clipboardReadOperationStart: (\n service: ClipboardServiceHandle,\n request: Uint8Array,\n selection: number,\n maxBytes: number,\n maxImagePixels: number,\n maxConversionBytes: number,\n timeoutMs: number,\n ) => { status: NativeClipboardStartStatus; operation: ClipboardOperationHandle | null }\n clipboardWriteOperationStart: (\n service: ClipboardServiceHandle,\n textUtf8: Uint8Array,\n selection: number,\n timeoutMs: number,\n ) => { status: NativeClipboardStartStatus; operation: ClipboardOperationHandle | null }\n clipboardClearOperationStart: (\n service: ClipboardServiceHandle,\n selection: number,\n timeoutMs: number,\n ) => { status: NativeClipboardStartStatus; operation: ClipboardOperationHandle | null }\n clipboardOperationPoll: (operation: ClipboardOperationHandle) => NativeClipboardOperationStatus\n clipboardOperationCancel: (operation: ClipboardOperationHandle) => NativeClipboardCancelStatus\n clipboardOperationResultMimeLength: (operation: ClipboardOperationHandle) => {\n status: NativeClipboardCopyStatus\n length: number\n }\n clipboardOperationResultMimeCopy: (\n operation: ClipboardOperationHandle,\n output: Uint8Array,\n ) => NativeClipboardCopyStatus\n clipboardOperationResultDataLength: (operation: ClipboardOperationHandle) => {\n status: NativeClipboardCopyStatus\n length: number\n }\n clipboardOperationResultDataCopy: (\n operation: ClipboardOperationHandle,\n output: Uint8Array,\n ) => NativeClipboardCopyStatus\n clipboardOperationResultErrorCode: (operation: ClipboardOperationHandle) => {\n status: NativeClipboardCopyStatus\n errorCode: number\n }\n clipboardOperationResultDiagnosticLength: (operation: ClipboardOperationHandle) => {\n status: NativeClipboardCopyStatus\n length: number\n }\n clipboardOperationResultDiagnosticCopy: (\n operation: ClipboardOperationHandle,\n output: Uint8Array,\n ) => NativeClipboardCopyStatus\n clipboardOperationDestroy: (operation: ClipboardOperationHandle) => NativeClipboardDestroyStatus\n triggerNotification: (renderer: RendererHandle, message: string, title?: string) => boolean\n addToHitGrid: (renderer: RendererHandle, x: number, y: number, width: number, height: number, id: number) => void\n clearCurrentHitGrid: (renderer: RendererHandle) => void\n hitGridPushScissorRect: (renderer: RendererHandle, x: number, y: number, width: number, height: number) => void\n hitGridPopScissorRect: (renderer: RendererHandle) => void\n hitGridClearScissorRects: (renderer: RendererHandle) => void\n addToCurrentHitGridClipped: (\n renderer: RendererHandle,\n x: number,\n y: number,\n width: number,\n height: number,\n id: number,\n ) => void\n checkHit: (renderer: RendererHandle, x: number, y: number) => number\n getHitGridDirty: (renderer: RendererHandle) => boolean\n dumpHitGrid: (renderer: RendererHandle) => void\n dumpBuffers: (renderer: RendererHandle, timestamp?: number) => void\n dumpOutputBuffer: (renderer: RendererHandle, timestamp?: number) => void\n restoreTerminalModes: (renderer: RendererHandle) => void\n enableMouse: (renderer: RendererHandle, enableMovement: boolean) => void\n disableMouse: (renderer: RendererHandle) => void\n enableKittyKeyboard: (renderer: RendererHandle, flags: number) => void\n disableKittyKeyboard: (renderer: RendererHandle) => void\n setKittyKeyboardFlags: (renderer: RendererHandle, flags: number) => void\n getKittyKeyboardFlags: (renderer: RendererHandle) => number\n setupTerminal: (renderer: RendererHandle, useAlternateScreen: boolean) => void\n suspendRenderer: (renderer: RendererHandle) => void\n resumeRenderer: (renderer: RendererHandle) => void\n queryPixelResolution: (renderer: RendererHandle) => void\n queryThemeColors: (renderer: RendererHandle) => void\n writeOut: (renderer: RendererHandle, data: string | Uint8Array) => void\n\n // Yoga layout methods\n yogaConfigCreate: () => Pointer\n yogaConfigFree: (config: Pointer) => void\n yogaConfigSetUseWebDefaults: (config: Pointer, enabled: boolean) => void\n yogaConfigGetUseWebDefaults: (config: Pointer) => boolean\n yogaConfigSetPointScaleFactor: (config: Pointer, pointScaleFactor: number) => void\n yogaConfigGetPointScaleFactor: (config: Pointer) => number\n yogaConfigSetErrata: (config: Pointer, errata: number) => void\n yogaConfigGetErrata: (config: Pointer) => number\n yogaConfigSetExperimentalFeatureEnabled: (config: Pointer, feature: number, enabled: boolean) => void\n yogaConfigIsExperimentalFeatureEnabled: (config: Pointer, feature: number) => boolean\n yogaNodeCreate: () => Pointer\n yogaNodeCreateForOpenTUI: () => Pointer\n yogaNodeCreateWithConfig: (config: Pointer) => Pointer\n yogaNodeFree: (node: Pointer) => void\n yogaNodeFreeRecursive: (node: Pointer) => void\n yogaNodeReset: (node: Pointer) => void\n yogaNodeCopyStyle: (dstNode: Pointer, srcNode: Pointer) => void\n yogaNodeInsertChild: (node: Pointer, child: Pointer, index: number) => void\n yogaNodeRemoveChild: (node: Pointer, child: Pointer) => void\n yogaNodeRemoveAllChildren: (node: Pointer) => void\n yogaNodeGetChild: (node: Pointer, index: number) => Pointer | null\n yogaNodeGetChildCount: (node: Pointer) => number\n yogaNodeGetParent: (node: Pointer) => Pointer | null\n yogaNodeCalculateLayout: (node: Pointer, width: number, height: number, direction: number) => void\n yogaNodeIsDirty: (node: Pointer) => boolean\n yogaNodeMarkDirty: (node: Pointer) => void\n yogaNodeGetHasNewLayout: (node: Pointer) => boolean\n yogaNodeSetHasNewLayout: (node: Pointer, hasNewLayout: boolean) => void\n yogaNodeSetIsReferenceBaseline: (node: Pointer, isReferenceBaseline: boolean) => void\n yogaNodeIsReferenceBaseline: (node: Pointer) => boolean\n yogaNodeSetAlwaysFormsContainingBlock: (node: Pointer, alwaysFormsContainingBlock: boolean) => void\n yogaNodeGetAlwaysFormsContainingBlock: (node: Pointer) => boolean\n yogaNodeGetComputedLayout: (node: Pointer) => NativeYogaLayout\n yogaNodeLayoutGetEdge: (node: Pointer, kind: number, edge: number) => number\n yogaNodeStyleSetEnum: (node: Pointer, kind: number, value: number) => void\n yogaNodeStyleGetEnum: (node: Pointer, kind: number) => number\n yogaNodeStyleSetFloat: (node: Pointer, kind: number, value: number) => void\n yogaNodeStyleGetFloat: (node: Pointer, kind: number) => number\n yogaNodeStyleSetBorder: (node: Pointer, edge: number, border: number) => void\n yogaNodeStyleGetBorder: (node: Pointer, edge: number) => number\n yogaNodeStyleSetValue: (node: Pointer, kind: number, edgeOrGutter: number, unit: number, value: number) => void\n yogaNodeStyleGetValue: (node: Pointer, kind: number, edgeOrGutter: number) => number | bigint\n yogaNodeSetMeasureFunc: (node: Pointer, enabled: boolean) => void\n yogaNodeUnsetMeasureFunc: (node: Pointer) => void\n yogaNodeHasMeasureFunc: (node: Pointer) => boolean\n yogaNodeSetDirtiedFunc: (node: Pointer, enabled: boolean) => void\n yogaNodeUnsetDirtiedFunc: (node: Pointer) => void\n yogaStoreMeasureResult: (width: number, height: number) => void\n yogaSetMeasureCallback: (callback: Pointer | null) => void\n yogaSetDirtiedCallback: (callback: Pointer | null) => void\n createYogaMeasureCallback: (callback: NativeYogaMeasureCallback) => FFICallbackInstance\n createYogaDirtiedCallback: (callback: NativeYogaDirtiedCallback) => FFICallbackInstance\n\n // TextBuffer methods\n createTextBuffer: (widthMethod: WidthMethod) => TextBuffer\n destroyTextBuffer: (buffer: TextBufferHandle) => void\n textBufferGetLength: (buffer: TextBufferHandle) => number\n textBufferGetByteSize: (buffer: TextBufferHandle) => number\n\n textBufferReset: (buffer: TextBufferHandle) => void\n textBufferClear: (buffer: TextBufferHandle) => void\n textBufferRegisterMemBuffer: (buffer: TextBufferHandle, bytes: Uint8Array, owned?: boolean) => number\n textBufferReplaceMemBuffer: (buffer: TextBufferHandle, memId: number, bytes: Uint8Array, owned?: boolean) => boolean\n textBufferClearMemRegistry: (buffer: TextBufferHandle) => void\n textBufferSetTextFromMem: (buffer: TextBufferHandle, memId: number) => void\n textBufferAppend: (buffer: TextBufferHandle, bytes: Uint8Array) => void\n textBufferAppendFromMemId: (buffer: TextBufferHandle, memId: number) => void\n textBufferLoadFile: (buffer: TextBufferHandle, path: string) => boolean\n textBufferSetStyledText: (\n buffer: TextBufferHandle,\n chunks: Array<{ text: string; fg?: RGBA | null; bg?: RGBA | null; attributes?: number; link?: { url: string } }>,\n ) => void\n textBufferSetDefaultFg: (buffer: TextBufferHandle, fg: RGBA | null) => void\n textBufferSetDefaultBg: (buffer: TextBufferHandle, bg: RGBA | null) => void\n textBufferSetDefaultAttributes: (buffer: TextBufferHandle, attributes: number | null) => void\n textBufferResetDefaults: (buffer: TextBufferHandle) => void\n textBufferGetTabWidth: (buffer: TextBufferHandle) => number\n textBufferSetTabWidth: (buffer: TextBufferHandle, width: number) => void\n textBufferGetLineCount: (buffer: TextBufferHandle) => number\n getPlainTextBytes: (buffer: TextBufferHandle, maxLength: number) => Uint8Array | null\n textBufferGetTextRange: (\n buffer: TextBufferHandle,\n startOffset: number,\n endOffset: number,\n maxLength: number,\n ) => Uint8Array | null\n textBufferGetTextRangeByCoords: (\n buffer: TextBufferHandle,\n startRow: number,\n startCol: number,\n endRow: number,\n endCol: number,\n maxLength: number,\n ) => Uint8Array | null\n\n // TextBufferView methods\n createTextBufferView: (textBuffer: TextBufferHandle) => TextBufferViewHandle\n destroyTextBufferView: (view: TextBufferViewHandle) => void\n textBufferViewSetSelection: (\n view: TextBufferViewHandle,\n start: number,\n end: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n ) => void\n textBufferViewResetSelection: (view: TextBufferViewHandle) => void\n textBufferViewGetSelection: (view: TextBufferViewHandle) => { start: number; end: number } | null\n textBufferViewSetLocalSelection: (\n view: TextBufferViewHandle,\n anchorX: number,\n anchorY: number,\n focusX: number,\n focusY: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n ) => boolean\n textBufferViewUpdateSelection: (\n view: TextBufferViewHandle,\n end: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n ) => void\n textBufferViewUpdateLocalSelection: (\n view: TextBufferViewHandle,\n anchorX: number,\n anchorY: number,\n focusX: number,\n focusY: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n ) => boolean\n textBufferViewResetLocalSelection: (view: TextBufferViewHandle) => void\n textBufferViewSetWrapWidth: (view: TextBufferViewHandle, width: number) => void\n textBufferViewSetWrapMode: (view: TextBufferViewHandle, mode: \"none\" | \"char\" | \"word\") => void\n textBufferViewSetFirstLineOffset: (view: TextBufferViewHandle, offset: number) => void\n textBufferViewSetViewportSize: (view: TextBufferViewHandle, width: number, height: number) => void\n textBufferViewSetViewport: (view: TextBufferViewHandle, x: number, y: number, width: number, height: number) => void\n textBufferViewGetLineInfo: (view: TextBufferViewHandle) => LineInfo\n textBufferViewGetLogicalLineInfo: (view: TextBufferViewHandle) => LineInfo\n textBufferViewGetSelectedTextBytes: (view: TextBufferViewHandle, maxLength: number) => Uint8Array | null\n textBufferViewGetPlainTextBytes: (view: TextBufferViewHandle, maxLength: number) => Uint8Array | null\n textBufferViewSetTabIndicator: (view: TextBufferViewHandle, indicator: number) => void\n textBufferViewSetTabIndicatorColor: (view: TextBufferViewHandle, color: RGBA) => void\n textBufferViewSetTruncate: (view: TextBufferViewHandle, truncate: boolean) => void\n textBufferViewMeasureForDimensions: (\n view: TextBufferViewHandle,\n width: number,\n height: number,\n ) => MeasureResult | null\n textBufferViewGetVirtualLineCount: (view: TextBufferViewHandle) => number\n\n readonly encoder: TextEncoder\n readonly decoder: TextDecoder\n bufferDrawTextBufferView: (buffer: OptimizedBufferHandle, view: TextBufferViewHandle, x: number, y: number) => void\n bufferDrawEditorView: (buffer: OptimizedBufferHandle, view: EditorViewHandle, x: number, y: number) => void\n\n // EditBuffer methods\n createEditBuffer: (widthMethod: WidthMethod) => EditBufferHandle\n destroyEditBuffer: (buffer: EditBufferHandle) => void\n editBufferSetText: (buffer: EditBufferHandle, textBytes: Uint8Array) => void\n editBufferSetTextFromMem: (buffer: EditBufferHandle, memId: number) => void\n editBufferReplaceText: (buffer: EditBufferHandle, textBytes: Uint8Array) => void\n editBufferReplaceTextFromMem: (buffer: EditBufferHandle, memId: number) => void\n editBufferGetText: (buffer: EditBufferHandle, maxLength: number) => Uint8Array | null\n editBufferInsertChar: (buffer: EditBufferHandle, char: string) => void\n editBufferInsertText: (buffer: EditBufferHandle, text: string) => void\n editBufferDeleteChar: (buffer: EditBufferHandle) => void\n editBufferDeleteCharBackward: (buffer: EditBufferHandle) => void\n editBufferDeleteRange: (\n buffer: EditBufferHandle,\n startLine: number,\n startCol: number,\n endLine: number,\n endCol: number,\n ) => void\n editBufferNewLine: (buffer: EditBufferHandle) => void\n editBufferDeleteLine: (buffer: EditBufferHandle) => void\n editBufferMoveCursorLeft: (buffer: EditBufferHandle) => void\n editBufferMoveCursorRight: (buffer: EditBufferHandle) => void\n editBufferMoveCursorUp: (buffer: EditBufferHandle) => void\n editBufferMoveCursorDown: (buffer: EditBufferHandle) => void\n editBufferGotoLine: (buffer: EditBufferHandle, line: number) => void\n editBufferSetCursor: (buffer: EditBufferHandle, line: number, col: number) => void\n editBufferSetCursorToLineCol: (buffer: EditBufferHandle, line: number, col: number) => void\n editBufferSetCursorByOffset: (buffer: EditBufferHandle, offset: number) => void\n editBufferGetCursorPosition: (buffer: EditBufferHandle) => LogicalCursor\n editBufferGetId: (buffer: EditBufferHandle) => number\n editBufferGetTextBuffer: (buffer: EditBufferHandle) => TextBufferHandle\n editBufferDebugLogRope: (buffer: EditBufferHandle) => void\n editBufferUndo: (buffer: EditBufferHandle, maxLength: number) => Uint8Array | null\n editBufferRedo: (buffer: EditBufferHandle, maxLength: number) => Uint8Array | null\n editBufferCanUndo: (buffer: EditBufferHandle) => boolean\n editBufferCanRedo: (buffer: EditBufferHandle) => boolean\n editBufferClearHistory: (buffer: EditBufferHandle) => void\n editBufferClear: (buffer: EditBufferHandle) => void\n editBufferGetNextWordBoundary: (buffer: EditBufferHandle) => { row: number; col: number; offset: number }\n editBufferGetPrevWordBoundary: (buffer: EditBufferHandle) => { row: number; col: number; offset: number }\n editBufferGetEOL: (buffer: EditBufferHandle) => { row: number; col: number; offset: number }\n editBufferOffsetToPosition: (\n buffer: EditBufferHandle,\n offset: number,\n ) => { row: number; col: number; offset: number } | null\n editBufferPositionToOffset: (buffer: EditBufferHandle, row: number, col: number) => number\n editBufferGetLineStartOffset: (buffer: EditBufferHandle, row: number) => number\n editBufferGetTextRange: (\n buffer: EditBufferHandle,\n startOffset: number,\n endOffset: number,\n maxLength: number,\n ) => Uint8Array | null\n editBufferGetTextRangeByCoords: (\n buffer: EditBufferHandle,\n startRow: number,\n startCol: number,\n endRow: number,\n endCol: number,\n maxLength: number,\n ) => Uint8Array | null\n\n // EditorView methods\n createEditorView: (editBufferPtr: EditBufferHandle, viewportWidth: number, viewportHeight: number) => EditorViewHandle\n destroyEditorView: (view: EditorViewHandle) => void\n editorViewSetViewportSize: (view: EditorViewHandle, width: number, height: number) => void\n editorViewSetViewport: (\n view: EditorViewHandle,\n x: number,\n y: number,\n width: number,\n height: number,\n moveCursor: boolean,\n ) => void\n editorViewGetViewport: (view: EditorViewHandle) => { offsetY: number; offsetX: number; height: number; width: number }\n editorViewSetScrollMargin: (view: EditorViewHandle, margin: number) => void\n editorViewSetWrapMode: (view: EditorViewHandle, mode: \"none\" | \"char\" | \"word\") => void\n editorViewGetVirtualLineCount: (view: EditorViewHandle) => number\n editorViewGetTotalVirtualLineCount: (view: EditorViewHandle) => number\n editorViewGetTextBufferView: (view: EditorViewHandle) => TextBufferViewHandle\n editorViewSetSelection: (\n view: EditorViewHandle,\n start: number,\n end: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n ) => void\n editorViewResetSelection: (view: EditorViewHandle) => void\n editorViewGetSelection: (view: EditorViewHandle) => { start: number; end: number } | null\n editorViewSetLocalSelection: (\n view: EditorViewHandle,\n anchorX: number,\n anchorY: number,\n focusX: number,\n focusY: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n updateCursor: boolean,\n followCursor: boolean,\n ) => boolean\n\n editorViewUpdateSelection: (view: EditorViewHandle, end: number, bgColor: RGBA | null, fgColor: RGBA | null) => void\n editorViewUpdateLocalSelection: (\n view: EditorViewHandle,\n anchorX: number,\n anchorY: number,\n focusX: number,\n focusY: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n updateCursor: boolean,\n followCursor: boolean,\n ) => boolean\n\n editorViewResetLocalSelection: (view: EditorViewHandle) => void\n editorViewGetSelectedTextBytes: (view: EditorViewHandle, maxLength: number) => Uint8Array | null\n editorViewGetCursor: (view: EditorViewHandle) => { row: number; col: number }\n editorViewGetText: (view: EditorViewHandle, maxLength: number) => Uint8Array | null\n editorViewGetVisualCursor: (view: EditorViewHandle) => VisualCursor\n editorViewMoveUpVisual: (view: EditorViewHandle) => void\n editorViewMoveDownVisual: (view: EditorViewHandle) => void\n editorViewDeleteSelectedText: (view: EditorViewHandle) => void\n editorViewSetCursorByOffset: (view: EditorViewHandle, offset: number) => void\n editorViewGetNextWordBoundary: (view: EditorViewHandle) => VisualCursor\n editorViewGetPrevWordBoundary: (view: EditorViewHandle) => VisualCursor\n editorViewGetEOL: (view: EditorViewHandle) => VisualCursor\n editorViewGetVisualSOL: (view: EditorViewHandle) => VisualCursor\n editorViewGetVisualEOL: (view: EditorViewHandle) => VisualCursor\n editorViewGetLineInfo: (view: EditorViewHandle) => LineInfo\n editorViewGetLogicalLineInfo: (view: EditorViewHandle) => LineInfo\n editorViewSetPlaceholderStyledText: (\n view: EditorViewHandle,\n chunks: Array<{ text: string; fg?: RGBA | null; bg?: RGBA | null; attributes?: number }>,\n ) => void\n editorViewSetTabIndicator: (view: EditorViewHandle, indicator: number) => void\n editorViewSetTabIndicatorColor: (view: EditorViewHandle, color: RGBA) => void\n\n bufferPushScissorRect: (buffer: OptimizedBufferHandle, x: number, y: number, width: number, height: number) => void\n bufferPopScissorRect: (buffer: OptimizedBufferHandle) => void\n bufferClearScissorRects: (buffer: OptimizedBufferHandle) => void\n bufferPushOpacity: (buffer: OptimizedBufferHandle, opacity: number) => void\n bufferPopOpacity: (buffer: OptimizedBufferHandle) => void\n bufferGetCurrentOpacity: (buffer: OptimizedBufferHandle) => number\n bufferClearOpacity: (buffer: OptimizedBufferHandle) => void\n textBufferAddHighlightByCharRange: (buffer: TextBufferHandle, highlight: Highlight) => void\n textBufferAddHighlight: (buffer: TextBufferHandle, lineIdx: number, highlight: Highlight) => void\n textBufferRemoveHighlightsByRef: (buffer: TextBufferHandle, hlRef: number) => void\n textBufferClearLineHighlights: (buffer: TextBufferHandle, lineIdx: number) => void\n textBufferClearAllHighlights: (buffer: TextBufferHandle) => void\n textBufferSetSyntaxStyle: (buffer: TextBufferHandle, style: SyntaxStyleHandle | null) => boolean\n textBufferGetLineHighlights: (buffer: TextBufferHandle, lineIdx: number) => Array<Highlight>\n textBufferGetHighlightCount: (buffer: TextBufferHandle) => number\n\n getArenaAllocatedBytes: () => number\n getBuildOptions: () => BuildOptions\n getAllocatorStats: () => AllocatorStats\n\n createSyntaxStyle: () => SyntaxStyleHandle\n destroySyntaxStyle: (style: SyntaxStyleHandle) => void\n syntaxStyleRegister: (\n style: SyntaxStyleHandle,\n name: string,\n fg: RGBA | null,\n bg: RGBA | null,\n attributes: number,\n ) => number\n syntaxStyleResolveByName: (style: SyntaxStyleHandle, name: string) => number | null\n syntaxStyleGetStyleCount: (style: SyntaxStyleHandle) => number\n\n imageInfo: (data: Uint8Array) => { status: number; info: NativeImageInfo }\n imageRetainIccCache: () => void\n imageReleaseIccCache: () => void\n imageTestFailIccProfileCopyAllocationOnce: () => void\n imageDecode: (data: Uint8Array) => { status: number; handle: ImageHandle | null }\n imageCreateFromRgba: (\n pixels: Uint8Array,\n width: number,\n height: number,\n stride: number,\n ) => { status: number; handle: ImageHandle | null }\n imageDestroy: (image: ImageHandle) => void\n imageRetain: (image: ImageHandle) => { status: number; handle: ImageHandle | null }\n imageGetInfo: (image: ImageHandle) => { status: number; info: NativeImageInfo }\n imageMaterialize: (image: ImageHandle) => number\n imageEnsureEncodedPng: (image: ImageHandle) => number\n imageGetPixelsPtr: (image: ImageHandle) => Pointer | null\n imageClone: (image: ImageHandle) => { status: number; handle: ImageHandle | null }\n imageCopyPixels: (image: ImageHandle, destination: Uint8Array, stride: number, bgra: boolean) => number\n imageResize: (\n image: ImageHandle,\n width: number,\n height: number,\n filter: number,\n ) => { status: number; handle: ImageHandle | null }\n imageExtract: (\n image: ImageHandle,\n left: number,\n top: number,\n width: number,\n height: number,\n ) => { status: number; handle: ImageHandle | null }\n imageExtend: (\n image: ImageHandle,\n top: number,\n right: number,\n bottom: number,\n left: number,\n background: Uint8Array,\n ) => { status: number; handle: ImageHandle | null }\n imageTransform: (image: ImageHandle, operation: number) => { status: number; handle: ImageHandle | null }\n imageComposite: (\n base: ImageHandle,\n overlay: ImageHandle,\n left: number,\n top: number,\n blend: number,\n opacity: number,\n ) => { status: number; handle: ImageHandle | null }\n\n getTerminalCapabilities: (renderer: RendererHandle) => TerminalCapabilities\n processCapabilityResponse: (renderer: RendererHandle, response: string) => void\n\n encodeUnicode: (\n text: string,\n widthMethod: WidthMethod,\n ) => { ptr: Pointer; data: Array<{ width: number; char: number }> } | null\n freeUnicode: (encoded: { ptr: Pointer; data: Array<{ width: number; char: number }> }) => void\n bufferDrawChar: (\n buffer: OptimizedBufferHandle,\n char: number,\n x: number,\n y: number,\n fg: RGBA,\n bg: RGBA,\n attributes?: number,\n ) => void\n\n registerNativeSpanFeedStream: (stream: Pointer, handler: NativeSpanFeedEventHandler) => void\n unregisterNativeSpanFeedStream: (stream: Pointer) => void\n createNativeSpanFeed: (options?: NativeSpanFeedOptions | null) => Pointer\n attachNativeSpanFeed: (stream: Pointer) => number\n destroyNativeSpanFeed: (stream: Pointer) => void\n streamWrite: (stream: Pointer, data: Uint8Array | string) => number\n streamCommit: (stream: Pointer) => number\n streamDrainSpans: (stream: Pointer, outBuffer: Uint8Array, maxSpans: number) => number\n streamClose: (stream: Pointer) => number\n streamSetOptions: (stream: Pointer, options: NativeSpanFeedOptions) => number\n streamGetStats: (stream: Pointer) => NativeSpanFeedStats | null\n streamReserve: (stream: Pointer, minLen: number) => { status: number; info: ReserveInfo | null }\n streamCommitReserved: (stream: Pointer, length: number) => number\n createNativeRenderable: () => NativeRenderableHandle\n destroyNativeRenderable: (handle: NativeRenderableHandle) => void\n nativeRenderableAttachYogaNode: (handle: NativeRenderableHandle, node: Pointer) => boolean\n nativeRenderableSetMeasureTarget: (\n handle: NativeRenderableHandle,\n kind: NativeMeasureTargetKind,\n target: NativeMeasureTargetHandle | 0,\n ) => boolean\n onNativeEvent: (name: string, handler: (data: ArrayBuffer) => void) => void\n onceNativeEvent: (name: string, handler: (data: ArrayBuffer) => void) => void\n offNativeEvent: (name: string, handler: (data: ArrayBuffer) => void) => void\n onAnyNativeEvent: (handler: (name: string, data: ArrayBuffer) => void) => void\n}\n\nclass FFIRenderLib implements RenderLib {\n private opentui: ReturnType<typeof getOpenTUILib>\n private iccCacheClient = false\n // Layout reads are synchronous and non-reentrant. Retain one backing buffer so\n // Node does not allocate and resolve a new output pointer for every node.\n private readonly yogaLayout = new Float32Array(6)\n private readonly yogaLayoutPtr = ptr(this.yogaLayout)\n private readonly ffiStructStorage = {\n logicalCursor: {\n ...allocStruct(LogicalCursorStruct),\n result: { row: 0, col: 0, offset: 0 } as LogicalCursor,\n },\n visualCursor: {\n ...allocStruct(VisualCursorStruct),\n result: {\n visualRow: 0,\n visualCol: 0,\n logicalRow: 0,\n logicalCol: 0,\n offset: 0,\n } as VisualCursor,\n },\n measureResult: {\n ...allocStruct(MeasureResultStruct),\n result: { lineCount: 0, widthColsMax: 0 } as MeasureResult,\n },\n audioStreamStats: {\n ...allocStruct(AudioStreamStatsStruct),\n result: {\n bytesReceived: 0n,\n framesDecoded: 0n,\n framesPlayed: 0n,\n state: 0,\n sampleRate: 0,\n channels: 0,\n bufferedFrames: 0,\n capacityFrames: 0,\n underruns: 0,\n errorCode: 0,\n readyGeneration: 0,\n } as NativeAudioStreamStats,\n },\n imageDrawOptions: allocStruct(ImageDrawOptionsStruct),\n gridDrawOptions: allocStruct(GridDrawOptionsStruct),\n }\n private disposed = false\n private clipboardServices = new Set<ClipboardServiceHandle>()\n public readonly encoder: TextEncoder = new TextEncoder()\n public readonly decoder: TextDecoder = new TextDecoder()\n private logCallbackWrapper: FFICallbackInstance | null = null\n private eventCallbackWrapper: FFICallbackInstance | null = null\n private eventSinkPtr: EventSinkHandle | null = null\n private _nativeEvents: EventEmitter = new EventEmitter()\n private _anyEventHandlers: Array<(name: string, data: ArrayBuffer) => void> = []\n private nativeSpanFeedCallbackWrapper: FFICallbackInstance | null = null\n private nativeSpanFeedHandlers = new Map<Pointer, NativeSpanFeedEventHandler>()\n\n public createNativeRenderable(): NativeRenderableHandle {\n const handle = this.opentui.symbols.createNativeRenderable() as NativeRenderableHandle\n if (!handle) throw new Error(\"Failed to create native renderable\")\n return handle\n }\n\n public destroyNativeRenderable(handle: NativeRenderableHandle): void {\n this.opentui.symbols.destroyNativeRenderable(handle)\n }\n\n public nativeRenderableAttachYogaNode(handle: NativeRenderableHandle, node: Pointer): boolean {\n // Node's FFI returns bools as 0/1 numbers; normalize so the interface stays truthful.\n return Boolean(this.opentui.symbols.nativeRenderableAttachYogaNode(handle, node))\n }\n\n public nativeRenderableSetMeasureTarget(\n handle: NativeRenderableHandle,\n kind: NativeMeasureTargetKind,\n target: NativeMeasureTargetHandle | 0,\n ): boolean {\n return Boolean(this.opentui.symbols.nativeRenderableSetMeasureTarget(handle, kind, target))\n }\n\n constructor(libPath?: string) {\n this.opentui = getOpenTUILib(libPath)\n this.imageRetainIccCache()\n this.iccCacheClient = true\n try {\n this.setupLogging()\n this.setupEventBus()\n } catch (error) {\n this.dispose()\n throw error\n }\n }\n\n private setupLogging() {\n if (this.logCallbackWrapper) {\n return\n }\n\n const logCallback = this.opentui.createCallback(\n (level: number, msgPtr: Pointer, msgLen: number) => {\n try {\n if (msgLen === 0 || !msgPtr) {\n return\n }\n\n const msgBuffer = toArrayBuffer(msgPtr, 0, msgLen)\n const msgBytes = new Uint8Array(msgBuffer)\n const message = this.decoder.decode(msgBytes)\n\n switch (level) {\n case LogLevel.Error:\n console.error(message)\n break\n case LogLevel.Warn:\n console.warn(message)\n break\n case LogLevel.Info:\n console.info(message)\n break\n case LogLevel.Debug:\n console.debug(message)\n break\n default:\n console.log(message)\n }\n } catch (error) {\n console.error(\"Error in Zig log callback:\", error)\n }\n },\n {\n args: [\"u8\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n )\n\n this.logCallbackWrapper = logCallback\n\n if (!logCallback.ptr) {\n throw new Error(\"Failed to create log callback\")\n }\n\n this.setLogCallback(logCallback.ptr)\n }\n\n private setLogCallback(callbackPtr: Pointer | null) {\n this.opentui.symbols.setLogCallback(callbackPtr)\n }\n\n public dispose(): void {\n if (this.disposed) return\n if (this.clipboardServices.size > 0) {\n throw new Error(\"Cannot dispose OpenTUI native library while clipboard services are active\")\n }\n this.disposed = true\n try {\n if (this.eventSinkPtr) {\n this.opentui.symbols.destroyEventSink(this.eventSinkPtr)\n this.eventSinkPtr = null\n }\n\n this.yogaSetMeasureCallback(null)\n this.yogaSetDirtiedCallback(null)\n this.setLogCallback(null)\n } finally {\n try {\n if (this.iccCacheClient) {\n this.iccCacheClient = false\n this.imageReleaseIccCache()\n }\n } finally {\n try {\n this.opentui.close()\n } finally {\n this.eventCallbackWrapper = null\n this.logCallbackWrapper = null\n this.nativeSpanFeedCallbackWrapper = null\n this.nativeSpanFeedHandlers.clear()\n }\n }\n }\n }\n\n private setupEventBus() {\n if (this.eventCallbackWrapper) {\n return\n }\n\n const eventCallback = this.opentui.createCallback(\n (namePtr: Pointer, nameLen: number, dataPtr: Pointer, dataLen: number) => {\n try {\n if (nameLen === 0 || !namePtr) {\n return\n }\n\n const eventName = this.decoder.decode(toArrayBuffer(namePtr, 0, nameLen))\n const eventData = dataLen > 0 && dataPtr ? toArrayBuffer(dataPtr, 0, dataLen).slice(0) : new ArrayBuffer(0)\n\n queueMicrotask(() => {\n this._nativeEvents.emit(eventName, eventData)\n\n for (const handler of this._anyEventHandlers) {\n handler(eventName, eventData)\n }\n })\n } catch (error) {\n console.error(\"Error in native event callback:\", error)\n }\n },\n {\n args: [\"ptr\", \"u32\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n )\n\n this.eventCallbackWrapper = eventCallback\n\n if (!eventCallback.ptr) {\n throw new Error(\"Failed to create event callback\")\n }\n\n this.eventSinkPtr = this.opentui.symbols.createEventSink(eventCallback.ptr)\n if (!this.eventSinkPtr) {\n eventCallback.close()\n this.eventCallbackWrapper = null\n throw new Error(\"Failed to create native event sink\")\n }\n }\n\n private ensureNativeSpanFeedCallback(): FFICallbackInstance {\n if (this.nativeSpanFeedCallbackWrapper) {\n return this.nativeSpanFeedCallbackWrapper\n }\n\n const callback = this.opentui.createCallback(\n (streamPtr: Pointer, eventId: number, arg0: Pointer, arg1: number | bigint) => {\n const handler = this.nativeSpanFeedHandlers.get(streamPtr)\n if (handler) {\n handler(eventId, arg0, arg1)\n }\n },\n {\n args: [\"ptr\", \"u32\", \"ptr\", \"u64\"],\n returns: \"void\",\n },\n )\n\n this.nativeSpanFeedCallbackWrapper = callback\n\n if (!callback.ptr) {\n throw new Error(\"Failed to create native span feed callback\")\n }\n\n return callback\n }\n\n public createRenderer(width: number, height: number, options: NativeRendererCreateOptions = {}) {\n const bufferedOutputKind = options.bufferedOutput === \"memory\" ? 1 : 0\n const remoteMode = options.remote === undefined ? 0 : options.remote ? 2 : 1\n // `feedPtr` is an internal wiring detail: non-null selects the feed backend\n // used for custom Writable output. When null, `bufferedOutput` selects the\n // buffered stdout or memory backend.\n const feedPtr = options.feedPtr ?? null\n const renderer = this.opentui.symbols.createRenderer(\n width,\n height,\n bufferedOutputKind,\n remoteMode,\n feedPtr,\n ) as RendererHandle\n return renderer ? renderer : null\n }\n\n public setTerminalEnvVar(renderer: Pointer, key: string, value: string): boolean {\n const keyBytes = this.encoder.encode(key)\n const valueBytes = this.encoder.encode(value)\n return this.opentui.symbols.setTerminalEnvVar(\n renderer,\n ptrOrNull(keyBytes),\n keyBytes.byteLength,\n ptrOrNull(valueBytes),\n valueBytes.byteLength,\n )\n }\n\n public destroyRenderer(renderer: Pointer): void {\n this.opentui.symbols.destroyRenderer(renderer)\n }\n\n public setUseThread(renderer: Pointer, useThread: boolean) {\n this.opentui.symbols.setUseThread(renderer, ffiBool(useThread))\n }\n\n public setClearOnShutdown(renderer: Pointer, clear: boolean) {\n this.opentui.symbols.setClearOnShutdown(renderer, ffiBool(clear))\n }\n\n public setBackgroundColor(renderer: Pointer, color: RGBA) {\n this.opentui.symbols.setBackgroundColor(renderer, rgbaPtr(color))\n }\n\n public setRenderOffset(renderer: Pointer, offset: number) {\n this.opentui.symbols.setRenderOffset(renderer, offset)\n }\n\n public resetSplitScrollback(renderer: Pointer, seedRows: number, pinnedRenderOffset: number): number {\n return this.opentui.symbols.resetSplitScrollback(renderer, seedRows, pinnedRenderOffset)\n }\n\n public syncSplitScrollback(renderer: Pointer, pinnedRenderOffset: number): number {\n return this.opentui.symbols.syncSplitScrollback(renderer, pinnedRenderOffset)\n }\n\n public getSplitOutputOffset(renderer: Pointer, surfaceOffset: number): number {\n return this.opentui.symbols.getSplitOutputOffset(renderer, surfaceOffset)\n }\n\n public setPendingSplitFooterTransition(\n renderer: Pointer,\n mode: number,\n sourceTopLine: number,\n sourceHeight: number,\n targetTopLine: number,\n targetHeight: number,\n scrollLines: number,\n ): void {\n this.opentui.symbols.setPendingSplitFooterTransition(\n renderer,\n mode,\n sourceTopLine,\n sourceHeight,\n targetTopLine,\n targetHeight,\n scrollLines,\n )\n }\n\n public clearPendingSplitFooterTransition(renderer: Pointer): void {\n this.opentui.symbols.clearPendingSplitFooterTransition(renderer)\n }\n\n public updateStats(renderer: Pointer, time: number, fps: number, frameCallbackTime: number) {\n this.opentui.symbols.updateStats(renderer, time, fps, frameCallbackTime)\n }\n\n public updateMemoryStats(renderer: Pointer, heapUsed: number, heapTotal: number, arrayBuffers: number) {\n this.opentui.symbols.updateMemoryStats(renderer, heapUsed, heapTotal, arrayBuffers)\n }\n\n public getRenderStats(renderer: Pointer): NativeRenderStats {\n const statsBuffer = new ArrayBuffer(NativeRenderStatsStruct.size)\n this.opentui.symbols.getRenderStats(renderer, ptr(statsBuffer))\n const stats = NativeRenderStatsStruct.unpack(statsBuffer)\n\n return {\n nativeLastFrameTime: stats.lastFrameTime,\n nativeAverageFrameTime: stats.averageFrameTime,\n nativeFrameCount: toNumber(stats.frameCount),\n cellsUpdated: stats.cellsUpdated,\n averageCellsUpdated: stats.averageCellsUpdated,\n nativeRenderTime: stats.renderTimeValid ? stats.renderTime : undefined,\n nativeStdoutWriteTime: stats.stdoutWriteTimeValid ? stats.stdoutWriteTime : undefined,\n }\n }\n\n public getNextBuffer(renderer: Pointer): OptimizedBuffer {\n const bufferPtr = this.opentui.symbols.getNextBuffer(renderer)\n if (!bufferPtr) {\n throw new Error(\"Failed to get next buffer\")\n }\n\n const width = this.opentui.symbols.getBufferWidth(bufferPtr)\n const height = this.opentui.symbols.getBufferHeight(bufferPtr)\n\n return new OptimizedBuffer(this, bufferPtr, width, height, { id: \"next buffer\", widthMethod: \"unicode\" })\n }\n\n public getCurrentBuffer(renderer: Pointer): OptimizedBuffer {\n const bufferPtr = this.opentui.symbols.getCurrentBuffer(renderer)\n if (!bufferPtr) {\n throw new Error(\"Failed to get current buffer\")\n }\n\n const width = this.opentui.symbols.getBufferWidth(bufferPtr)\n const height = this.opentui.symbols.getBufferHeight(bufferPtr)\n\n return new OptimizedBuffer(this, bufferPtr, width, height, { id: \"current buffer\", widthMethod: \"unicode\" })\n }\n\n public rendererSetPaletteState(\n renderer: Pointer,\n palette: readonly RGBA[],\n defaultForeground: RGBA,\n defaultBackground: RGBA,\n paletteEpoch: number,\n ): void {\n const paletteBuffer = new Uint16Array(palette.length * 4)\n\n for (let index = 0; index < palette.length; index++) {\n paletteBuffer.set(palette[index].buffer, index * 4)\n }\n\n this.opentui.symbols.rendererSetPaletteState(\n renderer,\n ptr(paletteBuffer),\n palette.length,\n rgbaPtr(defaultForeground),\n rgbaPtr(defaultBackground),\n paletteEpoch >>> 0,\n )\n }\n\n public bufferGetCharPtr(buffer: Pointer): Pointer {\n const ptr = this.opentui.symbols.bufferGetCharPtr(buffer)\n if (!ptr) {\n throw new Error(\"Failed to get char pointer\")\n }\n return ptr\n }\n\n public bufferGetFgPtr(buffer: Pointer): Pointer {\n const ptr = this.opentui.symbols.bufferGetFgPtr(buffer)\n if (!ptr) {\n throw new Error(\"Failed to get fg pointer\")\n }\n return ptr\n }\n\n public bufferGetBgPtr(buffer: Pointer): Pointer {\n const ptr = this.opentui.symbols.bufferGetBgPtr(buffer)\n if (!ptr) {\n throw new Error(\"Failed to get bg pointer\")\n }\n return ptr\n }\n\n public bufferGetAttributesPtr(buffer: Pointer): Pointer {\n const ptr = this.opentui.symbols.bufferGetAttributesPtr(buffer)\n if (!ptr) {\n throw new Error(\"Failed to get attributes pointer\")\n }\n return ptr\n }\n\n public bufferGetRespectAlpha(buffer: Pointer): boolean {\n return this.opentui.symbols.bufferGetRespectAlpha(buffer)\n }\n\n public bufferSetRespectAlpha(buffer: Pointer, respectAlpha: boolean): void {\n this.opentui.symbols.bufferSetRespectAlpha(buffer, ffiBool(respectAlpha))\n }\n\n public bufferGetId(buffer: Pointer): string {\n const maxLen = 256\n const outBuffer = new Uint8Array(maxLen)\n const actualLen = this.opentui.symbols.bufferGetId(buffer, ptr(outBuffer), maxLen)\n return this.decoder.decode(outBuffer.slice(0, actualLen))\n }\n\n public bufferGetRealCharSize(buffer: Pointer): number {\n return this.opentui.symbols.bufferGetRealCharSize(buffer)\n }\n\n public bufferWriteResolvedChars(buffer: Pointer, outputBuffer: Uint8Array, addLineBreaks: boolean): number {\n return this.opentui.symbols.bufferWriteResolvedChars(\n buffer,\n ptrOrNull(outputBuffer),\n outputBuffer.byteLength,\n ffiBool(addLineBreaks),\n )\n }\n\n public getBufferWidth(buffer: Pointer): number {\n return this.opentui.symbols.getBufferWidth(buffer)\n }\n\n public getBufferHeight(buffer: Pointer): number {\n return this.opentui.symbols.getBufferHeight(buffer)\n }\n\n public bufferClear(buffer: Pointer, color: RGBA) {\n this.opentui.symbols.bufferClear(buffer, rgbaPtr(color))\n }\n\n public bufferDrawText(\n buffer: Pointer,\n text: string,\n x: number,\n y: number,\n color: RGBA,\n bgColor?: RGBA,\n attributes?: number,\n ) {\n const textBytes = this.encoder.encode(text)\n const bg = optionalRgbaPtr(bgColor)\n const fg = rgbaPtr(color)\n\n this.opentui.symbols.bufferDrawText(\n buffer,\n ptrOrNull(textBytes),\n textBytes.byteLength,\n x,\n y,\n fg,\n bg,\n attributes ?? 0,\n )\n }\n\n public bufferSetCellWithAlphaBlending(\n buffer: Pointer,\n x: number,\n y: number,\n char: string,\n color: RGBA,\n bgColor: RGBA,\n attributes?: number,\n ) {\n const charPtr = char.codePointAt(0) ?? \" \".codePointAt(0)!\n const bg = rgbaPtr(bgColor)\n const fg = rgbaPtr(color)\n\n this.opentui.symbols.bufferSetCellWithAlphaBlending(buffer, x, y, charPtr, fg, bg, attributes ?? 0)\n }\n\n public bufferSetCell(\n buffer: Pointer,\n x: number,\n y: number,\n char: string,\n color: RGBA,\n bgColor: RGBA,\n attributes?: number,\n ) {\n const charPtr = char.codePointAt(0) ?? \" \".codePointAt(0)!\n const bg = rgbaPtr(bgColor)\n const fg = rgbaPtr(color)\n\n this.opentui.symbols.bufferSetCell(buffer, x, y, charPtr, fg, bg, attributes ?? 0)\n }\n\n public bufferFillRect(buffer: Pointer, x: number, y: number, width: number, height: number, color: RGBA) {\n const bg = rgbaPtr(color)\n this.opentui.symbols.bufferFillRect(buffer, x, y, width, height, bg)\n }\n\n public bufferColorMatrix(\n buffer: Pointer,\n matrixPtr: Pointer,\n cellMaskPtr: Pointer,\n cellMaskCount: number,\n strength: number,\n target: TargetChannel,\n ): void {\n this.opentui.symbols.bufferColorMatrix(buffer, matrixPtr, cellMaskPtr, cellMaskCount, strength, target)\n }\n\n public bufferColorMatrixUniform(buffer: Pointer, matrixPtr: Pointer, strength: number, target: TargetChannel): void {\n this.opentui.symbols.bufferColorMatrixUniform(buffer, matrixPtr, strength, target)\n }\n\n public bufferDrawSuperSampleBuffer(\n buffer: Pointer,\n x: number,\n y: number,\n pixelDataPtr: Pointer,\n pixelDataLength: number,\n format: \"bgra8unorm\" | \"rgba8unorm\",\n alignedBytesPerRow: number,\n ): void {\n const formatId = format === \"bgra8unorm\" ? 0 : 1\n this.opentui.symbols.bufferDrawSuperSampleBuffer(\n buffer,\n x,\n y,\n pixelDataPtr,\n pixelDataLength,\n formatId,\n alignedBytesPerRow,\n )\n }\n\n public bufferDrawImage(\n buffer: OptimizedBufferHandle,\n image: ImageHandle,\n x: number,\n y: number,\n width: number,\n height: number,\n pixelWidth: number,\n pixelHeight: number,\n sourceX: number,\n sourceY: number,\n sourceWidth: number,\n sourceHeight: number,\n protocol: ImageRenderProtocol,\n ): boolean {\n const protocolId = { auto: 0, kitty: 1, sixel: 2, blocks: 3 }[protocol]\n const storage = this.ffiStructStorage.imageDrawOptions\n ImageDrawOptionsStruct.packInto(\n {\n x,\n y,\n width,\n height,\n pixelWidth,\n pixelHeight,\n sourceX,\n sourceY,\n sourceWidth,\n sourceHeight,\n protocol: protocolId,\n },\n storage.view,\n 0,\n )\n return Boolean(this.opentui.symbols.bufferDrawImage(buffer, image, storage.buffer))\n }\n\n public bufferDrawPackedBuffer(\n buffer: Pointer,\n dataPtr: Pointer,\n dataLen: number,\n posX: number,\n posY: number,\n terminalWidthCells: number,\n terminalHeightCells: number,\n ): void {\n this.opentui.symbols.bufferDrawPackedBuffer(\n buffer,\n dataPtr,\n dataLen,\n posX,\n posY,\n terminalWidthCells,\n terminalHeightCells,\n )\n }\n\n public bufferDrawGrayscaleBuffer(\n buffer: Pointer,\n posX: number,\n posY: number,\n intensitiesPtr: Pointer,\n srcWidth: number,\n srcHeight: number,\n fg: RGBA | null,\n bg: RGBA | null,\n ): void {\n this.opentui.symbols.bufferDrawGrayscaleBuffer(\n buffer,\n posX,\n posY,\n intensitiesPtr,\n srcWidth,\n srcHeight,\n optionalRgbaPtr(fg),\n optionalRgbaPtr(bg),\n )\n }\n\n public bufferDrawGrayscaleBufferSupersampled(\n buffer: Pointer,\n posX: number,\n posY: number,\n intensitiesPtr: Pointer,\n srcWidth: number,\n srcHeight: number,\n fg: RGBA | null,\n bg: RGBA | null,\n ): void {\n this.opentui.symbols.bufferDrawGrayscaleBufferSupersampled(\n buffer,\n posX,\n posY,\n intensitiesPtr,\n srcWidth,\n srcHeight,\n optionalRgbaPtr(fg),\n optionalRgbaPtr(bg),\n )\n }\n\n public bufferDrawGrid(\n buffer: Pointer,\n borderChars: Uint32Array,\n borderFg: RGBA,\n borderBg: RGBA,\n columnOffsets: Int32Array,\n columnCount: number,\n rowOffsets: Int32Array,\n rowCount: number,\n options: { drawInner: boolean; drawOuter: boolean },\n ): void {\n GridDrawOptionsStruct.packInto(\n { drawInner: options.drawInner, drawOuter: options.drawOuter },\n this.ffiStructStorage.gridDrawOptions.view,\n 0,\n )\n\n this.opentui.symbols.bufferDrawGrid(\n buffer,\n ptr(borderChars),\n rgbaPtr(borderFg),\n rgbaPtr(borderBg),\n ptr(columnOffsets),\n columnCount,\n ptr(rowOffsets),\n rowCount,\n this.ffiStructStorage.gridDrawOptions.buffer,\n )\n }\n\n public bufferDrawBox(\n buffer: Pointer,\n x: number,\n y: number,\n width: number,\n height: number,\n borderChars: Uint32Array,\n packedOptions: number,\n borderColor: RGBA,\n backgroundColor: RGBA,\n titleColor: RGBA,\n title: string | null,\n bottomTitle: string | null,\n ): void {\n const titleBytes = title ? this.encoder.encode(title) : null\n const titleLen = titleBytes?.byteLength ?? 0\n const titlePtr = titleBytes ? ptr(titleBytes) : null\n\n const bottomTitleBytes = bottomTitle ? this.encoder.encode(bottomTitle) : null\n const bottomTitleLen = bottomTitleBytes?.byteLength ?? 0\n const bottomTitlePtr = bottomTitleBytes ? ptr(bottomTitleBytes) : null\n\n this.opentui.symbols.bufferDrawBox(\n buffer,\n x,\n y,\n width,\n height,\n ptr(borderChars),\n packedOptions,\n rgbaPtr(borderColor),\n rgbaPtr(backgroundColor),\n rgbaPtr(titleColor),\n titlePtr,\n titleLen,\n bottomTitlePtr,\n bottomTitleLen,\n )\n }\n\n public bufferResize(buffer: Pointer, width: number, height: number): void {\n this.opentui.symbols.bufferResize(buffer, width, height)\n }\n\n // Link API\n public linkAlloc(url: string): number {\n const urlBytes = this.encoder.encode(url)\n return this.opentui.symbols.linkAlloc(ptrOrNull(urlBytes), urlBytes.byteLength)\n }\n\n public linkGetUrl(linkId: number, maxLen: number = 512): string {\n const outBuffer = new Uint8Array(maxLen)\n const actualLen = this.opentui.symbols.linkGetUrl(linkId, ptrOrNull(outBuffer), maxLen)\n return this.decoder.decode(outBuffer.slice(0, actualLen))\n }\n\n public attributesWithLink(baseAttributes: number, linkId: number): number {\n return this.opentui.symbols.attributesWithLink(baseAttributes, linkId)\n }\n\n public attributesGetLinkId(attributes: number): number {\n return this.opentui.symbols.attributesGetLinkId(attributes)\n }\n\n public resizeRenderer(renderer: Pointer, width: number, height: number) {\n this.opentui.symbols.resizeRenderer(renderer, width, height)\n }\n\n public setCursorPosition(renderer: Pointer, x: number, y: number, visible: boolean) {\n this.opentui.symbols.setCursorPosition(renderer, x, y, ffiBool(visible))\n }\n\n public setCursorColor(renderer: Pointer, color: RGBA) {\n this.opentui.symbols.setCursorColor(renderer, rgbaPtr(color))\n }\n\n public getCursorState(renderer: Pointer): CursorState {\n const cursorBuffer = new ArrayBuffer(CursorStateStruct.size)\n this.opentui.symbols.getCursorState(renderer, ptr(cursorBuffer))\n const struct = CursorStateStruct.unpack(cursorBuffer)\n\n return {\n x: struct.x,\n y: struct.y,\n visible: struct.visible,\n style: CURSOR_ID_TO_STYLE[struct.style] ?? \"block\",\n blinking: struct.blinking,\n color: RGBA.fromValues(struct.r, struct.g, struct.b, struct.a),\n }\n }\n\n public setCursorStyleOptions(renderer: Pointer, options: CursorStyleOptions): void {\n const style = options.style != null ? CURSOR_STYLE_TO_ID[options.style] : 255\n const blinking = options.blinking != null ? (options.blinking ? 1 : 0) : 255\n const cursor = options.cursor != null ? MOUSE_STYLE_TO_ID[options.cursor] : 255\n\n const buffer = CursorStyleOptionsStruct.pack({ style, blinking, color: options.color, cursor })\n this.opentui.symbols.setCursorStyleOptions(renderer, buffer)\n }\n\n public render(renderer: Pointer, force: boolean): number {\n return this.opentui.symbols.render(renderer, ffiBool(force))\n }\n\n private unpackRenderOperationResult(value: number | bigint): NativeRenderOperationResult {\n const packed = typeof value === \"bigint\" ? value : BigInt(value)\n return {\n renderOffset: Number(packed & 0xffffffffn),\n status: Number((packed >> 32n) & 0xffn),\n }\n }\n\n public repaintSplitFooter(\n renderer: Pointer,\n pinnedRenderOffset: number,\n force: boolean,\n ): NativeRenderOperationResult {\n return this.unpackRenderOperationResult(\n this.opentui.symbols.repaintSplitFooter(renderer, pinnedRenderOffset, ffiBool(force)),\n )\n }\n\n public commitSplitFooterSnapshot(\n renderer: Pointer,\n snapshot: OptimizedBuffer,\n rowColumns: number,\n startOnNewLine: boolean,\n trailingNewline: boolean,\n pinnedRenderOffset: number,\n force: boolean,\n beginFrame: boolean = true,\n finalizeFrame: boolean = true,\n ): NativeRenderOperationResult {\n return this.unpackRenderOperationResult(\n this.opentui.symbols.commitSplitFooterSnapshot(\n renderer,\n snapshot.ptr,\n rowColumns,\n ffiBool(startOnNewLine),\n ffiBool(trailingNewline),\n pinnedRenderOffset,\n ffiBool(force),\n ffiBool(beginFrame),\n ffiBool(finalizeFrame),\n ),\n )\n }\n\n public createOptimizedBuffer(\n width: number,\n height: number,\n widthMethod: WidthMethod,\n respectAlpha: boolean = false,\n id?: string,\n ): OptimizedBuffer {\n if (Number.isNaN(width) || Number.isNaN(height)) {\n console.error(new Error(`Invalid dimensions for OptimizedBuffer: ${width}x${height}`).stack)\n }\n\n const widthMethodCode = widthMethod === \"wcwidth\" ? 0 : 1\n const idToUse = id || \"unnamed buffer\"\n const idBytes = this.encoder.encode(idToUse)\n const bufferPtr = this.opentui.symbols.createOptimizedBuffer(\n width,\n height,\n ffiBool(respectAlpha),\n widthMethodCode,\n ptr(idBytes),\n idBytes.byteLength,\n )\n if (!bufferPtr) {\n throw new Error(`Failed to create optimized buffer: ${width}x${height}`)\n }\n\n return new OptimizedBuffer(this, bufferPtr, width, height, { respectAlpha, id, widthMethod })\n }\n\n public destroyOptimizedBuffer(bufferPtr: Pointer) {\n this.opentui.symbols.destroyOptimizedBuffer(bufferPtr)\n }\n\n public drawFrameBuffer(\n targetBufferPtr: Pointer,\n destX: number,\n destY: number,\n bufferPtr: Pointer,\n sourceX?: number,\n sourceY?: number,\n sourceWidth?: number,\n sourceHeight?: number,\n ) {\n const srcX = sourceX ?? 0\n const srcY = sourceY ?? 0\n const srcWidth = sourceWidth ?? 0\n const srcHeight = sourceHeight ?? 0\n this.opentui.symbols.drawFrameBuffer(targetBufferPtr, destX, destY, bufferPtr, srcX, srcY, srcWidth, srcHeight)\n }\n\n public setDebugOverlay(renderer: Pointer, enabled: boolean, corner: DebugOverlayCorner) {\n this.opentui.symbols.setDebugOverlay(renderer, ffiBool(enabled), corner)\n }\n\n public clearTerminal(renderer: Pointer) {\n this.opentui.symbols.clearTerminal(renderer)\n }\n\n public setTerminalTitle(renderer: Pointer, title: string) {\n const titleBytes = this.encoder.encode(title)\n this.opentui.symbols.setTerminalTitle(renderer, ptrOrNull(titleBytes), titleBytes.byteLength)\n }\n\n public copyToClipboardOSC52(renderer: Pointer, target: number, textUtf8: Uint8Array): boolean {\n if (textUtf8.byteLength > 0xffffffff) return false\n return Boolean(\n this.opentui.symbols.copyToClipboardOSC52(renderer, target, ptrOrNull(textUtf8), textUtf8.byteLength),\n )\n }\n\n public clearClipboardOSC52(renderer: Pointer, target: number): boolean {\n return Boolean(this.opentui.symbols.clearClipboardOSC52(renderer, target))\n }\n\n public clipboardServiceCreate(\n maxConcurrentOperations: number,\n maxProviderTransfers: number,\n waylandSeat?: string,\n ): ClipboardServiceHandle | null {\n const seat = waylandSeat === undefined ? null : this.encoder.encode(waylandSeat)\n const handle = this.opentui.symbols.clipboardServiceCreate(\n toSafeFFIU32Length(maxConcurrentOperations, \"clipboard operation limit\"),\n toSafeFFIU32Length(maxProviderTransfers, \"clipboard provider transfer limit\"),\n seat,\n seat?.byteLength ?? 0,\n )\n if (handle === 0) return null\n const service = handle as ClipboardServiceHandle\n this.clipboardServices.add(service)\n return service\n }\n\n public clipboardServiceBeginShutdown(service: ClipboardServiceHandle): NativeClipboardShutdownStatus {\n if (!this.clipboardServices.has(service)) return NativeClipboardShutdownStatus.InvalidHandle\n return this.opentui.symbols.clipboardServiceBeginShutdown(service)\n }\n\n public clipboardServicePollShutdown(service: ClipboardServiceHandle): NativeClipboardShutdownStatus {\n if (!this.clipboardServices.has(service)) return NativeClipboardShutdownStatus.InvalidHandle\n return this.opentui.symbols.clipboardServicePollShutdown(service)\n }\n\n public clipboardServiceDestroy(service: ClipboardServiceHandle): NativeClipboardDestroyStatus {\n if (!this.clipboardServices.has(service)) return NativeClipboardDestroyStatus.InvalidHandle\n const status = this.opentui.symbols.clipboardServiceDestroy(service)\n if (status === NativeClipboardDestroyStatus.Destroyed) this.clipboardServices.delete(service)\n return status\n }\n\n public clipboardServiceDrain(service: ClipboardServiceHandle): number {\n if (!this.clipboardServices.has(service)) return 2\n return this.opentui.symbols.clipboardServiceDrain(service)\n }\n\n private clipboardStartResult(\n status: NativeClipboardStartStatus,\n output: Uint32Array,\n ): { status: NativeClipboardStartStatus; operation: ClipboardOperationHandle | null } {\n return {\n status,\n operation: output[0] === 0 ? null : (output[0] as ClipboardOperationHandle),\n }\n }\n\n public clipboardReadOperationStart(\n service: ClipboardServiceHandle,\n request: Uint8Array,\n selection: number,\n maxBytes: number,\n maxImagePixels: number,\n maxConversionBytes: number,\n timeoutMs: number,\n ): { status: NativeClipboardStartStatus; operation: ClipboardOperationHandle | null } {\n const output = new Uint32Array(1)\n const status = this.opentui.symbols.clipboardReadOperationStart(\n service,\n request,\n toSafeFFIU32Length(request.byteLength, \"clipboard read request\"),\n selection,\n toSafeFFIU32Length(maxBytes, \"clipboard read byte limit\"),\n toSafeFFIU32Length(maxImagePixels, \"clipboard image pixel limit\"),\n toSafeFFIU32Length(maxConversionBytes, \"clipboard conversion byte limit\"),\n toSafeFFIU32Length(timeoutMs, \"clipboard read timeout\"),\n output,\n )\n return this.clipboardStartResult(status, output)\n }\n\n public clipboardWriteOperationStart(\n service: ClipboardServiceHandle,\n textUtf8: Uint8Array,\n selection: number,\n timeoutMs: number,\n ): { status: NativeClipboardStartStatus; operation: ClipboardOperationHandle | null } {\n const output = new Uint32Array(1)\n const status = this.opentui.symbols.clipboardWriteOperationStart(\n service,\n textUtf8,\n toSafeFFIU32Length(textUtf8.byteLength, \"clipboard write text\"),\n selection,\n toSafeFFIU32Length(timeoutMs, \"clipboard write timeout\"),\n output,\n )\n return this.clipboardStartResult(status, output)\n }\n\n public clipboardClearOperationStart(\n service: ClipboardServiceHandle,\n selection: number,\n timeoutMs: number,\n ): { status: NativeClipboardStartStatus; operation: ClipboardOperationHandle | null } {\n const output = new Uint32Array(1)\n const status = this.opentui.symbols.clipboardClearOperationStart(\n service,\n selection,\n toSafeFFIU32Length(timeoutMs, \"clipboard clear timeout\"),\n output,\n )\n return this.clipboardStartResult(status, output)\n }\n\n public clipboardOperationPoll(operation: ClipboardOperationHandle): NativeClipboardOperationStatus {\n return this.opentui.symbols.clipboardOperationPoll(operation)\n }\n\n public clipboardOperationCancel(operation: ClipboardOperationHandle): NativeClipboardCancelStatus {\n return this.opentui.symbols.clipboardOperationCancel(operation)\n }\n\n private clipboardResultLength(\n symbol: (operation: ClipboardOperationHandle, output: Uint32Array) => number,\n operation: ClipboardOperationHandle,\n ): { status: NativeClipboardCopyStatus; length: number } {\n const output = new Uint32Array(1)\n const status = symbol(operation, output)\n return { status, length: output[0] }\n }\n\n public clipboardOperationResultMimeLength(operation: ClipboardOperationHandle): {\n status: NativeClipboardCopyStatus\n length: number\n } {\n return this.clipboardResultLength(this.opentui.symbols.clipboardOperationResultMimeLength, operation)\n }\n\n public clipboardOperationResultMimeCopy(\n operation: ClipboardOperationHandle,\n output: Uint8Array,\n ): NativeClipboardCopyStatus {\n return this.opentui.symbols.clipboardOperationResultMimeCopy(\n operation,\n output.byteLength === 0 ? null : output,\n toSafeFFIU32Length(output.byteLength, \"clipboard MIME output\"),\n )\n }\n\n public clipboardOperationResultDataLength(operation: ClipboardOperationHandle): {\n status: NativeClipboardCopyStatus\n length: number\n } {\n return this.clipboardResultLength(this.opentui.symbols.clipboardOperationResultDataLength, operation)\n }\n\n public clipboardOperationResultDataCopy(\n operation: ClipboardOperationHandle,\n output: Uint8Array,\n ): NativeClipboardCopyStatus {\n return this.opentui.symbols.clipboardOperationResultDataCopy(\n operation,\n output.byteLength === 0 ? null : output,\n toSafeFFIU32Length(output.byteLength, \"clipboard data output\"),\n )\n }\n\n public clipboardOperationResultErrorCode(operation: ClipboardOperationHandle): {\n status: NativeClipboardCopyStatus\n errorCode: number\n } {\n const output = new Uint32Array(1)\n const status = this.opentui.symbols.clipboardOperationResultErrorCode(operation, output)\n return { status, errorCode: output[0] }\n }\n\n public clipboardOperationResultDiagnosticLength(operation: ClipboardOperationHandle): {\n status: NativeClipboardCopyStatus\n length: number\n } {\n return this.clipboardResultLength(this.opentui.symbols.clipboardOperationResultDiagnosticLength, operation)\n }\n\n public clipboardOperationResultDiagnosticCopy(\n operation: ClipboardOperationHandle,\n output: Uint8Array,\n ): NativeClipboardCopyStatus {\n return this.opentui.symbols.clipboardOperationResultDiagnosticCopy(\n operation,\n output.byteLength === 0 ? null : output,\n toSafeFFIU32Length(output.byteLength, \"clipboard diagnostic output\"),\n )\n }\n\n public clipboardOperationDestroy(operation: ClipboardOperationHandle): NativeClipboardDestroyStatus {\n return this.opentui.symbols.clipboardOperationDestroy(operation)\n }\n\n public triggerNotification(renderer: Pointer, message: string, title?: string): boolean {\n const messageBytes = this.encoder.encode(message)\n const titleBytes = title === undefined ? null : this.encoder.encode(title)\n return Boolean(\n this.opentui.symbols.triggerNotification(\n renderer,\n messageBytes,\n messageBytes.length,\n titleBytes,\n titleBytes?.length ?? 0,\n ),\n )\n }\n\n public addToHitGrid(renderer: Pointer, x: number, y: number, width: number, height: number, id: number) {\n this.opentui.symbols.addToHitGrid(renderer, x, y, width, height, id)\n }\n\n public clearCurrentHitGrid(renderer: Pointer) {\n this.opentui.symbols.clearCurrentHitGrid(renderer)\n }\n\n public hitGridPushScissorRect(renderer: Pointer, x: number, y: number, width: number, height: number) {\n this.opentui.symbols.hitGridPushScissorRect(renderer, x, y, width, height)\n }\n\n public hitGridPopScissorRect(renderer: Pointer) {\n this.opentui.symbols.hitGridPopScissorRect(renderer)\n }\n\n public hitGridClearScissorRects(renderer: Pointer) {\n this.opentui.symbols.hitGridClearScissorRects(renderer)\n }\n\n public addToCurrentHitGridClipped(\n renderer: Pointer,\n x: number,\n y: number,\n width: number,\n height: number,\n id: number,\n ) {\n this.opentui.symbols.addToCurrentHitGridClipped(renderer, x, y, width, height, id)\n }\n\n public checkHit(renderer: Pointer, x: number, y: number): number {\n return this.opentui.symbols.checkHit(renderer, x, y)\n }\n\n public getHitGridDirty(renderer: Pointer): boolean {\n return this.opentui.symbols.getHitGridDirty(renderer)\n }\n\n public dumpHitGrid(renderer: Pointer): void {\n this.opentui.symbols.dumpHitGrid(renderer)\n }\n\n public dumpBuffers(renderer: Pointer, timestamp?: number): void {\n const ts = BigInt(timestamp ?? Date.now())\n this.opentui.symbols.dumpBuffers(renderer, ts)\n }\n\n public dumpOutputBuffer(renderer: Pointer, timestamp?: number): void {\n const ts = BigInt(timestamp ?? Date.now())\n this.opentui.symbols.dumpOutputBuffer(renderer, ts)\n }\n\n public restoreTerminalModes(renderer: Pointer): void {\n this.opentui.symbols.restoreTerminalModes(renderer)\n }\n\n public enableMouse(renderer: Pointer, enableMovement: boolean): void {\n this.opentui.symbols.enableMouse(renderer, ffiBool(enableMovement))\n }\n\n public disableMouse(renderer: Pointer): void {\n this.opentui.symbols.disableMouse(renderer)\n }\n\n public enableKittyKeyboard(renderer: Pointer, flags: number): void {\n this.opentui.symbols.enableKittyKeyboard(renderer, flags)\n }\n\n public disableKittyKeyboard(renderer: Pointer): void {\n this.opentui.symbols.disableKittyKeyboard(renderer)\n }\n\n public setKittyKeyboardFlags(renderer: Pointer, flags: number): void {\n this.opentui.symbols.setKittyKeyboardFlags(renderer, flags)\n }\n\n public getKittyKeyboardFlags(renderer: Pointer): number {\n return this.opentui.symbols.getKittyKeyboardFlags(renderer)\n }\n\n public setupTerminal(renderer: Pointer, useAlternateScreen: boolean): void {\n this.opentui.symbols.setupTerminal(renderer, ffiBool(useAlternateScreen))\n }\n\n public suspendRenderer(renderer: Pointer): void {\n this.opentui.symbols.suspendRenderer(renderer)\n }\n\n public resumeRenderer(renderer: Pointer): void {\n this.opentui.symbols.resumeRenderer(renderer)\n }\n\n public queryPixelResolution(renderer: Pointer): void {\n this.opentui.symbols.queryPixelResolution(renderer)\n }\n\n public queryThemeColors(renderer: Pointer): void {\n this.opentui.symbols.queryThemeColors(renderer)\n }\n\n /**\n * Write data to stdout, synchronizing with the render thread if necessary.\n * This should be used for ALL stdout writes to avoid race conditions when\n * the render thread is active.\n */\n public writeOut(renderer: Pointer, data: string | Uint8Array): void {\n const bytes = typeof data === \"string\" ? new TextEncoder().encode(data) : data\n if (bytes.length === 0) return\n this.opentui.symbols.writeOut(renderer, ptrOrNull(bytes), bytes.byteLength)\n }\n\n public yogaConfigCreate(): Pointer {\n const config = this.opentui.symbols.yogaConfigCreate()\n if (!config) throw new Error(\"Failed to create Yoga config\")\n return config\n }\n\n public yogaConfigFree(config: Pointer): void {\n this.opentui.symbols.yogaConfigFree(config)\n }\n\n public yogaConfigSetUseWebDefaults(config: Pointer, enabled: boolean): void {\n this.opentui.symbols.yogaConfigSetUseWebDefaults(config, ffiBool(enabled))\n }\n\n public yogaConfigGetUseWebDefaults(config: Pointer): boolean {\n return this.opentui.symbols.yogaConfigGetUseWebDefaults(config)\n }\n\n public yogaConfigSetPointScaleFactor(config: Pointer, pointScaleFactor: number): void {\n this.opentui.symbols.yogaConfigSetPointScaleFactor(config, pointScaleFactor)\n }\n\n public yogaConfigGetPointScaleFactor(config: Pointer): number {\n return this.opentui.symbols.yogaConfigGetPointScaleFactor(config)\n }\n\n public yogaConfigSetErrata(config: Pointer, errata: number): void {\n this.opentui.symbols.yogaConfigSetErrata(config, errata)\n }\n\n public yogaConfigGetErrata(config: Pointer): number {\n return this.opentui.symbols.yogaConfigGetErrata(config)\n }\n\n public yogaConfigSetExperimentalFeatureEnabled(config: Pointer, feature: number, enabled: boolean): void {\n this.opentui.symbols.yogaConfigSetExperimentalFeatureEnabled(config, feature, ffiBool(enabled))\n }\n\n public yogaConfigIsExperimentalFeatureEnabled(config: Pointer, feature: number): boolean {\n return this.opentui.symbols.yogaConfigIsExperimentalFeatureEnabled(config, feature)\n }\n\n public yogaNodeCreate(): Pointer {\n const node = this.opentui.symbols.yogaNodeCreate()\n if (!node) throw new Error(\"Failed to create Yoga node\")\n return node\n }\n\n public yogaNodeCreateForOpenTUI(): Pointer {\n const node = this.opentui.symbols.yogaNodeCreateForOpenTUI()\n if (!node) throw new Error(\"Failed to create OpenTUI Yoga node\")\n return node\n }\n\n public yogaNodeCreateWithConfig(config: Pointer): Pointer {\n const node = this.opentui.symbols.yogaNodeCreateWithConfig(config)\n if (!node) throw new Error(\"Failed to create Yoga node\")\n return node\n }\n\n public yogaNodeFree(node: Pointer): void {\n this.opentui.symbols.yogaNodeFree(node)\n }\n\n public yogaNodeFreeRecursive(node: Pointer): void {\n this.opentui.symbols.yogaNodeFreeRecursive(node)\n }\n\n public yogaNodeReset(node: Pointer): void {\n this.opentui.symbols.yogaNodeReset(node)\n }\n\n public yogaNodeCopyStyle(dstNode: Pointer, srcNode: Pointer): void {\n this.opentui.symbols.yogaNodeCopyStyle(dstNode, srcNode)\n }\n\n public yogaNodeInsertChild(node: Pointer, child: Pointer, index: number): void {\n this.opentui.symbols.yogaNodeInsertChild(node, child, index)\n }\n\n public yogaNodeRemoveChild(node: Pointer, child: Pointer): void {\n this.opentui.symbols.yogaNodeRemoveChild(node, child)\n }\n\n public yogaNodeRemoveAllChildren(node: Pointer): void {\n this.opentui.symbols.yogaNodeRemoveAllChildren(node)\n }\n\n public yogaNodeGetChild(node: Pointer, index: number): Pointer | null {\n return this.opentui.symbols.yogaNodeGetChild(node, index) || null\n }\n\n public yogaNodeGetChildCount(node: Pointer): number {\n return this.opentui.symbols.yogaNodeGetChildCount(node)\n }\n\n public yogaNodeGetParent(node: Pointer): Pointer | null {\n return this.opentui.symbols.yogaNodeGetParent(node) || null\n }\n\n public yogaNodeCalculateLayout(node: Pointer, width: number, height: number, direction: number): void {\n this.opentui.symbols.yogaNodeCalculateLayout(node, width, height, direction)\n }\n\n public yogaNodeIsDirty(node: Pointer): boolean {\n return this.opentui.symbols.yogaNodeIsDirty(node)\n }\n\n public yogaNodeMarkDirty(node: Pointer): void {\n this.opentui.symbols.yogaNodeMarkDirty(node)\n }\n\n public yogaNodeGetHasNewLayout(node: Pointer): boolean {\n return this.opentui.symbols.yogaNodeGetHasNewLayout(node)\n }\n\n public yogaNodeSetHasNewLayout(node: Pointer, hasNewLayout: boolean): void {\n this.opentui.symbols.yogaNodeSetHasNewLayout(node, ffiBool(hasNewLayout))\n }\n\n public yogaNodeSetIsReferenceBaseline(node: Pointer, isReferenceBaseline: boolean): void {\n this.opentui.symbols.yogaNodeSetIsReferenceBaseline(node, ffiBool(isReferenceBaseline))\n }\n\n public yogaNodeIsReferenceBaseline(node: Pointer): boolean {\n return this.opentui.symbols.yogaNodeIsReferenceBaseline(node)\n }\n\n public yogaNodeSetAlwaysFormsContainingBlock(node: Pointer, alwaysFormsContainingBlock: boolean): void {\n this.opentui.symbols.yogaNodeSetAlwaysFormsContainingBlock(node, ffiBool(alwaysFormsContainingBlock))\n }\n\n public yogaNodeGetAlwaysFormsContainingBlock(node: Pointer): boolean {\n return this.opentui.symbols.yogaNodeGetAlwaysFormsContainingBlock(node)\n }\n\n public yogaNodeGetComputedLayout(node: Pointer): NativeYogaLayout {\n const layout = this.yogaLayout\n this.opentui.symbols.yogaNodeGetComputedLayout(node, this.yogaLayoutPtr)\n return {\n left: layout[0]!,\n top: layout[1]!,\n right: layout[2]!,\n bottom: layout[3]!,\n width: layout[4]!,\n height: layout[5]!,\n }\n }\n\n public yogaNodeLayoutGetEdge(node: Pointer, kind: number, edge: number): number {\n return this.opentui.symbols.yogaNodeLayoutGetEdge(node, kind, edge)\n }\n\n public yogaNodeStyleSetEnum(node: Pointer, kind: number, value: number): void {\n this.opentui.symbols.yogaNodeStyleSetEnum(node, kind, value)\n }\n\n public yogaNodeStyleGetEnum(node: Pointer, kind: number): number {\n return this.opentui.symbols.yogaNodeStyleGetEnum(node, kind)\n }\n\n public yogaNodeStyleSetFloat(node: Pointer, kind: number, value: number): void {\n this.opentui.symbols.yogaNodeStyleSetFloat(node, kind, value)\n }\n\n public yogaNodeStyleGetFloat(node: Pointer, kind: number): number {\n return this.opentui.symbols.yogaNodeStyleGetFloat(node, kind)\n }\n\n public yogaNodeStyleSetBorder(node: Pointer, edge: number, border: number): void {\n this.opentui.symbols.yogaNodeStyleSetBorder(node, edge, border)\n }\n\n public yogaNodeStyleGetBorder(node: Pointer, edge: number): number {\n return this.opentui.symbols.yogaNodeStyleGetBorder(node, edge)\n }\n\n public yogaNodeStyleSetValue(node: Pointer, kind: number, edgeOrGutter: number, unit: number, value: number): void {\n this.opentui.symbols.yogaNodeStyleSetValue(node, kind, edgeOrGutter, unit, value)\n }\n\n public yogaNodeStyleGetValue(node: Pointer, kind: number, edgeOrGutter: number): number | bigint {\n return this.opentui.symbols.yogaNodeStyleGetValue(node, kind, edgeOrGutter)\n }\n\n public yogaNodeSetMeasureFunc(node: Pointer, enabled: boolean): void {\n this.opentui.symbols.yogaNodeSetMeasureFunc(node, ffiBool(enabled))\n }\n\n public yogaNodeUnsetMeasureFunc(node: Pointer): void {\n this.opentui.symbols.yogaNodeUnsetMeasureFunc(node)\n }\n\n public yogaNodeHasMeasureFunc(node: Pointer): boolean {\n // Node's FFI returns bools as 0/1 numbers; normalize so the interface stays truthful.\n return Boolean(this.opentui.symbols.yogaNodeHasMeasureFunc(node))\n }\n\n public yogaNodeSetDirtiedFunc(node: Pointer, enabled: boolean): void {\n this.opentui.symbols.yogaNodeSetDirtiedFunc(node, ffiBool(enabled))\n }\n\n public yogaNodeUnsetDirtiedFunc(node: Pointer): void {\n this.opentui.symbols.yogaNodeUnsetDirtiedFunc(node)\n }\n\n public yogaStoreMeasureResult(width: number, height: number): void {\n this.opentui.symbols.yogaStoreMeasureResult(width, height)\n }\n\n public yogaSetMeasureCallback(callback: Pointer | null): void {\n this.opentui.symbols.yogaSetMeasureCallback(callback)\n }\n\n public yogaSetDirtiedCallback(callback: Pointer | null): void {\n this.opentui.symbols.yogaSetDirtiedCallback(callback)\n }\n\n public createYogaMeasureCallback(callback: NativeYogaMeasureCallback): FFICallbackInstance {\n return this.opentui.createCallback(callback, {\n args: [\"ptr\", \"f32\", \"u32\", \"f32\", \"u32\"],\n returns: \"void\",\n })\n }\n\n public createYogaDirtiedCallback(callback: NativeYogaDirtiedCallback): FFICallbackInstance {\n return this.opentui.createCallback(callback, {\n args: [\"ptr\"],\n returns: \"void\",\n })\n }\n\n // TextBuffer methods\n public createTextBuffer(widthMethod: WidthMethod): TextBuffer {\n const widthMethodCode = widthMethod === \"wcwidth\" ? 0 : 1\n const bufferPtr = this.opentui.symbols.createTextBuffer(widthMethodCode)\n if (!bufferPtr) {\n throw new Error(`Failed to create TextBuffer`)\n }\n\n return new TextBuffer(this, bufferPtr)\n }\n\n public destroyTextBuffer(buffer: Pointer): void {\n this.opentui.symbols.destroyTextBuffer(buffer)\n }\n\n public textBufferGetLength(buffer: Pointer): number {\n return this.opentui.symbols.textBufferGetLength(buffer)\n }\n\n public textBufferGetByteSize(buffer: Pointer): number {\n return this.opentui.symbols.textBufferGetByteSize(buffer)\n }\n\n public textBufferReset(buffer: Pointer): void {\n this.opentui.symbols.textBufferReset(buffer)\n }\n\n public textBufferClear(buffer: Pointer): void {\n this.opentui.symbols.textBufferClear(buffer)\n }\n\n public textBufferSetDefaultFg(buffer: Pointer, fg: RGBA | null): void {\n const fgPtr = optionalRgbaPtr(fg)\n this.opentui.symbols.textBufferSetDefaultFg(buffer, fgPtr)\n }\n\n public textBufferSetDefaultBg(buffer: Pointer, bg: RGBA | null): void {\n const bgPtr = optionalRgbaPtr(bg)\n this.opentui.symbols.textBufferSetDefaultBg(buffer, bgPtr)\n }\n\n public textBufferSetDefaultAttributes(buffer: Pointer, attributes: number | null): void {\n const attrValue = attributes === null ? null : new Uint32Array([attributes])\n this.opentui.symbols.textBufferSetDefaultAttributes(buffer, attrValue ? ptr(attrValue) : null)\n }\n\n public textBufferResetDefaults(buffer: Pointer): void {\n this.opentui.symbols.textBufferResetDefaults(buffer)\n }\n\n public textBufferGetTabWidth(buffer: Pointer): number {\n return this.opentui.symbols.textBufferGetTabWidth(buffer)\n }\n\n public textBufferSetTabWidth(buffer: Pointer, width: number): void {\n this.opentui.symbols.textBufferSetTabWidth(buffer, width)\n }\n\n public textBufferRegisterMemBuffer(buffer: Pointer, bytes: Uint8Array, owned: boolean = false): number {\n const result = this.opentui.symbols.textBufferRegisterMemBuffer(\n buffer,\n ptrOrNull(bytes),\n bytes.byteLength,\n ffiBool(owned),\n )\n if (result === 0xffff) {\n throw new Error(\"Failed to register memory buffer\")\n }\n return result\n }\n\n public textBufferReplaceMemBuffer(\n buffer: Pointer,\n memId: number,\n bytes: Uint8Array,\n owned: boolean = false,\n ): boolean {\n return this.opentui.symbols.textBufferReplaceMemBuffer(\n buffer,\n memId,\n ptrOrNull(bytes),\n bytes.byteLength,\n ffiBool(owned),\n )\n }\n\n public textBufferClearMemRegistry(buffer: Pointer): void {\n this.opentui.symbols.textBufferClearMemRegistry(buffer)\n }\n\n public textBufferSetTextFromMem(buffer: Pointer, memId: number): void {\n this.opentui.symbols.textBufferSetTextFromMem(buffer, memId)\n }\n\n public textBufferAppend(buffer: Pointer, bytes: Uint8Array): void {\n this.opentui.symbols.textBufferAppend(buffer, ptrOrNull(bytes), bytes.byteLength)\n }\n\n public textBufferAppendFromMemId(buffer: Pointer, memId: number): void {\n this.opentui.symbols.textBufferAppendFromMemId(buffer, memId)\n }\n\n public textBufferLoadFile(buffer: Pointer, path: string): boolean {\n const pathBytes = this.encoder.encode(path)\n return this.opentui.symbols.textBufferLoadFile(buffer, ptrOrNull(pathBytes), pathBytes.byteLength)\n }\n\n public textBufferSetStyledText(\n buffer: Pointer,\n chunks: Array<{ text: string; fg?: RGBA | null; bg?: RGBA | null; attributes?: number; link?: { url: string } }>,\n ): void {\n if (chunks.length === 0) {\n this.textBufferClear(buffer)\n return\n }\n\n const chunksBuffer = StyledChunkStruct.packList(chunks)\n this.opentui.symbols.textBufferSetStyledText(buffer, chunksBuffer, chunks.length)\n }\n\n public textBufferGetLineCount(buffer: Pointer): number {\n return this.opentui.symbols.textBufferGetLineCount(buffer)\n }\n\n private textBufferGetPlainText(buffer: Pointer, outPtr: Pointer | null, maxLen: number): number {\n return this.opentui.symbols.textBufferGetPlainText(buffer, outPtr, maxLen)\n }\n\n public getPlainTextBytes(buffer: Pointer, maxLength: number): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n\n const actualLen = this.textBufferGetPlainText(buffer, ptrOrNull(outBuffer), maxLength)\n\n if (actualLen === 0) {\n return null\n }\n\n return outBuffer.slice(0, actualLen)\n }\n\n public textBufferGetTextRange(\n buffer: Pointer,\n startOffset: number,\n endOffset: number,\n maxLength: number,\n ): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n\n const actualLen = this.opentui.symbols.textBufferGetTextRange(\n buffer,\n startOffset,\n endOffset,\n ptrOrNull(outBuffer),\n maxLength,\n )\n\n const len = actualLen\n\n if (len === 0) {\n return null\n }\n\n return outBuffer.slice(0, len)\n }\n\n public textBufferGetTextRangeByCoords(\n buffer: Pointer,\n startRow: number,\n startCol: number,\n endRow: number,\n endCol: number,\n maxLength: number,\n ): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n\n const actualLen = this.opentui.symbols.textBufferGetTextRangeByCoords(\n buffer,\n startRow,\n startCol,\n endRow,\n endCol,\n ptrOrNull(outBuffer),\n maxLength,\n )\n\n const len = actualLen\n\n if (len === 0) {\n return null\n }\n\n return usesBunFFI ? outBuffer.slice(0, len) : trimNodeFFIOutputBytes(outBuffer, len)\n }\n\n // TextBufferView methods\n public createTextBufferView(textBuffer: TextBufferHandle): TextBufferViewHandle {\n const viewPtr = this.opentui.symbols.createTextBufferView(textBuffer) as TextBufferViewHandle\n if (!viewPtr) {\n throw new Error(\"Failed to create TextBufferView\")\n }\n return viewPtr\n }\n\n public destroyTextBufferView(view: Pointer): void {\n this.opentui.symbols.destroyTextBufferView(view)\n }\n\n public textBufferViewSetSelection(\n view: Pointer,\n start: number,\n end: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n ): void {\n const bg = optionalRgbaPtr(bgColor)\n const fg = optionalRgbaPtr(fgColor)\n this.opentui.symbols.textBufferViewSetSelection(view, start, end, bg, fg)\n }\n\n public textBufferViewResetSelection(view: Pointer): void {\n this.opentui.symbols.textBufferViewResetSelection(view)\n }\n\n public textBufferViewGetSelection(view: Pointer): { start: number; end: number } | null {\n const packedInfo = this.textBufferViewGetSelectionInfo(view)\n\n // Check for no selection marker (0xFFFFFFFF_FFFFFFFF)\n if (packedInfo === 0xffff_ffff_ffff_ffffn) {\n return null\n }\n\n const start = Number(packedInfo >> 32n)\n const end = Number(packedInfo & 0xffff_ffffn)\n\n return { start, end }\n }\n\n private textBufferViewGetSelectionInfo(view: Pointer): bigint {\n return this.opentui.symbols.textBufferViewGetSelectionInfo(view)\n }\n\n public textBufferViewSetLocalSelection(\n view: Pointer,\n anchorX: number,\n anchorY: number,\n focusX: number,\n focusY: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n ): boolean {\n const bg = optionalRgbaPtr(bgColor)\n const fg = optionalRgbaPtr(fgColor)\n return Boolean(this.opentui.symbols.textBufferViewSetLocalSelection(view, anchorX, anchorY, focusX, focusY, bg, fg))\n }\n\n public textBufferViewUpdateSelection(view: Pointer, end: number, bgColor: RGBA | null, fgColor: RGBA | null): void {\n const bg = optionalRgbaPtr(bgColor)\n const fg = optionalRgbaPtr(fgColor)\n this.opentui.symbols.textBufferViewUpdateSelection(view, end, bg, fg)\n }\n\n public textBufferViewUpdateLocalSelection(\n view: Pointer,\n anchorX: number,\n anchorY: number,\n focusX: number,\n focusY: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n ): boolean {\n const bg = optionalRgbaPtr(bgColor)\n const fg = optionalRgbaPtr(fgColor)\n return Boolean(\n this.opentui.symbols.textBufferViewUpdateLocalSelection(view, anchorX, anchorY, focusX, focusY, bg, fg),\n )\n }\n\n public textBufferViewResetLocalSelection(view: Pointer): void {\n this.opentui.symbols.textBufferViewResetLocalSelection(view)\n }\n\n public textBufferViewSetWrapWidth(view: Pointer, width: number): void {\n this.opentui.symbols.textBufferViewSetWrapWidth(view, width)\n }\n\n public textBufferViewSetWrapMode(view: Pointer, mode: \"none\" | \"char\" | \"word\"): void {\n const modeValue = mode === \"none\" ? 0 : mode === \"char\" ? 1 : 2\n this.opentui.symbols.textBufferViewSetWrapMode(view, modeValue)\n }\n\n public textBufferViewSetFirstLineOffset(view: Pointer, offset: number): void {\n this.opentui.symbols.textBufferViewSetFirstLineOffset(view, offset)\n }\n\n public textBufferViewSetViewportSize(view: Pointer, width: number, height: number): void {\n this.opentui.symbols.textBufferViewSetViewportSize(view, width, height)\n }\n\n public textBufferViewSetViewport(view: Pointer, x: number, y: number, width: number, height: number): void {\n this.opentui.symbols.textBufferViewSetViewport(view, x, y, width, height)\n }\n\n public textBufferViewGetLineInfo(view: Pointer): LineInfo {\n const outBuffer = new ArrayBuffer(LineInfoStruct.size)\n this.textBufferViewGetLineInfoDirect(view, ptr(outBuffer))\n const struct = LineInfoStruct.unpack(outBuffer)\n\n const lineStartCols = struct.startCols as number[]\n const lineWidthCols = struct.widthCols as number[]\n const lineWidthColsMax = struct.widthColsMax\n\n return {\n lineStartCols,\n lineWidthCols,\n lineWidthColsMax,\n lineSources: struct.sources as number[],\n lineWraps: struct.wraps as number[],\n }\n }\n\n public textBufferViewGetLogicalLineInfo(view: Pointer): LineInfo {\n const outBuffer = new ArrayBuffer(LineInfoStruct.size)\n this.textBufferViewGetLogicalLineInfoDirect(view, ptr(outBuffer))\n const struct = LineInfoStruct.unpack(outBuffer)\n\n const lineStartCols = struct.startCols as number[]\n const lineWidthCols = struct.widthCols as number[]\n const lineWidthColsMax = struct.widthColsMax\n\n return {\n lineStartCols,\n lineWidthCols,\n lineWidthColsMax,\n lineSources: struct.sources as number[],\n lineWraps: struct.wraps as number[],\n }\n }\n\n public textBufferViewGetVirtualLineCount(view: Pointer): number {\n return this.opentui.symbols.textBufferViewGetVirtualLineCount(view)\n }\n\n private textBufferViewGetLineInfoDirect(view: Pointer, outPtr: Pointer): void {\n this.opentui.symbols.textBufferViewGetLineInfoDirect(view, outPtr)\n }\n\n private textBufferViewGetLogicalLineInfoDirect(view: Pointer, outPtr: Pointer): void {\n this.opentui.symbols.textBufferViewGetLogicalLineInfoDirect(view, outPtr)\n }\n\n private textBufferViewGetSelectedText(view: Pointer, outPtr: Pointer | null, maxLen: number): number {\n return this.opentui.symbols.textBufferViewGetSelectedText(view, outPtr, maxLen)\n }\n\n private textBufferViewGetPlainText(view: Pointer, outPtr: Pointer | null, maxLen: number): number {\n return this.opentui.symbols.textBufferViewGetPlainText(view, outPtr, maxLen)\n }\n\n public textBufferViewGetSelectedTextBytes(view: Pointer, maxLength: number): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n\n const actualLen = this.textBufferViewGetSelectedText(view, ptrOrNull(outBuffer), maxLength)\n\n if (actualLen === 0) {\n return null\n }\n\n return outBuffer.slice(0, actualLen)\n }\n\n public textBufferViewGetPlainTextBytes(view: Pointer, maxLength: number): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n\n const actualLen = this.textBufferViewGetPlainText(view, ptrOrNull(outBuffer), maxLength)\n\n if (actualLen === 0) {\n return null\n }\n\n return outBuffer.slice(0, actualLen)\n }\n\n public textBufferViewSetTabIndicator(view: Pointer, indicator: number): void {\n this.opentui.symbols.textBufferViewSetTabIndicator(view, indicator)\n }\n\n public textBufferViewSetTabIndicatorColor(view: Pointer, color: RGBA): void {\n this.opentui.symbols.textBufferViewSetTabIndicatorColor(view, rgbaPtr(color))\n }\n\n public textBufferViewSetTruncate(view: Pointer, truncate: boolean): void {\n this.opentui.symbols.textBufferViewSetTruncate(view, ffiBool(truncate))\n }\n\n public textBufferViewMeasureForDimensions(view: Pointer, width: number, height: number): MeasureResult | null {\n const storage = this.ffiStructStorage.measureResult\n const success = this.opentui.symbols.textBufferViewMeasureForDimensions(view, width, height, storage.buffer)\n if (!success) return null\n const result = MeasureResultStruct.unpackInto(storage.view, storage.result)\n return { lineCount: result.lineCount, widthColsMax: result.widthColsMax }\n }\n\n public textBufferAddHighlightByCharRange(buffer: Pointer, highlight: Highlight): void {\n const packedHighlight = HighlightStruct.pack(highlight)\n this.opentui.symbols.textBufferAddHighlightByCharRange(buffer, ptr(packedHighlight))\n }\n\n public textBufferAddHighlight(buffer: Pointer, lineIdx: number, highlight: Highlight): void {\n const packedHighlight = HighlightStruct.pack(highlight)\n this.opentui.symbols.textBufferAddHighlight(buffer, lineIdx, ptr(packedHighlight))\n }\n\n public textBufferRemoveHighlightsByRef(buffer: Pointer, hlRef: number): void {\n this.opentui.symbols.textBufferRemoveHighlightsByRef(buffer, hlRef)\n }\n\n public textBufferClearLineHighlights(buffer: Pointer, lineIdx: number): void {\n this.opentui.symbols.textBufferClearLineHighlights(buffer, lineIdx)\n }\n\n public textBufferClearAllHighlights(buffer: Pointer): void {\n this.opentui.symbols.textBufferClearAllHighlights(buffer)\n }\n\n public textBufferSetSyntaxStyle(buffer: Pointer, style: Pointer | null): boolean {\n return this.opentui.symbols.textBufferSetSyntaxStyle(buffer, style ?? 0)\n }\n\n public textBufferGetLineHighlights(buffer: Pointer, lineIdx: number): Array<Highlight> {\n const outCountBuf = new Uint32Array(1)\n\n const nativePtr = this.opentui.symbols.textBufferGetLineHighlightsPtr(buffer, lineIdx, ptr(outCountBuf))\n if (!nativePtr) return []\n\n const count = outCountBuf[0]\n const byteLen = count * HighlightStruct.size\n const raw = toArrayBuffer(nativePtr, 0, byteLen)\n const results = HighlightStruct.unpackList(raw, count)\n\n this.opentui.symbols.textBufferFreeLineHighlights(nativePtr, count)\n\n return results\n }\n\n public textBufferGetHighlightCount(buffer: Pointer): number {\n return this.opentui.symbols.textBufferGetHighlightCount(buffer)\n }\n\n public getArenaAllocatedBytes(): number {\n const result = this.opentui.symbols.getArenaAllocatedBytes()\n return toSafeByteCount(result, \"Arena allocated bytes\")\n }\n\n public getBuildOptions(): BuildOptions {\n const optionsBuffer = new ArrayBuffer(BuildOptionsStruct.size)\n this.opentui.symbols.getBuildOptions(ptr(optionsBuffer))\n const options = BuildOptionsStruct.unpack(optionsBuffer)\n\n return {\n gpaSafeStats: !!options.gpaSafeStats,\n gpaMemoryLimitTracking: !!options.gpaMemoryLimitTracking,\n }\n }\n\n public getAllocatorStats(): AllocatorStats {\n const statsBuffer = new ArrayBuffer(AllocatorStatsStruct.size)\n this.opentui.symbols.getAllocatorStats(ptr(statsBuffer))\n const stats = AllocatorStatsStruct.unpack(statsBuffer)\n\n return {\n totalRequestedBytes: toNumber(stats.totalRequestedBytes),\n activeAllocations: toNumber(stats.activeAllocations),\n smallAllocations: toNumber(stats.smallAllocations),\n largeAllocations: toNumber(stats.largeAllocations),\n requestedBytesValid: !!stats.requestedBytesValid,\n }\n }\n\n public bufferDrawTextBufferView(buffer: Pointer, view: Pointer, x: number, y: number): void {\n this.opentui.symbols.bufferDrawTextBufferView(buffer, view, x, y)\n }\n\n public bufferDrawEditorView(buffer: Pointer, view: Pointer, x: number, y: number): void {\n this.opentui.symbols.bufferDrawEditorView(buffer, view, x, y)\n }\n\n // EditorView methods\n public createEditorView(\n editBufferPtr: EditBufferHandle,\n viewportWidth: number,\n viewportHeight: number,\n ): EditorViewHandle {\n const viewPtr = this.opentui.symbols.createEditorView(\n editBufferPtr,\n viewportWidth,\n viewportHeight,\n ) as EditorViewHandle\n if (!viewPtr) {\n throw new Error(\"Failed to create EditorView\")\n }\n return viewPtr\n }\n\n public destroyEditorView(view: Pointer): void {\n this.opentui.symbols.destroyEditorView(view)\n }\n\n public editorViewSetViewportSize(view: Pointer, width: number, height: number): void {\n this.opentui.symbols.editorViewSetViewportSize(view, width, height)\n }\n\n public editorViewSetViewport(\n view: Pointer,\n x: number,\n y: number,\n width: number,\n height: number,\n moveCursor: boolean,\n ): void {\n this.opentui.symbols.editorViewSetViewport(view, x, y, width, height, ffiBool(moveCursor))\n }\n\n public editorViewGetViewport(view: Pointer): { offsetY: number; offsetX: number; height: number; width: number } {\n const x = new Uint32Array(1)\n const y = new Uint32Array(1)\n const width = new Uint32Array(1)\n const height = new Uint32Array(1)\n\n this.opentui.symbols.editorViewGetViewport(view, ptr(x), ptr(y), ptr(width), ptr(height))\n\n return {\n offsetX: x[0],\n offsetY: y[0],\n width: width[0],\n height: height[0],\n }\n }\n\n public editorViewSetScrollMargin(view: Pointer, margin: number): void {\n this.opentui.symbols.editorViewSetScrollMargin(view, margin)\n }\n\n public editorViewSetWrapMode(view: Pointer, mode: \"none\" | \"char\" | \"word\"): void {\n const modeValue = mode === \"none\" ? 0 : mode === \"char\" ? 1 : 2\n this.opentui.symbols.editorViewSetWrapMode(view, modeValue)\n }\n\n public editorViewGetVirtualLineCount(view: Pointer): number {\n return this.opentui.symbols.editorViewGetVirtualLineCount(view)\n }\n\n public editorViewGetTotalVirtualLineCount(view: Pointer): number {\n return this.opentui.symbols.editorViewGetTotalVirtualLineCount(view)\n }\n\n public editorViewGetTextBufferView(view: EditorViewHandle): TextBufferViewHandle {\n const result = this.opentui.symbols.editorViewGetTextBufferView(view) as TextBufferViewHandle\n if (!result) {\n throw new Error(\"Failed to get TextBufferView from EditorView\")\n }\n return result\n }\n\n public editorViewGetLineInfo(view: Pointer): LineInfo {\n const outBuffer = new ArrayBuffer(LineInfoStruct.size)\n this.opentui.symbols.editorViewGetLineInfoDirect(view, ptr(outBuffer))\n const struct = LineInfoStruct.unpack(outBuffer)\n\n const lineStartCols = struct.startCols as number[]\n const lineWidthCols = struct.widthCols as number[]\n const lineWidthColsMax = struct.widthColsMax\n\n return {\n lineStartCols,\n lineWidthCols,\n lineWidthColsMax,\n lineSources: struct.sources as number[],\n lineWraps: struct.wraps as number[],\n }\n }\n\n public editorViewGetLogicalLineInfo(view: Pointer): LineInfo {\n const outBuffer = new ArrayBuffer(LineInfoStruct.size)\n this.opentui.symbols.editorViewGetLogicalLineInfoDirect(view, ptr(outBuffer))\n const struct = LineInfoStruct.unpack(outBuffer)\n\n const lineStartCols = struct.startCols as number[]\n const lineWidthCols = struct.widthCols as number[]\n const lineWidthColsMax = struct.widthColsMax\n\n return {\n lineStartCols,\n lineWidthCols,\n lineWidthColsMax,\n lineSources: struct.sources as number[],\n lineWraps: struct.wraps as number[],\n }\n }\n\n // EditBuffer implementations\n public createEditBuffer(widthMethod: WidthMethod): EditBufferHandle {\n const widthMethodCode = widthMethod === \"wcwidth\" ? 0 : 1\n const bufferPtr = this.opentui.symbols.createEditBuffer(widthMethodCode, this.eventSinkPtr ?? 0) as EditBufferHandle\n if (!bufferPtr) {\n throw new Error(\"Failed to create EditBuffer\")\n }\n return bufferPtr\n }\n\n public destroyEditBuffer(buffer: Pointer): void {\n this.opentui.symbols.destroyEditBuffer(buffer)\n }\n\n public editBufferSetText(buffer: Pointer, textBytes: Uint8Array): void {\n this.opentui.symbols.editBufferSetText(buffer, ptrOrNull(textBytes), textBytes.byteLength)\n }\n\n public editBufferSetTextFromMem(buffer: Pointer, memId: number): void {\n this.opentui.symbols.editBufferSetTextFromMem(buffer, memId)\n }\n\n public editBufferReplaceText(buffer: Pointer, textBytes: Uint8Array): void {\n this.opentui.symbols.editBufferReplaceText(buffer, ptrOrNull(textBytes), textBytes.byteLength)\n }\n\n public editBufferReplaceTextFromMem(buffer: Pointer, memId: number): void {\n this.opentui.symbols.editBufferReplaceTextFromMem(buffer, memId)\n }\n\n public editBufferGetText(buffer: Pointer, maxLength: number): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n const actualLen = this.opentui.symbols.editBufferGetText(buffer, ptrOrNull(outBuffer), maxLength)\n const len = actualLen\n if (len === 0) return null\n return outBuffer.slice(0, len)\n }\n\n public editBufferInsertChar(buffer: Pointer, char: string): void {\n const charBytes = this.encoder.encode(char)\n this.opentui.symbols.editBufferInsertChar(buffer, ptrOrNull(charBytes), charBytes.byteLength)\n }\n\n public editBufferInsertText(buffer: Pointer, text: string): void {\n const textBytes = this.encoder.encode(text)\n this.opentui.symbols.editBufferInsertText(buffer, ptrOrNull(textBytes), textBytes.byteLength)\n }\n\n public editBufferDeleteChar(buffer: Pointer): void {\n this.opentui.symbols.editBufferDeleteChar(buffer)\n }\n\n public editBufferDeleteCharBackward(buffer: Pointer): void {\n this.opentui.symbols.editBufferDeleteCharBackward(buffer)\n }\n\n public editBufferDeleteRange(\n buffer: Pointer,\n startLine: number,\n startCol: number,\n endLine: number,\n endCol: number,\n ): void {\n this.opentui.symbols.editBufferDeleteRange(buffer, startLine, startCol, endLine, endCol)\n }\n\n public editBufferNewLine(buffer: Pointer): void {\n this.opentui.symbols.editBufferNewLine(buffer)\n }\n\n public editBufferDeleteLine(buffer: Pointer): void {\n this.opentui.symbols.editBufferDeleteLine(buffer)\n }\n\n public editBufferMoveCursorLeft(buffer: Pointer): void {\n this.opentui.symbols.editBufferMoveCursorLeft(buffer)\n }\n\n public editBufferMoveCursorRight(buffer: Pointer): void {\n this.opentui.symbols.editBufferMoveCursorRight(buffer)\n }\n\n public editBufferMoveCursorUp(buffer: Pointer): void {\n this.opentui.symbols.editBufferMoveCursorUp(buffer)\n }\n\n public editBufferMoveCursorDown(buffer: Pointer): void {\n this.opentui.symbols.editBufferMoveCursorDown(buffer)\n }\n\n public editBufferGotoLine(buffer: Pointer, line: number): void {\n this.opentui.symbols.editBufferGotoLine(buffer, line)\n }\n\n public editBufferSetCursor(buffer: Pointer, line: number, byteOffset: number): void {\n this.opentui.symbols.editBufferSetCursor(buffer, line, byteOffset)\n }\n\n public editBufferSetCursorToLineCol(buffer: Pointer, line: number, col: number): void {\n this.opentui.symbols.editBufferSetCursorToLineCol(buffer, line, col)\n }\n\n public editBufferSetCursorByOffset(buffer: Pointer, offset: number): void {\n this.opentui.symbols.editBufferSetCursorByOffset(buffer, offset)\n }\n\n public editBufferGetCursorPosition(buffer: Pointer): LogicalCursor {\n const storage = this.ffiStructStorage.logicalCursor\n this.opentui.symbols.editBufferGetCursorPosition(buffer, storage.buffer)\n const cursor = LogicalCursorStruct.unpackInto(storage.view, storage.result)\n return { row: cursor.row, col: cursor.col, offset: cursor.offset }\n }\n\n public editBufferGetId(buffer: Pointer): number {\n return this.opentui.symbols.editBufferGetId(buffer)\n }\n\n public editBufferGetTextBuffer(buffer: EditBufferHandle): TextBufferHandle {\n const result = this.opentui.symbols.editBufferGetTextBuffer(buffer) as TextBufferHandle\n if (!result) {\n throw new Error(\"Failed to get TextBuffer from EditBuffer\")\n }\n return result\n }\n\n public editBufferDebugLogRope(buffer: Pointer): void {\n this.opentui.symbols.editBufferDebugLogRope(buffer)\n }\n\n public editBufferUndo(buffer: Pointer, maxLength: number): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n const actualLen = this.opentui.symbols.editBufferUndo(buffer, ptrOrNull(outBuffer), maxLength)\n const len = actualLen\n if (len === 0) return null\n return outBuffer.slice(0, len)\n }\n\n public editBufferRedo(buffer: Pointer, maxLength: number): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n const actualLen = this.opentui.symbols.editBufferRedo(buffer, ptrOrNull(outBuffer), maxLength)\n const len = actualLen\n if (len === 0) return null\n return outBuffer.slice(0, len)\n }\n\n public editBufferCanUndo(buffer: Pointer): boolean {\n return Boolean(this.opentui.symbols.editBufferCanUndo(buffer))\n }\n\n public editBufferCanRedo(buffer: Pointer): boolean {\n return Boolean(this.opentui.symbols.editBufferCanRedo(buffer))\n }\n\n public editBufferClearHistory(buffer: Pointer): void {\n this.opentui.symbols.editBufferClearHistory(buffer)\n }\n\n public editBufferClear(buffer: Pointer): void {\n this.opentui.symbols.editBufferClear(buffer)\n }\n\n public editBufferGetNextWordBoundary(buffer: Pointer): LogicalCursor {\n const storage = this.ffiStructStorage.logicalCursor\n this.opentui.symbols.editBufferGetNextWordBoundary(buffer, storage.buffer)\n const cursor = LogicalCursorStruct.unpackInto(storage.view, storage.result)\n return { row: cursor.row, col: cursor.col, offset: cursor.offset }\n }\n\n public editBufferGetPrevWordBoundary(buffer: Pointer): LogicalCursor {\n const storage = this.ffiStructStorage.logicalCursor\n this.opentui.symbols.editBufferGetPrevWordBoundary(buffer, storage.buffer)\n const cursor = LogicalCursorStruct.unpackInto(storage.view, storage.result)\n return { row: cursor.row, col: cursor.col, offset: cursor.offset }\n }\n\n public editBufferGetEOL(buffer: Pointer): LogicalCursor {\n const storage = this.ffiStructStorage.logicalCursor\n this.opentui.symbols.editBufferGetEOL(buffer, storage.buffer)\n const cursor = LogicalCursorStruct.unpackInto(storage.view, storage.result)\n return { row: cursor.row, col: cursor.col, offset: cursor.offset }\n }\n\n public editBufferOffsetToPosition(buffer: Pointer, offset: number): LogicalCursor | null {\n const storage = this.ffiStructStorage.logicalCursor\n const success = this.opentui.symbols.editBufferOffsetToPosition(buffer, offset, storage.buffer)\n if (!success) return null\n const cursor = LogicalCursorStruct.unpackInto(storage.view, storage.result)\n return { row: cursor.row, col: cursor.col, offset: cursor.offset }\n }\n\n public editBufferPositionToOffset(buffer: Pointer, row: number, col: number): number {\n return this.opentui.symbols.editBufferPositionToOffset(buffer, row, col)\n }\n\n public editBufferGetLineStartOffset(buffer: Pointer, row: number): number {\n return this.opentui.symbols.editBufferGetLineStartOffset(buffer, row)\n }\n\n public editBufferGetTextRange(\n buffer: Pointer,\n startOffset: number,\n endOffset: number,\n maxLength: number,\n ): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n const actualLen = this.opentui.symbols.editBufferGetTextRange(\n buffer,\n startOffset,\n endOffset,\n ptrOrNull(outBuffer),\n maxLength,\n )\n const len = actualLen\n if (len === 0) return null\n return outBuffer.slice(0, len)\n }\n\n public editBufferGetTextRangeByCoords(\n buffer: Pointer,\n startRow: number,\n startCol: number,\n endRow: number,\n endCol: number,\n maxLength: number,\n ): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n const actualLen = this.opentui.symbols.editBufferGetTextRangeByCoords(\n buffer,\n startRow,\n startCol,\n endRow,\n endCol,\n ptrOrNull(outBuffer),\n maxLength,\n )\n const len = actualLen\n if (len === 0) return null\n return usesBunFFI ? outBuffer.slice(0, len) : trimNodeFFIOutputBytes(outBuffer, len)\n }\n\n // EditorView selection and editing implementations\n public editorViewSetSelection(\n view: Pointer,\n start: number,\n end: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n ): void {\n const bg = optionalRgbaPtr(bgColor)\n const fg = optionalRgbaPtr(fgColor)\n this.opentui.symbols.editorViewSetSelection(view, start, end, bg, fg)\n }\n\n public editorViewResetSelection(view: Pointer): void {\n this.opentui.symbols.editorViewResetSelection(view)\n }\n\n public editorViewGetSelection(view: Pointer): { start: number; end: number } | null {\n const packedInfo = this.opentui.symbols.editorViewGetSelection(view)\n if (packedInfo === 0xffff_ffff_ffff_ffffn) {\n return null\n }\n const start = Number(packedInfo >> 32n)\n const end = Number(packedInfo & 0xffff_ffffn)\n return { start, end }\n }\n\n public editorViewSetLocalSelection(\n view: Pointer,\n anchorX: number,\n anchorY: number,\n focusX: number,\n focusY: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n updateCursor: boolean,\n followCursor: boolean,\n ): boolean {\n const bg = optionalRgbaPtr(bgColor)\n const fg = optionalRgbaPtr(fgColor)\n return Boolean(\n this.opentui.symbols.editorViewSetLocalSelection(\n view,\n anchorX,\n anchorY,\n focusX,\n focusY,\n bg,\n fg,\n ffiBool(updateCursor),\n ffiBool(followCursor),\n ),\n )\n }\n\n public editorViewUpdateSelection(view: Pointer, end: number, bgColor: RGBA | null, fgColor: RGBA | null): void {\n const bg = optionalRgbaPtr(bgColor)\n const fg = optionalRgbaPtr(fgColor)\n this.opentui.symbols.editorViewUpdateSelection(view, end, bg, fg)\n }\n\n public editorViewUpdateLocalSelection(\n view: Pointer,\n anchorX: number,\n anchorY: number,\n focusX: number,\n focusY: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n updateCursor: boolean,\n followCursor: boolean,\n ): boolean {\n const bg = optionalRgbaPtr(bgColor)\n const fg = optionalRgbaPtr(fgColor)\n return Boolean(\n this.opentui.symbols.editorViewUpdateLocalSelection(\n view,\n anchorX,\n anchorY,\n focusX,\n focusY,\n bg,\n fg,\n ffiBool(updateCursor),\n ffiBool(followCursor),\n ),\n )\n }\n\n public editorViewResetLocalSelection(view: Pointer): void {\n this.opentui.symbols.editorViewResetLocalSelection(view)\n }\n\n public editorViewGetSelectedTextBytes(view: Pointer, maxLength: number): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n const actualLen = this.opentui.symbols.editorViewGetSelectedTextBytes(view, ptrOrNull(outBuffer), maxLength)\n const len = actualLen\n if (len === 0) return null\n return outBuffer.slice(0, len)\n }\n\n public editorViewGetCursor(view: Pointer): { row: number; col: number } {\n const row = new Uint32Array(1)\n const col = new Uint32Array(1)\n this.opentui.symbols.editorViewGetCursor(view, ptr(row), ptr(col))\n return { row: row[0], col: col[0] }\n }\n\n public editorViewGetText(view: Pointer, maxLength: number): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n const actualLen = this.opentui.symbols.editorViewGetText(view, ptrOrNull(outBuffer), maxLength)\n const len = actualLen\n if (len === 0) return null\n return outBuffer.slice(0, len)\n }\n\n public editorViewGetVisualCursor(view: Pointer): VisualCursor {\n const storage = this.ffiStructStorage.visualCursor\n this.opentui.symbols.editorViewGetVisualCursor(view, storage.buffer)\n const cursor = VisualCursorStruct.unpackInto(storage.view, storage.result)\n return { ...cursor }\n }\n\n public editorViewMoveUpVisual(view: Pointer): void {\n this.opentui.symbols.editorViewMoveUpVisual(view)\n }\n\n public editorViewMoveDownVisual(view: Pointer): void {\n this.opentui.symbols.editorViewMoveDownVisual(view)\n }\n\n public editorViewDeleteSelectedText(view: Pointer): void {\n this.opentui.symbols.editorViewDeleteSelectedText(view)\n }\n\n public editorViewSetCursorByOffset(view: Pointer, offset: number): void {\n this.opentui.symbols.editorViewSetCursorByOffset(view, offset)\n }\n\n public editorViewGetNextWordBoundary(view: Pointer): VisualCursor {\n const storage = this.ffiStructStorage.visualCursor\n this.opentui.symbols.editorViewGetNextWordBoundary(view, storage.buffer)\n const cursor = VisualCursorStruct.unpackInto(storage.view, storage.result)\n return { ...cursor }\n }\n\n public editorViewGetPrevWordBoundary(view: Pointer): VisualCursor {\n const storage = this.ffiStructStorage.visualCursor\n this.opentui.symbols.editorViewGetPrevWordBoundary(view, storage.buffer)\n const cursor = VisualCursorStruct.unpackInto(storage.view, storage.result)\n return { ...cursor }\n }\n\n public editorViewGetEOL(view: Pointer): VisualCursor {\n const storage = this.ffiStructStorage.visualCursor\n this.opentui.symbols.editorViewGetEOL(view, storage.buffer)\n const cursor = VisualCursorStruct.unpackInto(storage.view, storage.result)\n return { ...cursor }\n }\n\n public editorViewGetVisualSOL(view: Pointer): VisualCursor {\n const storage = this.ffiStructStorage.visualCursor\n this.opentui.symbols.editorViewGetVisualSOL(view, storage.buffer)\n const cursor = VisualCursorStruct.unpackInto(storage.view, storage.result)\n return { ...cursor }\n }\n\n public editorViewGetVisualEOL(view: Pointer): VisualCursor {\n const storage = this.ffiStructStorage.visualCursor\n this.opentui.symbols.editorViewGetVisualEOL(view, storage.buffer)\n const cursor = VisualCursorStruct.unpackInto(storage.view, storage.result)\n return { ...cursor }\n }\n\n public bufferPushScissorRect(buffer: Pointer, x: number, y: number, width: number, height: number): void {\n this.opentui.symbols.bufferPushScissorRect(buffer, x, y, width, height)\n }\n\n public bufferPopScissorRect(buffer: Pointer): void {\n this.opentui.symbols.bufferPopScissorRect(buffer)\n }\n\n public bufferClearScissorRects(buffer: Pointer): void {\n this.opentui.symbols.bufferClearScissorRects(buffer)\n }\n\n public bufferPushOpacity(buffer: Pointer, opacity: number): void {\n this.opentui.symbols.bufferPushOpacity(buffer, opacity)\n }\n\n public bufferPopOpacity(buffer: Pointer): void {\n this.opentui.symbols.bufferPopOpacity(buffer)\n }\n\n public bufferGetCurrentOpacity(buffer: Pointer): number {\n return this.opentui.symbols.bufferGetCurrentOpacity(buffer)\n }\n\n public bufferClearOpacity(buffer: Pointer): void {\n this.opentui.symbols.bufferClearOpacity(buffer)\n }\n\n public getTerminalCapabilities(renderer: Pointer): TerminalCapabilities {\n const capsBuffer = new ArrayBuffer(TerminalCapabilitiesStruct.size)\n this.opentui.symbols.getTerminalCapabilities(renderer, ptr(capsBuffer))\n\n const caps = TerminalCapabilitiesStruct.unpack(capsBuffer)\n\n return {\n kitty_keyboard: caps.kitty_keyboard,\n kitty_graphics: caps.kitty_graphics,\n rgb: caps.rgb,\n ansi256: caps.ansi256,\n unicode: caps.unicode,\n sgr_pixels: caps.sgr_pixels,\n color_scheme_updates: caps.color_scheme_updates,\n explicit_width: caps.explicit_width,\n scaled_text: caps.scaled_text,\n sixel: caps.sixel,\n focus_tracking: caps.focus_tracking,\n sync: caps.sync,\n bracketed_paste: caps.bracketed_paste,\n hyperlinks: caps.hyperlinks,\n osc52: caps.osc52,\n osc52_support: caps.osc52_support,\n notifications: caps.notifications,\n explicit_cursor_positioning: caps.explicit_cursor_positioning,\n remote: caps.remote,\n multiplexer: caps.multiplexer,\n image_protocol: caps.image_protocol,\n terminal: {\n name: caps.term_name ?? \"\",\n version: caps.term_version ?? \"\",\n from_xtversion: caps.term_from_xtversion,\n },\n }\n }\n\n public processCapabilityResponse(renderer: Pointer, response: string): void {\n const responseBytes = this.encoder.encode(response)\n this.opentui.symbols.processCapabilityResponse(renderer, ptrOrNull(responseBytes), responseBytes.byteLength)\n }\n\n public encodeUnicode(\n text: string,\n widthMethod: WidthMethod,\n ): { ptr: Pointer; data: Array<{ width: number; char: number }> } | null {\n const textBytes = this.encoder.encode(text)\n const widthMethodCode = widthMethod === \"wcwidth\" ? 0 : 1\n\n const outPtrBuffer = new ArrayBuffer(8) // Pointer-sized out slot\n const outLenBuffer = new ArrayBuffer(8) // Native length out slot\n\n const success = this.opentui.symbols.encodeUnicode(\n ptrOrNull(textBytes),\n textBytes.byteLength,\n ptr(outPtrBuffer),\n ptr(outLenBuffer),\n widthMethodCode,\n )\n\n if (!success) {\n return null\n }\n\n const outPtrView = new BigUint64Array(outPtrBuffer)\n const outLenView = new BigUint64Array(outLenBuffer)\n\n const resultLen = Number(outLenView[0])\n\n if (resultLen === 0) {\n return { ptr: 0 as Pointer, data: [] }\n }\n\n const resultPtr = toPointer(outPtrView[0])\n\n // Convert pointer to ArrayBuffer and use EncodedCharStruct to unpack the list\n const byteLen = resultLen * EncodedCharStruct.size\n const raw = toArrayBuffer(resultPtr, 0, byteLen)\n const data = EncodedCharStruct.unpackList(raw, resultLen)\n\n return { ptr: resultPtr, data }\n }\n\n public freeUnicode(encoded: { ptr: Pointer; data: Array<{ width: number; char: number }> }): void {\n this.opentui.symbols.freeUnicode(encoded.ptr, encoded.data.length)\n }\n\n public bufferDrawChar(\n buffer: Pointer,\n char: number,\n x: number,\n y: number,\n fg: RGBA,\n bg: RGBA,\n attributes: number = 0,\n ): void {\n this.opentui.symbols.bufferDrawChar(buffer, char, x, y, rgbaPtr(fg), rgbaPtr(bg), attributes)\n }\n\n public createAudioEngine(options?: AudioCreateOptions | null): AudioEngineHandle | null {\n const optionsBuffer = options == null ? null : AudioCreateOptionsStruct.pack(options)\n const engineHandle = this.opentui.symbols.createAudioEngine(\n optionsBuffer ? ptr(optionsBuffer) : null,\n ) as AudioEngineHandle\n return engineHandle ? engineHandle : null\n }\n\n public destroyAudioEngine(engine: AudioEngineHandle): void {\n this.opentui.symbols.destroyAudioEngine(engine)\n }\n\n public audioRefreshPlaybackDevices(engine: Pointer): number {\n return this.opentui.symbols.audioRefreshPlaybackDevices(engine)\n }\n\n public audioGetPlaybackDeviceCount(engine: Pointer): number {\n return this.opentui.symbols.audioGetPlaybackDeviceCount(engine)\n }\n\n public audioGetPlaybackDeviceName(engine: Pointer, index: number): string {\n const outBuffer = new Uint8Array(512)\n const bytesWritten = toNumber(\n this.opentui.symbols.audioGetPlaybackDeviceName(engine, index, ptr(outBuffer), outBuffer.length),\n )\n const safeBytesWritten = Math.max(0, Math.min(outBuffer.length, bytesWritten))\n return this.decoder.decode(outBuffer.subarray(0, safeBytesWritten))\n }\n\n public audioIsPlaybackDeviceDefault(engine: Pointer, index: number): boolean {\n return this.opentui.symbols.audioIsPlaybackDeviceDefault(engine, index)\n }\n\n public audioSelectPlaybackDevice(engine: Pointer, index: number): number {\n return this.opentui.symbols.audioSelectPlaybackDevice(engine, index)\n }\n\n public audioClearPlaybackDeviceSelection(engine: Pointer): void {\n this.opentui.symbols.audioClearPlaybackDeviceSelection(engine)\n }\n\n public audioRefreshCaptureDevices(engine: AudioEngineHandle): number {\n return this.opentui.symbols.audioRefreshCaptureDevices(engine)\n }\n\n public audioGetCaptureDeviceCount(engine: AudioEngineHandle): number {\n return this.opentui.symbols.audioGetCaptureDeviceCount(engine)\n }\n\n public audioGetCaptureDeviceName(engine: AudioEngineHandle, index: number): string {\n const outBuffer = new Uint8Array(512)\n const bytesWritten = toNumber(\n this.opentui.symbols.audioGetCaptureDeviceName(engine, index, outBuffer, outBuffer.length),\n )\n const safeBytesWritten = Math.max(0, Math.min(outBuffer.length, bytesWritten))\n return this.decoder.decode(outBuffer.subarray(0, safeBytesWritten))\n }\n\n public audioIsCaptureDeviceDefault(engine: AudioEngineHandle, index: number): boolean {\n return Boolean(this.opentui.symbols.audioIsCaptureDeviceDefault(engine, index))\n }\n\n public audioSelectCaptureDevice(engine: AudioEngineHandle, index: number): number {\n return this.opentui.symbols.audioSelectCaptureDevice(engine, index)\n }\n\n public audioClearCaptureDeviceSelection(engine: AudioEngineHandle): void {\n this.opentui.symbols.audioClearCaptureDeviceSelection(engine)\n }\n\n public audioStartCapture(\n engine: AudioEngineHandle,\n options: AudioStartOptions | undefined,\n channels: number,\n capacityFrames: number,\n ): number {\n let optionsBuffer: ArrayBuffer\n try {\n const noFixedSizedCallback = options?.noFixedSizedCallback\n optionsBuffer = AudioStartOptionsStruct.pack(options ?? {})\n if (noFixedSizedCallback === undefined) {\n const field = AudioStartOptionsStruct.layoutByName.get(\"noFixedSizedCallback\")\n if (!field) return -1\n new DataView(optionsBuffer).setUint8(field.offset, 1)\n }\n } catch {\n return -1\n }\n return this.opentui.symbols.audioStartCapture(engine, optionsBuffer, channels, capacityFrames)\n }\n\n public audioStopCapture(engine: AudioEngineHandle): number {\n return this.opentui.symbols.audioStopCapture(engine)\n }\n\n public audioIsCaptureRunning(engine: AudioEngineHandle): boolean {\n return Boolean(this.opentui.symbols.audioIsCaptureRunning(engine))\n }\n\n public audioReadCapture(\n engine: AudioEngineHandle,\n outBuffer: Float32Array,\n frameCount: number,\n ): { status: number; framesRead: number } {\n const outFramesReadBuffer = new ArrayBuffer(4)\n const sampleCapacity = toSafeFFIU32Length(outBuffer.length, \"Audio capture output sample capacity\")\n const status = this.opentui.symbols.audioReadCapture(\n engine,\n outBuffer,\n sampleCapacity,\n frameCount,\n outFramesReadBuffer,\n )\n if (status !== 0) return { status, framesRead: 0 }\n return { status, framesRead: new Uint32Array(outFramesReadBuffer)[0] ?? 0 }\n }\n\n public audioGetCaptureStats(engine: AudioEngineHandle): { status: number; stats: NativeAudioCaptureStats | null } {\n const statsBuffer = new ArrayBuffer(AudioCaptureStatsStruct.size)\n const status = this.opentui.symbols.audioGetCaptureStats(engine, statsBuffer)\n if (status !== 0) return { status, stats: null }\n const stats = AudioCaptureStatsStruct.unpack(statsBuffer)\n return {\n status,\n stats: {\n framesReceived: typeof stats.framesReceived === \"bigint\" ? stats.framesReceived : BigInt(stats.framesReceived),\n framesRead: typeof stats.framesRead === \"bigint\" ? stats.framesRead : BigInt(stats.framesRead),\n framesDropped: typeof stats.framesDropped === \"bigint\" ? stats.framesDropped : BigInt(stats.framesDropped),\n sampleRate: stats.sampleRate,\n channels: stats.channels,\n bufferedFrames: stats.bufferedFrames,\n capacityFrames: stats.capacityFrames,\n },\n }\n }\n\n public audioStart(engine: Pointer, options?: AudioStartOptions | null): number {\n let optionsBuffer: ArrayBuffer | null\n try {\n optionsBuffer = options == null ? null : AudioStartOptionsStruct.pack(options)\n } catch {\n return -1\n }\n return this.opentui.symbols.audioStart(engine, optionsBuffer ? ptr(optionsBuffer) : null)\n }\n\n public audioStartMixer(engine: Pointer): number {\n return this.opentui.symbols.audioStartMixer(engine)\n }\n\n public audioStop(engine: Pointer): number {\n return this.opentui.symbols.audioStop(engine)\n }\n\n public audioCreateStream(\n engine: AudioEngineHandle,\n options: AudioStreamCreateOptions,\n ): { status: number; streamId: number | null } {\n if (\n !isFFIU32(options.groupId) ||\n (options.format !== NativeAudioStreamFormat.Mp3 && options.format !== NativeAudioStreamFormat.Flac)\n ) {\n return { status: -1, streamId: null }\n }\n const optionsBuffer = AudioStreamCreateOptionsStruct.pack(options)\n const outBuffer = new ArrayBuffer(4)\n const status = this.opentui.symbols.audioCreateStream(engine, optionsBuffer, outBuffer)\n if (status !== 0) return { status, streamId: null }\n return { status, streamId: new Uint32Array(outBuffer)[0] ?? null }\n }\n\n public audioWriteStream(engine: AudioEngineHandle, streamId: number, data: Uint8Array): number {\n const dataLength = toSafeFFIU32Length(data.byteLength, \"Audio stream data length\")\n return this.opentui.symbols.audioWriteStream(engine, streamId, dataLength === 0 ? null : data, dataLength)\n }\n\n public audioEndStream(engine: AudioEngineHandle, streamId: number): number {\n return this.opentui.symbols.audioEndStream(engine, streamId)\n }\n\n public audioRestartStream(engine: AudioEngineHandle, streamId: number): number {\n return this.opentui.symbols.audioRestartStream(engine, streamId)\n }\n\n public audioSetStreamVolume(engine: AudioEngineHandle, streamId: number, volume: number): number {\n return this.opentui.symbols.audioSetStreamVolume(engine, streamId, volume)\n }\n\n public audioSetStreamPan(engine: AudioEngineHandle, streamId: number, pan: number): number {\n return this.opentui.symbols.audioSetStreamPan(engine, streamId, pan)\n }\n\n public audioSetStreamGroup(engine: AudioEngineHandle, streamId: number, groupId: number): number {\n if (!isFFIU32(groupId)) return -1\n return this.opentui.symbols.audioSetStreamGroup(engine, streamId, groupId)\n }\n\n public audioGetStreamStats(engine: AudioEngineHandle, streamId: number): NativeAudioStreamStats | null {\n const storage = this.ffiStructStorage.audioStreamStats\n const status = this.opentui.symbols.audioGetStreamStats(engine, streamId, storage.buffer)\n if (status !== 0) return null\n const stats = AudioStreamStatsStruct.unpackInto(storage.view, storage.result) as NativeAudioStreamStats\n return { ...stats }\n }\n\n public audioCloseStream(\n engine: AudioEngineHandle,\n streamId: number,\n reason: NativeAudioStreamCloseReason,\n ): { status: number; stats: NativeAudioStreamStats | null } {\n const storage = this.ffiStructStorage.audioStreamStats\n const status = this.opentui.symbols.audioCloseStream(engine, streamId, reason, storage.buffer)\n if (status !== 0) return { status, stats: null }\n const stats = AudioStreamStatsStruct.unpackInto(storage.view, storage.result) as NativeAudioStreamStats\n return { status, stats: { ...stats } }\n }\n\n public audioLoad(engine: Pointer, data: Uint8Array): { status: number; soundId: number | null } {\n const outBuffer = new ArrayBuffer(4)\n const dataLength = toSafeFFIU32Length(data.byteLength, \"Audio data length\")\n const status = this.opentui.symbols.audioLoad(engine, ptr(data), dataLength, ptr(outBuffer))\n if (status !== 0) {\n return { status, soundId: null }\n }\n const view = new Uint32Array(outBuffer)\n return { status, soundId: view[0] }\n }\n\n public audioUnload(engine: Pointer, soundId: number): number {\n return this.opentui.symbols.audioUnload(engine, soundId)\n }\n\n public audioPlay(\n engine: Pointer,\n soundId: number,\n options?: AudioVoiceOptions,\n ): { status: number; voiceId: number | null } {\n if (options?.groupId !== undefined && !isFFIU32(options.groupId)) return { status: -1, voiceId: null }\n const outBuffer = new ArrayBuffer(4)\n const optionsBuffer = options ? AudioVoiceOptionsStruct.pack(options) : null\n const status = this.opentui.symbols.audioPlay(\n engine,\n soundId,\n optionsBuffer ? ptr(optionsBuffer) : null,\n ptr(outBuffer),\n )\n if (status !== 0) {\n return { status, voiceId: null }\n }\n const view = new Uint32Array(outBuffer)\n return { status, voiceId: view[0] }\n }\n\n public audioStopVoice(engine: Pointer, voiceId: number): number {\n return this.opentui.symbols.audioStopVoice(engine, voiceId)\n }\n\n public audioSetVoiceGroup(engine: Pointer, voiceId: number, groupId: number): number {\n if (!isFFIU32(groupId)) return -1\n return this.opentui.symbols.audioSetVoiceGroup(engine, voiceId, groupId)\n }\n\n public audioCreateGroup(engine: Pointer, name: string): { status: number; groupId: number | null } {\n const outBuffer = new ArrayBuffer(4)\n const nameBytes = this.encoder.encode(name)\n const nameLength = toSafeFFIU32Length(nameBytes.byteLength, \"Audio group name length\")\n const status = this.opentui.symbols.audioCreateGroup(engine, ptr(nameBytes), nameLength, ptr(outBuffer))\n if (status !== 0) {\n return { status, groupId: null }\n }\n const view = new Uint32Array(outBuffer)\n return { status, groupId: view[0] }\n }\n\n public audioSetGroupVolume(engine: Pointer, groupId: number, volume: number): number {\n return this.opentui.symbols.audioSetGroupVolume(engine, groupId, volume)\n }\n\n public audioSetMasterVolume(engine: Pointer, volume: number): number {\n return this.opentui.symbols.audioSetMasterVolume(engine, volume)\n }\n\n public audioMixToBuffer(engine: Pointer, outBuffer: Float32Array, frameCount: number, channels: number): number {\n return this.opentui.symbols.audioMixToBuffer(engine, ptr(outBuffer), frameCount, channels)\n }\n\n public audioEnableTap(engine: Pointer, enabled: boolean, capacityFrames: number): number {\n return this.opentui.symbols.audioEnableTap(engine, ffiBool(enabled), capacityFrames)\n }\n\n public audioReadTap(\n engine: Pointer,\n outBuffer: Float32Array,\n frameCount: number,\n channels: number,\n ): { status: number; framesRead: number } {\n const outFramesReadBuffer = new ArrayBuffer(4)\n const status = this.opentui.symbols.audioReadTap(\n engine,\n ptr(outBuffer),\n frameCount,\n channels,\n ptr(outFramesReadBuffer),\n )\n if (status !== 0) {\n return { status, framesRead: 0 }\n }\n const view = new Uint32Array(outFramesReadBuffer)\n return { status, framesRead: view[0] ?? 0 }\n }\n\n public audioGetStats(engine: Pointer): AudioStats | null {\n const statsBuffer = new ArrayBuffer(AudioStatsStruct.size)\n const status = this.opentui.symbols.audioGetStats(engine, ptr(statsBuffer))\n if (status !== 0) {\n return null\n }\n const stats = AudioStatsStruct.unpack(statsBuffer)\n return {\n soundsLoaded: stats.soundsLoaded,\n voicesActive: stats.voicesActive,\n framesMixed: typeof stats.framesMixed === \"bigint\" ? stats.framesMixed : BigInt(stats.framesMixed),\n lockMisses: stats.lockMisses,\n lastPeak: stats.lastPeak,\n lastRms: stats.lastRms,\n }\n }\n\n public registerNativeSpanFeedStream(stream: Pointer, handler: NativeSpanFeedEventHandler): void {\n const callback = this.ensureNativeSpanFeedCallback()\n this.nativeSpanFeedHandlers.set(stream, handler)\n this.opentui.symbols.streamSetCallback(stream, callback.ptr)\n }\n\n public unregisterNativeSpanFeedStream(stream: Pointer): void {\n this.opentui.symbols.streamSetCallback(stream, null)\n this.nativeSpanFeedHandlers.delete(stream)\n }\n\n public createNativeSpanFeed(options?: NativeSpanFeedOptions | null): Pointer {\n const optionsBuffer = options == null ? null : NativeSpanFeedOptionsStruct.pack(options)\n const streamPtr = this.opentui.symbols.createNativeSpanFeed(optionsBuffer ? ptr(optionsBuffer) : null)\n if (!streamPtr) {\n throw new Error(\"Failed to create stream\")\n }\n return streamPtr\n }\n\n public attachNativeSpanFeed(stream: Pointer): number {\n return this.opentui.symbols.attachNativeSpanFeed(stream)\n }\n\n public destroyNativeSpanFeed(stream: Pointer): void {\n this.opentui.symbols.destroyNativeSpanFeed(stream)\n this.nativeSpanFeedHandlers.delete(stream)\n }\n\n public streamWrite(stream: Pointer, data: Uint8Array | string): number {\n const bytes = typeof data === \"string\" ? this.encoder.encode(data) : data\n return this.opentui.symbols.streamWrite(stream, ptrOrNull(bytes), bytes.byteLength)\n }\n\n public streamCommit(stream: Pointer): number {\n return this.opentui.symbols.streamCommit(stream)\n }\n\n public streamDrainSpans(stream: Pointer, outBuffer: Uint8Array, maxSpans: number): number {\n const count = this.opentui.symbols.streamDrainSpans(stream, ptr(outBuffer), maxSpans)\n return toNumber(count)\n }\n\n public streamClose(stream: Pointer): number {\n return this.opentui.symbols.streamClose(stream)\n }\n\n public streamSetOptions(stream: Pointer, options: NativeSpanFeedOptions): number {\n const optionsBuffer = NativeSpanFeedOptionsStruct.pack(options)\n return this.opentui.symbols.streamSetOptions(stream, ptr(optionsBuffer))\n }\n\n public streamGetStats(stream: Pointer): NativeSpanFeedStats | null {\n const statsBuffer = new ArrayBuffer(NativeSpanFeedStatsStruct.size)\n const status = this.opentui.symbols.streamGetStats(stream, ptr(statsBuffer))\n if (status !== 0) {\n return null\n }\n const stats = NativeSpanFeedStatsStruct.unpack(statsBuffer)\n return {\n bytesWritten: typeof stats.bytesWritten === \"bigint\" ? stats.bytesWritten : BigInt(stats.bytesWritten),\n spansCommitted: typeof stats.spansCommitted === \"bigint\" ? stats.spansCommitted : BigInt(stats.spansCommitted),\n chunks: stats.chunks,\n pendingSpans: stats.pendingSpans,\n }\n }\n\n public streamReserve(stream: Pointer, minLen: number): { status: number; info: ReserveInfo | null } {\n const reserveBuffer = new ArrayBuffer(ReserveInfoStruct.size)\n const status = this.opentui.symbols.streamReserve(stream, minLen, ptr(reserveBuffer))\n if (status !== 0) {\n return { status, info: null }\n }\n return { status, info: ReserveInfoStruct.unpack(reserveBuffer) }\n }\n\n public streamCommitReserved(stream: Pointer, length: number): number {\n return this.opentui.symbols.streamCommitReserved(stream, length)\n }\n\n public createSyntaxStyle(): SyntaxStyleHandle {\n const styleHandle = this.opentui.symbols.createSyntaxStyle() as SyntaxStyleHandle\n if (!styleHandle) {\n throw new Error(\"Failed to create SyntaxStyle\")\n }\n return styleHandle\n }\n\n public destroySyntaxStyle(style: SyntaxStyleHandle): void {\n this.opentui.symbols.destroySyntaxStyle(style)\n }\n\n public syntaxStyleRegister(\n style: SyntaxStyleHandle,\n name: string,\n fg: RGBA | null,\n bg: RGBA | null,\n attributes: number,\n ): number {\n const nameBytes = this.encoder.encode(name)\n const fgPtr = optionalRgbaPtr(fg)\n const bgPtr = optionalRgbaPtr(bg)\n return this.opentui.symbols.syntaxStyleRegister(\n style,\n ptrOrNull(nameBytes),\n nameBytes.byteLength,\n fgPtr,\n bgPtr,\n attributes,\n )\n }\n\n public syntaxStyleResolveByName(style: SyntaxStyleHandle, name: string): number | null {\n const nameBytes = this.encoder.encode(name)\n const id = this.opentui.symbols.syntaxStyleResolveByName(style, ptrOrNull(nameBytes), nameBytes.byteLength)\n return id === 0 ? null : id\n }\n\n public syntaxStyleGetStyleCount(style: SyntaxStyleHandle): number {\n return this.opentui.symbols.syntaxStyleGetStyleCount(style)\n }\n\n private imageHandleResult(status: number, output: Uint32Array): { status: number; handle: ImageHandle | null } {\n return { status, handle: status === 0 && output[0] !== 0 ? (output[0] as ImageHandle) : null }\n }\n\n public imageInfo(data: Uint8Array): { status: number; info: NativeImageInfo } {\n const length = toSafeFFIU32Length(data.byteLength, \"image data\")\n const output = new ArrayBuffer(NativeImageInfoStruct.size)\n const status = this.opentui.symbols.imageInfo(data.byteLength === 0 ? null : data, length, output)\n return { status, info: NativeImageInfoStruct.unpack(output) }\n }\n\n public imageDecode(data: Uint8Array): { status: number; handle: ImageHandle | null } {\n const length = toSafeFFIU32Length(data.byteLength, \"image data\")\n const output = new Uint32Array(1)\n return this.imageHandleResult(\n this.opentui.symbols.imageDecode(data.byteLength === 0 ? null : data, length, output),\n output,\n )\n }\n\n public imageCreateFromRgba(\n pixels: Uint8Array,\n width: number,\n height: number,\n stride: number,\n ): { status: number; handle: ImageHandle | null } {\n const output = new Uint32Array(1)\n const status = this.opentui.symbols.imageCreateFromRgba(\n pixels.byteLength === 0 ? null : pixels,\n BigInt(pixels.byteLength),\n width,\n height,\n stride,\n output,\n )\n return this.imageHandleResult(status, output)\n }\n\n public imageDestroy(image: ImageHandle): void {\n this.opentui.symbols.imageDestroy(image)\n }\n\n public imageRetain(image: ImageHandle): { status: number; handle: ImageHandle | null } {\n const output = new Uint32Array(1)\n return this.imageHandleResult(this.opentui.symbols.imageRetain(image, output), output)\n }\n\n public imageRetainIccCache(): void {\n this.opentui.symbols.imageRetainIccCache()\n }\n\n public imageReleaseIccCache(): void {\n this.opentui.symbols.imageReleaseIccCache()\n }\n\n public imageTestFailIccProfileCopyAllocationOnce(): void {\n this.opentui.symbols.imageTestFailIccProfileCopyAllocationOnce()\n }\n\n public imageGetInfo(image: ImageHandle): { status: number; info: NativeImageInfo } {\n const output = new ArrayBuffer(NativeImageInfoStruct.size)\n const status = this.opentui.symbols.imageGetInfo(image, output)\n return { status, info: NativeImageInfoStruct.unpack(output) }\n }\n\n public imageGetPixelsPtr(image: ImageHandle): Pointer | null {\n const pointer = this.opentui.symbols.imageGetPixelsPtr(image)\n return pointer === null || pointer === 0 || pointer === 0n ? null : pointer\n }\n\n public imageMaterialize(image: ImageHandle): number {\n return this.opentui.symbols.imageMaterialize(image)\n }\n\n public imageEnsureEncodedPng(image: ImageHandle): number {\n return this.opentui.symbols.imageEnsureEncodedPng(image)\n }\n\n public imageClone(image: ImageHandle): { status: number; handle: ImageHandle | null } {\n const output = new Uint32Array(1)\n return this.imageHandleResult(this.opentui.symbols.imageClone(image, output), output)\n }\n\n public imageCopyPixels(image: ImageHandle, destination: Uint8Array, stride: number, bgra: boolean): number {\n return this.opentui.symbols.imageCopyPixels(\n image,\n destination.byteLength === 0 ? null : destination,\n BigInt(destination.byteLength),\n stride,\n bgra ? 1 : 0,\n )\n }\n\n public imageResize(\n image: ImageHandle,\n width: number,\n height: number,\n filter: number,\n ): { status: number; handle: ImageHandle | null } {\n const output = new Uint32Array(1)\n return this.imageHandleResult(this.opentui.symbols.imageResize(image, width, height, filter, output), output)\n }\n\n public imageExtract(\n image: ImageHandle,\n left: number,\n top: number,\n width: number,\n height: number,\n ): { status: number; handle: ImageHandle | null } {\n const output = new Uint32Array(1)\n return this.imageHandleResult(this.opentui.symbols.imageExtract(image, left, top, width, height, output), output)\n }\n\n public imageExtend(\n image: ImageHandle,\n top: number,\n right: number,\n bottom: number,\n left: number,\n background: Uint8Array,\n ): { status: number; handle: ImageHandle | null } {\n if (!(background instanceof Uint8Array) || background.byteLength !== 4) return { status: 7, handle: null }\n const output = new Uint32Array(1)\n return this.imageHandleResult(\n this.opentui.symbols.imageExtend(image, top, right, bottom, left, background, output),\n output,\n )\n }\n\n public imageTransform(image: ImageHandle, operation: number): { status: number; handle: ImageHandle | null } {\n const output = new Uint32Array(1)\n return this.imageHandleResult(this.opentui.symbols.imageTransform(image, operation, output), output)\n }\n\n public imageComposite(\n base: ImageHandle,\n overlay: ImageHandle,\n left: number,\n top: number,\n blend: number,\n opacity: number,\n ): { status: number; handle: ImageHandle | null } {\n const output = new Uint32Array(1)\n return this.imageHandleResult(\n this.opentui.symbols.imageComposite(base, overlay, left, top, blend, opacity, output),\n output,\n )\n }\n\n public editorViewSetPlaceholderStyledText(\n view: EditorViewHandle,\n chunks: Array<{ text: string; fg?: RGBA | null; bg?: RGBA | null; attributes?: number }>,\n ): void {\n const nonEmptyChunks = chunks.filter((c) => c.text.length > 0)\n if (nonEmptyChunks.length === 0) {\n this.opentui.symbols.editorViewSetPlaceholderStyledText(view, null, 0)\n return\n }\n\n const chunksBuffer = StyledChunkStruct.packList(nonEmptyChunks)\n this.opentui.symbols.editorViewSetPlaceholderStyledText(view, chunksBuffer, nonEmptyChunks.length)\n }\n\n public editorViewSetTabIndicator(view: EditorViewHandle, indicator: number): void {\n this.opentui.symbols.editorViewSetTabIndicator(view, indicator)\n }\n\n public editorViewSetTabIndicatorColor(view: EditorViewHandle, color: RGBA): void {\n this.opentui.symbols.editorViewSetTabIndicatorColor(view, rgbaPtr(color))\n }\n\n public onNativeEvent(name: string, handler: (data: ArrayBuffer) => void): void {\n this._nativeEvents.on(name, handler)\n }\n\n public onceNativeEvent(name: string, handler: (data: ArrayBuffer) => void): void {\n this._nativeEvents.once(name, handler)\n }\n\n public offNativeEvent(name: string, handler: (data: ArrayBuffer) => void): void {\n this._nativeEvents.off(name, handler)\n }\n\n public onAnyNativeEvent(handler: (name: string, data: ArrayBuffer) => void): void {\n this._anyEventHandlers.push(handler)\n }\n}\n\nlet opentuiLibPath: string | undefined\nlet opentuiLib: RenderLib | undefined\nlet renderLibResolved = false\n\nexport function setRenderLibPath(libPath: string) {\n if (opentuiLibPath !== libPath) {\n if (renderLibResolved) {\n throw new Error(\"setRenderLibPath() must be called before resolveRenderLib()\")\n }\n if (opentuiLib instanceof FFIRenderLib) {\n opentuiLib.dispose()\n }\n opentuiLibPath = libPath\n opentuiLib = undefined\n }\n}\n\nexport function resolveRenderLib(): RenderLib {\n if (!opentuiLib) {\n try {\n opentuiLib = new FFIRenderLib(opentuiLibPath)\n } catch (error) {\n throw new Error(\n `Failed to initialize OpenTUI render library: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n )\n }\n }\n renderLibResolved = true\n return opentuiLib\n}\n\n// Try eager loading\ntry {\n opentuiLib = new FFIRenderLib(opentuiLibPath)\n} catch (error) {}\n",
17
17
  "export type RGBTriplet = readonly [number, number, number]\nexport type ColorIntent = \"rgb\" | \"indexed\" | \"default\"\nexport type ColorInput = string | RGBA\n\nexport const DEFAULT_FOREGROUND_RGB: RGBTriplet = [255, 255, 255]\nexport const DEFAULT_BACKGROUND_RGB: RGBTriplet = [0, 0, 0]\n\nconst INTENT_RGB = 0\nconst INTENT_INDEXED = 1\nconst INTENT_DEFAULT = 2\n\nconst ANSI16_RGB: readonly RGBTriplet[] = [\n [0x00, 0x00, 0x00],\n [0x80, 0x00, 0x00],\n [0x00, 0x80, 0x00],\n [0x80, 0x80, 0x00],\n [0x00, 0x00, 0x80],\n [0x80, 0x00, 0x80],\n [0x00, 0x80, 0x80],\n [0xc0, 0xc0, 0xc0],\n [0x80, 0x80, 0x80],\n [0xff, 0x00, 0x00],\n [0x00, 0xff, 0x00],\n [0xff, 0xff, 0x00],\n [0x00, 0x00, 0xff],\n [0xff, 0x00, 0xff],\n [0x00, 0xff, 0xff],\n [0xff, 0xff, 0xff],\n]\n\nconst ANSI_256_CUBE_LEVELS = [0, 95, 135, 175, 215, 255] as const\n\nexport interface NormalizedColorValue {\n rgba: RGBA\n}\n\nfunction packMeta(intent: number, slot = 0): number {\n return ((slot & 0xff) | ((intent & 0xff) << 8)) >>> 0\n}\n\nfunction toU8(value: number): number {\n return Math.round(Math.max(0, Math.min(1, Number.isFinite(value) ? value : 0)) * 255)\n}\n\nfunction toByte(value: number): number {\n return Math.round(Math.max(0, Math.min(255, Number.isFinite(value) ? value : 0)))\n}\n\nfunction packRGBA8(r: number, g: number, b: number, a: number, meta: number): Uint16Array {\n return new Uint16Array([\n (toByte(r) & 0xff) | (((meta >>> 0) & 0xff) << 8),\n (toByte(g) & 0xff) | (((meta >>> 8) & 0xff) << 8),\n (toByte(b) & 0xff) | (((meta >>> 16) & 0xff) << 8),\n (toByte(a) & 0xff) | (((meta >>> 24) & 0xff) << 8),\n ])\n}\n\nfunction rgbaForAnsi256Index(index: number): RGBA {\n const [r, g, b] = ansi256IndexToRgb(index)\n return RGBA.fromInts(r, g, b)\n}\n\nexport function normalizeIndexedColorIndex(index: number): number {\n if (!Number.isInteger(index) || index < 0 || index > 255) {\n throw new RangeError(`Indexed color must be an integer in the range 0..255, got ${index}`)\n }\n\n return index\n}\n\nexport function ansi256IndexToRgb(index: number): RGBTriplet {\n const normalizedIndex = normalizeIndexedColorIndex(index)\n\n if (normalizedIndex < ANSI16_RGB.length) {\n return ANSI16_RGB[normalizedIndex]\n }\n\n if (normalizedIndex < 232) {\n const cubeIndex = normalizedIndex - 16\n const r = Math.floor(cubeIndex / 36)\n const g = Math.floor(cubeIndex / 6) % 6\n const b = cubeIndex % 6\n return [ANSI_256_CUBE_LEVELS[r], ANSI_256_CUBE_LEVELS[g], ANSI_256_CUBE_LEVELS[b]]\n }\n\n const value = 8 + (normalizedIndex - 232) * 10\n return [value, value, value]\n}\n\nexport class RGBA {\n buffer: Uint16Array\n\n constructor(buffer: Uint16Array) {\n this.buffer = new Uint16Array(4)\n this.buffer.set(buffer.subarray(0, 4))\n }\n\n static fromArray(array: Uint16Array): RGBA {\n return new RGBA(array)\n }\n\n static fromValues(r: number, g: number, b: number, a: number = 1): RGBA {\n return new RGBA(packRGBA8(toU8(r), toU8(g), toU8(b), toU8(a), packMeta(INTENT_RGB)))\n }\n\n static clone(rgba: RGBA): RGBA {\n return new RGBA(rgba.buffer)\n }\n\n static fromInts(r: number, g: number, b: number, a: number = 255): RGBA {\n return new RGBA(packRGBA8(r, g, b, a, packMeta(INTENT_RGB)))\n }\n\n static fromHex(hex: string): RGBA {\n return hexToRgb(hex)\n }\n\n static fromIndex(index: number, snapshot?: ColorInput): RGBA {\n const normalized = normalizeIndexedColorIndex(index)\n const rgba = snapshot ? parseColor(snapshot) : rgbaForAnsi256Index(normalized)\n const [r, g, b, a] = rgba.toInts()\n return new RGBA(packRGBA8(r, g, b, a, packMeta(INTENT_INDEXED, normalized)))\n }\n\n static defaultForeground(snapshot?: ColorInput): RGBA {\n const rgba = snapshot ? parseColor(snapshot) : RGBA.fromInts(...DEFAULT_FOREGROUND_RGB)\n const [r, g, b, a] = rgba.toInts()\n return new RGBA(packRGBA8(r, g, b, a, packMeta(INTENT_DEFAULT)))\n }\n\n static defaultBackground(snapshot?: ColorInput): RGBA {\n const rgba = snapshot ? parseColor(snapshot) : RGBA.fromInts(...DEFAULT_BACKGROUND_RGB)\n const [r, g, b, a] = rgba.toInts()\n return new RGBA(packRGBA8(r, g, b, a, packMeta(INTENT_DEFAULT)))\n }\n\n toInts(): [number, number, number, number] {\n return [this.buffer[0] & 0xff, this.buffer[1] & 0xff, this.buffer[2] & 0xff, this.buffer[3] & 0xff]\n }\n\n get r(): number {\n return (this.buffer[0] & 0xff) / 255\n }\n\n set r(value: number) {\n this.buffer[0] = (this.buffer[0] & 0xff00) | toU8(value)\n }\n\n get g(): number {\n return (this.buffer[1] & 0xff) / 255\n }\n\n set g(value: number) {\n this.buffer[1] = (this.buffer[1] & 0xff00) | toU8(value)\n }\n\n get b(): number {\n return (this.buffer[2] & 0xff) / 255\n }\n\n set b(value: number) {\n this.buffer[2] = (this.buffer[2] & 0xff00) | toU8(value)\n }\n\n get a(): number {\n return (this.buffer[3] & 0xff) / 255\n }\n\n set a(value: number) {\n this.buffer[3] = (this.buffer[3] & 0xff00) | toU8(value)\n }\n\n get meta(): number {\n return (\n ((this.buffer[0] >>> 8) |\n ((this.buffer[1] >>> 8) << 8) |\n ((this.buffer[2] >>> 8) << 16) |\n ((this.buffer[3] >>> 8) << 24)) >>>\n 0\n )\n }\n\n get intent(): ColorIntent {\n switch ((this.meta >>> 8) & 0xff) {\n case INTENT_INDEXED:\n return \"indexed\"\n case INTENT_DEFAULT:\n return \"default\"\n default:\n return \"rgb\"\n }\n }\n\n get slot(): number {\n return this.meta & 0xff\n }\n\n map<R>(fn: (value: number) => R): [R, R, R, R] {\n return [fn(this.r), fn(this.g), fn(this.b), fn(this.a)]\n }\n\n toString(): string {\n return `rgba(${this.r.toFixed(2)}, ${this.g.toFixed(2)}, ${this.b.toFixed(2)}, ${this.a.toFixed(2)})`\n }\n\n equals(other?: RGBA): boolean {\n if (!other) return false\n return (\n this.buffer[0] === other.buffer[0] &&\n this.buffer[1] === other.buffer[1] &&\n this.buffer[2] === other.buffer[2] &&\n this.buffer[3] === other.buffer[3]\n )\n }\n}\n\nexport function normalizeColorValue(value: ColorInput | null | undefined): NormalizedColorValue | null {\n if (value == null) return null\n return { rgba: parseColor(value) }\n}\n\nexport function hexToRgb(hex: string): RGBA {\n hex = hex.replace(/^#/, \"\")\n\n if (hex.length === 3) {\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2]\n } else if (hex.length === 4) {\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2] + hex[3] + hex[3]\n }\n\n if (!/^[0-9A-Fa-f]{6}$/.test(hex) && !/^[0-9A-Fa-f]{8}$/.test(hex)) {\n console.warn(`Invalid hex color: ${hex}, defaulting to magenta`)\n return RGBA.fromValues(1, 0, 1, 1)\n }\n\n const r = parseInt(hex.substring(0, 2), 16)\n const g = parseInt(hex.substring(2, 4), 16)\n const b = parseInt(hex.substring(4, 6), 16)\n const a = hex.length === 8 ? parseInt(hex.substring(6, 8), 16) : 255\n\n return RGBA.fromInts(r, g, b, a)\n}\n\nexport function rgbToHex(rgb: RGBA): string {\n const [r, g, b, a] = rgb.toInts()\n const components = a === 255 ? [r, g, b] : [r, g, b, a]\n return \"#\" + components.map((x) => x.toString(16).padStart(2, \"0\")).join(\"\")\n}\n\nexport function hsvToRgb(h: number, s: number, v: number): RGBA {\n let r = 0,\n g = 0,\n b = 0\n\n const i = Math.floor(h / 60) % 6\n const f = h / 60 - Math.floor(h / 60)\n const p = v * (1 - s)\n const q = v * (1 - f * s)\n const t = v * (1 - (1 - f) * s)\n\n switch (i) {\n case 0:\n r = v\n g = t\n b = p\n break\n case 1:\n r = q\n g = v\n b = p\n break\n case 2:\n r = p\n g = v\n b = t\n break\n case 3:\n r = p\n g = q\n b = v\n break\n case 4:\n r = t\n g = p\n b = v\n break\n case 5:\n r = v\n g = p\n b = q\n break\n }\n\n return RGBA.fromValues(r, g, b, 1)\n}\n\nconst CSS_COLOR_NAMES: Record<string, string> = {\n black: \"#000000\",\n white: \"#FFFFFF\",\n red: \"#FF0000\",\n green: \"#008000\",\n blue: \"#0000FF\",\n yellow: \"#FFFF00\",\n cyan: \"#00FFFF\",\n magenta: \"#FF00FF\",\n silver: \"#C0C0C0\",\n gray: \"#808080\",\n grey: \"#808080\",\n maroon: \"#800000\",\n olive: \"#808000\",\n lime: \"#00FF00\",\n aqua: \"#00FFFF\",\n teal: \"#008080\",\n navy: \"#000080\",\n fuchsia: \"#FF00FF\",\n purple: \"#800080\",\n orange: \"#FFA500\",\n brightblack: \"#666666\",\n brightred: \"#FF6666\",\n brightgreen: \"#66FF66\",\n brightblue: \"#6666FF\",\n brightyellow: \"#FFFF66\",\n brightcyan: \"#66FFFF\",\n brightmagenta: \"#FF66FF\",\n brightwhite: \"#FFFFFF\",\n}\n\nexport function parseColor(color: ColorInput): RGBA {\n if (typeof color === \"string\") {\n const lowerColor = color.toLowerCase()\n\n if (lowerColor === \"transparent\") {\n return RGBA.fromValues(0, 0, 0, 0)\n }\n\n if (CSS_COLOR_NAMES[lowerColor]) {\n return hexToRgb(CSS_COLOR_NAMES[lowerColor])\n }\n\n return hexToRgb(color)\n }\n return color\n}\n",
18
18
  "import type { ColorInput } from \"./RGBA.js\"\n\nexport interface BorderCharacters {\n topLeft: string\n topRight: string\n bottomLeft: string\n bottomRight: string\n horizontal: string\n vertical: string\n topT: string\n bottomT: string\n leftT: string\n rightT: string\n cross: string\n}\n\nexport type BorderStyle = \"single\" | \"double\" | \"rounded\" | \"heavy\"\nexport type BorderSides = \"top\" | \"right\" | \"bottom\" | \"left\"\n\nconst VALID_BORDER_STYLES: readonly BorderStyle[] = [\"single\", \"double\", \"rounded\", \"heavy\"] as const\n\nexport function isValidBorderStyle(value: unknown): value is BorderStyle {\n return typeof value === \"string\" && VALID_BORDER_STYLES.includes(value as BorderStyle)\n}\n\nexport function parseBorderStyle(value: unknown, fallback: BorderStyle = \"single\"): BorderStyle {\n if (isValidBorderStyle(value)) {\n return value\n }\n\n if (value !== undefined && value !== null) {\n console.warn(\n `Invalid borderStyle \"${value}\", falling back to \"${fallback}\". Valid values are: ${VALID_BORDER_STYLES.join(\", \")}`,\n )\n }\n return fallback\n}\n\nexport const BorderChars: Record<BorderStyle, BorderCharacters> = {\n single: {\n topLeft: \"┌\",\n topRight: \"┐\",\n bottomLeft: \"└\",\n bottomRight: \"┘\",\n horizontal: \"─\",\n vertical: \"│\",\n topT: \"┬\",\n bottomT: \"┴\",\n leftT: \"├\",\n rightT: \"┤\",\n cross: \"┼\",\n },\n double: {\n topLeft: \"╔\",\n topRight: \"╗\",\n bottomLeft: \"╚\",\n bottomRight: \"╝\",\n horizontal: \"═\",\n vertical: \"║\",\n topT: \"╦\",\n bottomT: \"╩\",\n leftT: \"╠\",\n rightT: \"╣\",\n cross: \"╬\",\n },\n rounded: {\n topLeft: \"╭\",\n topRight: \"╮\",\n bottomLeft: \"╰\",\n bottomRight: \"╯\",\n horizontal: \"─\",\n vertical: \"│\",\n topT: \"┬\",\n bottomT: \"┴\",\n leftT: \"├\",\n rightT: \"┤\",\n cross: \"┼\",\n },\n heavy: {\n topLeft: \"┏\",\n topRight: \"┓\",\n bottomLeft: \"┗\",\n bottomRight: \"┛\",\n horizontal: \"━\",\n vertical: \"┃\",\n topT: \"┳\",\n bottomT: \"┻\",\n leftT: \"┣\",\n rightT: \"┫\",\n cross: \"╋\",\n },\n}\n\nexport interface BorderConfig {\n borderStyle: BorderStyle\n border: boolean | BorderSides[]\n borderColor?: ColorInput\n customBorderChars?: BorderCharacters\n}\n\nexport interface BoxDrawOptions {\n x: number\n y: number\n width: number\n height: number\n borderStyle: BorderStyle\n border: boolean | BorderSides[]\n borderColor: ColorInput\n customBorderChars?: BorderCharacters\n backgroundColor: ColorInput\n shouldFill?: boolean\n title?: string\n titleAlignment?: \"left\" | \"center\" | \"right\"\n bottomTitle?: string\n bottomTitleAlignment?: \"left\" | \"center\" | \"right\"\n}\n\nexport interface BorderSidesConfig {\n top: boolean\n right: boolean\n bottom: boolean\n left: boolean\n}\n\nexport function getBorderFromSides(sides: BorderSidesConfig): boolean | BorderSides[] {\n const result: BorderSides[] = []\n if (sides.top) result.push(\"top\")\n if (sides.right) result.push(\"right\")\n if (sides.bottom) result.push(\"bottom\")\n if (sides.left) result.push(\"left\")\n return result.length > 0 ? result : false\n}\n\nexport function getBorderSides(border: boolean | BorderSides[]): BorderSidesConfig {\n return border === true\n ? { top: true, right: true, bottom: true, left: true }\n : Array.isArray(border)\n ? {\n top: border.includes(\"top\"),\n right: border.includes(\"right\"),\n bottom: border.includes(\"bottom\"),\n left: border.includes(\"left\"),\n }\n : { top: false, right: false, bottom: false, left: false }\n}\n\n// Convert BorderCharacters to Uint32Array for passing to Zig\nexport function borderCharsToArray(chars: BorderCharacters): Uint32Array {\n const array = new Uint32Array(11)\n array[0] = chars.topLeft.codePointAt(0)!\n array[1] = chars.topRight.codePointAt(0)!\n array[2] = chars.bottomLeft.codePointAt(0)!\n array[3] = chars.bottomRight.codePointAt(0)!\n array[4] = chars.horizontal.codePointAt(0)!\n array[5] = chars.vertical.codePointAt(0)!\n array[6] = chars.topT.codePointAt(0)!\n array[7] = chars.bottomT.codePointAt(0)!\n array[8] = chars.leftT.codePointAt(0)!\n array[9] = chars.rightT.codePointAt(0)!\n array[10] = chars.cross.codePointAt(0)!\n return array\n}\n\n// Pre-converted border character arrays for performance\nexport const BorderCharArrays: Record<BorderStyle, Uint32Array> = {\n single: borderCharsToArray(BorderChars.single),\n double: borderCharsToArray(BorderChars.double),\n rounded: borderCharsToArray(BorderChars.rounded),\n heavy: borderCharsToArray(BorderChars.heavy),\n}\n",
19
19
  "import { EventEmitter } from \"events\"\nimport { type KeyEventType, type ParsedKey } from \"./parse.keypress.js\"\nimport type { PasteMetadata } from \"./paste.js\"\n\nexport class KeyEvent implements ParsedKey {\n name: string\n ctrl: boolean\n meta: boolean\n shift: boolean\n option: boolean\n sequence: string\n number: boolean\n raw: string\n eventType: KeyEventType\n source: \"raw\" | \"kitty\"\n code?: string\n super?: boolean\n hyper?: boolean\n capsLock?: boolean\n numLock?: boolean\n baseCode?: number\n repeated?: boolean\n\n private _defaultPrevented: boolean = false\n private _propagationStopped: boolean = false\n\n constructor(key: ParsedKey) {\n this.name = key.name\n this.ctrl = key.ctrl\n this.meta = key.meta\n this.shift = key.shift\n this.option = key.option\n this.sequence = key.sequence\n this.number = key.number\n this.raw = key.raw\n this.eventType = key.eventType\n this.source = key.source\n this.code = key.code\n this.super = key.super\n this.hyper = key.hyper\n this.capsLock = key.capsLock\n this.numLock = key.numLock\n this.baseCode = key.baseCode\n this.repeated = key.repeated\n }\n\n get defaultPrevented(): boolean {\n return this._defaultPrevented\n }\n\n get propagationStopped(): boolean {\n return this._propagationStopped\n }\n\n preventDefault(): void {\n this._defaultPrevented = true\n }\n\n stopPropagation(): void {\n this._propagationStopped = true\n }\n}\n\nexport class PasteEvent {\n type = \"paste\" as const\n bytes: Uint8Array\n metadata?: PasteMetadata\n private _defaultPrevented: boolean = false\n private _propagationStopped: boolean = false\n\n constructor(bytes: Uint8Array, metadata?: PasteMetadata) {\n this.bytes = bytes\n this.metadata = metadata\n }\n\n get defaultPrevented(): boolean {\n return this._defaultPrevented\n }\n\n get propagationStopped(): boolean {\n return this._propagationStopped\n }\n\n preventDefault(): void {\n this._defaultPrevented = true\n }\n\n stopPropagation(): void {\n this._propagationStopped = true\n }\n}\n\nexport type KeyHandlerEventMap = {\n keypress: [KeyEvent]\n keyrelease: [KeyEvent]\n paste: [PasteEvent]\n}\n\nexport class KeyHandler extends EventEmitter<KeyHandlerEventMap> {\n public processParsedKey(parsedKey: ParsedKey): boolean {\n try {\n switch (parsedKey.eventType) {\n case \"press\":\n this.emit(\"keypress\", new KeyEvent(parsedKey))\n break\n case \"release\":\n this.emit(\"keyrelease\", new KeyEvent(parsedKey))\n break\n default:\n this.emit(\"keypress\", new KeyEvent(parsedKey))\n break\n }\n } catch (error) {\n console.error(`[KeyHandler] Error processing parsed key:`, error)\n return true\n }\n\n return true\n }\n\n public processPaste(bytes: Uint8Array, metadata?: PasteMetadata): void {\n try {\n this.emit(\"paste\", new PasteEvent(bytes, metadata))\n } catch (error) {\n console.error(`[KeyHandler] Error processing paste:`, error)\n }\n }\n}\n\n/**\n * This class is used internally by the renderer to ensure global handlers\n * can preventDefault before renderable handlers process events.\n */\nexport class InternalKeyHandler extends KeyHandler {\n private renderableHandlers: Map<keyof KeyHandlerEventMap, Set<Function>> = new Map()\n\n public emit<K extends keyof KeyHandlerEventMap>(event: K, ...args: KeyHandlerEventMap[K]): boolean {\n return this.emitWithPriority(event, ...args)\n }\n\n private emitWithPriority<K extends keyof KeyHandlerEventMap>(event: K, ...args: KeyHandlerEventMap[K]): boolean {\n let hasGlobalListeners = false\n\n // Check if we should emit to global handlers\n // Global handlers are emitted using the parent EventEmitter which calls all listeners\n // We need to manually iterate to check for stopPropagation between handlers\n const globalListeners = this.listeners(event as any)\n if (globalListeners.length > 0) {\n hasGlobalListeners = true\n\n for (const listener of globalListeners) {\n try {\n listener(...args)\n } catch (error) {\n console.error(`[KeyHandler] Error in global ${event} handler:`, error)\n }\n\n // Check if propagation was stopped after this handler\n if (event === \"keypress\" || event === \"keyrelease\" || event === \"paste\") {\n const keyEvent = args[0]\n if (keyEvent.propagationStopped) {\n return hasGlobalListeners\n }\n }\n }\n }\n\n const renderableSet = this.renderableHandlers.get(event)\n // Snapshot the handler list so listeners added during dispatch (e.g., via focus changes)\n // do not receive the in-flight key event.\n const renderableHandlers = renderableSet && renderableSet.size > 0 ? [...renderableSet] : []\n let hasRenderableListeners = false\n\n if (renderableSet && renderableSet.size > 0) {\n hasRenderableListeners = true\n\n if (event === \"keypress\" || event === \"keyrelease\" || event === \"paste\") {\n const keyEvent = args[0]\n if (keyEvent.defaultPrevented) return hasGlobalListeners || hasRenderableListeners\n if (keyEvent.propagationStopped) return hasGlobalListeners || hasRenderableListeners\n }\n\n for (const handler of renderableHandlers) {\n try {\n handler(...args)\n } catch (error) {\n console.error(`[KeyHandler] Error in renderable ${event} handler:`, error)\n }\n\n // Check if propagation was stopped after this handler\n if (event === \"keypress\" || event === \"keyrelease\" || event === \"paste\") {\n const keyEvent = args[0]\n if (keyEvent.propagationStopped) {\n return hasGlobalListeners || hasRenderableListeners\n }\n }\n }\n }\n\n return hasGlobalListeners || hasRenderableListeners\n }\n\n public onInternal<K extends keyof KeyHandlerEventMap>(\n event: K,\n handler: (...args: KeyHandlerEventMap[K]) => void,\n ): void {\n if (!this.renderableHandlers.has(event)) {\n this.renderableHandlers.set(event, new Set())\n }\n this.renderableHandlers.get(event)!.add(handler)\n }\n\n public offInternal<K extends keyof KeyHandlerEventMap>(\n event: K,\n handler: (...args: KeyHandlerEventMap[K]) => void,\n ): void {\n const handlers = this.renderableHandlers.get(event)\n if (handlers) {\n handlers.delete(handler)\n }\n }\n}\n",
@@ -31,7 +31,7 @@
31
31
  "import { Renderable } from \"../Renderable.js\"\nimport type { ViewportBounds } from \"../types.js\"\nimport { coordinateToCharacterIndex, fonts } from \"./ascii.font.js\"\n\nclass SelectionAnchor {\n private relativeX: number\n private relativeY: number\n\n constructor(\n private renderable: Renderable,\n absoluteX: number,\n absoluteY: number,\n ) {\n this.relativeX = absoluteX - this.renderable.x\n this.relativeY = absoluteY - this.renderable.y\n }\n\n get x(): number {\n return this.renderable.x + this.relativeX\n }\n\n get y(): number {\n return this.renderable.y + this.relativeY\n }\n}\n\nexport class Selection {\n private _anchor: SelectionAnchor\n private _focus: { x: number; y: number }\n private _selectedRenderables: Renderable[] = []\n private _touchedRenderables: Renderable[] = []\n private _isActive: boolean = true\n private _isDragging: boolean = true\n private _isStart: boolean = false\n\n constructor(anchorRenderable: Renderable, anchor: { x: number; y: number }, focus: { x: number; y: number }) {\n this._anchor = new SelectionAnchor(anchorRenderable, anchor.x, anchor.y)\n this._focus = { ...focus }\n }\n\n get isStart(): boolean {\n return this._isStart\n }\n\n set isStart(value: boolean) {\n this._isStart = value\n }\n\n get anchor(): { x: number; y: number } {\n return { x: this._anchor.x, y: this._anchor.y }\n }\n\n get focus(): { x: number; y: number } {\n return { ...this._focus }\n }\n\n set focus(value: { x: number; y: number }) {\n this._focus = { ...value }\n }\n\n get isActive(): boolean {\n return this._isActive\n }\n\n set isActive(value: boolean) {\n this._isActive = value\n }\n\n get isDragging(): boolean {\n return this._isDragging\n }\n\n set isDragging(value: boolean) {\n this._isDragging = value\n }\n\n get bounds(): ViewportBounds {\n const minX = Math.min(this._anchor.x, this._focus.x)\n const maxX = Math.max(this._anchor.x, this._focus.x)\n const minY = Math.min(this._anchor.y, this._focus.y)\n const maxY = Math.max(this._anchor.y, this._focus.y)\n\n // Selection bounds are inclusive of both anchor and focus\n // A selection from (0,0) to (0,0) covers 1 cell\n // A selection from (0,0) to (5,3) covers cells from (0,0) to (5,3) inclusive\n const width = maxX - minX + 1\n const height = maxY - minY + 1\n\n return {\n x: minX,\n y: minY,\n width,\n height,\n }\n }\n\n updateSelectedRenderables(selectedRenderables: Renderable[]): void {\n this._selectedRenderables = selectedRenderables\n }\n\n get selectedRenderables(): Renderable[] {\n return this._selectedRenderables\n }\n\n updateTouchedRenderables(touchedRenderables: Renderable[]): void {\n this._touchedRenderables = touchedRenderables\n }\n\n get touchedRenderables(): Renderable[] {\n return this._touchedRenderables\n }\n\n getSelectedText(): string {\n const selectedTextsByLine = new Map<number, Array<{ x: number; text: string }>>()\n const selectedRenderables = this._selectedRenderables\n // Sort by reading order: top-to-bottom, then left-to-right\n .sort((a, b) => {\n const aY = a.y\n const bY = b.y\n if (aY !== bY) {\n return aY - bY\n }\n return a.x - b.x\n })\n .filter((renderable) => !renderable.isDestroyed)\n\n for (const renderable of selectedRenderables) {\n const text = renderable.getSelectedText()\n if (!text) continue\n const lines = text.split(\"\\n\")\n for (let index = 0; index < lines.length; index += 1) {\n const y = renderable.y + index\n const line = selectedTextsByLine.get(y) ?? []\n line.push({ x: renderable.x, text: lines[index] })\n selectedTextsByLine.set(y, line)\n }\n }\n\n return [...selectedTextsByLine.entries()]\n .sort(([leftY], [rightY]) => leftY - rightY)\n .map(([, line]) =>\n line\n .sort((left, right) => left.x - right.x)\n .map((segment) => segment.text)\n .join(\"\"),\n )\n .join(\"\\n\")\n }\n}\n\nexport interface LocalSelectionBounds {\n anchorX: number\n anchorY: number\n focusX: number\n focusY: number\n isActive: boolean\n}\n\nexport function convertGlobalToLocalSelection(\n globalSelection: Selection | null,\n localX: number,\n localY: number,\n): LocalSelectionBounds | null {\n if (!globalSelection?.isActive) {\n return null\n }\n\n return {\n anchorX: globalSelection.anchor.x - localX,\n anchorY: globalSelection.anchor.y - localY,\n focusX: globalSelection.focus.x - localX,\n focusY: globalSelection.focus.y - localY,\n isActive: true,\n }\n}\n\nexport class ASCIIFontSelectionHelper {\n private localSelection: { start: number; end: number } | null = null\n\n constructor(\n private getText: () => string,\n private getFont: () => keyof typeof fonts,\n ) {}\n\n hasSelection(): boolean {\n return this.localSelection !== null\n }\n\n getSelection(): { start: number; end: number } | null {\n return this.localSelection\n }\n\n shouldStartSelection(localX: number, localY: number, width: number, height: number): boolean {\n if (localX < 0 || localX >= width || localY < 0 || localY >= height) {\n return false\n }\n\n const text = this.getText()\n const font = this.getFont()\n const charIndex = coordinateToCharacterIndex(localX, text, font)\n\n return charIndex >= 0 && charIndex <= text.length\n }\n\n onLocalSelectionChanged(localSelection: LocalSelectionBounds | null, width: number, height: number): boolean {\n const previousSelection = this.localSelection\n\n if (!localSelection?.isActive) {\n this.localSelection = null\n return previousSelection !== null\n }\n\n const text = this.getText()\n const font = this.getFont()\n\n const selStart = { x: localSelection.anchorX, y: localSelection.anchorY }\n const selEnd = { x: localSelection.focusX, y: localSelection.focusY }\n\n if (height - 1 < selStart.y || 0 > selEnd.y) {\n this.localSelection = null\n return previousSelection !== null\n }\n\n let startCharIndex = 0\n let endCharIndex = text.length\n\n if (selStart.y > height - 1) {\n // Selection starts below us - we're not selected\n this.localSelection = null\n return previousSelection !== null\n } else if (selStart.y >= 0 && selStart.y <= height - 1) {\n // Selection starts within our Y range - use the actual start X coordinate\n if (selStart.x > 0) {\n startCharIndex = coordinateToCharacterIndex(selStart.x, text, font)\n }\n }\n\n if (selEnd.y < 0) {\n // Selection ends above us - we're not selected\n this.localSelection = null\n return previousSelection !== null\n } else if (selEnd.y >= 0 && selEnd.y <= height - 1) {\n // Selection ends within our Y range - use the actual end X coordinate\n if (selEnd.x >= 0) {\n endCharIndex = coordinateToCharacterIndex(selEnd.x, text, font)\n } else {\n endCharIndex = 0\n }\n }\n\n if (startCharIndex < endCharIndex && startCharIndex >= 0 && endCharIndex <= text.length) {\n this.localSelection = { start: startCharIndex, end: endCharIndex }\n } else {\n this.localSelection = null\n }\n\n return (\n previousSelection?.start !== this.localSelection?.start || previousSelection?.end !== this.localSelection?.end\n )\n }\n}\n",
32
32
  "// Byte-level stdin parser that turns raw terminal input into typed StdinEvents.\n//\n// This replaces a two-phase token -> decode pipeline with a single state machine\n// that produces fully typed events (key, mouse, paste, response) directly from\n// bytes. The parser owns all byte framing and protocol recognition. It does NOT\n// own event dispatch — that belongs to KeyHandler and the renderer.\n\nimport { Buffer } from \"node:buffer\"\nimport { SystemClock, type Clock, type TimerHandle } from \"./clock.js\"\nimport { parseKeypress, type ParsedKey } from \"./parse.keypress.js\"\nimport { MouseParser, type RawMouseEvent } from \"./parse.mouse.js\"\nimport type { PasteMetadata } from \"./paste.js\"\n\nexport { SystemClock, type Clock, type TimerHandle } from \"./clock.js\"\n\nexport type StdinResponseProtocol = \"csi\" | \"cpr\" | \"osc\" | \"dcs\" | \"apc\" | \"unknown\"\n\n// The four event types the parser produces. Everything stdin sends becomes\n// exactly one of these.\nexport type StdinEvent =\n | {\n type: \"key\"\n raw: string\n key: ParsedKey\n }\n | {\n type: \"mouse\"\n raw: string\n encoding: \"sgr\" | \"x10\"\n event: RawMouseEvent\n }\n | {\n type: \"paste\"\n bytes: Uint8Array\n metadata?: PasteMetadata\n }\n | {\n type: \"response\"\n protocol: StdinResponseProtocol\n sequence: string\n }\n\nexport interface StdinParserProtocolContext {\n kittyKeyboardEnabled: boolean\n privateCapabilityRepliesActive: boolean\n pixelResolutionQueryActive: boolean\n explicitWidthCprActive: boolean\n startupCursorCprActive: boolean\n}\n\nexport interface StdinParserOptions {\n timeoutMs?: number\n maxPendingBytes?: number\n armTimeouts?: boolean\n onTimeoutFlush?: () => void\n useKittyKeyboard?: boolean\n protocolContext?: Partial<StdinParserProtocolContext>\n clock?: Clock\n}\n\n// State machine tags for the byte scanner. Each tag represents which protocol\n// framing mode the parser is currently inside. The sawEsc flag in osc/dcs/apc\n// tracks whether the previous byte was ESC, since the two-byte ST terminator\n// (ESC \\) can split across push() calls.\ntype ParserState =\n | { tag: \"ground\" }\n | { tag: \"utf8\"; expected: number; seen: number }\n | { tag: \"esc\" }\n | { tag: \"ss3\" }\n | { tag: \"csi\" }\n | { tag: \"csi_sgr_mouse\"; part: number; hasDigit: boolean }\n | { tag: \"csi_sgr_mouse_deferred\"; part: number; hasDigit: boolean }\n | { tag: \"csi_parametric\"; semicolons: number; segments: number; hasDigit: boolean; firstParamValue: number | null }\n | {\n tag: \"csi_parametric_deferred\"\n semicolons: number\n segments: number\n hasDigit: boolean\n firstParamValue: number | null\n }\n | {\n // Startup cursor CPR cancellation can happen before the parser has enough\n // bytes to distinguish a stale reply from ordinary CSI input. This state\n // keeps consuming that one pending reply until it is either discarded as\n // CPR noise or handed back to normal CSI parsing.\n tag: \"csi_parametric_ignored\"\n semicolons: number\n segments: number\n hasDigit: boolean\n firstParamValue: number | null\n }\n | { tag: \"csi_private_reply\"; semicolons: number; hasDigit: boolean; sawDollar: boolean }\n | { tag: \"csi_private_reply_deferred\"; semicolons: number; hasDigit: boolean; sawDollar: boolean }\n | { tag: \"osc\"; sawEsc: boolean }\n | { tag: \"dcs\"; sawEsc: boolean }\n | { tag: \"apc\"; sawEsc: boolean }\n | { tag: \"esc_recovery\" }\n | { tag: \"esc_less_mouse\" }\n | { tag: \"esc_less_x10_mouse\" }\n\n// Collects paste body incrementally, bypassing the main ByteQueue so large\n// pastes don't grow the parser buffer. Keeps only a small tail for end-marker\n// detection across chunk boundaries.\ninterface PasteCollector {\n tail: Uint8Array\n parts: Uint8Array[]\n totalLength: number\n}\n\n// 20ms is to distinguish a lone ESC keypress from the start of an\n// escape sequence. Gemini/Claude uses 50ms, Codex uses 20ms, trying\n// this as a balanced default for now.\nconst DEFAULT_TIMEOUT_MS = 20\nconst DEFAULT_MAX_PENDING_BYTES = 64 * 1024\nconst INITIAL_PENDING_CAPACITY = 256\nconst ESC = 0x1b\nconst BEL = 0x07\nconst BRACKETED_PASTE_START = Buffer.from(\"\\x1b[200~\")\nconst BRACKETED_PASTE_END = Buffer.from(\"\\x1b[201~\")\nconst EMPTY_BYTES = new Uint8Array(0)\nconst KEY_DECODER = new TextDecoder()\nconst DEFAULT_PROTOCOL_CONTEXT: StdinParserProtocolContext = {\n kittyKeyboardEnabled: false,\n privateCapabilityRepliesActive: false,\n pixelResolutionQueryActive: false,\n explicitWidthCprActive: false,\n startupCursorCprActive: false,\n}\n// rxvt uses $-terminated CSI sequences for shifted function keys (e.g. ESC[2$).\n// Standard CSI treats $ as an intermediate byte, not a final, so we match these\n// explicitly to avoid waiting for a \"real\" final byte that never arrives.\nconst RXVT_DOLLAR_CSI_RE = /^\\x1b\\[\\d+\\$$/\n\nconst SYSTEM_CLOCK = new SystemClock()\n\n// Byte buffer for pending input. Uses start/end offsets so consume() just\n// advances the start pointer without copying. Compacts (via copyWithin) only\n// when the consumed prefix exceeds half the buffer, keeping amortized cost low.\nclass ByteQueue {\n private buf: Uint8Array\n private start = 0\n private end = 0\n\n constructor(capacity = INITIAL_PENDING_CAPACITY) {\n this.buf = new Uint8Array(capacity)\n }\n\n get length(): number {\n return this.end - this.start\n }\n\n get capacity(): number {\n return this.buf.length\n }\n\n view(): Uint8Array {\n return this.buf.subarray(this.start, this.end)\n }\n\n // Returns a view of the contents and resets the queue. The view shares\n // the underlying buffer, so it becomes invalid on the next append().\n take(): Uint8Array {\n const chunk = this.view()\n this.start = 0\n this.end = 0\n return chunk\n }\n\n append(chunk: Uint8Array): void {\n if (chunk.length === 0) {\n return\n }\n\n this.ensureCapacity(this.length + chunk.length)\n this.buf.set(chunk, this.end)\n this.end += chunk.length\n }\n\n // Drops the first `count` bytes. Compacts when the consumed prefix\n // exceeds half the buffer to reclaim wasted space at the front.\n consume(count: number): void {\n if (count <= 0) {\n return\n }\n\n if (count >= this.length) {\n this.start = 0\n this.end = 0\n return\n }\n\n this.start += count\n if (this.start >= this.buf.length / 2) {\n this.buf.copyWithin(0, this.start, this.end)\n this.end -= this.start\n this.start = 0\n }\n }\n\n clear(): void {\n this.start = 0\n this.end = 0\n }\n\n reset(capacity = INITIAL_PENDING_CAPACITY): void {\n this.buf = new Uint8Array(capacity)\n this.start = 0\n this.end = 0\n }\n\n // Tries reclaiming space by compacting data to the front first.\n // Doubles the allocation if that still isn't enough.\n private ensureCapacity(requiredLength: number): void {\n const currentLength = this.length\n if (requiredLength <= this.buf.length) {\n const availableAtEnd = this.buf.length - this.end\n if (availableAtEnd >= requiredLength - currentLength) {\n return\n }\n\n this.buf.copyWithin(0, this.start, this.end)\n this.end = currentLength\n this.start = 0\n if (requiredLength <= this.buf.length) {\n return\n }\n }\n\n let nextCapacity = this.buf.length\n while (nextCapacity < requiredLength) {\n nextCapacity *= 2\n }\n\n const next = new Uint8Array(nextCapacity)\n next.set(this.view(), 0)\n this.buf = next\n this.start = 0\n this.end = currentLength\n }\n}\n\nfunction normalizePositiveOption(value: number | undefined, fallback: number): number {\n if (typeof value !== \"number\" || !Number.isFinite(value) || value <= 0) {\n return fallback\n }\n\n return Math.floor(value)\n}\n\n// Returns the expected byte count for a UTF-8 sequence given its lead byte,\n// or 0 for bytes that aren't valid UTF-8 leads. Returning 0 tells the parser\n// this is a legacy high-byte character (0x80–0xBF, 0xC0–0xC1, 0xF5+) that\n// goes through the parseKeypress() meta-key path instead.\nfunction utf8SequenceLength(first: number): number {\n if (first < 0x80) return 1\n if (first >= 0xc2 && first <= 0xdf) return 2\n if (first >= 0xe0 && first <= 0xef) return 3\n if (first >= 0xf0 && first <= 0xf4) return 4\n return 0\n}\n\nfunction bytesEqual(left: Uint8Array, right: Uint8Array): boolean {\n if (left.length !== right.length) {\n return false\n }\n\n for (let index = 0; index < left.length; index += 1) {\n if (left[index] !== right[index]) {\n return false\n }\n }\n\n return true\n}\n\n// Checks whether a byte sequence is a complete SGR mouse report:\n// ESC [ < Ps ; Ps ; Ps M/m (three semicolon-separated digit groups).\nfunction isMouseSgrSequence(sequence: Uint8Array): boolean {\n if (sequence.length < 7) {\n return false\n }\n\n if (sequence[0] !== ESC || sequence[1] !== 0x5b || sequence[2] !== 0x3c) {\n return false\n }\n\n const final = sequence[sequence.length - 1]\n if (final !== 0x4d && final !== 0x6d) {\n return false\n }\n\n let part = 0\n let hasDigit = false\n for (let index = 3; index < sequence.length - 1; index += 1) {\n const byte = sequence[index]!\n if (byte >= 0x30 && byte <= 0x39) {\n hasDigit = true\n continue\n }\n\n if (byte === 0x3b && hasDigit && part < 2) {\n part += 1\n hasDigit = false\n continue\n }\n\n return false\n }\n\n return part === 2 && hasDigit\n}\n\nfunction isAsciiDigit(byte: number): boolean {\n return byte >= 0x30 && byte <= 0x39\n}\n\ninterface ParametricCsiLike {\n semicolons: number\n segments: number\n hasDigit: boolean\n firstParamValue: number | null\n}\n\ninterface PrivateReplyCsiLike {\n semicolons: number\n hasDigit: boolean\n sawDollar: boolean\n}\n\nfunction parsePositiveDecimalPrefix(sequence: Uint8Array, start: number, endExclusive: number): number | null {\n if (start >= endExclusive) return null\n\n let value = 0\n let sawDigit = false\n for (let index = start; index < endExclusive; index += 1) {\n const byte = sequence[index]!\n if (!isAsciiDigit(byte)) return null\n sawDigit = true\n value = value * 10 + (byte - 0x30)\n }\n\n return sawDigit ? value : null\n}\n\n// Returns the leading kitty codepoint from field 1, like `97` in `97:65`.\n// The CSI scanner uses this at `;` boundaries to recognize alternate-key\n// forms (`codepoint[:shifted[:base]]`). That keeps split kitty sequences\n// pending, instead of flushing them as unknown on timeout.\nfunction parseKittyFirstFieldCodepoint(sequence: Uint8Array, start: number, endExclusive: number): number | null {\n if (start >= endExclusive) return null\n\n let firstColon = -1\n for (let index = start; index < endExclusive; index += 1) {\n if (sequence[index] === 0x3a) {\n firstColon = index\n break\n }\n }\n\n if (firstColon === -1) return null\n\n const codepoint = parsePositiveDecimalPrefix(sequence, start, firstColon)\n if (codepoint === null) return null\n\n // Remaining bytes in field 1 must stay kitty-compatible: digits or colons.\n for (let index = firstColon + 1; index < endExclusive; index += 1) {\n const byte = sequence[index]!\n if (byte !== 0x3a && !isAsciiDigit(byte)) return null\n }\n\n return codepoint\n}\n\nfunction canStillBeKittyU(state: ParametricCsiLike): boolean {\n return state.semicolons >= 1\n}\n\nfunction canStillBeKittySpecial(state: ParametricCsiLike): boolean {\n return state.semicolons === 1 && state.segments > 1\n}\n\nfunction canStillBeExplicitWidthCpr(state: ParametricCsiLike): boolean {\n return state.firstParamValue === 1 && state.semicolons === 1\n}\n\nfunction canStillBeStartupCursorCpr(state: ParametricCsiLike): boolean {\n return state.semicolons === 1\n}\n\nfunction canStillBeStartupCursorCprPrefix(state: ParametricCsiLike): boolean {\n return state.segments === 1 && state.semicolons <= 1\n}\n\nfunction canStillBePixelResolution(state: ParametricCsiLike): boolean {\n return state.firstParamValue === 4 && state.semicolons === 2\n}\n\nfunction canStillBePixelResolutionPrefix(bytes: Uint8Array): boolean {\n const fixedPrefix = [ESC, 0x5b, 0x34, 0x3b]\n const fixedLength = Math.min(bytes.length, fixedPrefix.length)\n for (let index = 0; index < fixedLength; index += 1) {\n if (bytes[index] !== fixedPrefix[index]) return false\n }\n if (bytes.length <= fixedPrefix.length) return bytes.length > 0\n\n let index = fixedPrefix.length\n const heightStart = index\n while (index < bytes.length && isAsciiDigit(bytes[index]!)) index += 1\n if (index === bytes.length) return index > heightStart\n if (index === heightStart || bytes[index] !== 0x3b) return false\n\n index += 1\n const widthStart = index\n while (index < bytes.length && isAsciiDigit(bytes[index]!)) index += 1\n if (index === bytes.length) return true\n return index > widthStart && bytes[index] === 0x74\n}\n\nfunction canDeferParametricCsi(state: ParametricCsiLike, context: StdinParserProtocolContext): boolean {\n return (\n (context.kittyKeyboardEnabled && (canStillBeKittyU(state) || canStillBeKittySpecial(state))) ||\n (context.explicitWidthCprActive && canStillBeExplicitWidthCpr(state)) ||\n (context.startupCursorCprActive && canStillBeStartupCursorCpr(state)) ||\n (context.pixelResolutionQueryActive && canStillBePixelResolution(state))\n )\n}\n\nfunction canCompleteDeferredParametricCsi(\n state: ParametricCsiLike,\n byte: number,\n context: StdinParserProtocolContext,\n): boolean {\n if (context.kittyKeyboardEnabled) {\n if (state.hasDigit && byte === 0x75) return true\n if (\n state.hasDigit &&\n state.semicolons === 1 &&\n state.segments > 1 &&\n (byte === 0x7e || (byte >= 0x41 && byte <= 0x5a))\n ) {\n return true\n }\n }\n\n if (\n context.explicitWidthCprActive &&\n state.hasDigit &&\n state.firstParamValue === 1 &&\n state.semicolons === 1 &&\n byte === 0x52\n ) {\n return true\n }\n\n if (context.startupCursorCprActive && state.hasDigit && state.semicolons === 1 && byte === 0x52) {\n return true\n }\n\n if (\n context.pixelResolutionQueryActive &&\n state.hasDigit &&\n state.firstParamValue === 4 &&\n state.semicolons === 2 &&\n byte === 0x74\n ) {\n return true\n }\n\n return false\n}\n\nfunction classifyParametricCsiProtocol(state: ParametricCsiLike, finalByte: number): StdinResponseProtocol {\n if (finalByte === 0x52 && state.semicolons === 1 && state.segments === 1 && state.hasDigit) {\n return \"cpr\"\n }\n\n return \"csi\"\n}\n\nfunction canDeferPrivateReplyCsi(context: StdinParserProtocolContext): boolean {\n return context.privateCapabilityRepliesActive\n}\n\nfunction canCompleteDeferredPrivateReplyCsi(\n state: PrivateReplyCsiLike,\n byte: number,\n context: StdinParserProtocolContext,\n): boolean {\n if (!context.privateCapabilityRepliesActive) return false\n if (state.sawDollar) return state.hasDigit && byte === 0x79\n if (byte === 0x63) return state.hasDigit || state.semicolons > 0\n if (byte === 0x6e) return state.hasDigit\n return state.hasDigit && byte === 0x75\n}\n\nfunction concatBytes(left: Uint8Array, right: Uint8Array): Uint8Array {\n if (left.length === 0) {\n return right\n }\n\n if (right.length === 0) {\n return left\n }\n\n const combined = new Uint8Array(left.length + right.length)\n combined.set(left, 0)\n combined.set(right, left.length)\n return combined\n}\n\nfunction withEscPrefix(bytes: Uint8Array): Uint8Array {\n const prefixed = new Uint8Array(bytes.length + 1)\n prefixed[0] = ESC\n prefixed.set(bytes, 1)\n return prefixed\n}\n\nfunction indexOfBytes(haystack: Uint8Array, needle: Uint8Array): number {\n if (needle.length === 0) {\n return 0\n }\n\n const limit = haystack.length - needle.length\n for (let offset = 0; offset <= limit; offset += 1) {\n let matched = true\n for (let index = 0; index < needle.length; index += 1) {\n if (haystack[offset + index] !== needle[index]) {\n matched = false\n break\n }\n }\n\n if (matched) {\n return offset\n }\n }\n\n return -1\n}\n\n// Decodes raw protocol bytes as latin1. Used for mouse and response events\n// where the wire bytes may not be valid UTF-8 but need a lossless string\n// form for downstream sequence handlers.\nfunction decodeLatin1(bytes: Uint8Array): string {\n return Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength).toString(\"latin1\")\n}\n\nfunction decodeUtf8(bytes: Uint8Array): string {\n return KEY_DECODER.decode(bytes)\n}\n\nfunction createPasteCollector(): PasteCollector {\n return {\n tail: EMPTY_BYTES,\n parts: [],\n totalLength: 0,\n }\n}\n\nfunction joinPasteBytes(parts: Uint8Array[], totalLength: number): Uint8Array {\n if (totalLength === 0) {\n return EMPTY_BYTES\n }\n\n if (parts.length === 1) {\n return parts[0]!\n }\n\n const bytes = new Uint8Array(totalLength)\n let offset = 0\n for (const part of parts) {\n bytes.set(part, offset)\n offset += part.length\n }\n\n return bytes\n}\n\n// Push-driven stdin parser. Callers feed raw bytes via push(), then read\n// typed events via read() or drain(). At most one incomplete protocol unit\n// is buffered at a time; everything else is immediately converted to events.\n//\n// The parser guarantees chunk-shape invariance: the same bytes always produce\n// the same events, regardless of chunk boundaries. A lone ESC resolves via\n// timeout, split UTF-8 codepoints reassemble correctly, and bracketed paste\n// markers may split across any chunk boundary.\nexport class StdinParser {\n private readonly pending = new ByteQueue(INITIAL_PENDING_CAPACITY)\n private readonly events: StdinEvent[] = []\n private readonly timeoutMs: number\n private readonly maxPendingBytes: number\n private readonly armTimeouts: boolean\n private readonly onTimeoutFlush: (() => void) | null\n private readonly useKittyKeyboard: boolean\n private readonly mouseParser = new MouseParser()\n private readonly clock: Clock\n private protocolContext: StdinParserProtocolContext\n private timeoutId: TimerHandle | null = null\n private destroyed = false\n // When the current incomplete unit first appeared. Null when nothing is pending.\n private pendingSinceMs: number | null = null\n private pendingTimeoutPaused = false\n private suspendedPixelResolutionPrefixLength = 0\n // When true, the state machine treats the current incomplete prefix as\n // final and emits it as one atomic event (e.g. a lone ESC becomes an\n // Escape key). Set by the timeout, consumed by the next read() or drain().\n private forceFlush = false\n // True only immediately after a timeout flush emits a lone ESC key. The next\n // `[` may begin a delayed `[<...M/m` mouse continuation recovery path.\n private justFlushedEsc = false\n private state: ParserState = { tag: \"ground\" }\n // Scan position within pending.view() during scanPending().\n private cursor = 0\n // Start of the protocol unit currently being parsed. The bytes from\n // unitStart through cursor all belong to one atomic unit.\n private unitStart = 0\n // When non-null, the parser is inside a bracketed paste. All incoming\n // bytes flow through consumePasteBytes() instead of the normal state machine.\n private paste: PasteCollector | null = null\n\n constructor(options: StdinParserOptions = {}) {\n this.timeoutMs = normalizePositiveOption(options.timeoutMs, DEFAULT_TIMEOUT_MS)\n this.maxPendingBytes = normalizePositiveOption(options.maxPendingBytes, DEFAULT_MAX_PENDING_BYTES)\n this.armTimeouts = options.armTimeouts ?? true\n this.onTimeoutFlush = options.onTimeoutFlush ?? null\n this.useKittyKeyboard = options.useKittyKeyboard ?? true\n this.clock = options.clock ?? SYSTEM_CLOCK\n this.protocolContext = {\n ...DEFAULT_PROTOCOL_CONTEXT,\n kittyKeyboardEnabled: options.protocolContext?.kittyKeyboardEnabled ?? false,\n privateCapabilityRepliesActive: options.protocolContext?.privateCapabilityRepliesActive ?? false,\n pixelResolutionQueryActive: options.protocolContext?.pixelResolutionQueryActive ?? false,\n explicitWidthCprActive: options.protocolContext?.explicitWidthCprActive ?? false,\n startupCursorCprActive: options.protocolContext?.startupCursorCprActive ?? false,\n }\n }\n\n public get bufferCapacity(): number {\n return this.pending.capacity\n }\n\n public updateProtocolContext(patch: Partial<StdinParserProtocolContext>): void {\n this.ensureAlive()\n this.protocolContext = { ...this.protocolContext, ...patch }\n if (!this.protocolContext.pixelResolutionQueryActive && this.suspendedPixelResolutionPrefixLength > 0) {\n const prefixLength = this.suspendedPixelResolutionPrefixLength\n this.state = { tag: \"ground\" }\n this.consumePrefix(prefixLength)\n this.scanPending()\n }\n this.reconcileDeferredStateWithProtocolContext()\n this.reconcileTimeoutState()\n }\n\n // A startup CPR can be split either after `ESC[` or after the first `;`.\n // Normalize both shapes into one ignore-state so leaving split-footer can\n // cancel the stale reply without also swallowing unrelated CSI sequences.\n private getAbortableStartupCursorCprState(): Extract<ParserState, { tag: \"csi_parametric_ignored\" }> | null {\n if (this.pending.length === 0) {\n return null\n }\n\n switch (this.state.tag) {\n case \"csi\": {\n const bytes = this.pending.view()\n const firstParamStart = this.unitStart + 2\n if (this.cursor < firstParamStart) {\n return null\n }\n\n let firstParamValue: number | null = null\n for (let index = firstParamStart; index < this.cursor; index += 1) {\n const byte = bytes[index]!\n if (!isAsciiDigit(byte)) {\n return null\n }\n\n firstParamValue = (firstParamValue ?? 0) * 10 + (byte - 0x30)\n }\n\n return {\n tag: \"csi_parametric_ignored\",\n semicolons: 0,\n segments: 1,\n hasDigit: this.cursor > firstParamStart,\n firstParamValue,\n }\n }\n\n case \"csi_parametric\":\n case \"csi_parametric_deferred\":\n if (\n !canStillBeStartupCursorCprPrefix(this.state) ||\n (this.protocolContext.explicitWidthCprActive && canStillBeExplicitWidthCpr(this.state))\n ) {\n return null\n }\n\n return {\n tag: \"csi_parametric_ignored\",\n semicolons: this.state.semicolons,\n segments: this.state.segments,\n hasDigit: this.state.hasDigit,\n firstParamValue: this.state.firstParamValue,\n }\n }\n\n return null\n }\n\n public abortPendingStartupCursorCpr(): void {\n this.ensureAlive()\n\n const nextState = this.getAbortableStartupCursorCprState()\n if (!nextState) {\n return\n }\n\n this.state = nextState\n\n if (this.pendingSinceMs === null) {\n this.markPending()\n }\n\n this.forceFlush = false\n this.reconcileTimeoutState()\n }\n\n // Feeds raw stdin bytes into the parser. Converts as much as possible into\n // queued events and leaves at most one incomplete unit behind in pending.\n //\n // When a chunk contains a paste start marker, bytes before the marker go\n // through normal parsing, then paste mode takes over for the rest. This\n // prevents large pastes from growing the main buffer.\n public push(data: Uint8Array): void {\n this.ensureAlive()\n if (data.length === 0) {\n // Preserve the existing empty-chunk -> empty-keypress behavior.\n this.emitKeyOrResponse(\"unknown\", \"\")\n return\n }\n\n let remainder = data\n while (remainder.length > 0) {\n if (this.paste) {\n remainder = this.consumePasteBytes(remainder)\n continue\n }\n\n // If we're in ground state with nothing pending, scan the incoming\n // chunk for a paste start marker. Only append through the marker so\n // scanPending() enters paste mode without buffering the full paste.\n const immediatePasteStartIndex =\n this.state.tag === \"ground\" && this.pending.length === 0 ? indexOfBytes(remainder, BRACKETED_PASTE_START) : -1\n const appendEnd =\n immediatePasteStartIndex === -1 ? remainder.length : immediatePasteStartIndex + BRACKETED_PASTE_START.length\n\n this.pending.append(remainder.subarray(0, appendEnd))\n remainder = remainder.subarray(appendEnd)\n if (\n this.suspendedPixelResolutionPrefixLength > 0 &&\n this.protocolContext.pixelResolutionQueryActive &&\n !canStillBePixelResolutionPrefix(this.pending.view())\n ) {\n const prefixLength = this.suspendedPixelResolutionPrefixLength\n this.state = { tag: \"ground\" }\n this.consumePrefix(prefixLength)\n }\n this.scanPending()\n\n if (this.paste && this.pending.length > 0) {\n remainder = this.consumePasteBytes(this.takePendingBytes())\n continue\n }\n\n if (!this.paste && this.pending.length > this.maxPendingBytes) {\n this.flushPendingOverflow()\n this.scanPending()\n\n if (this.paste && this.pending.length > 0) {\n remainder = this.consumePasteBytes(this.takePendingBytes())\n }\n }\n }\n\n this.reconcileTimeoutState()\n }\n\n // Pops one event from the queue. If the queue is empty and a timeout has\n // set forceFlush, re-scans pending to convert the timed-out incomplete\n // unit into one final event before returning it.\n public read(): StdinEvent | null {\n this.ensureAlive()\n\n if (this.events.length === 0 && this.forceFlush) {\n this.scanPending()\n this.reconcileTimeoutState()\n }\n\n return this.events.shift() ?? null\n }\n\n // Delivers all queued events. Stops early if the parser is destroyed\n // during a callback (e.g. an event handler triggers teardown).\n public drain(onEvent: (event: StdinEvent) => void): void {\n this.ensureAlive()\n\n while (true) {\n if (this.destroyed) {\n return\n }\n\n const event = this.read()\n if (!event) {\n return\n }\n\n onEvent(event)\n }\n }\n\n // Marks the parser for forced flush if enough time has passed since\n // incomplete data arrived. Does not immediately emit events — the next\n // read() or drain() does the actual flush. This separation keeps the\n // timer callback from emitting events mid-flight in user code.\n public flushTimeout(nowMsValue: number = this.clock.now()): void {\n this.ensureAlive()\n\n if (\n this.pendingSinceMs !== null &&\n (nowMsValue < this.pendingSinceMs || nowMsValue - this.pendingSinceMs < this.timeoutMs)\n ) {\n return\n }\n\n this.tryForceFlush()\n }\n\n // Sets forceFlush when there are pending bytes outside of a paste.\n // Extracted so the setTimeout callback in reconcileTimeoutState() can\n // bypass flushTimeout()'s elapsed-time comparison. Timer scheduling and\n // clock.now() sampling can disagree by a small amount; re-checking elapsed\n // time in the callback can skip a flush and leave pending bytes stuck.\n private tryForceFlush(): void {\n if (this.paste || this.pendingSinceMs === null || this.pending.length === 0) {\n return\n }\n\n this.forceFlush = true\n }\n\n public reset(): void {\n if (this.destroyed) {\n return\n }\n\n this.clearTimeout()\n this.resetState()\n }\n\n public hasPendingPixelResolutionResponse(): boolean {\n if (!this.protocolContext.pixelResolutionQueryActive || this.pending.length === 0) return false\n return canStillBePixelResolutionPrefix(this.pending.view())\n }\n\n public pausePendingTimeout(): void {\n this.ensureAlive()\n this.pendingTimeoutPaused = true\n this.suspendedPixelResolutionPrefixLength = this.pending.length\n this.clearTimeout()\n }\n\n public resumePendingTimeout(): void {\n this.ensureAlive()\n if (this.pending.length === 0) this.pendingTimeoutPaused = false\n this.reconcileTimeoutState()\n }\n\n public resetMouseState(): void {\n this.ensureAlive()\n this.mouseParser.reset()\n }\n\n public destroy(): void {\n if (this.destroyed) {\n return\n }\n\n this.clearTimeout()\n this.destroyed = true\n this.resetState()\n }\n\n private ensureAlive(): void {\n if (this.destroyed) {\n throw new Error(\"StdinParser has been destroyed\")\n }\n }\n\n // Scans the pending byte buffer one byte at a time, dispatching on the\n // current parser state. All protocol framing lives in this single switch\n // — intentionally not split into per-mode scan helpers.\n //\n // Exits when: all bytes consumed (ground), more bytes needed (incomplete\n // unit), or paste mode entered (body handled by consumePasteBytes).\n private scanPending(): void {\n while (!this.paste) {\n const bytes = this.pending.view()\n if (this.state.tag === \"ground\" && this.cursor >= bytes.length) {\n this.pending.clear()\n this.cursor = 0\n this.unitStart = 0\n this.pendingSinceMs = null\n this.forceFlush = false\n return\n }\n\n const byte = this.cursor < bytes.length ? bytes[this.cursor]! : -1\n switch (this.state.tag) {\n case \"ground\": {\n this.unitStart = this.cursor\n\n // After a timeout-flushed lone ESC, a following `[` may be the start\n // of a delayed `[<...M/m` mouse continuation. Recover only this narrow\n // case; otherwise clear the recovery flag and parse bytes normally.\n if (this.justFlushedEsc) {\n if (byte === 0x5b) {\n this.justFlushedEsc = false\n this.cursor += 1\n this.state = { tag: \"esc_recovery\" }\n continue\n }\n\n this.justFlushedEsc = false\n }\n\n if (byte === ESC) {\n this.cursor += 1\n this.state = { tag: \"esc\" }\n continue\n }\n\n if (byte < 0x80) {\n this.emitKeyOrResponse(\"unknown\", decodeUtf8(bytes.subarray(this.cursor, this.cursor + 1)))\n this.consumePrefix(this.cursor + 1)\n continue\n }\n\n // Invalid UTF-8 lead byte. Could be a legacy high-byte from an\n // older terminal. If it's the last byte in the buffer, wait for\n // more data or a timeout before committing. On timeout, emit\n // through parseKeypress() which handles meta-key behavior.\n const expected = utf8SequenceLength(byte)\n if (expected === 0) {\n if (!this.forceFlush && this.cursor + 1 === bytes.length) {\n this.markPending()\n return\n }\n\n this.emitLegacyHighByte(byte)\n this.consumePrefix(this.cursor + 1)\n continue\n }\n\n this.cursor += 1\n this.state = { tag: \"utf8\", expected, seen: 1 }\n continue\n }\n\n case \"utf8\": {\n if (this.cursor >= bytes.length) {\n if (!this.forceFlush) {\n this.markPending()\n return\n }\n\n this.emitLegacyHighByte(bytes[this.unitStart]!)\n this.state = { tag: \"ground\" }\n this.consumePrefix(this.unitStart + 1)\n continue\n }\n\n // Not a valid continuation byte. Treat the lead byte as a legacy\n // high-byte character and restart parsing from this position.\n if ((byte & 0xc0) !== 0x80) {\n this.emitLegacyHighByte(bytes[this.unitStart]!)\n this.state = { tag: \"ground\" }\n this.consumePrefix(this.unitStart + 1)\n continue\n }\n\n const nextSeen = this.state.seen + 1\n this.cursor += 1\n if (nextSeen < this.state.expected) {\n this.state = { tag: \"utf8\", expected: this.state.expected, seen: nextSeen }\n continue\n }\n\n this.emitKeyOrResponse(\"unknown\", decodeUtf8(bytes.subarray(this.unitStart, this.cursor)))\n this.state = { tag: \"ground\" }\n this.consumePrefix(this.cursor)\n continue\n }\n\n case \"esc\": {\n if (this.cursor >= bytes.length) {\n if (!this.forceFlush) {\n this.markPending()\n return\n }\n\n const flushedLoneEsc = this.cursor === this.unitStart + 1 && bytes[this.unitStart] === ESC\n this.emitKeyOrResponse(\"unknown\", decodeUtf8(bytes.subarray(this.unitStart, this.cursor)))\n this.justFlushedEsc = flushedLoneEsc\n this.state = { tag: \"ground\" }\n this.consumePrefix(this.cursor)\n continue\n }\n\n // The byte after ESC determines the sub-protocol:\n // [ -> CSI, O -> SS3, ] -> OSC, P -> DCS, _ -> APC.\n switch (byte) {\n case 0x5b:\n this.cursor += 1\n this.state = { tag: \"csi\" }\n continue\n case 0x4f:\n this.cursor += 1\n this.state = { tag: \"ss3\" }\n continue\n case 0x5d:\n this.cursor += 1\n this.state = { tag: \"osc\", sawEsc: false }\n continue\n case 0x50:\n this.cursor += 1\n this.state = { tag: \"dcs\", sawEsc: false }\n continue\n case 0x5f:\n this.cursor += 1\n this.state = { tag: \"apc\", sawEsc: false }\n continue\n // ESC ESC: stay in esc state. Terminals encode Alt+ESC and\n // similar sequences as ESC ESC [...], so we keep scanning.\n case ESC:\n this.cursor += 1\n continue\n default:\n this.cursor += 1\n this.emitKeyOrResponse(\"unknown\", decodeUtf8(bytes.subarray(this.unitStart, this.cursor)))\n this.state = { tag: \"ground\" }\n this.consumePrefix(this.cursor)\n continue\n }\n }\n\n case \"ss3\": {\n if (this.cursor >= bytes.length) {\n if (!this.forceFlush) {\n this.markPending()\n return\n }\n\n this.emitOpaqueResponse(\"unknown\", bytes.subarray(this.unitStart, this.cursor))\n this.state = { tag: \"ground\" }\n this.consumePrefix(this.cursor)\n continue\n }\n\n if (byte === ESC) {\n this.emitOpaqueResponse(\"unknown\", bytes.subarray(this.unitStart, this.cursor))\n this.state = { tag: \"ground\" }\n this.consumePrefix(this.cursor)\n continue\n }\n\n this.cursor += 1\n this.emitKeyOrResponse(\"unknown\", decodeUtf8(bytes.subarray(this.unitStart, this.cursor)))\n this.state = { tag: \"ground\" }\n this.consumePrefix(this.cursor)\n continue\n }\n\n // Narrow recovery path for delayed mouse continuations after a\n // timeout-flushed lone ESC. Wait for either `<` (SGR) or `M` (X10); if\n // neither arrives, flush `[` as a normal key.\n case \"esc_recovery\": {\n if (this.cursor >= bytes.length) {\n if (!this.forceFlush) {\n this.markPending()\n return\n }\n\n this.emitKeyOrResponse(\"unknown\", decodeUtf8(bytes.subarray(this.unitStart, this.cursor)))\n this.state = { tag: \"ground\" }\n this.consumePrefix(this.cursor)\n continue\n }\n\n if (byte === 0x3c) {\n this.cursor += 1\n this.state = { tag: \"esc_less_mouse\" }\n continue\n }\n\n if (byte === 0x4d) {\n this.cursor += 1\n this.state = { tag: \"esc_less_x10_mouse\" }\n continue\n }\n\n this.emitKeyOrResponse(\"unknown\", decodeUtf8(bytes.subarray(this.unitStart, this.unitStart + 1)))\n this.state = { tag: \"ground\" }\n this.consumePrefix(this.unitStart + 1)\n continue\n }\n\n case \"csi\": {\n if (this.cursor >= bytes.length) {\n if (!this.forceFlush) {\n this.markPending()\n return\n }\n\n this.emitOpaqueResponse(\"unknown\", bytes.subarray(this.unitStart, this.cursor))\n this.state = { tag: \"ground\" }\n this.consumePrefix(this.cursor)\n continue\n }\n\n // A new ESC inside an incomplete CSI means the previous sequence\n // was interrupted. Flush everything before the new ESC as one\n // opaque response, then restart parsing at the new ESC.\n if (byte === ESC) {\n this.emitOpaqueResponse(\"unknown\", bytes.subarray(this.unitStart, this.cursor))\n this.state = { tag: \"ground\" }\n this.consumePrefix(this.cursor)\n continue\n }\n\n // X10 mouse: ESC [ M plus 3 raw payload bytes (button, x, y).\n // cursor === unitStart + 2 confirms M comes right after ESC[,\n // not as a later final byte in a different CSI sequence.\n if (byte === 0x4d && this.cursor === this.unitStart + 2) {\n const end = this.cursor + 4\n if (bytes.length < end) {\n if (!this.forceFlush) {\n this.markPending()\n return\n }\n\n this.emitOpaqueResponse(\"unknown\", bytes.subarray(this.unitStart, bytes.length))\n this.state = { tag: \"ground\" }\n this.consumePrefix(bytes.length)\n continue\n }\n\n this.emitMouse(bytes.subarray(this.unitStart, end), \"x10\")\n this.state = { tag: \"ground\" }\n this.consumePrefix(end)\n continue\n }\n\n if (byte === 0x24) {\n const candidateEnd = this.cursor + 1\n const candidate = decodeUtf8(bytes.subarray(this.unitStart, candidateEnd))\n if (RXVT_DOLLAR_CSI_RE.test(candidate)) {\n this.emitKeyOrResponse(\"csi\", candidate)\n this.state = { tag: \"ground\" }\n this.consumePrefix(candidateEnd)\n continue\n }\n\n if (!this.forceFlush && candidateEnd >= bytes.length) {\n this.markPending()\n return\n }\n }\n\n if (byte === 0x3c && this.cursor === this.unitStart + 2) {\n this.cursor += 1\n this.state = { tag: \"csi_sgr_mouse\", part: 0, hasDigit: false }\n continue\n }\n\n // Some terminals use ESC [[A..E / ESC [[5~ / ESC [[6~ variants.\n // Treat the second `[` immediately after ESC[ as part of the CSI\n // payload instead of as a final byte so parseKeypress() can match\n // `[[A`, `[[B`, `[[5~`, etc.\n if (byte === 0x5b && this.cursor === this.unitStart + 2) {\n this.cursor += 1\n continue\n }\n\n if (byte === 0x3f && this.cursor === this.unitStart + 2) {\n this.cursor += 1\n this.state = { tag: \"csi_private_reply\", semicolons: 0, hasDigit: false, sawDollar: false }\n continue\n }\n\n if (byte === 0x3b) {\n const firstParamStart = this.unitStart + 2\n const firstParamEnd = this.cursor\n let firstParamValue = parsePositiveDecimalPrefix(bytes, firstParamStart, firstParamEnd)\n\n if (firstParamValue === null && this.protocolContext.kittyKeyboardEnabled) {\n firstParamValue = parseKittyFirstFieldCodepoint(bytes, firstParamStart, firstParamEnd)\n }\n\n if (firstParamValue !== null) {\n this.cursor += 1\n this.state = {\n tag: \"csi_parametric\",\n semicolons: 1,\n segments: 1,\n hasDigit: false,\n firstParamValue,\n }\n continue\n }\n }\n\n // Standard CSI final byte (0x40–0x7E). Check for bracketed paste\n // start, SGR mouse, or a regular CSI key/response.\n if (byte >= 0x40 && byte <= 0x7e) {\n const end = this.cursor + 1\n const rawBytes = bytes.subarray(this.unitStart, end)\n\n if (bytesEqual(rawBytes, BRACKETED_PASTE_START)) {\n this.state = { tag: \"ground\" }\n this.consumePrefix(end)\n this.paste = createPasteCollector()\n continue\n }\n\n if (isMouseSgrSequence(rawBytes)) {\n this.emitMouse(rawBytes, \"sgr\")\n this.state = { tag: \"ground\" }\n this.consumePrefix(end)\n continue\n }\n\n this.emitKeyOrResponse(\"csi\", decodeUtf8(rawBytes))\n this.state = { tag: \"ground\" }\n this.consumePrefix(end)\n continue\n }\n\n this.cursor += 1\n continue\n }\n\n case \"csi_sgr_mouse\": {\n if (this.cursor >= bytes.length) {\n if (!this.forceFlush) {\n this.markPending()\n return\n }\n\n this.state = { tag: \"csi_sgr_mouse_deferred\", part: this.state.part, hasDigit: this.state.hasDigit }\n this.pendingSinceMs = null\n this.forceFlush = false\n return\n }\n\n if (byte === ESC) {\n this.emitOpaqueResponse(\"unknown\", bytes.subarray(this.unitStart, this.cursor))\n this.state = { tag: \"ground\" }\n this.consumePrefix(this.cursor)\n continue\n }\n\n if (isAsciiDigit(byte)) {\n this.cursor += 1\n this.state = { tag: \"csi_sgr_mouse\", part: this.state.part, hasDigit: true }\n continue\n }\n\n if (byte === 0x3b && this.state.hasDigit && this.state.part < 2) {\n this.cursor += 1\n this.state = { tag: \"csi_sgr_mouse\", part: this.state.part + 1, hasDigit: false }\n continue\n }\n\n if (byte >= 0x40 && byte <= 0x7e) {\n const end = this.cursor + 1\n const rawBytes = bytes.subarray(this.unitStart, end)\n if (isMouseSgrSequence(rawBytes)) {\n this.emitMouse(rawBytes, \"sgr\")\n } else {\n this.emitKeyOrResponse(\"csi\", decodeUtf8(rawBytes))\n }\n this.state = { tag: \"ground\" }\n this.consumePrefix(end)\n continue\n }\n\n this.state = { tag: \"csi\" }\n continue\n }\n\n case \"csi_sgr_mouse_deferred\": {\n if (this.cursor >= bytes.length) {\n this.pendingSinceMs = null\n this.forceFlush = false\n return\n }\n\n if (byte === ESC) {\n this.emitOpaqueResponse(\"unknown\", bytes.subarray(this.unitStart, this.cursor))\n this.state = { tag: \"ground\" }\n this.consumePrefix(this.cursor)\n continue\n }\n\n if (isAsciiDigit(byte) || byte === 0x3b || byte === 0x4d || byte === 0x6d) {\n this.state = { tag: \"csi_sgr_mouse\", part: this.state.part, hasDigit: this.state.hasDigit }\n continue\n }\n\n this.emitOpaqueResponse(\"unknown\", bytes.subarray(this.unitStart, this.cursor))\n this.state = { tag: \"ground\" }\n this.consumePrefix(this.cursor)\n continue\n }\n\n case \"csi_parametric\": {\n if (this.cursor >= bytes.length) {\n if (!this.forceFlush) {\n this.markPending()\n return\n }\n\n if (canDeferParametricCsi(this.state, this.protocolContext)) {\n this.state = {\n tag: \"csi_parametric_deferred\",\n semicolons: this.state.semicolons,\n segments: this.state.segments,\n hasDigit: this.state.hasDigit,\n firstParamValue: this.state.firstParamValue,\n }\n this.pendingSinceMs = null\n this.forceFlush = false\n return\n }\n\n this.emitOpaqueResponse(\"unknown\", bytes.subarray(this.unitStart, this.cursor))\n this.state = { tag: \"ground\" }\n this.consumePrefix(this.cursor)\n continue\n }\n\n if (byte === ESC) {\n this.emitOpaqueResponse(\"unknown\", bytes.subarray(this.unitStart, this.cursor))\n this.state = { tag: \"ground\" }\n this.consumePrefix(this.cursor)\n continue\n }\n\n if (isAsciiDigit(byte)) {\n this.cursor += 1\n this.state = {\n tag: \"csi_parametric\",\n semicolons: this.state.semicolons,\n segments: this.state.segments,\n hasDigit: true,\n firstParamValue: this.state.firstParamValue,\n }\n continue\n }\n\n if (byte === 0x3a && this.state.hasDigit && this.state.segments < 3) {\n this.cursor += 1\n this.state = {\n tag: \"csi_parametric\",\n semicolons: this.state.semicolons,\n segments: this.state.segments + 1,\n hasDigit: false,\n firstParamValue: this.state.firstParamValue,\n }\n continue\n }\n\n if (byte === 0x3b && this.state.semicolons < 2) {\n this.cursor += 1\n this.state = {\n tag: \"csi_parametric\",\n semicolons: this.state.semicolons + 1,\n segments: 1,\n hasDigit: false,\n firstParamValue: this.state.firstParamValue,\n }\n continue\n }\n\n if (byte >= 0x40 && byte <= 0x7e) {\n const end = this.cursor + 1\n const protocol = classifyParametricCsiProtocol(this.state, byte)\n this.emitKeyOrResponse(protocol, decodeUtf8(bytes.subarray(this.unitStart, end)))\n this.state = { tag: \"ground\" }\n this.consumePrefix(end)\n continue\n }\n\n this.state = { tag: \"csi\" }\n continue\n }\n\n case \"csi_parametric_deferred\": {\n if (this.cursor >= bytes.length) {\n this.pendingSinceMs = null\n this.forceFlush = false\n return\n }\n\n if (byte === ESC) {\n this.emitOpaqueResponse(\"unknown\", bytes.subarray(this.unitStart, this.cursor))\n this.state = { tag: \"ground\" }\n this.consumePrefix(this.cursor)\n continue\n }\n\n if (isAsciiDigit(byte) || byte === 0x3a || byte === 0x3b) {\n this.state = {\n tag: \"csi_parametric\",\n semicolons: this.state.semicolons,\n segments: this.state.segments,\n hasDigit: this.state.hasDigit,\n firstParamValue: this.state.firstParamValue,\n }\n continue\n }\n\n if (canCompleteDeferredParametricCsi(this.state, byte, this.protocolContext)) {\n this.state = {\n tag: \"csi_parametric\",\n semicolons: this.state.semicolons,\n segments: this.state.segments,\n hasDigit: this.state.hasDigit,\n firstParamValue: this.state.firstParamValue,\n }\n continue\n }\n\n this.emitOpaqueResponse(\"unknown\", bytes.subarray(this.unitStart, this.cursor))\n this.state = { tag: \"ground\" }\n this.consumePrefix(this.cursor)\n continue\n }\n\n case \"csi_parametric_ignored\": {\n if (this.cursor >= bytes.length) {\n if (!this.forceFlush) {\n this.markPending()\n return\n }\n\n this.state = { tag: \"ground\" }\n this.consumePrefix(this.cursor)\n continue\n }\n\n if (byte === ESC) {\n this.state = { tag: \"ground\" }\n this.consumePrefix(this.cursor)\n continue\n }\n\n if (isAsciiDigit(byte)) {\n this.cursor += 1\n this.state = {\n tag: \"csi_parametric_ignored\",\n semicolons: this.state.semicolons,\n segments: this.state.segments,\n hasDigit: true,\n firstParamValue:\n this.state.semicolons === 0\n ? (this.state.firstParamValue ?? 0) * 10 + (byte - 0x30)\n : this.state.firstParamValue,\n }\n continue\n }\n\n if (byte === 0x3b && this.state.semicolons === 0 && this.state.hasDigit) {\n // `CSI 1;...R` is also used by the explicit-width probe, so once we\n // learn that first param we must hand control back to normal CSI\n // parsing instead of discarding the rest of the reply.\n if (this.protocolContext.explicitWidthCprActive && this.state.firstParamValue === 1) {\n this.state = { tag: \"csi\" }\n continue\n }\n\n this.cursor += 1\n this.state = {\n tag: \"csi_parametric_ignored\",\n semicolons: 1,\n segments: 1,\n hasDigit: false,\n firstParamValue: this.state.firstParamValue,\n }\n continue\n }\n\n if (byte === 0x52 && this.state.semicolons === 1 && this.state.hasDigit) {\n const end = this.cursor + 1\n this.state = { tag: \"ground\" }\n this.consumePrefix(end)\n continue\n }\n\n if (this.state.semicolons === 0) {\n this.state = { tag: \"csi\" }\n continue\n }\n\n this.state = { tag: \"ground\" }\n this.consumePrefix(this.cursor)\n continue\n }\n\n case \"csi_private_reply\": {\n if (this.cursor >= bytes.length) {\n if (!this.forceFlush) {\n this.markPending()\n return\n }\n\n if (canDeferPrivateReplyCsi(this.protocolContext)) {\n this.state = {\n tag: \"csi_private_reply_deferred\",\n semicolons: this.state.semicolons,\n hasDigit: this.state.hasDigit,\n sawDollar: this.state.sawDollar,\n }\n this.pendingSinceMs = null\n this.forceFlush = false\n return\n }\n\n this.emitOpaqueResponse(\"unknown\", bytes.subarray(this.unitStart, this.cursor))\n this.state = { tag: \"ground\" }\n this.consumePrefix(this.cursor)\n continue\n }\n\n if (byte === ESC) {\n this.emitOpaqueResponse(\"unknown\", bytes.subarray(this.unitStart, this.cursor))\n this.state = { tag: \"ground\" }\n this.consumePrefix(this.cursor)\n continue\n }\n\n if (isAsciiDigit(byte)) {\n this.cursor += 1\n this.state = {\n tag: \"csi_private_reply\",\n semicolons: this.state.semicolons,\n hasDigit: true,\n sawDollar: this.state.sawDollar,\n }\n continue\n }\n\n if (byte === 0x3b) {\n this.cursor += 1\n this.state = {\n tag: \"csi_private_reply\",\n semicolons: this.state.semicolons + 1,\n hasDigit: false,\n sawDollar: false,\n }\n continue\n }\n\n if (byte === 0x24 && this.state.hasDigit && !this.state.sawDollar) {\n this.cursor += 1\n this.state = {\n tag: \"csi_private_reply\",\n semicolons: this.state.semicolons,\n hasDigit: true,\n sawDollar: true,\n }\n continue\n }\n\n if (byte >= 0x40 && byte <= 0x7e) {\n const end = this.cursor + 1\n this.emitOpaqueResponse(\"csi\", bytes.subarray(this.unitStart, end))\n this.state = { tag: \"ground\" }\n this.consumePrefix(end)\n continue\n }\n\n this.state = { tag: \"csi\" }\n continue\n }\n\n case \"csi_private_reply_deferred\": {\n if (this.cursor >= bytes.length) {\n this.pendingSinceMs = null\n this.forceFlush = false\n return\n }\n\n if (byte === ESC) {\n this.emitOpaqueResponse(\"unknown\", bytes.subarray(this.unitStart, this.cursor))\n this.state = { tag: \"ground\" }\n this.consumePrefix(this.cursor)\n continue\n }\n\n if (isAsciiDigit(byte) || byte === 0x3b || byte === 0x24) {\n this.state = {\n tag: \"csi_private_reply\",\n semicolons: this.state.semicolons,\n hasDigit: this.state.hasDigit,\n sawDollar: this.state.sawDollar,\n }\n continue\n }\n\n if (canCompleteDeferredPrivateReplyCsi(this.state, byte, this.protocolContext)) {\n this.state = {\n tag: \"csi_private_reply\",\n semicolons: this.state.semicolons,\n hasDigit: this.state.hasDigit,\n sawDollar: this.state.sawDollar,\n }\n continue\n }\n\n this.emitOpaqueResponse(\"unknown\", bytes.subarray(this.unitStart, this.cursor))\n this.state = { tag: \"ground\" }\n this.consumePrefix(this.cursor)\n continue\n }\n\n // OSC sequences end at BEL or ESC \\. DCS and APC end at ESC \\\n // only. The sawEsc flag tracks whether the previous byte was ESC,\n // since the two-byte ESC \\ can split across push() calls.\n case \"osc\": {\n if (this.cursor >= bytes.length) {\n if (!this.forceFlush) {\n this.markPending()\n return\n }\n\n this.emitOpaqueResponse(\"unknown\", bytes.subarray(this.unitStart, this.cursor))\n this.state = { tag: \"ground\" }\n this.consumePrefix(this.cursor)\n continue\n }\n\n if (this.state.sawEsc) {\n if (byte === 0x5c) {\n const end = this.cursor + 1\n this.emitOpaqueResponse(\"osc\", bytes.subarray(this.unitStart, end))\n this.state = { tag: \"ground\" }\n this.consumePrefix(end)\n continue\n }\n\n this.state = { tag: \"osc\", sawEsc: false }\n continue\n }\n\n if (byte === BEL) {\n const end = this.cursor + 1\n this.emitOpaqueResponse(\"osc\", bytes.subarray(this.unitStart, end))\n this.state = { tag: \"ground\" }\n this.consumePrefix(end)\n continue\n }\n\n if (byte === ESC) {\n this.cursor += 1\n this.state = { tag: \"osc\", sawEsc: true }\n continue\n }\n\n this.cursor += 1\n continue\n }\n\n case \"dcs\": {\n if (this.cursor >= bytes.length) {\n if (!this.forceFlush) {\n this.markPending()\n return\n }\n\n this.emitOpaqueResponse(\"unknown\", bytes.subarray(this.unitStart, this.cursor))\n this.state = { tag: \"ground\" }\n this.consumePrefix(this.cursor)\n continue\n }\n\n if (this.state.sawEsc) {\n if (byte === 0x5c) {\n const end = this.cursor + 1\n this.emitOpaqueResponse(\"dcs\", bytes.subarray(this.unitStart, end))\n this.state = { tag: \"ground\" }\n this.consumePrefix(end)\n continue\n }\n\n this.state = { tag: \"dcs\", sawEsc: false }\n continue\n }\n\n if (byte === ESC) {\n this.cursor += 1\n this.state = { tag: \"dcs\", sawEsc: true }\n continue\n }\n\n this.cursor += 1\n continue\n }\n\n case \"apc\": {\n if (this.cursor >= bytes.length) {\n if (!this.forceFlush) {\n this.markPending()\n return\n }\n\n this.emitOpaqueResponse(\"unknown\", bytes.subarray(this.unitStart, this.cursor))\n this.state = { tag: \"ground\" }\n this.consumePrefix(this.cursor)\n continue\n }\n\n if (this.state.sawEsc) {\n if (byte === 0x5c) {\n const end = this.cursor + 1\n this.emitOpaqueResponse(\"apc\", bytes.subarray(this.unitStart, end))\n this.state = { tag: \"ground\" }\n this.consumePrefix(end)\n continue\n }\n\n this.state = { tag: \"apc\", sawEsc: false }\n continue\n }\n\n if (byte === ESC) {\n this.cursor += 1\n this.state = { tag: \"apc\", sawEsc: true }\n continue\n }\n\n this.cursor += 1\n continue\n }\n\n // Delayed SGR mouse continuation after `esc_recovery` has consumed the\n // leading `[`. Reconstruct the already-flushed ESC for valid mouse\n // reports so wheel/click input still works; keep malformed or partial\n // bytes opaque so they never leak into text input.\n case \"esc_less_mouse\": {\n if (this.cursor >= bytes.length) {\n if (!this.forceFlush) {\n this.markPending()\n return\n }\n\n this.emitOpaqueResponse(\"unknown\", bytes.subarray(this.unitStart, this.cursor))\n this.state = { tag: \"ground\" }\n this.consumePrefix(this.cursor)\n continue\n }\n\n if ((byte >= 0x30 && byte <= 0x39) || byte === 0x3b) {\n this.cursor += 1\n continue\n }\n\n if (byte === 0x4d || byte === 0x6d) {\n const end = this.cursor + 1\n const rawBytes = bytes.subarray(this.unitStart, end)\n const prefixed = withEscPrefix(rawBytes)\n if (isMouseSgrSequence(prefixed)) {\n this.emitMouse(prefixed, \"sgr\")\n } else {\n this.emitOpaqueResponse(\"unknown\", rawBytes)\n }\n this.state = { tag: \"ground\" }\n this.consumePrefix(end)\n continue\n }\n\n this.emitOpaqueResponse(\"unknown\", bytes.subarray(this.unitStart, this.cursor))\n this.state = { tag: \"ground\" }\n this.consumePrefix(this.cursor)\n continue\n }\n\n // Delayed X10 mouse continuation after `esc_recovery` has consumed the\n // leading `[`. Reconstruct the already-flushed ESC for valid mouse\n // reports so wheel/click input still works; keep malformed or partial\n // bytes opaque so they never leak into text input.\n case \"esc_less_x10_mouse\": {\n const end = this.unitStart + 5\n\n if (bytes.length < end) {\n if (!this.forceFlush) {\n this.markPending()\n return\n }\n\n this.emitOpaqueResponse(\"unknown\", bytes.subarray(this.unitStart, bytes.length))\n this.state = { tag: \"ground\" }\n this.consumePrefix(bytes.length)\n continue\n }\n\n const rawBytes = bytes.subarray(this.unitStart, end)\n this.emitMouse(withEscPrefix(rawBytes), \"x10\")\n this.state = { tag: \"ground\" }\n this.consumePrefix(end)\n continue\n }\n }\n }\n }\n\n // Tries to parse the raw string as a key via parseKeypress(). If it\n // recognizes the sequence (printable char, arrow, function key, etc.),\n // emits a key event. Otherwise emits a response event — this is how\n // capability responses, focus sequences, and other non-key CSI traffic\n // avoids becoming text.\n private emitKeyOrResponse(protocol: StdinResponseProtocol, raw: string): void {\n const parsed = parseKeypress(raw, { useKittyKeyboard: this.useKittyKeyboard })\n if (parsed) {\n this.events.push({\n type: \"key\",\n raw: parsed.raw,\n key: parsed,\n })\n return\n }\n\n this.events.push({\n type: \"response\",\n protocol,\n sequence: raw,\n })\n }\n\n private emitMouse(rawBytes: Uint8Array, encoding: \"sgr\" | \"x10\"): void {\n const event = this.mouseParser.parseMouseEvent(rawBytes)\n if (!event) {\n this.emitOpaqueResponse(\"unknown\", rawBytes)\n return\n }\n\n this.events.push({\n type: \"mouse\",\n raw: decodeLatin1(rawBytes),\n encoding,\n event,\n })\n }\n\n // Handles single bytes in the 0x80–0xFF range that aren't valid UTF-8\n // leads. Passes them through parseKeypress() which maps them to the\n // existing meta-key behavior (e.g. Alt+letter in terminals that send\n // high bytes instead of ESC-prefixed sequences).\n private emitLegacyHighByte(byte: number): void {\n const parsed = parseKeypress(Buffer.from([byte]), { useKittyKeyboard: this.useKittyKeyboard })\n if (parsed) {\n this.events.push({\n type: \"key\",\n raw: parsed.raw,\n key: parsed,\n })\n return\n }\n\n this.events.push({\n type: \"response\",\n protocol: \"unknown\",\n sequence: String.fromCharCode(byte),\n })\n }\n\n private emitOpaqueResponse(protocol: StdinResponseProtocol, rawBytes: Uint8Array): void {\n this.events.push({\n type: \"response\",\n protocol,\n sequence: decodeLatin1(rawBytes),\n })\n }\n\n // Advances past a completed protocol unit. Resets cursor, unitStart,\n // and timeout state so the next scan iteration starts clean.\n private consumePrefix(endExclusive: number): void {\n this.pending.consume(endExclusive)\n this.pendingTimeoutPaused = false\n this.suspendedPixelResolutionPrefixLength = 0\n this.cursor = 0\n this.unitStart = 0\n this.pendingSinceMs = null\n this.forceFlush = false\n }\n\n // Removes all bytes from the pending queue and returns them. Used when\n // entering paste mode — leftover bytes after the paste start marker\n // need to flow through consumePasteBytes() instead.\n private takePendingBytes(): Uint8Array {\n const buffered = this.pending.take()\n this.cursor = 0\n this.unitStart = 0\n this.pendingSinceMs = null\n this.forceFlush = false\n return buffered\n }\n\n // Emits all pending bytes as one opaque response and clears the buffer.\n // This keeps the parser buffer bounded at maxPendingBytes without\n // dropping data or splitting it into per-character events.\n private flushPendingOverflow(): void {\n if (this.pending.length === 0) {\n return\n }\n\n this.emitOpaqueResponse(\"unknown\", this.pending.view())\n this.pending.clear()\n this.cursor = 0\n this.unitStart = 0\n this.pendingSinceMs = null\n this.pendingTimeoutPaused = false\n this.suspendedPixelResolutionPrefixLength = 0\n this.forceFlush = false\n this.state = { tag: \"ground\" }\n }\n\n // Records when incomplete data first appeared so flushTimeout() can\n // decide whether enough time has elapsed to force-flush it.\n private markPending(): void {\n this.pendingSinceMs = this.clock.now()\n }\n\n // Processes bytes during an active bracketed paste. Searches for the end\n // marker (ESC[201~) using a sliding tail window so the marker can split\n // across chunk boundaries. Bytes that can't be part of the end marker are\n // appended to the paste collector without decoding.\n //\n // Returns any bytes that follow the end marker — those go back through\n // normal parsing in the push() loop.\n private consumePasteBytes(chunk: Uint8Array): Uint8Array {\n const paste = this.paste!\n const combined = concatBytes(paste.tail, chunk)\n const endIndex = indexOfBytes(combined, BRACKETED_PASTE_END)\n\n if (endIndex !== -1) {\n this.pushPasteBytes(combined.subarray(0, endIndex))\n\n this.events.push({\n type: \"paste\",\n bytes: joinPasteBytes(paste.parts, paste.totalLength),\n })\n\n this.paste = null\n return combined.subarray(endIndex + BRACKETED_PASTE_END.length)\n }\n\n // Keep enough trailing bytes to detect an end marker split across chunks.\n // Everything before that point is safe to retain immediately.\n const keep = Math.min(BRACKETED_PASTE_END.length - 1, combined.length)\n const stableLength = combined.length - keep\n if (stableLength > 0) {\n this.pushPasteBytes(combined.subarray(0, stableLength))\n }\n\n paste.tail = Uint8Array.from(combined.subarray(stableLength))\n return EMPTY_BYTES\n }\n\n private pushPasteBytes(bytes: Uint8Array): void {\n if (bytes.length === 0) {\n return\n }\n\n // Copy here because subarray() inputs may alias the caller's chunk or the\n // parser's pending buffer across pushes. The emitted paste event must keep\n // the original bytes even if those backing buffers are later reused.\n this.paste!.parts.push(Uint8Array.from(bytes))\n this.paste!.totalLength += bytes.length\n }\n\n private reconcileDeferredStateWithProtocolContext(): void {\n switch (this.state.tag) {\n case \"csi_parametric_deferred\":\n if (!canDeferParametricCsi(this.state, this.protocolContext)) {\n this.emitOpaqueResponse(\"unknown\", this.pending.view().subarray(this.unitStart, this.cursor))\n this.state = { tag: \"ground\" }\n this.consumePrefix(this.cursor)\n }\n return\n\n case \"csi_private_reply_deferred\":\n if (!canDeferPrivateReplyCsi(this.protocolContext)) {\n this.emitOpaqueResponse(\"unknown\", this.pending.view().subarray(this.unitStart, this.cursor))\n this.state = { tag: \"ground\" }\n this.consumePrefix(this.cursor)\n }\n return\n }\n }\n\n // Arms or disarms the timeout after every push(). If there's an incomplete\n // unit in the buffer, starts a timer. When the timer fires, it sets\n // forceFlush so the next read() converts the incomplete unit into one\n // atomic event (e.g. a lone ESC becoming an Escape key).\n private reconcileTimeoutState(): void {\n if (!this.armTimeouts) {\n return\n }\n\n if (this.pendingTimeoutPaused) {\n this.clearTimeout()\n return\n }\n\n if (this.paste || this.pendingSinceMs === null || this.pending.length === 0) {\n this.clearTimeout()\n return\n }\n\n this.clearTimeout()\n this.timeoutId = this.clock.setTimeout(() => {\n this.timeoutId = null\n if (this.destroyed) {\n return\n }\n\n try {\n this.tryForceFlush()\n this.onTimeoutFlush?.()\n } catch (error) {\n console.error(\"stdin parser timeout flush failed\", error)\n }\n }, this.timeoutMs)\n }\n\n private clearTimeout(): void {\n if (!this.timeoutId) {\n return\n }\n\n this.clock.clearTimeout(this.timeoutId)\n this.timeoutId = null\n }\n\n // Clears all parser state: pending bytes, queued events, timeout tracking,\n // and any active paste collector. Called by both reset() (suspend/resume)\n // and destroy() to ensure no stale state survives.\n private resetState(): void {\n this.pending.reset(INITIAL_PENDING_CAPACITY)\n this.events.length = 0\n this.pendingSinceMs = null\n this.pendingTimeoutPaused = false\n this.suspendedPixelResolutionPrefixLength = 0\n this.forceFlush = false\n this.justFlushedEsc = false\n this.state = { tag: \"ground\" }\n this.cursor = 0\n this.unitStart = 0\n this.paste = null\n this.mouseParser.reset()\n }\n}\n",
33
33
  "import type { TextChunk } from \"../text-buffer.js\"\nimport { StyledText } from \"./styled-text.js\"\nimport { SyntaxStyle, type StyleDefinition } from \"../syntax-style.js\"\nimport { TreeSitterClient } from \"./tree-sitter/client.js\"\nimport type { SimpleHighlight } from \"./tree-sitter/types.js\"\nimport { createTextAttributes } from \"../utils.js\"\nimport { registerEnvVar, env } from \"./env.js\"\n\nregisterEnvVar({ name: \"OTUI_TS_STYLE_WARN\", default: false, description: \"Enable warnings for missing syntax styles\" })\n\ninterface TextChunkOptions {\n enabled?: boolean\n baseHighlight?: string\n}\n\ninterface Boundary {\n offset: number\n type: \"start\" | \"end\"\n highlightIndex: number\n}\n\nfunction getSpecificity(group: string): number {\n return group.split(\".\").length\n}\n\nfunction shouldSuppressInInjection(group: string, meta: any): boolean {\n if (meta?.isInjection) {\n return false\n }\n\n // Check if this is a parent block that should be suppressed\n // TODO: This is language/highlight specific,\n // not generic enough. Needs a more generic solution.\n // The styles need to be more like a stack that gets merged\n // and for a container with injections we just don't push that container style\n return group === \"markup.raw.block\"\n}\n\nexport function treeSitterToTextChunks(\n content: string,\n highlights: SimpleHighlight[],\n syntaxStyle: SyntaxStyle,\n options?: TextChunkOptions,\n): TextChunk[] {\n const chunks: TextChunk[] = []\n const defaultStyle = syntaxStyle.getStyle(\"default\")\n const concealEnabled = options?.enabled ?? true\n const baseStyle = options?.baseHighlight ? syntaxStyle.getStyle(options.baseHighlight) : undefined\n\n const injectionContainerRanges: Array<{ start: number; end: number }> = []\n const boundaries: Boundary[] = []\n\n for (let i = 0; i < highlights.length; i++) {\n const [start, end, , meta] = highlights[i]\n if (start === end) continue // Skip zero-length ranges\n if (meta?.containsInjection) {\n injectionContainerRanges.push({ start, end })\n }\n boundaries.push({ offset: start, type: \"start\", highlightIndex: i })\n boundaries.push({ offset: end, type: \"end\", highlightIndex: i })\n }\n\n // Sort boundaries by offset, with ends before starts at same offset\n // This ensures we close old ranges before opening new ones at the same position\n boundaries.sort((a, b) => {\n if (a.offset !== b.offset) return a.offset - b.offset\n if (a.type === \"end\" && b.type === \"start\") return -1\n if (a.type === \"start\" && b.type === \"end\") return 1\n return 0\n })\n\n const activeHighlights = new Set<number>()\n let currentOffset = 0\n\n for (let i = 0; i < boundaries.length; i++) {\n const boundary = boundaries[i]\n\n if (currentOffset < boundary.offset && activeHighlights.size > 0) {\n const segmentText = content.slice(currentOffset, boundary.offset)\n\n const activeGroups: Array<{ group: string; meta: any; index: number }> = []\n for (const idx of activeHighlights) {\n const [, , group, meta] = highlights[idx]\n activeGroups.push({ group, meta, index: idx })\n }\n\n // Check if any active highlight has a conceal property\n // Priority: 1. Check meta.conceal first 2. Check group === \"conceal\" or starts with \"conceal.\"\n const concealHighlight = concealEnabled\n ? activeGroups.find(\n (h) => h.meta?.conceal !== undefined || h.group === \"conceal\" || h.group.startsWith(\"conceal.\"),\n )\n : undefined\n\n if (concealHighlight) {\n let replacementText = \"\"\n\n if (concealHighlight.meta?.conceal !== undefined) {\n // If meta.conceal is set, use it (this would come from (#set! conceal \"...\") if supported)\n replacementText = concealHighlight.meta.conceal\n } else if (concealHighlight.group === \"conceal.with.space\") {\n // Special group name means replace with space\n replacementText = \" \"\n }\n\n if (replacementText) {\n chunks.push({\n __isChunk: true,\n text: replacementText,\n fg: defaultStyle?.fg,\n bg: defaultStyle?.bg,\n attributes: defaultStyle\n ? createTextAttributes({\n bold: defaultStyle.bold,\n italic: defaultStyle.italic,\n underline: defaultStyle.underline,\n dim: defaultStyle.dim,\n })\n : 0,\n })\n }\n } else {\n const insideInjectionContainer = injectionContainerRanges.some(\n (range) => currentOffset >= range.start && currentOffset < range.end,\n )\n\n // Filter out highlights that should be suppressed\n // Suppress highlights when we're inside an injection container\n const validGroups = activeGroups.filter((h) => {\n // If we're inside an injection container, suppress all markup.raw.block highlights\n // This includes both the container itself and any nested markup.raw.block\n if (insideInjectionContainer && shouldSuppressInInjection(h.group, h.meta)) {\n return false\n }\n return true\n })\n\n // Sort groups by specificity (least to most), then by index (earlier to later)\n // This ensures we merge styles in the correct order: parent styles first, then child overrides\n const sortedGroups = validGroups.sort((a, b) => {\n const aSpec = getSpecificity(a.group)\n const bSpec = getSpecificity(b.group)\n if (aSpec !== bSpec) return aSpec - bSpec // Lower specificity first\n return a.index - b.index // Earlier index first\n })\n\n // Merge all active styles in order (like CSS cascade)\n // Later/more specific styles override earlier/less specific ones\n const mergedStyle: StyleDefinition = baseStyle ? { ...baseStyle } : {}\n\n for (const { group } of sortedGroups) {\n let styleForGroup = syntaxStyle.getStyle(group)\n\n if (!styleForGroup && group.includes(\".\")) {\n // Fallback to base scope\n const baseName = group.split(\".\")[0]\n styleForGroup = syntaxStyle.getStyle(baseName)\n }\n\n if (styleForGroup) {\n // Merge properties - later styles override earlier ones\n if (styleForGroup.fg !== undefined) mergedStyle.fg = styleForGroup.fg\n if (styleForGroup.bg !== undefined) mergedStyle.bg = styleForGroup.bg\n if (styleForGroup.bold !== undefined) mergedStyle.bold = styleForGroup.bold\n if (styleForGroup.italic !== undefined) mergedStyle.italic = styleForGroup.italic\n if (styleForGroup.underline !== undefined) mergedStyle.underline = styleForGroup.underline\n if (styleForGroup.dim !== undefined) mergedStyle.dim = styleForGroup.dim\n } else {\n if (group.includes(\".\")) {\n const baseName = group.split(\".\")[0]\n if (env.OTUI_TS_STYLE_WARN) {\n console.warn(\n `Syntax style not found for group \"${group}\" or base scope \"${baseName}\", using default style`,\n )\n }\n } else {\n if (env.OTUI_TS_STYLE_WARN) {\n console.warn(`Syntax style not found for group \"${group}\", using default style`)\n }\n }\n }\n }\n\n // Use merged style, falling back to default if nothing was merged\n const finalStyle = Object.keys(mergedStyle).length > 0 ? mergedStyle : defaultStyle\n\n chunks.push({\n __isChunk: true,\n text: segmentText,\n fg: finalStyle?.fg,\n bg: finalStyle?.bg,\n attributes: finalStyle\n ? createTextAttributes({\n bold: finalStyle.bold,\n italic: finalStyle.italic,\n underline: finalStyle.underline,\n dim: finalStyle.dim,\n })\n : 0,\n })\n }\n } else if (currentOffset < boundary.offset) {\n const text = content.slice(currentOffset, boundary.offset)\n const style = baseStyle ?? defaultStyle\n chunks.push({\n __isChunk: true,\n text,\n fg: style?.fg,\n bg: style?.bg,\n attributes: style\n ? createTextAttributes({\n bold: style.bold,\n italic: style.italic,\n underline: style.underline,\n dim: style.dim,\n })\n : 0,\n })\n }\n\n if (boundary.type === \"start\") {\n activeHighlights.add(boundary.highlightIndex)\n } else {\n activeHighlights.delete(boundary.highlightIndex)\n\n if (concealEnabled) {\n const [, , group, meta] = highlights[boundary.highlightIndex]\n if (meta?.concealLines !== undefined) {\n if (boundary.offset < content.length && content[boundary.offset] === \"\\n\") {\n currentOffset = boundary.offset + 1\n continue\n }\n }\n\n // TODO: This is also a query specific workaround, needs improvement\n if (meta?.conceal !== undefined) {\n // Skip the next space if we replaced with a space (prevents double spaces like \"text] (url)\")\n if (meta.conceal === \" \") {\n if (boundary.offset < content.length && content[boundary.offset] === \" \") {\n currentOffset = boundary.offset + 1\n continue\n }\n }\n // For heading markers specifically, also skip the trailing space\n // The group is just \"conceal\" for heading markers from the markdown query\n // We need to check if this conceal is NOT from an injection (markdown_inline)\n else if (meta.conceal === \"\" && group === \"conceal\" && !meta.isInjection) {\n if (boundary.offset < content.length && content[boundary.offset] === \" \") {\n currentOffset = boundary.offset + 1\n continue\n }\n }\n }\n }\n }\n\n currentOffset = boundary.offset\n }\n\n if (currentOffset < content.length) {\n const text = content.slice(currentOffset)\n const style = baseStyle ?? defaultStyle\n chunks.push({\n __isChunk: true,\n text,\n fg: style?.fg,\n bg: style?.bg,\n attributes: style\n ? createTextAttributes({\n bold: style.bold,\n italic: style.italic,\n underline: style.underline,\n dim: style.dim,\n })\n : 0,\n })\n }\n\n return chunks\n}\n\nexport interface TreeSitterToStyledTextOptions {\n conceal?: Pick<TextChunkOptions, \"enabled\">\n baseHighlight?: string\n}\n\nexport async function treeSitterToStyledText(\n content: string,\n filetype: string,\n syntaxStyle: SyntaxStyle,\n client: TreeSitterClient,\n options?: TreeSitterToStyledTextOptions,\n): Promise<StyledText> {\n const result = await client.highlightOnce(content, filetype)\n if ((result.highlights && result.highlights.length > 0) || options?.baseHighlight) {\n const chunks = treeSitterToTextChunks(content, result.highlights ?? [], syntaxStyle, {\n enabled: options?.conceal?.enabled ?? true,\n baseHighlight: options?.baseHighlight,\n })\n return new StyledText(chunks)\n } else {\n const defaultStyle = syntaxStyle.mergeStyles(\"default\")\n const chunks: TextChunk[] = [\n {\n __isChunk: true,\n text: content,\n fg: defaultStyle.fg,\n bg: defaultStyle.bg,\n attributes: defaultStyle.attributes,\n },\n ]\n return new StyledText(chunks)\n }\n}\n",
34
- "import { EventEmitter } from \"events\"\nimport { createDebounce, clearDebounceScope, DebounceController } from \"../debounce.js\"\nimport { ProcessQueue } from \"../queue.js\"\nimport type {\n TreeSitterClientOptions,\n TreeSitterClientEvents,\n BufferState,\n ParsedBuffer,\n FiletypeParserOptions,\n Edit,\n PerformanceStats,\n SimpleHighlight,\n TreeSitterWorkerRequest,\n TreeSitterWorkerResponse,\n} from \"./types.js\"\nimport { getParsers } from \"./default-parsers.js\"\nimport { resolve, isAbsolute, parse } from \"path\"\nimport { existsSync } from \"fs\"\nimport { registerEnvVar, env } from \"../env.js\"\nimport { isBunfsPath, normalizeBunfsPath } from \"../bunfs.js\"\nimport {\n type PlatformWorkerHandle,\n type WorkerErrorEvent,\n type WorkerMessageEvent,\n Worker as PlatformWorker,\n} from \"../../platform/worker.js\"\nimport { resolveDefaultTreeSitterWorkerPath, resolveTreeSitterWasm } from \"#opentui/runtime-assets\"\n\nregisterEnvVar({\n name: \"OTUI_TREE_SITTER_WORKER_PATH\",\n description: \"Path to the TreeSitter worker entry script\",\n type: \"string\",\n default: \"\",\n})\n\ndeclare global {\n const OTUI_TREE_SITTER_WORKER_PATH: string\n}\n\ninterface EditQueueItem {\n edits: Edit[]\n newContent: string\n version: number\n isReset?: boolean\n}\n\ntype TreeSitterWorkerPath = string | URL\ntype TreeSitterWorkerHandle = Pick<PlatformWorkerHandle, \"onerror\" | \"onmessage\" | \"postMessage\" | \"terminate\">\n\ninterface TreeSitterClientInternalOptions {\n autoStartWorker?: boolean\n}\n\ninterface PendingRequest {\n resolve: (response: any) => void\n reject: (error: Error) => void\n}\n\nlet DEFAULT_PARSER_OVERRIDES: FiletypeParserOptions[] = []\n\nexport function addDefaultParsers(parsers: FiletypeParserOptions[]): void {\n for (const parser of parsers) {\n DEFAULT_PARSER_OVERRIDES = [\n ...DEFAULT_PARSER_OVERRIDES.filter((existingParser) => existingParser.filetype !== parser.filetype),\n parser,\n ]\n }\n}\n\nconst isUrl = (path: string) => path.startsWith(\"http://\") || path.startsWith(\"https://\")\n\n// Parser options now support both URLs and local file paths\n// TODO: TreeSitterClient should have a setOptions method, passing it on to the worker etc.\nexport class TreeSitterClient extends EventEmitter<TreeSitterClientEvents> {\n private initialized = false\n private worker: TreeSitterWorkerHandle | undefined\n private buffers: Map<number, BufferState> = new Map()\n private initializePromise: Promise<void> | undefined\n private initializeResolvers:\n | { resolve: () => void; reject: (error: Error) => void; timeoutId: ReturnType<typeof setTimeout> }\n | undefined\n private messageCallbacks = new Map<string, PendingRequest>()\n private messageIdCounter: number = 0\n private editQueues: Map<number, ProcessQueue<EditQueueItem>> = new Map()\n private debouncer: DebounceController\n private options: TreeSitterClientOptions\n private destroyCallbacks = new Set<() => void>()\n private lifecycleGeneration = 0\n private rejectInitialization: ((error: Error) => void) | undefined\n private destroyPromise: Promise<void> | undefined\n private workerTerminationFailed = false\n\n constructor(options: TreeSitterClientOptions, internalOptions: TreeSitterClientInternalOptions = {}) {\n super()\n this.options = options\n this.debouncer = createDebounce(\"tree-sitter-client\")\n if (internalOptions.autoStartWorker ?? true) {\n this.startWorker()\n }\n }\n\n public onDestroy(callback: () => void): () => void {\n this.destroyCallbacks.add(callback)\n return () => {\n this.destroyCallbacks.delete(callback)\n }\n }\n\n private emitError(error: string, bufferId?: number): void {\n if (this.listenerCount(\"error\") > 0) {\n this.emit(\"error\", error, bufferId)\n }\n }\n\n private emitWarning(warning: string, bufferId?: number): void {\n if (this.listenerCount(\"warning\") > 0) {\n this.emit(\"warning\", warning, bufferId)\n }\n }\n\n private startWorker() {\n if (this.worker) {\n return\n }\n\n const workerPath = this.resolveWorkerPath()\n\n const worker = new PlatformWorker(workerPath)\n this.worker = worker\n\n worker.onmessage = (event) => {\n if (this.worker !== worker) {\n return\n }\n\n this.handleWorkerMessage(event as WorkerMessageEvent<TreeSitterWorkerResponse>)\n }\n\n worker.onerror = (error: WorkerErrorEvent) => {\n if (this.worker !== worker) {\n return\n }\n\n console.error(\"TreeSitter worker error:\", error.message)\n const workerError = new Error(`Worker error: ${error.message}`, { cause: error.error })\n this.handleWorkerFailure(worker, workerError)\n this.emitError(`Worker error: ${error.message}`)\n }\n }\n\n private sendWorkerMessage(message: TreeSitterWorkerRequest): void {\n if (!this.worker) {\n throw new Error(\"TreeSitter worker is not available\")\n }\n this.worker.postMessage(message)\n }\n\n private rejectPendingRequests(error: Error): void {\n const requests = Array.from(this.messageCallbacks.values())\n this.messageCallbacks.clear()\n for (const request of requests) {\n request.reject(error)\n }\n }\n\n private rejectActiveInitialization(error: Error): void {\n if (this.initializeResolvers) {\n clearTimeout(this.initializeResolvers.timeoutId)\n this.initializeResolvers.reject(error)\n this.initializeResolvers = undefined\n }\n this.rejectInitialization?.(error)\n this.rejectInitialization = undefined\n }\n\n private handleWorkerFailure(worker: TreeSitterWorkerHandle, error: Error): void {\n if (this.worker !== worker) {\n return\n }\n\n worker.onmessage = null\n worker.onerror = null\n this.worker = undefined\n this.lifecycleGeneration++\n this.initialized = false\n this.initializePromise = undefined\n this.rejectActiveInitialization(error)\n this.rejectPendingRequests(error)\n this.editQueues.clear()\n this.buffers.clear()\n this.debouncer.clear()\n\n try {\n void Promise.resolve(worker.terminate()).catch(() => {})\n } catch {\n // The worker has already failed; cleanup is best effort.\n }\n }\n\n // Path resolution stays in the client for now; runtime-specific Worker construction lives in platform/worker.\n private resolveWorkerPath(): TreeSitterWorkerPath {\n if (this.options.workerPath) {\n return this.options.workerPath\n }\n\n if (env.OTUI_TREE_SITTER_WORKER_PATH) {\n return env.OTUI_TREE_SITTER_WORKER_PATH\n }\n\n if (typeof OTUI_TREE_SITTER_WORKER_PATH !== \"undefined\") {\n return OTUI_TREE_SITTER_WORKER_PATH\n }\n\n let workerPath = resolveDefaultTreeSitterWorkerPath(new URL(\"./parser.worker.js\", import.meta.url))\n\n if (!process.env.OTUI_ASSET_ROOT && !existsSync(workerPath)) {\n workerPath = new URL(\"./parser.worker.ts\", import.meta.url).href\n }\n\n return workerPath\n }\n\n private async stopWorker(): Promise<void> {\n const worker = this.worker\n if (!worker) {\n return\n }\n\n const onmessage = worker.onmessage\n const onerror = worker.onerror\n worker.onmessage = null\n worker.onerror = null\n this.worker = undefined\n\n try {\n const termination = worker.terminate()\n if (termination && typeof (termination as PromiseLike<number>).then === \"function\") {\n await termination\n }\n } catch (error) {\n if (!this.worker) {\n worker.onmessage = onmessage\n worker.onerror = onerror\n this.worker = worker\n }\n throw error\n }\n }\n\n // NOTE: Unused, but useful for debugging and testing\n private async handleReset() {\n this.buffers.clear()\n await this.stopWorker()\n this.startWorker()\n this.initialized = false\n this.initializePromise = undefined\n this.initializeResolvers = undefined\n return this.initialize()\n }\n\n async initialize(): Promise<void> {\n if (this.destroyPromise) {\n throw new Error(\"Cannot initialize while client is being destroyed\")\n }\n if (this.workerTerminationFailed) {\n throw new Error(\"Cannot initialize after worker termination failed; retry destroy()\")\n }\n\n if (this.initializePromise) {\n return this.initializePromise\n }\n\n if (!this.worker) {\n this.startWorker()\n }\n\n const worker = this.worker!\n const generation = this.lifecycleGeneration\n let rejectCancellation!: (error: Error) => void\n const cancellation = new Promise<never>((_, reject) => {\n rejectCancellation = reject\n })\n const initialization = Promise.race([this.initializeClient(generation, worker), cancellation])\n this.rejectInitialization = rejectCancellation\n this.initializePromise = initialization\n\n void initialization.then(\n () => {\n if (this.initializePromise === initialization) {\n this.rejectInitialization = undefined\n }\n },\n () => {\n if (this.initializePromise === initialization) {\n this.rejectInitialization = undefined\n }\n },\n )\n\n return this.initializePromise\n }\n\n private assertCurrentInitialization(generation: number, worker: TreeSitterWorkerHandle): void {\n if (this.lifecycleGeneration !== generation || this.worker !== worker || this.destroyPromise) {\n throw new Error(\"TreeSitter initialization was invalidated\")\n }\n }\n\n private async initializeClient(generation: number, worker: TreeSitterWorkerHandle): Promise<void> {\n const treeSitterWasmPath = await resolveTreeSitterWasm()\n this.assertCurrentInitialization(generation, worker)\n await new Promise<void>((resolve, reject) => {\n const timeoutMs = this.options.initTimeout ?? 10000 // Default to 10 seconds\n const timeoutId = setTimeout(() => {\n const error = new Error(\"Worker initialization timed out\")\n console.error(\"TreeSitter client:\", error.message)\n this.initializeResolvers = undefined\n reject(error)\n }, timeoutMs)\n\n this.initializeResolvers = { resolve, reject, timeoutId }\n this.sendWorkerMessage({\n type: \"INIT\",\n dataPath: this.options.dataPath,\n treeSitterWasmPath,\n })\n })\n\n this.assertCurrentInitialization(generation, worker)\n await this.registerDefaultParsers(generation, worker)\n this.assertCurrentInitialization(generation, worker)\n this.initialized = true\n }\n\n private async registerDefaultParsers(\n generation: number = this.lifecycleGeneration,\n worker: TreeSitterWorkerHandle = this.worker!,\n ): Promise<void> {\n const defaultParsers = await getParsers()\n this.assertCurrentInitialization(generation, worker)\n const overriddenFiletypes = new Set(DEFAULT_PARSER_OVERRIDES.map((parser) => parser.filetype))\n\n for (const parser of [\n ...defaultParsers.filter((parser) => !overriddenFiletypes.has(parser.filetype)),\n ...DEFAULT_PARSER_OVERRIDES,\n ]) {\n worker.postMessage({ type: \"ADD_FILETYPE_PARSER\", filetypeParser: this.resolveFiletypeParser(parser) })\n }\n }\n\n private resolvePath(path: string): string {\n if (isUrl(path)) {\n return path\n }\n if (isBunfsPath(path)) {\n return normalizeBunfsPath(parse(path).base)\n }\n if (!isAbsolute(path)) {\n return resolve(path)\n }\n return path\n }\n\n public addFiletypeParser(filetypeParser: FiletypeParserOptions): void {\n this.sendWorkerMessage({ type: \"ADD_FILETYPE_PARSER\", filetypeParser: this.resolveFiletypeParser(filetypeParser) })\n }\n\n private resolveFiletypeParser(filetypeParser: FiletypeParserOptions): FiletypeParserOptions {\n return {\n ...filetypeParser,\n aliases: filetypeParser.aliases\n ? [...new Set(filetypeParser.aliases.filter((alias) => alias !== filetypeParser.filetype))]\n : undefined,\n wasm: this.resolvePath(filetypeParser.wasm),\n queries: {\n highlights: filetypeParser.queries.highlights.map((path) => this.resolvePath(path)),\n injections: filetypeParser.queries.injections?.map((path) => this.resolvePath(path)),\n },\n }\n }\n\n public async getPerformance(): Promise<PerformanceStats> {\n const messageId = `performance_${this.messageIdCounter++}`\n return new Promise<PerformanceStats>((resolve, reject) => {\n this.messageCallbacks.set(messageId, { resolve, reject })\n try {\n this.sendWorkerMessage({ type: \"GET_PERFORMANCE\", messageId })\n } catch (error) {\n this.messageCallbacks.delete(messageId)\n reject(error instanceof Error ? error : new Error(String(error)))\n }\n })\n }\n\n public async highlightOnce(\n content: string,\n filetype: string,\n ): Promise<{ highlights?: SimpleHighlight[]; warning?: string; error?: string }> {\n if (!this.initialized) {\n try {\n await this.initialize()\n } catch (error) {\n return { error: \"Could not highlight because of initialization error\" }\n }\n }\n\n const messageId = `oneshot_${this.messageIdCounter++}`\n return new Promise((resolve, reject) => {\n this.messageCallbacks.set(messageId, { resolve, reject })\n try {\n this.sendWorkerMessage({\n type: \"ONESHOT_HIGHLIGHT\",\n content,\n filetype,\n messageId,\n })\n } catch (error) {\n this.messageCallbacks.delete(messageId)\n reject(error instanceof Error ? error : new Error(String(error)))\n }\n })\n }\n\n private handleWorkerMessage(event: WorkerMessageEvent<TreeSitterWorkerResponse>) {\n const message = event.data\n\n switch (message.type) {\n case \"HIGHLIGHT_RESPONSE\": {\n const buffer = this.buffers.get(message.bufferId)\n if (!buffer || !buffer.hasParser) {\n return\n }\n\n if (buffer.version !== message.version) {\n this.resetBuffer(message.bufferId, buffer.version, buffer.content)\n return\n }\n\n this.emit(\"highlights:response\", message.bufferId, message.version, message.highlights)\n return\n }\n\n case \"INIT_RESPONSE\": {\n if (!this.initializeResolvers) {\n return\n }\n\n clearTimeout(this.initializeResolvers.timeoutId)\n\n if (message.error) {\n console.error(\"TreeSitter client initialization failed:\", message.error)\n this.initializeResolvers.reject(new Error(message.error))\n } else {\n this.initializeResolvers.resolve()\n }\n\n this.initializeResolvers = undefined\n return\n }\n\n case \"PARSER_INIT_RESPONSE\": {\n const callback = this.messageCallbacks.get(message.messageId)\n if (callback) {\n this.messageCallbacks.delete(message.messageId)\n callback.resolve({ hasParser: message.hasParser, warning: message.warning, error: message.error })\n }\n return\n }\n\n case \"PRELOAD_PARSER_RESPONSE\": {\n const callback = this.messageCallbacks.get(message.messageId)\n if (callback) {\n this.messageCallbacks.delete(message.messageId)\n callback.resolve({ hasParser: message.hasParser })\n }\n return\n }\n\n case \"BUFFER_DISPOSED\": {\n const callback = this.messageCallbacks.get(`dispose_${message.bufferId}`)\n if (callback) {\n this.messageCallbacks.delete(`dispose_${message.bufferId}`)\n callback.resolve(true)\n }\n\n this.emit(\"buffer:disposed\", message.bufferId)\n return\n }\n\n case \"PERFORMANCE_RESPONSE\": {\n const callback = this.messageCallbacks.get(message.messageId)\n if (callback) {\n this.messageCallbacks.delete(message.messageId)\n callback.resolve(message.performance)\n }\n return\n }\n\n case \"ONESHOT_HIGHLIGHT_RESPONSE\": {\n const callback = this.messageCallbacks.get(message.messageId)\n if (callback) {\n this.messageCallbacks.delete(message.messageId)\n callback.resolve({ highlights: message.highlights, warning: message.warning, error: message.error })\n }\n return\n }\n\n case \"UPDATE_DATA_PATH_RESPONSE\": {\n const callback = this.messageCallbacks.get(message.messageId)\n if (callback) {\n this.messageCallbacks.delete(message.messageId)\n callback.resolve({ error: message.error })\n }\n return\n }\n\n case \"CLEAR_CACHE_RESPONSE\": {\n const callback = this.messageCallbacks.get(message.messageId)\n if (callback) {\n this.messageCallbacks.delete(message.messageId)\n callback.resolve({ error: message.error })\n }\n return\n }\n\n case \"WARNING\": {\n this.emitWarning(message.warning, message.bufferId)\n return\n }\n\n case \"ERROR\": {\n this.emitError(message.error, message.bufferId)\n return\n }\n\n case \"WORKER_LOG\": {\n this.emit(\"worker:log\", message.logType, message.data.join(\" \"))\n return\n }\n }\n }\n\n public async preloadParser(filetype: string): Promise<boolean> {\n const messageId = `has_parser_${this.messageIdCounter++}`\n const response = await new Promise<{ hasParser: boolean; warning?: string; error?: string }>((resolve, reject) => {\n this.messageCallbacks.set(messageId, { resolve, reject })\n try {\n this.sendWorkerMessage({\n type: \"PRELOAD_PARSER\",\n filetype,\n messageId,\n })\n } catch (error) {\n this.messageCallbacks.delete(messageId)\n reject(error instanceof Error ? error : new Error(String(error)))\n }\n })\n return response.hasParser\n }\n\n public async createBuffer(\n id: number,\n content: string,\n filetype: string,\n version: number = 1,\n autoInitialize: boolean = true,\n ): Promise<boolean> {\n if (!this.initialized) {\n if (!autoInitialize) {\n this.emitError(\"Could not create buffer because client is not initialized\")\n return false\n }\n try {\n await this.initialize()\n } catch (error) {\n this.emitError(\"Could not create buffer because of initialization error\")\n return false\n }\n }\n\n if (this.buffers.has(id)) {\n throw new Error(`Buffer with id ${id} already exists`)\n }\n\n // Set buffer state immediately to avoid race conditions\n this.buffers.set(id, { id, content, filetype, version, hasParser: false })\n\n const messageId = `init_${this.messageIdCounter++}`\n const response = await new Promise<{ hasParser: boolean; warning?: string; error?: string }>((resolve, reject) => {\n this.messageCallbacks.set(messageId, { resolve, reject })\n try {\n this.sendWorkerMessage({\n type: \"INITIALIZE_PARSER\",\n bufferId: id,\n version,\n content,\n filetype,\n messageId,\n })\n } catch (error) {\n this.messageCallbacks.delete(messageId)\n reject(error instanceof Error ? error : new Error(String(error)))\n }\n })\n\n if (!response.hasParser) {\n this.emit(\"buffer:initialized\", id, false)\n if (filetype !== \"plaintext\") {\n this.emitWarning(response.warning || response.error || \"Buffer has no parser\", id)\n }\n return false\n }\n\n // Update buffer state to indicate it has a parser\n const bufferState: ParsedBuffer = { id, content, filetype, version, hasParser: true }\n this.buffers.set(id, bufferState)\n\n this.emit(\"buffer:initialized\", id, true)\n return true\n }\n\n public async updateBuffer(id: number, edits: Edit[], newContent: string, version: number): Promise<void> {\n if (!this.initialized) {\n return\n }\n\n const buffer = this.buffers.get(id)\n if (!buffer || !buffer.hasParser) {\n return\n }\n\n // Update buffer state\n this.buffers.set(id, { ...buffer, content: newContent, version })\n\n if (!this.editQueues.has(id)) {\n this.editQueues.set(\n id,\n new ProcessQueue<EditQueueItem>((item) =>\n this.processEdit(id, item.edits, item.newContent, item.version, item.isReset),\n ),\n )\n }\n\n const bufferQueue = this.editQueues.get(id)!\n bufferQueue.enqueue({ edits, newContent, version })\n }\n\n private async processEdit(\n bufferId: number,\n edits: Edit[],\n newContent: string,\n version: number,\n isReset = false,\n ): Promise<void> {\n this.sendWorkerMessage({\n type: isReset ? \"RESET_BUFFER\" : \"HANDLE_EDITS\",\n bufferId,\n version,\n content: newContent,\n edits,\n })\n }\n\n public async removeBuffer(bufferId: number): Promise<void> {\n if (!this.initialized) {\n return\n }\n\n this.buffers.delete(bufferId)\n\n if (this.editQueues.has(bufferId)) {\n this.editQueues.get(bufferId)?.clear()\n this.editQueues.delete(bufferId)\n }\n\n if (this.worker) {\n await new Promise<boolean>((resolve, reject) => {\n const messageId = `dispose_${bufferId}`\n this.messageCallbacks.set(messageId, { resolve, reject })\n try {\n this.sendWorkerMessage({\n type: \"DISPOSE_BUFFER\",\n bufferId,\n })\n } catch (error) {\n console.error(\"Error disposing buffer\", error)\n this.messageCallbacks.delete(messageId)\n resolve(false)\n }\n\n // Add a timeout in case the worker doesn't respond\n setTimeout(() => {\n if (this.messageCallbacks.has(messageId)) {\n this.messageCallbacks.delete(messageId)\n console.warn({ bufferId }, \"Timed out waiting for buffer to be disposed\")\n resolve(false)\n }\n }, 3000)\n })\n }\n\n this.debouncer.clearDebounce(`reset-${bufferId}`)\n }\n\n public destroy(): Promise<void> {\n if (this.destroyPromise) {\n return this.destroyPromise\n }\n\n let resolveDestroy!: () => void\n let rejectDestroy!: (error: unknown) => void\n const destroyPromise = new Promise<void>((resolve, reject) => {\n resolveDestroy = resolve\n rejectDestroy = reject\n })\n this.destroyPromise = destroyPromise\n\n const destroyError = new Error(\"Client destroyed during initialization\")\n this.lifecycleGeneration++\n this.initialized = false\n this.initializePromise = undefined\n this.rejectActiveInitialization(destroyError)\n this.rejectPendingRequests(new Error(\"TreeSitter client destroyed\"))\n\n for (const callback of this.destroyCallbacks) {\n try {\n callback()\n } catch (error) {\n console.error(\"TreeSitter client destroy callback failed:\", error)\n }\n }\n this.destroyCallbacks.clear()\n\n clearDebounceScope(\"tree-sitter-client\")\n this.debouncer.clear()\n\n this.editQueues.clear()\n this.buffers.clear()\n\n void this.stopWorker().then(\n () => {\n this.workerTerminationFailed = false\n if (this.destroyPromise === destroyPromise) {\n this.destroyPromise = undefined\n }\n resolveDestroy()\n },\n (error) => {\n this.workerTerminationFailed = true\n if (this.destroyPromise === destroyPromise) {\n this.destroyPromise = undefined\n }\n rejectDestroy(error)\n },\n )\n return destroyPromise\n }\n\n public async resetBuffer(bufferId: number, version: number, content: string): Promise<void> {\n if (!this.initialized) {\n return\n }\n\n const buffer = this.buffers.get(bufferId)\n if (!buffer || !buffer.hasParser) {\n this.emitError(\"Cannot reset buffer with no parser\", bufferId)\n return\n }\n\n // Update buffer state\n this.buffers.set(bufferId, { ...buffer, content, version })\n\n // Use debouncer to avoid excessive resets\n this.debouncer.debounce(`reset-${bufferId}`, 10, () => this.processEdit(bufferId, [], content, version, true))\n }\n\n public getBuffer(bufferId: number): BufferState | undefined {\n return this.buffers.get(bufferId)\n }\n\n public getAllBuffers(): BufferState[] {\n return Array.from(this.buffers.values())\n }\n\n public isInitialized(): boolean {\n return this.initialized\n }\n\n public async setDataPath(dataPath: string): Promise<void> {\n if (this.options.dataPath === dataPath) {\n return\n }\n\n this.options.dataPath = dataPath\n\n if (this.initialized && this.worker) {\n const messageId = `update_datapath_${this.messageIdCounter++}`\n return new Promise<void>((resolve, reject) => {\n this.messageCallbacks.set(messageId, {\n resolve: (response: any) => {\n if (response.error) {\n reject(new Error(response.error))\n } else {\n resolve()\n }\n },\n reject,\n })\n try {\n this.sendWorkerMessage({\n type: \"UPDATE_DATA_PATH\",\n dataPath,\n messageId,\n })\n } catch (error) {\n this.messageCallbacks.delete(messageId)\n reject(error instanceof Error ? error : new Error(String(error)))\n }\n })\n }\n }\n\n public async clearCache(): Promise<void> {\n if (!this.initialized || !this.worker) {\n throw new Error(\"Cannot clear cache: client is not initialized\")\n }\n\n const messageId = `clear_cache_${this.messageIdCounter++}`\n return new Promise<void>((resolve, reject) => {\n this.messageCallbacks.set(messageId, {\n resolve: (response: any) => {\n if (response.error) {\n reject(new Error(response.error))\n } else {\n resolve()\n }\n },\n reject,\n })\n try {\n this.sendWorkerMessage({\n type: \"CLEAR_CACHE\",\n messageId,\n })\n } catch (error) {\n this.messageCallbacks.delete(messageId)\n reject(error instanceof Error ? error : new Error(String(error)))\n }\n })\n }\n}\n",
34
+ "import { EventEmitter } from \"events\"\nimport { createDebounce, clearDebounceScope, DebounceController } from \"../debounce.js\"\nimport { ProcessQueue } from \"../queue.js\"\nimport type {\n TreeSitterClientOptions,\n TreeSitterClientEvents,\n BufferState,\n ParsedBuffer,\n FiletypeParserOptions,\n Edit,\n PerformanceStats,\n SimpleHighlight,\n TreeSitterWorkerRequest,\n TreeSitterWorkerResponse,\n} from \"./types.js\"\nimport { getParsers } from \"./default-parsers.js\"\nimport { resolve, isAbsolute, parse } from \"path\"\nimport { existsSync } from \"fs\"\nimport { registerEnvVar, env } from \"../env.js\"\nimport { isBunfsPath, normalizeBunfsPath } from \"../bunfs.js\"\nimport {\n type PlatformWorkerHandle,\n type WorkerErrorEvent,\n type WorkerMessageEvent,\n Worker as PlatformWorker,\n} from \"../../platform/worker.js\"\nimport { resolveDefaultTreeSitterWorkerPath, resolveTreeSitterWasm } from \"#opentui/runtime-assets\"\n\nregisterEnvVar({\n name: \"OTUI_TREE_SITTER_WORKER_PATH\",\n description: \"Path to the TreeSitter worker entry script\",\n type: \"string\",\n default: \"\",\n})\n\ndeclare global {\n const OTUI_TREE_SITTER_WORKER_PATH: string\n}\n\ninterface EditQueueItem {\n edits: Edit[]\n newContent: string\n version: number\n isReset?: boolean\n}\n\ntype TreeSitterWorkerPath = string | URL\ntype TreeSitterWorkerHandle = Pick<PlatformWorkerHandle, \"onerror\" | \"onmessage\" | \"postMessage\" | \"terminate\">\n\ninterface TreeSitterClientInternalOptions {\n autoStartWorker?: boolean\n}\n\ninterface PendingRequest {\n resolve: (response: any) => void\n reject: (error: Error) => void\n}\n\nlet DEFAULT_PARSER_OVERRIDES: FiletypeParserOptions[] = []\n\nexport function addDefaultParsers(parsers: FiletypeParserOptions[]): void {\n for (const parser of parsers) {\n DEFAULT_PARSER_OVERRIDES = [\n ...DEFAULT_PARSER_OVERRIDES.filter((existingParser) => existingParser.filetype !== parser.filetype),\n parser,\n ]\n }\n}\n\nconst isUrl = (path: string) => path.startsWith(\"http://\") || path.startsWith(\"https://\")\n\n// Parser options now support both URLs and local file paths\n// TODO: TreeSitterClient should have a setOptions method, passing it on to the worker etc.\nexport class TreeSitterClient extends EventEmitter<TreeSitterClientEvents> {\n private initialized = false\n private worker: TreeSitterWorkerHandle | undefined\n private buffers: Map<number, BufferState> = new Map()\n private initializePromise: Promise<void> | undefined\n private initializeResolvers:\n | { resolve: () => void; reject: (error: Error) => void; timeoutId: ReturnType<typeof setTimeout> }\n | undefined\n private messageCallbacks = new Map<string, PendingRequest>()\n private messageIdCounter: number = 0\n private editQueues: Map<number, ProcessQueue<EditQueueItem>> = new Map()\n private debouncer: DebounceController\n private options: TreeSitterClientOptions\n private destroyCallbacks = new Set<() => void>()\n private lifecycleGeneration = 0\n private rejectInitialization: ((error: Error) => void) | undefined\n private destroyPromise: Promise<void> | undefined\n private workerTerminationFailed = false\n\n constructor(options: TreeSitterClientOptions, internalOptions: TreeSitterClientInternalOptions = {}) {\n super()\n this.options = options\n this.debouncer = createDebounce(\"tree-sitter-client\")\n if (internalOptions.autoStartWorker ?? true) {\n this.startWorker()\n }\n }\n\n public onDestroy(callback: () => void): () => void {\n this.destroyCallbacks.add(callback)\n return () => {\n this.destroyCallbacks.delete(callback)\n }\n }\n\n private emitError(error: string, bufferId?: number): void {\n if (this.listenerCount(\"error\") > 0) {\n this.emit(\"error\", error, bufferId)\n }\n }\n\n private emitWarning(warning: string, bufferId?: number): void {\n if (this.listenerCount(\"warning\") > 0) {\n this.emit(\"warning\", warning, bufferId)\n }\n }\n\n private startWorker() {\n if (this.worker) {\n return\n }\n\n const workerPath = this.resolveWorkerPath()\n\n const worker = new PlatformWorker(workerPath)\n this.worker = worker\n\n worker.onmessage = (event) => {\n if (this.worker !== worker) {\n return\n }\n\n this.handleWorkerMessage(event as WorkerMessageEvent<TreeSitterWorkerResponse>)\n }\n\n worker.onerror = (error: WorkerErrorEvent) => {\n if (this.worker !== worker) {\n return\n }\n\n console.error(\"TreeSitter worker error:\", error.message)\n const workerError = new Error(`Worker error: ${error.message}`, { cause: error.error })\n this.handleWorkerFailure(worker, workerError)\n this.emitError(`Worker error: ${error.message}`)\n }\n }\n\n private sendWorkerMessage(message: TreeSitterWorkerRequest): void {\n if (!this.worker) {\n throw new Error(\"TreeSitter worker is not available\")\n }\n this.worker.postMessage(message)\n }\n\n private rejectPendingRequests(error: Error): void {\n const requests = Array.from(this.messageCallbacks.values())\n this.messageCallbacks.clear()\n for (const request of requests) {\n request.reject(error)\n }\n }\n\n private rejectActiveInitialization(error: Error): void {\n if (this.initializeResolvers) {\n clearTimeout(this.initializeResolvers.timeoutId)\n this.initializeResolvers.reject(error)\n this.initializeResolvers = undefined\n }\n this.rejectInitialization?.(error)\n this.rejectInitialization = undefined\n }\n\n private handleWorkerFailure(worker: TreeSitterWorkerHandle, error: Error): void {\n if (this.worker !== worker) {\n return\n }\n\n worker.onmessage = null\n worker.onerror = null\n this.worker = undefined\n this.lifecycleGeneration++\n this.initialized = false\n this.initializePromise = undefined\n this.rejectActiveInitialization(error)\n this.rejectPendingRequests(error)\n this.editQueues.clear()\n this.buffers.clear()\n this.debouncer.clear()\n\n try {\n void Promise.resolve(worker.terminate()).catch(() => {})\n } catch {\n // The worker has already failed; cleanup is best effort.\n }\n }\n\n // Path resolution stays in the client for now; runtime-specific Worker construction lives in platform/worker.\n private resolveWorkerPath(): TreeSitterWorkerPath {\n if (this.options.workerPath) {\n return this.options.workerPath\n }\n\n if (env.OTUI_TREE_SITTER_WORKER_PATH) {\n return env.OTUI_TREE_SITTER_WORKER_PATH\n }\n\n if (typeof OTUI_TREE_SITTER_WORKER_PATH !== \"undefined\") {\n return OTUI_TREE_SITTER_WORKER_PATH\n }\n\n let workerPath = resolveDefaultTreeSitterWorkerPath(new URL(\"./parser.worker.js\", import.meta.url))\n\n if (!process.env.OTUI_ASSET_ROOT && !existsSync(workerPath)) {\n workerPath = new URL(\"./parser.worker.ts\", import.meta.url).href\n }\n\n return workerPath\n }\n\n private async stopWorker(): Promise<void> {\n const worker = this.worker\n if (!worker) {\n return\n }\n\n const onmessage = worker.onmessage\n const onerror = worker.onerror\n worker.onmessage = null\n worker.onerror = null\n this.worker = undefined\n\n try {\n const termination = worker.terminate()\n if (termination && typeof (termination as PromiseLike<number>).then === \"function\") {\n await termination\n }\n } catch (error) {\n if (!this.worker) {\n worker.onmessage = onmessage\n worker.onerror = onerror\n this.worker = worker\n }\n throw error\n }\n }\n\n // NOTE: Unused, but useful for debugging and testing\n private async handleReset() {\n this.buffers.clear()\n await this.stopWorker()\n this.startWorker()\n this.initialized = false\n this.initializePromise = undefined\n this.initializeResolvers = undefined\n return this.initialize()\n }\n\n async initialize(): Promise<void> {\n if (this.destroyPromise) {\n throw new Error(\"Cannot initialize while client is being destroyed\")\n }\n if (this.workerTerminationFailed) {\n throw new Error(\"Cannot initialize after worker termination failed; retry destroy()\")\n }\n\n if (this.initializePromise) {\n return this.initializePromise\n }\n\n if (!this.worker) {\n this.startWorker()\n }\n\n const worker = this.worker!\n const generation = this.lifecycleGeneration\n let rejectCancellation!: (error: Error) => void\n const cancellation = new Promise<never>((_, reject) => {\n rejectCancellation = reject\n })\n const initialization = Promise.race([this.initializeClient(generation, worker), cancellation])\n this.rejectInitialization = rejectCancellation\n this.initializePromise = initialization\n\n void initialization.then(\n () => {\n if (this.initializePromise === initialization) {\n this.rejectInitialization = undefined\n }\n },\n () => {\n if (this.initializePromise === initialization) {\n this.rejectInitialization = undefined\n }\n },\n )\n\n return this.initializePromise\n }\n\n private assertCurrentInitialization(generation: number, worker: TreeSitterWorkerHandle): void {\n if (this.lifecycleGeneration !== generation || this.worker !== worker || this.destroyPromise) {\n throw new Error(\"TreeSitter initialization was invalidated\")\n }\n }\n\n private async initializeClient(generation: number, worker: TreeSitterWorkerHandle): Promise<void> {\n const treeSitterWasmPath = await resolveTreeSitterWasm()\n this.assertCurrentInitialization(generation, worker)\n await new Promise<void>((resolve, reject) => {\n const timeoutMs = this.options.initTimeout ?? 10000 // Default to 10 seconds\n const timeoutId = setTimeout(() => {\n const error = new Error(\"Worker initialization timed out\")\n console.error(\"TreeSitter client:\", error.message)\n this.initializeResolvers = undefined\n reject(error)\n }, timeoutMs)\n\n this.initializeResolvers = { resolve, reject, timeoutId }\n this.sendWorkerMessage({\n type: \"INIT\",\n dataPath: this.options.dataPath,\n treeSitterWasmPath,\n })\n })\n\n this.assertCurrentInitialization(generation, worker)\n await this.registerDefaultParsers(generation, worker)\n this.assertCurrentInitialization(generation, worker)\n this.initialized = true\n }\n\n private async registerDefaultParsers(\n generation: number = this.lifecycleGeneration,\n worker: TreeSitterWorkerHandle = this.worker!,\n ): Promise<void> {\n const defaultParsers = await getParsers()\n this.assertCurrentInitialization(generation, worker)\n const overriddenFiletypes = new Set(DEFAULT_PARSER_OVERRIDES.map((parser) => parser.filetype))\n\n for (const parser of [\n ...defaultParsers.filter((parser) => !overriddenFiletypes.has(parser.filetype)),\n ...DEFAULT_PARSER_OVERRIDES,\n ]) {\n worker.postMessage({ type: \"ADD_FILETYPE_PARSER\", filetypeParser: this.resolveFiletypeParser(parser) })\n }\n }\n\n private resolvePath(path: string): string {\n if (isUrl(path)) {\n return path\n }\n if (isBunfsPath(path)) {\n return normalizeBunfsPath(parse(path).base)\n }\n if (!isAbsolute(path)) {\n return resolve(path)\n }\n return path\n }\n\n public addFiletypeParser(filetypeParser: FiletypeParserOptions): void {\n this.sendWorkerMessage({ type: \"ADD_FILETYPE_PARSER\", filetypeParser: this.resolveFiletypeParser(filetypeParser) })\n }\n\n private resolveFiletypeParser(filetypeParser: FiletypeParserOptions): FiletypeParserOptions {\n return {\n ...filetypeParser,\n aliases: filetypeParser.aliases\n ? [...new Set(filetypeParser.aliases.filter((alias) => alias !== filetypeParser.filetype))]\n : undefined,\n wasm: this.resolvePath(filetypeParser.wasm),\n queries: {\n highlights: filetypeParser.queries.highlights.map((path) => this.resolvePath(path)),\n injections: filetypeParser.queries.injections?.map((path) => this.resolvePath(path)),\n },\n }\n }\n\n public async getPerformance(): Promise<PerformanceStats> {\n const messageId = `performance_${this.messageIdCounter++}`\n return new Promise<PerformanceStats>((resolve, reject) => {\n this.messageCallbacks.set(messageId, { resolve, reject })\n try {\n this.sendWorkerMessage({ type: \"GET_PERFORMANCE\", messageId })\n } catch (error) {\n this.messageCallbacks.delete(messageId)\n reject(error instanceof Error ? error : new Error(String(error)))\n }\n })\n }\n\n public async highlightOnce(\n content: string,\n filetype: string,\n ): Promise<{ highlights?: SimpleHighlight[]; warning?: string; error?: string }> {\n if (!this.initialized) {\n try {\n await this.initialize()\n } catch (error) {\n return { error: \"Could not highlight because of initialization error\" }\n }\n }\n\n const messageId = `oneshot_${this.messageIdCounter++}`\n return new Promise((resolve, reject) => {\n this.messageCallbacks.set(messageId, { resolve, reject })\n try {\n this.sendWorkerMessage({\n type: \"ONESHOT_HIGHLIGHT\",\n content,\n filetype,\n messageId,\n })\n } catch (error) {\n this.messageCallbacks.delete(messageId)\n reject(error instanceof Error ? error : new Error(String(error)))\n }\n })\n }\n\n private handleWorkerMessage(event: WorkerMessageEvent<TreeSitterWorkerResponse>) {\n const message = event.data\n\n switch (message.type) {\n case \"HIGHLIGHT_RESPONSE\": {\n const buffer = this.buffers.get(message.bufferId)\n if (!buffer || !buffer.hasParser) {\n return\n }\n\n if (buffer.version !== message.version) {\n this.resetBuffer(message.bufferId, buffer.version, buffer.content)\n return\n }\n\n this.emit(\"highlights:response\", message.bufferId, message.version, message.highlights)\n return\n }\n\n case \"INIT_RESPONSE\": {\n if (!this.initializeResolvers) {\n return\n }\n\n clearTimeout(this.initializeResolvers.timeoutId)\n\n if (message.error) {\n console.error(\"TreeSitter client initialization failed:\", message.error)\n this.initializeResolvers.reject(new Error(message.error))\n } else {\n this.initializeResolvers.resolve()\n }\n\n this.initializeResolvers = undefined\n return\n }\n\n case \"PARSER_INIT_RESPONSE\": {\n const callback = this.messageCallbacks.get(message.messageId)\n if (callback) {\n this.messageCallbacks.delete(message.messageId)\n callback.resolve({ hasParser: message.hasParser, warning: message.warning, error: message.error })\n }\n return\n }\n\n case \"PRELOAD_PARSER_RESPONSE\": {\n const callback = this.messageCallbacks.get(message.messageId)\n if (callback) {\n this.messageCallbacks.delete(message.messageId)\n callback.resolve({ hasParser: message.hasParser })\n }\n return\n }\n\n case \"BUFFER_DISPOSED\": {\n const callback = this.messageCallbacks.get(`dispose_${message.bufferId}`)\n if (callback) {\n this.messageCallbacks.delete(`dispose_${message.bufferId}`)\n callback.resolve(true)\n }\n\n this.emit(\"buffer:disposed\", message.bufferId)\n return\n }\n\n case \"PERFORMANCE_RESPONSE\": {\n const callback = this.messageCallbacks.get(message.messageId)\n if (callback) {\n this.messageCallbacks.delete(message.messageId)\n callback.resolve(message.performance)\n }\n return\n }\n\n case \"ONESHOT_HIGHLIGHT_RESPONSE\": {\n const callback = this.messageCallbacks.get(message.messageId)\n if (callback) {\n this.messageCallbacks.delete(message.messageId)\n callback.resolve({ highlights: message.highlights, warning: message.warning, error: message.error })\n }\n return\n }\n\n case \"UPDATE_DATA_PATH_RESPONSE\": {\n const callback = this.messageCallbacks.get(message.messageId)\n if (callback) {\n this.messageCallbacks.delete(message.messageId)\n callback.resolve({ error: message.error })\n }\n return\n }\n\n case \"CLEAR_CACHE_RESPONSE\": {\n const callback = this.messageCallbacks.get(message.messageId)\n if (callback) {\n this.messageCallbacks.delete(message.messageId)\n callback.resolve({ error: message.error })\n }\n return\n }\n\n case \"WARNING\": {\n this.emitWarning(message.warning, message.bufferId)\n return\n }\n\n case \"ERROR\": {\n if (message.messageId) {\n const callback = this.messageCallbacks.get(message.messageId)\n if (callback) {\n this.messageCallbacks.delete(message.messageId)\n callback.reject(new Error(message.error))\n }\n }\n this.emitError(message.error, message.bufferId)\n return\n }\n\n case \"WORKER_LOG\": {\n this.emit(\"worker:log\", message.logType, message.data.join(\" \"))\n return\n }\n }\n }\n\n public async preloadParser(filetype: string): Promise<boolean> {\n const messageId = `has_parser_${this.messageIdCounter++}`\n const response = await new Promise<{ hasParser: boolean; warning?: string; error?: string }>((resolve, reject) => {\n this.messageCallbacks.set(messageId, { resolve, reject })\n try {\n this.sendWorkerMessage({\n type: \"PRELOAD_PARSER\",\n filetype,\n messageId,\n })\n } catch (error) {\n this.messageCallbacks.delete(messageId)\n reject(error instanceof Error ? error : new Error(String(error)))\n }\n })\n return response.hasParser\n }\n\n public async createBuffer(\n id: number,\n content: string,\n filetype: string,\n version: number = 1,\n autoInitialize: boolean = true,\n ): Promise<boolean> {\n if (!this.initialized) {\n if (!autoInitialize) {\n this.emitError(\"Could not create buffer because client is not initialized\")\n return false\n }\n try {\n await this.initialize()\n } catch (error) {\n this.emitError(\"Could not create buffer because of initialization error\")\n return false\n }\n }\n\n if (this.buffers.has(id)) {\n throw new Error(`Buffer with id ${id} already exists`)\n }\n\n // Set buffer state immediately to avoid race conditions\n this.buffers.set(id, { id, content, filetype, version, hasParser: false })\n\n const messageId = `init_${this.messageIdCounter++}`\n const response = await new Promise<{ hasParser: boolean; warning?: string; error?: string }>((resolve, reject) => {\n this.messageCallbacks.set(messageId, { resolve, reject })\n try {\n this.sendWorkerMessage({\n type: \"INITIALIZE_PARSER\",\n bufferId: id,\n version,\n content,\n filetype,\n messageId,\n })\n } catch (error) {\n this.messageCallbacks.delete(messageId)\n reject(error instanceof Error ? error : new Error(String(error)))\n }\n })\n\n if (!response.hasParser) {\n this.emit(\"buffer:initialized\", id, false)\n if (filetype !== \"plaintext\") {\n this.emitWarning(response.warning || response.error || \"Buffer has no parser\", id)\n }\n return false\n }\n\n // Update buffer state to indicate it has a parser\n const bufferState: ParsedBuffer = { id, content, filetype, version, hasParser: true }\n this.buffers.set(id, bufferState)\n\n this.emit(\"buffer:initialized\", id, true)\n return true\n }\n\n public async updateBuffer(id: number, edits: Edit[], newContent: string, version: number): Promise<void> {\n if (!this.initialized) {\n return\n }\n\n const buffer = this.buffers.get(id)\n if (!buffer || !buffer.hasParser) {\n return\n }\n\n // Update buffer state\n this.buffers.set(id, { ...buffer, content: newContent, version })\n\n if (!this.editQueues.has(id)) {\n this.editQueues.set(\n id,\n new ProcessQueue<EditQueueItem>((item) =>\n this.processEdit(id, item.edits, item.newContent, item.version, item.isReset),\n ),\n )\n }\n\n const bufferQueue = this.editQueues.get(id)!\n bufferQueue.enqueue({ edits, newContent, version })\n }\n\n private async processEdit(\n bufferId: number,\n edits: Edit[],\n newContent: string,\n version: number,\n isReset = false,\n ): Promise<void> {\n this.sendWorkerMessage({\n type: isReset ? \"RESET_BUFFER\" : \"HANDLE_EDITS\",\n bufferId,\n version,\n content: newContent,\n edits,\n })\n }\n\n public async removeBuffer(bufferId: number): Promise<void> {\n if (!this.initialized) {\n return\n }\n\n this.buffers.delete(bufferId)\n\n if (this.editQueues.has(bufferId)) {\n this.editQueues.get(bufferId)?.clear()\n this.editQueues.delete(bufferId)\n }\n\n if (this.worker) {\n await new Promise<boolean>((resolve, reject) => {\n const messageId = `dispose_${bufferId}`\n this.messageCallbacks.set(messageId, { resolve, reject })\n try {\n this.sendWorkerMessage({\n type: \"DISPOSE_BUFFER\",\n bufferId,\n })\n } catch (error) {\n console.error(\"Error disposing buffer\", error)\n this.messageCallbacks.delete(messageId)\n resolve(false)\n }\n\n // Add a timeout in case the worker doesn't respond\n setTimeout(() => {\n if (this.messageCallbacks.has(messageId)) {\n this.messageCallbacks.delete(messageId)\n console.warn({ bufferId }, \"Timed out waiting for buffer to be disposed\")\n resolve(false)\n }\n }, 3000)\n })\n }\n\n this.debouncer.clearDebounce(`reset-${bufferId}`)\n }\n\n public destroy(): Promise<void> {\n if (this.destroyPromise) {\n return this.destroyPromise\n }\n\n let resolveDestroy!: () => void\n let rejectDestroy!: (error: unknown) => void\n const destroyPromise = new Promise<void>((resolve, reject) => {\n resolveDestroy = resolve\n rejectDestroy = reject\n })\n this.destroyPromise = destroyPromise\n\n const destroyError = new Error(\"Client destroyed during initialization\")\n this.lifecycleGeneration++\n this.initialized = false\n this.initializePromise = undefined\n this.rejectActiveInitialization(destroyError)\n this.rejectPendingRequests(new Error(\"TreeSitter client destroyed\"))\n\n for (const callback of this.destroyCallbacks) {\n try {\n callback()\n } catch (error) {\n console.error(\"TreeSitter client destroy callback failed:\", error)\n }\n }\n this.destroyCallbacks.clear()\n\n clearDebounceScope(\"tree-sitter-client\")\n this.debouncer.clear()\n\n this.editQueues.clear()\n this.buffers.clear()\n\n void this.stopWorker().then(\n () => {\n this.workerTerminationFailed = false\n if (this.destroyPromise === destroyPromise) {\n this.destroyPromise = undefined\n }\n resolveDestroy()\n },\n (error) => {\n this.workerTerminationFailed = true\n if (this.destroyPromise === destroyPromise) {\n this.destroyPromise = undefined\n }\n rejectDestroy(error)\n },\n )\n return destroyPromise\n }\n\n public async resetBuffer(bufferId: number, version: number, content: string): Promise<void> {\n if (!this.initialized) {\n return\n }\n\n const buffer = this.buffers.get(bufferId)\n if (!buffer || !buffer.hasParser) {\n this.emitError(\"Cannot reset buffer with no parser\", bufferId)\n return\n }\n\n // Update buffer state\n this.buffers.set(bufferId, { ...buffer, content, version })\n\n // Use debouncer to avoid excessive resets\n this.debouncer.debounce(`reset-${bufferId}`, 10, () => this.processEdit(bufferId, [], content, version, true))\n }\n\n public getBuffer(bufferId: number): BufferState | undefined {\n return this.buffers.get(bufferId)\n }\n\n public getAllBuffers(): BufferState[] {\n return Array.from(this.buffers.values())\n }\n\n public isInitialized(): boolean {\n return this.initialized\n }\n\n public async setDataPath(dataPath: string): Promise<void> {\n if (this.options.dataPath === dataPath) {\n return\n }\n\n this.options.dataPath = dataPath\n\n if (this.initialized && this.worker) {\n const messageId = `update_datapath_${this.messageIdCounter++}`\n return new Promise<void>((resolve, reject) => {\n this.messageCallbacks.set(messageId, {\n resolve: (response: any) => {\n if (response.error) {\n reject(new Error(response.error))\n } else {\n resolve()\n }\n },\n reject,\n })\n try {\n this.sendWorkerMessage({\n type: \"UPDATE_DATA_PATH\",\n dataPath,\n messageId,\n })\n } catch (error) {\n this.messageCallbacks.delete(messageId)\n reject(error instanceof Error ? error : new Error(String(error)))\n }\n })\n }\n }\n\n public async clearCache(): Promise<void> {\n if (!this.initialized || !this.worker) {\n throw new Error(\"Cannot clear cache: client is not initialized\")\n }\n\n const messageId = `clear_cache_${this.messageIdCounter++}`\n return new Promise<void>((resolve, reject) => {\n this.messageCallbacks.set(messageId, {\n resolve: (response: any) => {\n if (response.error) {\n reject(new Error(response.error))\n } else {\n resolve()\n }\n },\n reject,\n })\n try {\n this.sendWorkerMessage({\n type: \"CLEAR_CACHE\",\n messageId,\n })\n } catch (error) {\n this.messageCallbacks.delete(messageId)\n reject(error instanceof Error ? error : new Error(String(error)))\n }\n })\n }\n}\n",
35
35
  "/**\n * A module-level map to store timeout IDs for all debounced functions\n * Structure: Map<scopeId, Map<debounceId, timerId>>\n */\nconst TIMERS_MAP = new Map<string | number, Map<string | number, ReturnType<typeof setTimeout>>>()\n\n/**\n * Debounce controller that manages debounce instances for a specific scope\n */\nexport class DebounceController {\n constructor(private scopeId: string | number) {\n // Initialize the scope map if it doesn't exist\n if (!TIMERS_MAP.has(this.scopeId)) {\n TIMERS_MAP.set(this.scopeId, new Map())\n }\n }\n\n /**\n * Debounces the provided function with the given ID\n *\n * @param id Unique identifier within this scope\n * @param ms Milliseconds to wait before executing\n * @param fn Function to execute\n */\n debounce<R>(id: string | number, ms: number, fn: () => Promise<R>): Promise<R> {\n const scopeMap = TIMERS_MAP.get(this.scopeId)!\n\n return new Promise((resolve, reject) => {\n // Clear any existing timeout for this ID\n if (scopeMap.has(id)) {\n clearTimeout(scopeMap.get(id))\n }\n\n // Set a new timeout\n const timerId = setTimeout(() => {\n try {\n resolve(fn())\n } catch (error) {\n reject(error)\n }\n scopeMap.delete(id)\n }, ms)\n\n // Store the new timeout ID\n scopeMap.set(id, timerId)\n })\n }\n\n /**\n * Clear a specific debounce timer in this scope\n *\n * @param id The debounce ID to clear\n */\n clearDebounce(id: string | number): void {\n const scopeMap = TIMERS_MAP.get(this.scopeId)\n if (scopeMap && scopeMap.has(id)) {\n clearTimeout(scopeMap.get(id))\n scopeMap.delete(id)\n }\n }\n\n /**\n * Clear all debounce timers in this scope\n */\n clear(): void {\n const scopeMap = TIMERS_MAP.get(this.scopeId)\n if (scopeMap) {\n scopeMap.forEach((timerId) => clearTimeout(timerId))\n scopeMap.clear()\n }\n }\n}\n\n/**\n * Creates a new debounce controller for a specific scope\n *\n * @param scopeId Unique identifier for this debounce scope\n * @returns A DebounceController for the specified scope\n */\nexport function createDebounce(scopeId: string | number): DebounceController {\n return new DebounceController(scopeId)\n}\n\n/**\n * Clears all debounce timers for a specific scope\n *\n * @param scopeId The scope identifier\n */\nexport function clearDebounceScope(scopeId: string | number): void {\n const scopeMap = TIMERS_MAP.get(scopeId)\n if (scopeMap) {\n scopeMap.forEach((timerId) => clearTimeout(timerId))\n scopeMap.clear()\n }\n}\n\n/**\n * Clears all active debounce timers across all scopes\n */\nexport function clearAllDebounces(): void {\n TIMERS_MAP.forEach((scopeMap) => {\n scopeMap.forEach((timerId) => clearTimeout(timerId))\n scopeMap.clear()\n })\n TIMERS_MAP.clear()\n}\n",
36
36
  "/**\n * Generic processing queue that handles asynchronous job processing\n */\nexport class ProcessQueue<T> {\n private queue: T[] = []\n private processing: boolean = false\n private autoProcess: boolean = true\n\n constructor(\n private processor: (item: T) => Promise<void> | void,\n autoProcess: boolean = true,\n ) {\n this.autoProcess = autoProcess\n }\n\n enqueue(item: T): void {\n this.queue.push(item)\n\n if (!this.processing && this.autoProcess) {\n this.processQueue()\n }\n }\n\n private processQueue(): void {\n if (this.queue.length === 0) {\n return\n }\n\n this.processing = true\n\n queueMicrotask(async () => {\n if (this.queue.length === 0) {\n this.processing = false\n return\n }\n\n // Get the next item to process (FIFO)\n const item = this.queue.shift()!\n\n try {\n await this.processor(item)\n } catch (error) {\n console.error(\"Error processing queue item:\", error)\n }\n\n if (this.queue.length > 0) {\n this.processQueue()\n } else {\n this.processing = false\n }\n })\n }\n\n clear(): void {\n this.queue = []\n }\n\n isProcessing(): boolean {\n return this.processing\n }\n\n size(): number {\n return this.queue.length\n }\n}\n",
37
37
  "// This file is generated by assets/update.ts - DO NOT EDIT MANUALLY\n// Run 'bun assets/update.ts' to regenerate this file\n\nimport { resolveBundledFilePath } from \"../../platform/runtime.js\"\n\ninterface FileImportModule {\n readonly default: string\n}\n\nconst bundledAssetLoaders: Record<string, () => Promise<FileImportModule>> = {\n \"assets/javascript/highlights.scm\": () =>\n import(\"./assets/javascript/highlights.scm\" as string, { with: { type: \"file\" } }),\n \"assets/javascript/tree-sitter-javascript.wasm\": () =>\n import(\"./assets/javascript/tree-sitter-javascript.wasm\" as string, { with: { type: \"file\" } }),\n \"assets/typescript/highlights.scm\": () =>\n import(\"./assets/typescript/highlights.scm\" as string, { with: { type: \"file\" } }),\n \"assets/typescript/tree-sitter-typescript.wasm\": () =>\n import(\"./assets/typescript/tree-sitter-typescript.wasm\" as string, { with: { type: \"file\" } }),\n \"assets/markdown/highlights.scm\": () =>\n import(\"./assets/markdown/highlights.scm\" as string, { with: { type: \"file\" } }),\n \"assets/markdown/tree-sitter-markdown.wasm\": () =>\n import(\"./assets/markdown/tree-sitter-markdown.wasm\" as string, { with: { type: \"file\" } }),\n \"assets/markdown/injections.scm\": () =>\n import(\"./assets/markdown/injections.scm\" as string, { with: { type: \"file\" } }),\n \"assets/markdown_inline/highlights.scm\": () =>\n import(\"./assets/markdown_inline/highlights.scm\" as string, { with: { type: \"file\" } }),\n \"assets/markdown_inline/tree-sitter-markdown_inline.wasm\": () =>\n import(\"./assets/markdown_inline/tree-sitter-markdown_inline.wasm\" as string, { with: { type: \"file\" } }),\n \"assets/zig/highlights.scm\": () => import(\"./assets/zig/highlights.scm\" as string, { with: { type: \"file\" } }),\n \"assets/zig/tree-sitter-zig.wasm\": () =>\n import(\"./assets/zig/tree-sitter-zig.wasm\" as string, { with: { type: \"file\" } }),\n}\n\nexport function resolveBundledDefaultParserAsset(relativePath: string, fallbackPath: URL): Promise<string> {\n const loadBundledFile = bundledAssetLoaders[relativePath]\n if (!loadBundledFile) {\n throw new Error(`Unknown OpenTUI default parser asset: ${JSON.stringify(relativePath)}`)\n }\n return resolveBundledFilePath(`@opentui/core/${relativePath}`, loadBundledFile, fallbackPath, import.meta.url)\n}\n",
@@ -48,7 +48,9 @@
48
48
  "import type { EditBuffer } from \"../edit-buffer.js\"\nimport type { EditorView } from \"../editor-view.js\"\nimport { stringWidth } from \"../platform/runtime.js\"\nimport { ExtmarksHistory, type ExtmarksSnapshot } from \"./extmarks-history.js\"\n\nexport interface Extmark {\n id: number\n start: number // Display-width offset (including newlines), NOT JS string index\n end: number // Display-width offset (including newlines), NOT JS string index\n virtual: boolean\n styleId?: number\n priority?: number\n data?: any\n typeId: number\n}\n\nexport interface ExtmarkOptions {\n start: number // Display-width offset (including newlines), NOT JS string index\n end: number // Display-width offset (including newlines), NOT JS string index\n virtual?: boolean\n styleId?: number\n priority?: number\n data?: any\n typeId?: number\n metadata?: any\n}\n\n/**\n * WARNING: This is simulating extmarks in the edit buffer\n * and will move to a real native implementation in the future.\n * Use with caution.\n */\nexport class ExtmarksController {\n private editBuffer: EditBuffer\n private editorView: EditorView\n private extmarks = new Map<number, Extmark>()\n private extmarksByTypeId = new Map<number, Set<number>>()\n private metadata = new Map<number, any>()\n private nextId = 1\n private destroyed = false\n private history = new ExtmarksHistory()\n private typeNameToId = new Map<string, number>()\n private typeIdToName = new Map<number, string>()\n private nextTypeId = 1\n\n private originalMoveCursorLeft: typeof EditBuffer.prototype.moveCursorLeft\n private originalMoveCursorRight: typeof EditBuffer.prototype.moveCursorRight\n private originalSetCursorByOffset: typeof EditBuffer.prototype.setCursorByOffset\n private originalMoveUpVisual: typeof EditorView.prototype.moveUpVisual\n private originalMoveDownVisual: typeof EditorView.prototype.moveDownVisual\n private originalDeleteCharBackward: typeof EditBuffer.prototype.deleteCharBackward\n private originalDeleteChar: typeof EditBuffer.prototype.deleteChar\n private originalInsertText: typeof EditBuffer.prototype.insertText\n private originalInsertChar: typeof EditBuffer.prototype.insertChar\n private originalDeleteRange: typeof EditBuffer.prototype.deleteRange\n private originalSetText: typeof EditBuffer.prototype.setText\n private originalReplaceText: typeof EditBuffer.prototype.replaceText\n private originalClear: typeof EditBuffer.prototype.clear\n private originalNewLine: typeof EditBuffer.prototype.newLine\n private originalDeleteLine: typeof EditBuffer.prototype.deleteLine\n private originalEditorViewDeleteSelectedText: typeof EditorView.prototype.deleteSelectedText\n private originalUndo: typeof EditBuffer.prototype.undo\n private originalRedo: typeof EditBuffer.prototype.redo\n\n constructor(editBuffer: EditBuffer, editorView: EditorView) {\n this.editBuffer = editBuffer\n this.editorView = editorView\n\n this.originalMoveCursorLeft = editBuffer.moveCursorLeft.bind(editBuffer)\n this.originalMoveCursorRight = editBuffer.moveCursorRight.bind(editBuffer)\n this.originalSetCursorByOffset = editBuffer.setCursorByOffset.bind(editBuffer)\n this.originalMoveUpVisual = editorView.moveUpVisual.bind(editorView)\n this.originalMoveDownVisual = editorView.moveDownVisual.bind(editorView)\n this.originalDeleteCharBackward = editBuffer.deleteCharBackward.bind(editBuffer)\n this.originalDeleteChar = editBuffer.deleteChar.bind(editBuffer)\n this.originalInsertText = editBuffer.insertText.bind(editBuffer)\n this.originalInsertChar = editBuffer.insertChar.bind(editBuffer)\n this.originalDeleteRange = editBuffer.deleteRange.bind(editBuffer)\n this.originalSetText = editBuffer.setText.bind(editBuffer)\n this.originalReplaceText = editBuffer.replaceText.bind(editBuffer)\n this.originalClear = editBuffer.clear.bind(editBuffer)\n this.originalNewLine = editBuffer.newLine.bind(editBuffer)\n this.originalDeleteLine = editBuffer.deleteLine.bind(editBuffer)\n this.originalEditorViewDeleteSelectedText = editorView.deleteSelectedText.bind(editorView)\n this.originalUndo = editBuffer.undo.bind(editBuffer)\n this.originalRedo = editBuffer.redo.bind(editBuffer)\n\n this.wrapCursorMovement()\n this.wrapDeletion()\n this.wrapInsertion()\n this.wrapEditorViewDeleteSelectedText()\n this.wrapUndoRedo()\n this.setupContentChangeListener()\n }\n\n private wrapCursorMovement(): void {\n this.editBuffer.moveCursorLeft = (): void => {\n if (this.destroyed) {\n this.originalMoveCursorLeft()\n return\n }\n\n const currentOffset = this.editorView.getVisualCursor().offset\n const hasSelection = this.editorView.hasSelection()\n\n if (hasSelection) {\n this.originalMoveCursorLeft()\n return\n }\n\n const targetOffset = currentOffset - 1\n if (targetOffset < 0) {\n this.originalMoveCursorLeft()\n return\n }\n\n const virtualExtmark = this.findVirtualExtmarkContaining(targetOffset)\n if (virtualExtmark && currentOffset >= virtualExtmark.end) {\n this.editBuffer.setCursorByOffset(virtualExtmark.start - 1)\n return\n }\n\n this.originalMoveCursorLeft()\n }\n\n this.editBuffer.moveCursorRight = (): void => {\n if (this.destroyed) {\n this.originalMoveCursorRight()\n return\n }\n\n const currentOffset = this.editorView.getVisualCursor().offset\n const hasSelection = this.editorView.hasSelection()\n\n if (hasSelection) {\n this.originalMoveCursorRight()\n return\n }\n\n const targetOffset = currentOffset + 1\n const textLength = this.editBuffer.getText().length\n\n if (targetOffset > textLength) {\n this.originalMoveCursorRight()\n return\n }\n\n const virtualExtmark = this.findVirtualExtmarkContaining(targetOffset)\n if (virtualExtmark && currentOffset <= virtualExtmark.start) {\n this.editBuffer.setCursorByOffset(virtualExtmark.end)\n return\n }\n\n this.originalMoveCursorRight()\n }\n\n this.editorView.moveUpVisual = (): void => {\n if (this.destroyed) {\n this.originalMoveUpVisual()\n return\n }\n\n const hasSelection = this.editorView.hasSelection()\n\n if (hasSelection) {\n this.originalMoveUpVisual()\n return\n }\n\n const currentOffset = this.editorView.getVisualCursor().offset\n this.originalMoveUpVisual()\n const newOffset = this.editorView.getVisualCursor().offset\n\n const virtualExtmark = this.findVirtualExtmarkContaining(newOffset)\n if (virtualExtmark) {\n const distanceToStart = newOffset - virtualExtmark.start\n const distanceToEnd = virtualExtmark.end - newOffset\n\n if (distanceToStart < distanceToEnd) {\n this.editorView.setCursorByOffset(virtualExtmark.start - 1)\n } else {\n this.editorView.setCursorByOffset(virtualExtmark.end)\n }\n }\n }\n\n this.editorView.moveDownVisual = (): void => {\n if (this.destroyed) {\n this.originalMoveDownVisual()\n return\n }\n\n const hasSelection = this.editorView.hasSelection()\n\n if (hasSelection) {\n this.originalMoveDownVisual()\n return\n }\n\n const currentOffset = this.editorView.getVisualCursor().offset\n this.originalMoveDownVisual()\n const newOffset = this.editorView.getVisualCursor().offset\n\n const virtualExtmark = this.findVirtualExtmarkContaining(newOffset)\n if (virtualExtmark) {\n const distanceToStart = newOffset - virtualExtmark.start\n const distanceToEnd = virtualExtmark.end - newOffset\n\n if (distanceToStart < distanceToEnd) {\n const adjustedOffset = virtualExtmark.start - 1\n const targetOffset = adjustedOffset <= currentOffset ? virtualExtmark.end : adjustedOffset\n this.editorView.setCursorByOffset(targetOffset)\n } else {\n this.editorView.setCursorByOffset(virtualExtmark.end)\n }\n }\n }\n\n this.editBuffer.setCursorByOffset = (offset: number): void => {\n if (this.destroyed) {\n this.originalSetCursorByOffset(offset)\n return\n }\n\n const currentOffset = this.editorView.getVisualCursor().offset\n const hasSelection = this.editorView.hasSelection()\n\n if (hasSelection) {\n this.originalSetCursorByOffset(offset)\n return\n }\n\n const movingForward = offset > currentOffset\n\n if (movingForward) {\n const virtualExtmark = this.findVirtualExtmarkContaining(offset)\n if (virtualExtmark && currentOffset <= virtualExtmark.start) {\n this.originalSetCursorByOffset(virtualExtmark.end)\n return\n }\n } else {\n for (const extmark of this.extmarks.values()) {\n if (extmark.virtual && currentOffset >= extmark.end && offset < extmark.end && offset >= extmark.start) {\n this.originalSetCursorByOffset(extmark.start - 1)\n return\n }\n }\n }\n\n this.originalSetCursorByOffset(offset)\n }\n }\n\n private wrapDeletion(): void {\n this.editBuffer.deleteCharBackward = (): void => {\n if (this.destroyed) {\n this.originalDeleteCharBackward()\n return\n }\n\n this.saveSnapshot()\n\n const currentOffset = this.editorView.getVisualCursor().offset\n const hadSelection = this.editorView.hasSelection()\n\n if (currentOffset === 0) {\n this.originalDeleteCharBackward()\n return\n }\n\n if (hadSelection) {\n this.originalDeleteCharBackward()\n return\n }\n\n const targetOffset = currentOffset - 1\n const virtualExtmark = this.findVirtualExtmarkContaining(targetOffset)\n\n if (virtualExtmark && currentOffset === virtualExtmark.end) {\n const startCursor = this.offsetToPosition(virtualExtmark.start)\n const endCursor = this.offsetToPosition(virtualExtmark.end)\n const deleteOffset = virtualExtmark.start\n const deleteLength = virtualExtmark.end - virtualExtmark.start\n\n this.deleteExtmarkById(virtualExtmark.id)\n\n this.originalDeleteRange(startCursor.row, startCursor.col, endCursor.row, endCursor.col)\n this.adjustExtmarksAfterDeletion(deleteOffset, deleteLength)\n\n this.updateHighlights()\n\n return\n }\n\n this.originalDeleteCharBackward()\n const deleteOffset = this.editorView.getVisualCursor().offset\n const deleteLength = currentOffset - deleteOffset\n if (deleteLength > 0) {\n this.adjustExtmarksAfterDeletion(deleteOffset, deleteLength)\n }\n }\n\n this.editBuffer.deleteChar = (): void => {\n if (this.destroyed) {\n this.originalDeleteChar()\n return\n }\n\n this.saveSnapshot()\n\n const currentOffset = this.editorView.getVisualCursor().offset\n const hadSelection = this.editorView.hasSelection()\n\n if (hadSelection) {\n this.originalDeleteChar()\n return\n }\n\n const targetOffset = currentOffset\n const virtualExtmark = this.findVirtualExtmarkContaining(targetOffset)\n\n if (virtualExtmark && currentOffset === virtualExtmark.start) {\n const startCursor = this.offsetToPosition(virtualExtmark.start)\n const endCursor = this.offsetToPosition(virtualExtmark.end)\n const deleteOffset = virtualExtmark.start\n const deleteLength = virtualExtmark.end - virtualExtmark.start\n\n this.deleteExtmarkById(virtualExtmark.id)\n\n this.originalDeleteRange(startCursor.row, startCursor.col, endCursor.row, endCursor.col)\n this.adjustExtmarksAfterDeletion(deleteOffset, deleteLength)\n\n this.updateHighlights()\n\n return\n }\n\n const deleteEndOffset = this.getNextCursorOffset(currentOffset)\n const deleteLength = deleteEndOffset - currentOffset\n\n this.originalDeleteChar()\n\n if (deleteLength > 0) {\n this.adjustExtmarksAfterDeletion(currentOffset, deleteLength)\n }\n }\n\n this.editBuffer.deleteRange = (startLine: number, startCol: number, endLine: number, endCol: number): void => {\n if (this.destroyed) {\n this.originalDeleteRange(startLine, startCol, endLine, endCol)\n return\n }\n\n this.saveSnapshot()\n\n const startOffset = this.positionToOffset(startLine, startCol)\n const endOffset = this.positionToOffset(endLine, endCol)\n const length = endOffset - startOffset\n\n this.originalDeleteRange(startLine, startCol, endLine, endCol)\n this.adjustExtmarksAfterDeletion(startOffset, length)\n }\n\n this.editBuffer.deleteLine = (): void => {\n if (this.destroyed) {\n this.originalDeleteLine()\n return\n }\n\n this.saveSnapshot()\n\n const text = this.editBuffer.getText()\n const currentOffset = this.editorView.getVisualCursor().offset\n\n let lineStart = 0\n for (let i = currentOffset - 1; i >= 0; i--) {\n if (text[i] === \"\\n\") {\n lineStart = i + 1\n break\n }\n }\n\n let lineEnd = text.length\n for (let i = currentOffset; i < text.length; i++) {\n if (text[i] === \"\\n\") {\n lineEnd = i + 1\n break\n }\n }\n\n const deleteLength = lineEnd - lineStart\n\n this.originalDeleteLine()\n this.adjustExtmarksAfterDeletion(lineStart, deleteLength)\n }\n }\n\n private wrapInsertion(): void {\n this.editBuffer.insertText = (text: string): void => {\n if (this.destroyed) {\n this.originalInsertText(text)\n return\n }\n\n this.saveSnapshot()\n\n const currentOffset = this.editorView.getVisualCursor().offset\n this.originalInsertText(text)\n const insertLength = this.editorView.getVisualCursor().offset - currentOffset\n if (insertLength > 0) {\n this.adjustExtmarksAfterInsertion(currentOffset, insertLength)\n }\n }\n\n this.editBuffer.insertChar = (char: string): void => {\n if (this.destroyed) {\n this.originalInsertChar(char)\n return\n }\n\n this.saveSnapshot()\n\n const currentOffset = this.editorView.getVisualCursor().offset\n this.originalInsertChar(char)\n const insertLength = this.editorView.getVisualCursor().offset - currentOffset\n if (insertLength > 0) {\n this.adjustExtmarksAfterInsertion(currentOffset, insertLength)\n }\n }\n\n this.editBuffer.setText = (text: string): void => {\n if (this.destroyed) {\n this.originalSetText(text)\n return\n }\n\n this.clear()\n this.originalSetText(text)\n }\n\n this.editBuffer.replaceText = (text: string): void => {\n if (this.destroyed) {\n this.originalReplaceText(text)\n return\n }\n\n this.saveSnapshot()\n this.clear()\n this.originalReplaceText(text)\n }\n\n this.editBuffer.clear = (): void => {\n if (this.destroyed) {\n this.originalClear()\n return\n }\n\n this.saveSnapshot()\n\n this.clear()\n this.originalClear()\n }\n\n this.editBuffer.newLine = (): void => {\n if (this.destroyed) {\n this.originalNewLine()\n return\n }\n\n this.saveSnapshot()\n\n const currentOffset = this.editorView.getVisualCursor().offset\n this.originalNewLine()\n this.adjustExtmarksAfterInsertion(currentOffset, 1)\n }\n }\n\n private wrapEditorViewDeleteSelectedText(): void {\n this.editorView.deleteSelectedText = (): void => {\n if (this.destroyed) {\n this.originalEditorViewDeleteSelectedText()\n return\n }\n\n this.saveSnapshot()\n\n const selection = this.editorView.getSelection()\n if (!selection) {\n this.originalEditorViewDeleteSelectedText()\n return\n }\n\n const deleteOffset = Math.min(selection.start, selection.end)\n const deleteLength = Math.abs(selection.end - selection.start)\n\n this.originalEditorViewDeleteSelectedText()\n\n if (deleteLength > 0) {\n this.adjustExtmarksAfterDeletion(deleteOffset, deleteLength)\n }\n }\n }\n\n private setupContentChangeListener(): void {\n this.editBuffer.on(\"content-changed\", () => {\n if (this.destroyed) return\n this.updateHighlights()\n })\n }\n\n private deleteExtmarkById(id: number): void {\n const extmark = this.extmarks.get(id)\n if (extmark) {\n this.extmarks.delete(id)\n this.extmarksByTypeId.get(extmark.typeId)?.delete(id)\n this.metadata.delete(id)\n }\n }\n\n private findVirtualExtmarkContaining(offset: number): Extmark | null {\n for (const extmark of this.extmarks.values()) {\n if (extmark.virtual && offset >= extmark.start && offset < extmark.end) {\n return extmark\n }\n }\n return null\n }\n\n private adjustExtmarksAfterInsertion(insertOffset: number, length: number): void {\n for (const extmark of this.extmarks.values()) {\n if (extmark.start >= insertOffset) {\n extmark.start += length\n extmark.end += length\n } else if (extmark.end > insertOffset) {\n extmark.end += length\n }\n }\n this.updateHighlights()\n }\n\n public adjustExtmarksAfterDeletion(deleteOffset: number, length: number): void {\n const toDelete: number[] = []\n\n for (const extmark of this.extmarks.values()) {\n if (extmark.end <= deleteOffset) {\n continue\n }\n\n if (extmark.start >= deleteOffset + length) {\n extmark.start -= length\n extmark.end -= length\n } else if (extmark.start >= deleteOffset && extmark.end <= deleteOffset + length) {\n toDelete.push(extmark.id)\n } else if (extmark.start < deleteOffset && extmark.end > deleteOffset + length) {\n extmark.end -= length\n } else if (extmark.start < deleteOffset && extmark.end > deleteOffset) {\n extmark.end -= Math.min(extmark.end, deleteOffset + length) - deleteOffset\n } else if (extmark.start < deleteOffset + length && extmark.end > deleteOffset + length) {\n const overlap = deleteOffset + length - extmark.start\n extmark.start = deleteOffset\n extmark.end -= length\n }\n }\n\n for (const id of toDelete) {\n this.deleteExtmarkById(id)\n }\n\n this.updateHighlights()\n }\n\n private offsetToPosition(offset: number): { row: number; col: number } {\n const result = this.editBuffer.offsetToPosition(offset)\n if (!result) {\n return { row: 0, col: 0 }\n }\n return result\n }\n\n private positionToOffset(row: number, col: number): number {\n return this.editBuffer.positionToOffset(row, col)\n }\n\n private getNextCursorOffset(currentOffset: number): number {\n this.originalMoveCursorRight()\n const nextOffset = this.editorView.getVisualCursor().offset\n this.originalSetCursorByOffset(currentOffset)\n return nextOffset\n }\n\n private updateHighlights(): void {\n this.editBuffer.clearAllHighlights()\n\n for (const extmark of this.extmarks.values()) {\n if (extmark.styleId !== undefined) {\n // extmark.start/end are display-width offsets including newlines (from cursor operations)\n // addHighlightByCharRange expects display-width offsets excluding newlines\n // So we need to subtract the number of newlines before each position\n const startWithoutNewlines = this.offsetExcludingNewlines(extmark.start)\n const endWithoutNewlines = this.offsetExcludingNewlines(extmark.end)\n\n this.editBuffer.addHighlightByCharRange({\n start: startWithoutNewlines,\n end: endWithoutNewlines,\n styleId: extmark.styleId,\n priority: extmark.priority ?? 0,\n hlRef: extmark.id,\n })\n }\n }\n }\n\n private offsetExcludingNewlines(offset: number): number {\n // offset is a display-width offset from the start of the buffer (includes newlines)\n // We need to convert to display-width excluding newlines\n // This means: subtract 1 for each newline encountered before this offset\n const text = this.editBuffer.getText()\n let displayWidthSoFar = 0\n let newlineCount = 0\n\n // Walk through the text and calculate display widths\n let i = 0\n while (i < text.length && displayWidthSoFar < offset) {\n if (text[i] === \"\\n\") {\n displayWidthSoFar++ // newline counts as width 1 in cursor offset\n newlineCount++\n i++\n } else {\n // Find the next newline or end of string\n let j = i\n while (j < text.length && text[j] !== \"\\n\") {\n j++\n }\n const chunk = text.substring(i, j)\n const chunkWidth = stringWidth(chunk)\n\n if (displayWidthSoFar + chunkWidth < offset) {\n // Entire chunk fits before offset\n displayWidthSoFar += chunkWidth\n i = j\n } else {\n // Offset is within this chunk - need to find exact position\n // Walk character by character\n for (let k = i; k < j && displayWidthSoFar < offset; k++) {\n const charWidth = stringWidth(text[k])\n displayWidthSoFar += charWidth\n }\n break\n }\n }\n }\n\n return offset - newlineCount\n }\n\n public create(options: ExtmarkOptions): number {\n if (this.destroyed) {\n throw new Error(\"ExtmarksController is destroyed\")\n }\n\n const id = this.nextId++\n const typeId = options.typeId ?? 0\n const extmark: Extmark = {\n id,\n start: options.start,\n end: options.end,\n virtual: options.virtual ?? false,\n styleId: options.styleId,\n priority: options.priority,\n data: options.data,\n typeId,\n }\n\n this.extmarks.set(id, extmark)\n\n if (!this.extmarksByTypeId.has(typeId)) {\n this.extmarksByTypeId.set(typeId, new Set())\n }\n this.extmarksByTypeId.get(typeId)!.add(id)\n\n if (options.metadata !== undefined) {\n this.metadata.set(id, options.metadata)\n }\n\n this.updateHighlights()\n\n return id\n }\n\n public delete(id: number): boolean {\n if (this.destroyed) {\n throw new Error(\"ExtmarksController is destroyed\")\n }\n\n const extmark = this.extmarks.get(id)\n if (!extmark) return false\n\n this.deleteExtmarkById(id)\n this.updateHighlights()\n\n return true\n }\n\n public get(id: number): Extmark | null {\n if (this.destroyed) return null\n return this.extmarks.get(id) ?? null\n }\n\n public getAll(): Extmark[] {\n if (this.destroyed) return []\n return Array.from(this.extmarks.values())\n }\n\n public getVirtual(): Extmark[] {\n if (this.destroyed) return []\n return Array.from(this.extmarks.values()).filter((e) => e.virtual)\n }\n\n public getAtOffset(offset: number): Extmark[] {\n if (this.destroyed) return []\n return Array.from(this.extmarks.values()).filter((e) => offset >= e.start && offset < e.end)\n }\n\n public getAllForTypeId(typeId: number): Extmark[] {\n if (this.destroyed) return []\n const ids = this.extmarksByTypeId.get(typeId)\n if (!ids) return []\n return Array.from(ids)\n .map((id) => this.extmarks.get(id))\n .filter((e): e is Extmark => e !== undefined)\n }\n\n public clear(): void {\n if (this.destroyed) return\n\n this.extmarks.clear()\n this.extmarksByTypeId.clear()\n this.metadata.clear()\n this.updateHighlights()\n }\n\n private saveSnapshot(): void {\n this.history.saveSnapshot(this.extmarks, this.nextId)\n }\n\n private restoreSnapshot(snapshot: ExtmarksSnapshot): void {\n this.extmarks = new Map(Array.from(snapshot.extmarks.entries()).map(([id, extmark]) => [id, { ...extmark }]))\n this.nextId = snapshot.nextId\n this.updateHighlights()\n }\n\n private wrapUndoRedo(): void {\n this.editBuffer.undo = (): string | null => {\n if (this.destroyed) {\n return this.originalUndo()\n }\n\n if (!this.history.canUndo()) {\n return this.originalUndo()\n }\n\n const currentSnapshot: ExtmarksSnapshot = {\n extmarks: new Map(Array.from(this.extmarks.entries()).map(([id, extmark]) => [id, { ...extmark }])),\n nextId: this.nextId,\n }\n this.history.pushRedo(currentSnapshot)\n\n const snapshot = this.history.undo()!\n this.restoreSnapshot(snapshot)\n\n return this.originalUndo()\n }\n\n this.editBuffer.redo = (): string | null => {\n if (this.destroyed) {\n return this.originalRedo()\n }\n\n if (!this.history.canRedo()) {\n return this.originalRedo()\n }\n\n const currentSnapshot: ExtmarksSnapshot = {\n extmarks: new Map(Array.from(this.extmarks.entries()).map(([id, extmark]) => [id, { ...extmark }])),\n nextId: this.nextId,\n }\n this.history.pushUndo(currentSnapshot)\n\n const snapshot = this.history.redo()!\n this.restoreSnapshot(snapshot)\n\n return this.originalRedo()\n }\n }\n\n public registerType(typeName: string): number {\n if (this.destroyed) {\n throw new Error(\"ExtmarksController is destroyed\")\n }\n\n const existing = this.typeNameToId.get(typeName)\n if (existing !== undefined) {\n return existing\n }\n\n const typeId = this.nextTypeId++\n this.typeNameToId.set(typeName, typeId)\n this.typeIdToName.set(typeId, typeName)\n return typeId\n }\n\n public getTypeId(typeName: string): number | null {\n if (this.destroyed) return null\n return this.typeNameToId.get(typeName) ?? null\n }\n\n public getTypeName(typeId: number): string | null {\n if (this.destroyed) return null\n return this.typeIdToName.get(typeId) ?? null\n }\n\n public getMetadataFor(extmarkId: number): any {\n if (this.destroyed) return undefined\n return this.metadata.get(extmarkId)\n }\n\n public destroy(): void {\n if (this.destroyed) return\n\n this.editBuffer.moveCursorLeft = this.originalMoveCursorLeft\n this.editBuffer.moveCursorRight = this.originalMoveCursorRight\n this.editBuffer.setCursorByOffset = this.originalSetCursorByOffset\n this.editorView.moveUpVisual = this.originalMoveUpVisual\n this.editorView.moveDownVisual = this.originalMoveDownVisual\n this.editBuffer.deleteCharBackward = this.originalDeleteCharBackward\n this.editBuffer.deleteChar = this.originalDeleteChar\n this.editBuffer.insertText = this.originalInsertText\n this.editBuffer.insertChar = this.originalInsertChar\n this.editBuffer.deleteRange = this.originalDeleteRange\n this.editBuffer.setText = this.originalSetText\n this.editBuffer.replaceText = this.originalReplaceText\n this.editBuffer.clear = this.originalClear\n this.editBuffer.newLine = this.originalNewLine\n this.editBuffer.deleteLine = this.originalDeleteLine\n this.editorView.deleteSelectedText = this.originalEditorViewDeleteSelectedText\n this.editBuffer.undo = this.originalUndo\n this.editBuffer.redo = this.originalRedo\n\n this.extmarks.clear()\n this.extmarksByTypeId.clear()\n this.metadata.clear()\n this.typeNameToId.clear()\n this.typeIdToName.clear()\n this.history.clear()\n this.destroyed = true\n }\n}\n\nexport function createExtmarksController(editBuffer: EditBuffer, editorView: EditorView): ExtmarksController {\n return new ExtmarksController(editBuffer, editorView)\n}\n",
49
49
  "import { RGBA, DEFAULT_BACKGROUND_RGB, DEFAULT_FOREGROUND_RGB, ansi256IndexToRgb } from \"./RGBA.js\"\nimport { SystemClock, type Clock, type TimerHandle } from \"./clock.js\"\nimport { env, registerEnvVar } from \"./env.js\"\n\ntype Hex = string | null\n\nconst SYSTEM_CLOCK = new SystemClock()\n\nregisterEnvVar({\n name: \"OTUI_PALETTE_IDLE_TIMEOUT_MS\",\n description: \"Milliseconds of silence after palette queries before using fallback colors.\",\n type: \"number\",\n default: 300,\n})\n\nconst OSC4_RESPONSE =\n /\\x1b]4;(\\d+);(?:(?:rgb:)([0-9a-fA-F]+)\\/([0-9a-fA-F]+)\\/([0-9a-fA-F]+)|#([0-9a-fA-F]{6}))(?:\\x07|\\x1b\\\\)/g\n\nconst OSC_SPECIAL_RESPONSE =\n /\\x1b](\\d+);(?:(?:rgb:)([0-9a-fA-F]+)\\/([0-9a-fA-F]+)\\/([0-9a-fA-F]+)|#([0-9a-fA-F]{6}))(?:\\x07|\\x1b\\\\)/g\n\nexport type WriteFunction = (data: string | Buffer) => boolean\n\nexport interface TerminalColors {\n palette: Hex[]\n defaultForeground: Hex\n defaultBackground: Hex\n cursorColor: Hex\n mouseForeground: Hex\n mouseBackground: Hex\n tekForeground: Hex\n tekBackground: Hex\n highlightBackground: Hex\n highlightForeground: Hex\n}\n\nexport interface GetPaletteOptions {\n timeout?: number\n size?: number\n}\n\nexport interface TerminalPaletteDetector {\n detect(options?: GetPaletteOptions): Promise<TerminalColors>\n detectOSCSupport(timeoutMs?: number): Promise<boolean>\n cleanup(): void\n}\n\nexport interface NormalizedTerminalPalette {\n palette: RGBA[]\n defaultForeground: RGBA\n defaultBackground: RGBA\n}\n\nexport type OscSubscriptionSource = {\n subscribeOsc(handler: (sequence: string) => void): () => void\n}\n\nexport interface TerminalPaletteOptions {\n stdin: NodeJS.ReadStream\n stdout: NodeJS.WriteStream\n writeFn?: WriteFunction\n isLegacyTmux?: boolean\n isTmux?: boolean\n oscSource?: OscSubscriptionSource\n clock?: Clock\n}\n\nfunction scaleComponent(comp: string): string {\n const val = parseInt(comp, 16)\n const maxIn = (1 << (4 * comp.length)) - 1\n return Math.round((val / maxIn) * 255)\n .toString(16)\n .padStart(2, \"0\")\n}\n\nfunction toHex(r?: string, g?: string, b?: string, hex6?: string): string {\n if (hex6) return `#${hex6.toLowerCase()}`\n if (r && g && b) return `#${scaleComponent(r)}${scaleComponent(g)}${scaleComponent(b)}`\n return \"#000000\"\n}\n\n/**\n * Wrap OSC sequence for tmux passthrough\n * tmux requires DCS sequences to pass OSC to the underlying terminal\n * Format: ESC P tmux; ESC <OSC_SEQUENCE> ESC \\\n */\nfunction wrapForTmux(osc: string): string {\n // Replace ESC with ESC ESC for tmux (escape the escape)\n const escaped = osc.replace(/\\x1b/g, \"\\x1b\\x1b\")\n return `\\x1bPtmux;${escaped}\\x1b\\\\`\n}\n\nexport class TerminalPalette implements TerminalPaletteDetector {\n private stdin: NodeJS.ReadStream\n private stdout: NodeJS.WriteStream\n private writeFn: WriteFunction\n private activeQuerySessions: Array<() => void> = []\n private inLegacyTmux: boolean\n private inTmux: boolean\n private oscSource?: OscSubscriptionSource\n private readonly clock: Clock\n\n constructor(options: TerminalPaletteOptions) {\n const { stdin, stdout, writeFn, isLegacyTmux, isTmux, oscSource, clock } = options\n\n this.stdin = stdin\n this.stdout = stdout\n this.writeFn = writeFn || ((data: string | Buffer) => stdout.write(data))\n this.inLegacyTmux = isLegacyTmux ?? false\n this.inTmux = isTmux ?? this.inLegacyTmux\n this.oscSource = oscSource\n this.clock = clock ?? SYSTEM_CLOCK\n }\n\n private writeOsc(osc: string, wrapForLegacyTmux = false): boolean {\n const data = wrapForLegacyTmux && this.inLegacyTmux ? wrapForTmux(osc) : osc\n return this.writeFn(data)\n }\n\n cleanup(): void {\n for (const cleanupSession of [...this.activeQuerySessions]) {\n cleanupSession()\n }\n this.activeQuerySessions = []\n }\n\n private subscribeInput(handler: (chunk: string | Buffer) => void): () => void {\n if (this.oscSource) {\n return this.oscSource.subscribeOsc((sequence) => {\n handler(sequence)\n })\n }\n\n this.stdin.on(\"data\", handler)\n return () => {\n this.stdin.removeListener(\"data\", handler)\n }\n }\n\n private createQuerySession() {\n const timers = new Set<TimerHandle>()\n const subscriptions = new Set<() => void>()\n let closed = false\n\n const cleanup = () => {\n if (closed) return\n closed = true\n\n for (const timer of timers) {\n this.clock.clearTimeout(timer)\n }\n timers.clear()\n\n for (const unsubscribe of subscriptions) {\n unsubscribe()\n }\n subscriptions.clear()\n\n const idx = this.activeQuerySessions.indexOf(cleanup)\n if (idx !== -1) this.activeQuerySessions.splice(idx, 1)\n }\n\n this.activeQuerySessions.push(cleanup)\n\n return {\n setTimer: (fn: () => void, ms: number): TimerHandle => {\n const timer = this.clock.setTimeout(fn, ms)\n timers.add(timer)\n return timer\n },\n resetTimer: (existing: TimerHandle | null, fn: () => void, ms: number): TimerHandle => {\n if (existing) {\n this.clock.clearTimeout(existing)\n timers.delete(existing)\n }\n\n const timer = this.clock.setTimeout(fn, ms)\n timers.add(timer)\n return timer\n },\n subscribeInput: (handler: (chunk: string | Buffer) => void): (() => void) => {\n const unsubscribe = this.subscribeInput(handler)\n subscriptions.add(unsubscribe)\n return () => {\n if (!subscriptions.has(unsubscribe)) return\n subscriptions.delete(unsubscribe)\n unsubscribe()\n }\n },\n cleanup,\n }\n }\n\n async detectOSCSupport(timeoutMs = 300): Promise<boolean> {\n const out = this.stdout\n\n if (!out.isTTY || !this.stdin.isTTY) return false\n\n return new Promise<boolean>((resolve) => {\n const session = this.createQuerySession()\n let buffer = \"\"\n let settled = false\n\n const finish = (supported: boolean) => {\n if (settled) return\n settled = true\n session.cleanup()\n resolve(supported)\n }\n\n const onData = (chunk: string | Buffer) => {\n buffer += chunk.toString()\n // Reset regex lastIndex before testing due to global flag\n OSC4_RESPONSE.lastIndex = 0\n if (OSC4_RESPONSE.test(buffer)) {\n finish(true)\n }\n }\n\n session.setTimer(() => {\n finish(false)\n }, timeoutMs)\n session.subscribeInput(onData)\n // Only OSC 4 needs legacy tmux passthrough; tmux routes OSC 4 replies back to the pane.\n this.writeOsc(\"\\x1b]4;0;?\\x07\", true)\n })\n }\n\n private async queryPalette(\n indices: number[],\n timeoutMs = 1200,\n idleTimeoutMs = env.OTUI_PALETTE_IDLE_TIMEOUT_MS,\n ): Promise<Map<number, Hex>> {\n const out = this.stdout\n const results = new Map<number, Hex>()\n indices.forEach((i) => results.set(i, null))\n\n if (!out.isTTY || !this.stdin.isTTY) {\n return results\n }\n\n return new Promise<Map<number, Hex>>((resolve) => {\n const session = this.createQuerySession()\n let buffer = \"\"\n let idleTimer: TimerHandle | null = null\n let settled = false\n\n const finish = () => {\n if (settled) return\n settled = true\n session.cleanup()\n resolve(results)\n }\n\n const onData = (chunk: string | Buffer) => {\n buffer += chunk.toString()\n\n let m: RegExpExecArray | null\n OSC4_RESPONSE.lastIndex = 0\n while ((m = OSC4_RESPONSE.exec(buffer))) {\n const idx = parseInt(m[1], 10)\n if (results.has(idx)) results.set(idx, toHex(m[2], m[3], m[4], m[5]))\n }\n\n if (buffer.length > 8192) buffer = buffer.slice(-4096)\n\n const done = [...results.values()].filter((v) => v !== null).length\n if (done === results.size) {\n finish()\n return\n }\n\n idleTimer = session.resetTimer(idleTimer, finish, idleTimeoutMs)\n }\n\n session.setTimer(finish, timeoutMs)\n session.subscribeInput(onData)\n // Only OSC 4 needs legacy tmux passthrough; tmux routes OSC 4 replies back to the pane.\n this.writeOsc(indices.map((i) => `\\x1b]4;${i};?\\x07`).join(\"\"), true)\n idleTimer = session.resetTimer(idleTimer, finish, idleTimeoutMs)\n })\n }\n\n private async querySpecialColors(\n timeoutMs = 1200,\n idleTimeoutMs = env.OTUI_PALETTE_IDLE_TIMEOUT_MS,\n ): Promise<Record<number, Hex>> {\n const out = this.stdout\n const results: Record<number, Hex> = {\n 10: null,\n 11: null,\n 12: null,\n 13: null,\n 14: null,\n 15: null,\n 16: null,\n 17: null,\n 19: null,\n }\n // tmux handles plain OSC 10/11/12 only; it has no OSC 13-17/19 handlers or reply routing.\n const queries = this.inTmux ? [10, 11, 12] : [10, 11, 12, 13, 14, 15, 16, 17, 19]\n\n if (!out.isTTY || !this.stdin.isTTY) {\n return results\n }\n\n return new Promise<Record<number, Hex>>((resolve) => {\n const session = this.createQuerySession()\n let buffer = \"\"\n let idleTimer: TimerHandle | null = null\n let settled = false\n\n const finish = () => {\n if (settled) return\n settled = true\n session.cleanup()\n resolve(results)\n }\n\n const onData = (chunk: string | Buffer) => {\n buffer += chunk.toString()\n let updated = false\n\n let m: RegExpExecArray | null\n OSC_SPECIAL_RESPONSE.lastIndex = 0\n while ((m = OSC_SPECIAL_RESPONSE.exec(buffer))) {\n const idx = parseInt(m[1], 10)\n if (idx in results) {\n results[idx] = toHex(m[2], m[3], m[4], m[5])\n updated = true\n }\n }\n\n if (buffer.length > 8192) buffer = buffer.slice(-4096)\n\n if (queries.every((idx) => results[idx] !== null)) {\n finish()\n return\n }\n\n if (!updated) return\n\n idleTimer = session.resetTimer(idleTimer, finish, idleTimeoutMs)\n }\n\n session.setTimer(finish, timeoutMs)\n session.subscribeInput(onData)\n // OSC 10/11/12 are plain tmux handlers. DCS passthrough does not help other special colors.\n this.writeOsc(queries.map((idx) => `\\x1b]${idx};?\\x07`).join(\"\"))\n idleTimer = session.resetTimer(idleTimer, finish, idleTimeoutMs)\n })\n }\n\n async detect(options?: GetPaletteOptions): Promise<TerminalColors> {\n const { timeout = 5000, size = 16 } = options || {}\n const supported = await this.detectOSCSupport()\n\n if (!supported) {\n return {\n palette: Array(size).fill(null),\n defaultForeground: null,\n defaultBackground: null,\n cursorColor: null,\n mouseForeground: null,\n mouseBackground: null,\n tekForeground: null,\n tekBackground: null,\n highlightBackground: null,\n highlightForeground: null,\n }\n }\n\n const indicesToQuery = [...Array(size).keys()]\n const idleTimeout = env.OTUI_PALETTE_IDLE_TIMEOUT_MS\n const [paletteResults, specialColors] = await Promise.all([\n this.queryPalette(indicesToQuery, timeout, idleTimeout),\n this.querySpecialColors(timeout, idleTimeout),\n ])\n\n return {\n palette: [...Array(size).keys()].map((i) => paletteResults.get(i) ?? null),\n defaultForeground: specialColors[10],\n defaultBackground: specialColors[11],\n cursorColor: specialColors[12],\n mouseForeground: specialColors[13],\n mouseBackground: specialColors[14],\n tekForeground: specialColors[15],\n tekBackground: specialColors[16],\n highlightBackground: specialColors[17],\n highlightForeground: specialColors[19],\n }\n }\n}\n\nexport function createTerminalPalette(options: TerminalPaletteOptions): TerminalPaletteDetector {\n return new TerminalPalette(options)\n}\n\nconst DEFAULT_FOREGROUND_FALLBACK = RGBA.fromInts(...DEFAULT_FOREGROUND_RGB)\nconst DEFAULT_BACKGROUND_FALLBACK = RGBA.fromInts(...DEFAULT_BACKGROUND_RGB)\n\nlet fallbackAnsi256Palette: RGBA[] | null = null\n\nfunction getFallbackAnsi256Palette(): readonly RGBA[] {\n if (!fallbackAnsi256Palette) {\n fallbackAnsi256Palette = Array.from({ length: 256 }, (_, index) => {\n const [r, g, b] = ansi256IndexToRgb(index)\n return RGBA.fromInts(r, g, b)\n })\n }\n\n return fallbackAnsi256Palette\n}\n\nexport function normalizeTerminalPalette(colors?: TerminalColors | null): NormalizedTerminalPalette {\n const fallbackPalette = getFallbackAnsi256Palette()\n\n return {\n palette: Array.from({ length: 256 }, (_, index) => {\n const detected = colors?.palette[index]\n return detected ? RGBA.fromHex(detected) : RGBA.clone(fallbackPalette[index])\n }),\n defaultForeground: colors?.defaultForeground\n ? RGBA.fromHex(colors.defaultForeground)\n : RGBA.clone(DEFAULT_FOREGROUND_FALLBACK),\n defaultBackground: colors?.defaultBackground\n ? RGBA.fromHex(colors.defaultBackground)\n : RGBA.clone(DEFAULT_BACKGROUND_FALLBACK),\n }\n}\n\nexport function buildTerminalPaletteSignature(colors?: TerminalColors | null): string {\n const normalized = normalizeTerminalPalette(colors)\n const paletteSignature = normalized.palette.map((color) => color.toInts().join(\",\")).join(\";\")\n\n return [\n paletteSignature,\n normalized.defaultForeground.toInts().join(\",\"),\n normalized.defaultBackground.toInts().join(\",\"),\n ].join(\"|\")\n}\n",
50
50
  "import { stripANSI } from \"../platform/runtime.js\"\n\nexport type PasteKind = \"text\" | \"binary\" | \"unknown\"\n\nexport interface PasteMetadata {\n mimeType?: string\n kind?: PasteKind\n}\n\nconst PASTE_TEXT_DECODER = new TextDecoder()\n\nexport function decodePasteBytes(bytes: Uint8Array): string {\n return PASTE_TEXT_DECODER.decode(bytes)\n}\n\nexport function stripAnsiSequences(text: string): string {\n return stripANSI(text)\n}\n",
51
- "// OSC 52 clipboard support for terminal applications.\n// Delegates to native Zig implementation for ANSI sequence generation.\n\nimport type { RendererHandle, RenderLib } from \"../zig.js\"\n\nexport enum ClipboardTarget {\n Clipboard = 0,\n Primary = 1,\n Select = 2,\n Secondary = 3,\n}\n\nexport class Clipboard {\n private lib: RenderLib\n private rendererPtr: RendererHandle\n\n constructor(lib: RenderLib, rendererPtr: RendererHandle) {\n this.lib = lib\n this.rendererPtr = rendererPtr\n }\n\n public copyToClipboardOSC52(text: string, target: ClipboardTarget = ClipboardTarget.Clipboard): boolean {\n if (!this.isOsc52Supported()) {\n return false\n }\n const textUtf8 = this.lib.encoder.encode(text)\n return this.lib.copyToClipboardOSC52(this.rendererPtr, target, textUtf8)\n }\n\n public clearClipboardOSC52(target: ClipboardTarget = ClipboardTarget.Clipboard): boolean {\n if (!this.isOsc52Supported()) {\n return false\n }\n return this.lib.clearClipboardOSC52(this.rendererPtr, target)\n }\n\n public isOsc52Supported(): boolean {\n const caps = this.lib.getTerminalCapabilities(this.rendererPtr)\n return caps?.osc52_support !== \"unsupported\"\n }\n}\n",
51
+ "import type {\n ClipboardReadResult,\n ClipboardSelection,\n HostClipboardBackend,\n HostClipboardOptions,\n HostClipboardService,\n} from \"./clipboard.js\"\n\nconst DEFAULT_CLIPBOARD_TIMEOUT_MS = 1_000\nconst DEFAULT_CLIPBOARD_MAX_BYTES = 8 * 1024 * 1024\nconst DEFAULT_CLIPBOARD_MAX_IMAGE_PIXELS = 64 * 1024 * 1024\nconst DEFAULT_CLIPBOARD_MAX_CONVERSION_BYTES = 512 * 1024 * 1024\nconst DEFAULT_CLIPBOARD_MAX_CONCURRENT_OPERATIONS = 16\nconst DEFAULT_CLIPBOARD_MAX_PROVIDER_TRANSFERS = 16\nconst MAX_U32 = 0xffff_ffff\nconst MIME_ESSENCE_PATTERN = /^[a-z0-9!#$%&'*+.^_`|~-]+\\/[a-z0-9!#$%&'*+.^_`|~-]+$/i\nexport const HOST_CLIPBOARD_MIME_PREFERENCE_COUNT_MAX = 64\nexport const HOST_CLIPBOARD_MIME_ESSENCE_BYTES_MAX = 255\n\nexport interface NormalizedHostClipboardOptions {\n readonly timeoutMs: number\n readonly maxReadBytes: number\n readonly maxWriteBytes: number\n readonly maxImagePixels: number\n readonly maxConversionBytes: number\n readonly maxConcurrentOperations: number\n readonly maxProviderTransfers: number\n readonly waylandSeat?: string\n}\n\nexport type HostClipboardBackendFactory = (options: NormalizedHostClipboardOptions) => HostClipboardBackend\n\nexport interface ActiveClipboardOperation {\n readonly controller: AbortController\n readonly settled: Promise<void>\n settle(): void\n}\n\nconst validateU32 = (name: string, value: number): number => {\n if (!Number.isInteger(value) || value < 0 || value > MAX_U32) {\n throw new RangeError(`${name} must be an integer from 0 through ${MAX_U32}`)\n }\n return value\n}\n\nconst validatePositiveU32 = (name: string, value: number): number => {\n const validated = validateU32(name, value)\n if (validated === 0) throw new RangeError(`${name} must be greater than zero`)\n return validated\n}\n\nconst normalizeOptions = (options: HostClipboardOptions): NormalizedHostClipboardOptions => {\n const waylandSeat = options.waylandSeat\n if (\n waylandSeat !== undefined &&\n (typeof waylandSeat !== \"string\" || waylandSeat.length === 0 || waylandSeat.includes(\"\\0\"))\n ) {\n throw new TypeError(\"waylandSeat must be a non-empty string without NUL characters\")\n }\n return {\n timeoutMs: validateU32(\"timeoutMs\", options.timeoutMs ?? DEFAULT_CLIPBOARD_TIMEOUT_MS),\n maxReadBytes: validateU32(\"maxReadBytes\", options.maxReadBytes ?? DEFAULT_CLIPBOARD_MAX_BYTES),\n maxWriteBytes: validateU32(\"maxWriteBytes\", options.maxWriteBytes ?? DEFAULT_CLIPBOARD_MAX_BYTES),\n maxImagePixels: validateU32(\"maxImagePixels\", options.maxImagePixels ?? DEFAULT_CLIPBOARD_MAX_IMAGE_PIXELS),\n maxConversionBytes: validateU32(\n \"maxConversionBytes\",\n options.maxConversionBytes ?? DEFAULT_CLIPBOARD_MAX_CONVERSION_BYTES,\n ),\n maxConcurrentOperations: validatePositiveU32(\n \"maxConcurrentOperations\",\n options.maxConcurrentOperations ?? DEFAULT_CLIPBOARD_MAX_CONCURRENT_OPERATIONS,\n ),\n maxProviderTransfers: validatePositiveU32(\n \"maxProviderTransfers\",\n options.maxProviderTransfers ?? DEFAULT_CLIPBOARD_MAX_PROVIDER_TRANSFERS,\n ),\n waylandSeat,\n }\n}\n\nconst normalizePreferredTypes = (preferredTypes: readonly [string, ...string[]]): readonly [string, ...string[]] => {\n if (!Array.isArray(preferredTypes) || preferredTypes.length === 0) {\n throw new TypeError(\"preferredTypes must contain at least one MIME essence type\")\n }\n if (preferredTypes.length > HOST_CLIPBOARD_MIME_PREFERENCE_COUNT_MAX) {\n throw new RangeError(\n `preferredTypes must contain at most ${HOST_CLIPBOARD_MIME_PREFERENCE_COUNT_MAX} MIME essence types`,\n )\n }\n const normalized = preferredTypes.map((mimeType) => {\n if (typeof mimeType !== \"string\") {\n throw new TypeError(\"preferredTypes must contain valid MIME essence types without parameters\")\n }\n // Valid MIME essence tokens are ASCII, so code units equal encoded bytes.\n if (mimeType.length > HOST_CLIPBOARD_MIME_ESSENCE_BYTES_MAX) {\n throw new RangeError(\n `preferredTypes MIME essences must be at most ${HOST_CLIPBOARD_MIME_ESSENCE_BYTES_MAX} ASCII bytes`,\n )\n }\n if (!MIME_ESSENCE_PATTERN.test(mimeType)) {\n throw new TypeError(\"preferredTypes must contain valid MIME essence types without parameters\")\n }\n return mimeType.toLowerCase()\n })\n return normalized as [string, ...string[]]\n}\n\nconst normalizeSelection = (selection: ClipboardSelection | undefined): ClipboardSelection => {\n const normalized = selection ?? \"clipboard\"\n if (normalized !== \"clipboard\" && normalized !== \"primary\") {\n throw new TypeError(\"selection must be clipboard or primary\")\n }\n return normalized\n}\n\nexport const validateClipboardText = (text: string, maxWriteBytes: number): void => {\n if (typeof text !== \"string\" || text.length === 0) throw new TypeError(\"writeText requires non-empty text\")\n if (text.includes(\"\\0\")) throw new TypeError(\"writeText does not support NUL characters\")\n const byteLimit = Math.min(maxWriteBytes, MAX_U32)\n let byteLength = 0\n for (const character of text) {\n const codePoint = character.codePointAt(0)!\n if (codePoint >= 0xd800 && codePoint <= 0xdfff) {\n throw new TypeError(\"writeText does not support unpaired UTF-16 surrogates\")\n }\n if (codePoint <= 0x7f) {\n byteLength += 1\n } else if (codePoint <= 0x7ff) {\n byteLength += 2\n } else if (codePoint <= 0xffff) {\n byteLength += 3\n } else {\n byteLength += 4\n }\n if (byteLength > byteLimit) {\n throw new RangeError(`writeText exceeds the configured ${maxWriteBytes} byte limit`)\n }\n }\n}\n\nconst createActiveOperation = (callerSignal?: AbortSignal): ActiveClipboardOperation => {\n const controller = new AbortController()\n let settle = () => {}\n const settled = new Promise<void>((resolve) => {\n settle = resolve\n })\n if (callerSignal) {\n callerSignal.addEventListener(\"abort\", () => controller.abort(callerSignal.reason), {\n once: true,\n signal: controller.signal,\n })\n }\n return { controller, settled, settle }\n}\n\nexport const runTrackedOperation = <T>(\n active: Set<ActiveClipboardOperation>,\n callerSignal: AbortSignal | undefined,\n operation: (signal: AbortSignal) => Promise<T>,\n): Promise<T> => {\n const state = createActiveOperation(callerSignal)\n active.add(state)\n let result: Promise<T>\n try {\n result = operation(state.controller.signal)\n } catch (error) {\n result = Promise.reject(error)\n }\n return result.finally(() => {\n active.delete(state)\n state.controller.abort()\n state.settle()\n })\n}\n\nexport const createHostClipboardWithBackend = (\n options: HostClipboardOptions,\n createBackend: HostClipboardBackendFactory,\n): HostClipboardService => {\n const config = normalizeOptions(options)\n const backend = createBackend(config)\n const active = new Set<ActiveClipboardOperation>()\n let disposed = false\n let disposePromise: Promise<void> | undefined\n\n const assertUsable = (): void => {\n if (disposed) throw new Error(\"Host clipboard service is disposed\")\n }\n return {\n maxWriteBytes: config.maxWriteBytes,\n read(readOptions) {\n try {\n assertUsable()\n const preferredTypes = normalizePreferredTypes(readOptions.preferredTypes)\n const selection = normalizeSelection(readOptions.selection)\n if (readOptions.signal?.aborted) return Promise.resolve({ status: \"cancelled\" })\n if (config.timeoutMs === 0) return Promise.resolve({ status: \"timed-out\" })\n return runTrackedOperation(active, readOptions.signal, async (signal) => {\n const result = await backend.read({\n preferredTypes,\n selection,\n maxBytes: config.maxReadBytes,\n timeoutMs: config.timeoutMs,\n signal,\n })\n if (result.status !== \"read\") return result\n if (result.representation.bytes.byteLength > config.maxReadBytes) return { status: \"limit-exceeded\" }\n return { status: \"read\", representation: result.representation }\n })\n } catch (error) {\n return Promise.reject(error)\n }\n },\n writeText(text, operationOptions = {}) {\n try {\n assertUsable()\n validateClipboardText(text, config.maxWriteBytes)\n const selection = normalizeSelection(operationOptions.selection)\n if (operationOptions.signal?.aborted) return Promise.resolve({ status: \"cancelled\" })\n if (config.timeoutMs === 0) return Promise.resolve({ status: \"timed-out\" })\n return runTrackedOperation(active, operationOptions.signal, (signal) =>\n backend.writeText(text, { selection, timeoutMs: config.timeoutMs, signal }),\n )\n } catch (error) {\n return Promise.reject(error)\n }\n },\n clear(operationOptions = {}) {\n try {\n assertUsable()\n const selection = normalizeSelection(operationOptions.selection)\n if (operationOptions.signal?.aborted) return Promise.resolve({ status: \"cancelled\" })\n if (config.timeoutMs === 0) return Promise.resolve({ status: \"timed-out\" })\n return runTrackedOperation(active, operationOptions.signal, (signal) =>\n backend.clear({ selection, timeoutMs: config.timeoutMs, signal }),\n )\n } catch (error) {\n return Promise.reject(error)\n }\n },\n dispose() {\n if (disposePromise) return disposePromise\n disposed = true\n for (const operation of active) operation.controller.abort()\n disposePromise = (async () => {\n await Promise.all([...active].map((operation) => operation.settled))\n await backend.dispose()\n })()\n return disposePromise\n },\n }\n}\n",
52
+ "import {\n NativeClipboardCopyStatus,\n NativeClipboardDestroyStatus,\n NativeClipboardOperationStatus,\n NativeClipboardShutdownStatus,\n NativeClipboardStartStatus,\n resolveRenderLib,\n type ClipboardOperationHandle,\n type ClipboardServiceHandle,\n type RenderLib,\n} from \"../zig.js\"\nimport type {\n ClipboardReadResult,\n ClipboardSelection,\n HostClipboardBackend,\n HostClipboardClearResult,\n HostClipboardWriteResult,\n} from \"./clipboard.js\"\nimport { type HostClipboardBackendFactory } from \"./host-clipboard.internal.js\"\n\ntype NativeResult = ClipboardReadResult | HostClipboardWriteResult | HostClipboardClearResult\nconst SHUTDOWN_POLL_INTERVAL_MS = 1\nconst OPERATION_POLL_INTERVAL_MS = 1\nconst PROVIDER_POLL_INTERVAL_MS = 8\nconst MAX_WORK_UNITS_PER_DRAIN = 64\n\ninterface PendingOperation {\n readonly handle: ClipboardOperationHandle\n readonly kind: \"read\" | \"write\" | \"clear\"\n readonly signal: AbortSignal\n readonly resolve: (result: NativeResult) => void\n readonly reject: (error: unknown) => void\n cleanupError?: unknown\n}\n\nconst selectionValue = (selection: ClipboardSelection): number => (selection === \"clipboard\" ? 0 : 1)\n\nconst encodeReadRequest = (preferredTypes: readonly [string, ...string[]]): Uint8Array => {\n const encoder = new TextEncoder()\n const encoded = preferredTypes.map((mimeType) => encoder.encode(mimeType))\n const size = encoded.reduce((total, mimeType) => total + 4 + mimeType.byteLength, 4)\n const request = new Uint8Array(size)\n const view = new DataView(request.buffer)\n view.setUint32(0, encoded.length, true)\n let offset = 4\n for (const mimeType of encoded) {\n view.setUint32(offset, mimeType.byteLength, true)\n offset += 4\n request.set(mimeType, offset)\n offset += mimeType.byteLength\n }\n return request\n}\n\nconst startFailure = (status: NativeClipboardStartStatus): NativeResult => ({\n status: \"failed\",\n error: new Error(`Native clipboard operation failed to start (${NativeClipboardStartStatus[status]})`),\n})\n\nclass NativeClipboardBackend implements HostClipboardBackend {\n private readonly library: RenderLib\n private readonly service: ClipboardServiceHandle\n private readonly pending = new Map<ClipboardOperationHandle, PendingOperation>()\n private pollTimer: ReturnType<typeof setTimeout> | undefined\n private pollTimerForOperation = false\n private providerActive = false\n private disposed = false\n private disposePromise: Promise<void> | undefined\n\n constructor(\n private readonly maxImagePixels: number,\n private readonly maxConversionBytes: number,\n maxConcurrentOperations: number,\n maxProviderTransfers: number,\n waylandSeat?: string,\n ) {\n this.library = resolveRenderLib()\n const service = this.library.clipboardServiceCreate(maxConcurrentOperations, maxProviderTransfers, waylandSeat)\n if (!service) throw new Error(\"Failed to create native clipboard service\")\n this.service = service\n }\n\n read(options: Parameters<HostClipboardBackend[\"read\"]>[0]): Promise<ClipboardReadResult> {\n const request = encodeReadRequest(options.preferredTypes)\n const started = this.library.clipboardReadOperationStart(\n this.service,\n request,\n selectionValue(options.selection),\n options.maxBytes,\n this.maxImagePixels,\n this.maxConversionBytes,\n options.timeoutMs,\n )\n return this.track(started, options.signal, \"read\") as Promise<ClipboardReadResult>\n }\n\n writeText(\n text: string,\n options: Parameters<HostClipboardBackend[\"writeText\"]>[1],\n ): Promise<HostClipboardWriteResult> {\n const started = this.library.clipboardWriteOperationStart(\n this.service,\n new TextEncoder().encode(text),\n selectionValue(options.selection),\n options.timeoutMs,\n )\n return this.track(started, options.signal, \"write\") as Promise<HostClipboardWriteResult>\n }\n\n clear(options: Parameters<HostClipboardBackend[\"clear\"]>[0]): Promise<HostClipboardClearResult> {\n const started = this.library.clipboardClearOperationStart(\n this.service,\n selectionValue(options.selection),\n options.timeoutMs,\n )\n return this.track(started, options.signal, \"clear\") as Promise<HostClipboardClearResult>\n }\n\n dispose(): Promise<void> {\n if (this.disposePromise) return this.disposePromise\n this.disposed = true\n this.disposePromise = this.shutdown()\n return this.disposePromise\n }\n\n private track(\n started: { status: NativeClipboardStartStatus; operation: ClipboardOperationHandle | null },\n signal: AbortSignal,\n kind: PendingOperation[\"kind\"],\n ): Promise<NativeResult> {\n if (this.disposed) return Promise.reject(new Error(\"Native clipboard backend is disposed\"))\n if (started.status !== NativeClipboardStartStatus.Ok || !started.operation) {\n return Promise.resolve(startFailure(started.status))\n }\n return new Promise((resolve, reject) => {\n const operation: PendingOperation = { handle: started.operation!, kind, signal, resolve, reject }\n this.pending.set(operation.handle, operation)\n signal.addEventListener(\"abort\", () => this.requestCancel(operation), { once: true })\n this.ensureScheduled()\n this.drain()\n })\n }\n\n private requestCancel(operation: PendingOperation): void {\n if (!this.pending.has(operation.handle)) return\n try {\n this.library.clipboardOperationCancel(operation.handle)\n } catch (error) {\n operation.cleanupError ??= error\n }\n this.ensureScheduled()\n }\n\n private ensureScheduled(): void {\n const hasPendingOperation = this.pending.size > 0\n if (!hasPendingOperation && !this.providerActive) {\n this.clearPollTimer()\n return\n }\n if (this.pollTimer !== undefined) {\n if (hasPendingOperation && !this.pollTimerForOperation) this.clearPollTimer()\n else {\n if (hasPendingOperation) this.pollTimer.ref()\n else this.pollTimer.unref()\n return\n }\n }\n this.pollTimerForOperation = hasPendingOperation\n this.pollTimer = setTimeout(\n () => {\n this.pollTimer = undefined\n this.pollTimerForOperation = false\n this.drain()\n },\n hasPendingOperation ? OPERATION_POLL_INTERVAL_MS : PROVIDER_POLL_INTERVAL_MS,\n )\n if (!hasPendingOperation) this.pollTimer.unref()\n }\n\n private clearPollTimer(): void {\n if (this.pollTimer === undefined) return\n clearTimeout(this.pollTimer)\n this.pollTimer = undefined\n this.pollTimerForOperation = false\n }\n\n private drain(): void {\n // A service drain gives cancellation cleanup and queued events their turn before operations settle.\n this.providerActive = false\n try {\n this.providerActive = this.library.clipboardServiceDrain(this.service) === 1\n } catch (error) {\n for (const operation of this.pending.values()) {\n operation.cleanupError ??= error\n try {\n this.library.clipboardOperationCancel(operation.handle)\n } catch {}\n }\n }\n let workUnits = 0\n while (workUnits < MAX_WORK_UNITS_PER_DRAIN && this.pending.size > 0) {\n const operation = this.pending.values().next().value\n if (!operation) break\n workUnits += 1\n try {\n if (operation.cleanupError !== undefined) {\n try {\n this.library.clipboardOperationCancel(operation.handle)\n } catch {}\n const status = this.library.clipboardOperationPoll(operation.handle)\n if (status === NativeClipboardOperationStatus.Pending) {\n this.rotate(operation)\n continue\n }\n this.providerActive = true\n const destroyed = this.library.clipboardOperationDestroy(operation.handle)\n if (destroyed === NativeClipboardDestroyStatus.NotReady) {\n this.rotate(operation)\n continue\n }\n this.pending.delete(operation.handle)\n operation.reject(operation.cleanupError)\n continue\n }\n if (operation.signal.aborted) this.library.clipboardOperationCancel(operation.handle)\n const status = this.library.clipboardOperationPoll(operation.handle)\n if (status === NativeClipboardOperationStatus.Pending) {\n this.rotate(operation)\n continue\n }\n this.providerActive = true\n const result = this.readResult(operation.handle, operation.kind, status)\n const destroyed = this.library.clipboardOperationDestroy(operation.handle)\n if (destroyed === NativeClipboardDestroyStatus.NotReady) {\n this.rotate(operation)\n continue\n }\n this.pending.delete(operation.handle)\n operation.resolve(\n destroyed === NativeClipboardDestroyStatus.Destroyed\n ? result\n : { status: \"failed\", error: new Error(\"Native clipboard operation became invalid before destruction\") },\n )\n } catch (error) {\n operation.cleanupError ??= error\n try {\n this.library.clipboardOperationCancel(operation.handle)\n } catch {}\n this.rotate(operation)\n }\n }\n this.ensureScheduled()\n }\n\n private rotate(operation: PendingOperation): void {\n this.pending.delete(operation.handle)\n this.pending.set(operation.handle, operation)\n }\n\n private readResult(\n handle: ClipboardOperationHandle,\n kind: PendingOperation[\"kind\"],\n status: NativeClipboardOperationStatus,\n ): NativeResult {\n switch (status) {\n case NativeClipboardOperationStatus.Read:\n return kind === \"read\" ? this.readRepresentation(handle) : this.invalidResult(kind, status)\n case NativeClipboardOperationStatus.Empty:\n return kind === \"read\" ? { status: \"empty\" } : this.invalidResult(kind, status)\n case NativeClipboardOperationStatus.Written:\n return kind === \"write\" ? { status: \"written\" } : this.invalidResult(kind, status)\n case NativeClipboardOperationStatus.Cleared:\n return kind === \"clear\" ? { status: \"cleared\" } : this.invalidResult(kind, status)\n case NativeClipboardOperationStatus.Unsupported:\n return { status: \"unsupported\" }\n case NativeClipboardOperationStatus.Cancelled:\n return { status: \"cancelled\" }\n case NativeClipboardOperationStatus.TimedOut:\n return { status: \"timed-out\" }\n case NativeClipboardOperationStatus.LimitExceeded:\n return kind === \"read\" ? { status: \"limit-exceeded\" } : this.invalidResult(kind, status)\n case NativeClipboardOperationStatus.Failed:\n return { status: \"failed\", error: this.readError(handle) }\n default:\n return { status: \"failed\", error: new Error(\"Native clipboard operation returned an invalid status\") }\n }\n }\n\n private invalidResult(kind: PendingOperation[\"kind\"], status: NativeClipboardOperationStatus): NativeResult {\n return {\n status: \"failed\",\n error: new Error(\n `Native clipboard ${kind} returned inapplicable status ${NativeClipboardOperationStatus[status]}`,\n ),\n }\n }\n\n private readRepresentation(handle: ClipboardOperationHandle): ClipboardReadResult {\n const mimeLength = this.library.clipboardOperationResultMimeLength(handle)\n const dataLength = this.library.clipboardOperationResultDataLength(handle)\n if (mimeLength.status !== NativeClipboardCopyStatus.Ok || dataLength.status !== NativeClipboardCopyStatus.Ok) {\n return { status: \"failed\", error: new Error(\"Failed to read native clipboard result lengths\") }\n }\n const mime = new Uint8Array(mimeLength.length)\n const bytes = new Uint8Array(dataLength.length)\n if (\n this.library.clipboardOperationResultMimeCopy(handle, mime) !== NativeClipboardCopyStatus.Ok ||\n this.library.clipboardOperationResultDataCopy(handle, bytes) !== NativeClipboardCopyStatus.Ok\n ) {\n return { status: \"failed\", error: new Error(\"Failed to copy native clipboard result\") }\n }\n return { status: \"read\", representation: { mimeType: new TextDecoder().decode(mime), bytes } }\n }\n\n private readError(handle: ClipboardOperationHandle): Error {\n const code = this.library.clipboardOperationResultErrorCode(handle)\n const length = this.library.clipboardOperationResultDiagnosticLength(handle)\n if (code.status !== NativeClipboardCopyStatus.Ok || length.status !== NativeClipboardCopyStatus.Ok) {\n return new Error(\"Native clipboard operation failed without a readable diagnostic\")\n }\n const diagnostic = new Uint8Array(length.length)\n if (this.library.clipboardOperationResultDiagnosticCopy(handle, diagnostic) !== NativeClipboardCopyStatus.Ok) {\n return new Error(\"Native clipboard operation failed without a readable diagnostic\")\n }\n return Object.assign(new Error(new TextDecoder().decode(diagnostic)), { code: code.errorCode })\n }\n\n private async shutdown(): Promise<void> {\n this.clearPollTimer()\n let status = this.library.clipboardServiceBeginShutdown(this.service)\n while (status === NativeClipboardShutdownStatus.Pending) {\n await new Promise<void>((resolve) => setTimeout(resolve, SHUTDOWN_POLL_INTERVAL_MS))\n status = this.library.clipboardServicePollShutdown(this.service)\n }\n if (status !== NativeClipboardShutdownStatus.Ready) throw new Error(\"Native clipboard service became invalid\")\n if (this.library.clipboardServiceDestroy(this.service) !== NativeClipboardDestroyStatus.Destroyed) {\n throw new Error(\"Failed to destroy native clipboard service\")\n }\n }\n}\n\nexport const createNativeHostClipboardBackend: HostClipboardBackendFactory = (options) =>\n new NativeClipboardBackend(\n options.maxImagePixels,\n options.maxConversionBytes,\n options.maxConcurrentOperations,\n options.maxProviderTransfers,\n options.waylandSeat,\n )\n",
53
+ "// OSC 52 clipboard support for terminal applications.\n// Delegates to native Zig implementation for ANSI sequence generation.\n\nimport type { RendererHandle, RenderLib } from \"../zig.js\"\nimport {\n createHostClipboardWithBackend,\n runTrackedOperation,\n validateClipboardText,\n type ActiveClipboardOperation,\n} from \"./host-clipboard.internal.js\"\nimport { createNativeHostClipboardBackend } from \"./host-clipboard.native.js\"\n\nexport interface ClipboardRepresentation {\n // Identifies the content with a canonical, lowercase MIME essence without parameters.\n readonly mimeType: string\n // Contains stable, caller-owned data. The backend does not reuse or change these bytes.\n readonly bytes: Uint8Array\n}\n\nexport type ClipboardSelection = \"clipboard\" | \"primary\"\n\nexport interface ClipboardReadOptions {\n // Lists accepted MIME types in preference order. Include at least one type.\n readonly preferredTypes: readonly [string, ...string[]]\n // Selects the standard clipboard by default. Reads always use the process host.\n readonly selection?: ClipboardSelection\n // Requests cancellation when aborted. A synchronous platform call may finish before cancellation is observed.\n readonly signal?: AbortSignal\n}\n\n// Reports whether a read returned data or why it did not.\nexport type ClipboardReadResult =\n | { readonly status: \"read\"; readonly representation: ClipboardRepresentation }\n | { readonly status: \"empty\" | \"unsupported\" | \"cancelled\" | \"timed-out\" | \"limit-exceeded\" }\n | { readonly status: \"failed\"; readonly error: Error }\n\nexport interface HostClipboardReadOptions {\n // Lists accepted MIME types in preference order. Include at least one type.\n readonly preferredTypes: readonly [string, ...string[]]\n readonly selection: ClipboardSelection\n // Rejects representations larger than this number of bytes.\n readonly maxBytes: number\n readonly timeoutMs: number\n readonly signal: AbortSignal\n}\n\nexport interface HostClipboardWriteOptions {\n readonly selection: ClipboardSelection\n readonly timeoutMs: number\n readonly signal: AbortSignal\n}\n\nexport type HostClipboardWriteResult =\n | { readonly status: \"written\" | \"unsupported\" | \"cancelled\" | \"timed-out\" }\n | { readonly status: \"failed\"; readonly error: Error }\n\n// `cleared` means the platform completed its clear operation. It does not guarantee durable erasure.\nexport type HostClipboardClearResult =\n | { readonly status: \"cleared\" | \"unsupported\" | \"cancelled\" | \"timed-out\" }\n | { readonly status: \"failed\"; readonly error: Error }\n\nexport interface HostClipboardBackend {\n // Returns the first usable representation from `preferredTypes`.\n read(options: HostClipboardReadOptions): Promise<ClipboardReadResult>\n // Writes validated, nonempty text without NUL characters.\n writeText(text: string, options: HostClipboardWriteOptions): Promise<HostClipboardWriteResult>\n // Clears the selection with the platform's clear operation, not an empty-text write.\n clear(options: HostClipboardWriteOptions): Promise<HostClipboardClearResult>\n dispose(): Promise<void>\n}\n\n// Controls whether an operation uses the terminal, the process host, or both.\nexport type ClipboardWriteDestination = \"terminal-only\" | \"host-only\" | \"best-available\" | \"all-available\"\n\nexport interface ClipboardWriteOptions {\n readonly destination: ClipboardWriteDestination\n // Selects the standard clipboard by default.\n readonly selection?: ClipboardSelection\n // Allows a host write when the process runs through a remote terminal session.\n readonly allowRemoteHost?: boolean\n // Requests cancellation when aborted. A synchronous host call may finish before cancellation is observed.\n readonly signal?: AbortSignal\n}\n\nexport interface TerminalClipboardOperationResult {\n // `attempted` only confirms synchronous local dispatch, including for clear operations.\n readonly status: \"attempted\" | \"local-failure\" | \"not-attempted\"\n // Reports OSC 52 support. It does not guarantee support for the requested selection.\n readonly capability: \"supported\" | \"unsupported\" | \"unknown\"\n}\n\nexport interface ClipboardWriteResult {\n readonly host: HostClipboardWriteResult | { readonly status: \"not-attempted\" }\n readonly terminal: TerminalClipboardOperationResult\n}\n\nexport interface ClipboardClearResult {\n readonly host: HostClipboardClearResult | { readonly status: \"not-attempted\" }\n readonly terminal: TerminalClipboardOperationResult\n}\n\nexport interface ClipboardService {\n // Reads the process host clipboard. It cannot read the terminal user's clipboard over SSH.\n read(options: ClipboardReadOptions): Promise<ClipboardReadResult>\n // Rejects empty text and NUL characters before trying any destination.\n writeText(text: string, options: ClipboardWriteOptions): Promise<ClipboardWriteResult>\n // Clears the selected destinations without treating empty text as a clear request.\n clear(options: ClipboardWriteOptions): Promise<ClipboardClearResult>\n // Waits for cooperative cancellation and native resource release; a blocked platform call can delay completion.\n dispose(): Promise<void>\n}\n\nexport interface HostClipboardOperationOptions {\n readonly selection?: ClipboardSelection\n // Requests cancellation; it cannot interrupt a synchronous platform call already in progress.\n readonly signal?: AbortSignal\n}\n\nexport interface HostClipboardService {\n readonly maxWriteBytes: number\n read(options: ClipboardReadOptions): Promise<ClipboardReadResult>\n writeText(text: string, options?: HostClipboardOperationOptions): Promise<HostClipboardWriteResult>\n clear(options?: HostClipboardOperationOptions): Promise<HostClipboardClearResult>\n // Waits for cooperative cancellation and native resource release; a blocked platform call can delay completion.\n dispose(): Promise<void>\n}\n\nexport interface HostClipboardOptions {\n // Cooperative deadline for platform work, not a hard interruption bound for synchronous OS calls.\n readonly timeoutMs?: number\n readonly maxReadBytes?: number\n readonly maxWriteBytes?: number\n readonly maxImagePixels?: number\n readonly maxConversionBytes?: number\n readonly maxConcurrentOperations?: number\n readonly maxProviderTransfers?: number\n readonly waylandSeat?: string\n}\n\nexport interface TerminalClipboardAdapter {\n readonly remote: boolean\n writeText(text: string, selection: ClipboardSelection): TerminalClipboardOperationResult\n clear(selection: ClipboardSelection): TerminalClipboardOperationResult\n}\n\nexport interface ClipboardOptions {\n readonly host: HostClipboardService\n readonly terminal: TerminalClipboardAdapter\n}\n\nconst NOT_ATTEMPTED_TERMINAL: TerminalClipboardOperationResult = {\n status: \"not-attempted\",\n capability: \"unknown\",\n}\n\nconst validateSelection = (selection: ClipboardSelection | undefined): ClipboardSelection => {\n const normalized = selection ?? \"clipboard\"\n if (normalized !== \"clipboard\" && normalized !== \"primary\") {\n throw new TypeError(\"selection must be clipboard or primary\")\n }\n return normalized\n}\n\n// WAYLAND_SOCKET-only launches can create one host service per process because the inherited fd is one-shot.\nexport const createHostClipboard = (options: HostClipboardOptions = {}): HostClipboardService =>\n createHostClipboardWithBackend(options, createNativeHostClipboardBackend)\n\nconst validateDestination = (destination: ClipboardWriteDestination): void => {\n if (\n destination !== \"terminal-only\" &&\n destination !== \"host-only\" &&\n destination !== \"best-available\" &&\n destination !== \"all-available\"\n ) {\n throw new TypeError(\"destination is not a supported clipboard policy\")\n }\n}\n\nexport const createClipboard = ({ host, terminal }: ClipboardOptions): ClipboardService => {\n const active = new Set<ActiveClipboardOperation>()\n let disposed = false\n let disposePromise: Promise<void> | undefined\n\n const assertUsable = (): void => {\n if (disposed) throw new Error(\"Clipboard service is disposed\")\n }\n\n const canUseRemoteHost = (options: ClipboardWriteOptions): boolean =>\n !terminal.remote || options.allowRemoteHost === true\n\n type HostMutationResult = HostClipboardWriteResult | HostClipboardClearResult\n type MutationResult<Result extends HostMutationResult> = {\n readonly host: Result | { readonly status: \"not-attempted\" }\n readonly terminal: TerminalClipboardOperationResult\n }\n\n const composeMutation = async <Result extends HostMutationResult>(\n options: ClipboardWriteOptions,\n signal: AbortSignal,\n hostOperation: () => Promise<Result>,\n terminalOperation: () => TerminalClipboardOperationResult,\n ): Promise<MutationResult<Result>> => {\n if (options.destination === \"terminal-only\") {\n return { host: { status: \"not-attempted\" }, terminal: terminalOperation() }\n }\n if (options.destination === \"host-only\") {\n const hostResult = canUseRemoteHost(options) ? await hostOperation() : { status: \"not-attempted\" as const }\n return { host: hostResult, terminal: NOT_ATTEMPTED_TERMINAL }\n }\n if (options.destination === \"best-available\") {\n if (terminal.remote) {\n return { host: { status: \"not-attempted\" }, terminal: terminalOperation() }\n }\n const hostResult = await hostOperation()\n const terminalResult =\n !signal.aborted && (hostResult.status === \"unsupported\" || hostResult.status === \"failed\")\n ? terminalOperation()\n : NOT_ATTEMPTED_TERMINAL\n return { host: hostResult, terminal: terminalResult }\n }\n const hostPromise = canUseRemoteHost(options)\n ? hostOperation()\n : Promise.resolve({ status: \"not-attempted\" as const })\n const terminalResult = terminalOperation()\n return { host: await hostPromise, terminal: terminalResult }\n }\n return {\n read(options) {\n try {\n assertUsable()\n return host.read(options)\n } catch (error) {\n return Promise.reject(error)\n }\n },\n writeText(text, options) {\n try {\n assertUsable()\n validateDestination(options.destination)\n validateClipboardText(text, host.maxWriteBytes)\n const selection = validateSelection(options.selection)\n if (options.signal?.aborted) {\n return Promise.resolve({ host: { status: \"not-attempted\" }, terminal: NOT_ATTEMPTED_TERMINAL })\n }\n return runTrackedOperation(active, options.signal, (signal) => {\n const operationOptions = { selection, signal }\n return composeMutation(\n options,\n signal,\n () => host.writeText(text, operationOptions),\n () => terminal.writeText(text, selection),\n )\n })\n } catch (error) {\n return Promise.reject(error)\n }\n },\n clear(options) {\n try {\n assertUsable()\n validateDestination(options.destination)\n const selection = validateSelection(options.selection)\n if (options.signal?.aborted) {\n return Promise.resolve({ host: { status: \"not-attempted\" }, terminal: NOT_ATTEMPTED_TERMINAL })\n }\n return runTrackedOperation(active, options.signal, (signal) => {\n const operationOptions = { selection, signal }\n return composeMutation(\n options,\n signal,\n () => host.clear(operationOptions),\n () => terminal.clear(selection),\n )\n })\n } catch (error) {\n return Promise.reject(error)\n }\n },\n dispose() {\n if (disposePromise) return disposePromise\n disposed = true\n for (const operation of active) operation.controller.abort()\n disposePromise = (async () => {\n await Promise.all([...active].map((operation) => operation.settled))\n await host.dispose()\n })()\n return disposePromise\n },\n }\n}\n\nexport enum ClipboardTarget {\n Clipboard = 0,\n Primary = 1,\n Select = 2,\n Secondary = 3,\n}\n\nexport interface RendererClipboardBoundary {\n readonly capabilities: {\n readonly remote: boolean\n readonly osc52_support: \"supported\" | \"unsupported\" | \"unknown\"\n } | null\n copyToClipboardOSC52(text: string, target?: ClipboardTarget): boolean\n clearClipboardOSC52(target?: ClipboardTarget): boolean\n}\n\nexport const createRendererClipboardAdapter = (renderer: RendererClipboardBoundary): TerminalClipboardAdapter => {\n const targetFor = (selection: ClipboardSelection): ClipboardTarget =>\n selection === \"primary\" ? ClipboardTarget.Primary : ClipboardTarget.Clipboard\n const capability = (): TerminalClipboardOperationResult[\"capability\"] =>\n renderer.capabilities?.osc52_support ?? \"unknown\"\n\n return {\n get remote() {\n return renderer.capabilities?.remote ?? true\n },\n writeText(text, selection) {\n const currentCapability = capability()\n if (currentCapability === \"unsupported\") return { status: \"not-attempted\", capability: currentCapability }\n return {\n status: renderer.copyToClipboardOSC52(text, targetFor(selection)) ? \"attempted\" : \"local-failure\",\n capability: currentCapability,\n }\n },\n clear(selection) {\n const currentCapability = capability()\n if (currentCapability === \"unsupported\") return { status: \"not-attempted\", capability: currentCapability }\n return {\n status: renderer.clearClipboardOSC52(targetFor(selection)) ? \"attempted\" : \"local-failure\",\n capability: currentCapability,\n }\n },\n }\n}\n\nexport class Clipboard {\n private lib: RenderLib\n private rendererPtr: RendererHandle\n\n constructor(lib: RenderLib, rendererPtr: RendererHandle) {\n this.lib = lib\n this.rendererPtr = rendererPtr\n }\n\n public copyToClipboardOSC52(text: string, target: ClipboardTarget = ClipboardTarget.Clipboard): boolean {\n if (!this.isOsc52Supported()) {\n return false\n }\n const textUtf8 = this.lib.encoder.encode(text)\n return this.lib.copyToClipboardOSC52(this.rendererPtr, target, textUtf8)\n }\n\n public clearClipboardOSC52(target: ClipboardTarget = ClipboardTarget.Clipboard): boolean {\n if (!this.isOsc52Supported()) {\n return false\n }\n return this.lib.clearClipboardOSC52(this.rendererPtr, target)\n }\n\n public isOsc52Supported(): boolean {\n const caps = this.lib.getTerminalCapabilities(this.rendererPtr)\n return caps?.osc52_support !== \"unsupported\"\n }\n}\n",
52
54
  "import type { TextChunk } from \"../text-buffer.js\"\nimport type { SimpleHighlight } from \"./tree-sitter/types.js\"\n\nconst URL_SCOPES = [\"markup.link.url\", \"string.special.url\"]\n\nexport function detectLinks(\n chunks: TextChunk[],\n context: { content: string; highlights: SimpleHighlight[] },\n): TextChunk[] {\n const content = context.content\n const highlights = context.highlights\n\n const ranges: Array<{ start: number; end: number; url: string }> = []\n\n for (let i = 0; i < highlights.length; i++) {\n const [start, end, group] = highlights[i]\n if (!URL_SCOPES.includes(group)) continue\n\n const url = content.slice(start, end)\n ranges.push({ start, end, url })\n\n for (let j = i - 1; j >= 0; j--) {\n const [labelStart, labelEnd, prev] = highlights[j]\n if (prev === \"markup.link.label\") {\n ranges.push({ start: labelStart, end: labelEnd, url })\n break\n }\n if (!prev.startsWith(\"markup.link\")) break\n }\n }\n\n if (ranges.length === 0) return chunks\n\n // Use content.indexOf to find each chunk's position in the original content.\n // This handles concealed text correctly because concealed chunks are either\n // empty (length 0, skipped) or single-char replacements (length 1, skipped).\n // Non-concealed chunks with length > 1 are exact substrings of content in order.\n let contentPos = 0\n for (const chunk of chunks) {\n if (chunk.text.length <= 1) continue\n\n const idx = content.indexOf(chunk.text, contentPos)\n if (idx < 0) continue\n\n for (const range of ranges) {\n if (idx < range.end && idx + chunk.text.length > range.start) {\n chunk.link = { url: range.url }\n break\n }\n }\n\n contentPos = idx + chunk.text.length\n }\n\n return chunks\n}\n",
53
55
  "import { RGBA } from \"./lib/index.js\"\nimport { resolveRenderLib, type OptimizedBufferHandle, type RenderLib } from \"./zig.js\"\nimport { type Pointer, type PointerInput, toArrayBuffer, toPointer, ptr } from \"./platform/ffi.js\"\nimport type { NativeImage } from \"./image.js\"\nimport type { ImageRenderProtocol } from \"./types.js\"\n\nfunction requireInteger(value: number, name: string, min: number, max: number): void {\n if (!Number.isSafeInteger(value) || value < min || value > max) {\n throw new RangeError(`${name} must be an integer from ${min} to ${max}`)\n }\n}\nimport { type BorderStyle, type BorderSides, BorderCharArrays, parseBorderStyle } from \"./lib/index.js\"\nimport { TargetChannel, type WidthMethod, type CapturedSpan, type CapturedLine } from \"./types.js\"\nimport type { TextBufferView } from \"./text-buffer-view.js\"\nimport type { EditorView } from \"./editor-view.js\"\n\n// Pack drawing options into a single u32\n// bits 0-3: borderSides, bit 4: shouldFill, bits 5-6: titleAlignment, bits 7-8: bottomTitleAlignment\nfunction packDrawOptions(\n border: boolean | BorderSides[],\n shouldFill: boolean,\n titleAlignment: \"left\" | \"center\" | \"right\",\n bottomTitleAlignment: \"left\" | \"center\" | \"right\",\n): number {\n let packed = 0\n\n if (border === true) {\n packed |= 0b1111 // All sides\n } else if (Array.isArray(border)) {\n if (border.includes(\"top\")) packed |= 0b1000\n if (border.includes(\"right\")) packed |= 0b0100\n if (border.includes(\"bottom\")) packed |= 0b0010\n if (border.includes(\"left\")) packed |= 0b0001\n }\n\n if (shouldFill) {\n packed |= 1 << 4\n }\n\n const alignmentMap: Record<string, number> = {\n left: 0,\n center: 1,\n right: 2,\n }\n const alignment = alignmentMap[titleAlignment]\n const bottomAlignment = alignmentMap[bottomTitleAlignment]\n\n packed |= alignment << 5\n packed |= bottomAlignment << 7\n\n return packed\n}\n\nexport class OptimizedBuffer {\n private static fbIdCounter = 0\n public id: string\n public lib: RenderLib\n private bufferPtr: OptimizedBufferHandle\n private _width: number\n private _height: number\n private _widthMethod: WidthMethod\n public respectAlpha: boolean = false\n private _rawBuffers: {\n char: Uint32Array\n fg: Uint16Array\n bg: Uint16Array\n attributes: Uint32Array\n } | null = null\n private _destroyed: boolean = false\n\n get ptr(): OptimizedBufferHandle {\n return this.bufferPtr\n }\n\n // Fail loud and clear\n // Instead of trying to return values that could work or not,\n // this at least will show a stack trace to know where the call to a destroyed Buffer was made\n private guard(): void {\n if (this._destroyed) throw new Error(`Buffer ${this.id} is destroyed`)\n }\n\n private ensureRawBufferViews(): void {\n if (this._rawBuffers !== null) {\n return\n }\n\n const size = this._width * this._height\n const charPtr = this.lib.bufferGetCharPtr(this.bufferPtr)\n const fgPtr = this.lib.bufferGetFgPtr(this.bufferPtr)\n const bgPtr = this.lib.bufferGetBgPtr(this.bufferPtr)\n const attributesPtr = this.lib.bufferGetAttributesPtr(this.bufferPtr)\n\n this._rawBuffers = {\n char: new Uint32Array(toArrayBuffer(charPtr, 0, size * 4)),\n fg: new Uint16Array(toArrayBuffer(fgPtr, 0, size * 4 * 2)),\n bg: new Uint16Array(toArrayBuffer(bgPtr, 0, size * 4 * 2)),\n attributes: new Uint32Array(toArrayBuffer(attributesPtr, 0, size * 4)),\n }\n }\n\n get buffers(): {\n char: Uint32Array\n fg: Uint16Array\n bg: Uint16Array\n attributes: Uint32Array\n } {\n this.guard()\n this.ensureRawBufferViews()\n return this._rawBuffers!\n }\n\n constructor(\n lib: RenderLib,\n ptr: OptimizedBufferHandle,\n width: number,\n height: number,\n options: { respectAlpha?: boolean; id?: string; widthMethod?: WidthMethod },\n ) {\n this.id = options.id || `fb_${OptimizedBuffer.fbIdCounter++}`\n this.lib = lib\n this.respectAlpha = options.respectAlpha || false\n this._width = width\n this._height = height\n this._widthMethod = options.widthMethod || \"unicode\"\n this.bufferPtr = ptr\n }\n\n static create(\n width: number,\n height: number,\n widthMethod: WidthMethod,\n options: { respectAlpha?: boolean; id?: string } = {},\n ): OptimizedBuffer {\n const lib = resolveRenderLib()\n const respectAlpha = options.respectAlpha || false\n const id = options.id && options.id.trim() !== \"\" ? options.id : \"unnamed buffer\"\n const buffer = lib.createOptimizedBuffer(width, height, widthMethod, respectAlpha, id)\n return buffer\n }\n\n public get widthMethod(): WidthMethod {\n return this._widthMethod\n }\n\n public get width(): number {\n return this._width\n }\n\n public get height(): number {\n return this._height\n }\n\n public setRespectAlpha(respectAlpha: boolean): void {\n this.guard()\n this.lib.bufferSetRespectAlpha(this.bufferPtr, respectAlpha)\n this.respectAlpha = respectAlpha\n }\n\n public getNativeId(): string {\n this.guard()\n return this.lib.bufferGetId(this.bufferPtr)\n }\n\n public getRealCharBytes(addLineBreaks: boolean = false): Uint8Array {\n this.guard()\n const realSize = this.lib.bufferGetRealCharSize(this.bufferPtr)\n const outputBuffer = new Uint8Array(realSize)\n const bytesWritten = this.lib.bufferWriteResolvedChars(this.bufferPtr, outputBuffer, addLineBreaks)\n return outputBuffer.slice(0, bytesWritten)\n }\n\n public getSpanLines(): CapturedLine[] {\n this.guard()\n const { char, fg, bg, attributes } = this.buffers\n const lines: CapturedLine[] = []\n\n const CHAR_FLAG_CONTINUATION = 0xc0000000 | 0\n const CHAR_FLAG_MASK = 0xc0000000 | 0\n\n const realTextBytes = this.getRealCharBytes(true)\n const realTextLines = new TextDecoder().decode(realTextBytes).split(\"\\n\")\n\n for (let y = 0; y < this._height; y++) {\n const spans: CapturedSpan[] = []\n let currentSpan: CapturedSpan | null = null\n\n const lineChars = [...(realTextLines[y] || \"\")]\n let charIdx = 0\n\n for (let x = 0; x < this._width; x++) {\n const i = y * this._width + x\n const cp = char[i]\n const cellFg = RGBA.fromArray(fg.slice(i * 4, i * 4 + 4))\n const cellBg = RGBA.fromArray(bg.slice(i * 4, i * 4 + 4))\n const cellAttrs = attributes[i] & 0xff\n\n // Continuation cells are placeholders for wide characters (emojis, CJK)\n const isContinuation = (cp & CHAR_FLAG_MASK) === CHAR_FLAG_CONTINUATION\n const cellChar = isContinuation ? \"\" : (lineChars[charIdx++] ?? \" \")\n\n // Check if this cell continues the current span\n if (\n currentSpan &&\n currentSpan.fg.equals(cellFg) &&\n currentSpan.bg.equals(cellBg) &&\n currentSpan.attributes === cellAttrs\n ) {\n currentSpan.text += cellChar\n currentSpan.width += 1\n } else {\n // Start a new span\n if (currentSpan) {\n spans.push(currentSpan)\n }\n currentSpan = {\n text: cellChar,\n fg: cellFg,\n bg: cellBg,\n attributes: cellAttrs,\n width: 1,\n }\n }\n }\n\n // Push the last span\n if (currentSpan) {\n spans.push(currentSpan)\n }\n\n lines.push({ spans })\n }\n\n return lines\n }\n\n public clear(bg: RGBA = RGBA.fromValues(0, 0, 0, 1)): void {\n this.guard()\n this.lib.bufferClear(this.bufferPtr, bg)\n }\n\n public setCell(x: number, y: number, char: string, fg: RGBA, bg: RGBA, attributes: number = 0): void {\n this.guard()\n this.lib.bufferSetCell(this.bufferPtr, x, y, char, fg, bg, attributes)\n }\n\n public setCellWithAlphaBlending(\n x: number,\n y: number,\n char: string,\n fg: RGBA,\n bg: RGBA,\n attributes: number = 0,\n ): void {\n this.guard()\n this.lib.bufferSetCellWithAlphaBlending(this.bufferPtr, x, y, char, fg, bg, attributes)\n }\n\n public drawText(\n text: string,\n x: number,\n y: number,\n fg: RGBA,\n bg?: RGBA,\n attributes: number = 0,\n selection?: { start: number; end: number; bgColor?: RGBA; fgColor?: RGBA } | null,\n ): void {\n this.guard()\n if (!selection) {\n this.lib.bufferDrawText(this.bufferPtr, text, x, y, fg, bg, attributes)\n return\n }\n\n const { start, end } = selection\n\n let selectionBg: RGBA\n let selectionFg: RGBA\n\n if (selection.bgColor) {\n selectionBg = selection.bgColor\n selectionFg = selection.fgColor || fg\n } else {\n const defaultBg = bg || RGBA.fromValues(0, 0, 0, 0)\n selectionFg = defaultBg.a > 0 ? defaultBg : RGBA.fromValues(0, 0, 0, 1)\n selectionBg = fg\n }\n\n if (start > 0) {\n const beforeText = text.slice(0, start)\n this.lib.bufferDrawText(this.bufferPtr, beforeText, x, y, fg, bg, attributes)\n }\n\n if (end > start) {\n const selectedText = text.slice(start, end)\n this.lib.bufferDrawText(this.bufferPtr, selectedText, x + start, y, selectionFg, selectionBg, attributes)\n }\n\n if (end < text.length) {\n const afterText = text.slice(end)\n this.lib.bufferDrawText(this.bufferPtr, afterText, x + end, y, fg, bg, attributes)\n }\n }\n\n public fillRect(x: number, y: number, width: number, height: number, bg: RGBA): void {\n this.guard()\n this.lib.bufferFillRect(this.bufferPtr, x, y, width, height, bg)\n }\n\n public colorMatrix(\n matrix: Float32Array,\n cellMask: Float32Array,\n strength: number = 1.0,\n target: TargetChannel = TargetChannel.Both,\n ): void {\n this.guard()\n if (matrix.length !== 16) throw new RangeError(`colorMatrix matrix must have length 16, got ${matrix.length}`)\n const cellMaskCount = Math.floor(cellMask.length / 3)\n this.lib.bufferColorMatrix(this.bufferPtr, ptr(matrix), ptr(cellMask), cellMaskCount, strength, target)\n }\n\n public colorMatrixUniform(\n matrix: Float32Array,\n strength: number = 1.0,\n target: TargetChannel = TargetChannel.Both,\n ): void {\n this.guard()\n if (matrix.length !== 16)\n throw new RangeError(`colorMatrixUniform matrix must have length 16, got ${matrix.length}`)\n if (strength === 0.0) return\n this.lib.bufferColorMatrixUniform(this.bufferPtr, ptr(matrix), strength, target)\n }\n\n public drawFrameBuffer(\n destX: number,\n destY: number,\n frameBuffer: OptimizedBuffer,\n sourceX?: number,\n sourceY?: number,\n sourceWidth?: number,\n sourceHeight?: number,\n ): void {\n this.guard()\n this.lib.drawFrameBuffer(this.bufferPtr, destX, destY, frameBuffer.ptr, sourceX, sourceY, sourceWidth, sourceHeight)\n }\n\n public destroy(): void {\n if (this._destroyed) return\n this._destroyed = true\n // Cached typed arrays alias native memory and are invalid after destroy.\n this._rawBuffers = null\n this.lib.destroyOptimizedBuffer(this.bufferPtr)\n }\n\n public drawTextBuffer(textBufferView: TextBufferView, x: number, y: number): void {\n this.guard()\n this.lib.bufferDrawTextBufferView(this.bufferPtr, textBufferView.ptr, x, y)\n }\n\n public drawEditorView(editorView: EditorView, x: number, y: number): void {\n this.guard()\n this.lib.bufferDrawEditorView(this.bufferPtr, editorView.ptr, x, y)\n }\n\n public drawSuperSampleBuffer(\n x: number,\n y: number,\n pixelDataPtr: PointerInput,\n pixelDataLength: number,\n format: \"bgra8unorm\" | \"rgba8unorm\",\n alignedBytesPerRow: number,\n ): void {\n this.guard()\n this.lib.bufferDrawSuperSampleBuffer(\n this.bufferPtr,\n x,\n y,\n toPointer(pixelDataPtr),\n pixelDataLength,\n format,\n alignedBytesPerRow,\n )\n }\n\n public drawImage(\n image: NativeImage,\n x: number,\n y: number,\n width: number,\n height: number,\n pixelWidth: number = 0,\n pixelHeight: number = 0,\n sourceX: number = 0,\n sourceY: number = 0,\n sourceWidth: number = image.width,\n sourceHeight: number = image.height,\n protocol: ImageRenderProtocol = \"auto\",\n ): boolean {\n this.guard()\n requireInteger(x, \"x\", -0x80000000, 0x7fffffff)\n requireInteger(y, \"y\", -0x80000000, 0x7fffffff)\n requireInteger(width, \"width\", 1, 0x7fffffff)\n requireInteger(height, \"height\", 1, 0x7fffffff)\n requireInteger(pixelWidth, \"pixelWidth\", 0, 0x7fffffff)\n requireInteger(pixelHeight, \"pixelHeight\", 0, 0x7fffffff)\n requireInteger(sourceX, \"sourceX\", 0, 0xffffffff)\n requireInteger(sourceY, \"sourceY\", 0, 0xffffffff)\n requireInteger(sourceWidth, \"sourceWidth\", 1, 0xffffffff)\n requireInteger(sourceHeight, \"sourceHeight\", 1, 0xffffffff)\n if (x + width > 0x7fffffff || y + height > 0x7fffffff) {\n throw new RangeError(\"image destination coordinates and dimensions exceed i32 bounds\")\n }\n return this.lib.bufferDrawImage(\n this.bufferPtr,\n image.ptr,\n x,\n y,\n width,\n height,\n pixelWidth,\n pixelHeight,\n sourceX,\n sourceY,\n sourceWidth,\n sourceHeight,\n protocol,\n )\n }\n\n public drawPackedBuffer(\n dataPtr: PointerInput,\n dataLen: number,\n posX: number,\n posY: number,\n terminalWidthCells: number,\n terminalHeightCells: number,\n ): void {\n this.guard()\n this.lib.bufferDrawPackedBuffer(\n this.bufferPtr,\n toPointer(dataPtr),\n dataLen,\n posX,\n posY,\n terminalWidthCells,\n terminalHeightCells,\n )\n }\n\n public drawGrayscaleBuffer(\n posX: number,\n posY: number,\n intensities: Float32Array,\n srcWidth: number,\n srcHeight: number,\n fg: RGBA | null = null,\n bg: RGBA | null = null,\n ): void {\n this.guard()\n this.lib.bufferDrawGrayscaleBuffer(this.bufferPtr, posX, posY, ptr(intensities), srcWidth, srcHeight, fg, bg)\n }\n\n public drawGrayscaleBufferSupersampled(\n posX: number,\n posY: number,\n intensities: Float32Array,\n srcWidth: number,\n srcHeight: number,\n fg: RGBA | null = null,\n bg: RGBA | null = null,\n ): void {\n this.guard()\n this.lib.bufferDrawGrayscaleBufferSupersampled(\n this.bufferPtr,\n posX,\n posY,\n ptr(intensities),\n srcWidth,\n srcHeight,\n fg,\n bg,\n )\n }\n\n public resize(width: number, height: number): void {\n this.guard()\n if (this._width === width && this._height === height) return\n\n this._width = width\n this._height = height\n this._rawBuffers = null\n\n this.lib.bufferResize(this.bufferPtr, width, height)\n }\n\n public drawBox(options: {\n x: number\n y: number\n width: number\n height: number\n borderStyle?: BorderStyle\n customBorderChars?: Uint32Array\n border: boolean | BorderSides[]\n borderColor: RGBA\n backgroundColor: RGBA\n shouldFill?: boolean\n title?: string\n titleColor?: RGBA\n titleAlignment?: \"left\" | \"center\" | \"right\"\n bottomTitle?: string\n bottomTitleAlignment?: \"left\" | \"center\" | \"right\"\n }): void {\n this.guard()\n const style = parseBorderStyle(options.borderStyle, \"single\")\n const borderChars: Uint32Array = options.customBorderChars ?? BorderCharArrays[style]\n\n const packedOptions = packDrawOptions(\n options.border,\n options.shouldFill ?? false,\n options.titleAlignment || \"left\",\n options.bottomTitleAlignment || \"left\",\n )\n\n this.lib.bufferDrawBox(\n this.bufferPtr,\n options.x,\n options.y,\n options.width,\n options.height,\n borderChars,\n packedOptions,\n options.borderColor,\n options.backgroundColor,\n options.titleColor ?? options.borderColor,\n options.title ?? null,\n options.bottomTitle ?? null,\n )\n }\n\n public pushScissorRect(x: number, y: number, width: number, height: number): void {\n this.guard()\n this.lib.bufferPushScissorRect(this.bufferPtr, x, y, width, height)\n }\n\n public popScissorRect(): void {\n this.guard()\n this.lib.bufferPopScissorRect(this.bufferPtr)\n }\n\n public clearScissorRects(): void {\n this.guard()\n this.lib.bufferClearScissorRects(this.bufferPtr)\n }\n\n public pushOpacity(opacity: number): void {\n this.guard()\n this.lib.bufferPushOpacity(this.bufferPtr, Math.max(0, Math.min(1, opacity)))\n }\n\n public popOpacity(): void {\n this.guard()\n this.lib.bufferPopOpacity(this.bufferPtr)\n }\n\n public getCurrentOpacity(): number {\n this.guard()\n return this.lib.bufferGetCurrentOpacity(this.bufferPtr)\n }\n\n public clearOpacity(): void {\n this.guard()\n this.lib.bufferClearOpacity(this.bufferPtr)\n }\n\n public encodeUnicode(text: string): { ptr: Pointer; data: Array<{ width: number; char: number }> } | null {\n this.guard()\n return this.lib.encodeUnicode(text, this._widthMethod)\n }\n\n public freeUnicode(encoded: { ptr: Pointer; data: Array<{ width: number; char: number }> }): void {\n this.guard()\n this.lib.freeUnicode(encoded)\n }\n\n public drawGrid(options: {\n borderChars: Uint32Array\n borderFg: RGBA\n borderBg: RGBA\n columnOffsets: Int32Array\n rowOffsets: Int32Array\n drawInner: boolean\n drawOuter: boolean\n }): void {\n this.guard()\n\n const columnCount = Math.max(0, options.columnOffsets.length - 1)\n const rowCount = Math.max(0, options.rowOffsets.length - 1)\n\n this.lib.bufferDrawGrid(\n this.bufferPtr,\n options.borderChars,\n options.borderFg,\n options.borderBg,\n options.columnOffsets,\n columnCount,\n options.rowOffsets,\n rowCount,\n {\n drawInner: options.drawInner,\n drawOuter: options.drawOuter,\n },\n )\n }\n\n public drawChar(char: number, x: number, y: number, fg: RGBA, bg: RGBA, attributes: number = 0): void {\n this.guard()\n this.lib.bufferDrawChar(this.bufferPtr, char, x, y, fg, bg, attributes)\n }\n}\n",
54
56
  "import type { StyledText } from \"./lib/styled-text.js\"\nimport { RGBA } from \"./lib/RGBA.js\"\nimport { resolveRenderLib, type LineInfo, type RenderLib, type TextBufferHandle } from \"./zig.js\"\nimport { type WidthMethod, type Highlight } from \"./types.js\"\nimport type { SyntaxStyle } from \"./syntax-style.js\"\n\nexport interface TextChunk {\n __isChunk: true\n text: string\n fg?: RGBA\n bg?: RGBA\n attributes?: number\n link?: { url: string }\n}\n\nexport class TextBuffer {\n private lib: RenderLib\n private bufferPtr: TextBufferHandle\n private _length: number = 0\n private _byteSize: number = 0\n private _lineInfo?: LineInfo\n private _destroyed: boolean = false\n private _syntaxStyle?: SyntaxStyle\n private _textBytes?: Uint8Array\n private _memId?: number\n private _appendedChunks: Uint8Array[] = []\n\n constructor(lib: RenderLib, ptr: TextBufferHandle) {\n this.lib = lib\n this.bufferPtr = ptr\n }\n\n static create(widthMethod: WidthMethod): TextBuffer {\n const lib = resolveRenderLib()\n return lib.createTextBuffer(widthMethod)\n }\n\n // Fail loud and clear\n // Instead of trying to return values that could work or not,\n // this at least will show a stack trace to know where the call to a destroyed TextBuffer was made\n private guard(): void {\n if (this._destroyed) throw new Error(\"TextBuffer is destroyed\")\n }\n\n public setText(text: string): void {\n this.guard()\n this._textBytes = this.lib.encoder.encode(text)\n\n if (this._memId === undefined) {\n this._memId = this.lib.textBufferRegisterMemBuffer(this.bufferPtr, this._textBytes, false)\n } else if (!this.lib.textBufferReplaceMemBuffer(this.bufferPtr, this._memId, this._textBytes, false)) {\n this._memId = this.lib.textBufferRegisterMemBuffer(this.bufferPtr, this._textBytes, false)\n }\n\n this.lib.textBufferSetTextFromMem(this.bufferPtr, this._memId)\n this._length = this.lib.textBufferGetLength(this.bufferPtr)\n this._byteSize = this.lib.textBufferGetByteSize(this.bufferPtr)\n this._lineInfo = undefined\n this._appendedChunks = [] // Clear any previously appended chunks\n }\n\n public append(text: string): void {\n this.guard()\n const textBytes = this.lib.encoder.encode(text)\n // Keep the bytes alive to prevent garbage collection\n this._appendedChunks.push(textBytes)\n this.lib.textBufferAppend(this.bufferPtr, textBytes)\n this._length = this.lib.textBufferGetLength(this.bufferPtr)\n this._byteSize = this.lib.textBufferGetByteSize(this.bufferPtr)\n this._lineInfo = undefined\n }\n\n public loadFile(path: string): void {\n this.guard()\n const success = this.lib.textBufferLoadFile(this.bufferPtr, path)\n if (!success) {\n throw new Error(`Failed to load file: ${path}`)\n }\n this._length = this.lib.textBufferGetLength(this.bufferPtr)\n this._byteSize = this.lib.textBufferGetByteSize(this.bufferPtr)\n this._lineInfo = undefined\n this._textBytes = undefined\n }\n\n public setStyledText(text: StyledText): void {\n this.guard()\n\n this.lib.textBufferSetStyledText(this.bufferPtr, text.chunks)\n\n this._length = this.lib.textBufferGetLength(this.bufferPtr)\n this._byteSize = this.lib.textBufferGetByteSize(this.bufferPtr)\n this._lineInfo = undefined\n }\n\n public setDefaultFg(fg: RGBA | null): void {\n this.guard()\n this.lib.textBufferSetDefaultFg(this.bufferPtr, fg)\n }\n\n public setDefaultBg(bg: RGBA | null): void {\n this.guard()\n this.lib.textBufferSetDefaultBg(this.bufferPtr, bg)\n }\n\n public setDefaultAttributes(attributes: number | null): void {\n this.guard()\n this.lib.textBufferSetDefaultAttributes(this.bufferPtr, attributes)\n }\n\n public resetDefaults(): void {\n this.guard()\n this.lib.textBufferResetDefaults(this.bufferPtr)\n }\n\n public getLineCount(): number {\n this.guard()\n return this.lib.textBufferGetLineCount(this.bufferPtr)\n }\n\n public get length(): number {\n this.guard()\n return this._length\n }\n\n public get byteSize(): number {\n this.guard()\n return this._byteSize\n }\n\n public get ptr(): TextBufferHandle {\n this.guard()\n return this.bufferPtr\n }\n\n public getPlainText(): string {\n this.guard()\n if (this._byteSize === 0) return \"\"\n // Use byteSize for accurate buffer allocation (includes newlines in byte count)\n const plainBytes = this.lib.getPlainTextBytes(this.bufferPtr, this._byteSize)\n\n if (!plainBytes) return \"\"\n\n return this.lib.decoder.decode(plainBytes)\n }\n\n public getTextRange(startOffset: number, endOffset: number): string {\n this.guard()\n if (startOffset >= endOffset) return \"\"\n if (this._byteSize === 0) return \"\"\n\n const rangeBytes = this.lib.textBufferGetTextRange(this.bufferPtr, startOffset, endOffset, this._byteSize)\n\n if (!rangeBytes) return \"\"\n\n return this.lib.decoder.decode(rangeBytes)\n }\n\n /**\n * Add a highlight using character offsets into the full text.\n * start/end in highlight represent absolute character positions.\n */\n public addHighlightByCharRange(highlight: Highlight): void {\n this.guard()\n this.lib.textBufferAddHighlightByCharRange(this.bufferPtr, highlight)\n }\n\n /**\n * Add a highlight to a specific line by column positions.\n * start/end in highlight represent column offsets.\n */\n public addHighlight(lineIdx: number, highlight: Highlight): void {\n this.guard()\n this.lib.textBufferAddHighlight(this.bufferPtr, lineIdx, highlight)\n }\n\n public removeHighlightsByRef(hlRef: number): void {\n this.guard()\n this.lib.textBufferRemoveHighlightsByRef(this.bufferPtr, hlRef)\n }\n\n public clearLineHighlights(lineIdx: number): void {\n this.guard()\n this.lib.textBufferClearLineHighlights(this.bufferPtr, lineIdx)\n }\n\n public clearAllHighlights(): void {\n this.guard()\n this.lib.textBufferClearAllHighlights(this.bufferPtr)\n }\n\n public getLineHighlights(lineIdx: number): Array<Highlight> {\n this.guard()\n return this.lib.textBufferGetLineHighlights(this.bufferPtr, lineIdx)\n }\n\n public getHighlightCount(): number {\n this.guard()\n return this.lib.textBufferGetHighlightCount(this.bufferPtr)\n }\n\n public setSyntaxStyle(style: SyntaxStyle | null): void {\n this.guard()\n if (this.lib.textBufferSetSyntaxStyle(this.bufferPtr, style?.ptr ?? null)) {\n this._syntaxStyle = style ?? undefined\n }\n }\n\n public getSyntaxStyle(): SyntaxStyle | null {\n this.guard()\n return this._syntaxStyle ?? null\n }\n\n public setTabWidth(width: number): void {\n this.guard()\n this.lib.textBufferSetTabWidth(this.bufferPtr, width)\n }\n\n public getTabWidth(): number {\n this.guard()\n return this.lib.textBufferGetTabWidth(this.bufferPtr)\n }\n\n public clear(): void {\n this.guard()\n this.lib.textBufferClear(this.bufferPtr)\n this._length = 0\n this._byteSize = 0\n this._lineInfo = undefined\n this._textBytes = undefined\n this._appendedChunks = []\n // Note: _memId is NOT cleared - it can be reused for next setText\n }\n\n public reset(): void {\n this.guard()\n this.lib.textBufferReset(this.bufferPtr)\n this._length = 0\n this._byteSize = 0\n this._lineInfo = undefined\n this._textBytes = undefined\n this._memId = undefined // Reset clears the registry, so clear our ID\n this._appendedChunks = []\n }\n\n public destroy(): void {\n if (this._destroyed) return\n this._destroyed = true\n this.lib.destroyTextBuffer(this.bufferPtr)\n }\n}\n",
@@ -56,7 +58,7 @@
56
58
  "import { defineStruct, defineEnum } from \"bun-ffi-structs\"\nimport { toArrayBuffer, type Pointer } from \"./platform/ffi.js\"\nimport { RGBA, normalizeColorValue } from \"./lib/RGBA.js\"\n\n// Returns the owning Uint16Array so bun-ffi-structs serializes the address and\n// retains the color buffer with the packed struct (requires bun-ffi-structs >= 0.2.4).\n// Returning a raw pointer here would leave the color memory ownerless.\nconst rgbaPackTransform = (rgba?: RGBA) => rgba?.buffer ?? null\nconst rgbaUnpackTransform = (ptr?: Pointer) =>\n ptr ? RGBA.fromArray(new Uint16Array(toArrayBuffer(ptr, 0, 8))) : undefined\n\ntype StyledChunkInput = {\n text: string\n fg?: RGBA | null\n bg?: RGBA | null\n attributes?: number | null\n link?: { url: string } | string | null\n}\n\nexport const StyledChunkStruct = defineStruct(\n [\n [\"text\", \"char*\"],\n [\"text_len\", \"u64\", { lengthOf: \"text\" }],\n [\n \"fg\",\n \"pointer\",\n {\n optional: true,\n packTransform: rgbaPackTransform,\n unpackTransform: rgbaUnpackTransform,\n },\n ],\n [\n \"bg\",\n \"pointer\",\n {\n optional: true,\n packTransform: rgbaPackTransform,\n unpackTransform: rgbaUnpackTransform,\n },\n ],\n [\"attributes\", \"u32\", { default: 0 }],\n [\"link\", \"char*\", { default: \"\" }],\n [\"link_len\", \"u64\", { lengthOf: \"link\" }],\n ],\n {\n mapValue: (chunk: StyledChunkInput): StyledChunkInput => {\n const normalizedFg = normalizeColorValue(chunk.fg ?? null)\n const normalizedBg = normalizeColorValue(chunk.bg ?? null)\n\n if (!chunk.link || typeof chunk.link === \"string\") {\n return {\n ...chunk,\n fg: normalizedFg?.rgba ?? null,\n bg: normalizedBg?.rgba ?? null,\n }\n }\n\n return {\n ...chunk,\n fg: normalizedFg?.rgba ?? null,\n bg: normalizedBg?.rgba ?? null,\n link: chunk.link.url,\n }\n },\n },\n)\n\nexport const HighlightStruct = defineStruct([\n [\"start\", \"u32\"],\n [\"end\", \"u32\"],\n [\"styleId\", \"u32\"],\n [\"priority\", \"u8\", { default: 0 }],\n [\"hlRef\", \"u16\", { default: 0 }],\n])\n\nexport const LogicalCursorStruct = defineStruct([\n [\"row\", \"u32\"],\n [\"col\", \"u32\"],\n [\"offset\", \"u32\"],\n])\n\nexport const VisualCursorStruct = defineStruct([\n [\"visualRow\", \"u32\"],\n [\"visualCol\", \"u32\"],\n [\"logicalRow\", \"u32\"],\n [\"logicalCol\", \"u32\"],\n [\"offset\", \"u32\"],\n])\n\nconst UnicodeMethodEnum = defineEnum({ wcwidth: 0, unicode: 1 }, \"u8\")\nconst TerminalMultiplexerEnum = defineEnum({ none: 0, tmux: 1, zellij: 2, screen: 3, unknown: 4 }, \"u8\")\nconst Osc52SupportEnum = defineEnum({ unknown: 0, supported: 1, unsupported: 2 }, \"u8\")\nconst ImageProtocolEnum = defineEnum({ auto: 0, kitty: 1, sixel: 2, blocks: 3 }, \"u8\")\n\nexport const TerminalCapabilitiesStruct = defineStruct([\n [\"kitty_keyboard\", \"bool_u8\"],\n [\"kitty_graphics\", \"bool_u8\"],\n [\"rgb\", \"bool_u8\"],\n [\"ansi256\", \"bool_u8\"],\n [\"unicode\", UnicodeMethodEnum],\n [\"sgr_pixels\", \"bool_u8\"],\n [\"color_scheme_updates\", \"bool_u8\"],\n [\"explicit_width\", \"bool_u8\"],\n [\"scaled_text\", \"bool_u8\"],\n [\"sixel\", \"bool_u8\"],\n [\"focus_tracking\", \"bool_u8\"],\n [\"sync\", \"bool_u8\"],\n [\"bracketed_paste\", \"bool_u8\"],\n [\"hyperlinks\", \"bool_u8\"],\n [\"osc52\", \"bool_u8\"],\n [\"notifications\", \"bool_u8\"],\n [\"explicit_cursor_positioning\", \"bool_u8\"],\n [\"remote\", \"bool_u8\"],\n [\"multiplexer\", TerminalMultiplexerEnum],\n [\"image_protocol\", ImageProtocolEnum],\n [\"term_name\", \"char*\"],\n [\"term_name_len\", \"u64\", { lengthOf: \"term_name\" }],\n [\"term_version\", \"char*\"],\n [\"term_version_len\", \"u64\", { lengthOf: \"term_version\" }],\n [\"term_from_xtversion\", \"bool_u8\"],\n [\"osc52_support\", Osc52SupportEnum],\n])\n\nexport const EncodedCharStruct = defineStruct([\n [\"width\", \"u8\"],\n [\"char\", \"u32\"],\n])\n\nexport interface NativeImageInfo {\n width: number\n height: number\n sourceWidth: number\n sourceHeight: number\n format: number\n colorStatus: number\n orientation: number\n hasAlpha: number\n}\n\nexport const NativeImageInfoStruct = defineStruct([\n [\"width\", \"u32\"],\n [\"height\", \"u32\"],\n [\"sourceWidth\", \"u32\"],\n [\"sourceHeight\", \"u32\"],\n [\"format\", \"u32\"],\n [\"colorStatus\", \"u32\"],\n [\"orientation\", \"u32\"],\n [\"hasAlpha\", \"u32\"],\n])\n\nexport const ImageDrawOptionsStruct = defineStruct([\n [\"x\", \"i32\"],\n [\"y\", \"i32\"],\n [\"width\", \"u32\"],\n [\"height\", \"u32\"],\n [\"pixelWidth\", \"u32\"],\n [\"pixelHeight\", \"u32\"],\n [\"sourceX\", \"u32\"],\n [\"sourceY\", \"u32\"],\n [\"sourceWidth\", \"u32\"],\n [\"sourceHeight\", \"u32\"],\n [\"protocol\", \"u32\"],\n])\n\nexport const LineInfoStruct = defineStruct([\n [\"startCols\", [\"u32\"]],\n [\"startColsLen\", \"u32\", { lengthOf: \"startCols\" }],\n [\"widthCols\", [\"u32\"]],\n [\"widthColsLen\", \"u32\", { lengthOf: \"widthCols\" }],\n [\"sources\", [\"u32\"]],\n [\"sourcesLen\", \"u32\", { lengthOf: \"sources\" }],\n [\"wraps\", [\"u32\"]],\n [\"wrapsLen\", \"u32\", { lengthOf: \"wraps\" }],\n [\"widthColsMax\", \"u32\"],\n])\n\nexport const MeasureResultStruct = defineStruct([\n [\"lineCount\", \"u32\"],\n [\"widthColsMax\", \"u32\"],\n])\n\nexport const CursorStateStruct = defineStruct([\n [\"x\", \"u32\"],\n [\"y\", \"u32\"],\n [\"visible\", \"bool_u8\"],\n [\"style\", \"u8\"],\n [\"blinking\", \"bool_u8\"],\n [\"r\", \"f32\"],\n [\"g\", \"f32\"],\n [\"b\", \"f32\"],\n [\"a\", \"f32\"],\n])\n\nexport const CursorStyleOptionsStruct = defineStruct([\n [\"style\", \"u8\", { default: 255 }],\n [\"blinking\", \"u8\", { default: 255 }],\n [\n \"color\",\n \"pointer\",\n {\n optional: true,\n packTransform: rgbaPackTransform,\n unpackTransform: rgbaUnpackTransform,\n },\n ],\n [\"cursor\", \"u8\", { default: 255 }],\n])\n\nexport const GridDrawOptionsStruct = defineStruct([\n [\"drawInner\", \"bool_u8\", { default: true }],\n [\"drawOuter\", \"bool_u8\", { default: true }],\n])\n\nexport type BuildOptions = {\n gpaSafeStats: boolean\n gpaMemoryLimitTracking: boolean\n}\n\nexport const BuildOptionsStruct = defineStruct([\n [\"gpaSafeStats\", \"bool_u8\"],\n [\"gpaMemoryLimitTracking\", \"bool_u8\"],\n])\n\nexport type AllocatorStats = {\n totalRequestedBytes: number\n activeAllocations: number\n smallAllocations: number\n largeAllocations: number\n requestedBytesValid: boolean\n}\n\nexport const AllocatorStatsStruct = defineStruct([\n [\"totalRequestedBytes\", \"u64\"],\n [\"activeAllocations\", \"u64\"],\n [\"smallAllocations\", \"u64\"],\n [\"largeAllocations\", \"u64\"],\n [\"requestedBytesValid\", \"bool_u8\"],\n])\n\nexport type NativeRenderStats = {\n nativeLastFrameTime: number\n nativeAverageFrameTime: number\n nativeFrameCount: number\n cellsUpdated: number\n averageCellsUpdated: number\n nativeRenderTime?: number\n nativeStdoutWriteTime?: number\n}\n\nexport const NativeRenderStatsStruct = defineStruct([\n [\"lastFrameTime\", \"f64\"],\n [\"averageFrameTime\", \"f64\"],\n [\"renderTime\", \"f64\"],\n [\"stdoutWriteTime\", \"f64\"],\n [\"frameCount\", \"u64\"],\n [\"cellsUpdated\", \"u32\"],\n [\"averageCellsUpdated\", \"u32\"],\n [\"renderTimeValid\", \"bool_u8\"],\n [\"stdoutWriteTimeValid\", \"bool_u8\"],\n])\n\nexport type GrowthPolicy = \"grow\" | \"block\"\n\nexport type NativeSpanFeedOptions = {\n chunkSize?: number\n initialChunks?: number\n maxBytes?: bigint\n growthPolicy?: GrowthPolicy\n autoCommitOnFull?: boolean\n spanQueueCapacity?: number\n}\n\nexport type NativeSpanFeedStats = {\n bytesWritten: bigint\n spansCommitted: bigint\n chunks: number\n pendingSpans: number\n}\n\nexport type SpanInfo = {\n chunkPtr: Pointer\n offset: number\n len: number\n chunkIndex: number\n}\n\nexport type ReserveInfo = {\n ptr: Pointer\n len: number\n}\n\nconst GrowthPolicyEnum = defineEnum({ grow: 0, block: 1 }, \"u8\")\n\nexport const NativeSpanFeedOptionsStruct = defineStruct([\n [\"chunkSize\", \"u32\", { default: 64 * 1024 }],\n [\"initialChunks\", \"u32\", { default: 2 }],\n [\"maxBytes\", \"u64\", { default: 0n }],\n [\"growthPolicy\", GrowthPolicyEnum, { default: \"grow\" }],\n [\"autoCommitOnFull\", \"bool_u8\", { default: true }],\n [\"spanQueueCapacity\", \"u32\", { default: 0 }],\n])\n\nexport const NativeSpanFeedStatsStruct = defineStruct([\n [\"bytesWritten\", \"u64\"],\n [\"spansCommitted\", \"u64\"],\n [\"chunks\", \"u32\"],\n [\"pendingSpans\", \"u32\"],\n])\n\nexport const SpanInfoStruct = defineStruct(\n [\n [\"chunkPtr\", \"pointer\"],\n [\"offset\", \"u32\"],\n [\"len\", \"u32\"],\n [\"chunkIndex\", \"u32\"],\n [\"reserved\", \"u32\", { default: 0 }],\n ],\n {\n reduceValue: (value: { chunkPtr: Pointer; offset: number; len: number; chunkIndex: number }) => ({\n chunkPtr: value.chunkPtr as Pointer,\n offset: value.offset,\n len: value.len,\n chunkIndex: value.chunkIndex,\n }),\n },\n)\n\nexport const ReserveInfoStruct = defineStruct(\n [\n [\"ptr\", \"pointer\"],\n [\"len\", \"u32\"],\n [\"reserved\", \"u32\", { default: 0 }],\n ],\n {\n reduceValue: (value: { ptr: Pointer; len: number }) => ({\n ptr: value.ptr as Pointer,\n len: value.len,\n }),\n },\n)\n\nexport type AudioCreateOptions = {\n sampleRate?: number\n playbackChannels?: number\n}\n\nexport type AudioStartOptions = {\n periodSizeInFrames?: number\n periodSizeInMilliseconds?: number\n periods?: number\n performanceProfile?: number\n shareMode?: number\n noPreSilencedOutputBuffer?: boolean\n noClip?: boolean\n noDisableDenormals?: boolean\n noFixedSizedCallback?: boolean\n wasapiNoAutoConvertSrc?: boolean\n wasapiNoDefaultQualitySrc?: boolean\n alsaNoMMap?: boolean\n alsaNoAutoFormat?: boolean\n alsaNoAutoChannels?: boolean\n alsaNoAutoResample?: boolean\n}\n\nexport type AudioVoiceOptions = {\n volume?: number\n pan?: number\n loop?: boolean\n groupId?: number\n}\n\nexport const NativeAudioStreamFormat = {\n Mp3: 1,\n Flac: 2,\n} as const\n\nexport type NativeAudioStreamFormat = (typeof NativeAudioStreamFormat)[keyof typeof NativeAudioStreamFormat]\n\nexport type AudioStreamCreateOptions = {\n capacityMs: number\n startupMs: number\n resumeMs: number\n volume: number\n pan: number\n groupId: number\n maxProbeBytes: number\n format: NativeAudioStreamFormat\n}\n\nexport type NativeAudioStreamStats = {\n bytesReceived: bigint\n framesDecoded: bigint\n framesPlayed: bigint\n state: number\n sampleRate: number\n channels: number\n bufferedFrames: number\n capacityFrames: number\n underruns: number\n errorCode: number\n readyGeneration: number\n}\n\nexport const NativeAudioStreamState = {\n Initializing: 0,\n Buffering: 1,\n Playing: 2,\n Ended: 3,\n Failed: 4,\n Cancelled: 5,\n Reconnecting: 6,\n} as const\n\nexport type NativeAudioStreamState = (typeof NativeAudioStreamState)[keyof typeof NativeAudioStreamState]\n\nexport const NativeAudioStreamStateNames = [\n \"initializing\",\n \"buffering\",\n \"playing\",\n \"ended\",\n \"errored\",\n \"disposed\",\n \"reconnecting\",\n] as const\n\nexport const NativeAudioStreamCloseReason = {\n PreserveNativeTerminal: 0,\n TransportError: 1,\n Disposed: 2,\n} as const\n\nexport type NativeAudioStreamCloseReason =\n (typeof NativeAudioStreamCloseReason)[keyof typeof NativeAudioStreamCloseReason]\n\nexport type AudioStats = {\n soundsLoaded: number\n voicesActive: number\n framesMixed: bigint\n lockMisses: number\n lastPeak: number\n lastRms: number\n}\n\nexport type NativeAudioCaptureStats = {\n framesReceived: bigint\n framesRead: bigint\n framesDropped: bigint\n sampleRate: number\n channels: number\n bufferedFrames: number\n capacityFrames: number\n}\n\nexport const AudioCreateOptionsStruct = defineStruct([\n [\"sampleRate\", \"u32\", { default: 48_000 }],\n [\"playbackChannels\", \"u32\", { default: 2 }],\n])\n\nexport const AudioStartOptionsStruct = defineStruct([\n [\"periodSizeInFrames\", \"u32\", { default: 0 }],\n [\"periodSizeInMilliseconds\", \"u32\", { default: 0 }],\n [\"periods\", \"u32\", { default: 0 }],\n [\"performanceProfile\", \"u8\", { default: 0 }],\n [\"shareMode\", \"u8\", { default: 0 }],\n [\"noPreSilencedOutputBuffer\", \"bool_u8\", { default: false }],\n [\"noClip\", \"bool_u8\", { default: false }],\n [\"noDisableDenormals\", \"bool_u8\", { default: false }],\n [\"noFixedSizedCallback\", \"bool_u8\", { default: false }],\n [\"wasapiNoAutoConvertSrc\", \"bool_u8\", { default: false }],\n [\"wasapiNoDefaultQualitySrc\", \"bool_u8\", { default: false }],\n [\"alsaNoMMap\", \"bool_u8\", { default: false }],\n [\"alsaNoAutoFormat\", \"bool_u8\", { default: false }],\n [\"alsaNoAutoChannels\", \"bool_u8\", { default: false }],\n [\"alsaNoAutoResample\", \"bool_u8\", { default: false }],\n])\n\nexport const AudioVoiceOptionsStruct = defineStruct([\n [\"volume\", \"f32\", { default: 1 }],\n [\"pan\", \"f32\", { default: 0 }],\n [\"loop\", \"bool_u8\", { default: false }],\n [\"groupId\", \"u32\", { default: 0 }],\n])\n\nexport const AudioStreamCreateOptionsStruct = defineStruct([\n [\"capacityMs\", \"u32\"],\n [\"startupMs\", \"u32\"],\n [\"resumeMs\", \"u32\"],\n [\"volume\", \"f32\"],\n [\"pan\", \"f32\"],\n [\"groupId\", \"u32\"],\n // Keep additions at the end so newer JS preserves the previous native prefix during local rebuilds.\n [\"maxProbeBytes\", \"u32\"],\n [\"format\", \"u32\"],\n])\n\nexport const AudioStreamStatsStruct = defineStruct([\n [\"bytesReceived\", \"u64\"],\n [\"framesDecoded\", \"u64\"],\n [\"framesPlayed\", \"u64\"],\n [\"state\", \"u32\"],\n [\"sampleRate\", \"u32\"],\n [\"channels\", \"u32\"],\n [\"bufferedFrames\", \"u32\"],\n [\"capacityFrames\", \"u32\"],\n [\"underruns\", \"u32\"],\n [\"errorCode\", \"i32\"],\n [\"readyGeneration\", \"u32\"],\n])\n\nexport const AudioCaptureStatsStruct = defineStruct([\n [\"framesReceived\", \"u64\"],\n [\"framesRead\", \"u64\"],\n [\"framesDropped\", \"u64\"],\n [\"sampleRate\", \"u32\"],\n [\"channels\", \"u32\"],\n [\"bufferedFrames\", \"u32\"],\n [\"capacityFrames\", \"u32\"],\n])\n\nexport const AudioStatsStruct = defineStruct([\n [\"soundsLoaded\", \"u32\"],\n [\"voicesActive\", \"u32\"],\n [\"framesMixed\", \"u64\"],\n [\"lockMisses\", \"u32\"],\n [\"lastPeak\", \"f32\"],\n [\"lastRms\", \"f32\"],\n])\n",
57
59
  "import {\n resolveRenderLib,\n type NativeYogaDirtiedCallback,\n type NativeYogaMeasureCallback,\n type RenderLib,\n} from \"./zig.js\"\nimport type { FFICallbackInstance, Pointer } from \"./platform/ffi.js\"\n\nexport enum Align {\n Auto = 0,\n FlexStart = 1,\n Center = 2,\n FlexEnd = 3,\n Stretch = 4,\n Baseline = 5,\n SpaceBetween = 6,\n SpaceAround = 7,\n SpaceEvenly = 8,\n}\n\nexport enum BoxSizing {\n BorderBox = 0,\n ContentBox = 1,\n}\n\nexport enum Dimension {\n Width = 0,\n Height = 1,\n}\n\nexport enum Direction {\n Inherit = 0,\n LTR = 1,\n RTL = 2,\n}\n\nexport enum Display {\n Flex = 0,\n None = 1,\n Contents = 2,\n}\n\nexport enum Edge {\n Left = 0,\n Top = 1,\n Right = 2,\n Bottom = 3,\n Start = 4,\n End = 5,\n Horizontal = 6,\n Vertical = 7,\n All = 8,\n}\n\nexport enum Errata {\n None = 0,\n StretchFlexBasis = 1,\n AbsolutePositionWithoutInsetsExcludesPadding = 2,\n AbsolutePercentAgainstInnerSize = 4,\n All = 2147483647,\n Classic = 2147483646,\n}\n\nexport enum ExperimentalFeature {\n WebFlexBasis = 0,\n}\n\nexport enum FlexDirection {\n Column = 0,\n ColumnReverse = 1,\n Row = 2,\n RowReverse = 3,\n}\n\nexport enum Gutter {\n Column = 0,\n Row = 1,\n All = 2,\n}\n\nexport enum Justify {\n FlexStart = 0,\n Center = 1,\n FlexEnd = 2,\n SpaceBetween = 3,\n SpaceAround = 4,\n SpaceEvenly = 5,\n}\n\nexport enum LogLevel {\n Error = 0,\n Warn = 1,\n Info = 2,\n Debug = 3,\n Verbose = 4,\n Fatal = 5,\n}\n\nexport enum MeasureMode {\n Undefined = 0,\n Exactly = 1,\n AtMost = 2,\n}\n\nexport enum NodeType {\n Default = 0,\n Text = 1,\n}\n\nexport enum Overflow {\n Visible = 0,\n Hidden = 1,\n Scroll = 2,\n}\n\nexport enum PositionType {\n Static = 0,\n Relative = 1,\n Absolute = 2,\n}\n\nexport enum Unit {\n Undefined = 0,\n Point = 1,\n Percent = 2,\n Auto = 3,\n}\n\nexport enum Wrap {\n NoWrap = 0,\n Wrap = 1,\n WrapReverse = 2,\n}\n\nexport const ALIGN_AUTO = Align.Auto\nexport const ALIGN_FLEX_START = Align.FlexStart\nexport const ALIGN_CENTER = Align.Center\nexport const ALIGN_FLEX_END = Align.FlexEnd\nexport const ALIGN_STRETCH = Align.Stretch\nexport const ALIGN_BASELINE = Align.Baseline\nexport const ALIGN_SPACE_BETWEEN = Align.SpaceBetween\nexport const ALIGN_SPACE_AROUND = Align.SpaceAround\nexport const ALIGN_SPACE_EVENLY = Align.SpaceEvenly\n\nexport const BOX_SIZING_BORDER_BOX = BoxSizing.BorderBox\nexport const BOX_SIZING_CONTENT_BOX = BoxSizing.ContentBox\n\nexport const DIMENSION_WIDTH = Dimension.Width\nexport const DIMENSION_HEIGHT = Dimension.Height\n\nexport const DIRECTION_INHERIT = Direction.Inherit\nexport const DIRECTION_LTR = Direction.LTR\nexport const DIRECTION_RTL = Direction.RTL\n\nexport const DISPLAY_FLEX = Display.Flex\nexport const DISPLAY_NONE = Display.None\nexport const DISPLAY_CONTENTS = Display.Contents\n\nexport const EDGE_LEFT = Edge.Left\nexport const EDGE_TOP = Edge.Top\nexport const EDGE_RIGHT = Edge.Right\nexport const EDGE_BOTTOM = Edge.Bottom\nexport const EDGE_START = Edge.Start\nexport const EDGE_END = Edge.End\nexport const EDGE_HORIZONTAL = Edge.Horizontal\nexport const EDGE_VERTICAL = Edge.Vertical\nexport const EDGE_ALL = Edge.All\n\nexport const ERRATA_NONE = Errata.None\nexport const ERRATA_STRETCH_FLEX_BASIS = Errata.StretchFlexBasis\nexport const ERRATA_ABSOLUTE_POSITION_WITHOUT_INSETS_EXCLUDES_PADDING =\n Errata.AbsolutePositionWithoutInsetsExcludesPadding\nexport const ERRATA_ABSOLUTE_PERCENT_AGAINST_INNER_SIZE = Errata.AbsolutePercentAgainstInnerSize\nexport const ERRATA_ALL = Errata.All\nexport const ERRATA_CLASSIC = Errata.Classic\n\nexport const EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS = ExperimentalFeature.WebFlexBasis\n\nexport const FLEX_DIRECTION_COLUMN = FlexDirection.Column\nexport const FLEX_DIRECTION_COLUMN_REVERSE = FlexDirection.ColumnReverse\nexport const FLEX_DIRECTION_ROW = FlexDirection.Row\nexport const FLEX_DIRECTION_ROW_REVERSE = FlexDirection.RowReverse\n\nexport const GUTTER_COLUMN = Gutter.Column\nexport const GUTTER_ROW = Gutter.Row\nexport const GUTTER_ALL = Gutter.All\n\nexport const JUSTIFY_FLEX_START = Justify.FlexStart\nexport const JUSTIFY_CENTER = Justify.Center\nexport const JUSTIFY_FLEX_END = Justify.FlexEnd\nexport const JUSTIFY_SPACE_BETWEEN = Justify.SpaceBetween\nexport const JUSTIFY_SPACE_AROUND = Justify.SpaceAround\nexport const JUSTIFY_SPACE_EVENLY = Justify.SpaceEvenly\n\nexport const LOG_LEVEL_ERROR = LogLevel.Error\nexport const LOG_LEVEL_WARN = LogLevel.Warn\nexport const LOG_LEVEL_INFO = LogLevel.Info\nexport const LOG_LEVEL_DEBUG = LogLevel.Debug\nexport const LOG_LEVEL_VERBOSE = LogLevel.Verbose\nexport const LOG_LEVEL_FATAL = LogLevel.Fatal\n\nexport const MEASURE_MODE_UNDEFINED = MeasureMode.Undefined\nexport const MEASURE_MODE_EXACTLY = MeasureMode.Exactly\nexport const MEASURE_MODE_AT_MOST = MeasureMode.AtMost\n\nexport const NODE_TYPE_DEFAULT = NodeType.Default\nexport const NODE_TYPE_TEXT = NodeType.Text\n\nexport const OVERFLOW_VISIBLE = Overflow.Visible\nexport const OVERFLOW_HIDDEN = Overflow.Hidden\nexport const OVERFLOW_SCROLL = Overflow.Scroll\n\nexport const POSITION_TYPE_STATIC = PositionType.Static\nexport const POSITION_TYPE_RELATIVE = PositionType.Relative\nexport const POSITION_TYPE_ABSOLUTE = PositionType.Absolute\n\nexport const UNIT_UNDEFINED = Unit.Undefined\nexport const UNIT_POINT = Unit.Point\nexport const UNIT_PERCENT = Unit.Percent\nexport const UNIT_AUTO = Unit.Auto\n\nexport const WRAP_NO_WRAP = Wrap.NoWrap\nexport const WRAP_WRAP = Wrap.Wrap\nexport const WRAP_WRAP_REVERSE = Wrap.WrapReverse\n\nexport interface Layout {\n left: number\n right: number\n top: number\n bottom: number\n width: number\n height: number\n}\n\nexport interface Size {\n width: number\n height: number\n}\n\nexport interface Value {\n unit: Unit\n value: number\n}\n\nexport type MeasureFunction = (width: number, widthMode: MeasureMode, height: number, heightMode: MeasureMode) => Size\nexport type DirtiedFunction = (node: Node) => void\n\ntype ValueInput = number | \"auto\" | `${number}%` | Value | undefined\ntype ValueInputNoAuto = number | `${number}%` | Value | undefined\n\nconst YogaEnumKind = {\n Direction: 0,\n FlexDirection: 1,\n JustifyContent: 2,\n AlignContent: 3,\n AlignItems: 4,\n AlignSelf: 5,\n PositionType: 6,\n FlexWrap: 7,\n Overflow: 8,\n Display: 9,\n BoxSizing: 10,\n} as const\n\nconst YogaFloatKind = {\n Flex: 0,\n FlexGrow: 1,\n FlexShrink: 2,\n AspectRatio: 3,\n} as const\n\nconst YogaValueKind = {\n Width: 0,\n Height: 1,\n MinWidth: 2,\n MinHeight: 3,\n MaxWidth: 4,\n MaxHeight: 5,\n FlexBasis: 6,\n Margin: 7,\n Padding: 8,\n Position: 9,\n Gap: 10,\n} as const\n\nconst YogaEdgeLayoutKind = {\n Margin: 0,\n Padding: 1,\n Border: 2,\n} as const\n\nconst UNDEFINED_VALUE: Value = { unit: Unit.Undefined, value: NaN }\n\nconst nodeRegistry = new Map<Pointer, Node>()\n// JS-measured Yoga nodes share one native callback per loaded library. Yoga passes\n// the node pointer back to JS, and these registries route to the per-node handler.\n// This keeps Node.setMeasureFunc()/setDirtiedFunc() while avoiding one JSCallback\n// allocation per measured node.\nconst measureRegistry = new Map<Pointer, MeasureFunction>()\nconst dirtiedRegistry = new Map<Pointer, { node: Node; callback: DirtiedFunction }>()\nlet measureCallback: FFICallbackInstance | null = null\nlet measureCallbackLib: RenderLib | null = null\nlet dirtiedCallback: FFICallbackInstance | null = null\nlet dirtiedCallbackLib: RenderLib | null = null\n\nfunction lib(): RenderLib {\n return resolveRenderLib()\n}\n\nfunction ensureMeasureCallback(): void {\n const renderLib = lib()\n if (measureCallback?.ptr && measureCallbackLib === renderLib) return\n\n const callback: NativeYogaMeasureCallback = (node, width, widthMode, height, heightMode) => {\n const measureFunc = node ? measureRegistry.get(node) : undefined\n const result = measureFunc?.(width, widthMode as MeasureMode, height, heightMode as MeasureMode)\n renderLib.yogaStoreMeasureResult(result?.width ?? NaN, result?.height ?? NaN)\n }\n\n measureCallback = renderLib.createYogaMeasureCallback(callback)\n if (!measureCallback.ptr) {\n measureCallback.close()\n measureCallback = null\n throw new Error(\"Failed to create Yoga measure callback\")\n }\n\n renderLib.yogaSetMeasureCallback(measureCallback.ptr)\n measureCallbackLib = renderLib\n}\n\nfunction ensureDirtiedCallback(): void {\n const renderLib = lib()\n if (dirtiedCallback?.ptr && dirtiedCallbackLib === renderLib) return\n\n const callback: NativeYogaDirtiedCallback = (node) => {\n if (!node) return\n const registration = dirtiedRegistry.get(node)\n if (registration) registration.callback(registration.node)\n }\n\n dirtiedCallback = renderLib.createYogaDirtiedCallback(callback)\n if (!dirtiedCallback.ptr) {\n dirtiedCallback.close()\n dirtiedCallback = null\n throw new Error(\"Failed to create Yoga dirtied callback\")\n }\n\n renderLib.yogaSetDirtiedCallback(dirtiedCallback.ptr)\n dirtiedCallbackLib = renderLib\n}\n\nfunction isValueObject(value: unknown): value is Value {\n return typeof value === \"object\" && value !== null && \"unit\" in value && \"value\" in value\n}\n\nfunction parseValue(value: ValueInput): Value {\n if (isValueObject(value)) {\n return value\n }\n if (value === undefined) {\n return UNDEFINED_VALUE\n }\n if (value === \"auto\") {\n return { unit: Unit.Auto, value: NaN }\n }\n if (typeof value === \"string\") {\n if (!value.endsWith(\"%\")) {\n throw new Error(`Invalid Yoga value: ${value}`)\n }\n const numberValue = Number.parseFloat(value)\n if (Number.isNaN(numberValue)) {\n throw new Error(`Invalid Yoga percentage value: ${value}`)\n }\n return { unit: Unit.Percent, value: numberValue }\n }\n return { unit: Unit.Point, value }\n}\n\nfunction unpackValue(packedValue: number | bigint): Value {\n const packed = typeof packedValue === \"bigint\" ? packedValue : BigInt(packedValue)\n const unit = Number(packed & 0xffffffffn) as Unit\n const valueBits = Number((packed >> 32n) & 0xffffffffn)\n const buffer = new ArrayBuffer(4)\n const view = new DataView(buffer)\n view.setUint32(0, valueBits, true)\n return { unit, value: view.getFloat32(0, true) }\n}\n\nfunction normalizeLayoutInput(value: number | \"auto\" | undefined): number {\n return value === undefined || value === \"auto\" ? NaN : value\n}\n\nexport class Config {\n readonly ptr: Pointer\n private freed = false\n\n private constructor(ptr: Pointer) {\n this.ptr = ptr\n }\n\n static create(): Config {\n return new Config(lib().yogaConfigCreate())\n }\n\n static destroy(config: Config): void {\n config.free()\n }\n\n free(): void {\n if (this.freed) return\n this.freed = true\n lib().yogaConfigFree(this.ptr)\n }\n\n setUseWebDefaults(useWebDefaults: boolean): void {\n if (this.freed) return\n lib().yogaConfigSetUseWebDefaults(this.ptr, useWebDefaults)\n }\n\n useWebDefaults(): boolean {\n if (this.freed) return false\n return lib().yogaConfigGetUseWebDefaults(this.ptr)\n }\n\n setPointScaleFactor(pointScaleFactor: number): void {\n if (this.freed) return\n lib().yogaConfigSetPointScaleFactor(this.ptr, pointScaleFactor)\n }\n\n getPointScaleFactor(): number {\n if (this.freed) return 0\n return lib().yogaConfigGetPointScaleFactor(this.ptr)\n }\n\n setErrata(errata: Errata): void {\n if (this.freed) return\n lib().yogaConfigSetErrata(this.ptr, errata)\n }\n\n getErrata(): Errata {\n if (this.freed) return Errata.None\n return lib().yogaConfigGetErrata(this.ptr) as Errata\n }\n\n setExperimentalFeatureEnabled(feature: ExperimentalFeature, enabled: boolean): void {\n if (this.freed) return\n lib().yogaConfigSetExperimentalFeatureEnabled(this.ptr, feature, enabled)\n }\n\n isExperimentalFeatureEnabled(feature: ExperimentalFeature): boolean {\n if (this.freed) return false\n return lib().yogaConfigIsExperimentalFeatureEnabled(this.ptr, feature)\n }\n}\n\nexport class Node {\n readonly ptr: Pointer\n private freed = false\n\n private constructor(ptr: Pointer) {\n this.ptr = ptr\n nodeRegistry.set(ptr, this)\n }\n\n static create(config?: Config): Node {\n return Node.fromPointer(config ? lib().yogaNodeCreateWithConfig(config.ptr) : lib().yogaNodeCreate())\n }\n\n static createForOpenTUI(): Node {\n return Node.fromPointer(lib().yogaNodeCreateForOpenTUI())\n }\n\n static createDefault(): Node {\n return Node.create()\n }\n\n static createWithConfig(config: Config): Node {\n return Node.create(config)\n }\n\n static destroy(node: Node): void {\n node.free()\n }\n\n private static fromPointer(ptr: Pointer): Node {\n const existing = nodeRegistry.get(ptr)\n if (existing) return existing\n return new Node(ptr)\n }\n\n isFreed(): boolean {\n return this.freed\n }\n\n free(): void {\n if (this.freed) return\n this.unsetMeasureFunc()\n this.unsetDirtiedFunc()\n lib().yogaNodeFree(this.ptr)\n this.markFreed()\n }\n\n freeRecursive(): void {\n if (this.freed) return\n const nodes = this.collectSubtree([])\n for (const node of nodes) {\n node.unregisterCallbacks()\n }\n lib().yogaNodeFreeRecursive(this.ptr)\n for (const node of nodes) {\n node.markFreed()\n }\n }\n\n reset(): void {\n if (this.freed) return\n this.unsetMeasureFunc()\n this.unsetDirtiedFunc()\n lib().yogaNodeReset(this.ptr)\n }\n\n copyStyle(node: Node): void {\n if (this.freed) return\n lib().yogaNodeCopyStyle(this.ptr, node.ptr)\n }\n\n insertChild(child: Node, index: number): void {\n if (this.freed) return\n lib().yogaNodeInsertChild(this.ptr, child.ptr, index)\n }\n\n removeChild(child: Node): void {\n if (this.freed) return\n lib().yogaNodeRemoveChild(this.ptr, child.ptr)\n }\n\n removeAllChildren(): void {\n if (this.freed) return\n lib().yogaNodeRemoveAllChildren(this.ptr)\n }\n\n getChild(index: number): Node | null {\n if (this.freed) return null\n const child = lib().yogaNodeGetChild(this.ptr, index)\n return child ? Node.fromPointer(child) : null\n }\n\n getChildCount(): number {\n if (this.freed) return 0\n return lib().yogaNodeGetChildCount(this.ptr)\n }\n\n getParent(): Node | null {\n if (this.freed) return null\n const parent = lib().yogaNodeGetParent(this.ptr)\n return parent ? Node.fromPointer(parent) : null\n }\n\n calculateLayout(width?: number | \"auto\", height?: number | \"auto\", direction: Direction = Direction.LTR): void {\n if (this.freed) return\n lib().yogaNodeCalculateLayout(this.ptr, normalizeLayoutInput(width), normalizeLayoutInput(height), direction)\n }\n\n hasNewLayout(): boolean {\n if (this.freed) return false\n return lib().yogaNodeGetHasNewLayout(this.ptr)\n }\n\n markLayoutSeen(): void {\n if (this.freed) return\n lib().yogaNodeSetHasNewLayout(this.ptr, false)\n }\n\n markDirty(): void {\n if (this.freed) return\n lib().yogaNodeMarkDirty(this.ptr)\n }\n\n isDirty(): boolean {\n if (this.freed) return true\n return lib().yogaNodeIsDirty(this.ptr)\n }\n\n getComputedLayout(): Layout {\n if (this.freed) return { left: 0, top: 0, right: 0, bottom: 0, width: 0, height: 0 }\n return lib().yogaNodeGetComputedLayout(this.ptr)\n }\n\n getComputedLeft(): number {\n return this.getComputedLayout().left\n }\n\n getComputedTop(): number {\n return this.getComputedLayout().top\n }\n\n getComputedRight(): number {\n return this.getComputedLayout().right\n }\n\n getComputedBottom(): number {\n return this.getComputedLayout().bottom\n }\n\n getComputedWidth(): number {\n return this.getComputedLayout().width\n }\n\n getComputedHeight(): number {\n return this.getComputedLayout().height\n }\n\n getComputedMargin(edge: Edge): number {\n if (this.freed) return 0\n return lib().yogaNodeLayoutGetEdge(this.ptr, YogaEdgeLayoutKind.Margin, edge)\n }\n\n getComputedPadding(edge: Edge): number {\n if (this.freed) return 0\n return lib().yogaNodeLayoutGetEdge(this.ptr, YogaEdgeLayoutKind.Padding, edge)\n }\n\n getComputedBorder(edge: Edge): number {\n if (this.freed) return 0\n return lib().yogaNodeLayoutGetEdge(this.ptr, YogaEdgeLayoutKind.Border, edge)\n }\n\n setDirection(direction: Direction): void {\n this.setEnum(YogaEnumKind.Direction, direction)\n }\n\n getDirection(): Direction {\n return this.getEnum(YogaEnumKind.Direction, Direction.Inherit) as Direction\n }\n\n setFlexDirection(flexDirection: FlexDirection): void {\n this.setEnum(YogaEnumKind.FlexDirection, flexDirection)\n }\n\n getFlexDirection(): FlexDirection {\n return this.getEnum(YogaEnumKind.FlexDirection, FlexDirection.Column) as FlexDirection\n }\n\n setJustifyContent(justifyContent: Justify): void {\n this.setEnum(YogaEnumKind.JustifyContent, justifyContent)\n }\n\n getJustifyContent(): Justify {\n return this.getEnum(YogaEnumKind.JustifyContent, Justify.FlexStart) as Justify\n }\n\n setAlignContent(alignContent: Align): void {\n this.setEnum(YogaEnumKind.AlignContent, alignContent)\n }\n\n getAlignContent(): Align {\n return this.getEnum(YogaEnumKind.AlignContent, Align.FlexStart) as Align\n }\n\n setAlignItems(alignItems: Align): void {\n this.setEnum(YogaEnumKind.AlignItems, alignItems)\n }\n\n getAlignItems(): Align {\n return this.getEnum(YogaEnumKind.AlignItems, Align.Stretch) as Align\n }\n\n setAlignSelf(alignSelf: Align): void {\n this.setEnum(YogaEnumKind.AlignSelf, alignSelf)\n }\n\n getAlignSelf(): Align {\n return this.getEnum(YogaEnumKind.AlignSelf, Align.Auto) as Align\n }\n\n setPositionType(positionType: PositionType): void {\n this.setEnum(YogaEnumKind.PositionType, positionType)\n }\n\n getPositionType(): PositionType {\n return this.getEnum(YogaEnumKind.PositionType, PositionType.Relative) as PositionType\n }\n\n setFlexWrap(flexWrap: Wrap): void {\n this.setEnum(YogaEnumKind.FlexWrap, flexWrap)\n }\n\n getFlexWrap(): Wrap {\n return this.getEnum(YogaEnumKind.FlexWrap, Wrap.NoWrap) as Wrap\n }\n\n setOverflow(overflow: Overflow): void {\n this.setEnum(YogaEnumKind.Overflow, overflow)\n }\n\n getOverflow(): Overflow {\n return this.getEnum(YogaEnumKind.Overflow, Overflow.Visible) as Overflow\n }\n\n setDisplay(display: Display): void {\n this.setEnum(YogaEnumKind.Display, display)\n }\n\n getDisplay(): Display {\n return this.getEnum(YogaEnumKind.Display, Display.Flex) as Display\n }\n\n setBoxSizing(boxSizing: BoxSizing): void {\n this.setEnum(YogaEnumKind.BoxSizing, boxSizing)\n }\n\n getBoxSizing(): BoxSizing {\n return this.getEnum(YogaEnumKind.BoxSizing, BoxSizing.BorderBox) as BoxSizing\n }\n\n setFlex(flex: number | undefined): void {\n this.setFloat(YogaFloatKind.Flex, flex)\n }\n\n getFlex(): number {\n return this.getFloat(YogaFloatKind.Flex)\n }\n\n setFlexGrow(flexGrow: number | undefined): void {\n this.setFloat(YogaFloatKind.FlexGrow, flexGrow)\n }\n\n getFlexGrow(): number {\n return this.getFloat(YogaFloatKind.FlexGrow)\n }\n\n setFlexShrink(flexShrink: number | undefined): void {\n this.setFloat(YogaFloatKind.FlexShrink, flexShrink)\n }\n\n getFlexShrink(): number {\n return this.getFloat(YogaFloatKind.FlexShrink)\n }\n\n setAspectRatio(aspectRatio: number | undefined): void {\n this.setFloat(YogaFloatKind.AspectRatio, aspectRatio)\n }\n\n getAspectRatio(): number {\n return this.getFloat(YogaFloatKind.AspectRatio)\n }\n\n setFlexBasis(flexBasis: ValueInput): void {\n this.setValue(YogaValueKind.FlexBasis, 0, flexBasis)\n }\n\n setFlexBasisPercent(flexBasis: number | undefined): void {\n this.setValue(\n YogaValueKind.FlexBasis,\n 0,\n flexBasis === undefined ? undefined : { unit: Unit.Percent, value: flexBasis },\n )\n }\n\n setFlexBasisAuto(): void {\n this.setValue(YogaValueKind.FlexBasis, 0, \"auto\")\n }\n\n getFlexBasis(): Value {\n return this.getValue(YogaValueKind.FlexBasis, 0)\n }\n\n setWidth(width: ValueInput): void {\n this.setValue(YogaValueKind.Width, 0, width)\n }\n\n setWidthPercent(width: number | undefined): void {\n this.setValue(YogaValueKind.Width, 0, width === undefined ? undefined : { unit: Unit.Percent, value: width })\n }\n\n setWidthAuto(): void {\n this.setValue(YogaValueKind.Width, 0, \"auto\")\n }\n\n getWidth(): Value {\n return this.getValue(YogaValueKind.Width, 0)\n }\n\n setHeight(height: ValueInput): void {\n this.setValue(YogaValueKind.Height, 0, height)\n }\n\n setHeightPercent(height: number | undefined): void {\n this.setValue(YogaValueKind.Height, 0, height === undefined ? undefined : { unit: Unit.Percent, value: height })\n }\n\n setHeightAuto(): void {\n this.setValue(YogaValueKind.Height, 0, \"auto\")\n }\n\n getHeight(): Value {\n return this.getValue(YogaValueKind.Height, 0)\n }\n\n setMinWidth(minWidth: ValueInputNoAuto): void {\n this.setValue(YogaValueKind.MinWidth, 0, minWidth)\n }\n\n setMinWidthPercent(minWidth: number | undefined): void {\n this.setValue(\n YogaValueKind.MinWidth,\n 0,\n minWidth === undefined ? undefined : { unit: Unit.Percent, value: minWidth },\n )\n }\n\n getMinWidth(): Value {\n return this.getValue(YogaValueKind.MinWidth, 0)\n }\n\n setMinHeight(minHeight: ValueInputNoAuto): void {\n this.setValue(YogaValueKind.MinHeight, 0, minHeight)\n }\n\n setMinHeightPercent(minHeight: number | undefined): void {\n this.setValue(\n YogaValueKind.MinHeight,\n 0,\n minHeight === undefined ? undefined : { unit: Unit.Percent, value: minHeight },\n )\n }\n\n getMinHeight(): Value {\n return this.getValue(YogaValueKind.MinHeight, 0)\n }\n\n setMaxWidth(maxWidth: ValueInputNoAuto): void {\n this.setValue(YogaValueKind.MaxWidth, 0, maxWidth)\n }\n\n setMaxWidthPercent(maxWidth: number | undefined): void {\n this.setValue(\n YogaValueKind.MaxWidth,\n 0,\n maxWidth === undefined ? undefined : { unit: Unit.Percent, value: maxWidth },\n )\n }\n\n getMaxWidth(): Value {\n return this.getValue(YogaValueKind.MaxWidth, 0)\n }\n\n setMaxHeight(maxHeight: ValueInputNoAuto): void {\n this.setValue(YogaValueKind.MaxHeight, 0, maxHeight)\n }\n\n setMaxHeightPercent(maxHeight: number | undefined): void {\n this.setValue(\n YogaValueKind.MaxHeight,\n 0,\n maxHeight === undefined ? undefined : { unit: Unit.Percent, value: maxHeight },\n )\n }\n\n getMaxHeight(): Value {\n return this.getValue(YogaValueKind.MaxHeight, 0)\n }\n\n setMargin(edge: Edge, margin: ValueInput): void {\n this.setValue(YogaValueKind.Margin, edge, margin)\n }\n\n setMarginPercent(edge: Edge, margin: number | undefined): void {\n this.setValue(YogaValueKind.Margin, edge, margin === undefined ? undefined : { unit: Unit.Percent, value: margin })\n }\n\n setMarginAuto(edge: Edge): void {\n this.setValue(YogaValueKind.Margin, edge, \"auto\")\n }\n\n getMargin(edge: Edge): Value {\n return this.getValue(YogaValueKind.Margin, edge)\n }\n\n setPadding(edge: Edge, padding: ValueInputNoAuto): void {\n this.setValue(YogaValueKind.Padding, edge, padding)\n }\n\n setPaddingPercent(edge: Edge, padding: number | undefined): void {\n this.setValue(\n YogaValueKind.Padding,\n edge,\n padding === undefined ? undefined : { unit: Unit.Percent, value: padding },\n )\n }\n\n getPadding(edge: Edge): Value {\n return this.getValue(YogaValueKind.Padding, edge)\n }\n\n setPosition(edge: Edge, position: ValueInput): void {\n this.setValue(YogaValueKind.Position, edge, position)\n }\n\n setPositionPercent(edge: Edge, position: number | undefined): void {\n this.setValue(\n YogaValueKind.Position,\n edge,\n position === undefined ? undefined : { unit: Unit.Percent, value: position },\n )\n }\n\n setPositionAuto(edge: Edge): void {\n this.setValue(YogaValueKind.Position, edge, \"auto\")\n }\n\n getPosition(edge: Edge): Value {\n return this.getValue(YogaValueKind.Position, edge)\n }\n\n setGap(gutter: Gutter, gap: ValueInputNoAuto): void {\n this.setValue(YogaValueKind.Gap, gutter, gap)\n }\n\n setGapPercent(gutter: Gutter, gap: number | undefined): void {\n this.setValue(YogaValueKind.Gap, gutter, gap === undefined ? undefined : { unit: Unit.Percent, value: gap })\n }\n\n getGap(gutter: Gutter): Value {\n return this.getValue(YogaValueKind.Gap, gutter)\n }\n\n setBorder(edge: Edge, border: number | undefined): void {\n if (this.freed) return\n lib().yogaNodeStyleSetBorder(this.ptr, edge, border ?? NaN)\n }\n\n getBorder(edge: Edge): number {\n if (this.freed) return NaN\n return lib().yogaNodeStyleGetBorder(this.ptr, edge)\n }\n\n setIsReferenceBaseline(isReferenceBaseline: boolean): void {\n if (this.freed) return\n lib().yogaNodeSetIsReferenceBaseline(this.ptr, isReferenceBaseline)\n }\n\n isReferenceBaseline(): boolean {\n if (this.freed) return false\n return lib().yogaNodeIsReferenceBaseline(this.ptr)\n }\n\n setAlwaysFormsContainingBlock(alwaysFormsContainingBlock: boolean): void {\n if (this.freed) return\n lib().yogaNodeSetAlwaysFormsContainingBlock(this.ptr, alwaysFormsContainingBlock)\n }\n\n getAlwaysFormsContainingBlock(): boolean {\n if (this.freed) return false\n return lib().yogaNodeGetAlwaysFormsContainingBlock(this.ptr)\n }\n\n // A Yoga node has a single measure slot, shared with native-backed measurement\n // (NativeRenderable). Setting a JS measure func on a node that has a native\n // measure target replaces the native one, and vice versa.\n setMeasureFunc(measureFunc: MeasureFunction | null): void {\n if (this.freed) return\n this.unsetMeasureFunc()\n\n if (!measureFunc) return\n\n ensureMeasureCallback()\n measureRegistry.set(this.ptr, measureFunc)\n lib().yogaNodeSetMeasureFunc(this.ptr, true)\n }\n\n unsetMeasureFunc(): void {\n if (this.freed) return\n lib().yogaNodeUnsetMeasureFunc(this.ptr)\n measureRegistry.delete(this.ptr)\n }\n\n hasMeasureFunc(): boolean {\n if (this.freed) return false\n return lib().yogaNodeHasMeasureFunc(this.ptr)\n }\n\n setDirtiedFunc(dirtiedFunc: DirtiedFunction | null): void {\n if (this.freed) return\n this.unsetDirtiedFunc()\n\n if (!dirtiedFunc) return\n\n ensureDirtiedCallback()\n dirtiedRegistry.set(this.ptr, { node: this, callback: dirtiedFunc })\n lib().yogaNodeSetDirtiedFunc(this.ptr, true)\n }\n\n unsetDirtiedFunc(): void {\n if (this.freed) return\n lib().yogaNodeUnsetDirtiedFunc(this.ptr)\n dirtiedRegistry.delete(this.ptr)\n }\n\n private setEnum(kind: number, value: number): void {\n if (this.freed) return\n lib().yogaNodeStyleSetEnum(this.ptr, kind, value)\n }\n\n private getEnum(kind: number, fallback: number): number {\n if (this.freed) return fallback\n return lib().yogaNodeStyleGetEnum(this.ptr, kind)\n }\n\n private setFloat(kind: number, value: number | undefined): void {\n if (this.freed) return\n lib().yogaNodeStyleSetFloat(this.ptr, kind, value ?? NaN)\n }\n\n private getFloat(kind: number): number {\n if (this.freed) return NaN\n return lib().yogaNodeStyleGetFloat(this.ptr, kind)\n }\n\n private setValue(kind: number, edgeOrGutter: number, valueInput: ValueInput): void {\n if (this.freed) return\n const value = parseValue(valueInput)\n lib().yogaNodeStyleSetValue(this.ptr, kind, edgeOrGutter, value.unit, value.value)\n }\n\n private getValue(kind: number, edgeOrGutter: number): Value {\n if (this.freed) return UNDEFINED_VALUE\n return unpackValue(lib().yogaNodeStyleGetValue(this.ptr, kind, edgeOrGutter))\n }\n\n private collectSubtree(nodes: Node[]): Node[] {\n for (let index = 0; index < this.getChildCount(); index++) {\n this.getChild(index)?.collectSubtree(nodes)\n }\n nodes.push(this)\n return nodes\n }\n\n private unregisterCallbacks(): void {\n measureRegistry.delete(this.ptr)\n dirtiedRegistry.delete(this.ptr)\n }\n\n private markFreed(): void {\n this.unregisterCallbacks()\n this.freed = true\n nodeRegistry.delete(this.ptr)\n }\n}\n\nconst Yoga = {\n Config,\n Node,\n Align,\n BoxSizing,\n Dimension,\n Direction,\n Display,\n Edge,\n Errata,\n ExperimentalFeature,\n FlexDirection,\n Gutter,\n Justify,\n LogLevel,\n MeasureMode,\n NodeType,\n Overflow,\n PositionType,\n Unit,\n Wrap,\n ALIGN_AUTO,\n ALIGN_FLEX_START,\n ALIGN_CENTER,\n ALIGN_FLEX_END,\n ALIGN_STRETCH,\n ALIGN_BASELINE,\n ALIGN_SPACE_BETWEEN,\n ALIGN_SPACE_AROUND,\n ALIGN_SPACE_EVENLY,\n BOX_SIZING_BORDER_BOX,\n BOX_SIZING_CONTENT_BOX,\n DIMENSION_WIDTH,\n DIMENSION_HEIGHT,\n DIRECTION_INHERIT,\n DIRECTION_LTR,\n DIRECTION_RTL,\n DISPLAY_FLEX,\n DISPLAY_NONE,\n DISPLAY_CONTENTS,\n EDGE_LEFT,\n EDGE_TOP,\n EDGE_RIGHT,\n EDGE_BOTTOM,\n EDGE_START,\n EDGE_END,\n EDGE_HORIZONTAL,\n EDGE_VERTICAL,\n EDGE_ALL,\n ERRATA_NONE,\n ERRATA_STRETCH_FLEX_BASIS,\n ERRATA_ABSOLUTE_POSITION_WITHOUT_INSETS_EXCLUDES_PADDING,\n ERRATA_ABSOLUTE_PERCENT_AGAINST_INNER_SIZE,\n ERRATA_ALL,\n ERRATA_CLASSIC,\n EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS,\n FLEX_DIRECTION_COLUMN,\n FLEX_DIRECTION_COLUMN_REVERSE,\n FLEX_DIRECTION_ROW,\n FLEX_DIRECTION_ROW_REVERSE,\n GUTTER_COLUMN,\n GUTTER_ROW,\n GUTTER_ALL,\n JUSTIFY_FLEX_START,\n JUSTIFY_CENTER,\n JUSTIFY_FLEX_END,\n JUSTIFY_SPACE_BETWEEN,\n JUSTIFY_SPACE_AROUND,\n JUSTIFY_SPACE_EVENLY,\n LOG_LEVEL_ERROR,\n LOG_LEVEL_WARN,\n LOG_LEVEL_INFO,\n LOG_LEVEL_DEBUG,\n LOG_LEVEL_VERBOSE,\n LOG_LEVEL_FATAL,\n MEASURE_MODE_UNDEFINED,\n MEASURE_MODE_EXACTLY,\n MEASURE_MODE_AT_MOST,\n NODE_TYPE_DEFAULT,\n NODE_TYPE_TEXT,\n OVERFLOW_VISIBLE,\n OVERFLOW_HIDDEN,\n OVERFLOW_SCROLL,\n POSITION_TYPE_STATIC,\n POSITION_TYPE_RELATIVE,\n POSITION_TYPE_ABSOLUTE,\n UNIT_UNDEFINED,\n UNIT_POINT,\n UNIT_PERCENT,\n UNIT_AUTO,\n WRAP_NO_WRAP,\n WRAP_WRAP,\n WRAP_WRAP_REVERSE,\n}\n\nexport default Yoga\n"
58
60
  ],
59
- "mappings": "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,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,SACN,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,MAAM,SACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,WACrB,KAAK,WAAY,KAAK;AAAA;AAG3B,SAAS,WAAW,CAAC,GAAG;AAAA,EACvB,OAAO,MAAM,SACT,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK;AAAA;AAGzB,SAAS,MAAM,CAAC,GAAG;AAAA,EAClB,OAAO,KAAK,QAAU,KAAK,QACvB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,SACN,MAAM,SACN,MAAM,SACN,KAAK,SAAU,KAAK,SACpB,MAAM,SACN,KAAK,SAAU,KAAK,SACpB,MAAM,SACN,MAAM,SACN,MAAM,SACN,MAAM,SACN,MAAM,SACN,MAAM,SACN,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAW,KAAK,SACrB,KAAK,SAAW,KAAK,SACrB,KAAK,SAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,U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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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CP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EAGP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EAGP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EAGP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EAGP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EAGP,OAAO;AAAA,EACP,OAAO;AACT;AA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",
60
- "debugId": "A5B84FFA1E40FFEB64756E2164756E21",
61
+ "mappings": "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,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,SACN,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,MAAM,SACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,WACrB,KAAK,WAAY,KAAK;AAAA;AAG3B,SAAS,WAAW,CAAC,GAAG;AAAA,EACvB,OAAO,MAAM,SACT,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK;AAAA;AAGzB,SAAS,MAAM,CAAC,GAAG;AAAA,EAClB,OAAO,KAAK,QAAU,KAAK,QACvB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,SACN,MAAM,SACN,MAAM,SACN,KAAK,SAAU,KAAK,SACpB,MAAM,SACN,KAAK,SAAU,KAAK,SACpB,MAAM,SACN,MAAM,SACN,MAAM,SACN,MAAM,SACN,MAAM,SACN,MAAM,SACN,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAW,KAAK,SACrB,KAAK,SAAW,KAAK,SACrB,KAAK,SAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,U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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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CP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EAGP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EAGP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EAGP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EAGP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EAGP,OAAO;AAAA,EACP,OAAO;AACT;AA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AAK,oBAAoB;AAAA,IACzB,KAAK,QAAQ;AAAA,IACb,aAAa,OAAO,KAAK,GAAG;AAAA;AAEhC;AAEA,IAAM,OAAO;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAe;",
62
+ "debugId": "B3125C50E879066564756E2164756E21",
61
63
  "names": []
62
64
  }