@opentui/core 0.1.96 → 0.1.97

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.
@@ -6,7 +6,7 @@
6
6
  "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// @generated by enums.py\n\nexport let Align = /*#__PURE__*/function (Align) {\n Align[Align[\"Auto\"] = 0] = \"Auto\";\n Align[Align[\"FlexStart\"] = 1] = \"FlexStart\";\n Align[Align[\"Center\"] = 2] = \"Center\";\n Align[Align[\"FlexEnd\"] = 3] = \"FlexEnd\";\n Align[Align[\"Stretch\"] = 4] = \"Stretch\";\n Align[Align[\"Baseline\"] = 5] = \"Baseline\";\n Align[Align[\"SpaceBetween\"] = 6] = \"SpaceBetween\";\n Align[Align[\"SpaceAround\"] = 7] = \"SpaceAround\";\n Align[Align[\"SpaceEvenly\"] = 8] = \"SpaceEvenly\";\n return Align;\n}({});\nexport let BoxSizing = /*#__PURE__*/function (BoxSizing) {\n BoxSizing[BoxSizing[\"BorderBox\"] = 0] = \"BorderBox\";\n BoxSizing[BoxSizing[\"ContentBox\"] = 1] = \"ContentBox\";\n return BoxSizing;\n}({});\nexport let Dimension = /*#__PURE__*/function (Dimension) {\n Dimension[Dimension[\"Width\"] = 0] = \"Width\";\n Dimension[Dimension[\"Height\"] = 1] = \"Height\";\n return Dimension;\n}({});\nexport let Direction = /*#__PURE__*/function (Direction) {\n Direction[Direction[\"Inherit\"] = 0] = \"Inherit\";\n Direction[Direction[\"LTR\"] = 1] = \"LTR\";\n Direction[Direction[\"RTL\"] = 2] = \"RTL\";\n return Direction;\n}({});\nexport let Display = /*#__PURE__*/function (Display) {\n Display[Display[\"Flex\"] = 0] = \"Flex\";\n Display[Display[\"None\"] = 1] = \"None\";\n Display[Display[\"Contents\"] = 2] = \"Contents\";\n return Display;\n}({});\nexport let Edge = /*#__PURE__*/function (Edge) {\n Edge[Edge[\"Left\"] = 0] = \"Left\";\n Edge[Edge[\"Top\"] = 1] = \"Top\";\n Edge[Edge[\"Right\"] = 2] = \"Right\";\n Edge[Edge[\"Bottom\"] = 3] = \"Bottom\";\n Edge[Edge[\"Start\"] = 4] = \"Start\";\n Edge[Edge[\"End\"] = 5] = \"End\";\n Edge[Edge[\"Horizontal\"] = 6] = \"Horizontal\";\n Edge[Edge[\"Vertical\"] = 7] = \"Vertical\";\n Edge[Edge[\"All\"] = 8] = \"All\";\n return Edge;\n}({});\nexport let Errata = /*#__PURE__*/function (Errata) {\n Errata[Errata[\"None\"] = 0] = \"None\";\n Errata[Errata[\"StretchFlexBasis\"] = 1] = \"StretchFlexBasis\";\n Errata[Errata[\"AbsolutePositionWithoutInsetsExcludesPadding\"] = 2] = \"AbsolutePositionWithoutInsetsExcludesPadding\";\n Errata[Errata[\"AbsolutePercentAgainstInnerSize\"] = 4] = \"AbsolutePercentAgainstInnerSize\";\n Errata[Errata[\"All\"] = 2147483647] = \"All\";\n Errata[Errata[\"Classic\"] = 2147483646] = \"Classic\";\n return Errata;\n}({});\nexport let ExperimentalFeature = /*#__PURE__*/function (ExperimentalFeature) {\n ExperimentalFeature[ExperimentalFeature[\"WebFlexBasis\"] = 0] = \"WebFlexBasis\";\n return ExperimentalFeature;\n}({});\nexport let FlexDirection = /*#__PURE__*/function (FlexDirection) {\n FlexDirection[FlexDirection[\"Column\"] = 0] = \"Column\";\n FlexDirection[FlexDirection[\"ColumnReverse\"] = 1] = \"ColumnReverse\";\n FlexDirection[FlexDirection[\"Row\"] = 2] = \"Row\";\n FlexDirection[FlexDirection[\"RowReverse\"] = 3] = \"RowReverse\";\n return FlexDirection;\n}({});\nexport let Gutter = /*#__PURE__*/function (Gutter) {\n Gutter[Gutter[\"Column\"] = 0] = \"Column\";\n Gutter[Gutter[\"Row\"] = 1] = \"Row\";\n Gutter[Gutter[\"All\"] = 2] = \"All\";\n return Gutter;\n}({});\nexport let Justify = /*#__PURE__*/function (Justify) {\n Justify[Justify[\"FlexStart\"] = 0] = \"FlexStart\";\n Justify[Justify[\"Center\"] = 1] = \"Center\";\n Justify[Justify[\"FlexEnd\"] = 2] = \"FlexEnd\";\n Justify[Justify[\"SpaceBetween\"] = 3] = \"SpaceBetween\";\n Justify[Justify[\"SpaceAround\"] = 4] = \"SpaceAround\";\n Justify[Justify[\"SpaceEvenly\"] = 5] = \"SpaceEvenly\";\n return Justify;\n}({});\nexport let LogLevel = /*#__PURE__*/function (LogLevel) {\n LogLevel[LogLevel[\"Error\"] = 0] = \"Error\";\n LogLevel[LogLevel[\"Warn\"] = 1] = \"Warn\";\n LogLevel[LogLevel[\"Info\"] = 2] = \"Info\";\n LogLevel[LogLevel[\"Debug\"] = 3] = \"Debug\";\n LogLevel[LogLevel[\"Verbose\"] = 4] = \"Verbose\";\n LogLevel[LogLevel[\"Fatal\"] = 5] = \"Fatal\";\n return LogLevel;\n}({});\nexport let MeasureMode = /*#__PURE__*/function (MeasureMode) {\n MeasureMode[MeasureMode[\"Undefined\"] = 0] = \"Undefined\";\n MeasureMode[MeasureMode[\"Exactly\"] = 1] = \"Exactly\";\n MeasureMode[MeasureMode[\"AtMost\"] = 2] = \"AtMost\";\n return MeasureMode;\n}({});\nexport let NodeType = /*#__PURE__*/function (NodeType) {\n NodeType[NodeType[\"Default\"] = 0] = \"Default\";\n NodeType[NodeType[\"Text\"] = 1] = \"Text\";\n return NodeType;\n}({});\nexport let Overflow = /*#__PURE__*/function (Overflow) {\n Overflow[Overflow[\"Visible\"] = 0] = \"Visible\";\n Overflow[Overflow[\"Hidden\"] = 1] = \"Hidden\";\n Overflow[Overflow[\"Scroll\"] = 2] = \"Scroll\";\n return Overflow;\n}({});\nexport let PositionType = /*#__PURE__*/function (PositionType) {\n PositionType[PositionType[\"Static\"] = 0] = \"Static\";\n PositionType[PositionType[\"Relative\"] = 1] = \"Relative\";\n PositionType[PositionType[\"Absolute\"] = 2] = \"Absolute\";\n return PositionType;\n}({});\nexport let Unit = /*#__PURE__*/function (Unit) {\n Unit[Unit[\"Undefined\"] = 0] = \"Undefined\";\n Unit[Unit[\"Point\"] = 1] = \"Point\";\n Unit[Unit[\"Percent\"] = 2] = \"Percent\";\n Unit[Unit[\"Auto\"] = 3] = \"Auto\";\n return Unit;\n}({});\nexport let Wrap = /*#__PURE__*/function (Wrap) {\n Wrap[Wrap[\"NoWrap\"] = 0] = \"NoWrap\";\n Wrap[Wrap[\"Wrap\"] = 1] = \"Wrap\";\n Wrap[Wrap[\"WrapReverse\"] = 2] = \"WrapReverse\";\n return Wrap;\n}({});\nconst constants = {\n ALIGN_AUTO: Align.Auto,\n ALIGN_FLEX_START: Align.FlexStart,\n ALIGN_CENTER: Align.Center,\n ALIGN_FLEX_END: Align.FlexEnd,\n ALIGN_STRETCH: Align.Stretch,\n ALIGN_BASELINE: Align.Baseline,\n ALIGN_SPACE_BETWEEN: Align.SpaceBetween,\n ALIGN_SPACE_AROUND: Align.SpaceAround,\n ALIGN_SPACE_EVENLY: Align.SpaceEvenly,\n BOX_SIZING_BORDER_BOX: BoxSizing.BorderBox,\n BOX_SIZING_CONTENT_BOX: BoxSizing.ContentBox,\n DIMENSION_WIDTH: Dimension.Width,\n DIMENSION_HEIGHT: Dimension.Height,\n DIRECTION_INHERIT: Direction.Inherit,\n DIRECTION_LTR: Direction.LTR,\n DIRECTION_RTL: Direction.RTL,\n DISPLAY_FLEX: Display.Flex,\n DISPLAY_NONE: Display.None,\n DISPLAY_CONTENTS: Display.Contents,\n EDGE_LEFT: Edge.Left,\n EDGE_TOP: Edge.Top,\n EDGE_RIGHT: Edge.Right,\n EDGE_BOTTOM: Edge.Bottom,\n EDGE_START: Edge.Start,\n EDGE_END: Edge.End,\n EDGE_HORIZONTAL: Edge.Horizontal,\n EDGE_VERTICAL: Edge.Vertical,\n EDGE_ALL: Edge.All,\n ERRATA_NONE: Errata.None,\n ERRATA_STRETCH_FLEX_BASIS: Errata.StretchFlexBasis,\n ERRATA_ABSOLUTE_POSITION_WITHOUT_INSETS_EXCLUDES_PADDING: Errata.AbsolutePositionWithoutInsetsExcludesPadding,\n ERRATA_ABSOLUTE_PERCENT_AGAINST_INNER_SIZE: Errata.AbsolutePercentAgainstInnerSize,\n ERRATA_ALL: Errata.All,\n ERRATA_CLASSIC: Errata.Classic,\n EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS: ExperimentalFeature.WebFlexBasis,\n FLEX_DIRECTION_COLUMN: FlexDirection.Column,\n FLEX_DIRECTION_COLUMN_REVERSE: FlexDirection.ColumnReverse,\n FLEX_DIRECTION_ROW: FlexDirection.Row,\n FLEX_DIRECTION_ROW_REVERSE: FlexDirection.RowReverse,\n GUTTER_COLUMN: Gutter.Column,\n GUTTER_ROW: Gutter.Row,\n GUTTER_ALL: Gutter.All,\n JUSTIFY_FLEX_START: Justify.FlexStart,\n JUSTIFY_CENTER: Justify.Center,\n JUSTIFY_FLEX_END: Justify.FlexEnd,\n JUSTIFY_SPACE_BETWEEN: Justify.SpaceBetween,\n JUSTIFY_SPACE_AROUND: Justify.SpaceAround,\n JUSTIFY_SPACE_EVENLY: Justify.SpaceEvenly,\n LOG_LEVEL_ERROR: LogLevel.Error,\n LOG_LEVEL_WARN: LogLevel.Warn,\n LOG_LEVEL_INFO: LogLevel.Info,\n LOG_LEVEL_DEBUG: LogLevel.Debug,\n LOG_LEVEL_VERBOSE: LogLevel.Verbose,\n LOG_LEVEL_FATAL: LogLevel.Fatal,\n MEASURE_MODE_UNDEFINED: MeasureMode.Undefined,\n MEASURE_MODE_EXACTLY: MeasureMode.Exactly,\n MEASURE_MODE_AT_MOST: MeasureMode.AtMost,\n NODE_TYPE_DEFAULT: NodeType.Default,\n NODE_TYPE_TEXT: NodeType.Text,\n OVERFLOW_VISIBLE: Overflow.Visible,\n OVERFLOW_HIDDEN: Overflow.Hidden,\n OVERFLOW_SCROLL: Overflow.Scroll,\n POSITION_TYPE_STATIC: PositionType.Static,\n POSITION_TYPE_RELATIVE: PositionType.Relative,\n POSITION_TYPE_ABSOLUTE: PositionType.Absolute,\n UNIT_UNDEFINED: Unit.Undefined,\n UNIT_POINT: Unit.Point,\n UNIT_PERCENT: Unit.Percent,\n UNIT_AUTO: Unit.Auto,\n WRAP_NO_WRAP: Wrap.NoWrap,\n WRAP_WRAP: Wrap.Wrap,\n WRAP_WRAP_REVERSE: Wrap.WrapReverse\n};\nexport default constants;\n//# sourceMappingURL=YGEnums.js.map",
7
7
  "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n */\n\n// @ts-nocheck\n\nimport { Unit, Direction } from \"./generated/YGEnums.js\";\nimport YGEnums from \"./generated/YGEnums.js\";\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport default function wrapAssembly(lib) {\n function patch(prototype, name, fn) {\n const original = prototype[name];\n prototype[name] = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return fn.call(this, original, ...args);\n };\n }\n for (const fnName of ['setPosition', 'setMargin', 'setFlexBasis', 'setWidth', 'setHeight', 'setMinWidth', 'setMinHeight', 'setMaxWidth', 'setMaxHeight', 'setPadding', 'setGap']) {\n const methods = {\n [Unit.Point]: lib.Node.prototype[fnName],\n [Unit.Percent]: lib.Node.prototype[`${fnName}Percent`],\n [Unit.Auto]: lib.Node.prototype[`${fnName}Auto`]\n };\n patch(lib.Node.prototype, fnName, function (original) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n // We patch all these functions to add support for the following calls:\n // .setWidth(100) / .setWidth(\"100%\") / .setWidth(.getWidth()) / .setWidth(\"auto\")\n\n const value = args.pop();\n let unit, asNumber;\n if (value === 'auto') {\n unit = Unit.Auto;\n asNumber = undefined;\n } else if (typeof value === 'object') {\n unit = value.unit;\n asNumber = value.valueOf();\n } else {\n unit = typeof value === 'string' && value.endsWith('%') ? Unit.Percent : Unit.Point;\n asNumber = parseFloat(value);\n if (value !== undefined && !Number.isNaN(value) && Number.isNaN(asNumber)) {\n throw new Error(`Invalid value ${value} for ${fnName}`);\n }\n }\n if (!methods[unit]) throw new Error(`Failed to execute \"${fnName}\": Unsupported unit '${value}'`);\n if (asNumber !== undefined) {\n return methods[unit].call(this, ...args, asNumber);\n } else {\n return methods[unit].call(this, ...args);\n }\n });\n }\n function wrapMeasureFunction(measureFunction) {\n return lib.MeasureCallback.implement({\n measure: function () {\n const {\n width,\n height\n } = measureFunction(...arguments);\n return {\n width: width ?? NaN,\n height: height ?? NaN\n };\n }\n });\n }\n patch(lib.Node.prototype, 'setMeasureFunc', function (original, measureFunc) {\n // This patch is just a convenience patch, since it helps write more\n // idiomatic source code (such as .setMeasureFunc(null))\n if (measureFunc) {\n return original.call(this, wrapMeasureFunction(measureFunc));\n } else {\n return this.unsetMeasureFunc();\n }\n });\n function wrapDirtiedFunc(dirtiedFunction) {\n return lib.DirtiedCallback.implement({\n dirtied: dirtiedFunction\n });\n }\n patch(lib.Node.prototype, 'setDirtiedFunc', function (original, dirtiedFunc) {\n original.call(this, wrapDirtiedFunc(dirtiedFunc));\n });\n patch(lib.Config.prototype, 'free', function () {\n // Since we handle the memory allocation ourselves (via lib.Config.create),\n // we also need to handle the deallocation\n lib.Config.destroy(this);\n });\n patch(lib.Node, 'create', (_, config) => {\n // We decide the constructor we want to call depending on the parameters\n return config ? lib.Node.createWithConfig(config) : lib.Node.createDefault();\n });\n patch(lib.Node.prototype, 'free', function () {\n // Since we handle the memory allocation ourselves (via lib.Node.create),\n // we also need to handle the deallocation\n lib.Node.destroy(this);\n });\n patch(lib.Node.prototype, 'freeRecursive', function () {\n for (let t = 0, T = this.getChildCount(); t < T; ++t) {\n this.getChild(0).freeRecursive();\n }\n this.free();\n });\n patch(lib.Node.prototype, 'calculateLayout', function (original) {\n let width = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : NaN;\n let height = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : NaN;\n let direction = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Direction.LTR;\n // Just a small patch to add support for the function default parameters\n return original.call(this, width, height, direction);\n });\n return {\n Config: lib.Config,\n Node: lib.Node,\n ...YGEnums\n };\n}\n//# sourceMappingURL=wrapAssembly.js.map",
8
8
  "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n */\n\n// @ts-ignore untyped from Emscripten\nimport loadYoga from '../binaries/yoga-wasm-base64-esm.js';\nimport wrapAssembly from \"./wrapAssembly.js\";\nconst Yoga = wrapAssembly(await loadYoga());\nexport default Yoga;\nexport * from \"./generated/YGEnums.js\";\n//# sourceMappingURL=index.js.map",
9
- "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}\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",
9
+ "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",
10
10
  "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",
11
11
  "export class RGBA {\n buffer: Float32Array\n\n constructor(buffer: Float32Array) {\n this.buffer = buffer\n }\n\n static fromArray(array: Float32Array) {\n return new RGBA(array)\n }\n\n static fromValues(r: number, g: number, b: number, a: number = 1.0) {\n return new RGBA(new Float32Array([r, g, b, a]))\n }\n\n static fromInts(r: number, g: number, b: number, a: number = 255) {\n return new RGBA(new Float32Array([r / 255, g / 255, b / 255, a / 255]))\n }\n\n static fromHex(hex: string): RGBA {\n return hexToRgb(hex)\n }\n\n toInts(): [number, number, number, number] {\n return [Math.round(this.r * 255), Math.round(this.g * 255), Math.round(this.b * 255), Math.round(this.a * 255)]\n }\n\n get r(): number {\n return this.buffer[0]\n }\n\n set r(value: number) {\n this.buffer[0] = value\n }\n\n get g(): number {\n return this.buffer[1]\n }\n\n set g(value: number) {\n this.buffer[1] = value\n }\n\n get b(): number {\n return this.buffer[2]\n }\n\n set b(value: number) {\n this.buffer[2] = value\n }\n\n get a(): number {\n return this.buffer[3]\n }\n\n set a(value: number) {\n this.buffer[3] = value\n }\n\n map<R>(fn: (value: number) => R) {\n return [fn(this.r), fn(this.g), fn(this.b), fn(this.a)]\n }\n\n toString() {\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 this.r === other.r && this.g === other.g && this.b === other.b && this.a === other.a\n }\n}\n\nexport type ColorInput = string | RGBA\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) / 255\n const g = parseInt(hex.substring(2, 4), 16) / 255\n const b = parseInt(hex.substring(4, 6), 16) / 255\n const a = hex.length === 8 ? parseInt(hex.substring(6, 8), 16) / 255 : 1\n\n return RGBA.fromValues(r, g, b, a)\n}\n\nexport function rgbToHex(rgb: RGBA): string {\n const components = rgb.a === 1 ? [rgb.r, rgb.g, rgb.b] : [rgb.r, rgb.g, rgb.b, rgb.a]\n return (\n \"#\" +\n components\n .map((x) => {\n const hex = Math.floor(Math.max(0, Math.min(1, x) * 255)).toString(16)\n return hex.length === 1 ? \"0\" + hex : hex\n })\n .join(\"\")\n )\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",
12
12
  "import { OptimizedBuffer } from \"../buffer.js\"\nimport { parseColor, RGBA, type ColorInput } from \"./RGBA.js\"\nimport block from \"./fonts/block.json\" with { type: \"json\" }\nimport shade from \"./fonts/shade.json\" with { type: \"json\" }\nimport slick from \"./fonts/slick.json\" with { type: \"json\" }\nimport tiny from \"./fonts/tiny.json\" with { type: \"json\" }\nimport huge from \"./fonts/huge.json\" with { type: \"json\" }\nimport grid from \"./fonts/grid.json\" with { type: \"json\" }\nimport pallet from \"./fonts/pallet.json\" with { type: \"json\" }\n\n/*\n * Renders ASCII fonts to a buffer.\n * Font definitions plugged from cfonts - https://github.com/dominikwilkowski/cfonts\n */\n\nexport type ASCIIFontName = \"tiny\" | \"block\" | \"shade\" | \"slick\" | \"huge\" | \"grid\" | \"pallet\"\n\nexport const fonts = {\n tiny,\n block,\n shade,\n slick,\n huge,\n grid,\n pallet,\n}\n\ntype FontSegment = {\n text: string\n colorIndex: number\n}\n\ntype FontDefinition = {\n name: string\n lines: number\n letterspace_size: number\n letterspace: string[]\n colors?: number\n chars: Record<string, string[]>\n}\n\ntype ParsedFontDefinition = {\n name: string\n lines: number\n letterspace_size: number\n letterspace: string[]\n colors: number\n chars: Record<string, FontSegment[][]>\n}\n\nconst parsedFonts: Record<string, ParsedFontDefinition> = {}\n\nfunction parseColorTags(text: string): FontSegment[] {\n const segments: FontSegment[] = []\n let currentIndex = 0\n\n const colorTagRegex = /<c(\\d+)>(.*?)<\\/c\\d+>/g\n let lastIndex = 0\n let match\n\n while ((match = colorTagRegex.exec(text)) !== null) {\n if (match.index > lastIndex) {\n const plainText = text.slice(lastIndex, match.index)\n if (plainText) {\n segments.push({ text: plainText, colorIndex: 0 })\n }\n }\n\n const colorIndex = parseInt(match[1]) - 1\n const taggedText = match[2]\n segments.push({ text: taggedText, colorIndex: Math.max(0, colorIndex) })\n\n lastIndex = match.index + match[0].length\n }\n\n if (lastIndex < text.length) {\n const remainingText = text.slice(lastIndex)\n if (remainingText) {\n segments.push({ text: remainingText, colorIndex: 0 })\n }\n }\n\n return segments\n}\n\nfunction getParsedFont(fontKey: keyof typeof fonts): ParsedFontDefinition {\n if (!parsedFonts[fontKey]) {\n const fontDef = fonts[fontKey] as FontDefinition\n const parsedChars: Record<string, FontSegment[][]> = {}\n\n for (const [char, lines] of Object.entries(fontDef.chars)) {\n parsedChars[char] = lines.map((line) => parseColorTags(line))\n }\n\n parsedFonts[fontKey] = {\n ...fontDef,\n colors: fontDef.colors || 1,\n chars: parsedChars,\n }\n }\n\n return parsedFonts[fontKey]\n}\n\nexport function measureText({ text, font = \"tiny\" }: { text: string; font?: keyof typeof fonts }): {\n width: number\n height: number\n} {\n const fontDef = getParsedFont(font)\n if (!fontDef) {\n console.warn(`Font '${font}' not found`)\n return { width: 0, height: 0 }\n }\n\n let currentX = 0\n\n for (let i = 0; i < text.length; i++) {\n const char = text[i].toUpperCase()\n const charDef = fontDef.chars[char]\n\n if (!charDef) {\n const spaceChar = fontDef.chars[\" \"]\n if (spaceChar && spaceChar[0]) {\n let spaceWidth = 0\n for (const segment of spaceChar[0]) {\n spaceWidth += segment.text.length\n }\n currentX += spaceWidth\n } else {\n currentX += 1\n }\n continue\n }\n\n let charWidth = 0\n if (charDef[0]) {\n for (const segment of charDef[0]) {\n charWidth += segment.text.length\n }\n }\n\n currentX += charWidth\n\n if (i < text.length - 1) {\n currentX += fontDef.letterspace_size\n }\n }\n\n return {\n width: currentX,\n height: fontDef.lines,\n }\n}\n\nexport function getCharacterPositions(text: string, font: keyof typeof fonts = \"tiny\"): number[] {\n const fontDef = getParsedFont(font)\n if (!fontDef) {\n return [0]\n }\n\n const positions: number[] = [0]\n let currentX = 0\n\n for (let i = 0; i < text.length; i++) {\n const char = text[i].toUpperCase()\n const charDef = fontDef.chars[char]\n\n let charWidth = 0\n if (!charDef) {\n const spaceChar = fontDef.chars[\" \"]\n if (spaceChar && spaceChar[0]) {\n for (const segment of spaceChar[0]) {\n charWidth += segment.text.length\n }\n } else {\n charWidth = 1\n }\n } else if (charDef[0]) {\n for (const segment of charDef[0]) {\n charWidth += segment.text.length\n }\n }\n\n currentX += charWidth\n\n if (i < text.length - 1) {\n currentX += fontDef.letterspace_size\n }\n\n positions.push(currentX)\n }\n\n return positions\n}\n\nexport function coordinateToCharacterIndex(x: number, text: string, font: keyof typeof fonts = \"tiny\"): number {\n const positions = getCharacterPositions(text, font)\n\n if (x < 0) {\n return 0\n }\n\n for (let i = 0; i < positions.length - 1; i++) {\n const currentPos = positions[i]\n const nextPos = positions[i + 1]\n\n if (x >= currentPos && x < nextPos) {\n const charMidpoint = currentPos + (nextPos - currentPos) / 2\n return x < charMidpoint ? i : i + 1\n }\n }\n\n if (positions.length > 0 && x >= positions[positions.length - 1]) {\n return text.length\n }\n\n return 0\n}\n\nexport function renderFontToFrameBuffer(\n buffer: OptimizedBuffer,\n {\n text,\n x = 0,\n y = 0,\n color = [RGBA.fromInts(255, 255, 255, 255)],\n backgroundColor = RGBA.fromInts(0, 0, 0, 255),\n font = \"tiny\",\n }: {\n text: string\n x?: number\n y?: number\n color?: ColorInput | ColorInput[]\n backgroundColor?: ColorInput\n font?: keyof typeof fonts\n },\n): { width: number; height: number } {\n const width = buffer.width\n const height = buffer.height\n\n const fontDef = getParsedFont(font)\n if (!fontDef) {\n console.warn(`Font '${font}' not found`)\n return { width: 0, height: 0 }\n }\n\n const colors = Array.isArray(color) ? color : [color]\n\n if (y < 0 || y + fontDef.lines > height) {\n return { width: 0, height: fontDef.lines }\n }\n\n let currentX = x\n const startX = x\n\n for (let i = 0; i < text.length; i++) {\n const char = text[i].toUpperCase()\n const charDef = fontDef.chars[char]\n\n if (!charDef) {\n const spaceChar = fontDef.chars[\" \"]\n if (spaceChar && spaceChar[0]) {\n let spaceWidth = 0\n for (const segment of spaceChar[0]) {\n spaceWidth += segment.text.length\n }\n currentX += spaceWidth\n } else {\n currentX += 1\n }\n continue\n }\n\n let charWidth = 0\n if (charDef[0]) {\n for (const segment of charDef[0]) {\n charWidth += segment.text.length\n }\n }\n\n if (currentX >= width) break\n if (currentX + charWidth < 0) {\n currentX += charWidth + fontDef.letterspace_size\n continue\n }\n\n for (let lineIdx = 0; lineIdx < fontDef.lines && lineIdx < charDef.length; lineIdx++) {\n const segments = charDef[lineIdx]\n const renderY = y + lineIdx\n\n if (renderY >= 0 && renderY < height) {\n let segmentX = currentX\n\n for (const segment of segments) {\n const segmentColor = colors[segment.colorIndex] || colors[0]\n\n for (let charIdx = 0; charIdx < segment.text.length; charIdx++) {\n const renderX = segmentX + charIdx\n\n if (renderX >= 0 && renderX < width) {\n const fontChar = segment.text[charIdx]\n if (fontChar !== \" \") {\n buffer.setCellWithAlphaBlending(\n renderX,\n renderY,\n fontChar,\n parseColor(segmentColor),\n parseColor(backgroundColor),\n )\n }\n }\n }\n\n segmentX += segment.text.length\n }\n }\n }\n\n currentX += charWidth\n\n if (i < text.length - 1) {\n currentX += fontDef.letterspace_size\n }\n }\n\n return {\n width: currentX - startX,\n height: fontDef.lines,\n }\n}\n",
@@ -25,7 +25,7 @@
25
25
  "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 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 ) {\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 {\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) {\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> = 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 {\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 {\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",
26
26
  "// 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\" | \"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}\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 | { 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}\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 canStillBePixelResolution(state: ParametricCsiLike): boolean {\n return state.firstParamValue === 4 && state.semicolons === 2\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.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 (\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 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 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 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 // 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 }\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 this.reconcileDeferredStateWithProtocolContext()\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 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 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 this.emitKeyOrResponse(\"csi\", 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_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.emitKeyOrResponse(\"csi\", 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_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 `[`. Consume the rest of `<digits;digits;digitsM/m` as one\n // opaque response so split mouse bytes never leak into text.\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 this.emitOpaqueResponse(\"unknown\", bytes.subarray(this.unitStart, end))\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 `[`. Consume `[M` plus its three raw payload bytes as one\n // opaque response so split mouse bytes never leak into text.\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 this.emitOpaqueResponse(\"unknown\", bytes.subarray(this.unitStart, end))\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.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.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.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.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",
27
27
  "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 ConcealOptions {\n enabled: boolean\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?: ConcealOptions,\n): TextChunk[] {\n const chunks: TextChunk[] = []\n const defaultStyle = syntaxStyle.getStyle(\"default\")\n const concealEnabled = options?.enabled ?? true\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 = {}\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 chunks.push({\n __isChunk: true,\n text,\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\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 chunks.push({\n __isChunk: true,\n text,\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\n return chunks\n}\n\nexport interface TreeSitterToStyledTextOptions {\n conceal?: ConcealOptions\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) {\n const chunks = treeSitterToTextChunks(content, result.highlights, syntaxStyle, options?.conceal)\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",
28
- "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} 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\"\n\nregisterEnvVar({\n name: \"OTUI_TREE_SITTER_WORKER_PATH\",\n description: \"Path to the TreeSitter worker\",\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\nlet DEFAULT_PARSERS: FiletypeParserOptions[] = getParsers()\n\nexport function addDefaultParsers(parsers: FiletypeParserOptions[]): void {\n for (const parser of parsers) {\n DEFAULT_PARSERS = [\n ...DEFAULT_PARSERS.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: Worker | 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: Map<string, (response: any) => void> = new Map()\n private messageIdCounter: number = 0\n private editQueues: Map<number, ProcessQueue<EditQueueItem>> = new Map()\n private debouncer: DebounceController\n private options: TreeSitterClientOptions\n\n constructor(options: TreeSitterClientOptions) {\n super()\n this.options = options\n this.debouncer = createDebounce(\"tree-sitter-client\")\n this.startWorker()\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 let worker_path: string | URL\n\n if (env.OTUI_TREE_SITTER_WORKER_PATH) {\n worker_path = env.OTUI_TREE_SITTER_WORKER_PATH\n } else if (typeof OTUI_TREE_SITTER_WORKER_PATH !== \"undefined\") {\n worker_path = OTUI_TREE_SITTER_WORKER_PATH\n } else if (this.options.workerPath) {\n worker_path = this.options.workerPath\n } else {\n worker_path = new URL(\"./parser.worker.js\", import.meta.url).href\n if (!existsSync(resolve(import.meta.dirname, \"parser.worker.js\"))) {\n worker_path = new URL(\"./parser.worker.ts\", import.meta.url).href\n }\n }\n\n this.worker = new Worker(worker_path)\n\n // @ts-ignore - onmessage exists\n this.worker.onmessage = this.handleWorkerMessage.bind(this)\n\n // @ts-ignore - onerror exists\n this.worker.onerror = (error: ErrorEvent) => {\n console.error(\"TreeSitter worker error:\", error.message)\n\n // If we're still initializing, reject the init promise\n if (this.initializeResolvers) {\n clearTimeout(this.initializeResolvers.timeoutId)\n this.initializeResolvers.reject(new Error(`Worker error: ${error.message}`))\n this.initializeResolvers = undefined\n }\n\n this.emitError(`Worker error: ${error.message}`)\n }\n }\n\n private stopWorker() {\n if (!this.worker) {\n return\n }\n\n this.worker.terminate()\n this.worker = undefined\n }\n\n // NOTE: Unused, but useful for debugging and testing\n private handleReset() {\n this.buffers.clear()\n this.stopWorker()\n this.startWorker()\n this.initializePromise = undefined\n this.initializeResolvers = undefined\n return this.initialize()\n }\n\n async initialize(): Promise<void> {\n if (this.initializePromise) {\n return this.initializePromise\n }\n\n this.initializePromise = new Promise((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.worker?.postMessage({\n type: \"INIT\",\n dataPath: this.options.dataPath,\n })\n })\n\n await this.initializePromise\n await this.registerDefaultParsers()\n\n return this.initializePromise\n }\n\n private async registerDefaultParsers(): Promise<void> {\n for (const parser of DEFAULT_PARSERS) {\n this.addFiletypeParser(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 const resolvedParser: FiletypeParserOptions = {\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 this.worker?.postMessage({ type: \"ADD_FILETYPE_PARSER\", filetypeParser: resolvedParser })\n }\n\n public async getPerformance(): Promise<PerformanceStats> {\n const messageId = `performance_${this.messageIdCounter++}`\n return new Promise<PerformanceStats>((resolve) => {\n this.messageCallbacks.set(messageId, resolve)\n this.worker?.postMessage({ type: \"GET_PERFORMANCE\", messageId })\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) => {\n this.messageCallbacks.set(messageId, resolve)\n this.worker?.postMessage({\n type: \"ONESHOT_HIGHLIGHT\",\n content,\n filetype,\n messageId,\n })\n })\n }\n\n private handleWorkerMessage(event: MessageEvent) {\n const { type, bufferId, error, highlights, warning, messageId, hasParser, performance, version } = event.data\n\n if (type === \"HIGHLIGHT_RESPONSE\") {\n const buffer = this.buffers.get(bufferId)\n if (!buffer || !buffer.hasParser) return\n if (buffer.version !== version) {\n this.resetBuffer(bufferId, buffer.version, buffer.content)\n return\n }\n this.emit(\"highlights:response\", bufferId, version, highlights)\n }\n\n if (type === \"INIT_RESPONSE\") {\n if (this.initializeResolvers) {\n clearTimeout(this.initializeResolvers.timeoutId)\n if (error) {\n console.error(\"TreeSitter client initialization failed:\", error)\n this.initializeResolvers.reject(new Error(error))\n } else {\n this.initialized = true\n this.initializeResolvers.resolve()\n }\n this.initializeResolvers = undefined\n return\n }\n }\n\n if (type === \"PARSER_INIT_RESPONSE\") {\n const callback = this.messageCallbacks.get(messageId)\n if (callback) {\n this.messageCallbacks.delete(messageId)\n callback({ hasParser, warning, error })\n }\n return\n }\n\n if (type === \"PRELOAD_PARSER_RESPONSE\") {\n const callback = this.messageCallbacks.get(messageId)\n if (callback) {\n this.messageCallbacks.delete(messageId)\n callback({ hasParser })\n }\n return\n }\n\n if (type === \"BUFFER_DISPOSED\") {\n const callback = this.messageCallbacks.get(`dispose_${bufferId}`)\n if (callback) {\n this.messageCallbacks.delete(`dispose_${bufferId}`)\n callback(true)\n }\n this.emit(\"buffer:disposed\", bufferId)\n return\n }\n\n if (type === \"PERFORMANCE_RESPONSE\") {\n const callback = this.messageCallbacks.get(messageId)\n if (callback) {\n this.messageCallbacks.delete(messageId)\n callback(performance)\n }\n return\n }\n\n if (type === \"ONESHOT_HIGHLIGHT_RESPONSE\") {\n const callback = this.messageCallbacks.get(messageId)\n if (callback) {\n this.messageCallbacks.delete(messageId)\n callback({ highlights, warning, error })\n }\n return\n }\n\n if (type === \"UPDATE_DATA_PATH_RESPONSE\") {\n const callback = this.messageCallbacks.get(messageId)\n if (callback) {\n this.messageCallbacks.delete(messageId)\n callback({ error })\n }\n return\n }\n\n if (type === \"CLEAR_CACHE_RESPONSE\") {\n const callback = this.messageCallbacks.get(messageId)\n if (callback) {\n this.messageCallbacks.delete(messageId)\n callback({ error })\n }\n return\n }\n\n if (warning) {\n this.emitWarning(warning, bufferId)\n return\n }\n\n if (error) {\n this.emitError(error, bufferId)\n return\n }\n\n if (type === \"WORKER_LOG\") {\n const { logType, data } = event.data\n const message = data.join(\" \")\n\n this.emit(\"worker:log\", logType, message)\n\n if (logType === \"log\") {\n console.log(\"TSWorker:\", ...data)\n } else if (logType === \"error\") {\n console.error(\"TSWorker:\", ...data)\n } else if (logType === \"warn\") {\n console.warn(\"TSWorker:\", ...data)\n }\n return\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) => {\n this.messageCallbacks.set(messageId, resolve)\n this.worker?.postMessage({\n type: \"PRELOAD_PARSER\",\n filetype,\n messageId,\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) => {\n this.messageCallbacks.set(messageId, resolve)\n this.worker?.postMessage({\n type: \"INITIALIZE_PARSER\",\n bufferId: id,\n version,\n content,\n filetype,\n messageId,\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.worker?.postMessage({\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) => {\n const messageId = `dispose_${bufferId}`\n this.messageCallbacks.set(messageId, resolve)\n try {\n this.worker!.postMessage({\n type: \"DISPOSE_BUFFER\",\n bufferId,\n })\n } catch (error) {\n console.error(\"Error disposing buffer\", error)\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 async destroy(): Promise<void> {\n if (this.initializeResolvers) {\n clearTimeout(this.initializeResolvers.timeoutId)\n // Reject pending initialization promise to prevent hanging awaits\n this.initializeResolvers.reject(new Error(\"Client destroyed during initialization\"))\n this.initializeResolvers = undefined\n }\n\n for (const [messageId, callback] of this.messageCallbacks.entries()) {\n if (typeof callback === \"function\") {\n try {\n callback({ error: \"Client destroyed\" })\n } catch (e) {\n // Ignore errors during cleanup\n }\n }\n }\n this.messageCallbacks.clear()\n\n clearDebounceScope(\"tree-sitter-client\")\n this.debouncer.clear()\n\n this.editQueues.clear()\n this.buffers.clear()\n\n this.stopWorker()\n\n this.initialized = false\n this.initializePromise = undefined\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, (response: any) => {\n if (response.error) {\n reject(new Error(response.error))\n } else {\n resolve()\n }\n })\n this.worker!.postMessage({\n type: \"UPDATE_DATA_PATH\",\n dataPath,\n messageId,\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, (response: any) => {\n if (response.error) {\n reject(new Error(response.error))\n } else {\n resolve()\n }\n })\n this.worker!.postMessage({\n type: \"CLEAR_CACHE\",\n messageId,\n })\n })\n }\n}\n",
28
+ "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} 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\"\n\nregisterEnvVar({\n name: \"OTUI_TREE_SITTER_WORKER_PATH\",\n description: \"Path to the TreeSitter worker\",\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\nlet DEFAULT_PARSERS: FiletypeParserOptions[] = getParsers()\n\nexport function addDefaultParsers(parsers: FiletypeParserOptions[]): void {\n for (const parser of parsers) {\n DEFAULT_PARSERS = [\n ...DEFAULT_PARSERS.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: Worker | 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: Map<string, (response: any) => void> = new Map()\n private messageIdCounter: number = 0\n private editQueues: Map<number, ProcessQueue<EditQueueItem>> = new Map()\n private debouncer: DebounceController\n private options: TreeSitterClientOptions\n\n constructor(options: TreeSitterClientOptions) {\n super()\n this.options = options\n this.debouncer = createDebounce(\"tree-sitter-client\")\n this.startWorker()\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 let worker_path: string | URL\n\n if (env.OTUI_TREE_SITTER_WORKER_PATH) {\n worker_path = env.OTUI_TREE_SITTER_WORKER_PATH\n } else if (typeof OTUI_TREE_SITTER_WORKER_PATH !== \"undefined\") {\n worker_path = OTUI_TREE_SITTER_WORKER_PATH\n } else if (this.options.workerPath) {\n worker_path = this.options.workerPath\n } else {\n worker_path = new URL(\"./parser.worker.js\", import.meta.url).href\n if (!existsSync(resolve(import.meta.dirname, \"parser.worker.js\"))) {\n worker_path = new URL(\"./parser.worker.ts\", import.meta.url).href\n }\n }\n\n this.worker = new Worker(worker_path)\n\n // @ts-ignore - onmessage exists\n this.worker.onmessage = this.handleWorkerMessage.bind(this)\n\n // @ts-ignore - onerror exists\n this.worker.onerror = (error: ErrorEvent) => {\n console.error(\"TreeSitter worker error:\", error.message)\n\n // If we're still initializing, reject the init promise\n if (this.initializeResolvers) {\n clearTimeout(this.initializeResolvers.timeoutId)\n this.initializeResolvers.reject(new Error(`Worker error: ${error.message}`))\n this.initializeResolvers = undefined\n }\n\n this.emitError(`Worker error: ${error.message}`)\n }\n }\n\n private stopWorker() {\n if (!this.worker) {\n return\n }\n\n this.worker.terminate()\n this.worker = undefined\n }\n\n // NOTE: Unused, but useful for debugging and testing\n private handleReset() {\n this.buffers.clear()\n this.stopWorker()\n this.startWorker()\n this.initializePromise = undefined\n this.initializeResolvers = undefined\n return this.initialize()\n }\n\n async initialize(): Promise<void> {\n if (this.initializePromise) {\n return this.initializePromise\n }\n\n this.initializePromise = new Promise((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.worker?.postMessage({\n type: \"INIT\",\n dataPath: this.options.dataPath,\n })\n })\n\n await this.initializePromise\n await this.registerDefaultParsers()\n\n return this.initializePromise\n }\n\n private async registerDefaultParsers(): Promise<void> {\n for (const parser of DEFAULT_PARSERS) {\n this.addFiletypeParser(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 const resolvedParser: FiletypeParserOptions = {\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 this.worker?.postMessage({ type: \"ADD_FILETYPE_PARSER\", filetypeParser: resolvedParser })\n }\n\n public async getPerformance(): Promise<PerformanceStats> {\n const messageId = `performance_${this.messageIdCounter++}`\n return new Promise<PerformanceStats>((resolve) => {\n this.messageCallbacks.set(messageId, resolve)\n this.worker?.postMessage({ type: \"GET_PERFORMANCE\", messageId })\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) => {\n this.messageCallbacks.set(messageId, resolve)\n this.worker?.postMessage({\n type: \"ONESHOT_HIGHLIGHT\",\n content,\n filetype,\n messageId,\n })\n })\n }\n\n private handleWorkerMessage(event: MessageEvent) {\n const { type, bufferId, error, highlights, warning, messageId, hasParser, performance, version } = event.data\n\n if (type === \"HIGHLIGHT_RESPONSE\") {\n const buffer = this.buffers.get(bufferId)\n if (!buffer || !buffer.hasParser) return\n if (buffer.version !== version) {\n this.resetBuffer(bufferId, buffer.version, buffer.content)\n return\n }\n this.emit(\"highlights:response\", bufferId, version, highlights)\n }\n\n if (type === \"INIT_RESPONSE\") {\n if (this.initializeResolvers) {\n clearTimeout(this.initializeResolvers.timeoutId)\n if (error) {\n console.error(\"TreeSitter client initialization failed:\", error)\n this.initializeResolvers.reject(new Error(error))\n } else {\n this.initialized = true\n this.initializeResolvers.resolve()\n }\n this.initializeResolvers = undefined\n return\n }\n }\n\n if (type === \"PARSER_INIT_RESPONSE\") {\n const callback = this.messageCallbacks.get(messageId)\n if (callback) {\n this.messageCallbacks.delete(messageId)\n callback({ hasParser, warning, error })\n }\n return\n }\n\n if (type === \"PRELOAD_PARSER_RESPONSE\") {\n const callback = this.messageCallbacks.get(messageId)\n if (callback) {\n this.messageCallbacks.delete(messageId)\n callback({ hasParser })\n }\n return\n }\n\n if (type === \"BUFFER_DISPOSED\") {\n const callback = this.messageCallbacks.get(`dispose_${bufferId}`)\n if (callback) {\n this.messageCallbacks.delete(`dispose_${bufferId}`)\n callback(true)\n }\n this.emit(\"buffer:disposed\", bufferId)\n return\n }\n\n if (type === \"PERFORMANCE_RESPONSE\") {\n const callback = this.messageCallbacks.get(messageId)\n if (callback) {\n this.messageCallbacks.delete(messageId)\n callback(performance)\n }\n return\n }\n\n if (type === \"ONESHOT_HIGHLIGHT_RESPONSE\") {\n const callback = this.messageCallbacks.get(messageId)\n if (callback) {\n this.messageCallbacks.delete(messageId)\n callback({ highlights, warning, error })\n }\n return\n }\n\n if (type === \"UPDATE_DATA_PATH_RESPONSE\") {\n const callback = this.messageCallbacks.get(messageId)\n if (callback) {\n this.messageCallbacks.delete(messageId)\n callback({ error })\n }\n return\n }\n\n if (type === \"CLEAR_CACHE_RESPONSE\") {\n const callback = this.messageCallbacks.get(messageId)\n if (callback) {\n this.messageCallbacks.delete(messageId)\n callback({ error })\n }\n return\n }\n\n if (warning) {\n this.emitWarning(warning, bufferId)\n return\n }\n\n if (error) {\n this.emitError(error, bufferId)\n return\n }\n\n if (type === \"WORKER_LOG\") {\n const { logType, data } = event.data\n const message = data.join(\" \")\n\n this.emit(\"worker:log\", logType, message)\n return\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) => {\n this.messageCallbacks.set(messageId, resolve)\n this.worker?.postMessage({\n type: \"PRELOAD_PARSER\",\n filetype,\n messageId,\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) => {\n this.messageCallbacks.set(messageId, resolve)\n this.worker?.postMessage({\n type: \"INITIALIZE_PARSER\",\n bufferId: id,\n version,\n content,\n filetype,\n messageId,\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.worker?.postMessage({\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) => {\n const messageId = `dispose_${bufferId}`\n this.messageCallbacks.set(messageId, resolve)\n try {\n this.worker!.postMessage({\n type: \"DISPOSE_BUFFER\",\n bufferId,\n })\n } catch (error) {\n console.error(\"Error disposing buffer\", error)\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 async destroy(): Promise<void> {\n if (this.initializeResolvers) {\n clearTimeout(this.initializeResolvers.timeoutId)\n // Reject pending initialization promise to prevent hanging awaits\n this.initializeResolvers.reject(new Error(\"Client destroyed during initialization\"))\n this.initializeResolvers = undefined\n }\n\n for (const [messageId, callback] of this.messageCallbacks.entries()) {\n if (typeof callback === \"function\") {\n try {\n callback({ error: \"Client destroyed\" })\n } catch (e) {\n // Ignore errors during cleanup\n }\n }\n }\n this.messageCallbacks.clear()\n\n clearDebounceScope(\"tree-sitter-client\")\n this.debouncer.clear()\n\n this.editQueues.clear()\n this.buffers.clear()\n\n this.stopWorker()\n\n this.initialized = false\n this.initializePromise = undefined\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, (response: any) => {\n if (response.error) {\n reject(new Error(response.error))\n } else {\n resolve()\n }\n })\n this.worker!.postMessage({\n type: \"UPDATE_DATA_PATH\",\n dataPath,\n messageId,\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, (response: any) => {\n if (response.error) {\n reject(new Error(response.error))\n } else {\n resolve()\n }\n })\n this.worker!.postMessage({\n type: \"CLEAR_CACHE\",\n messageId,\n })\n })\n }\n}\n",
29
29
  "/**\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",
30
30
  "/**\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",
31
31
  "// This file is generated by assets/update.ts - DO NOT EDIT MANUALLY\n// Run 'bun assets/update.ts' to regenerate this file\n// Last generated: 2026-03-20T21:07:24.696Z\n\nimport type { FiletypeParserOptions } from \"./types.js\"\nimport { resolve, dirname } from \"path\"\nimport { fileURLToPath } from \"url\"\n\nimport javascript_highlights from \"./assets/javascript/highlights.scm\" with { type: \"file\" }\nimport javascript_language from \"./assets/javascript/tree-sitter-javascript.wasm\" with { type: \"file\" }\nimport typescript_highlights from \"./assets/typescript/highlights.scm\" with { type: \"file\" }\nimport typescript_language from \"./assets/typescript/tree-sitter-typescript.wasm\" with { type: \"file\" }\nimport markdown_highlights from \"./assets/markdown/highlights.scm\" with { type: \"file\" }\nimport markdown_language from \"./assets/markdown/tree-sitter-markdown.wasm\" with { type: \"file\" }\nimport markdown_injections from \"./assets/markdown/injections.scm\" with { type: \"file\" }\nimport markdown_inline_highlights from \"./assets/markdown_inline/highlights.scm\" with { type: \"file\" }\nimport markdown_inline_language from \"./assets/markdown_inline/tree-sitter-markdown_inline.wasm\" with { type: \"file\" }\nimport zig_highlights from \"./assets/zig/highlights.scm\" with { type: \"file\" }\nimport zig_language from \"./assets/zig/tree-sitter-zig.wasm\" with { type: \"file\" }\n\n// Cached parsers to avoid re-resolving paths on every call\nlet _cachedParsers: FiletypeParserOptions[] | undefined\n\nexport function getParsers(): FiletypeParserOptions[] {\n if (!_cachedParsers) {\n _cachedParsers = [\n {\n filetype: \"javascript\",\n aliases: [\"javascriptreact\"],\n queries: {\n highlights: [resolve(dirname(fileURLToPath(import.meta.url)), javascript_highlights)],\n },\n wasm: resolve(dirname(fileURLToPath(import.meta.url)), javascript_language),\n },\n {\n filetype: \"typescript\",\n aliases: [\"typescriptreact\"],\n queries: {\n highlights: [resolve(dirname(fileURLToPath(import.meta.url)), typescript_highlights)],\n },\n wasm: resolve(dirname(fileURLToPath(import.meta.url)), typescript_language),\n },\n {\n filetype: \"markdown\",\n queries: {\n highlights: [resolve(dirname(fileURLToPath(import.meta.url)), markdown_highlights)],\n injections: [resolve(dirname(fileURLToPath(import.meta.url)), markdown_injections)],\n },\n wasm: resolve(dirname(fileURLToPath(import.meta.url)), markdown_language),\n injectionMapping: {\n \"nodeTypes\": {\n \"inline\": \"markdown_inline\",\n \"pipe_table_cell\": \"markdown_inline\"\n },\n \"infoStringMap\": {\n \"javascript\": \"javascript\",\n \"js\": \"javascript\",\n \"jsx\": \"javascriptreact\",\n \"javascriptreact\": \"javascriptreact\",\n \"typescript\": \"typescript\",\n \"ts\": \"typescript\",\n \"tsx\": \"typescriptreact\",\n \"typescriptreact\": \"typescriptreact\",\n \"markdown\": \"markdown\",\n \"md\": \"markdown\"\n }\n},\n },\n {\n filetype: \"markdown_inline\",\n queries: {\n highlights: [resolve(dirname(fileURLToPath(import.meta.url)), markdown_inline_highlights)],\n },\n wasm: resolve(dirname(fileURLToPath(import.meta.url)), markdown_inline_language),\n },\n {\n filetype: \"zig\",\n queries: {\n highlights: [resolve(dirname(fileURLToPath(import.meta.url)), zig_highlights)],\n },\n wasm: resolve(dirname(fileURLToPath(import.meta.url)), zig_language),\n },\n ]\n }\n return _cachedParsers\n}\n",
@@ -41,8 +41,8 @@
41
41
  "import { SystemClock, type Clock, type TimerHandle } from \"./clock.js\"\n\ntype Hex = string | null\n\nconst SYSTEM_CLOCK = new SystemClock()\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 type OscSubscriptionSource = {\n subscribeOsc(handler: (sequence: string) => void): () => void\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 oscSource?: OscSubscriptionSource\n private readonly clock: Clock\n\n constructor(\n stdin: NodeJS.ReadStream,\n stdout: NodeJS.WriteStream,\n writeFn?: WriteFunction,\n isLegacyTmux?: boolean,\n oscSource?: OscSubscriptionSource,\n clock?: Clock,\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.oscSource = oscSource\n this.clock = clock ?? SYSTEM_CLOCK\n }\n\n /**\n * Write an OSC sequence, wrapping for tmux if needed\n */\n private writeOsc(osc: string): boolean {\n const data = 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 this.writeOsc(\"\\x1b]4;0;?\\x07\")\n })\n }\n\n private async queryPalette(indices: number[], timeoutMs = 1200): 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, 150)\n }\n\n session.setTimer(finish, timeoutMs)\n session.subscribeInput(onData)\n this.writeOsc(indices.map((i) => `\\x1b]4;${i};?\\x07`).join(\"\"))\n })\n }\n\n private async querySpecialColors(timeoutMs = 1200): 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\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 const done = Object.values(results).filter((v) => v !== null).length\n if (done === Object.keys(results).length) {\n finish()\n return\n }\n\n if (!updated) return\n\n idleTimer = session.resetTimer(idleTimer, finish, 150)\n }\n\n session.setTimer(finish, timeoutMs)\n session.subscribeInput(onData)\n this.writeOsc(\n [\n \"\\x1b]10;?\\x07\",\n \"\\x1b]11;?\\x07\",\n \"\\x1b]12;?\\x07\",\n \"\\x1b]13;?\\x07\",\n \"\\x1b]14;?\\x07\",\n \"\\x1b]15;?\\x07\",\n \"\\x1b]16;?\\x07\",\n \"\\x1b]17;?\\x07\",\n \"\\x1b]19;?\\x07\",\n ].join(\"\"),\n )\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 [paletteResults, specialColors] = await Promise.all([\n this.queryPalette(indicesToQuery, timeout),\n this.querySpecialColors(timeout),\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(\n stdin: NodeJS.ReadStream,\n stdout: NodeJS.WriteStream,\n writeFn?: WriteFunction,\n isLegacyTmux?: boolean,\n oscSource?: OscSubscriptionSource,\n clock?: Clock,\n): TerminalPaletteDetector {\n return new TerminalPalette(stdin, stdout, writeFn, isLegacyTmux, oscSource, clock)\n}\n",
42
42
  "export 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 Bun.stripANSI(text)\n}\n",
43
43
  "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",
44
- "import { dlopen, toArrayBuffer, JSCallback, ptr, type Pointer } from \"bun:ffi\"\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 Highlight,\n type LineInfo,\n type MousePointerStyle,\n} from \"./types.js\"\nexport type { LineInfo, AllocatorStats, BuildOptions }\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 BuildOptionsStruct,\n AllocatorStatsStruct,\n} from \"./zig-structs.js\"\nimport type {\n NativeSpanFeedOptions,\n NativeSpanFeedStats,\n ReserveInfo,\n BuildOptions,\n AllocatorStats,\n} from \"./zig-structs.js\"\nimport { isBunfsPath } from \"./lib/bunfs.js\"\n\nconst module = await import(`@opentui/core-${process.platform}-${process.arch}/index.ts`)\nlet targetLibPath = module.default\n\nif (isBunfsPath(targetLibPath)) {\n targetLibPath = targetLibPath.replace(\"../\", \"\")\n}\n\nif (!existsSync(targetLibPath)) {\n throw new Error(`opentui is not supported on the current platform: ${process.platform}-${process.arch}`)\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\",\n type: \"boolean\",\n default: false,\n})\nregisterEnvVar({\n name: \"OPENTUI_FORCE_UNICODE\",\n description: \"Force Mode 2026 Unicode support in terminal capabilities\",\n type: \"boolean\",\n default: false,\n})\nregisterEnvVar({\n name: \"OPENTUI_GRAPHICS\",\n description: \"Enable Kitty graphics protocol detection\",\n type: \"boolean\",\n default: true,\n})\nregisterEnvVar({\n name: \"OPENTUI_FORCE_NOZWJ\",\n description: \"Use no_zwj width method (Unicode without ZWJ joining)\",\n type: \"boolean\",\n default: 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\n\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 toPointer(value: number | bigint): Pointer {\n if (typeof value === \"bigint\") {\n if (value > BigInt(Number.MAX_SAFE_INTEGER)) {\n throw new Error(\"Pointer exceeds safe integer range\")\n }\n return Number(value) as Pointer\n }\n return value as Pointer\n}\n\nfunction toNumber(value: number | bigint): number {\n return typeof value === \"bigint\" ? Number(value) : value\n}\n\nfunction getOpenTUILib(libPath?: string) {\n const resolvedLibPath = libPath || targetLibPath\n\n const rawSymbols = dlopen(resolvedLibPath, {\n // Logging\n setLogCallback: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n // Event bus\n setEventCallback: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n // Renderer management\n createRenderer: {\n args: [\"u32\", \"u32\", \"bool\", \"bool\"],\n returns: \"ptr\",\n },\n setTerminalEnvVar: {\n args: [\"ptr\", \"ptr\", \"usize\", \"ptr\", \"usize\"],\n returns: \"bool\",\n },\n destroyRenderer: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n setUseThread: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\",\n },\n setBackgroundColor: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n setRenderOffset: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\",\n },\n updateStats: {\n args: [\"ptr\", \"f64\", \"u32\", \"f64\"],\n returns: \"void\",\n },\n updateMemoryStats: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n render: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\",\n },\n getNextBuffer: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n getCurrentBuffer: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n\n queryPixelResolution: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n\n createOptimizedBuffer: {\n args: [\"u32\", \"u32\", \"bool\", \"u8\", \"ptr\", \"usize\"],\n returns: \"ptr\",\n },\n destroyOptimizedBuffer: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n\n drawFrameBuffer: {\n args: [\"ptr\", \"i32\", \"i32\", \"ptr\", \"u32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n getBufferWidth: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n getBufferHeight: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n bufferClear: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n bufferGetCharPtr: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n bufferGetFgPtr: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n bufferGetBgPtr: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n bufferGetAttributesPtr: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n bufferGetRespectAlpha: {\n args: [\"ptr\"],\n returns: \"bool\",\n },\n bufferSetRespectAlpha: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\",\n },\n bufferGetId: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n bufferGetRealCharSize: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n bufferWriteResolvedChars: {\n args: [\"ptr\", \"ptr\", \"usize\", \"bool\"],\n returns: \"u32\",\n },\n\n bufferDrawText: {\n args: [\"ptr\", \"ptr\", \"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n bufferSetCellWithAlphaBlending: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n bufferSetCell: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n bufferFillRect: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\", \"ptr\"],\n returns: \"void\",\n },\n bufferColorMatrix: {\n args: [\"ptr\", \"ptr\", \"ptr\", \"usize\", \"f32\", \"u8\"],\n returns: \"void\",\n },\n bufferColorMatrixUniform: {\n args: [\"ptr\", \"ptr\", \"f32\", \"u8\"],\n returns: \"void\",\n },\n bufferResize: {\n args: [\"ptr\", \"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: [\"ptr\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n\n // Cursor functions (now renderer-scoped)\n setCursorPosition: {\n args: [\"ptr\", \"i32\", \"i32\", \"bool\"],\n returns: \"void\",\n },\n setCursorColor: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n getCursorState: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n\n // Cursor and mouse pointer style (combined)\n setCursorStyleOptions: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n\n // Debug overlay\n setDebugOverlay: {\n args: [\"ptr\", \"bool\", \"u8\"],\n returns: \"void\",\n },\n\n // Terminal control\n clearTerminal: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n setTerminalTitle: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\",\n },\n copyToClipboardOSC52: {\n args: [\"ptr\", \"u8\", \"ptr\", \"usize\"],\n returns: \"bool\",\n },\n clearClipboardOSC52: {\n args: [\"ptr\", \"u8\"],\n returns: \"bool\",\n },\n\n bufferDrawSuperSampleBuffer: {\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\", \"usize\", \"u8\", \"u32\"],\n returns: \"void\",\n },\n bufferDrawPackedBuffer: {\n args: [\"ptr\", \"ptr\", \"usize\", \"u32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n bufferDrawGrayscaleBuffer: {\n args: [\"ptr\", \"i32\", \"i32\", \"ptr\", \"u32\", \"u32\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n bufferDrawGrayscaleBufferSupersampled: {\n args: [\"ptr\", \"i32\", \"i32\", \"ptr\", \"u32\", \"u32\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n bufferDrawGrid: {\n args: [\"ptr\", \"ptr\", \"ptr\", \"ptr\", \"ptr\", \"u32\", \"ptr\", \"u32\", \"ptr\"],\n returns: \"void\",\n },\n bufferDrawBox: {\n args: [\"ptr\", \"i32\", \"i32\", \"u32\", \"u32\", \"ptr\", \"u32\", \"ptr\", \"ptr\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n bufferPushScissorRect: {\n args: [\"ptr\", \"i32\", \"i32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n bufferPopScissorRect: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n bufferClearScissorRects: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n bufferPushOpacity: {\n args: [\"ptr\", \"f32\"],\n returns: \"void\",\n },\n bufferPopOpacity: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n bufferGetCurrentOpacity: {\n args: [\"ptr\"],\n returns: \"f32\",\n },\n bufferClearOpacity: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n\n addToHitGrid: {\n args: [\"ptr\", \"i32\", \"i32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n clearCurrentHitGrid: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n hitGridPushScissorRect: {\n args: [\"ptr\", \"i32\", \"i32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n hitGridPopScissorRect: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n hitGridClearScissorRects: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n addToCurrentHitGridClipped: {\n args: [\"ptr\", \"i32\", \"i32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n checkHit: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"u32\",\n },\n getHitGridDirty: {\n args: [\"ptr\"],\n returns: \"bool\",\n },\n dumpHitGrid: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n dumpBuffers: {\n args: [\"ptr\", \"i64\"],\n returns: \"void\",\n },\n dumpStdoutBuffer: {\n args: [\"ptr\", \"i64\"],\n returns: \"void\",\n },\n restoreTerminalModes: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n enableMouse: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\",\n },\n disableMouse: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n enableKittyKeyboard: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\",\n },\n disableKittyKeyboard: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n setKittyKeyboardFlags: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\",\n },\n getKittyKeyboardFlags: {\n args: [\"ptr\"],\n returns: \"u8\",\n },\n setupTerminal: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\",\n },\n suspendRenderer: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n resumeRenderer: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n writeOut: {\n args: [\"ptr\", \"ptr\", \"u64\"],\n returns: \"void\",\n },\n\n // TextBuffer functions\n createTextBuffer: {\n args: [\"u8\"],\n returns: \"ptr\",\n },\n destroyTextBuffer: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n textBufferGetLength: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n textBufferGetByteSize: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n\n textBufferReset: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n textBufferClear: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n textBufferSetDefaultFg: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferSetDefaultBg: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferSetDefaultAttributes: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferResetDefaults: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n textBufferGetTabWidth: {\n args: [\"ptr\"],\n returns: \"u8\",\n },\n textBufferSetTabWidth: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\",\n },\n textBufferRegisterMemBuffer: {\n args: [\"ptr\", \"ptr\", \"usize\", \"bool\"],\n returns: \"u16\",\n },\n textBufferReplaceMemBuffer: {\n args: [\"ptr\", \"u8\", \"ptr\", \"usize\", \"bool\"],\n returns: \"bool\",\n },\n textBufferClearMemRegistry: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n textBufferSetTextFromMem: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\",\n },\n textBufferAppend: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\",\n },\n textBufferAppendFromMemId: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\",\n },\n textBufferLoadFile: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"bool\",\n },\n textBufferSetStyledText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\",\n },\n textBufferGetLineCount: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n textBufferGetPlainText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n textBufferAddHighlightByCharRange: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferAddHighlight: {\n args: [\"ptr\", \"u32\", \"ptr\"],\n returns: \"void\",\n },\n textBufferRemoveHighlightsByRef: {\n args: [\"ptr\", \"u16\"],\n returns: \"void\",\n },\n textBufferClearLineHighlights: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\",\n },\n textBufferClearAllHighlights: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n textBufferSetSyntaxStyle: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferGetLineHighlightsPtr: {\n args: [\"ptr\", \"u32\", \"ptr\"],\n returns: \"ptr\",\n },\n textBufferFreeLineHighlights: {\n args: [\"ptr\", \"usize\"],\n returns: \"void\",\n },\n textBufferGetHighlightCount: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n textBufferGetTextRange: {\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n textBufferGetTextRangeByCoords: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n\n // TextBufferView functions\n createTextBufferView: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n destroyTextBufferView: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n textBufferViewSetSelection: {\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferViewResetSelection: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n textBufferViewGetSelectionInfo: {\n args: [\"ptr\"],\n returns: \"u64\",\n },\n textBufferViewSetLocalSelection: {\n args: [\"ptr\", \"i32\", \"i32\", \"i32\", \"i32\", \"ptr\", \"ptr\"],\n returns: \"bool\",\n },\n textBufferViewUpdateSelection: {\n args: [\"ptr\", \"u32\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferViewUpdateLocalSelection: {\n args: [\"ptr\", \"i32\", \"i32\", \"i32\", \"i32\", \"ptr\", \"ptr\"],\n returns: \"bool\",\n },\n textBufferViewResetLocalSelection: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n textBufferViewSetWrapWidth: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\",\n },\n textBufferViewSetWrapMode: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\",\n },\n textBufferViewSetViewportSize: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n textBufferViewSetViewport: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n textBufferViewGetVirtualLineCount: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n textBufferViewGetLineInfoDirect: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferViewGetLogicalLineInfoDirect: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferViewGetSelectedText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n textBufferViewGetPlainText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n textBufferViewSetTabIndicator: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\",\n },\n textBufferViewSetTabIndicatorColor: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferViewSetTruncate: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\",\n },\n textBufferViewMeasureForDimensions: {\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\"],\n returns: \"bool\",\n },\n bufferDrawTextBufferView: {\n args: [\"ptr\", \"ptr\", \"i32\", \"i32\"],\n returns: \"void\",\n },\n bufferDrawEditorView: {\n args: [\"ptr\", \"ptr\", \"i32\", \"i32\"],\n returns: \"void\",\n },\n\n // EditorView functions\n createEditorView: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"ptr\",\n },\n destroyEditorView: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editorViewSetViewportSize: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n editorViewSetViewport: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\", \"bool\"],\n returns: \"void\",\n },\n editorViewGetViewport: {\n args: [\"ptr\", \"ptr\", \"ptr\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewSetScrollMargin: {\n args: [\"ptr\", \"f32\"],\n returns: \"void\",\n },\n editorViewSetWrapMode: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\",\n },\n editorViewGetVirtualLineCount: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n editorViewGetTotalVirtualLineCount: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n editorViewGetTextBufferView: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n editorViewGetLineInfoDirect: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewGetLogicalLineInfoDirect: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n\n // EditBuffer functions\n createEditBuffer: {\n args: [\"u8\"],\n returns: \"ptr\",\n },\n destroyEditBuffer: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferSetText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\",\n },\n editBufferSetTextFromMem: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\",\n },\n editBufferReplaceText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\",\n },\n editBufferReplaceTextFromMem: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\",\n },\n editBufferGetText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n editBufferInsertChar: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\",\n },\n editBufferInsertText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\",\n },\n editBufferDeleteChar: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferDeleteCharBackward: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferDeleteRange: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n editBufferNewLine: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferDeleteLine: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferMoveCursorLeft: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferMoveCursorRight: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferMoveCursorUp: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferMoveCursorDown: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferGotoLine: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\",\n },\n editBufferSetCursor: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n editBufferSetCursorToLineCol: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n editBufferSetCursorByOffset: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\",\n },\n editBufferGetCursorPosition: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editBufferGetId: {\n args: [\"ptr\"],\n returns: \"u16\",\n },\n editBufferGetTextBuffer: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n editBufferDebugLogRope: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferUndo: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n editBufferRedo: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n editBufferCanUndo: {\n args: [\"ptr\"],\n returns: \"bool\",\n },\n editBufferCanRedo: {\n args: [\"ptr\"],\n returns: \"bool\",\n },\n editBufferClearHistory: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferClear: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferGetNextWordBoundary: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editBufferGetPrevWordBoundary: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editBufferGetEOL: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editBufferOffsetToPosition: {\n args: [\"ptr\", \"u32\", \"ptr\"],\n returns: \"bool\",\n },\n editBufferPositionToOffset: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"u32\",\n },\n editBufferGetLineStartOffset: {\n args: [\"ptr\", \"u32\"],\n returns: \"u32\",\n },\n editBufferGetTextRange: {\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n editBufferGetTextRangeByCoords: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n\n // EditorView selection and editing methods\n editorViewSetSelection: {\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewResetSelection: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editorViewGetSelection: {\n args: [\"ptr\"],\n returns: \"u64\",\n },\n editorViewSetLocalSelection: {\n args: [\"ptr\", \"i32\", \"i32\", \"i32\", \"i32\", \"ptr\", \"ptr\", \"bool\", \"bool\"],\n returns: \"bool\",\n },\n editorViewUpdateSelection: {\n args: [\"ptr\", \"u32\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewUpdateLocalSelection: {\n args: [\"ptr\", \"i32\", \"i32\", \"i32\", \"i32\", \"ptr\", \"ptr\", \"bool\", \"bool\"],\n returns: \"bool\",\n },\n editorViewResetLocalSelection: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editorViewGetSelectedTextBytes: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n editorViewGetCursor: {\n args: [\"ptr\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewGetText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n\n // EditorView VisualCursor methods\n editorViewGetVisualCursor: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n\n editorViewMoveUpVisual: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editorViewMoveDownVisual: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editorViewDeleteSelectedText: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editorViewSetCursorByOffset: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\",\n },\n editorViewGetNextWordBoundary: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewGetPrevWordBoundary: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewGetEOL: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewGetVisualSOL: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewGetVisualEOL: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewSetPlaceholderStyledText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\",\n },\n editorViewSetTabIndicator: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\",\n },\n editorViewSetTabIndicatorColor: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n\n getArenaAllocatedBytes: {\n args: [],\n returns: \"usize\",\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: \"ptr\",\n },\n destroySyntaxStyle: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n syntaxStyleRegister: {\n args: [\"ptr\", \"ptr\", \"usize\", \"ptr\", \"ptr\", \"u8\"],\n returns: \"u32\",\n },\n syntaxStyleResolveByName: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"u32\",\n },\n syntaxStyleGetStyleCount: {\n args: [\"ptr\"],\n returns: \"usize\",\n },\n\n // Terminal capability functions\n getTerminalCapabilities: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n processCapabilityResponse: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\",\n },\n\n // Unicode encoding API\n encodeUnicode: {\n args: [\"ptr\", \"usize\", \"ptr\", \"ptr\", \"u8\"],\n returns: \"bool\",\n },\n freeUnicode: {\n args: [\"ptr\", \"usize\"],\n returns: \"void\",\n },\n bufferDrawChar: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\", \"u32\"],\n returns: \"void\",\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\", \"u64\"],\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 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 Bun.write(traceFilePath, output)\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 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 interface RenderLib {\n createRenderer: (width: number, height: number, options?: { testing?: boolean; remote?: boolean }) => Pointer | null\n setTerminalEnvVar: (renderer: Pointer, key: string, value: string) => boolean\n destroyRenderer: (renderer: Pointer) => void\n setUseThread: (renderer: Pointer, useThread: boolean) => void\n setBackgroundColor: (renderer: Pointer, color: RGBA) => void\n setRenderOffset: (renderer: Pointer, offset: number) => void\n updateStats: (renderer: Pointer, time: number, fps: number, frameCallbackTime: number) => void\n updateMemoryStats: (renderer: Pointer, heapUsed: number, heapTotal: number, arrayBuffers: number) => void\n render: (renderer: Pointer, force: boolean) => void\n getNextBuffer: (renderer: Pointer) => OptimizedBuffer\n getCurrentBuffer: (renderer: Pointer) => OptimizedBuffer\n createOptimizedBuffer: (\n width: number,\n height: number,\n widthMethod: WidthMethod,\n respectAlpha?: boolean,\n id?: string,\n ) => OptimizedBuffer\n destroyOptimizedBuffer: (bufferPtr: Pointer) => void\n 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 ) => void\n getBufferWidth: (buffer: Pointer) => number\n getBufferHeight: (buffer: Pointer) => number\n bufferClear: (buffer: Pointer, color: RGBA) => void\n bufferGetCharPtr: (buffer: Pointer) => Pointer\n bufferGetFgPtr: (buffer: Pointer) => Pointer\n bufferGetBgPtr: (buffer: Pointer) => Pointer\n bufferGetAttributesPtr: (buffer: Pointer) => Pointer\n bufferGetRespectAlpha: (buffer: Pointer) => boolean\n bufferSetRespectAlpha: (buffer: Pointer, respectAlpha: boolean) => void\n bufferGetId: (buffer: Pointer) => string\n bufferGetRealCharSize: (buffer: Pointer) => number\n bufferWriteResolvedChars: (buffer: Pointer, outputBuffer: Uint8Array, addLineBreaks: boolean) => number\n bufferDrawText: (\n buffer: Pointer,\n text: string,\n x: number,\n y: number,\n color: RGBA,\n bgColor?: RGBA,\n attributes?: number,\n ) => void\n bufferSetCellWithAlphaBlending: (\n buffer: Pointer,\n x: number,\n y: number,\n char: string,\n color: RGBA,\n bgColor: RGBA,\n attributes?: number,\n ) => void\n bufferSetCell: (\n buffer: Pointer,\n x: number,\n y: number,\n char: string,\n color: RGBA,\n bgColor: RGBA,\n attributes?: number,\n ) => void\n bufferFillRect: (buffer: Pointer, x: number, y: number, width: number, height: number, color: RGBA) => void\n bufferColorMatrix: (\n buffer: Pointer,\n matrixPtr: Pointer,\n cellMaskPtr: Pointer,\n cellMaskCount: number,\n strength: number,\n target: TargetChannel,\n ) => void\n bufferColorMatrixUniform: (buffer: Pointer, matrixPtr: Pointer, strength: number, target: TargetChannel) => void\n 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 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 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 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 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 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 title: string | null,\n ) => void\n bufferResize: (buffer: Pointer, width: number, height: number) => void\n resizeRenderer: (renderer: Pointer, width: number, height: number) => void\n setCursorPosition: (renderer: Pointer, x: number, y: number, visible: boolean) => void\n setCursorColor: (renderer: Pointer, color: RGBA) => void\n getCursorState: (renderer: Pointer) => CursorState\n setCursorStyleOptions: (renderer: Pointer, options: CursorStyleOptions) => void\n setDebugOverlay: (renderer: Pointer, enabled: boolean, corner: DebugOverlayCorner) => void\n clearTerminal: (renderer: Pointer) => void\n setTerminalTitle: (renderer: Pointer, title: string) => void\n copyToClipboardOSC52: (renderer: Pointer, target: number, payload: Uint8Array) => boolean\n clearClipboardOSC52: (renderer: Pointer, target: number) => boolean\n addToHitGrid: (renderer: Pointer, x: number, y: number, width: number, height: number, id: number) => void\n clearCurrentHitGrid: (renderer: Pointer) => void\n hitGridPushScissorRect: (renderer: Pointer, x: number, y: number, width: number, height: number) => void\n hitGridPopScissorRect: (renderer: Pointer) => void\n hitGridClearScissorRects: (renderer: Pointer) => void\n addToCurrentHitGridClipped: (\n renderer: Pointer,\n x: number,\n y: number,\n width: number,\n height: number,\n id: number,\n ) => void\n checkHit: (renderer: Pointer, x: number, y: number) => number\n getHitGridDirty: (renderer: Pointer) => boolean\n dumpHitGrid: (renderer: Pointer) => void\n dumpBuffers: (renderer: Pointer, timestamp?: number) => void\n dumpStdoutBuffer: (renderer: Pointer, timestamp?: number) => void\n restoreTerminalModes: (renderer: Pointer) => void\n enableMouse: (renderer: Pointer, enableMovement: boolean) => void\n disableMouse: (renderer: Pointer) => void\n enableKittyKeyboard: (renderer: Pointer, flags: number) => void\n disableKittyKeyboard: (renderer: Pointer) => void\n setKittyKeyboardFlags: (renderer: Pointer, flags: number) => void\n getKittyKeyboardFlags: (renderer: Pointer) => number\n setupTerminal: (renderer: Pointer, useAlternateScreen: boolean) => void\n suspendRenderer: (renderer: Pointer) => void\n resumeRenderer: (renderer: Pointer) => void\n queryPixelResolution: (renderer: Pointer) => void\n writeOut: (renderer: Pointer, data: string | Uint8Array) => void\n\n // TextBuffer methods\n createTextBuffer: (widthMethod: WidthMethod) => TextBuffer\n destroyTextBuffer: (buffer: Pointer) => void\n textBufferGetLength: (buffer: Pointer) => number\n textBufferGetByteSize: (buffer: Pointer) => number\n\n textBufferReset: (buffer: Pointer) => void\n textBufferClear: (buffer: Pointer) => void\n textBufferRegisterMemBuffer: (buffer: Pointer, bytes: Uint8Array, owned?: boolean) => number\n textBufferReplaceMemBuffer: (buffer: Pointer, memId: number, bytes: Uint8Array, owned?: boolean) => boolean\n textBufferClearMemRegistry: (buffer: Pointer) => void\n textBufferSetTextFromMem: (buffer: Pointer, memId: number) => void\n textBufferAppend: (buffer: Pointer, bytes: Uint8Array) => void\n textBufferAppendFromMemId: (buffer: Pointer, memId: number) => void\n textBufferLoadFile: (buffer: Pointer, path: string) => boolean\n textBufferSetStyledText: (\n buffer: Pointer,\n chunks: Array<{ text: string; fg?: RGBA | null; bg?: RGBA | null; attributes?: number; link?: { url: string } }>,\n ) => void\n textBufferSetDefaultFg: (buffer: Pointer, fg: RGBA | null) => void\n textBufferSetDefaultBg: (buffer: Pointer, bg: RGBA | null) => void\n textBufferSetDefaultAttributes: (buffer: Pointer, attributes: number | null) => void\n textBufferResetDefaults: (buffer: Pointer) => void\n textBufferGetTabWidth: (buffer: Pointer) => number\n textBufferSetTabWidth: (buffer: Pointer, width: number) => void\n textBufferGetLineCount: (buffer: Pointer) => number\n getPlainTextBytes: (buffer: Pointer, maxLength: number) => Uint8Array | null\n textBufferGetTextRange: (\n buffer: Pointer,\n startOffset: number,\n endOffset: number,\n maxLength: number,\n ) => Uint8Array | null\n textBufferGetTextRangeByCoords: (\n buffer: Pointer,\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: Pointer) => Pointer\n destroyTextBufferView: (view: Pointer) => void\n textBufferViewSetSelection: (\n view: Pointer,\n start: number,\n end: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n ) => void\n textBufferViewResetSelection: (view: Pointer) => void\n textBufferViewGetSelection: (view: Pointer) => { start: number; end: number } | null\n 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 textBufferViewUpdateSelection: (view: Pointer, end: number, bgColor: RGBA | null, fgColor: RGBA | null) => void\n 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 textBufferViewResetLocalSelection: (view: Pointer) => void\n textBufferViewSetWrapWidth: (view: Pointer, width: number) => void\n textBufferViewSetWrapMode: (view: Pointer, mode: \"none\" | \"char\" | \"word\") => void\n textBufferViewSetViewportSize: (view: Pointer, width: number, height: number) => void\n textBufferViewSetViewport: (view: Pointer, x: number, y: number, width: number, height: number) => void\n textBufferViewGetLineInfo: (view: Pointer) => LineInfo\n textBufferViewGetLogicalLineInfo: (view: Pointer) => LineInfo\n textBufferViewGetSelectedTextBytes: (view: Pointer, maxLength: number) => Uint8Array | null\n textBufferViewGetPlainTextBytes: (view: Pointer, maxLength: number) => Uint8Array | null\n textBufferViewSetTabIndicator: (view: Pointer, indicator: number) => void\n textBufferViewSetTabIndicatorColor: (view: Pointer, color: RGBA) => void\n textBufferViewSetTruncate: (view: Pointer, truncate: boolean) => void\n textBufferViewMeasureForDimensions: (\n view: Pointer,\n width: number,\n height: number,\n ) => { lineCount: number; widthColsMax: number } | null\n textBufferViewGetVirtualLineCount: (view: Pointer) => number\n\n readonly encoder: TextEncoder\n readonly decoder: TextDecoder\n bufferDrawTextBufferView: (buffer: Pointer, view: Pointer, x: number, y: number) => void\n bufferDrawEditorView: (buffer: Pointer, view: Pointer, x: number, y: number) => void\n\n // EditBuffer methods\n createEditBuffer: (widthMethod: WidthMethod) => Pointer\n destroyEditBuffer: (buffer: Pointer) => void\n editBufferSetText: (buffer: Pointer, textBytes: Uint8Array) => void\n editBufferSetTextFromMem: (buffer: Pointer, memId: number) => void\n editBufferReplaceText: (buffer: Pointer, textBytes: Uint8Array) => void\n editBufferReplaceTextFromMem: (buffer: Pointer, memId: number) => void\n editBufferGetText: (buffer: Pointer, maxLength: number) => Uint8Array | null\n editBufferInsertChar: (buffer: Pointer, char: string) => void\n editBufferInsertText: (buffer: Pointer, text: string) => void\n editBufferDeleteChar: (buffer: Pointer) => void\n editBufferDeleteCharBackward: (buffer: Pointer) => void\n editBufferDeleteRange: (buffer: Pointer, startLine: number, startCol: number, endLine: number, endCol: number) => void\n editBufferNewLine: (buffer: Pointer) => void\n editBufferDeleteLine: (buffer: Pointer) => void\n editBufferMoveCursorLeft: (buffer: Pointer) => void\n editBufferMoveCursorRight: (buffer: Pointer) => void\n editBufferMoveCursorUp: (buffer: Pointer) => void\n editBufferMoveCursorDown: (buffer: Pointer) => void\n editBufferGotoLine: (buffer: Pointer, line: number) => void\n editBufferSetCursor: (buffer: Pointer, line: number, col: number) => void\n editBufferSetCursorToLineCol: (buffer: Pointer, line: number, col: number) => void\n editBufferSetCursorByOffset: (buffer: Pointer, offset: number) => void\n editBufferGetCursorPosition: (buffer: Pointer) => LogicalCursor\n editBufferGetId: (buffer: Pointer) => number\n editBufferGetTextBuffer: (buffer: Pointer) => Pointer\n editBufferDebugLogRope: (buffer: Pointer) => void\n editBufferUndo: (buffer: Pointer, maxLength: number) => Uint8Array | null\n editBufferRedo: (buffer: Pointer, maxLength: number) => Uint8Array | null\n editBufferCanUndo: (buffer: Pointer) => boolean\n editBufferCanRedo: (buffer: Pointer) => boolean\n editBufferClearHistory: (buffer: Pointer) => void\n editBufferClear: (buffer: Pointer) => void\n editBufferGetNextWordBoundary: (buffer: Pointer) => { row: number; col: number; offset: number }\n editBufferGetPrevWordBoundary: (buffer: Pointer) => { row: number; col: number; offset: number }\n editBufferGetEOL: (buffer: Pointer) => { row: number; col: number; offset: number }\n editBufferOffsetToPosition: (buffer: Pointer, offset: number) => { row: number; col: number; offset: number } | null\n editBufferPositionToOffset: (buffer: Pointer, row: number, col: number) => number\n editBufferGetLineStartOffset: (buffer: Pointer, row: number) => number\n editBufferGetTextRange: (\n buffer: Pointer,\n startOffset: number,\n endOffset: number,\n maxLength: number,\n ) => Uint8Array | null\n editBufferGetTextRangeByCoords: (\n buffer: Pointer,\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: Pointer, viewportWidth: number, viewportHeight: number) => Pointer\n destroyEditorView: (view: Pointer) => void\n editorViewSetViewportSize: (view: Pointer, width: number, height: number) => void\n editorViewSetViewport: (\n view: Pointer,\n x: number,\n y: number,\n width: number,\n height: number,\n moveCursor: boolean,\n ) => void\n editorViewGetViewport: (view: Pointer) => { offsetY: number; offsetX: number; height: number; width: number }\n editorViewSetScrollMargin: (view: Pointer, margin: number) => void\n editorViewSetWrapMode: (view: Pointer, mode: \"none\" | \"char\" | \"word\") => void\n editorViewGetVirtualLineCount: (view: Pointer) => number\n editorViewGetTotalVirtualLineCount: (view: Pointer) => number\n editorViewGetTextBufferView: (view: Pointer) => Pointer\n editorViewSetSelection: (\n view: Pointer,\n start: number,\n end: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n ) => void\n editorViewResetSelection: (view: Pointer) => void\n editorViewGetSelection: (view: Pointer) => { start: number; end: number } | null\n 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\n editorViewUpdateSelection: (view: Pointer, end: number, bgColor: RGBA | null, fgColor: RGBA | null) => void\n 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\n editorViewResetLocalSelection: (view: Pointer) => void\n editorViewGetSelectedTextBytes: (view: Pointer, maxLength: number) => Uint8Array | null\n editorViewGetCursor: (view: Pointer) => { row: number; col: number }\n editorViewGetText: (view: Pointer, maxLength: number) => Uint8Array | null\n editorViewGetVisualCursor: (view: Pointer) => VisualCursor\n editorViewMoveUpVisual: (view: Pointer) => void\n editorViewMoveDownVisual: (view: Pointer) => void\n editorViewDeleteSelectedText: (view: Pointer) => void\n editorViewSetCursorByOffset: (view: Pointer, offset: number) => void\n editorViewGetNextWordBoundary: (view: Pointer) => VisualCursor\n editorViewGetPrevWordBoundary: (view: Pointer) => VisualCursor\n editorViewGetEOL: (view: Pointer) => VisualCursor\n editorViewGetVisualSOL: (view: Pointer) => VisualCursor\n editorViewGetVisualEOL: (view: Pointer) => VisualCursor\n editorViewGetLineInfo: (view: Pointer) => LineInfo\n editorViewGetLogicalLineInfo: (view: Pointer) => LineInfo\n editorViewSetPlaceholderStyledText: (\n view: Pointer,\n chunks: Array<{ text: string; fg?: RGBA | null; bg?: RGBA | null; attributes?: number }>,\n ) => void\n editorViewSetTabIndicator: (view: Pointer, indicator: number) => void\n editorViewSetTabIndicatorColor: (view: Pointer, color: RGBA) => void\n\n bufferPushScissorRect: (buffer: Pointer, x: number, y: number, width: number, height: number) => void\n bufferPopScissorRect: (buffer: Pointer) => void\n bufferClearScissorRects: (buffer: Pointer) => void\n bufferPushOpacity: (buffer: Pointer, opacity: number) => void\n bufferPopOpacity: (buffer: Pointer) => void\n bufferGetCurrentOpacity: (buffer: Pointer) => number\n bufferClearOpacity: (buffer: Pointer) => void\n textBufferAddHighlightByCharRange: (buffer: Pointer, highlight: Highlight) => void\n textBufferAddHighlight: (buffer: Pointer, lineIdx: number, highlight: Highlight) => void\n textBufferRemoveHighlightsByRef: (buffer: Pointer, hlRef: number) => void\n textBufferClearLineHighlights: (buffer: Pointer, lineIdx: number) => void\n textBufferClearAllHighlights: (buffer: Pointer) => void\n textBufferSetSyntaxStyle: (buffer: Pointer, style: Pointer | null) => void\n textBufferGetLineHighlights: (buffer: Pointer, lineIdx: number) => Array<Highlight>\n textBufferGetHighlightCount: (buffer: Pointer) => number\n\n getArenaAllocatedBytes: () => number\n getBuildOptions: () => BuildOptions\n getAllocatorStats: () => AllocatorStats\n\n createSyntaxStyle: () => Pointer\n destroySyntaxStyle: (style: Pointer) => void\n syntaxStyleRegister: (style: Pointer, name: string, fg: RGBA | null, bg: RGBA | null, attributes: number) => number\n syntaxStyleResolveByName: (style: Pointer, name: string) => number | null\n syntaxStyleGetStyleCount: (style: Pointer) => number\n\n getTerminalCapabilities: (renderer: Pointer) => any\n processCapabilityResponse: (renderer: Pointer, 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: (buffer: Pointer, char: number, x: number, y: number, fg: RGBA, bg: RGBA, attributes?: number) => 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\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 public readonly encoder: TextEncoder = new TextEncoder()\n public readonly decoder: TextDecoder = new TextDecoder()\n private logCallbackWrapper: any // Store the FFI callback wrapper\n private eventCallbackWrapper: any // Store the FFI event callback wrapper\n private _nativeEvents: EventEmitter = new EventEmitter()\n private _anyEventHandlers: Array<(name: string, data: ArrayBuffer) => void> = []\n private nativeSpanFeedCallbackWrapper: JSCallback | null = null\n private nativeSpanFeedHandlers = new Map<Pointer, NativeSpanFeedEventHandler>()\n\n constructor(libPath?: string) {\n this.opentui = getOpenTUILib(libPath)\n this.setupLogging()\n this.setupEventBus()\n }\n\n private setupLogging() {\n if (this.logCallbackWrapper) {\n return\n }\n\n const logCallback = new JSCallback(\n (level: number, msgPtr: Pointer, msgLenBigInt: bigint | number) => {\n try {\n const msgLen = typeof msgLenBigInt === \"bigint\" ? Number(msgLenBigInt) : msgLenBigInt\n\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\", \"usize\"],\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) {\n this.opentui.symbols.setLogCallback(callbackPtr)\n }\n\n private setupEventBus() {\n if (this.eventCallbackWrapper) {\n return\n }\n\n const eventCallback = new JSCallback(\n (namePtr: Pointer, nameLenBigInt: bigint | number, dataPtr: Pointer, dataLenBigInt: bigint | number) => {\n try {\n const nameLen = typeof nameLenBigInt === \"bigint\" ? Number(nameLenBigInt) : nameLenBigInt\n const dataLen = typeof dataLenBigInt === \"bigint\" ? Number(dataLenBigInt) : dataLenBigInt\n\n if (nameLen === 0 || !namePtr) {\n return\n }\n\n const nameBuffer = toArrayBuffer(namePtr, 0, nameLen)\n const nameBytes = new Uint8Array(nameBuffer)\n const eventName = this.decoder.decode(nameBytes)\n\n let eventData: ArrayBuffer\n if (dataLen > 0 && dataPtr) {\n eventData = toArrayBuffer(dataPtr, 0, dataLen).slice()\n } else {\n eventData = new ArrayBuffer(0)\n }\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\", \"usize\", \"ptr\", \"usize\"],\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.setEventCallback(eventCallback.ptr)\n }\n\n private ensureNativeSpanFeedCallback(): JSCallback {\n if (this.nativeSpanFeedCallbackWrapper) {\n return this.nativeSpanFeedCallbackWrapper\n }\n\n const callback = new JSCallback(\n (streamPtr: Pointer, eventId: number, arg0: Pointer, arg1: number | bigint) => {\n const handler = this.nativeSpanFeedHandlers.get(toPointer(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 private setEventCallback(callbackPtr: Pointer) {\n this.opentui.symbols.setEventCallback(callbackPtr)\n }\n\n public createRenderer(width: number, height: number, options: { testing?: boolean; remote?: boolean } = {}) {\n const testing = options.testing ?? false\n const remote = options.remote ?? false\n return this.opentui.symbols.createRenderer(width, height, testing, remote)\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(renderer, keyBytes, keyBytes.length, valueBytes, valueBytes.length)\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, useThread)\n }\n\n public setBackgroundColor(renderer: Pointer, color: RGBA) {\n this.opentui.symbols.setBackgroundColor(renderer, color.buffer)\n }\n\n public setRenderOffset(renderer: Pointer, offset: number) {\n this.opentui.symbols.setRenderOffset(renderer, offset)\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 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 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, 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, outBuffer, maxLen)\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\n return this.decoder.decode(outBuffer.slice(0, len))\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 const bytesWritten = this.opentui.symbols.bufferWriteResolvedChars(\n buffer,\n outputBuffer,\n outputBuffer.length,\n addLineBreaks,\n )\n return typeof bytesWritten === \"bigint\" ? Number(bytesWritten) : bytesWritten\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, color.buffer)\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 textLength = textBytes.byteLength\n const bg = bgColor ? bgColor.buffer : null\n const fg = color.buffer\n\n this.opentui.symbols.bufferDrawText(buffer, textBytes, textLength, x, y, fg, bg, attributes ?? 0)\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 = bgColor.buffer\n const fg = color.buffer\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 = bgColor.buffer\n const fg = color.buffer\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 = color.buffer\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 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 fg?.buffer ?? null,\n bg?.buffer ?? null,\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 fg?.buffer ?? null,\n bg?.buffer ?? null,\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 const optionsBuffer = GridDrawOptionsStruct.pack({\n drawInner: options.drawInner,\n drawOuter: options.drawOuter,\n })\n\n this.opentui.symbols.bufferDrawGrid(\n buffer,\n borderChars,\n borderFg.buffer,\n borderBg.buffer,\n columnOffsets,\n columnCount,\n rowOffsets,\n rowCount,\n ptr(optionsBuffer),\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 title: string | null,\n ): void {\n const titleBytes = title ? this.encoder.encode(title) : null\n const titleLen = title ? titleBytes!.length : 0\n const titlePtr = title ? titleBytes : null\n\n this.opentui.symbols.bufferDrawBox(\n buffer,\n x,\n y,\n width,\n height,\n borderChars,\n packedOptions,\n borderColor.buffer,\n backgroundColor.buffer,\n titlePtr,\n titleLen,\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(urlBytes, urlBytes.length)\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, 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, visible)\n }\n\n public setCursorColor(renderer: Pointer, color: RGBA) {\n this.opentui.symbols.setCursorColor(renderer, color.buffer)\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, ptr(buffer))\n }\n\n public render(renderer: Pointer, force: boolean) {\n this.opentui.symbols.render(renderer, force)\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 respectAlpha,\n widthMethodCode,\n idBytes,\n idBytes.length,\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, 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, titleBytes, titleBytes.length)\n }\n\n public copyToClipboardOSC52(renderer: Pointer, target: number, payload: Uint8Array): boolean {\n return this.opentui.symbols.copyToClipboardOSC52(renderer, target, payload, payload.length)\n }\n\n public clearClipboardOSC52(renderer: Pointer, target: number): boolean {\n return this.opentui.symbols.clearClipboardOSC52(renderer, target)\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 = timestamp ?? Date.now()\n this.opentui.symbols.dumpBuffers(renderer, ts)\n }\n\n public dumpStdoutBuffer(renderer: Pointer, timestamp?: number): void {\n const ts = timestamp ?? Date.now()\n this.opentui.symbols.dumpStdoutBuffer(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, 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, 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 /**\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, ptr(bytes), bytes.length)\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 = fg ? fg.buffer : null\n this.opentui.symbols.textBufferSetDefaultFg(buffer, fgPtr)\n }\n\n public textBufferSetDefaultBg(buffer: Pointer, bg: RGBA | null): void {\n const bgPtr = bg ? bg.buffer : null\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 Uint8Array([attributes])\n this.opentui.symbols.textBufferSetDefaultAttributes(buffer, attrValue)\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(buffer, bytes, bytes.length, owned)\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(buffer, memId, bytes, bytes.length, owned)\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, bytes, bytes.length)\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, pathBytes, pathBytes.length)\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, ptr(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, maxLen: number): number {\n const result = this.opentui.symbols.textBufferGetPlainText(buffer, outPtr, maxLen)\n return typeof result === \"bigint\" ? Number(result) : result\n }\n\n public getPlainTextBytes(buffer: Pointer, maxLength: number): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n\n const actualLen = this.textBufferGetPlainText(buffer, ptr(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 ptr(outBuffer),\n maxLength,\n )\n\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : 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 ptr(outBuffer),\n maxLength,\n )\n\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\n\n if (len === 0) {\n return null\n }\n\n return outBuffer.slice(0, len)\n }\n\n // TextBufferView methods\n public createTextBufferView(textBuffer: Pointer): Pointer {\n const viewPtr = this.opentui.symbols.createTextBufferView(textBuffer)\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 = bgColor ? bgColor.buffer : null\n const fg = fgColor ? fgColor.buffer : null\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 = bgColor ? bgColor.buffer : null\n const fg = fgColor ? fgColor.buffer : null\n return 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 = bgColor ? bgColor.buffer : null\n const fg = fgColor ? fgColor.buffer : null\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 = bgColor ? bgColor.buffer : null\n const fg = fgColor ? fgColor.buffer : null\n return this.opentui.symbols.textBufferViewUpdateLocalSelection(view, anchorX, anchorY, focusX, focusY, bg, fg)\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 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, maxLen: number): number {\n const result = this.opentui.symbols.textBufferViewGetSelectedText(view, outPtr, maxLen)\n return typeof result === \"bigint\" ? Number(result) : result\n }\n\n private textBufferViewGetPlainText(view: Pointer, outPtr: Pointer, maxLen: number): number {\n const result = this.opentui.symbols.textBufferViewGetPlainText(view, outPtr, maxLen)\n return typeof result === \"bigint\" ? Number(result) : result\n }\n\n public textBufferViewGetSelectedTextBytes(view: Pointer, maxLength: number): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n\n const actualLen = this.textBufferViewGetSelectedText(view, ptr(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, ptr(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, color.buffer)\n }\n\n public textBufferViewSetTruncate(view: Pointer, truncate: boolean): void {\n this.opentui.symbols.textBufferViewSetTruncate(view, truncate)\n }\n\n public textBufferViewMeasureForDimensions(\n view: Pointer,\n width: number,\n height: number,\n ): { lineCount: number; widthColsMax: number } | null {\n const resultBuffer = new ArrayBuffer(MeasureResultStruct.size)\n const resultPtr = ptr(new Uint8Array(resultBuffer))\n const success = this.opentui.symbols.textBufferViewMeasureForDimensions(view, width, height, resultPtr)\n if (!success) {\n return null\n }\n const result = MeasureResultStruct.unpack(resultBuffer)\n return result\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): void {\n this.opentui.symbols.textBufferSetSyntaxStyle(buffer, style)\n }\n\n public textBufferGetLineHighlights(buffer: Pointer, lineIdx: number): Array<Highlight> {\n const outCountBuf = new BigUint64Array(1)\n\n const nativePtr = this.opentui.symbols.textBufferGetLineHighlightsPtr(buffer, lineIdx, ptr(outCountBuf))\n if (!nativePtr) return []\n\n const count = Number(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 typeof result === \"bigint\" ? Number(result) : result\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(editBufferPtr: Pointer, viewportWidth: number, viewportHeight: number): Pointer {\n const viewPtr = this.opentui.symbols.createEditorView(editBufferPtr, viewportWidth, viewportHeight)\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, 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: Pointer): Pointer {\n const result = this.opentui.symbols.editorViewGetTextBufferView(view)\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): Pointer {\n const widthMethodCode = widthMethod === \"wcwidth\" ? 0 : 1\n const bufferPtr = this.opentui.symbols.createEditBuffer(widthMethodCode)\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, textBytes, textBytes.length)\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, textBytes, textBytes.length)\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, ptr(outBuffer), maxLength)\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : 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, charBytes, charBytes.length)\n }\n\n public editBufferInsertText(buffer: Pointer, text: string): void {\n const textBytes = this.encoder.encode(text)\n this.opentui.symbols.editBufferInsertText(buffer, textBytes, textBytes.length)\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 cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size)\n this.opentui.symbols.editBufferGetCursorPosition(buffer, ptr(cursorBuffer))\n return LogicalCursorStruct.unpack(cursorBuffer)\n }\n\n public editBufferGetId(buffer: Pointer): number {\n return this.opentui.symbols.editBufferGetId(buffer)\n }\n\n public editBufferGetTextBuffer(buffer: Pointer): Pointer {\n const result = this.opentui.symbols.editBufferGetTextBuffer(buffer)\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, ptr(outBuffer), maxLength)\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : 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, ptr(outBuffer), maxLength)\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\n if (len === 0) return null\n return outBuffer.slice(0, len)\n }\n\n public editBufferCanUndo(buffer: Pointer): boolean {\n return this.opentui.symbols.editBufferCanUndo(buffer)\n }\n\n public editBufferCanRedo(buffer: Pointer): boolean {\n return 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 cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size)\n this.opentui.symbols.editBufferGetNextWordBoundary(buffer, ptr(cursorBuffer))\n return LogicalCursorStruct.unpack(cursorBuffer)\n }\n\n public editBufferGetPrevWordBoundary(buffer: Pointer): LogicalCursor {\n const cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size)\n this.opentui.symbols.editBufferGetPrevWordBoundary(buffer, ptr(cursorBuffer))\n return LogicalCursorStruct.unpack(cursorBuffer)\n }\n\n public editBufferGetEOL(buffer: Pointer): LogicalCursor {\n const cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size)\n this.opentui.symbols.editBufferGetEOL(buffer, ptr(cursorBuffer))\n return LogicalCursorStruct.unpack(cursorBuffer)\n }\n\n public editBufferOffsetToPosition(buffer: Pointer, offset: number): LogicalCursor | null {\n const cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size)\n const success = this.opentui.symbols.editBufferOffsetToPosition(buffer, offset, ptr(cursorBuffer))\n if (!success) return null\n return LogicalCursorStruct.unpack(cursorBuffer)\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 ptr(outBuffer),\n maxLength,\n )\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : 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 ptr(outBuffer),\n maxLength,\n )\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\n if (len === 0) return null\n return outBuffer.slice(0, 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 = bgColor ? bgColor.buffer : null\n const fg = fgColor ? fgColor.buffer : null\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 = bgColor ? bgColor.buffer : null\n const fg = fgColor ? fgColor.buffer : null\n return this.opentui.symbols.editorViewSetLocalSelection(\n view,\n anchorX,\n anchorY,\n focusX,\n focusY,\n bg,\n fg,\n updateCursor,\n followCursor,\n )\n }\n\n public editorViewUpdateSelection(view: Pointer, end: number, bgColor: RGBA | null, fgColor: RGBA | null): void {\n const bg = bgColor ? bgColor.buffer : null\n const fg = fgColor ? fgColor.buffer : null\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 = bgColor ? bgColor.buffer : null\n const fg = fgColor ? fgColor.buffer : null\n return this.opentui.symbols.editorViewUpdateLocalSelection(\n view,\n anchorX,\n anchorY,\n focusX,\n focusY,\n bg,\n fg,\n updateCursor,\n followCursor,\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, ptr(outBuffer), maxLength)\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : 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, ptr(outBuffer), maxLength)\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\n if (len === 0) return null\n return outBuffer.slice(0, len)\n }\n\n public editorViewGetVisualCursor(view: Pointer): VisualCursor {\n const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size)\n this.opentui.symbols.editorViewGetVisualCursor(view, ptr(cursorBuffer))\n return VisualCursorStruct.unpack(cursorBuffer)\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 cursorBuffer = new ArrayBuffer(VisualCursorStruct.size)\n this.opentui.symbols.editorViewGetNextWordBoundary(view, ptr(cursorBuffer))\n return VisualCursorStruct.unpack(cursorBuffer)\n }\n\n public editorViewGetPrevWordBoundary(view: Pointer): VisualCursor {\n const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size)\n this.opentui.symbols.editorViewGetPrevWordBoundary(view, ptr(cursorBuffer))\n return VisualCursorStruct.unpack(cursorBuffer)\n }\n\n public editorViewGetEOL(view: Pointer): VisualCursor {\n const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size)\n this.opentui.symbols.editorViewGetEOL(view, ptr(cursorBuffer))\n return VisualCursorStruct.unpack(cursorBuffer)\n }\n\n public editorViewGetVisualSOL(view: Pointer): VisualCursor {\n const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size)\n this.opentui.symbols.editorViewGetVisualSOL(view, ptr(cursorBuffer))\n return VisualCursorStruct.unpack(cursorBuffer)\n }\n\n public editorViewGetVisualEOL(view: Pointer): VisualCursor {\n const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size)\n this.opentui.symbols.editorViewGetVisualEOL(view, ptr(cursorBuffer))\n return VisualCursorStruct.unpack(cursorBuffer)\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) {\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 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 explicit_cursor_positioning: caps.explicit_cursor_positioning,\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, responseBytes, responseBytes.length)\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 size\n const outLenBuffer = new ArrayBuffer(8) // usize\n\n const success = this.opentui.symbols.encodeUnicode(\n textBytes,\n textBytes.length,\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 resultPtr = Number(outPtrView[0]) as Pointer\n const resultLen = Number(outLenView[0])\n\n if (resultLen === 0) {\n return { ptr: resultPtr, data: [] }\n }\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, fg.buffer, bg.buffer, attributes)\n }\n\n public registerNativeSpanFeedStream(stream: Pointer, handler: NativeSpanFeedEventHandler): void {\n const callback = this.ensureNativeSpanFeedCallback()\n this.nativeSpanFeedHandlers.set(toPointer(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(toPointer(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 toPointer(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(toPointer(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, ptr(bytes), bytes.length)\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(): Pointer {\n const stylePtr = this.opentui.symbols.createSyntaxStyle()\n if (!stylePtr) {\n throw new Error(\"Failed to create SyntaxStyle\")\n }\n return stylePtr\n }\n\n public destroySyntaxStyle(style: Pointer): void {\n this.opentui.symbols.destroySyntaxStyle(style)\n }\n\n public syntaxStyleRegister(\n style: Pointer,\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 = fg ? fg.buffer : null\n const bgPtr = bg ? bg.buffer : null\n return this.opentui.symbols.syntaxStyleRegister(style, nameBytes, nameBytes.length, fgPtr, bgPtr, attributes)\n }\n\n public syntaxStyleResolveByName(style: Pointer, name: string): number | null {\n const nameBytes = this.encoder.encode(name)\n const id = this.opentui.symbols.syntaxStyleResolveByName(style, nameBytes, nameBytes.length)\n return id === 0 ? null : id\n }\n\n public syntaxStyleGetStyleCount(style: Pointer): number {\n const result = this.opentui.symbols.syntaxStyleGetStyleCount(style)\n return typeof result === \"bigint\" ? Number(result) : result\n }\n\n public editorViewSetPlaceholderStyledText(\n view: Pointer,\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, ptr(chunksBuffer), nonEmptyChunks.length)\n }\n\n public editorViewSetTabIndicator(view: Pointer, indicator: number): void {\n this.opentui.symbols.editorViewSetTabIndicator(view, indicator)\n }\n\n public editorViewSetTabIndicatorColor(view: Pointer, color: RGBA): void {\n this.opentui.symbols.editorViewSetTabIndicatorColor(view, color.buffer)\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\n\nexport function setRenderLibPath(libPath: string) {\n if (opentuiLibPath !== libPath) {\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 return opentuiLib\n}\n\n// Try eager loading\ntry {\n opentuiLib = new FFIRenderLib(opentuiLibPath)\n} catch (error) {}\n",
45
- "import { RGBA } from \"./lib/index.js\"\nimport { resolveRenderLib, type RenderLib } from \"./zig.js\"\nimport { type Pointer, toArrayBuffer, ptr } from \"bun:ffi\"\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\nfunction packDrawOptions(\n border: boolean | BorderSides[],\n shouldFill: boolean,\n titleAlignment: \"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 packed |= alignment << 5\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: Pointer\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: Float32Array\n bg: Float32Array\n attributes: Uint32Array\n } | null = null\n private _destroyed: boolean = false\n\n get ptr(): Pointer {\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 get buffers(): {\n char: Uint32Array\n fg: Float32Array\n bg: Float32Array\n attributes: Uint32Array\n } {\n this.guard()\n if (this._rawBuffers === null) {\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 Float32Array(toArrayBuffer(fgPtr, 0, size * 4 * 4)),\n bg: new Float32Array(toArrayBuffer(bgPtr, 0, size * 4 * 4)),\n attributes: new Uint32Array(toArrayBuffer(attributesPtr, 0, size * 4)),\n }\n }\n\n return this._rawBuffers\n }\n\n constructor(\n lib: RenderLib,\n ptr: Pointer,\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.fromValues(fg[i * 4], fg[i * 4 + 1], fg[i * 4 + 2], fg[i * 4 + 3])\n const cellBg = RGBA.fromValues(bg[i * 4], bg[i * 4 + 1], bg[i * 4 + 2], bg[i * 4 + 3])\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.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 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: Pointer,\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 pixelDataPtr,\n pixelDataLength,\n format,\n alignedBytesPerRow,\n )\n }\n\n public drawPackedBuffer(\n dataPtr: Pointer,\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 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 titleAlignment?: \"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(options.border, options.shouldFill ?? false, options.titleAlignment || \"left\")\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.title ?? 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",
44
+ "import { dlopen, toArrayBuffer, JSCallback, ptr, type Pointer } from \"bun:ffi\"\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 Highlight,\n type LineInfo,\n type MousePointerStyle,\n} from \"./types.js\"\nexport type { LineInfo, AllocatorStats, BuildOptions }\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 BuildOptionsStruct,\n AllocatorStatsStruct,\n} from \"./zig-structs.js\"\nimport type {\n NativeSpanFeedOptions,\n NativeSpanFeedStats,\n ReserveInfo,\n BuildOptions,\n AllocatorStats,\n} from \"./zig-structs.js\"\nimport { isBunfsPath } from \"./lib/bunfs.js\"\n\nconst module = await import(`@opentui/core-${process.platform}-${process.arch}/index.ts`)\nlet targetLibPath = module.default\n\nif (isBunfsPath(targetLibPath)) {\n targetLibPath = targetLibPath.replace(\"../\", \"\")\n}\n\nif (!existsSync(targetLibPath)) {\n throw new Error(`opentui is not supported on the current platform: ${process.platform}-${process.arch}`)\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\",\n type: \"boolean\",\n default: false,\n})\nregisterEnvVar({\n name: \"OPENTUI_FORCE_UNICODE\",\n description: \"Force Mode 2026 Unicode support in terminal capabilities\",\n type: \"boolean\",\n default: false,\n})\nregisterEnvVar({\n name: \"OPENTUI_GRAPHICS\",\n description: \"Enable Kitty graphics protocol detection\",\n type: \"boolean\",\n default: true,\n})\nregisterEnvVar({\n name: \"OPENTUI_FORCE_NOZWJ\",\n description: \"Use no_zwj width method (Unicode without ZWJ joining)\",\n type: \"boolean\",\n default: 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\n\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 toPointer(value: number | bigint): Pointer {\n if (typeof value === \"bigint\") {\n if (value > BigInt(Number.MAX_SAFE_INTEGER)) {\n throw new Error(\"Pointer exceeds safe integer range\")\n }\n return Number(value) as Pointer\n }\n return value as Pointer\n}\n\nfunction toNumber(value: number | bigint): number {\n return typeof value === \"bigint\" ? Number(value) : value\n}\n\nfunction getOpenTUILib(libPath?: string) {\n const resolvedLibPath = libPath || targetLibPath\n\n const rawSymbols = dlopen(resolvedLibPath, {\n // Logging\n setLogCallback: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n // Event bus\n setEventCallback: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n // Renderer management\n createRenderer: {\n args: [\"u32\", \"u32\", \"bool\", \"bool\"],\n returns: \"ptr\",\n },\n setTerminalEnvVar: {\n args: [\"ptr\", \"ptr\", \"usize\", \"ptr\", \"usize\"],\n returns: \"bool\",\n },\n destroyRenderer: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n setUseThread: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\",\n },\n setBackgroundColor: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n setRenderOffset: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\",\n },\n updateStats: {\n args: [\"ptr\", \"f64\", \"u32\", \"f64\"],\n returns: \"void\",\n },\n updateMemoryStats: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n render: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\",\n },\n getNextBuffer: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n getCurrentBuffer: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n\n queryPixelResolution: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n\n createOptimizedBuffer: {\n args: [\"u32\", \"u32\", \"bool\", \"u8\", \"ptr\", \"usize\"],\n returns: \"ptr\",\n },\n destroyOptimizedBuffer: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n\n drawFrameBuffer: {\n args: [\"ptr\", \"i32\", \"i32\", \"ptr\", \"u32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n getBufferWidth: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n getBufferHeight: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n bufferClear: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n bufferGetCharPtr: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n bufferGetFgPtr: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n bufferGetBgPtr: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n bufferGetAttributesPtr: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n bufferGetRespectAlpha: {\n args: [\"ptr\"],\n returns: \"bool\",\n },\n bufferSetRespectAlpha: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\",\n },\n bufferGetId: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n bufferGetRealCharSize: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n bufferWriteResolvedChars: {\n args: [\"ptr\", \"ptr\", \"usize\", \"bool\"],\n returns: \"u32\",\n },\n\n bufferDrawText: {\n args: [\"ptr\", \"ptr\", \"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n bufferSetCellWithAlphaBlending: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n bufferSetCell: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n bufferFillRect: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\", \"ptr\"],\n returns: \"void\",\n },\n bufferColorMatrix: {\n args: [\"ptr\", \"ptr\", \"ptr\", \"usize\", \"f32\", \"u8\"],\n returns: \"void\",\n },\n bufferColorMatrixUniform: {\n args: [\"ptr\", \"ptr\", \"f32\", \"u8\"],\n returns: \"void\",\n },\n bufferResize: {\n args: [\"ptr\", \"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: [\"ptr\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n\n // Cursor functions (now renderer-scoped)\n setCursorPosition: {\n args: [\"ptr\", \"i32\", \"i32\", \"bool\"],\n returns: \"void\",\n },\n setCursorColor: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n getCursorState: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n\n // Cursor and mouse pointer style (combined)\n setCursorStyleOptions: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n\n // Debug overlay\n setDebugOverlay: {\n args: [\"ptr\", \"bool\", \"u8\"],\n returns: \"void\",\n },\n\n // Terminal control\n clearTerminal: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n setTerminalTitle: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\",\n },\n copyToClipboardOSC52: {\n args: [\"ptr\", \"u8\", \"ptr\", \"usize\"],\n returns: \"bool\",\n },\n clearClipboardOSC52: {\n args: [\"ptr\", \"u8\"],\n returns: \"bool\",\n },\n\n bufferDrawSuperSampleBuffer: {\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\", \"usize\", \"u8\", \"u32\"],\n returns: \"void\",\n },\n bufferDrawPackedBuffer: {\n args: [\"ptr\", \"ptr\", \"usize\", \"u32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n bufferDrawGrayscaleBuffer: {\n args: [\"ptr\", \"i32\", \"i32\", \"ptr\", \"u32\", \"u32\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n bufferDrawGrayscaleBufferSupersampled: {\n args: [\"ptr\", \"i32\", \"i32\", \"ptr\", \"u32\", \"u32\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n bufferDrawGrid: {\n args: [\"ptr\", \"ptr\", \"ptr\", \"ptr\", \"ptr\", \"u32\", \"ptr\", \"u32\", \"ptr\"],\n returns: \"void\",\n },\n bufferDrawBox: {\n args: [\"ptr\", \"i32\", \"i32\", \"u32\", \"u32\", \"ptr\", \"u32\", \"ptr\", \"ptr\", \"ptr\", \"u32\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n bufferPushScissorRect: {\n args: [\"ptr\", \"i32\", \"i32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n bufferPopScissorRect: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n bufferClearScissorRects: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n bufferPushOpacity: {\n args: [\"ptr\", \"f32\"],\n returns: \"void\",\n },\n bufferPopOpacity: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n bufferGetCurrentOpacity: {\n args: [\"ptr\"],\n returns: \"f32\",\n },\n bufferClearOpacity: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n\n addToHitGrid: {\n args: [\"ptr\", \"i32\", \"i32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n clearCurrentHitGrid: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n hitGridPushScissorRect: {\n args: [\"ptr\", \"i32\", \"i32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n hitGridPopScissorRect: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n hitGridClearScissorRects: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n addToCurrentHitGridClipped: {\n args: [\"ptr\", \"i32\", \"i32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n checkHit: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"u32\",\n },\n getHitGridDirty: {\n args: [\"ptr\"],\n returns: \"bool\",\n },\n dumpHitGrid: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n dumpBuffers: {\n args: [\"ptr\", \"i64\"],\n returns: \"void\",\n },\n dumpStdoutBuffer: {\n args: [\"ptr\", \"i64\"],\n returns: \"void\",\n },\n restoreTerminalModes: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n enableMouse: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\",\n },\n disableMouse: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n enableKittyKeyboard: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\",\n },\n disableKittyKeyboard: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n setKittyKeyboardFlags: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\",\n },\n getKittyKeyboardFlags: {\n args: [\"ptr\"],\n returns: \"u8\",\n },\n setupTerminal: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\",\n },\n suspendRenderer: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n resumeRenderer: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n writeOut: {\n args: [\"ptr\", \"ptr\", \"u64\"],\n returns: \"void\",\n },\n\n // TextBuffer functions\n createTextBuffer: {\n args: [\"u8\"],\n returns: \"ptr\",\n },\n destroyTextBuffer: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n textBufferGetLength: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n textBufferGetByteSize: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n\n textBufferReset: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n textBufferClear: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n textBufferSetDefaultFg: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferSetDefaultBg: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferSetDefaultAttributes: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferResetDefaults: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n textBufferGetTabWidth: {\n args: [\"ptr\"],\n returns: \"u8\",\n },\n textBufferSetTabWidth: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\",\n },\n textBufferRegisterMemBuffer: {\n args: [\"ptr\", \"ptr\", \"usize\", \"bool\"],\n returns: \"u16\",\n },\n textBufferReplaceMemBuffer: {\n args: [\"ptr\", \"u8\", \"ptr\", \"usize\", \"bool\"],\n returns: \"bool\",\n },\n textBufferClearMemRegistry: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n textBufferSetTextFromMem: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\",\n },\n textBufferAppend: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\",\n },\n textBufferAppendFromMemId: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\",\n },\n textBufferLoadFile: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"bool\",\n },\n textBufferSetStyledText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\",\n },\n textBufferGetLineCount: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n textBufferGetPlainText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n textBufferAddHighlightByCharRange: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferAddHighlight: {\n args: [\"ptr\", \"u32\", \"ptr\"],\n returns: \"void\",\n },\n textBufferRemoveHighlightsByRef: {\n args: [\"ptr\", \"u16\"],\n returns: \"void\",\n },\n textBufferClearLineHighlights: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\",\n },\n textBufferClearAllHighlights: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n textBufferSetSyntaxStyle: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferGetLineHighlightsPtr: {\n args: [\"ptr\", \"u32\", \"ptr\"],\n returns: \"ptr\",\n },\n textBufferFreeLineHighlights: {\n args: [\"ptr\", \"usize\"],\n returns: \"void\",\n },\n textBufferGetHighlightCount: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n textBufferGetTextRange: {\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n textBufferGetTextRangeByCoords: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n\n // TextBufferView functions\n createTextBufferView: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n destroyTextBufferView: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n textBufferViewSetSelection: {\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferViewResetSelection: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n textBufferViewGetSelectionInfo: {\n args: [\"ptr\"],\n returns: \"u64\",\n },\n textBufferViewSetLocalSelection: {\n args: [\"ptr\", \"i32\", \"i32\", \"i32\", \"i32\", \"ptr\", \"ptr\"],\n returns: \"bool\",\n },\n textBufferViewUpdateSelection: {\n args: [\"ptr\", \"u32\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferViewUpdateLocalSelection: {\n args: [\"ptr\", \"i32\", \"i32\", \"i32\", \"i32\", \"ptr\", \"ptr\"],\n returns: \"bool\",\n },\n textBufferViewResetLocalSelection: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n textBufferViewSetWrapWidth: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\",\n },\n textBufferViewSetWrapMode: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\",\n },\n textBufferViewSetViewportSize: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n textBufferViewSetViewport: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n textBufferViewGetVirtualLineCount: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n textBufferViewGetLineInfoDirect: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferViewGetLogicalLineInfoDirect: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferViewGetSelectedText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n textBufferViewGetPlainText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n textBufferViewSetTabIndicator: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\",\n },\n textBufferViewSetTabIndicatorColor: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferViewSetTruncate: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\",\n },\n textBufferViewMeasureForDimensions: {\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\"],\n returns: \"bool\",\n },\n bufferDrawTextBufferView: {\n args: [\"ptr\", \"ptr\", \"i32\", \"i32\"],\n returns: \"void\",\n },\n bufferDrawEditorView: {\n args: [\"ptr\", \"ptr\", \"i32\", \"i32\"],\n returns: \"void\",\n },\n\n // EditorView functions\n createEditorView: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"ptr\",\n },\n destroyEditorView: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editorViewSetViewportSize: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n editorViewSetViewport: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\", \"bool\"],\n returns: \"void\",\n },\n editorViewGetViewport: {\n args: [\"ptr\", \"ptr\", \"ptr\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewSetScrollMargin: {\n args: [\"ptr\", \"f32\"],\n returns: \"void\",\n },\n editorViewSetWrapMode: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\",\n },\n editorViewGetVirtualLineCount: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n editorViewGetTotalVirtualLineCount: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n editorViewGetTextBufferView: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n editorViewGetLineInfoDirect: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewGetLogicalLineInfoDirect: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n\n // EditBuffer functions\n createEditBuffer: {\n args: [\"u8\"],\n returns: \"ptr\",\n },\n destroyEditBuffer: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferSetText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\",\n },\n editBufferSetTextFromMem: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\",\n },\n editBufferReplaceText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\",\n },\n editBufferReplaceTextFromMem: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\",\n },\n editBufferGetText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n editBufferInsertChar: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\",\n },\n editBufferInsertText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\",\n },\n editBufferDeleteChar: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferDeleteCharBackward: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferDeleteRange: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n editBufferNewLine: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferDeleteLine: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferMoveCursorLeft: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferMoveCursorRight: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferMoveCursorUp: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferMoveCursorDown: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferGotoLine: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\",\n },\n editBufferSetCursor: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n editBufferSetCursorToLineCol: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n editBufferSetCursorByOffset: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\",\n },\n editBufferGetCursorPosition: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editBufferGetId: {\n args: [\"ptr\"],\n returns: \"u16\",\n },\n editBufferGetTextBuffer: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n editBufferDebugLogRope: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferUndo: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n editBufferRedo: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n editBufferCanUndo: {\n args: [\"ptr\"],\n returns: \"bool\",\n },\n editBufferCanRedo: {\n args: [\"ptr\"],\n returns: \"bool\",\n },\n editBufferClearHistory: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferClear: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferGetNextWordBoundary: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editBufferGetPrevWordBoundary: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editBufferGetEOL: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editBufferOffsetToPosition: {\n args: [\"ptr\", \"u32\", \"ptr\"],\n returns: \"bool\",\n },\n editBufferPositionToOffset: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"u32\",\n },\n editBufferGetLineStartOffset: {\n args: [\"ptr\", \"u32\"],\n returns: \"u32\",\n },\n editBufferGetTextRange: {\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n editBufferGetTextRangeByCoords: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n\n // EditorView selection and editing methods\n editorViewSetSelection: {\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewResetSelection: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editorViewGetSelection: {\n args: [\"ptr\"],\n returns: \"u64\",\n },\n editorViewSetLocalSelection: {\n args: [\"ptr\", \"i32\", \"i32\", \"i32\", \"i32\", \"ptr\", \"ptr\", \"bool\", \"bool\"],\n returns: \"bool\",\n },\n editorViewUpdateSelection: {\n args: [\"ptr\", \"u32\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewUpdateLocalSelection: {\n args: [\"ptr\", \"i32\", \"i32\", \"i32\", \"i32\", \"ptr\", \"ptr\", \"bool\", \"bool\"],\n returns: \"bool\",\n },\n editorViewResetLocalSelection: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editorViewGetSelectedTextBytes: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n editorViewGetCursor: {\n args: [\"ptr\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewGetText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n\n // EditorView VisualCursor methods\n editorViewGetVisualCursor: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n\n editorViewMoveUpVisual: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editorViewMoveDownVisual: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editorViewDeleteSelectedText: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editorViewSetCursorByOffset: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\",\n },\n editorViewGetNextWordBoundary: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewGetPrevWordBoundary: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewGetEOL: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewGetVisualSOL: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewGetVisualEOL: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewSetPlaceholderStyledText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\",\n },\n editorViewSetTabIndicator: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\",\n },\n editorViewSetTabIndicatorColor: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n\n getArenaAllocatedBytes: {\n args: [],\n returns: \"usize\",\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: \"ptr\",\n },\n destroySyntaxStyle: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n syntaxStyleRegister: {\n args: [\"ptr\", \"ptr\", \"usize\", \"ptr\", \"ptr\", \"u8\"],\n returns: \"u32\",\n },\n syntaxStyleResolveByName: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"u32\",\n },\n syntaxStyleGetStyleCount: {\n args: [\"ptr\"],\n returns: \"usize\",\n },\n\n // Terminal capability functions\n getTerminalCapabilities: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n processCapabilityResponse: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\",\n },\n\n // Unicode encoding API\n encodeUnicode: {\n args: [\"ptr\", \"usize\", \"ptr\", \"ptr\", \"u8\"],\n returns: \"bool\",\n },\n freeUnicode: {\n args: [\"ptr\", \"usize\"],\n returns: \"void\",\n },\n bufferDrawChar: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\", \"u32\"],\n returns: \"void\",\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\", \"u64\"],\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 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 Bun.write(traceFilePath, output)\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 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 interface RenderLib {\n createRenderer: (width: number, height: number, options?: { testing?: boolean; remote?: boolean }) => Pointer | null\n setTerminalEnvVar: (renderer: Pointer, key: string, value: string) => boolean\n destroyRenderer: (renderer: Pointer) => void\n setUseThread: (renderer: Pointer, useThread: boolean) => void\n setBackgroundColor: (renderer: Pointer, color: RGBA) => void\n setRenderOffset: (renderer: Pointer, offset: number) => void\n updateStats: (renderer: Pointer, time: number, fps: number, frameCallbackTime: number) => void\n updateMemoryStats: (renderer: Pointer, heapUsed: number, heapTotal: number, arrayBuffers: number) => void\n render: (renderer: Pointer, force: boolean) => void\n getNextBuffer: (renderer: Pointer) => OptimizedBuffer\n getCurrentBuffer: (renderer: Pointer) => OptimizedBuffer\n createOptimizedBuffer: (\n width: number,\n height: number,\n widthMethod: WidthMethod,\n respectAlpha?: boolean,\n id?: string,\n ) => OptimizedBuffer\n destroyOptimizedBuffer: (bufferPtr: Pointer) => void\n 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 ) => void\n getBufferWidth: (buffer: Pointer) => number\n getBufferHeight: (buffer: Pointer) => number\n bufferClear: (buffer: Pointer, color: RGBA) => void\n bufferGetCharPtr: (buffer: Pointer) => Pointer\n bufferGetFgPtr: (buffer: Pointer) => Pointer\n bufferGetBgPtr: (buffer: Pointer) => Pointer\n bufferGetAttributesPtr: (buffer: Pointer) => Pointer\n bufferGetRespectAlpha: (buffer: Pointer) => boolean\n bufferSetRespectAlpha: (buffer: Pointer, respectAlpha: boolean) => void\n bufferGetId: (buffer: Pointer) => string\n bufferGetRealCharSize: (buffer: Pointer) => number\n bufferWriteResolvedChars: (buffer: Pointer, outputBuffer: Uint8Array, addLineBreaks: boolean) => number\n bufferDrawText: (\n buffer: Pointer,\n text: string,\n x: number,\n y: number,\n color: RGBA,\n bgColor?: RGBA,\n attributes?: number,\n ) => void\n bufferSetCellWithAlphaBlending: (\n buffer: Pointer,\n x: number,\n y: number,\n char: string,\n color: RGBA,\n bgColor: RGBA,\n attributes?: number,\n ) => void\n bufferSetCell: (\n buffer: Pointer,\n x: number,\n y: number,\n char: string,\n color: RGBA,\n bgColor: RGBA,\n attributes?: number,\n ) => void\n bufferFillRect: (buffer: Pointer, x: number, y: number, width: number, height: number, color: RGBA) => void\n bufferColorMatrix: (\n buffer: Pointer,\n matrixPtr: Pointer,\n cellMaskPtr: Pointer,\n cellMaskCount: number,\n strength: number,\n target: TargetChannel,\n ) => void\n bufferColorMatrixUniform: (buffer: Pointer, matrixPtr: Pointer, strength: number, target: TargetChannel) => void\n 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 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 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 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 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 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 title: string | null,\n bottomTitle: string | null,\n ) => void\n bufferResize: (buffer: Pointer, width: number, height: number) => void\n resizeRenderer: (renderer: Pointer, width: number, height: number) => void\n setCursorPosition: (renderer: Pointer, x: number, y: number, visible: boolean) => void\n setCursorColor: (renderer: Pointer, color: RGBA) => void\n getCursorState: (renderer: Pointer) => CursorState\n setCursorStyleOptions: (renderer: Pointer, options: CursorStyleOptions) => void\n setDebugOverlay: (renderer: Pointer, enabled: boolean, corner: DebugOverlayCorner) => void\n clearTerminal: (renderer: Pointer) => void\n setTerminalTitle: (renderer: Pointer, title: string) => void\n copyToClipboardOSC52: (renderer: Pointer, target: number, payload: Uint8Array) => boolean\n clearClipboardOSC52: (renderer: Pointer, target: number) => boolean\n addToHitGrid: (renderer: Pointer, x: number, y: number, width: number, height: number, id: number) => void\n clearCurrentHitGrid: (renderer: Pointer) => void\n hitGridPushScissorRect: (renderer: Pointer, x: number, y: number, width: number, height: number) => void\n hitGridPopScissorRect: (renderer: Pointer) => void\n hitGridClearScissorRects: (renderer: Pointer) => void\n addToCurrentHitGridClipped: (\n renderer: Pointer,\n x: number,\n y: number,\n width: number,\n height: number,\n id: number,\n ) => void\n checkHit: (renderer: Pointer, x: number, y: number) => number\n getHitGridDirty: (renderer: Pointer) => boolean\n dumpHitGrid: (renderer: Pointer) => void\n dumpBuffers: (renderer: Pointer, timestamp?: number) => void\n dumpStdoutBuffer: (renderer: Pointer, timestamp?: number) => void\n restoreTerminalModes: (renderer: Pointer) => void\n enableMouse: (renderer: Pointer, enableMovement: boolean) => void\n disableMouse: (renderer: Pointer) => void\n enableKittyKeyboard: (renderer: Pointer, flags: number) => void\n disableKittyKeyboard: (renderer: Pointer) => void\n setKittyKeyboardFlags: (renderer: Pointer, flags: number) => void\n getKittyKeyboardFlags: (renderer: Pointer) => number\n setupTerminal: (renderer: Pointer, useAlternateScreen: boolean) => void\n suspendRenderer: (renderer: Pointer) => void\n resumeRenderer: (renderer: Pointer) => void\n queryPixelResolution: (renderer: Pointer) => void\n writeOut: (renderer: Pointer, data: string | Uint8Array) => void\n\n // TextBuffer methods\n createTextBuffer: (widthMethod: WidthMethod) => TextBuffer\n destroyTextBuffer: (buffer: Pointer) => void\n textBufferGetLength: (buffer: Pointer) => number\n textBufferGetByteSize: (buffer: Pointer) => number\n\n textBufferReset: (buffer: Pointer) => void\n textBufferClear: (buffer: Pointer) => void\n textBufferRegisterMemBuffer: (buffer: Pointer, bytes: Uint8Array, owned?: boolean) => number\n textBufferReplaceMemBuffer: (buffer: Pointer, memId: number, bytes: Uint8Array, owned?: boolean) => boolean\n textBufferClearMemRegistry: (buffer: Pointer) => void\n textBufferSetTextFromMem: (buffer: Pointer, memId: number) => void\n textBufferAppend: (buffer: Pointer, bytes: Uint8Array) => void\n textBufferAppendFromMemId: (buffer: Pointer, memId: number) => void\n textBufferLoadFile: (buffer: Pointer, path: string) => boolean\n textBufferSetStyledText: (\n buffer: Pointer,\n chunks: Array<{ text: string; fg?: RGBA | null; bg?: RGBA | null; attributes?: number; link?: { url: string } }>,\n ) => void\n textBufferSetDefaultFg: (buffer: Pointer, fg: RGBA | null) => void\n textBufferSetDefaultBg: (buffer: Pointer, bg: RGBA | null) => void\n textBufferSetDefaultAttributes: (buffer: Pointer, attributes: number | null) => void\n textBufferResetDefaults: (buffer: Pointer) => void\n textBufferGetTabWidth: (buffer: Pointer) => number\n textBufferSetTabWidth: (buffer: Pointer, width: number) => void\n textBufferGetLineCount: (buffer: Pointer) => number\n getPlainTextBytes: (buffer: Pointer, maxLength: number) => Uint8Array | null\n textBufferGetTextRange: (\n buffer: Pointer,\n startOffset: number,\n endOffset: number,\n maxLength: number,\n ) => Uint8Array | null\n textBufferGetTextRangeByCoords: (\n buffer: Pointer,\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: Pointer) => Pointer\n destroyTextBufferView: (view: Pointer) => void\n textBufferViewSetSelection: (\n view: Pointer,\n start: number,\n end: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n ) => void\n textBufferViewResetSelection: (view: Pointer) => void\n textBufferViewGetSelection: (view: Pointer) => { start: number; end: number } | null\n 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 textBufferViewUpdateSelection: (view: Pointer, end: number, bgColor: RGBA | null, fgColor: RGBA | null) => void\n 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 textBufferViewResetLocalSelection: (view: Pointer) => void\n textBufferViewSetWrapWidth: (view: Pointer, width: number) => void\n textBufferViewSetWrapMode: (view: Pointer, mode: \"none\" | \"char\" | \"word\") => void\n textBufferViewSetViewportSize: (view: Pointer, width: number, height: number) => void\n textBufferViewSetViewport: (view: Pointer, x: number, y: number, width: number, height: number) => void\n textBufferViewGetLineInfo: (view: Pointer) => LineInfo\n textBufferViewGetLogicalLineInfo: (view: Pointer) => LineInfo\n textBufferViewGetSelectedTextBytes: (view: Pointer, maxLength: number) => Uint8Array | null\n textBufferViewGetPlainTextBytes: (view: Pointer, maxLength: number) => Uint8Array | null\n textBufferViewSetTabIndicator: (view: Pointer, indicator: number) => void\n textBufferViewSetTabIndicatorColor: (view: Pointer, color: RGBA) => void\n textBufferViewSetTruncate: (view: Pointer, truncate: boolean) => void\n textBufferViewMeasureForDimensions: (\n view: Pointer,\n width: number,\n height: number,\n ) => { lineCount: number; widthColsMax: number } | null\n textBufferViewGetVirtualLineCount: (view: Pointer) => number\n\n readonly encoder: TextEncoder\n readonly decoder: TextDecoder\n bufferDrawTextBufferView: (buffer: Pointer, view: Pointer, x: number, y: number) => void\n bufferDrawEditorView: (buffer: Pointer, view: Pointer, x: number, y: number) => void\n\n // EditBuffer methods\n createEditBuffer: (widthMethod: WidthMethod) => Pointer\n destroyEditBuffer: (buffer: Pointer) => void\n editBufferSetText: (buffer: Pointer, textBytes: Uint8Array) => void\n editBufferSetTextFromMem: (buffer: Pointer, memId: number) => void\n editBufferReplaceText: (buffer: Pointer, textBytes: Uint8Array) => void\n editBufferReplaceTextFromMem: (buffer: Pointer, memId: number) => void\n editBufferGetText: (buffer: Pointer, maxLength: number) => Uint8Array | null\n editBufferInsertChar: (buffer: Pointer, char: string) => void\n editBufferInsertText: (buffer: Pointer, text: string) => void\n editBufferDeleteChar: (buffer: Pointer) => void\n editBufferDeleteCharBackward: (buffer: Pointer) => void\n editBufferDeleteRange: (buffer: Pointer, startLine: number, startCol: number, endLine: number, endCol: number) => void\n editBufferNewLine: (buffer: Pointer) => void\n editBufferDeleteLine: (buffer: Pointer) => void\n editBufferMoveCursorLeft: (buffer: Pointer) => void\n editBufferMoveCursorRight: (buffer: Pointer) => void\n editBufferMoveCursorUp: (buffer: Pointer) => void\n editBufferMoveCursorDown: (buffer: Pointer) => void\n editBufferGotoLine: (buffer: Pointer, line: number) => void\n editBufferSetCursor: (buffer: Pointer, line: number, col: number) => void\n editBufferSetCursorToLineCol: (buffer: Pointer, line: number, col: number) => void\n editBufferSetCursorByOffset: (buffer: Pointer, offset: number) => void\n editBufferGetCursorPosition: (buffer: Pointer) => LogicalCursor\n editBufferGetId: (buffer: Pointer) => number\n editBufferGetTextBuffer: (buffer: Pointer) => Pointer\n editBufferDebugLogRope: (buffer: Pointer) => void\n editBufferUndo: (buffer: Pointer, maxLength: number) => Uint8Array | null\n editBufferRedo: (buffer: Pointer, maxLength: number) => Uint8Array | null\n editBufferCanUndo: (buffer: Pointer) => boolean\n editBufferCanRedo: (buffer: Pointer) => boolean\n editBufferClearHistory: (buffer: Pointer) => void\n editBufferClear: (buffer: Pointer) => void\n editBufferGetNextWordBoundary: (buffer: Pointer) => { row: number; col: number; offset: number }\n editBufferGetPrevWordBoundary: (buffer: Pointer) => { row: number; col: number; offset: number }\n editBufferGetEOL: (buffer: Pointer) => { row: number; col: number; offset: number }\n editBufferOffsetToPosition: (buffer: Pointer, offset: number) => { row: number; col: number; offset: number } | null\n editBufferPositionToOffset: (buffer: Pointer, row: number, col: number) => number\n editBufferGetLineStartOffset: (buffer: Pointer, row: number) => number\n editBufferGetTextRange: (\n buffer: Pointer,\n startOffset: number,\n endOffset: number,\n maxLength: number,\n ) => Uint8Array | null\n editBufferGetTextRangeByCoords: (\n buffer: Pointer,\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: Pointer, viewportWidth: number, viewportHeight: number) => Pointer\n destroyEditorView: (view: Pointer) => void\n editorViewSetViewportSize: (view: Pointer, width: number, height: number) => void\n editorViewSetViewport: (\n view: Pointer,\n x: number,\n y: number,\n width: number,\n height: number,\n moveCursor: boolean,\n ) => void\n editorViewGetViewport: (view: Pointer) => { offsetY: number; offsetX: number; height: number; width: number }\n editorViewSetScrollMargin: (view: Pointer, margin: number) => void\n editorViewSetWrapMode: (view: Pointer, mode: \"none\" | \"char\" | \"word\") => void\n editorViewGetVirtualLineCount: (view: Pointer) => number\n editorViewGetTotalVirtualLineCount: (view: Pointer) => number\n editorViewGetTextBufferView: (view: Pointer) => Pointer\n editorViewSetSelection: (\n view: Pointer,\n start: number,\n end: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n ) => void\n editorViewResetSelection: (view: Pointer) => void\n editorViewGetSelection: (view: Pointer) => { start: number; end: number } | null\n 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\n editorViewUpdateSelection: (view: Pointer, end: number, bgColor: RGBA | null, fgColor: RGBA | null) => void\n 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\n editorViewResetLocalSelection: (view: Pointer) => void\n editorViewGetSelectedTextBytes: (view: Pointer, maxLength: number) => Uint8Array | null\n editorViewGetCursor: (view: Pointer) => { row: number; col: number }\n editorViewGetText: (view: Pointer, maxLength: number) => Uint8Array | null\n editorViewGetVisualCursor: (view: Pointer) => VisualCursor\n editorViewMoveUpVisual: (view: Pointer) => void\n editorViewMoveDownVisual: (view: Pointer) => void\n editorViewDeleteSelectedText: (view: Pointer) => void\n editorViewSetCursorByOffset: (view: Pointer, offset: number) => void\n editorViewGetNextWordBoundary: (view: Pointer) => VisualCursor\n editorViewGetPrevWordBoundary: (view: Pointer) => VisualCursor\n editorViewGetEOL: (view: Pointer) => VisualCursor\n editorViewGetVisualSOL: (view: Pointer) => VisualCursor\n editorViewGetVisualEOL: (view: Pointer) => VisualCursor\n editorViewGetLineInfo: (view: Pointer) => LineInfo\n editorViewGetLogicalLineInfo: (view: Pointer) => LineInfo\n editorViewSetPlaceholderStyledText: (\n view: Pointer,\n chunks: Array<{ text: string; fg?: RGBA | null; bg?: RGBA | null; attributes?: number }>,\n ) => void\n editorViewSetTabIndicator: (view: Pointer, indicator: number) => void\n editorViewSetTabIndicatorColor: (view: Pointer, color: RGBA) => void\n\n bufferPushScissorRect: (buffer: Pointer, x: number, y: number, width: number, height: number) => void\n bufferPopScissorRect: (buffer: Pointer) => void\n bufferClearScissorRects: (buffer: Pointer) => void\n bufferPushOpacity: (buffer: Pointer, opacity: number) => void\n bufferPopOpacity: (buffer: Pointer) => void\n bufferGetCurrentOpacity: (buffer: Pointer) => number\n bufferClearOpacity: (buffer: Pointer) => void\n textBufferAddHighlightByCharRange: (buffer: Pointer, highlight: Highlight) => void\n textBufferAddHighlight: (buffer: Pointer, lineIdx: number, highlight: Highlight) => void\n textBufferRemoveHighlightsByRef: (buffer: Pointer, hlRef: number) => void\n textBufferClearLineHighlights: (buffer: Pointer, lineIdx: number) => void\n textBufferClearAllHighlights: (buffer: Pointer) => void\n textBufferSetSyntaxStyle: (buffer: Pointer, style: Pointer | null) => void\n textBufferGetLineHighlights: (buffer: Pointer, lineIdx: number) => Array<Highlight>\n textBufferGetHighlightCount: (buffer: Pointer) => number\n\n getArenaAllocatedBytes: () => number\n getBuildOptions: () => BuildOptions\n getAllocatorStats: () => AllocatorStats\n\n createSyntaxStyle: () => Pointer\n destroySyntaxStyle: (style: Pointer) => void\n syntaxStyleRegister: (style: Pointer, name: string, fg: RGBA | null, bg: RGBA | null, attributes: number) => number\n syntaxStyleResolveByName: (style: Pointer, name: string) => number | null\n syntaxStyleGetStyleCount: (style: Pointer) => number\n\n getTerminalCapabilities: (renderer: Pointer) => any\n processCapabilityResponse: (renderer: Pointer, 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: (buffer: Pointer, char: number, x: number, y: number, fg: RGBA, bg: RGBA, attributes?: number) => 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\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 public readonly encoder: TextEncoder = new TextEncoder()\n public readonly decoder: TextDecoder = new TextDecoder()\n private logCallbackWrapper: any // Store the FFI callback wrapper\n private eventCallbackWrapper: any // Store the FFI event callback wrapper\n private _nativeEvents: EventEmitter = new EventEmitter()\n private _anyEventHandlers: Array<(name: string, data: ArrayBuffer) => void> = []\n private nativeSpanFeedCallbackWrapper: JSCallback | null = null\n private nativeSpanFeedHandlers = new Map<Pointer, NativeSpanFeedEventHandler>()\n\n constructor(libPath?: string) {\n this.opentui = getOpenTUILib(libPath)\n this.setupLogging()\n this.setupEventBus()\n }\n\n private setupLogging() {\n if (this.logCallbackWrapper) {\n return\n }\n\n const logCallback = new JSCallback(\n (level: number, msgPtr: Pointer, msgLenBigInt: bigint | number) => {\n try {\n const msgLen = typeof msgLenBigInt === \"bigint\" ? Number(msgLenBigInt) : msgLenBigInt\n\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\", \"usize\"],\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) {\n this.opentui.symbols.setLogCallback(callbackPtr)\n }\n\n private setupEventBus() {\n if (this.eventCallbackWrapper) {\n return\n }\n\n const eventCallback = new JSCallback(\n (namePtr: Pointer, nameLenBigInt: bigint | number, dataPtr: Pointer, dataLenBigInt: bigint | number) => {\n try {\n const nameLen = typeof nameLenBigInt === \"bigint\" ? Number(nameLenBigInt) : nameLenBigInt\n const dataLen = typeof dataLenBigInt === \"bigint\" ? Number(dataLenBigInt) : dataLenBigInt\n\n if (nameLen === 0 || !namePtr) {\n return\n }\n\n const nameBuffer = toArrayBuffer(namePtr, 0, nameLen)\n const nameBytes = new Uint8Array(nameBuffer)\n const eventName = this.decoder.decode(nameBytes)\n\n let eventData: ArrayBuffer\n if (dataLen > 0 && dataPtr) {\n eventData = toArrayBuffer(dataPtr, 0, dataLen).slice()\n } else {\n eventData = new ArrayBuffer(0)\n }\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\", \"usize\", \"ptr\", \"usize\"],\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.setEventCallback(eventCallback.ptr)\n }\n\n private ensureNativeSpanFeedCallback(): JSCallback {\n if (this.nativeSpanFeedCallbackWrapper) {\n return this.nativeSpanFeedCallbackWrapper\n }\n\n const callback = new JSCallback(\n (streamPtr: Pointer, eventId: number, arg0: Pointer, arg1: number | bigint) => {\n const handler = this.nativeSpanFeedHandlers.get(toPointer(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 private setEventCallback(callbackPtr: Pointer) {\n this.opentui.symbols.setEventCallback(callbackPtr)\n }\n\n public createRenderer(width: number, height: number, options: { testing?: boolean; remote?: boolean } = {}) {\n const testing = options.testing ?? false\n const remote = options.remote ?? false\n return this.opentui.symbols.createRenderer(width, height, testing, remote)\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(renderer, keyBytes, keyBytes.length, valueBytes, valueBytes.length)\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, useThread)\n }\n\n public setBackgroundColor(renderer: Pointer, color: RGBA) {\n this.opentui.symbols.setBackgroundColor(renderer, color.buffer)\n }\n\n public setRenderOffset(renderer: Pointer, offset: number) {\n this.opentui.symbols.setRenderOffset(renderer, offset)\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 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 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, 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, outBuffer, maxLen)\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\n return this.decoder.decode(outBuffer.slice(0, len))\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 const bytesWritten = this.opentui.symbols.bufferWriteResolvedChars(\n buffer,\n outputBuffer,\n outputBuffer.length,\n addLineBreaks,\n )\n return typeof bytesWritten === \"bigint\" ? Number(bytesWritten) : bytesWritten\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, color.buffer)\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 textLength = textBytes.byteLength\n const bg = bgColor ? bgColor.buffer : null\n const fg = color.buffer\n\n this.opentui.symbols.bufferDrawText(buffer, textBytes, textLength, x, y, fg, bg, attributes ?? 0)\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 = bgColor.buffer\n const fg = color.buffer\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 = bgColor.buffer\n const fg = color.buffer\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 = color.buffer\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 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 fg?.buffer ?? null,\n bg?.buffer ?? null,\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 fg?.buffer ?? null,\n bg?.buffer ?? null,\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 const optionsBuffer = GridDrawOptionsStruct.pack({\n drawInner: options.drawInner,\n drawOuter: options.drawOuter,\n })\n\n this.opentui.symbols.bufferDrawGrid(\n buffer,\n borderChars,\n borderFg.buffer,\n borderBg.buffer,\n columnOffsets,\n columnCount,\n rowOffsets,\n rowCount,\n ptr(optionsBuffer),\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 title: string | null,\n bottomTitle: string | null,\n ): void {\n const titleBytes = title ? this.encoder.encode(title) : null\n const titleLen = title ? titleBytes!.length : 0\n const titlePtr = title ? titleBytes : null\n\n const bottomTitleBytes = bottomTitle ? this.encoder.encode(bottomTitle) : null\n const bottomTitleLen = bottomTitle ? bottomTitleBytes!.length : 0\n const bottomTitlePtr = bottomTitle ? bottomTitleBytes : null\n\n this.opentui.symbols.bufferDrawBox(\n buffer,\n x,\n y,\n width,\n height,\n borderChars,\n packedOptions,\n borderColor.buffer,\n backgroundColor.buffer,\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(urlBytes, urlBytes.length)\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, 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, visible)\n }\n\n public setCursorColor(renderer: Pointer, color: RGBA) {\n this.opentui.symbols.setCursorColor(renderer, color.buffer)\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, ptr(buffer))\n }\n\n public render(renderer: Pointer, force: boolean) {\n this.opentui.symbols.render(renderer, force)\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 respectAlpha,\n widthMethodCode,\n idBytes,\n idBytes.length,\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, 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, titleBytes, titleBytes.length)\n }\n\n public copyToClipboardOSC52(renderer: Pointer, target: number, payload: Uint8Array): boolean {\n return this.opentui.symbols.copyToClipboardOSC52(renderer, target, payload, payload.length)\n }\n\n public clearClipboardOSC52(renderer: Pointer, target: number): boolean {\n return this.opentui.symbols.clearClipboardOSC52(renderer, target)\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 = timestamp ?? Date.now()\n this.opentui.symbols.dumpBuffers(renderer, ts)\n }\n\n public dumpStdoutBuffer(renderer: Pointer, timestamp?: number): void {\n const ts = timestamp ?? Date.now()\n this.opentui.symbols.dumpStdoutBuffer(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, 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, 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 /**\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, ptr(bytes), bytes.length)\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 = fg ? fg.buffer : null\n this.opentui.symbols.textBufferSetDefaultFg(buffer, fgPtr)\n }\n\n public textBufferSetDefaultBg(buffer: Pointer, bg: RGBA | null): void {\n const bgPtr = bg ? bg.buffer : null\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 Uint8Array([attributes])\n this.opentui.symbols.textBufferSetDefaultAttributes(buffer, attrValue)\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(buffer, bytes, bytes.length, owned)\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(buffer, memId, bytes, bytes.length, owned)\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, bytes, bytes.length)\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, pathBytes, pathBytes.length)\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, ptr(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, maxLen: number): number {\n const result = this.opentui.symbols.textBufferGetPlainText(buffer, outPtr, maxLen)\n return typeof result === \"bigint\" ? Number(result) : result\n }\n\n public getPlainTextBytes(buffer: Pointer, maxLength: number): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n\n const actualLen = this.textBufferGetPlainText(buffer, ptr(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 ptr(outBuffer),\n maxLength,\n )\n\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : 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 ptr(outBuffer),\n maxLength,\n )\n\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\n\n if (len === 0) {\n return null\n }\n\n return outBuffer.slice(0, len)\n }\n\n // TextBufferView methods\n public createTextBufferView(textBuffer: Pointer): Pointer {\n const viewPtr = this.opentui.symbols.createTextBufferView(textBuffer)\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 = bgColor ? bgColor.buffer : null\n const fg = fgColor ? fgColor.buffer : null\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 = bgColor ? bgColor.buffer : null\n const fg = fgColor ? fgColor.buffer : null\n return 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 = bgColor ? bgColor.buffer : null\n const fg = fgColor ? fgColor.buffer : null\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 = bgColor ? bgColor.buffer : null\n const fg = fgColor ? fgColor.buffer : null\n return this.opentui.symbols.textBufferViewUpdateLocalSelection(view, anchorX, anchorY, focusX, focusY, bg, fg)\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 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, maxLen: number): number {\n const result = this.opentui.symbols.textBufferViewGetSelectedText(view, outPtr, maxLen)\n return typeof result === \"bigint\" ? Number(result) : result\n }\n\n private textBufferViewGetPlainText(view: Pointer, outPtr: Pointer, maxLen: number): number {\n const result = this.opentui.symbols.textBufferViewGetPlainText(view, outPtr, maxLen)\n return typeof result === \"bigint\" ? Number(result) : result\n }\n\n public textBufferViewGetSelectedTextBytes(view: Pointer, maxLength: number): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n\n const actualLen = this.textBufferViewGetSelectedText(view, ptr(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, ptr(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, color.buffer)\n }\n\n public textBufferViewSetTruncate(view: Pointer, truncate: boolean): void {\n this.opentui.symbols.textBufferViewSetTruncate(view, truncate)\n }\n\n public textBufferViewMeasureForDimensions(\n view: Pointer,\n width: number,\n height: number,\n ): { lineCount: number; widthColsMax: number } | null {\n const resultBuffer = new ArrayBuffer(MeasureResultStruct.size)\n const resultPtr = ptr(new Uint8Array(resultBuffer))\n const success = this.opentui.symbols.textBufferViewMeasureForDimensions(view, width, height, resultPtr)\n if (!success) {\n return null\n }\n const result = MeasureResultStruct.unpack(resultBuffer)\n return result\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): void {\n this.opentui.symbols.textBufferSetSyntaxStyle(buffer, style)\n }\n\n public textBufferGetLineHighlights(buffer: Pointer, lineIdx: number): Array<Highlight> {\n const outCountBuf = new BigUint64Array(1)\n\n const nativePtr = this.opentui.symbols.textBufferGetLineHighlightsPtr(buffer, lineIdx, ptr(outCountBuf))\n if (!nativePtr) return []\n\n const count = Number(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 typeof result === \"bigint\" ? Number(result) : result\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(editBufferPtr: Pointer, viewportWidth: number, viewportHeight: number): Pointer {\n const viewPtr = this.opentui.symbols.createEditorView(editBufferPtr, viewportWidth, viewportHeight)\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, 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: Pointer): Pointer {\n const result = this.opentui.symbols.editorViewGetTextBufferView(view)\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): Pointer {\n const widthMethodCode = widthMethod === \"wcwidth\" ? 0 : 1\n const bufferPtr = this.opentui.symbols.createEditBuffer(widthMethodCode)\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, textBytes, textBytes.length)\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, textBytes, textBytes.length)\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, ptr(outBuffer), maxLength)\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : 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, charBytes, charBytes.length)\n }\n\n public editBufferInsertText(buffer: Pointer, text: string): void {\n const textBytes = this.encoder.encode(text)\n this.opentui.symbols.editBufferInsertText(buffer, textBytes, textBytes.length)\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 cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size)\n this.opentui.symbols.editBufferGetCursorPosition(buffer, ptr(cursorBuffer))\n return LogicalCursorStruct.unpack(cursorBuffer)\n }\n\n public editBufferGetId(buffer: Pointer): number {\n return this.opentui.symbols.editBufferGetId(buffer)\n }\n\n public editBufferGetTextBuffer(buffer: Pointer): Pointer {\n const result = this.opentui.symbols.editBufferGetTextBuffer(buffer)\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, ptr(outBuffer), maxLength)\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : 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, ptr(outBuffer), maxLength)\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\n if (len === 0) return null\n return outBuffer.slice(0, len)\n }\n\n public editBufferCanUndo(buffer: Pointer): boolean {\n return this.opentui.symbols.editBufferCanUndo(buffer)\n }\n\n public editBufferCanRedo(buffer: Pointer): boolean {\n return 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 cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size)\n this.opentui.symbols.editBufferGetNextWordBoundary(buffer, ptr(cursorBuffer))\n return LogicalCursorStruct.unpack(cursorBuffer)\n }\n\n public editBufferGetPrevWordBoundary(buffer: Pointer): LogicalCursor {\n const cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size)\n this.opentui.symbols.editBufferGetPrevWordBoundary(buffer, ptr(cursorBuffer))\n return LogicalCursorStruct.unpack(cursorBuffer)\n }\n\n public editBufferGetEOL(buffer: Pointer): LogicalCursor {\n const cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size)\n this.opentui.symbols.editBufferGetEOL(buffer, ptr(cursorBuffer))\n return LogicalCursorStruct.unpack(cursorBuffer)\n }\n\n public editBufferOffsetToPosition(buffer: Pointer, offset: number): LogicalCursor | null {\n const cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size)\n const success = this.opentui.symbols.editBufferOffsetToPosition(buffer, offset, ptr(cursorBuffer))\n if (!success) return null\n return LogicalCursorStruct.unpack(cursorBuffer)\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 ptr(outBuffer),\n maxLength,\n )\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : 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 ptr(outBuffer),\n maxLength,\n )\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\n if (len === 0) return null\n return outBuffer.slice(0, 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 = bgColor ? bgColor.buffer : null\n const fg = fgColor ? fgColor.buffer : null\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 = bgColor ? bgColor.buffer : null\n const fg = fgColor ? fgColor.buffer : null\n return this.opentui.symbols.editorViewSetLocalSelection(\n view,\n anchorX,\n anchorY,\n focusX,\n focusY,\n bg,\n fg,\n updateCursor,\n followCursor,\n )\n }\n\n public editorViewUpdateSelection(view: Pointer, end: number, bgColor: RGBA | null, fgColor: RGBA | null): void {\n const bg = bgColor ? bgColor.buffer : null\n const fg = fgColor ? fgColor.buffer : null\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 = bgColor ? bgColor.buffer : null\n const fg = fgColor ? fgColor.buffer : null\n return this.opentui.symbols.editorViewUpdateLocalSelection(\n view,\n anchorX,\n anchorY,\n focusX,\n focusY,\n bg,\n fg,\n updateCursor,\n followCursor,\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, ptr(outBuffer), maxLength)\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : 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, ptr(outBuffer), maxLength)\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\n if (len === 0) return null\n return outBuffer.slice(0, len)\n }\n\n public editorViewGetVisualCursor(view: Pointer): VisualCursor {\n const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size)\n this.opentui.symbols.editorViewGetVisualCursor(view, ptr(cursorBuffer))\n return VisualCursorStruct.unpack(cursorBuffer)\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 cursorBuffer = new ArrayBuffer(VisualCursorStruct.size)\n this.opentui.symbols.editorViewGetNextWordBoundary(view, ptr(cursorBuffer))\n return VisualCursorStruct.unpack(cursorBuffer)\n }\n\n public editorViewGetPrevWordBoundary(view: Pointer): VisualCursor {\n const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size)\n this.opentui.symbols.editorViewGetPrevWordBoundary(view, ptr(cursorBuffer))\n return VisualCursorStruct.unpack(cursorBuffer)\n }\n\n public editorViewGetEOL(view: Pointer): VisualCursor {\n const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size)\n this.opentui.symbols.editorViewGetEOL(view, ptr(cursorBuffer))\n return VisualCursorStruct.unpack(cursorBuffer)\n }\n\n public editorViewGetVisualSOL(view: Pointer): VisualCursor {\n const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size)\n this.opentui.symbols.editorViewGetVisualSOL(view, ptr(cursorBuffer))\n return VisualCursorStruct.unpack(cursorBuffer)\n }\n\n public editorViewGetVisualEOL(view: Pointer): VisualCursor {\n const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size)\n this.opentui.symbols.editorViewGetVisualEOL(view, ptr(cursorBuffer))\n return VisualCursorStruct.unpack(cursorBuffer)\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) {\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 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 explicit_cursor_positioning: caps.explicit_cursor_positioning,\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, responseBytes, responseBytes.length)\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 size\n const outLenBuffer = new ArrayBuffer(8) // usize\n\n const success = this.opentui.symbols.encodeUnicode(\n textBytes,\n textBytes.length,\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 resultPtr = Number(outPtrView[0]) as Pointer\n const resultLen = Number(outLenView[0])\n\n if (resultLen === 0) {\n return { ptr: resultPtr, data: [] }\n }\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, fg.buffer, bg.buffer, attributes)\n }\n\n public registerNativeSpanFeedStream(stream: Pointer, handler: NativeSpanFeedEventHandler): void {\n const callback = this.ensureNativeSpanFeedCallback()\n this.nativeSpanFeedHandlers.set(toPointer(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(toPointer(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 toPointer(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(toPointer(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, ptr(bytes), bytes.length)\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(): Pointer {\n const stylePtr = this.opentui.symbols.createSyntaxStyle()\n if (!stylePtr) {\n throw new Error(\"Failed to create SyntaxStyle\")\n }\n return stylePtr\n }\n\n public destroySyntaxStyle(style: Pointer): void {\n this.opentui.symbols.destroySyntaxStyle(style)\n }\n\n public syntaxStyleRegister(\n style: Pointer,\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 = fg ? fg.buffer : null\n const bgPtr = bg ? bg.buffer : null\n return this.opentui.symbols.syntaxStyleRegister(style, nameBytes, nameBytes.length, fgPtr, bgPtr, attributes)\n }\n\n public syntaxStyleResolveByName(style: Pointer, name: string): number | null {\n const nameBytes = this.encoder.encode(name)\n const id = this.opentui.symbols.syntaxStyleResolveByName(style, nameBytes, nameBytes.length)\n return id === 0 ? null : id\n }\n\n public syntaxStyleGetStyleCount(style: Pointer): number {\n const result = this.opentui.symbols.syntaxStyleGetStyleCount(style)\n return typeof result === \"bigint\" ? Number(result) : result\n }\n\n public editorViewSetPlaceholderStyledText(\n view: Pointer,\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, ptr(chunksBuffer), nonEmptyChunks.length)\n }\n\n public editorViewSetTabIndicator(view: Pointer, indicator: number): void {\n this.opentui.symbols.editorViewSetTabIndicator(view, indicator)\n }\n\n public editorViewSetTabIndicatorColor(view: Pointer, color: RGBA): void {\n this.opentui.symbols.editorViewSetTabIndicatorColor(view, color.buffer)\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\n\nexport function setRenderLibPath(libPath: string) {\n if (opentuiLibPath !== libPath) {\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 return opentuiLib\n}\n\n// Try eager loading\ntry {\n opentuiLib = new FFIRenderLib(opentuiLibPath)\n} catch (error) {}\n",
45
+ "import { RGBA } from \"./lib/index.js\"\nimport { resolveRenderLib, type RenderLib } from \"./zig.js\"\nimport { type Pointer, toArrayBuffer, ptr } from \"bun:ffi\"\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: Pointer\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: Float32Array\n bg: Float32Array\n attributes: Uint32Array\n } | null = null\n private _destroyed: boolean = false\n\n get ptr(): Pointer {\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 get buffers(): {\n char: Uint32Array\n fg: Float32Array\n bg: Float32Array\n attributes: Uint32Array\n } {\n this.guard()\n if (this._rawBuffers === null) {\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 Float32Array(toArrayBuffer(fgPtr, 0, size * 4 * 4)),\n bg: new Float32Array(toArrayBuffer(bgPtr, 0, size * 4 * 4)),\n attributes: new Uint32Array(toArrayBuffer(attributesPtr, 0, size * 4)),\n }\n }\n\n return this._rawBuffers\n }\n\n constructor(\n lib: RenderLib,\n ptr: Pointer,\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.fromValues(fg[i * 4], fg[i * 4 + 1], fg[i * 4 + 2], fg[i * 4 + 3])\n const cellBg = RGBA.fromValues(bg[i * 4], bg[i * 4 + 1], bg[i * 4 + 2], bg[i * 4 + 3])\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.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 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: Pointer,\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 pixelDataPtr,\n pixelDataLength,\n format,\n alignedBytesPerRow,\n )\n }\n\n public drawPackedBuffer(\n dataPtr: Pointer,\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 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 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.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",
46
46
  "// src/structs_ffi.ts\nimport { ptr, toArrayBuffer } from \"bun:ffi\";\nfunction fatalError(...args) {\n const message = args.join(\" \");\n console.error(\"FATAL ERROR:\", message);\n throw new Error(message);\n}\nvar pointerSize = process.arch === \"x64\" || process.arch === \"arm64\" ? 8 : 4;\nvar typeSizes = {\n u8: 1,\n bool_u8: 1,\n bool_u32: 4,\n u16: 2,\n i16: 2,\n u32: 4,\n u64: 8,\n f32: 4,\n f64: 8,\n pointer: pointerSize,\n i32: 4\n};\nvar primitiveKeys = Object.keys(typeSizes);\nfunction isPrimitiveType(type) {\n return typeof type === \"string\" && primitiveKeys.includes(type);\n}\nvar typeAlignments = { ...typeSizes };\nvar typeGetters = {\n u8: (view, offset) => view.getUint8(offset),\n bool_u8: (view, offset) => Boolean(view.getUint8(offset)),\n bool_u32: (view, offset) => Boolean(view.getUint32(offset, true)),\n u16: (view, offset) => view.getUint16(offset, true),\n i16: (view, offset) => view.getInt16(offset, true),\n u32: (view, offset) => view.getUint32(offset, true),\n u64: (view, offset) => view.getBigUint64(offset, true),\n f32: (view, offset) => view.getFloat32(offset, true),\n f64: (view, offset) => view.getFloat64(offset, true),\n i32: (view, offset) => view.getInt32(offset, true),\n pointer: (view, offset) => pointerSize === 8 ? view.getBigUint64(offset, true) : BigInt(view.getUint32(offset, true))\n};\nfunction objectPtr() {\n return {\n __type: \"objectPointer\"\n };\n}\nfunction isObjectPointerDef(type) {\n return typeof type === \"object\" && type !== null && type.__type === \"objectPointer\";\n}\nfunction allocStruct(structDef, options) {\n const buffer = new ArrayBuffer(structDef.size);\n const view = new DataView(buffer);\n const result = { buffer, view };\n const { pack: pointerPacker } = primitivePackers(\"pointer\");\n if (options?.lengths) {\n const subBuffers = {};\n for (const [arrayFieldName, length] of Object.entries(options.lengths)) {\n const arrayMeta = structDef.arrayFields.get(arrayFieldName);\n if (!arrayMeta) {\n throw new Error(`Field '${arrayFieldName}' is not an array field with a lengthOf field`);\n }\n const subBuffer = new ArrayBuffer(length * arrayMeta.elementSize);\n subBuffers[arrayFieldName] = subBuffer;\n const pointer = length > 0 ? ptr(subBuffer) : null;\n pointerPacker(view, arrayMeta.arrayOffset, pointer);\n arrayMeta.lengthPack(view, arrayMeta.lengthOffset, length);\n }\n if (Object.keys(subBuffers).length > 0) {\n result.subBuffers = subBuffers;\n }\n }\n return result;\n}\nfunction alignOffset(offset, align) {\n return offset + (align - 1) & ~(align - 1);\n}\nfunction enumTypeError(value) {\n throw new TypeError(`Invalid enum value: ${value}`);\n}\nfunction defineEnum(mapping, base = \"u32\") {\n const reverse = Object.fromEntries(Object.entries(mapping).map(([k, v]) => [v, k]));\n return {\n __type: \"enum\",\n type: base,\n to(value) {\n return typeof value === \"number\" ? value : mapping[value] ?? enumTypeError(String(value));\n },\n from(value) {\n return reverse[value] ?? enumTypeError(String(value));\n },\n enum: mapping\n };\n}\nfunction isEnum(type) {\n return typeof type === \"object\" && type.__type === \"enum\";\n}\nfunction isStruct(type) {\n return typeof type === \"object\" && type.__type === \"struct\";\n}\nfunction primitivePackers(type) {\n let pack;\n let unpack;\n switch (type) {\n case \"u8\":\n pack = (view, off, val) => view.setUint8(off, val);\n unpack = (view, off) => view.getUint8(off);\n break;\n case \"bool_u8\":\n pack = (view, off, val) => view.setUint8(off, val ? 1 : 0);\n unpack = (view, off) => Boolean(view.getUint8(off));\n break;\n case \"bool_u32\":\n pack = (view, off, val) => view.setUint32(off, val ? 1 : 0, true);\n unpack = (view, off) => Boolean(view.getUint32(off, true));\n break;\n case \"u16\":\n pack = (view, off, val) => view.setUint16(off, val, true);\n unpack = (view, off) => view.getUint16(off, true);\n break;\n case \"i16\":\n pack = (view, off, val) => view.setInt16(off, val, true);\n unpack = (view, off) => view.getInt16(off, true);\n break;\n case \"u32\":\n pack = (view, off, val) => view.setUint32(off, val, true);\n unpack = (view, off) => view.getUint32(off, true);\n break;\n case \"i32\":\n pack = (view, off, val) => view.setInt32(off, val, true);\n unpack = (view, off) => view.getInt32(off, true);\n break;\n case \"u64\":\n pack = (view, off, val) => view.setBigUint64(off, BigInt(val), true);\n unpack = (view, off) => view.getBigUint64(off, true);\n break;\n case \"f32\":\n pack = (view, off, val) => view.setFloat32(off, val, true);\n unpack = (view, off) => view.getFloat32(off, true);\n break;\n case \"f64\":\n pack = (view, off, val) => view.setFloat64(off, val, true);\n unpack = (view, off) => view.getFloat64(off, true);\n break;\n case \"pointer\":\n pack = (view, off, val) => {\n pointerSize === 8 ? view.setBigUint64(off, val ? BigInt(val) : 0n, true) : view.setUint32(off, val ? Number(val) : 0, true);\n };\n unpack = (view, off) => {\n const bint = pointerSize === 8 ? view.getBigUint64(off, true) : BigInt(view.getUint32(off, true));\n return Number(bint);\n };\n break;\n default:\n fatalError(`Unsupported primitive type: ${type}`);\n }\n return { pack, unpack };\n}\nvar { pack: pointerPacker, unpack: pointerUnpacker } = primitivePackers(\"pointer\");\nfunction packObjectArray(val) {\n const buffer = new ArrayBuffer(val.length * pointerSize);\n const bufferView = new DataView(buffer);\n for (let i = 0;i < val.length; i++) {\n const instance = val[i];\n const ptrValue = instance?.ptr ?? null;\n pointerPacker(bufferView, i * pointerSize, ptrValue);\n }\n return bufferView;\n}\nvar encoder = new TextEncoder;\nvar decoder = new TextDecoder;\nfunction defineStruct(fields, structDefOptions) {\n let offset = 0;\n let maxAlign = 1;\n const layout = [];\n const lengthOfFields = {};\n const lengthOfRequested = [];\n const arrayFieldsMetadata = {};\n for (const [name, typeOrStruct, options = {}] of fields) {\n if (options.condition && !options.condition()) {\n continue;\n }\n let size = 0, align = 0;\n let pack;\n let unpack;\n let needsLengthOf = false;\n let lengthOfDef = null;\n if (isPrimitiveType(typeOrStruct)) {\n size = typeSizes[typeOrStruct];\n align = typeAlignments[typeOrStruct];\n ({ pack, unpack } = primitivePackers(typeOrStruct));\n } else if (typeof typeOrStruct === \"string\" && typeOrStruct === \"cstring\") {\n size = pointerSize;\n align = pointerSize;\n pack = (view, off, val) => {\n const bufPtr = val ? ptr(encoder.encode(val + \"\\x00\")) : null;\n pointerPacker(view, off, bufPtr);\n };\n unpack = (view, off) => {\n const ptrVal = pointerUnpacker(view, off);\n return ptrVal;\n };\n } else if (typeof typeOrStruct === \"string\" && typeOrStruct === \"char*\") {\n size = pointerSize;\n align = pointerSize;\n pack = (view, off, val) => {\n const bufPtr = val ? ptr(encoder.encode(val)) : null;\n pointerPacker(view, off, bufPtr);\n };\n unpack = (view, off) => {\n const ptrVal = pointerUnpacker(view, off);\n return ptrVal;\n };\n needsLengthOf = true;\n } else if (isEnum(typeOrStruct)) {\n const base = typeOrStruct.type;\n size = typeSizes[base];\n align = typeAlignments[base];\n const { pack: packEnum } = primitivePackers(base);\n pack = (view, off, val) => {\n const num = typeOrStruct.to(val);\n packEnum(view, off, num);\n };\n unpack = (view, off) => {\n const raw = typeGetters[base](view, off);\n return typeOrStruct.from(raw);\n };\n } else if (isStruct(typeOrStruct)) {\n if (options.asPointer === true) {\n size = pointerSize;\n align = pointerSize;\n pack = (view, off, val, obj, options2) => {\n if (!val) {\n pointerPacker(view, off, null);\n return;\n }\n const nestedBuf = typeOrStruct.pack(val, options2);\n pointerPacker(view, off, ptr(nestedBuf));\n };\n unpack = (view, off) => {\n throw new Error(\"Not implemented yet\");\n };\n } else {\n size = typeOrStruct.size;\n align = typeOrStruct.align;\n pack = (view, off, val, obj, options2) => {\n const nestedBuf = typeOrStruct.pack(val, options2);\n const nestedView = new Uint8Array(nestedBuf);\n const dView = new Uint8Array(view.buffer);\n dView.set(nestedView, off);\n };\n unpack = (view, off) => {\n const slice = view.buffer.slice(off, off + size);\n return typeOrStruct.unpack(slice);\n };\n }\n } else if (isObjectPointerDef(typeOrStruct)) {\n size = pointerSize;\n align = pointerSize;\n pack = (view, off, value) => {\n const ptrValue = value?.ptr ?? null;\n if (ptrValue === undefined) {\n console.warn(`Field '${name}' expected object with '.ptr' property, but got undefined pointer value from:`, value);\n pointerPacker(view, off, null);\n } else {\n pointerPacker(view, off, ptrValue);\n }\n };\n unpack = (view, off) => {\n return pointerUnpacker(view, off);\n };\n } else if (Array.isArray(typeOrStruct) && typeOrStruct.length === 1 && typeOrStruct[0] !== undefined) {\n const [def] = typeOrStruct;\n size = pointerSize;\n align = pointerSize;\n let arrayElementSize;\n if (isEnum(def)) {\n arrayElementSize = typeSizes[def.type];\n pack = (view, off, val, obj) => {\n if (!val || val.length === 0) {\n pointerPacker(view, off, null);\n return;\n }\n const buffer = new ArrayBuffer(val.length * arrayElementSize);\n const bufferView = new DataView(buffer);\n for (let i = 0;i < val.length; i++) {\n const num = def.to(val[i]);\n bufferView.setUint32(i * arrayElementSize, num, true);\n }\n pointerPacker(view, off, ptr(buffer));\n };\n unpack = null;\n needsLengthOf = true;\n lengthOfDef = def;\n } else if (isStruct(def)) {\n arrayElementSize = def.size;\n pack = (view, off, val, obj, options2) => {\n if (!val || val.length === 0) {\n pointerPacker(view, off, null);\n return;\n }\n const buffer = new ArrayBuffer(val.length * arrayElementSize);\n const bufferView = new DataView(buffer);\n for (let i = 0;i < val.length; i++) {\n def.packInto(val[i], bufferView, i * arrayElementSize, options2);\n }\n pointerPacker(view, off, ptr(buffer));\n };\n unpack = (view, off) => {\n throw new Error(\"Not implemented yet\");\n };\n } else if (isPrimitiveType(def)) {\n arrayElementSize = typeSizes[def];\n const { pack: primitivePack } = primitivePackers(def);\n pack = (view, off, val) => {\n if (!val || val.length === 0) {\n pointerPacker(view, off, null);\n return;\n }\n const buffer = new ArrayBuffer(val.length * arrayElementSize);\n const bufferView = new DataView(buffer);\n for (let i = 0;i < val.length; i++) {\n primitivePack(bufferView, i * arrayElementSize, val[i]);\n }\n pointerPacker(view, off, ptr(buffer));\n };\n unpack = null;\n needsLengthOf = true;\n lengthOfDef = def;\n } else if (isObjectPointerDef(def)) {\n arrayElementSize = pointerSize;\n pack = (view, off, val) => {\n if (!val || val.length === 0) {\n pointerPacker(view, off, null);\n return;\n }\n const packedView = packObjectArray(val);\n pointerPacker(view, off, ptr(packedView.buffer));\n };\n unpack = () => {\n throw new Error(\"not implemented yet\");\n };\n } else {\n throw new Error(`Unsupported array element type for ${name}: ${JSON.stringify(def)}`);\n }\n const lengthOfField = Object.values(lengthOfFields).find((f) => f.lengthOf === name);\n if (lengthOfField && isPrimitiveType(lengthOfField.type)) {\n const { pack: lengthPack } = primitivePackers(lengthOfField.type);\n arrayFieldsMetadata[name] = {\n elementSize: arrayElementSize,\n arrayOffset: offset,\n lengthOffset: lengthOfField.offset,\n lengthPack\n };\n }\n } else {\n throw new Error(`Unsupported field type for ${name}: ${JSON.stringify(typeOrStruct)}`);\n }\n offset = alignOffset(offset, align);\n if (options.unpackTransform) {\n const originalUnpack = unpack;\n unpack = (view, off) => options.unpackTransform(originalUnpack(view, off));\n }\n if (options.packTransform) {\n const originalPack = pack;\n pack = (view, off, val, obj, packOptions) => originalPack(view, off, options.packTransform(val), obj, packOptions);\n }\n if (options.optional) {\n const originalPack = pack;\n if (isStruct(typeOrStruct) && !options.asPointer) {\n pack = (view, off, val, obj, packOptions) => {\n if (val || options.mapOptionalInline) {\n originalPack(view, off, val, obj, packOptions);\n }\n };\n } else {\n pack = (view, off, val, obj, packOptions) => originalPack(view, off, val ?? 0, obj, packOptions);\n }\n }\n if (options.lengthOf) {\n const originalPack = pack;\n pack = (view, off, val, obj, packOptions) => {\n const targetValue = obj[options.lengthOf];\n let length = 0;\n if (targetValue) {\n if (typeof targetValue === \"string\") {\n length = Buffer.byteLength(targetValue);\n } else {\n length = targetValue.length;\n }\n }\n return originalPack(view, off, length, obj, packOptions);\n };\n }\n let validateFunctions;\n if (options.validate) {\n validateFunctions = Array.isArray(options.validate) ? options.validate : [options.validate];\n }\n const layoutField = {\n name,\n offset,\n size,\n align,\n validate: validateFunctions,\n optional: !!options.optional || !!options.lengthOf || options.default !== undefined,\n default: options.default,\n pack,\n unpack,\n type: typeOrStruct,\n lengthOf: options.lengthOf\n };\n layout.push(layoutField);\n if (options.lengthOf) {\n lengthOfFields[options.lengthOf] = layoutField;\n }\n if (needsLengthOf) {\n const def = typeof typeOrStruct === \"string\" && typeOrStruct === \"char*\" ? \"char*\" : lengthOfDef;\n if (!def)\n fatalError(`Internal error: needsLengthOf=true but def is null for ${name}`);\n lengthOfRequested.push({ requester: layoutField, def });\n }\n offset += size;\n maxAlign = Math.max(maxAlign, align);\n }\n for (const { requester, def } of lengthOfRequested) {\n const lengthOfField = lengthOfFields[requester.name];\n if (!lengthOfField) {\n if (def === \"char*\") {\n continue;\n }\n throw new Error(`lengthOf field not found for array field ${requester.name}`);\n }\n if (def === \"char*\") {\n requester.unpack = (view, off) => {\n const ptrAddress = pointerUnpacker(view, off);\n const length = lengthOfField.unpack(view, lengthOfField.offset);\n if (ptrAddress === 0) {\n return null;\n }\n const byteLength = typeof length === \"bigint\" ? Number(length) : length;\n if (byteLength === 0) {\n return \"\";\n }\n const buffer = toArrayBuffer(ptrAddress, 0, byteLength);\n return decoder.decode(buffer);\n };\n } else if (isPrimitiveType(def)) {\n const elemSize = typeSizes[def];\n const { unpack: primitiveUnpack } = primitivePackers(def);\n requester.unpack = (view, off) => {\n const result = [];\n const length = lengthOfField.unpack(view, lengthOfField.offset);\n const ptrAddress = pointerUnpacker(view, off);\n if (ptrAddress === 0n && length > 0) {\n throw new Error(`Array field ${requester.name} has null pointer but length ${length}.`);\n }\n if (ptrAddress === 0n || length === 0) {\n return [];\n }\n const buffer = toArrayBuffer(ptrAddress, 0, length * elemSize);\n const bufferView = new DataView(buffer);\n for (let i = 0;i < length; i++) {\n result.push(primitiveUnpack(bufferView, i * elemSize));\n }\n return result;\n };\n } else {\n const elemSize = def.type === \"u32\" ? 4 : 8;\n requester.unpack = (view, off) => {\n const result = [];\n const length = lengthOfField.unpack(view, lengthOfField.offset);\n const ptrAddress = pointerUnpacker(view, off);\n if (ptrAddress === 0n && length > 0) {\n throw new Error(`Array field ${requester.name} has null pointer but length ${length}.`);\n }\n if (ptrAddress === 0n || length === 0) {\n return [];\n }\n const buffer = toArrayBuffer(ptrAddress, 0, length * elemSize);\n const bufferView = new DataView(buffer);\n for (let i = 0;i < length; i++) {\n result.push(def.from(bufferView.getUint32(i * elemSize, true)));\n }\n return result;\n };\n }\n }\n const totalSize = alignOffset(offset, maxAlign);\n const description = layout.map((f) => ({\n name: f.name,\n offset: f.offset,\n size: f.size,\n align: f.align,\n optional: f.optional,\n type: f.type,\n lengthOf: f.lengthOf\n }));\n const layoutByName = new Map(description.map((f) => [f.name, f]));\n const arrayFields = new Map(Object.entries(arrayFieldsMetadata));\n return {\n __type: \"struct\",\n size: totalSize,\n align: maxAlign,\n hasMapValue: !!structDefOptions?.mapValue,\n layoutByName,\n arrayFields,\n pack(obj, options) {\n const buf = new ArrayBuffer(totalSize);\n const view = new DataView(buf);\n let mappedObj = obj;\n if (structDefOptions?.mapValue) {\n mappedObj = structDefOptions.mapValue(obj);\n }\n for (const field of layout) {\n const value = mappedObj[field.name] ?? field.default;\n if (!field.optional && value === undefined) {\n fatalError(`Packing non-optional field '${field.name}' but value is undefined (and no default provided)`);\n }\n if (field.validate) {\n for (const validateFn of field.validate) {\n validateFn(value, field.name, {\n hints: options?.validationHints,\n input: mappedObj\n });\n }\n }\n field.pack(view, field.offset, value, mappedObj, options);\n }\n return view.buffer;\n },\n packInto(obj, view, offset2, options) {\n let mappedObj = obj;\n if (structDefOptions?.mapValue) {\n mappedObj = structDefOptions.mapValue(obj);\n }\n for (const field of layout) {\n const value = mappedObj[field.name] ?? field.default;\n if (!field.optional && value === undefined) {\n console.warn(`packInto missing value for non-optional field '${field.name}' at offset ${offset2 + field.offset}. Writing default or zero.`);\n }\n if (field.validate) {\n for (const validateFn of field.validate) {\n validateFn(value, field.name, {\n hints: options?.validationHints,\n input: mappedObj\n });\n }\n }\n field.pack(view, offset2 + field.offset, value, mappedObj, options);\n }\n },\n unpack(buf) {\n if (buf.byteLength < totalSize) {\n fatalError(`Buffer size (${buf.byteLength}) is smaller than struct size (${totalSize}) for unpacking.`);\n }\n const view = new DataView(buf);\n const result = structDefOptions?.default ? { ...structDefOptions.default } : {};\n for (const field of layout) {\n if (!field.unpack) {\n continue;\n }\n try {\n result[field.name] = field.unpack(view, field.offset);\n } catch (e) {\n console.error(`Error unpacking field '${field.name}' at offset ${field.offset}:`, e);\n throw e;\n }\n }\n if (structDefOptions?.reduceValue) {\n return structDefOptions.reduceValue(result);\n }\n return result;\n },\n packList(objects, options) {\n if (objects.length === 0) {\n return new ArrayBuffer(0);\n }\n const buffer = new ArrayBuffer(totalSize * objects.length);\n const view = new DataView(buffer);\n for (let i = 0;i < objects.length; i++) {\n let mappedObj = objects[i];\n if (structDefOptions?.mapValue) {\n mappedObj = structDefOptions.mapValue(objects[i]);\n }\n for (const field of layout) {\n const value = mappedObj[field.name] ?? field.default;\n if (!field.optional && value === undefined) {\n fatalError(`Packing non-optional field '${field.name}' at index ${i} but value is undefined (and no default provided)`);\n }\n if (field.validate) {\n for (const validateFn of field.validate) {\n validateFn(value, field.name, {\n hints: options?.validationHints,\n input: mappedObj\n });\n }\n }\n field.pack(view, i * totalSize + field.offset, value, mappedObj, options);\n }\n }\n return buffer;\n },\n unpackList(buf, count) {\n if (count === 0) {\n return [];\n }\n const expectedSize = totalSize * count;\n if (buf.byteLength < expectedSize) {\n fatalError(`Buffer size (${buf.byteLength}) is smaller than expected size (${expectedSize}) for unpacking ${count} structs.`);\n }\n const view = new DataView(buf);\n const results = [];\n for (let i = 0;i < count; i++) {\n const offset2 = i * totalSize;\n const result = structDefOptions?.default ? { ...structDefOptions.default } : {};\n for (const field of layout) {\n if (!field.unpack) {\n continue;\n }\n try {\n result[field.name] = field.unpack(view, offset2 + field.offset);\n } catch (e) {\n console.error(`Error unpacking field '${field.name}' at index ${i}, offset ${offset2 + field.offset}:`, e);\n throw e;\n }\n }\n if (structDefOptions?.reduceValue) {\n results.push(structDefOptions.reduceValue(result));\n } else {\n results.push(result);\n }\n }\n return results;\n },\n describe() {\n return description;\n }\n };\n}\nexport {\n pointerSize,\n packObjectArray,\n objectPtr,\n defineStruct,\n defineEnum,\n allocStruct\n};\n",
47
47
  "import { defineStruct, defineEnum } from \"bun-ffi-structs\"\nimport { ptr, toArrayBuffer, type Pointer } from \"bun:ffi\"\nimport { RGBA } from \"./lib/RGBA.js\"\n\nconst rgbaPackTransform = (rgba?: RGBA) => (rgba ? ptr(rgba.buffer) : null)\nconst rgbaUnpackTransform = (ptr?: Pointer) => (ptr ? RGBA.fromArray(new Float32Array(toArrayBuffer(ptr))) : 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 if (!chunk.link || typeof chunk.link === \"string\") {\n return chunk\n }\n\n return {\n ...chunk,\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\")\n\nexport const TerminalCapabilitiesStruct = defineStruct([\n [\"kitty_keyboard\", \"bool_u8\"],\n [\"kitty_graphics\", \"bool_u8\"],\n [\"rgb\", \"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 [\"explicit_cursor_positioning\", \"bool_u8\"],\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])\n\nexport const EncodedCharStruct = defineStruct([\n [\"width\", \"u8\"],\n [\"char\", \"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 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",
48
48
  "import type { StyledText } from \"./lib/styled-text.js\"\nimport { RGBA } from \"./lib/RGBA.js\"\nimport { resolveRenderLib, type LineInfo, type RenderLib } from \"./zig.js\"\nimport { type Pointer } from \"bun:ffi\"\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: Pointer\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: Pointer) {\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 {\n this.lib.textBufferReplaceMemBuffer(this.bufferPtr, this._memId, 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(): Pointer {\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 this._syntaxStyle = style ?? undefined\n this.lib.textBufferSetSyntaxStyle(this.bufferPtr, style?.ptr ?? null)\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",
@@ -57,11 +57,11 @@
57
57
  "import { Renderable, type RenderableOptions } from \"../Renderable.js\"\nimport { convertGlobalToLocalSelection, Selection, type LocalSelectionBounds } from \"../lib/selection.js\"\nimport { EditBuffer, type LogicalCursor } from \"../edit-buffer.js\"\nimport { EditorView, type VisualCursor } from \"../editor-view.js\"\nimport { RGBA, parseColor } from \"../lib/RGBA.js\"\nimport type { RenderContext, Highlight, CursorStyleOptions, LineInfoProvider, LineInfo } from \"../types.js\"\nimport type { OptimizedBuffer } from \"../buffer.js\"\nimport { MeasureMode } from \"yoga-layout\"\nimport type { SyntaxStyle } from \"../syntax-style.js\"\n\nconst BrandedEditBufferRenderable: unique symbol = Symbol.for(\"@opentui/core/EditBufferRenderable\")\n\nexport type EditorCapture = \"escape\" | \"navigate\" | \"submit\" | \"tab\"\n\nexport interface EditorTraits {\n capture?: readonly EditorCapture[]\n suspend?: boolean\n status?: string\n}\n\nexport enum EditBufferRenderableEvents {\n TRAITS_CHANGED = \"traits-changed\",\n}\n\nfunction sameCapture(a?: readonly EditorCapture[], b?: readonly EditorCapture[]) {\n if (a === b) return true\n if (!a || !b) return !a && !b\n if (a.length !== b.length) return false\n return a.every((item, i) => item === b[i])\n}\n\nfunction sameTraits(a: EditorTraits, b: EditorTraits) {\n return a.suspend === b.suspend && a.status === b.status && sameCapture(a.capture, b.capture)\n}\n\nexport function isEditBufferRenderable(obj: unknown): obj is EditBufferRenderable {\n return !!(obj && typeof obj === \"object\" && BrandedEditBufferRenderable in obj)\n}\n\nexport interface CursorChangeEvent {\n line: number\n visualColumn: number\n}\n\nexport interface ContentChangeEvent {\n // No payload - use getText() to retrieve content if needed\n}\n\nexport interface EditBufferOptions extends RenderableOptions<EditBufferRenderable> {\n textColor?: string | RGBA\n backgroundColor?: string | RGBA\n selectionBg?: string | RGBA\n selectionFg?: string | RGBA\n selectable?: boolean\n attributes?: number\n wrapMode?: \"none\" | \"char\" | \"word\"\n scrollMargin?: number\n scrollSpeed?: number\n showCursor?: boolean\n cursorColor?: string | RGBA\n cursorStyle?: CursorStyleOptions\n syntaxStyle?: SyntaxStyle\n tabIndicator?: string | number\n tabIndicatorColor?: string | RGBA\n onCursorChange?: (event: CursorChangeEvent) => void\n onContentChange?: (event: ContentChangeEvent) => void\n}\n\nexport abstract class EditBufferRenderable extends Renderable implements LineInfoProvider {\n [BrandedEditBufferRenderable] = true\n protected _focusable: boolean = true\n public selectable: boolean = true\n private _traits: EditorTraits = {}\n\n protected _textColor: RGBA\n protected _backgroundColor: RGBA\n protected _defaultAttributes: number\n protected _selectionBg: RGBA | undefined\n protected _selectionFg: RGBA | undefined\n protected _wrapMode: \"none\" | \"char\" | \"word\" = \"word\"\n protected _scrollMargin: number = 0.2\n protected _showCursor: boolean = true\n protected _cursorColor: RGBA\n protected _cursorStyle: CursorStyleOptions\n protected lastLocalSelection: LocalSelectionBounds | null = null\n protected _tabIndicator?: string | number\n protected _tabIndicatorColor?: RGBA\n\n private _cursorChangeListener: ((event: CursorChangeEvent) => void) | undefined = undefined\n private _contentChangeListener: ((event: ContentChangeEvent) => void) | undefined = undefined\n\n private _autoScrollVelocity: number = 0\n private _autoScrollAccumulator: number = 0\n private _scrollSpeed: number = 16\n private _keyboardSelectionActive: boolean = false\n\n public readonly editBuffer: EditBuffer\n public readonly editorView: EditorView\n\n protected _defaultOptions = {\n textColor: RGBA.fromValues(1, 1, 1, 1),\n backgroundColor: \"transparent\",\n selectionBg: undefined,\n selectionFg: undefined,\n selectable: true,\n attributes: 0,\n wrapMode: \"word\" as \"none\" | \"char\" | \"word\",\n scrollMargin: 0.2,\n scrollSpeed: 16,\n showCursor: true,\n cursorColor: RGBA.fromValues(1, 1, 1, 1),\n cursorStyle: {\n style: \"block\",\n blinking: true,\n },\n tabIndicator: undefined,\n tabIndicatorColor: undefined,\n } satisfies Partial<EditBufferOptions>\n\n constructor(ctx: RenderContext, options: EditBufferOptions) {\n super(ctx, options)\n\n this._textColor = parseColor(options.textColor ?? this._defaultOptions.textColor)\n this._backgroundColor = parseColor(options.backgroundColor ?? this._defaultOptions.backgroundColor)\n this._defaultAttributes = options.attributes ?? this._defaultOptions.attributes\n this._selectionBg = options.selectionBg ? parseColor(options.selectionBg) : this._defaultOptions.selectionBg\n this._selectionFg = options.selectionFg ? parseColor(options.selectionFg) : this._defaultOptions.selectionFg\n this.selectable = options.selectable ?? this._defaultOptions.selectable\n this._wrapMode = options.wrapMode ?? this._defaultOptions.wrapMode\n this._scrollMargin = options.scrollMargin ?? this._defaultOptions.scrollMargin\n this._scrollSpeed = options.scrollSpeed ?? this._defaultOptions.scrollSpeed\n this._showCursor = options.showCursor ?? this._defaultOptions.showCursor\n this._cursorColor = parseColor(options.cursorColor ?? this._defaultOptions.cursorColor)\n this._cursorStyle = options.cursorStyle ?? this._defaultOptions.cursorStyle\n this._tabIndicator = options.tabIndicator ?? this._defaultOptions.tabIndicator\n this._tabIndicatorColor = options.tabIndicatorColor\n ? parseColor(options.tabIndicatorColor)\n : this._defaultOptions.tabIndicatorColor\n\n this.editBuffer = EditBuffer.create(this._ctx.widthMethod)\n this.editorView = EditorView.create(this.editBuffer, this.width || 80, this.height || 24)\n\n this.editorView.setWrapMode(this._wrapMode)\n this.editorView.setScrollMargin(this._scrollMargin)\n\n this.editBuffer.setDefaultFg(this._textColor)\n this.editBuffer.setDefaultBg(this._backgroundColor)\n this.editBuffer.setDefaultAttributes(this._defaultAttributes)\n\n if (options.syntaxStyle) {\n this.editBuffer.setSyntaxStyle(options.syntaxStyle)\n }\n\n if (this._tabIndicator !== undefined) {\n this.editorView.setTabIndicator(this._tabIndicator)\n }\n if (this._tabIndicatorColor !== undefined) {\n this.editorView.setTabIndicatorColor(this._tabIndicatorColor)\n }\n\n this.setupMeasureFunc()\n this.setupEventListeners(options)\n }\n\n public get lineInfo(): LineInfo {\n return this.editorView.getLogicalLineInfo()\n }\n\n private setupEventListeners(options: EditBufferOptions): void {\n this._cursorChangeListener = options.onCursorChange\n this._contentChangeListener = options.onContentChange\n\n this.editBuffer.on(\"cursor-changed\", () => {\n if (this._cursorChangeListener) {\n const cursor = this.editBuffer.getCursorPosition()\n this._cursorChangeListener({\n line: cursor.row,\n visualColumn: cursor.col,\n })\n }\n })\n\n this.editBuffer.on(\"content-changed\", () => {\n this.yogaNode.markDirty()\n this.requestRender()\n this.emit(\"line-info-change\")\n if (this._contentChangeListener) {\n this._contentChangeListener({})\n }\n })\n }\n\n public get lineCount(): number {\n return this.editBuffer.getLineCount()\n }\n\n public get virtualLineCount(): number {\n return this.editorView.getVirtualLineCount()\n }\n\n public get scrollY(): number {\n return this.editorView.getViewport().offsetY\n }\n\n get plainText(): string {\n return this.editBuffer.getText()\n }\n\n get logicalCursor(): LogicalCursor {\n return this.editBuffer.getCursorPosition()\n }\n\n get visualCursor(): VisualCursor {\n return this.editorView.getVisualCursor()\n }\n\n get cursorOffset(): number {\n return this.editorView.getVisualCursor().offset\n }\n\n set cursorOffset(offset: number) {\n this.editorView.setCursorByOffset(offset)\n this.requestRender()\n }\n\n get cursorCharacterOffset(): number | undefined {\n const len = this.plainText.length\n if (len <= 0) return\n\n const cursor = this.logicalCursor\n const offset = this.cursorOffset\n if (offset >= len) {\n if (cursor.col > 0) return len - 1\n return 0\n }\n\n if (this.plainText[offset] === \"\\n\" && cursor.col > 0) {\n return offset - 1\n }\n\n return offset\n }\n\n get textColor(): RGBA {\n return this._textColor\n }\n\n set textColor(value: RGBA | string | undefined) {\n const newColor = parseColor(value ?? this._defaultOptions.textColor)\n if (this._textColor !== newColor) {\n this._textColor = newColor\n this.editBuffer.setDefaultFg(newColor)\n this.requestRender()\n }\n }\n\n get selectionBg(): RGBA | undefined {\n return this._selectionBg\n }\n\n get traits(): EditorTraits {\n return this._traits\n }\n\n set traits(value: EditorTraits) {\n if (sameTraits(this._traits, value)) return\n const prev = this._traits\n this._traits = value\n this.emit(EditBufferRenderableEvents.TRAITS_CHANGED, value, prev)\n }\n\n set selectionBg(value: RGBA | string | undefined) {\n const newColor = value ? parseColor(value) : this._defaultOptions.selectionBg\n if (this._selectionBg !== newColor) {\n this._selectionBg = newColor\n this.refreshSelectionStyle()\n this.requestRender()\n }\n }\n\n get selectionFg(): RGBA | undefined {\n return this._selectionFg\n }\n\n set selectionFg(value: RGBA | string | undefined) {\n const newColor = value ? parseColor(value) : this._defaultOptions.selectionFg\n if (this._selectionFg !== newColor) {\n this._selectionFg = newColor\n this.refreshSelectionStyle()\n this.requestRender()\n }\n }\n\n get backgroundColor(): RGBA {\n return this._backgroundColor\n }\n\n set backgroundColor(value: RGBA | string | undefined) {\n const newColor = parseColor(value ?? this._defaultOptions.backgroundColor)\n if (this._backgroundColor !== newColor) {\n this._backgroundColor = newColor\n this.editBuffer.setDefaultBg(newColor)\n this.requestRender()\n }\n }\n\n get attributes(): number {\n return this._defaultAttributes\n }\n\n set attributes(value: number) {\n if (this._defaultAttributes !== value) {\n this._defaultAttributes = value\n this.editBuffer.setDefaultAttributes(value)\n this.requestRender()\n }\n }\n\n get wrapMode(): \"none\" | \"char\" | \"word\" {\n return this._wrapMode\n }\n\n set wrapMode(value: \"none\" | \"char\" | \"word\") {\n if (this._wrapMode !== value) {\n this._wrapMode = value\n this.editorView.setWrapMode(value)\n this.yogaNode.markDirty()\n this.requestRender()\n }\n }\n\n get showCursor(): boolean {\n return this._showCursor\n }\n\n set showCursor(value: boolean) {\n if (this._showCursor !== value) {\n this._showCursor = value\n if (!value && this._focused) {\n this._ctx.setCursorPosition(0, 0, false)\n }\n this.requestRender()\n }\n }\n\n get cursorColor(): RGBA {\n return this._cursorColor\n }\n\n set cursorColor(value: RGBA | string) {\n const newColor = parseColor(value)\n if (this._cursorColor !== newColor) {\n this._cursorColor = newColor\n if (this._focused) {\n this.requestRender()\n }\n }\n }\n\n get cursorStyle(): CursorStyleOptions {\n return this._cursorStyle\n }\n\n set cursorStyle(style: CursorStyleOptions) {\n const newStyle = style\n if (this.cursorStyle.style !== newStyle.style || this.cursorStyle.blinking !== newStyle.blinking) {\n this._cursorStyle = newStyle\n if (this._focused) {\n this.requestRender()\n }\n }\n }\n\n get tabIndicator(): string | number | undefined {\n return this._tabIndicator\n }\n\n set tabIndicator(value: string | number | undefined) {\n if (this._tabIndicator !== value) {\n this._tabIndicator = value\n if (value !== undefined) {\n this.editorView.setTabIndicator(value)\n }\n this.requestRender()\n }\n }\n\n get tabIndicatorColor(): RGBA | undefined {\n return this._tabIndicatorColor\n }\n\n set tabIndicatorColor(value: RGBA | string | undefined) {\n const newColor = value ? parseColor(value) : undefined\n if (this._tabIndicatorColor !== newColor) {\n this._tabIndicatorColor = newColor\n if (newColor !== undefined) {\n this.editorView.setTabIndicatorColor(newColor)\n }\n this.requestRender()\n }\n }\n\n get scrollSpeed(): number {\n return this._scrollSpeed\n }\n\n set scrollSpeed(value: number) {\n this._scrollSpeed = Math.max(0, value)\n }\n\n protected override onMouseEvent(event: any): void {\n if (event.type === \"scroll\") {\n this.handleScroll(event)\n }\n }\n\n protected handleScroll(event: any): void {\n if (!event.scroll) return\n\n const { direction, delta } = event.scroll\n const viewport = this.editorView.getViewport()\n\n if (direction === \"up\") {\n const newOffsetY = Math.max(0, viewport.offsetY - delta)\n this.editorView.setViewport(viewport.offsetX, newOffsetY, viewport.width, viewport.height, true)\n this.requestRender()\n } else if (direction === \"down\") {\n const totalVirtualLines = this.editorView.getTotalVirtualLineCount()\n const maxOffsetY = Math.max(0, totalVirtualLines - viewport.height)\n const newOffsetY = Math.min(viewport.offsetY + delta, maxOffsetY)\n this.editorView.setViewport(viewport.offsetX, newOffsetY, viewport.width, viewport.height, true)\n this.requestRender()\n }\n\n if (this._wrapMode === \"none\") {\n if (direction === \"left\") {\n const newOffsetX = Math.max(0, viewport.offsetX - delta)\n this.editorView.setViewport(newOffsetX, viewport.offsetY, viewport.width, viewport.height, true)\n this.requestRender()\n } else if (direction === \"right\") {\n const newOffsetX = viewport.offsetX + delta\n this.editorView.setViewport(newOffsetX, viewport.offsetY, viewport.width, viewport.height, true)\n this.requestRender()\n }\n }\n }\n\n protected onResize(width: number, height: number): void {\n this.editorView.setViewportSize(width, height)\n }\n\n protected refreshLocalSelection(): boolean {\n if (this.lastLocalSelection) {\n return this.updateLocalSelection(this.lastLocalSelection)\n }\n return false\n }\n\n private updateLocalSelection(localSelection: LocalSelectionBounds | null): boolean {\n if (!localSelection?.isActive) {\n this.editorView.resetLocalSelection()\n return true\n }\n return this.editorView.setLocalSelection(\n localSelection.anchorX,\n localSelection.anchorY,\n localSelection.focusX,\n localSelection.focusY,\n this._selectionBg,\n this._selectionFg,\n false,\n )\n }\n\n shouldStartSelection(x: number, y: number): boolean {\n if (!this.selectable) return false\n\n const localX = x - this.x\n const localY = y - this.y\n\n return localX >= 0 && localX < this.width && localY >= 0 && localY < this.height\n }\n\n onSelectionChanged(selection: Selection | null): boolean {\n const localSelection = convertGlobalToLocalSelection(selection, this.x, this.y)\n this.lastLocalSelection = localSelection\n\n const updateCursor = true\n const followCursor = this._keyboardSelectionActive\n\n let changed: boolean\n if (!localSelection?.isActive) {\n this._keyboardSelectionActive = false\n this.editorView.resetLocalSelection()\n changed = true\n } else if (selection?.isStart) {\n changed = this.editorView.setLocalSelection(\n localSelection.anchorX,\n localSelection.anchorY,\n localSelection.focusX,\n localSelection.focusY,\n this._selectionBg,\n this._selectionFg,\n updateCursor,\n followCursor,\n )\n } else {\n changed = this.editorView.updateLocalSelection(\n localSelection.anchorX,\n localSelection.anchorY,\n localSelection.focusX,\n localSelection.focusY,\n this._selectionBg,\n this._selectionFg,\n updateCursor,\n followCursor,\n )\n }\n\n if (changed && localSelection?.isActive && selection?.isDragging) {\n const viewport = this.editorView.getViewport()\n const focusY = localSelection.focusY\n const scrollMargin = Math.max(1, Math.floor(viewport.height * this._scrollMargin))\n\n if (focusY < scrollMargin) {\n this._autoScrollVelocity = -this._scrollSpeed\n } else if (focusY >= viewport.height - scrollMargin) {\n this._autoScrollVelocity = this._scrollSpeed\n } else {\n this._autoScrollVelocity = 0\n }\n } else {\n this._keyboardSelectionActive = false\n this._autoScrollVelocity = 0\n this._autoScrollAccumulator = 0\n }\n\n if (changed) {\n this.requestRender()\n }\n\n return this.hasSelection()\n }\n\n protected override onUpdate(deltaTime: number): void {\n super.onUpdate(deltaTime)\n\n if (this._autoScrollVelocity !== 0 && this.hasSelection()) {\n const deltaSeconds = deltaTime / 1000\n this._autoScrollAccumulator += this._autoScrollVelocity * deltaSeconds\n\n const linesToScroll = Math.floor(Math.abs(this._autoScrollAccumulator))\n if (linesToScroll > 0) {\n const direction = this._autoScrollVelocity > 0 ? 1 : -1\n const viewport = this.editorView.getViewport()\n const totalVirtualLines = this.editorView.getTotalVirtualLineCount()\n const maxOffsetY = Math.max(0, totalVirtualLines - viewport.height)\n const newOffsetY = Math.max(0, Math.min(viewport.offsetY + direction * linesToScroll, maxOffsetY))\n\n if (newOffsetY !== viewport.offsetY) {\n this.editorView.setViewport(viewport.offsetX, newOffsetY, viewport.width, viewport.height, false)\n\n this._ctx.requestSelectionUpdate()\n }\n\n this._autoScrollAccumulator -= direction * linesToScroll\n }\n }\n }\n\n getSelectedText(): string {\n return this.editorView.getSelectedText()\n }\n\n hasSelection(): boolean {\n return this.editorView.hasSelection()\n }\n\n getSelection(): { start: number; end: number } | null {\n return this.editorView.getSelection()\n }\n\n private refreshSelectionStyle(): void {\n if (this.lastLocalSelection) {\n this.updateLocalSelection(this.lastLocalSelection)\n return\n }\n\n const selection = this.getSelection()\n if (!selection) return\n this.editorView.setSelection(selection.start, selection.end, this._selectionBg, this._selectionFg)\n }\n\n private deleteSelectedText(): void {\n this.editorView.deleteSelectedText()\n this._ctx.clearSelection()\n this.requestRender()\n }\n\n setSelection(start: number, end: number): void {\n this.lastLocalSelection = null\n this.editorView.resetLocalSelection()\n this._ctx.clearSelection()\n this.editorView.setSelection(start, end, this._selectionBg, this._selectionFg)\n this.requestRender()\n }\n\n setSelectionInclusive(start: number, end: number): void {\n this.setSelection(Math.min(start, end), Math.max(start, end) + 1)\n }\n\n clearSelection(): boolean {\n const had = this.hasSelection()\n this.lastLocalSelection = null\n this.editorView.resetSelection()\n this.editorView.resetLocalSelection()\n this._ctx.clearSelection()\n if (had) {\n this.requestRender()\n }\n return had\n }\n\n deleteSelection(): boolean {\n if (!this.hasSelection()) return false\n\n this.lastLocalSelection = null\n this.deleteSelectedText()\n return true\n }\n\n setCursor(row: number, col: number): void {\n this.editBuffer.setCursor(row, col)\n this.requestRender()\n }\n\n public insertChar(char: string): void {\n if (this.hasSelection()) {\n this.deleteSelectedText()\n }\n\n this.editBuffer.insertChar(char)\n this.requestRender()\n }\n\n public insertText(text: string): void {\n if (this.hasSelection()) {\n this.deleteSelectedText()\n }\n\n this.editBuffer.insertText(text)\n this.requestRender()\n }\n\n public deleteChar(): boolean {\n if (this.hasSelection()) {\n this.deleteSelectedText()\n return true\n }\n\n this._ctx.clearSelection()\n this.editBuffer.deleteChar()\n this.requestRender()\n return true\n }\n\n public deleteCharBackward(): boolean {\n if (this.hasSelection()) {\n this.deleteSelectedText()\n return true\n }\n\n this._ctx.clearSelection()\n this.editBuffer.deleteCharBackward()\n this.requestRender()\n return true\n }\n\n public newLine(): boolean {\n this._ctx.clearSelection()\n this.editBuffer.newLine()\n this.requestRender()\n return true\n }\n\n public deleteLine(): boolean {\n this._ctx.clearSelection()\n this.editBuffer.deleteLine()\n this.requestRender()\n return true\n }\n\n public moveCursorLeft(options?: { select?: boolean }): boolean {\n const select = options?.select ?? false\n\n if (!select && this.hasSelection()) {\n const selection = this.getSelection()!\n this.editBuffer.setCursorByOffset(selection.start)\n this._ctx.clearSelection()\n this.requestRender()\n return true\n }\n\n this.updateSelectionForMovement(select, true)\n this.editBuffer.moveCursorLeft()\n this.updateSelectionForMovement(select, false)\n this.requestRender()\n return true\n }\n\n public moveCursorRight(options?: { select?: boolean }): boolean {\n const select = options?.select ?? false\n\n if (!select && this.hasSelection()) {\n const selection = this.getSelection()!\n const targetOffset = this.cursorOffset === selection.start ? selection.end - 1 : selection.end\n this.editBuffer.setCursorByOffset(targetOffset)\n this._ctx.clearSelection()\n this.requestRender()\n return true\n }\n\n this.updateSelectionForMovement(select, true)\n this.editBuffer.moveCursorRight()\n this.updateSelectionForMovement(select, false)\n this.requestRender()\n return true\n }\n\n public moveCursorUp(options?: { select?: boolean }): boolean {\n const select = options?.select ?? false\n this.updateSelectionForMovement(select, true)\n this.editorView.moveUpVisual()\n this.updateSelectionForMovement(select, false)\n this.requestRender()\n return true\n }\n\n public moveCursorDown(options?: { select?: boolean }): boolean {\n const select = options?.select ?? false\n this.updateSelectionForMovement(select, true)\n this.editorView.moveDownVisual()\n this.updateSelectionForMovement(select, false)\n this.requestRender()\n return true\n }\n\n public gotoLine(line: number): void {\n this.editBuffer.gotoLine(line)\n this.requestRender()\n }\n\n public gotoLineStart(): void {\n this.setCursor(this.logicalCursor.row, 0)\n }\n\n public gotoLineTextEnd(): void {\n const eol = this.editBuffer.getEOL()\n this.setCursor(eol.row, eol.col)\n }\n\n public gotoLineHome(options?: { select?: boolean }): boolean {\n const select = options?.select ?? false\n this.updateSelectionForMovement(select, true)\n const cursor = this.editorView.getCursor()\n if (cursor.col === 0 && cursor.row > 0) {\n this.editBuffer.setCursor(cursor.row - 1, 0)\n const prevLineEol = this.editBuffer.getEOL()\n this.editBuffer.setCursor(prevLineEol.row, prevLineEol.col)\n } else {\n this.editBuffer.setCursor(cursor.row, 0)\n }\n\n this.updateSelectionForMovement(select, false)\n this.requestRender()\n return true\n }\n\n public gotoLineEnd(options?: { select?: boolean }): boolean {\n const select = options?.select ?? false\n this.updateSelectionForMovement(select, true)\n const cursor = this.editorView.getCursor()\n const eol = this.editBuffer.getEOL()\n const lineCount = this.editBuffer.getLineCount()\n if (cursor.col === eol.col && cursor.row < lineCount - 1) {\n this.editBuffer.setCursor(cursor.row + 1, 0)\n } else {\n this.editBuffer.setCursor(eol.row, eol.col)\n }\n\n this.updateSelectionForMovement(select, false)\n this.requestRender()\n return true\n }\n\n public gotoVisualLineHome(options?: { select?: boolean }): boolean {\n const select = options?.select ?? false\n this.updateSelectionForMovement(select, true)\n const sol = this.editorView.getVisualSOL()\n this.editBuffer.setCursor(sol.logicalRow, sol.logicalCol)\n this.updateSelectionForMovement(select, false)\n this.requestRender()\n return true\n }\n\n public gotoVisualLineEnd(options?: { select?: boolean }): boolean {\n const select = options?.select ?? false\n this.updateSelectionForMovement(select, true)\n const eol = this.editorView.getVisualEOL()\n this.editBuffer.setCursor(eol.logicalRow, eol.logicalCol)\n this.updateSelectionForMovement(select, false)\n this.requestRender()\n return true\n }\n\n public gotoBufferHome(options?: { select?: boolean }): boolean {\n const select = options?.select ?? false\n this.updateSelectionForMovement(select, true)\n this.editBuffer.setCursor(0, 0)\n this.updateSelectionForMovement(select, false)\n this.requestRender()\n return true\n }\n\n public gotoBufferEnd(options?: { select?: boolean }): boolean {\n const select = options?.select ?? false\n this.updateSelectionForMovement(select, true)\n this.editBuffer.gotoLine(999999)\n this.updateSelectionForMovement(select, false)\n this.requestRender()\n return true\n }\n\n public selectAll(): boolean {\n this.updateSelectionForMovement(false, true)\n this.editBuffer.setCursor(0, 0)\n return this.gotoBufferEnd({ select: true })\n }\n\n public deleteToLineEnd(): boolean {\n const cursor = this.editorView.getCursor()\n const eol = this.editBuffer.getEOL()\n\n if (eol.col > cursor.col) {\n this.editBuffer.deleteRange(cursor.row, cursor.col, eol.row, eol.col)\n }\n\n this.requestRender()\n return true\n }\n\n public deleteToLineStart(): boolean {\n const cursor = this.editorView.getCursor()\n\n if (cursor.col > 0) {\n this.editBuffer.deleteRange(cursor.row, 0, cursor.row, cursor.col)\n }\n\n this.requestRender()\n return true\n }\n\n public undo(): boolean {\n this._ctx.clearSelection()\n this.editBuffer.undo()\n this.requestRender()\n return true\n }\n\n public redo(): boolean {\n this._ctx.clearSelection()\n this.editBuffer.redo()\n this.requestRender()\n return true\n }\n\n public moveWordForward(options?: { select?: boolean }): boolean {\n const select = options?.select ?? false\n this.updateSelectionForMovement(select, true)\n const nextWord = this.editBuffer.getNextWordBoundary()\n this.editBuffer.setCursorByOffset(nextWord.offset)\n this.updateSelectionForMovement(select, false)\n this.requestRender()\n return true\n }\n\n public moveWordBackward(options?: { select?: boolean }): boolean {\n const select = options?.select ?? false\n this.updateSelectionForMovement(select, true)\n const prevWord = this.editBuffer.getPrevWordBoundary()\n this.editBuffer.setCursorByOffset(prevWord.offset)\n this.updateSelectionForMovement(select, false)\n this.requestRender()\n return true\n }\n\n public deleteWordForward(): boolean {\n if (this.hasSelection()) {\n this.deleteSelectedText()\n return true\n }\n\n const currentCursor = this.editBuffer.getCursorPosition()\n const nextWord = this.editBuffer.getNextWordBoundary()\n\n if (nextWord.offset > currentCursor.offset) {\n this.editBuffer.deleteRange(currentCursor.row, currentCursor.col, nextWord.row, nextWord.col)\n }\n\n this._ctx.clearSelection()\n this.requestRender()\n return true\n }\n\n public deleteWordBackward(): boolean {\n if (this.hasSelection()) {\n this.deleteSelectedText()\n return true\n }\n\n const currentCursor = this.editBuffer.getCursorPosition()\n const prevWord = this.editBuffer.getPrevWordBoundary()\n\n if (prevWord.offset < currentCursor.offset) {\n this.editBuffer.deleteRange(prevWord.row, prevWord.col, currentCursor.row, currentCursor.col)\n }\n\n this._ctx.clearSelection()\n this.requestRender()\n return true\n }\n\n // Undefined = 0,\n // Exactly = 1,\n // AtMost = 2\n private setupMeasureFunc(): void {\n const measureFunc = (\n width: number,\n widthMode: MeasureMode,\n height: number,\n heightMode: MeasureMode,\n ): { width: number; height: number } => {\n // When widthMode is Undefined, Yoga is asking for the intrinsic/natural width\n // Pass width=0 to measureForDimensions to signal we want max-content (no wrapping)\n // The Zig code treats width=0 with wrap_mode != none as null wrap_width,\n // which triggers no-wrap mode and returns the text's intrinsic width\n let effectiveWidth: number\n if (widthMode === MeasureMode.Undefined || isNaN(width)) {\n effectiveWidth = 0\n } else {\n effectiveWidth = width\n }\n\n const effectiveHeight = isNaN(height) ? 1 : height\n\n const measureResult = this.editorView.measureForDimensions(\n Math.floor(effectiveWidth),\n Math.floor(effectiveHeight),\n )\n\n const measuredWidth = measureResult ? Math.max(1, measureResult.widthColsMax) : 1\n const measuredHeight = measureResult ? Math.max(1, measureResult.lineCount) : 1\n\n if (widthMode === MeasureMode.AtMost && this._positionType !== \"absolute\") {\n return {\n width: Math.min(effectiveWidth, measuredWidth),\n height: Math.min(effectiveHeight, measuredHeight),\n }\n }\n\n return {\n width: measuredWidth,\n height: measuredHeight,\n }\n }\n\n this.yogaNode.setMeasureFunc(measureFunc)\n }\n\n render(buffer: OptimizedBuffer, deltaTime: number): void {\n if (!this.visible) return\n if (this.isDestroyed) return\n\n this.markClean()\n this._ctx.addToHitGrid(this.x, this.y, this.width, this.height, this.num)\n\n this.renderSelf(buffer)\n this.renderCursor(buffer)\n }\n\n protected renderSelf(buffer: OptimizedBuffer): void {\n buffer.drawEditorView(this.editorView, this.x, this.y)\n }\n\n protected renderCursor(buffer: OptimizedBuffer): void {\n if (!this._showCursor || !this._focused) return\n\n const visualCursor = this.editorView.getVisualCursor()\n\n const cursorX = this.x + visualCursor.visualCol + 1 // +1 for 1-based terminal coords\n const cursorY = this.y + visualCursor.visualRow + 1 // +1 for 1-based terminal coords\n\n this._ctx.setCursorPosition(cursorX, cursorY, true)\n this._ctx.setCursorStyle({ ...this._cursorStyle, color: this._cursorColor })\n }\n\n public focus(): void {\n super.focus()\n this._ctx.setCursorStyle({ ...this._cursorStyle, color: this._cursorColor })\n this.requestRender()\n }\n\n public blur(): void {\n super.blur()\n this._ctx.setCursorPosition(0, 0, false)\n this.requestRender()\n }\n\n protected onRemove(): void {\n if (this._focused) {\n this._ctx.setCursorPosition(0, 0, false)\n }\n }\n\n override destroy(): void {\n if (this.isDestroyed) return\n\n this.traits = {}\n\n if (this._focused) {\n this._ctx.setCursorPosition(0, 0, false)\n // Manually blur to unhook event handlers BEFORE setting destroyed flag\n // This prevents the guard in super.destroy() from skipping blur()\n this.blur()\n }\n\n // Destroy dependent resources in correct order BEFORE calling super\n // EditorView depends on EditBuffer, so destroy it first\n this.editorView.destroy()\n this.editBuffer.destroy()\n\n // Finally clean up parent resources\n // Note: super.destroy() will try to blur() again, but blur() has guards to prevent double-blur\n super.destroy()\n }\n\n public set onCursorChange(handler: ((event: CursorChangeEvent) => void) | undefined) {\n this._cursorChangeListener = handler\n }\n\n public get onCursorChange(): ((event: CursorChangeEvent) => void) | undefined {\n return this._cursorChangeListener\n }\n\n public set onContentChange(handler: ((event: ContentChangeEvent) => void) | undefined) {\n this._contentChangeListener = handler\n }\n\n public get onContentChange(): ((event: ContentChangeEvent) => void) | undefined {\n return this._contentChangeListener\n }\n\n get syntaxStyle(): SyntaxStyle | null {\n return this.editBuffer.getSyntaxStyle()\n }\n\n set syntaxStyle(style: SyntaxStyle | null) {\n this.editBuffer.setSyntaxStyle(style)\n this.requestRender()\n }\n\n public addHighlight(lineIdx: number, highlight: Highlight): void {\n this.editBuffer.addHighlight(lineIdx, highlight)\n this.requestRender()\n }\n\n public addHighlightByCharRange(highlight: Highlight): void {\n this.editBuffer.addHighlightByCharRange(highlight)\n this.requestRender()\n }\n\n public removeHighlightsByRef(hlRef: number): void {\n this.editBuffer.removeHighlightsByRef(hlRef)\n this.requestRender()\n }\n\n public clearLineHighlights(lineIdx: number): void {\n this.editBuffer.clearLineHighlights(lineIdx)\n this.requestRender()\n }\n\n public clearAllHighlights(): void {\n this.editBuffer.clearAllHighlights()\n this.requestRender()\n }\n\n public getLineHighlights(lineIdx: number): Array<Highlight> {\n return this.editBuffer.getLineHighlights(lineIdx)\n }\n\n /**\n * Set text and completely reset the buffer state (clears history, resets add_buffer).\n * Use this for initial text setting or when you want a clean slate.\n */\n public setText(text: string): void {\n this.editBuffer.setText(text)\n this.yogaNode.markDirty()\n this.requestRender()\n }\n\n /**\n * Replace text while preserving undo history (creates an undo point).\n * Use this when you want the setText operation to be undoable.\n */\n public replaceText(text: string): void {\n this.editBuffer.replaceText(text)\n this.yogaNode.markDirty()\n this.requestRender()\n }\n\n public clear(): void {\n this.editBuffer.clear()\n this.editBuffer.clearAllHighlights()\n this.yogaNode.markDirty()\n this.requestRender()\n }\n\n public deleteRange(startLine: number, startCol: number, endLine: number, endCol: number): void {\n this.editBuffer.deleteRange(startLine, startCol, endLine, endCol)\n this.yogaNode.markDirty()\n this.requestRender()\n }\n\n public getTextRange(startOffset: number, endOffset: number): string {\n return this.editBuffer.getTextRange(startOffset, endOffset)\n }\n\n public getTextRangeByCoords(startRow: number, startCol: number, endRow: number, endCol: number): string {\n return this.editBuffer.getTextRangeByCoords(startRow, startCol, endRow, endCol)\n }\n\n protected updateSelectionForMovement(shiftPressed: boolean, isBeforeMovement: boolean): void {\n if (!this.selectable) return\n\n if (!shiftPressed) {\n this._keyboardSelectionActive = false\n this._ctx.clearSelection()\n return\n }\n\n this._keyboardSelectionActive = true\n\n const visualCursor = this.editorView.getVisualCursor()\n const cursorX = this.x + visualCursor.visualCol\n const cursorY = this.y + visualCursor.visualRow\n\n if (isBeforeMovement) {\n if (!this._ctx.hasSelection) {\n this._ctx.startSelection(this, cursorX, cursorY)\n }\n return\n }\n\n this._ctx.updateSelection(this, cursorX, cursorY, { finishDragging: true })\n }\n}\n",
58
58
  "export const ANSI = {\n switchToAlternateScreen: \"\\x1b[?1049h\",\n switchToMainScreen: \"\\x1b[?1049l\",\n reset: \"\\x1b[0m\",\n\n scrollDown: (lines: number) => `\\x1b[${lines}T`,\n scrollUp: (lines: number) => `\\x1b[${lines}S`,\n\n moveCursor: (row: number, col: number) => `\\x1b[${row};${col}H`,\n moveCursorAndClear: (row: number, col: number) => `\\x1b[${row};${col}H\\x1b[J`,\n\n setRgbBackground: (r: number, g: number, b: number) => `\\x1b[48;2;${r};${g};${b}m`,\n resetBackground: \"\\x1b[49m\",\n\n // Bracketed paste mode\n bracketedPasteStart: \"\\u001b[200~\",\n bracketedPasteEnd: \"\\u001b[201~\",\n}\n",
59
59
  "// OSC 52 clipboard support for terminal applications.\n// Delegates to native Zig implementation for ANSI sequence generation.\n\nimport type { Pointer } from \"bun:ffi\"\nimport type { RenderLib } from \"../zig.js\"\n\nexport enum ClipboardTarget {\n Clipboard = 0,\n Primary = 1,\n Secondary = 2,\n Query = 3,\n}\n\nexport function encodeOsc52Payload(text: string, encoder: TextEncoder = new TextEncoder()): Uint8Array {\n const base64 = Buffer.from(text).toString(\"base64\")\n return encoder.encode(base64)\n}\n\nexport class Clipboard {\n private lib: RenderLib\n private rendererPtr: Pointer\n\n constructor(lib: RenderLib, rendererPtr: Pointer) {\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 payload = encodeOsc52Payload(text, this.lib.encoder)\n return this.lib.copyToClipboardOSC52(this.rendererPtr, target, payload)\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 Boolean(caps?.osc52)\n }\n}\n",
60
- "import { ANSI } from \"./ansi.js\"\nimport { Renderable, RootRenderable } from \"./Renderable.js\"\nimport {\n DebugOverlayCorner,\n type CursorStyleOptions,\n type MousePointerStyle,\n type RenderContext,\n type ThemeMode,\n type ViewportBounds,\n type WidthMethod,\n} from \"./types.js\"\nimport { RGBA, parseColor, type ColorInput } from \"./lib/RGBA.js\"\nimport type { Pointer } from \"bun:ffi\"\nimport { OptimizedBuffer } from \"./buffer.js\"\nimport { resolveRenderLib, type RenderLib } from \"./zig.js\"\nimport { TerminalConsole, type ConsoleOptions, capture } from \"./console.js\"\nimport { type MouseEventType, type RawMouseEvent, type ScrollInfo } from \"./lib/parse.mouse.js\"\nimport { Selection } from \"./lib/selection.js\"\nimport { Clipboard, type ClipboardTarget } from \"./lib/clipboard.js\"\nimport { EventEmitter } from \"events\"\nimport { destroySingleton, hasSingleton, singleton } from \"./lib/singleton.js\"\nimport { getObjectsInViewport } from \"./lib/objects-in-viewport.js\"\nimport { KeyHandler, InternalKeyHandler } from \"./lib/KeyHandler.js\"\nimport { isEditBufferRenderable, type EditBufferRenderable } from \"./renderables/EditBufferRenderable.js\"\nimport { env, registerEnvVar } from \"./lib/env.js\"\nimport { getTreeSitterClient } from \"./lib/tree-sitter/index.js\"\nimport {\n createTerminalPalette,\n type TerminalPaletteDetector,\n type TerminalColors,\n type GetPaletteOptions,\n} from \"./lib/terminal-palette.js\"\nimport {\n isCapabilityResponse,\n isPixelResolutionResponse,\n parsePixelResolution,\n} from \"./lib/terminal-capability-detection.js\"\nimport { type Clock, type TimerHandle, SystemClock } from \"./lib/clock.js\"\nimport { StdinParser, type StdinEvent, type StdinParserProtocolContext } from \"./lib/stdin-parser.js\"\n\nregisterEnvVar({\n name: \"OTUI_DUMP_CAPTURES\",\n description: \"Dump captured stdout and console caches when the renderer exit handler runs.\",\n type: \"boolean\",\n default: false,\n})\n\nregisterEnvVar({\n name: \"OTUI_NO_NATIVE_RENDER\",\n description:\n \"Skip the Zig/native frame renderer. Useful for debugging the render loop; split-footer stdout flushing may still write ANSI.\",\n type: \"boolean\",\n default: false,\n})\n\nregisterEnvVar({\n name: \"OTUI_USE_ALTERNATE_SCREEN\",\n description: \"When explicitly set, force screen mode selection: true=alternate-screen, false=main-screen.\",\n type: \"boolean\",\n default: true,\n})\n\nregisterEnvVar({\n name: \"OTUI_OVERRIDE_STDOUT\",\n description: \"When explicitly set, force stdout routing: false=passthrough, true=capture in split-footer mode.\",\n type: \"boolean\",\n default: true,\n})\n\nregisterEnvVar({\n name: \"OTUI_DEBUG\",\n description: \"Enable debug mode to capture all raw input for debugging purposes.\",\n type: \"boolean\",\n default: false,\n})\n\nregisterEnvVar({\n name: \"OTUI_SHOW_STATS\",\n description: \"Show the debug overlay at startup.\",\n type: \"boolean\",\n default: false,\n})\n\nexport interface CliRendererConfig {\n // Read input from this stream. Defaults to process.stdin.\n stdin?: NodeJS.ReadStream\n\n // Use a custom stdout stream for size detection and stdout interception.\n // Native frame output still goes to the real TTY.\n stdout?: NodeJS.WriteStream\n\n // Tell the native renderer it is driving a remote terminal.\n remote?: boolean\n\n // Skip terminal setup. Useful in tests.\n testing?: boolean\n\n // Call renderer.destroy() when Ctrl+C is pressed. Defaults to true.\n exitOnCtrlC?: boolean\n\n // Clean up on these signals. Defaults to the common termination signals.\n exitSignals?: NodeJS.Signals[]\n\n // Forward these env var names to native terminal detection.\n forwardEnvKeys?: string[]\n\n // Wait this long before handling resize events. Defaults to 100 ms.\n debounceDelay?: number\n\n // Aim for this many frames per second in continuous mode. Defaults to 30.\n targetFps?: number\n\n // Cap immediate re-renders at this frame rate. Defaults to 60.\n maxFps?: number\n\n // Emit memory snapshots on this interval in ms. Set 0 to disable.\n memorySnapshotInterval?: number\n\n // Render from a separate thread when the platform supports it.\n useThread?: boolean\n\n // Collect frame timing stats for the debug overlay.\n gatherStats?: boolean\n\n // Keep this many timing samples. Defaults to 300.\n maxStatSamples?: number\n\n // Pass options to the built-in console overlay.\n consoleOptions?: Omit<ConsoleOptions, \"clock\">\n\n // Run these hooks after each render pass.\n postProcessFns?: ((buffer: OptimizedBuffer, deltaTime: number) => void)[]\n\n // Track mouse move events. Defaults to true.\n enableMouseMovement?: boolean\n\n // Enable mouse input. Defaults to true.\n useMouse?: boolean\n\n // Focus the nearest focusable renderable on left click. Defaults to true.\n autoFocus?: boolean\n\n // Choose where the renderer owns terminal space. Defaults to \"alternate-screen\".\n screenMode?: ScreenMode\n\n // Set the requested footer height for \"split-footer\". Defaults to 12.\n footerHeight?: number\n\n // Choose what happens to writes that go through `stdout.write`.\n externalOutputMode?: ExternalOutputMode\n\n // Choose what the built-in console overlay does.\n consoleMode?: ConsoleMode\n\n // Set Kitty keyboard protocol flags, or null to disable them.\n useKittyKeyboard?: KittyKeyboardOptions | null\n\n // Fill the render buffer with this background color. Default transparent.\n backgroundColor?: ColorInput\n\n // Open the console overlay on uncaught errors. Defaults to true in development.\n openConsoleOnError?: boolean\n\n // Run these input handlers before the built-in handlers.\n prependInputHandlers?: ((sequence: string) => boolean)[]\n\n // Cap the stdin parser buffer size in bytes. Defaults to 64 MB.\n stdinParserMaxBufferBytes?: number\n\n // Use a custom clock for timers and tests.\n clock?: Clock\n\n // Run after destroy() finishes cleanup.\n onDestroy?: () => void\n}\n\n// Controls how the renderer uses terminal space:\n//\n// - \"alternate-screen\": Use the terminal's alternate screen buffer.\n//\n// - \"main-screen\": Render on the main screen.\n//\n// - \"split-footer\": Keep the renderer in a reserved footer on the main screen.\nexport type ScreenMode = \"alternate-screen\" | \"main-screen\" | \"split-footer\"\n\n// Controls writes that go through the configured `stdout.write`.\n//\n// - \"capture-stdout\": Queue stdout and replay it above the split footer.\n// Only valid with \"split-footer\".\n//\n// - \"passthrough\": Leave stdout alone.\nexport type ExternalOutputMode = \"capture-stdout\" | \"passthrough\"\n\n// Controls the built-in console overlay:\n//\n// - \"console-overlay\": Capture `console.*` output and show the overlay.\n//\n// - \"disabled\": Hide the overlay. `OTUI_USE_CONSOLE` controls global console\n// capture.\nexport type ConsoleMode = \"console-overlay\" | \"disabled\"\n\nexport type PixelResolution = {\n width: number\n height: number\n}\n\nconst DEFAULT_FOOTER_HEIGHT = 12\n\nfunction normalizeFooterHeight(footerHeight: number | undefined): number {\n if (footerHeight === undefined) {\n return DEFAULT_FOOTER_HEIGHT\n }\n\n if (!Number.isFinite(footerHeight)) {\n throw new Error(\"footerHeight must be a finite number\")\n }\n\n const normalizedFooterHeight = Math.trunc(footerHeight)\n if (normalizedFooterHeight <= 0) {\n throw new Error(\"footerHeight must be greater than 0\")\n }\n\n return normalizedFooterHeight\n}\n\nfunction resolveModes(config: CliRendererConfig): {\n screenMode: ScreenMode\n footerHeight: number\n externalOutputMode: ExternalOutputMode\n} {\n let screenMode = config.screenMode ?? \"alternate-screen\"\n if (process.env.OTUI_USE_ALTERNATE_SCREEN !== undefined) {\n screenMode = env.OTUI_USE_ALTERNATE_SCREEN ? \"alternate-screen\" : \"main-screen\"\n }\n\n const footerHeight =\n screenMode === \"split-footer\" ? normalizeFooterHeight(config.footerHeight) : DEFAULT_FOOTER_HEIGHT\n\n let externalOutputMode =\n config.externalOutputMode ?? (screenMode === \"split-footer\" ? \"capture-stdout\" : \"passthrough\")\n if (process.env.OTUI_OVERRIDE_STDOUT !== undefined) {\n externalOutputMode = env.OTUI_OVERRIDE_STDOUT && screenMode === \"split-footer\" ? \"capture-stdout\" : \"passthrough\"\n }\n\n if (externalOutputMode === \"capture-stdout\" && screenMode !== \"split-footer\") {\n throw new Error('externalOutputMode \"capture-stdout\" requires screenMode \"split-footer\"')\n }\n\n return {\n screenMode,\n footerHeight,\n externalOutputMode,\n }\n}\n\nconst DEFAULT_FORWARDED_ENV_KEYS = [\n \"TMUX\",\n \"TERM\",\n \"OPENTUI_GRAPHICS\",\n \"TERM_PROGRAM\",\n \"TERM_PROGRAM_VERSION\",\n \"ALACRITTY_SOCKET\",\n \"ALACRITTY_LOG\",\n \"COLORTERM\",\n \"TERMUX_VERSION\",\n \"VHS_RECORD\",\n \"OPENTUI_FORCE_WCWIDTH\",\n \"OPENTUI_FORCE_UNICODE\",\n \"OPENTUI_FORCE_NOZWJ\",\n \"OPENTUI_FORCE_EXPLICIT_WIDTH\",\n \"WT_SESSION\",\n \"STY\",\n \"WSL_DISTRO_NAME\",\n \"WSL_INTEROP\",\n] as const\n\n// Kitty keyboard protocol flags\n// See: https://sw.kovidgoyal.net/kitty/keyboard-protocol/\nconst KITTY_FLAG_DISAMBIGUATE = 0b1 // Report disambiguated escape codes\nconst KITTY_FLAG_EVENT_TYPES = 0b10 // Report event types (press/repeat/release)\nconst KITTY_FLAG_ALTERNATE_KEYS = 0b100 // Report alternate keys (e.g., numpad vs regular)\nconst KITTY_FLAG_ALL_KEYS_AS_ESCAPES = 0b1000 // Report all keys as escape codes\nconst KITTY_FLAG_REPORT_TEXT = 0b10000 // Report text associated with key events\n\nconst DEFAULT_STDIN_PARSER_MAX_BUFFER_BYTES = 64 * 1024 * 1024\n\n/**\n * Kitty Keyboard Protocol configuration options\n * See: https://sw.kovidgoyal.net/kitty/keyboard-protocol/#progressive-enhancement\n */\nexport interface KittyKeyboardOptions {\n /** Disambiguate escape codes (fixes ESC timing, alt+key ambiguity, ctrl+c as event). Default: true */\n disambiguate?: boolean\n /** Report alternate keys (numpad, shifted, base layout) for cross-keyboard shortcuts. Default: true */\n alternateKeys?: boolean\n /** Report event types (press/repeat/release). Default: false */\n events?: boolean\n /** Report all keys as escape codes. Default: false */\n allKeysAsEscapes?: boolean\n /** Report text associated with key events. Default: false */\n reportText?: boolean\n}\n\n/**\n * Build kitty keyboard protocol flags based on configuration\n * @param config Kitty keyboard configuration object (null/undefined = disabled)\n * @returns The combined flags value (0 = disabled, >0 = enabled)\n * @internal Exported for testing\n */\nexport function buildKittyKeyboardFlags(config: KittyKeyboardOptions | null | undefined): number {\n if (!config) {\n return 0\n }\n\n let flags = 0\n\n // Default: disambiguate + alternate keys (both default to true)\n // - Disambiguate (0b1): Fixes ESC timing issues, alt+key ambiguity, makes ctrl+c a key event\n // - Alternate keys (0b100): Reports shifted/base-layout keys for cross-keyboard shortcuts\n\n // disambiguate defaults to true unless explicitly set to false\n if (config.disambiguate !== false) {\n flags |= KITTY_FLAG_DISAMBIGUATE\n }\n\n // alternateKeys defaults to true unless explicitly set to false\n if (config.alternateKeys !== false) {\n flags |= KITTY_FLAG_ALTERNATE_KEYS\n }\n\n // Optional flags (default to false, only enabled when explicitly true)\n if (config.events === true) {\n flags |= KITTY_FLAG_EVENT_TYPES\n }\n\n if (config.allKeysAsEscapes === true) {\n flags |= KITTY_FLAG_ALL_KEYS_AS_ESCAPES\n }\n\n if (config.reportText === true) {\n flags |= KITTY_FLAG_REPORT_TEXT\n }\n\n return flags\n}\n\nexport class MouseEvent {\n public readonly type: MouseEventType\n public readonly button: number\n public readonly x: number\n public readonly y: number\n public readonly source?: Renderable\n public readonly modifiers: {\n shift: boolean\n alt: boolean\n ctrl: boolean\n }\n public readonly scroll?: ScrollInfo\n public readonly target: Renderable | null\n public readonly isDragging?: boolean\n private _propagationStopped: boolean = false\n private _defaultPrevented: boolean = false\n\n public get propagationStopped(): boolean {\n return this._propagationStopped\n }\n\n public get defaultPrevented(): boolean {\n return this._defaultPrevented\n }\n\n constructor(target: Renderable | null, attributes: RawMouseEvent & { source?: Renderable; isDragging?: boolean }) {\n this.target = target\n this.type = attributes.type\n this.button = attributes.button\n this.x = attributes.x\n this.y = attributes.y\n this.modifiers = attributes.modifiers\n this.scroll = attributes.scroll\n this.source = attributes.source\n this.isDragging = attributes.isDragging\n }\n\n public stopPropagation(): void {\n this._propagationStopped = true\n }\n\n public preventDefault(): void {\n this._defaultPrevented = true\n }\n}\n\nexport enum MouseButton {\n LEFT = 0,\n MIDDLE = 1,\n RIGHT = 2,\n WHEEL_UP = 4,\n WHEEL_DOWN = 5,\n}\n\nconst rendererTracker = singleton(\"RendererTracker\", () => {\n const renderers = new Set<CliRenderer>()\n return {\n addRenderer: (renderer: CliRenderer) => {\n renderers.add(renderer)\n },\n removeRenderer: (renderer: CliRenderer) => {\n renderers.delete(renderer)\n if (renderers.size === 0) {\n process.stdin.pause()\n\n if (hasSingleton(\"tree-sitter-client\")) {\n getTreeSitterClient().destroy()\n destroySingleton(\"tree-sitter-client\")\n }\n }\n },\n }\n})\n\nexport async function createCliRenderer(config: CliRendererConfig = {}): Promise<CliRenderer> {\n if (process.argv.includes(\"--delay-start\")) {\n await new Promise((resolve) => setTimeout(resolve, 5000))\n }\n const stdin = config.stdin || process.stdin\n const stdout = config.stdout || process.stdout\n const { screenMode, footerHeight } = resolveModes(config)\n\n const width = stdout.columns || 80\n const height = stdout.rows || 24\n const renderHeight = screenMode === \"split-footer\" ? footerHeight : height\n\n const ziglib = resolveRenderLib()\n const rendererPtr = ziglib.createRenderer(width, renderHeight, {\n remote: config.remote ?? false,\n testing: config.testing ?? false,\n })\n if (!rendererPtr) {\n throw new Error(\"Failed to create renderer\")\n }\n if (config.useThread === undefined) {\n config.useThread = true\n }\n\n // Disable threading on linux because there currently is currently an issue\n // might be just a missing dependency for the build or something, but threads crash on linux\n if (process.platform === \"linux\") {\n config.useThread = false\n }\n ziglib.setUseThread(rendererPtr, config.useThread)\n\n const kittyConfig = config.useKittyKeyboard ?? {}\n const kittyFlags = buildKittyKeyboardFlags(kittyConfig)\n\n ziglib.setKittyKeyboardFlags(rendererPtr, kittyFlags)\n\n const renderer = new CliRenderer(ziglib, rendererPtr, stdin, stdout, width, height, config)\n if (!config.testing) {\n await renderer.setupTerminal()\n }\n return renderer\n}\n\nexport enum CliRenderEvents {\n RESIZE = \"resize\",\n FOCUS = \"focus\",\n BLUR = \"blur\",\n FOCUSED_EDITOR = \"focused_editor\",\n THEME_MODE = \"theme_mode\",\n CAPABILITIES = \"capabilities\",\n SELECTION = \"selection\",\n DEBUG_OVERLAY_TOGGLE = \"debugOverlay:toggle\",\n DESTROY = \"destroy\",\n MEMORY_SNAPSHOT = \"memory:snapshot\",\n}\n\nexport enum RendererControlState {\n IDLE = \"idle\",\n AUTO_STARTED = \"auto_started\",\n EXPLICIT_STARTED = \"explicit_started\",\n EXPLICIT_PAUSED = \"explicit_paused\",\n EXPLICIT_SUSPENDED = \"explicit_suspended\",\n EXPLICIT_STOPPED = \"explicit_stopped\",\n}\n\nexport class CliRenderer extends EventEmitter implements RenderContext {\n private static animationFrameId = 0\n private lib: RenderLib\n public rendererPtr: Pointer\n public stdin: NodeJS.ReadStream\n private stdout: NodeJS.WriteStream\n private exitOnCtrlC: boolean\n private exitSignals: NodeJS.Signals[]\n private _exitListenersAdded: boolean = false\n private _isDestroyed: boolean = false\n private _destroyPending: boolean = false\n private _destroyFinalized: boolean = false\n private _destroyCleanupPrepared: boolean = false\n public nextRenderBuffer: OptimizedBuffer\n public currentRenderBuffer: OptimizedBuffer\n private _isRunning: boolean = false\n private _targetFps: number = 30\n private _maxFps: number = 60\n private automaticMemorySnapshot: boolean = false\n private memorySnapshotInterval: number\n private memorySnapshotTimer: TimerHandle | null = null\n private lastMemorySnapshot: { heapUsed: number; heapTotal: number; arrayBuffers: number } = {\n heapUsed: 0,\n heapTotal: 0,\n arrayBuffers: 0,\n }\n public readonly root: RootRenderable\n public width: number\n public height: number\n private _useThread: boolean = false\n private gatherStats: boolean = false\n private frameTimes: number[] = []\n private maxStatSamples: number = 300\n private postProcessFns: ((buffer: OptimizedBuffer, deltaTime: number) => void)[] = []\n private backgroundColor: RGBA = RGBA.fromInts(0, 0, 0, 0)\n private waitingForPixelResolution: boolean = false\n private readonly clock: Clock\n\n private rendering: boolean = false\n private renderingNative: boolean = false\n private renderTimeout: TimerHandle | null = null\n private lastTime: number = 0\n private frameCount: number = 0\n private lastFpsTime: number = 0\n private currentFps: number = 0\n private targetFrameTime: number = 1000 / this._targetFps\n private minTargetFrameTime: number = 1000 / this._maxFps\n private immediateRerenderRequested: boolean = false\n private updateScheduled: boolean = false\n\n private liveRequestCounter: number = 0\n private _controlState: RendererControlState = RendererControlState.IDLE\n\n private frameCallbacks: ((deltaTime: number) => Promise<void>)[] = []\n private renderStats: {\n frameCount: number\n fps: number\n renderTime?: number\n frameCallbackTime: number\n } = {\n frameCount: 0,\n fps: 0,\n renderTime: 0,\n frameCallbackTime: 0,\n }\n public debugOverlay = {\n enabled: env.OTUI_SHOW_STATS,\n corner: DebugOverlayCorner.bottomRight,\n }\n\n private _console: TerminalConsole\n private _resolution: PixelResolution | null = null\n private _keyHandler: InternalKeyHandler\n private stdinParser: StdinParser | null = null\n private readonly oscSubscribers = new Set<(sequence: string) => void>()\n private hasLoggedStdinParserError = false\n\n private animationRequest: Map<number, FrameRequestCallback> = new Map()\n\n private resizeTimeoutId: TimerHandle | null = null\n private capabilityTimeoutId: TimerHandle | null = null\n private resizeDebounceDelay: number = 100\n\n private enableMouseMovement: boolean = false\n private _useMouse: boolean = true\n private autoFocus: boolean = true\n private _screenMode: ScreenMode = \"alternate-screen\"\n private _footerHeight: number = DEFAULT_FOOTER_HEIGHT\n private _externalOutputMode: ExternalOutputMode = \"passthrough\"\n private _suspendedMouseEnabled: boolean = false\n private _previousControlState: RendererControlState = RendererControlState.IDLE\n private capturedRenderable?: Renderable\n private lastOverRenderableNum: number = 0\n private lastOverRenderable?: Renderable\n\n private currentSelection: Selection | null = null\n private selectionContainers: Renderable[] = []\n private clipboard: Clipboard\n\n private _splitHeight: number = 0\n private renderOffset: number = 0\n\n private _terminalWidth: number = 0\n private _terminalHeight: number = 0\n private _terminalIsSetup: boolean = false\n\n private realStdoutWrite: (chunk: any, encoding?: any, callback?: any) => boolean\n private captureCallback: () => void = () => {\n if (this._splitHeight > 0) {\n this.requestRender()\n }\n }\n\n private _useConsole: boolean = true\n private sigwinchHandler: () => void = (() => {\n const width = this.stdout.columns || 80\n const height = this.stdout.rows || 24\n this.handleResize(width, height)\n }).bind(this)\n private _capabilities: any | null = null\n private _latestPointer: { x: number; y: number } = { x: 0, y: 0 }\n private _hasPointer: boolean = false\n private _lastPointerModifiers: RawMouseEvent[\"modifiers\"] = { shift: false, alt: false, ctrl: false }\n private _currentMousePointerStyle: MousePointerStyle | undefined = undefined\n\n private _currentFocusedRenderable: Renderable | null = null\n private lifecyclePasses: Set<Renderable> = new Set()\n private _openConsoleOnError: boolean = true\n private _paletteDetector: TerminalPaletteDetector | null = null\n private _cachedPalette: TerminalColors | null = null\n private _paletteDetectionPromise: Promise<TerminalColors> | null = null\n private _onDestroy?: () => void\n private _themeMode: ThemeMode | null = null\n private _terminalFocusState: boolean | null = null\n\n private sequenceHandlers: ((sequence: string) => boolean)[] = []\n private prependedInputHandlers: ((sequence: string) => boolean)[] = []\n private shouldRestoreModesOnNextFocus: boolean = false\n\n private idleResolvers: (() => void)[] = []\n\n private _debugInputs: Array<{ timestamp: string; sequence: string }> = []\n private _debugModeEnabled: boolean = env.OTUI_DEBUG\n\n private handleError: (error: Error) => void = ((error: Error) => {\n console.error(error)\n\n if (this._openConsoleOnError) {\n this.console.show()\n }\n }).bind(this)\n\n private dumpOutputCache(optionalMessage: string = \"\"): void {\n const cachedLogs = this.console.getCachedLogs()\n const capturedOutput = capture.claimOutput()\n\n if (capturedOutput.length > 0 || cachedLogs.length > 0) {\n this.realStdoutWrite.call(this.stdout, optionalMessage)\n }\n\n if (cachedLogs.length > 0) {\n this.realStdoutWrite.call(this.stdout, \"Console cache:\\n\")\n this.realStdoutWrite.call(this.stdout, cachedLogs)\n }\n\n if (capturedOutput.length > 0) {\n this.realStdoutWrite.call(this.stdout, \"\\nCaptured output:\\n\")\n this.realStdoutWrite.call(this.stdout, capturedOutput + \"\\n\")\n }\n\n this.realStdoutWrite.call(this.stdout, ANSI.reset)\n }\n\n private exitHandler: () => void = (() => {\n this.destroy()\n if (env.OTUI_DUMP_CAPTURES) {\n Bun.sleep(100).then(() => {\n this.dumpOutputCache(\"=== CAPTURED OUTPUT ===\\n\")\n })\n }\n }).bind(this)\n\n private warningHandler: (warning: any) => void = ((warning: any) => {\n console.warn(JSON.stringify(warning.message, null, 2))\n }).bind(this)\n\n public get controlState(): RendererControlState {\n return this._controlState\n }\n\n constructor(\n lib: RenderLib,\n rendererPtr: Pointer,\n stdin: NodeJS.ReadStream,\n stdout: NodeJS.WriteStream,\n width: number,\n height: number,\n config: CliRendererConfig = {},\n ) {\n super()\n\n rendererTracker.addRenderer(this)\n\n this.stdin = stdin\n this.stdout = stdout\n this.realStdoutWrite = stdout.write\n this.lib = lib\n this._terminalWidth = stdout.columns ?? width\n this._terminalHeight = stdout.rows ?? height\n this.width = width\n this.height = height\n this._useThread = config.useThread === undefined ? false : config.useThread\n const { screenMode, footerHeight, externalOutputMode } = resolveModes(config)\n\n this._footerHeight = footerHeight\n this._screenMode = screenMode\n\n this.rendererPtr = rendererPtr\n\n const forwardEnvKeys = config.forwardEnvKeys ?? [...DEFAULT_FORWARDED_ENV_KEYS]\n for (const key of forwardEnvKeys) {\n const value = process.env[key]\n if (value === undefined) continue\n this.lib.setTerminalEnvVar(this.rendererPtr, key, value)\n }\n\n this.exitOnCtrlC = config.exitOnCtrlC === undefined ? true : config.exitOnCtrlC\n this.exitSignals = config.exitSignals || [\n \"SIGINT\", // Ctrl+C\n \"SIGTERM\", // Termination signal\n \"SIGQUIT\", // Ctrl+\\\n \"SIGABRT\", // Abort signal\n \"SIGHUP\", // Hangup (terminal closed)\n \"SIGBREAK\", // Ctrl+Break on Windows\n \"SIGPIPE\", // Broken pipe\n \"SIGBUS\", // Bus error\n \"SIGFPE\", // Floating point exception\n ]\n\n this.clipboard = new Clipboard(this.lib, this.rendererPtr)\n this.resizeDebounceDelay = config.debounceDelay || 100\n this.targetFps = config.targetFps || 30\n this.maxFps = config.maxFps || 60\n this.clock = config.clock ?? new SystemClock()\n this.memorySnapshotInterval = config.memorySnapshotInterval ?? 0\n this.gatherStats = config.gatherStats || false\n this.maxStatSamples = config.maxStatSamples || 300\n this.enableMouseMovement = config.enableMouseMovement ?? true\n this._useMouse = config.useMouse ?? true\n this.autoFocus = config.autoFocus ?? true\n this.nextRenderBuffer = this.lib.getNextBuffer(this.rendererPtr)\n this.currentRenderBuffer = this.lib.getCurrentBuffer(this.rendererPtr)\n this.postProcessFns = config.postProcessFns || []\n this.prependedInputHandlers = config.prependInputHandlers || []\n\n this.root = new RootRenderable(this)\n\n if (this.memorySnapshotInterval > 0) {\n this.startMemorySnapshotTimer()\n }\n\n // Handle terminal resize\n process.on(\"SIGWINCH\", this.sigwinchHandler)\n\n process.on(\"warning\", this.warningHandler)\n\n process.on(\"uncaughtException\", this.handleError)\n process.on(\"unhandledRejection\", this.handleError)\n process.on(\"beforeExit\", this.exitHandler)\n\n const kittyConfig = config.useKittyKeyboard ?? {}\n const useKittyForParsing = kittyConfig !== null\n this._keyHandler = new InternalKeyHandler()\n this._keyHandler.on(\"keypress\", (event) => {\n if (this.exitOnCtrlC && event.name === \"c\" && event.ctrl) {\n process.nextTick(() => {\n this.destroy()\n })\n return\n }\n })\n\n this.addExitListeners()\n\n const stdinParserMaxBufferBytes = config.stdinParserMaxBufferBytes ?? DEFAULT_STDIN_PARSER_MAX_BUFFER_BYTES\n this.stdinParser = new StdinParser({\n timeoutMs: 20,\n maxPendingBytes: stdinParserMaxBufferBytes,\n armTimeouts: true,\n onTimeoutFlush: () => {\n this.drainStdinParser()\n },\n useKittyKeyboard: useKittyForParsing,\n protocolContext: {\n kittyKeyboardEnabled: useKittyForParsing,\n privateCapabilityRepliesActive: false,\n pixelResolutionQueryActive: false,\n explicitWidthCprActive: false,\n },\n clock: this.clock,\n })\n\n this._console = new TerminalConsole(this, {\n ...(config.consoleOptions ?? {}),\n clock: this.clock,\n })\n this.consoleMode = config.consoleMode ?? \"console-overlay\"\n this.applyScreenMode(screenMode, false, false)\n this.externalOutputMode = externalOutputMode\n this._openConsoleOnError = config.openConsoleOnError ?? process.env.NODE_ENV !== \"production\"\n this._onDestroy = config.onDestroy\n\n global.requestAnimationFrame = (callback: FrameRequestCallback) => {\n const id = CliRenderer.animationFrameId++\n this.animationRequest.set(id, callback)\n this.requestLive()\n return id\n }\n global.cancelAnimationFrame = (handle: number) => {\n this.animationRequest.delete(handle)\n }\n\n const window = global.window\n if (!window) {\n global.window = {} as Window & typeof globalThis\n }\n global.window.requestAnimationFrame = requestAnimationFrame\n\n // Prevents output from being written to the terminal, useful for debugging\n if (env.OTUI_NO_NATIVE_RENDER) {\n this.renderNative = () => {\n if (this._splitHeight > 0) {\n this.flushStdoutCache(this._splitHeight)\n }\n }\n }\n\n this.setupInput()\n }\n\n private addExitListeners(): void {\n if (this._exitListenersAdded || this.exitSignals.length === 0) return\n\n this.exitSignals.forEach((signal) => {\n process.addListener(signal, this.exitHandler)\n })\n\n this._exitListenersAdded = true\n }\n\n private removeExitListeners(): void {\n if (!this._exitListenersAdded || this.exitSignals.length === 0) return\n\n this.exitSignals.forEach((signal) => {\n process.removeListener(signal, this.exitHandler)\n })\n\n this._exitListenersAdded = false\n }\n\n public get isDestroyed(): boolean {\n return this._isDestroyed\n }\n\n public registerLifecyclePass(renderable: Renderable) {\n this.lifecyclePasses.add(renderable)\n }\n\n public unregisterLifecyclePass(renderable: Renderable) {\n this.lifecyclePasses.delete(renderable)\n }\n\n public getLifecyclePasses() {\n return this.lifecyclePasses\n }\n\n public get currentFocusedRenderable(): Renderable | null {\n return this._currentFocusedRenderable\n }\n\n public get currentFocusedEditor(): EditBufferRenderable | null {\n if (!this._currentFocusedRenderable) return null\n if (!isEditBufferRenderable(this._currentFocusedRenderable)) return null\n return this._currentFocusedRenderable\n }\n\n private normalizeClockTime(now: number, fallback: number): number {\n if (Number.isFinite(now)) {\n return now\n }\n\n return Number.isFinite(fallback) ? fallback : 0\n }\n\n private getElapsedMs(now: number, then: number): number {\n if (!Number.isFinite(now) || !Number.isFinite(then)) {\n return 0\n }\n\n return Math.max(now - then, 0)\n }\n\n public focusRenderable(renderable: Renderable) {\n if (this._currentFocusedRenderable === renderable) return\n\n const prev = this.currentFocusedEditor\n\n if (this._currentFocusedRenderable) {\n this._currentFocusedRenderable.blur()\n }\n\n this._currentFocusedRenderable = renderable\n\n const next = this.currentFocusedEditor\n if (prev !== next) {\n this.emit(CliRenderEvents.FOCUSED_EDITOR, next, prev)\n }\n }\n\n private setCapturedRenderable(renderable: Renderable | undefined): void {\n if (this.capturedRenderable === renderable) {\n return\n }\n this.capturedRenderable = renderable\n }\n\n public addToHitGrid(x: number, y: number, width: number, height: number, id: number) {\n if (id !== this.capturedRenderable?.num) {\n this.lib.addToHitGrid(this.rendererPtr, x, y, width, height, id)\n }\n }\n\n public pushHitGridScissorRect(x: number, y: number, width: number, height: number): void {\n this.lib.hitGridPushScissorRect(this.rendererPtr, x, y, width, height)\n }\n\n public popHitGridScissorRect(): void {\n this.lib.hitGridPopScissorRect(this.rendererPtr)\n }\n\n public clearHitGridScissorRects(): void {\n this.lib.hitGridClearScissorRects(this.rendererPtr)\n }\n\n public get widthMethod(): WidthMethod {\n const caps = this.capabilities\n return caps?.unicode === \"wcwidth\" ? \"wcwidth\" : \"unicode\"\n }\n\n private writeOut(chunk: any, encoding?: any, callback?: any): boolean {\n if (this.rendererPtr && this._useThread) {\n const data = typeof chunk === \"string\" ? chunk : (chunk?.toString() ?? \"\")\n this.lib.writeOut(this.rendererPtr, data)\n if (typeof callback === \"function\") {\n process.nextTick(callback)\n }\n return true\n }\n\n return this.realStdoutWrite.call(this.stdout, chunk, encoding, callback)\n }\n\n public requestRender() {\n if (this._controlState === RendererControlState.EXPLICIT_SUSPENDED) {\n return\n }\n\n if (this._isRunning) {\n return\n }\n\n // NOTE: Using a frame callback that causes a re-render while already rendering\n // leads to a continuous loop of renders.\n if (this.rendering) {\n this.immediateRerenderRequested = true\n return\n }\n\n if (!this.updateScheduled && !this.renderTimeout) {\n this.updateScheduled = true\n const now = this.normalizeClockTime(this.clock.now(), this.lastTime)\n const elapsed = this.getElapsedMs(now, this.lastTime)\n const delay = Math.max(this.minTargetFrameTime - elapsed, 0)\n\n if (delay === 0) {\n process.nextTick(() => this.activateFrame())\n return\n }\n\n this.clock.setTimeout(() => this.activateFrame(), delay)\n }\n }\n\n private async activateFrame() {\n if (!this.updateScheduled) {\n this.resolveIdleIfNeeded()\n return\n }\n\n try {\n await this.loop()\n } finally {\n this.updateScheduled = false\n this.resolveIdleIfNeeded()\n }\n }\n\n public get consoleMode(): ConsoleMode {\n return this._useConsole ? \"console-overlay\" : \"disabled\"\n }\n\n public set consoleMode(mode: ConsoleMode) {\n this._useConsole = mode === \"console-overlay\"\n if (this._useConsole) {\n this.console.activate()\n } else {\n this.console.deactivate()\n }\n }\n\n public get isRunning(): boolean {\n return this._isRunning\n }\n\n private isIdleNow(): boolean {\n return (\n !this._isRunning &&\n !this.rendering &&\n !this.renderTimeout &&\n !this.updateScheduled &&\n !this.immediateRerenderRequested\n )\n }\n\n private resolveIdleIfNeeded(): void {\n if (!this.isIdleNow()) return\n const resolvers = this.idleResolvers.splice(0)\n for (const resolve of resolvers) {\n resolve()\n }\n }\n\n public idle(): Promise<void> {\n if (this._isDestroyed) return Promise.resolve()\n if (this.isIdleNow()) return Promise.resolve()\n return new Promise<void>((resolve) => {\n this.idleResolvers.push(resolve)\n })\n }\n\n public get resolution(): PixelResolution | null {\n return this._resolution\n }\n\n public get console(): TerminalConsole {\n return this._console\n }\n\n public get keyInput(): KeyHandler {\n return this._keyHandler\n }\n\n public get _internalKeyInput(): InternalKeyHandler {\n return this._keyHandler\n }\n\n public get terminalWidth(): number {\n return this._terminalWidth\n }\n\n public get terminalHeight(): number {\n return this._terminalHeight\n }\n\n public get useThread(): boolean {\n return this._useThread\n }\n\n public get targetFps(): number {\n return this._targetFps\n }\n\n public set targetFps(targetFps: number) {\n this._targetFps = targetFps\n this.targetFrameTime = 1000 / this._targetFps\n }\n\n public get maxFps(): number {\n return this._maxFps\n }\n\n public set maxFps(maxFps: number) {\n this._maxFps = maxFps\n this.minTargetFrameTime = 1000 / this._maxFps\n }\n\n public get useMouse(): boolean {\n return this._useMouse\n }\n\n public set useMouse(useMouse: boolean) {\n if (this._useMouse === useMouse) return // No change needed\n\n this._useMouse = useMouse\n\n if (useMouse) {\n this.enableMouse()\n } else {\n this.disableMouse()\n }\n }\n\n public get screenMode(): ScreenMode {\n return this._screenMode\n }\n\n public set screenMode(mode: ScreenMode) {\n if (this.externalOutputMode === \"capture-stdout\" && mode !== \"split-footer\") {\n throw new Error('externalOutputMode \"capture-stdout\" requires screenMode \"split-footer\"')\n }\n\n this.applyScreenMode(mode)\n }\n\n public get footerHeight(): number {\n return this._footerHeight\n }\n\n public set footerHeight(footerHeight: number) {\n const normalizedFooterHeight = normalizeFooterHeight(footerHeight)\n if (normalizedFooterHeight === this._footerHeight) {\n return\n }\n\n this._footerHeight = normalizedFooterHeight\n if (this.screenMode === \"split-footer\") {\n this.applyScreenMode(\"split-footer\")\n }\n }\n\n public get externalOutputMode(): ExternalOutputMode {\n return this._externalOutputMode\n }\n\n public set externalOutputMode(mode: ExternalOutputMode) {\n if (mode === \"capture-stdout\" && this.screenMode !== \"split-footer\") {\n throw new Error('externalOutputMode \"capture-stdout\" requires screenMode \"split-footer\"')\n }\n\n this._externalOutputMode = mode\n this.stdout.write = mode === \"capture-stdout\" ? this.interceptStdoutWrite : this.realStdoutWrite\n }\n\n public get liveRequestCount(): number {\n return this.liveRequestCounter\n }\n\n public get currentControlState(): string {\n return this._controlState\n }\n\n public get capabilities(): any | null {\n return this._capabilities\n }\n\n public get themeMode(): ThemeMode | null {\n return this._themeMode\n }\n\n public getDebugInputs(): Array<{ timestamp: string; sequence: string }> {\n return [...this._debugInputs]\n }\n\n public get useKittyKeyboard(): boolean {\n return this.lib.getKittyKeyboardFlags(this.rendererPtr) > 0\n }\n\n public set useKittyKeyboard(use: boolean) {\n const flags = use ? KITTY_FLAG_DISAMBIGUATE | KITTY_FLAG_ALTERNATE_KEYS : 0\n this.lib.setKittyKeyboardFlags(this.rendererPtr, flags)\n }\n\n private interceptStdoutWrite = (chunk: any, encoding?: any, callback?: any): boolean => {\n const text = chunk.toString()\n\n capture.write(\"stdout\", text)\n if (this._splitHeight > 0) {\n this.requestRender()\n }\n\n if (typeof callback === \"function\") {\n process.nextTick(callback)\n }\n\n return true\n }\n\n private applyScreenMode(screenMode: ScreenMode, emitResize: boolean = true, requestRender: boolean = true): void {\n const prevScreenMode = this._screenMode\n const prevSplitHeight = this._splitHeight\n const nextSplitHeight = screenMode === \"split-footer\" ? this._footerHeight : 0\n\n if (prevScreenMode === screenMode && prevSplitHeight === nextSplitHeight) {\n return\n }\n\n const prevUseAlternateScreen = prevScreenMode === \"alternate-screen\"\n const nextUseAlternateScreen = screenMode === \"alternate-screen\"\n const terminalScreenModeChanged = this._terminalIsSetup && prevUseAlternateScreen !== nextUseAlternateScreen\n const leavingSplitFooter = prevSplitHeight > 0 && nextSplitHeight === 0\n\n if (this._terminalIsSetup && leavingSplitFooter) {\n this.flushStdoutCache(this._terminalHeight, true)\n }\n\n if (this._terminalIsSetup && !terminalScreenModeChanged) {\n if (prevSplitHeight === 0 && nextSplitHeight > 0) {\n const freedLines = this._terminalHeight - nextSplitHeight\n const scrollDown = ANSI.scrollDown(freedLines)\n this.writeOut(scrollDown)\n } else if (prevSplitHeight > nextSplitHeight && nextSplitHeight > 0) {\n const freedLines = prevSplitHeight - nextSplitHeight\n const scrollDown = ANSI.scrollDown(freedLines)\n this.writeOut(scrollDown)\n } else if (prevSplitHeight < nextSplitHeight && prevSplitHeight > 0) {\n const additionalLines = nextSplitHeight - prevSplitHeight\n const scrollUp = ANSI.scrollUp(additionalLines)\n this.writeOut(scrollUp)\n }\n }\n\n if (prevSplitHeight === 0 && nextSplitHeight > 0) {\n capture.on(\"write\", this.captureCallback)\n } else if (prevSplitHeight > 0 && nextSplitHeight === 0) {\n capture.off(\"write\", this.captureCallback)\n }\n\n this._screenMode = screenMode\n this._splitHeight = nextSplitHeight\n this.renderOffset = nextSplitHeight > 0 ? this._terminalHeight - nextSplitHeight : 0\n this.width = this._terminalWidth\n this.height = nextSplitHeight > 0 ? nextSplitHeight : this._terminalHeight\n\n this.lib.setRenderOffset(this.rendererPtr, this.renderOffset)\n this.lib.resizeRenderer(this.rendererPtr, this.width, this.height)\n this.nextRenderBuffer = this.lib.getNextBuffer(this.rendererPtr)\n this.currentRenderBuffer = this.lib.getCurrentBuffer(this.rendererPtr)\n\n this._console.resize(this.width, this.height)\n this.root.resize(this.width, this.height)\n\n if (terminalScreenModeChanged) {\n this.lib.suspendRenderer(this.rendererPtr)\n this.lib.setupTerminal(this.rendererPtr, nextUseAlternateScreen)\n\n if (this._useMouse) {\n this.enableMouse()\n }\n }\n\n if (emitResize) {\n this.emit(CliRenderEvents.RESIZE, this.width, this.height)\n }\n\n if (requestRender) {\n this.requestRender()\n }\n }\n\n // TODO: Move this to native\n private flushStdoutCache(space: number, force: boolean = false): boolean {\n if (capture.size === 0 && !force) return false\n\n const output = capture.claimOutput()\n\n const rendererStartLine = this._terminalHeight - this._splitHeight\n const flush = ANSI.moveCursorAndClear(rendererStartLine, 1)\n\n const outputLine = this._terminalHeight - this._splitHeight\n const move = ANSI.moveCursor(outputLine, 1)\n\n let clear = \"\"\n if (space > 0) {\n const backgroundColor = this.backgroundColor.toInts()\n const newlines = \" \".repeat(this.width) + \"\\n\".repeat(space)\n // Check if background is transparent (alpha = 0)\n if (backgroundColor[3] === 0) {\n clear = newlines\n } else {\n clear =\n ANSI.setRgbBackground(backgroundColor[0], backgroundColor[1], backgroundColor[2]) +\n newlines +\n ANSI.resetBackground\n }\n }\n\n this.writeOut(flush + move + output + clear)\n\n return true\n }\n\n private enableMouse(): void {\n this._useMouse = true\n this.lib.enableMouse(this.rendererPtr, this.enableMouseMovement)\n }\n\n private disableMouse(): void {\n this._useMouse = false\n this.setCapturedRenderable(undefined)\n this.stdinParser?.resetMouseState()\n this.lib.disableMouse(this.rendererPtr)\n }\n\n public enableKittyKeyboard(flags: number = 0b00011): void {\n this.lib.enableKittyKeyboard(this.rendererPtr, flags)\n this.updateStdinParserProtocolContext({ kittyKeyboardEnabled: true })\n }\n\n public disableKittyKeyboard(): void {\n this.lib.disableKittyKeyboard(this.rendererPtr)\n this.updateStdinParserProtocolContext({ kittyKeyboardEnabled: false }, true)\n }\n\n public set useThread(useThread: boolean) {\n this._useThread = useThread\n this.lib.setUseThread(this.rendererPtr, useThread)\n }\n\n // TODO: All input management may move to native when zig finally has async io support again,\n // without rolling a full event loop\n public async setupTerminal(): Promise<void> {\n if (this._terminalIsSetup) return\n this._terminalIsSetup = true\n\n this.updateStdinParserProtocolContext({\n privateCapabilityRepliesActive: true,\n explicitWidthCprActive: true,\n })\n this.lib.setupTerminal(this.rendererPtr, this._screenMode === \"alternate-screen\")\n this._capabilities = this.lib.getTerminalCapabilities(this.rendererPtr)\n\n if (this.debugOverlay.enabled) {\n this.lib.setDebugOverlay(this.rendererPtr, true, this.debugOverlay.corner)\n if (!this.memorySnapshotInterval) {\n this.memorySnapshotInterval = 3000\n this.startMemorySnapshotTimer()\n this.automaticMemorySnapshot = true\n }\n }\n\n this.capabilityTimeoutId = this.clock.setTimeout(() => {\n this.capabilityTimeoutId = null\n this.removeInputHandler(this.capabilityHandler)\n this.updateStdinParserProtocolContext(\n {\n privateCapabilityRepliesActive: false,\n explicitWidthCprActive: false,\n },\n true,\n )\n }, 5000)\n\n if (this._useMouse) {\n this.enableMouse()\n }\n\n this.queryPixelResolution()\n }\n\n private stdinListener: (chunk: Buffer | string) => void = ((chunk: Buffer | string) => {\n const data = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)\n if (!this.stdinParser) return\n\n try {\n this.stdinParser.push(data)\n this.drainStdinParser()\n } catch (error) {\n this.handleStdinParserFailure(error)\n }\n }).bind(this)\n\n public addInputHandler(handler: (sequence: string) => boolean): void {\n this.sequenceHandlers.push(handler)\n }\n\n public prependInputHandler(handler: (sequence: string) => boolean): void {\n this.sequenceHandlers.unshift(handler)\n }\n\n public removeInputHandler(handler: (sequence: string) => boolean): void {\n this.sequenceHandlers = this.sequenceHandlers.filter((candidate) => candidate !== handler)\n }\n\n private updateStdinParserProtocolContext(patch: Partial<StdinParserProtocolContext>, drain = false): void {\n if (!this.stdinParser) return\n this.stdinParser.updateProtocolContext(patch)\n if (drain) this.drainStdinParser()\n }\n\n public subscribeOsc(handler: (sequence: string) => void): () => void {\n this.oscSubscribers.add(handler)\n return () => {\n this.oscSubscribers.delete(handler)\n }\n }\n\n private capabilityHandler: (sequence: string) => boolean = ((sequence: string) => {\n if (isCapabilityResponse(sequence)) {\n this.lib.processCapabilityResponse(this.rendererPtr, sequence)\n this._capabilities = this.lib.getTerminalCapabilities(this.rendererPtr)\n this.emit(CliRenderEvents.CAPABILITIES, this._capabilities)\n return true\n }\n return false\n }).bind(this)\n\n private focusHandler: (sequence: string) => boolean = ((sequence: string) => {\n if (sequence === \"\\x1b[I\") {\n // When the terminal regains focus, some terminal emulators (notably\n // Windows Terminal / ConPTY) may have stripped DEC private modes like\n // mouse tracking, bracketed paste, and focus tracking itself while the\n // window was unfocused.\n if (this.shouldRestoreModesOnNextFocus) {\n this.lib.restoreTerminalModes(this.rendererPtr)\n this.shouldRestoreModesOnNextFocus = false\n }\n if (this._terminalFocusState !== true) {\n this._terminalFocusState = true\n this.emit(CliRenderEvents.FOCUS)\n }\n return true\n }\n if (sequence === \"\\x1b[O\") {\n this.shouldRestoreModesOnNextFocus = true\n if (this._terminalFocusState !== false) {\n this._terminalFocusState = false\n this.emit(CliRenderEvents.BLUR)\n }\n return true\n }\n return false\n }).bind(this)\n\n private themeModeHandler: (sequence: string) => boolean = ((sequence: string) => {\n if (sequence === \"\\x1b[?997;1n\") {\n if (this._themeMode !== \"dark\") {\n this._themeMode = \"dark\"\n this.emit(CliRenderEvents.THEME_MODE, \"dark\")\n }\n return true\n }\n if (sequence === \"\\x1b[?997;2n\") {\n if (this._themeMode !== \"light\") {\n this._themeMode = \"light\"\n this.emit(CliRenderEvents.THEME_MODE, \"light\")\n }\n return true\n }\n return false\n }).bind(this)\n\n private dispatchSequenceHandlers(sequence: string): boolean {\n if (this._debugModeEnabled) {\n this._debugInputs.push({\n timestamp: new Date().toISOString(),\n sequence,\n })\n }\n\n for (const handler of this.sequenceHandlers) {\n if (handler(sequence)) {\n return true\n }\n }\n\n return false\n }\n\n private drainStdinParser(): void {\n if (!this.stdinParser) return\n\n this.stdinParser.drain((event) => {\n this.handleStdinEvent(event)\n })\n }\n\n private handleStdinEvent(event: StdinEvent): void {\n switch (event.type) {\n case \"key\":\n if (this.dispatchSequenceHandlers(event.raw)) {\n return\n }\n\n this._keyHandler.processParsedKey(event.key)\n return\n case \"mouse\":\n if (this._useMouse && this.processSingleMouseEvent(event.event)) {\n return\n }\n\n this.dispatchSequenceHandlers(event.raw)\n return\n case \"paste\":\n this._keyHandler.processPaste(event.bytes, event.metadata)\n return\n case \"response\":\n if (event.protocol === \"osc\") {\n for (const subscriber of this.oscSubscribers) {\n subscriber(event.sequence)\n }\n }\n\n this.dispatchSequenceHandlers(event.sequence)\n return\n }\n }\n\n private handleStdinParserFailure(error: unknown): void {\n if (!this.hasLoggedStdinParserError) {\n this.hasLoggedStdinParserError = true\n if (process.env.NODE_ENV !== \"test\") {\n console.error(\"[stdin-parser-error] parser failure, resetting parser\", error)\n }\n }\n\n try {\n this.stdinParser?.reset()\n } catch (resetError) {\n console.error(\"stdin parser reset failed after parser error\", resetError)\n }\n }\n\n private setupInput(): void {\n for (const handler of this.prependedInputHandlers) {\n this.addInputHandler(handler)\n }\n\n this.addInputHandler((sequence: string) => {\n if (isPixelResolutionResponse(sequence) && this.waitingForPixelResolution) {\n const resolution = parsePixelResolution(sequence)\n if (resolution) {\n this._resolution = resolution\n }\n this.waitingForPixelResolution = false\n this.updateStdinParserProtocolContext({ pixelResolutionQueryActive: false }, true)\n return true\n }\n return false\n })\n this.addInputHandler(this.capabilityHandler)\n this.addInputHandler(this.focusHandler)\n this.addInputHandler(this.themeModeHandler)\n\n if (this.stdin.setRawMode) {\n this.stdin.setRawMode(true)\n }\n\n this.stdin.on(\"data\", this.stdinListener)\n this.stdin.resume()\n }\n\n private dispatchMouseEvent(\n target: Renderable,\n attributes: RawMouseEvent & { source?: Renderable; isDragging?: boolean },\n ): MouseEvent {\n const event = new MouseEvent(target, attributes)\n target.processMouseEvent(event)\n\n if (this.autoFocus && event.type === \"down\" && event.button === MouseButton.LEFT && !event.defaultPrevented) {\n let current: Renderable | null = target\n while (current) {\n if (current.focusable) {\n current.focus()\n break\n }\n current = current.parent\n }\n }\n\n return event\n }\n\n private processSingleMouseEvent(mouseEvent: RawMouseEvent): boolean {\n if (this._splitHeight > 0) {\n if (mouseEvent.y < this.renderOffset) {\n return false\n }\n mouseEvent.y -= this.renderOffset\n }\n\n this._latestPointer.x = mouseEvent.x\n this._latestPointer.y = mouseEvent.y\n this._hasPointer = true\n this._lastPointerModifiers = mouseEvent.modifiers\n\n if (this._console.visible) {\n const consoleBounds = this._console.bounds\n if (\n mouseEvent.x >= consoleBounds.x &&\n mouseEvent.x < consoleBounds.x + consoleBounds.width &&\n mouseEvent.y >= consoleBounds.y &&\n mouseEvent.y < consoleBounds.y + consoleBounds.height\n ) {\n const event = new MouseEvent(null, mouseEvent)\n const handled = this._console.handleMouse(event)\n if (handled) return true\n }\n }\n\n if (mouseEvent.type === \"scroll\") {\n const maybeRenderableId = this.hitTest(mouseEvent.x, mouseEvent.y)\n const maybeRenderable = Renderable.renderablesByNumber.get(maybeRenderableId)\n const fallbackTarget =\n this._currentFocusedRenderable &&\n !this._currentFocusedRenderable.isDestroyed &&\n this._currentFocusedRenderable.focused\n ? this._currentFocusedRenderable\n : null\n const scrollTarget = maybeRenderable ?? fallbackTarget\n\n if (scrollTarget) {\n const event = new MouseEvent(scrollTarget, mouseEvent)\n scrollTarget.processMouseEvent(event)\n }\n return true\n }\n\n const maybeRenderableId = this.hitTest(mouseEvent.x, mouseEvent.y)\n const sameElement = maybeRenderableId === this.lastOverRenderableNum\n this.lastOverRenderableNum = maybeRenderableId\n const maybeRenderable = Renderable.renderablesByNumber.get(maybeRenderableId)\n\n if (\n mouseEvent.type === \"down\" &&\n mouseEvent.button === MouseButton.LEFT &&\n !this.currentSelection?.isDragging &&\n !mouseEvent.modifiers.ctrl\n ) {\n const canStartSelection = Boolean(\n maybeRenderable &&\n maybeRenderable.selectable &&\n !maybeRenderable.isDestroyed &&\n maybeRenderable.shouldStartSelection(mouseEvent.x, mouseEvent.y),\n )\n\n if (canStartSelection && maybeRenderable) {\n this.startSelection(maybeRenderable, mouseEvent.x, mouseEvent.y)\n this.dispatchMouseEvent(maybeRenderable, mouseEvent)\n return true\n }\n }\n\n if (mouseEvent.type === \"drag\" && this.currentSelection?.isDragging) {\n this.updateSelection(maybeRenderable, mouseEvent.x, mouseEvent.y)\n\n if (maybeRenderable) {\n const event = new MouseEvent(maybeRenderable, { ...mouseEvent, isDragging: true })\n maybeRenderable.processMouseEvent(event)\n }\n\n return true\n }\n\n if (mouseEvent.type === \"up\" && this.currentSelection?.isDragging) {\n if (maybeRenderable) {\n const event = new MouseEvent(maybeRenderable, { ...mouseEvent, isDragging: true })\n maybeRenderable.processMouseEvent(event)\n }\n\n this.finishSelection()\n return true\n }\n\n if (mouseEvent.type === \"down\" && mouseEvent.button === MouseButton.LEFT && this.currentSelection) {\n if (mouseEvent.modifiers.ctrl) {\n this.currentSelection.isDragging = true\n this.updateSelection(maybeRenderable, mouseEvent.x, mouseEvent.y)\n return true\n }\n }\n\n if (!sameElement && (mouseEvent.type === \"drag\" || mouseEvent.type === \"move\")) {\n if (\n this.lastOverRenderable &&\n this.lastOverRenderable !== this.capturedRenderable &&\n !this.lastOverRenderable.isDestroyed\n ) {\n const event = new MouseEvent(this.lastOverRenderable, { ...mouseEvent, type: \"out\" })\n this.lastOverRenderable.processMouseEvent(event)\n }\n this.lastOverRenderable = maybeRenderable\n if (maybeRenderable) {\n const event = new MouseEvent(maybeRenderable, {\n ...mouseEvent,\n type: \"over\",\n source: this.capturedRenderable,\n })\n maybeRenderable.processMouseEvent(event)\n }\n }\n\n if (this.capturedRenderable && mouseEvent.type !== \"up\") {\n const event = new MouseEvent(this.capturedRenderable, mouseEvent)\n this.capturedRenderable.processMouseEvent(event)\n return true\n }\n\n if (this.capturedRenderable && mouseEvent.type === \"up\") {\n const event = new MouseEvent(this.capturedRenderable, { ...mouseEvent, type: \"drag-end\" })\n this.capturedRenderable.processMouseEvent(event)\n this.capturedRenderable.processMouseEvent(new MouseEvent(this.capturedRenderable, mouseEvent))\n if (maybeRenderable) {\n const event = new MouseEvent(maybeRenderable, {\n ...mouseEvent,\n type: \"drop\",\n source: this.capturedRenderable,\n })\n maybeRenderable.processMouseEvent(event)\n }\n this.lastOverRenderable = this.capturedRenderable\n this.lastOverRenderableNum = this.capturedRenderable.num\n this.setCapturedRenderable(undefined)\n // Dropping the renderable needs to push another frame when the renderer is not live\n // to update the hit grid, otherwise capturedRenderable won't be in the hit grid and will not receive mouse events\n this.requestRender()\n }\n\n let event: MouseEvent | undefined\n if (maybeRenderable) {\n if (mouseEvent.type === \"drag\" && mouseEvent.button === MouseButton.LEFT) {\n this.setCapturedRenderable(maybeRenderable)\n } else {\n this.setCapturedRenderable(undefined)\n }\n event = this.dispatchMouseEvent(maybeRenderable, mouseEvent)\n } else {\n this.setCapturedRenderable(undefined)\n this.lastOverRenderable = undefined\n }\n\n if (!event?.defaultPrevented && mouseEvent.type === \"down\" && this.currentSelection) {\n this.clearSelection()\n }\n\n return true\n }\n\n /**\n * Recheck hover state after hit grid changes.\n * Called after render when native code detects the hit grid changed.\n * Fires out/over events if the element under the cursor changed.\n */\n private recheckHoverState(): void {\n if (this._isDestroyed || !this._hasPointer) return\n if (this.capturedRenderable) return\n\n const hitId = this.hitTest(this._latestPointer.x, this._latestPointer.y)\n const hitRenderable = Renderable.renderablesByNumber.get(hitId)\n const lastOver = this.lastOverRenderable\n\n // No change\n if (lastOver?.num === hitId) {\n this.lastOverRenderableNum = hitId\n return\n }\n\n const baseEvent: RawMouseEvent = {\n type: \"move\",\n button: 0,\n x: this._latestPointer.x,\n y: this._latestPointer.y,\n modifiers: this._lastPointerModifiers,\n }\n\n // Fire out on old element\n if (lastOver && !lastOver.isDestroyed) {\n const event = new MouseEvent(lastOver, { ...baseEvent, type: \"out\" })\n lastOver.processMouseEvent(event)\n }\n\n this.lastOverRenderable = hitRenderable\n this.lastOverRenderableNum = hitId\n\n // Fire over on new element\n if (hitRenderable) {\n const event = new MouseEvent(hitRenderable, {\n ...baseEvent,\n type: \"over\",\n })\n hitRenderable.processMouseEvent(event)\n }\n }\n public setMousePointer(style: MousePointerStyle): void {\n this._currentMousePointerStyle = style\n this.lib.setCursorStyleOptions(this.rendererPtr, { cursor: style })\n }\n\n public hitTest(x: number, y: number): number {\n return this.lib.checkHit(this.rendererPtr, x, y)\n }\n\n private takeMemorySnapshot(): void {\n if (this._isDestroyed) return\n\n const memoryUsage = process.memoryUsage()\n this.lastMemorySnapshot = {\n heapUsed: memoryUsage.heapUsed,\n heapTotal: memoryUsage.heapTotal,\n arrayBuffers: memoryUsage.arrayBuffers,\n }\n\n this.lib.updateMemoryStats(\n this.rendererPtr,\n this.lastMemorySnapshot.heapUsed,\n this.lastMemorySnapshot.heapTotal,\n this.lastMemorySnapshot.arrayBuffers,\n )\n\n this.emit(CliRenderEvents.MEMORY_SNAPSHOT, this.lastMemorySnapshot)\n }\n\n private startMemorySnapshotTimer(): void {\n this.stopMemorySnapshotTimer()\n\n this.memorySnapshotTimer = this.clock.setInterval(() => {\n this.takeMemorySnapshot()\n }, this.memorySnapshotInterval)\n }\n\n private stopMemorySnapshotTimer(): void {\n if (this.memorySnapshotTimer) {\n this.clock.clearInterval(this.memorySnapshotTimer)\n this.memorySnapshotTimer = null\n }\n }\n\n public setMemorySnapshotInterval(interval: number): void {\n this.memorySnapshotInterval = interval\n\n if (this._isRunning && interval > 0) {\n this.startMemorySnapshotTimer()\n } else if (interval <= 0 && this.memorySnapshotTimer) {\n this.clock.clearInterval(this.memorySnapshotTimer)\n this.memorySnapshotTimer = null\n }\n }\n\n private handleResize(width: number, height: number): void {\n if (this._isDestroyed) return\n if (this._splitHeight > 0) {\n this.processResize(width, height)\n return\n }\n\n if (this.resizeTimeoutId !== null) {\n this.clock.clearTimeout(this.resizeTimeoutId)\n this.resizeTimeoutId = null\n }\n\n this.resizeTimeoutId = this.clock.setTimeout(() => {\n this.resizeTimeoutId = null\n this.processResize(width, height)\n }, this.resizeDebounceDelay)\n }\n\n private queryPixelResolution() {\n this.waitingForPixelResolution = true\n this.updateStdinParserProtocolContext({ pixelResolutionQueryActive: true })\n this.lib.queryPixelResolution(this.rendererPtr)\n }\n\n private processResize(width: number, height: number): void {\n if (width === this._terminalWidth && height === this._terminalHeight) return\n\n const prevWidth = this._terminalWidth\n\n this._terminalWidth = width\n this._terminalHeight = height\n this.queryPixelResolution()\n\n this.setCapturedRenderable(undefined)\n this.stdinParser?.resetMouseState()\n\n if (this._splitHeight > 0) {\n // TODO: Handle resizing split mode properly\n if (width < prevWidth) {\n const start = this._terminalHeight - this._splitHeight * 2\n const flush = ANSI.moveCursorAndClear(start, 1)\n this.writeOut(flush)\n }\n this.renderOffset = height - this._splitHeight\n this.width = width\n this.height = this._splitHeight\n this.currentRenderBuffer.clear(this.backgroundColor)\n this.lib.setRenderOffset(this.rendererPtr, this.renderOffset)\n } else {\n this.width = width\n this.height = height\n }\n\n this.lib.resizeRenderer(this.rendererPtr, this.width, this.height)\n this.nextRenderBuffer = this.lib.getNextBuffer(this.rendererPtr)\n this.currentRenderBuffer = this.lib.getCurrentBuffer(this.rendererPtr)\n this._console.resize(this.width, this.height)\n this.root.resize(this.width, this.height)\n this.emit(CliRenderEvents.RESIZE, this.width, this.height)\n this.requestRender()\n }\n\n public setBackgroundColor(color: ColorInput): void {\n const parsedColor = parseColor(color)\n this.lib.setBackgroundColor(this.rendererPtr, parsedColor as RGBA)\n this.backgroundColor = parsedColor as RGBA\n this.nextRenderBuffer.clear(parsedColor as RGBA)\n this.requestRender()\n }\n\n public toggleDebugOverlay(): void {\n const willBeEnabled = !this.debugOverlay.enabled\n\n if (willBeEnabled && !this.memorySnapshotInterval) {\n this.memorySnapshotInterval = 3000\n this.startMemorySnapshotTimer()\n this.automaticMemorySnapshot = true\n } else if (!willBeEnabled && this.automaticMemorySnapshot) {\n this.stopMemorySnapshotTimer()\n this.memorySnapshotInterval = 0\n this.automaticMemorySnapshot = false\n }\n\n this.debugOverlay.enabled = !this.debugOverlay.enabled\n this.lib.setDebugOverlay(this.rendererPtr, this.debugOverlay.enabled, this.debugOverlay.corner)\n this.emit(CliRenderEvents.DEBUG_OVERLAY_TOGGLE, this.debugOverlay.enabled)\n this.requestRender()\n }\n\n public configureDebugOverlay(options: { enabled?: boolean; corner?: DebugOverlayCorner }): void {\n this.debugOverlay.enabled = options.enabled ?? this.debugOverlay.enabled\n this.debugOverlay.corner = options.corner ?? this.debugOverlay.corner\n this.lib.setDebugOverlay(this.rendererPtr, this.debugOverlay.enabled, this.debugOverlay.corner)\n this.requestRender()\n }\n\n public setTerminalTitle(title: string): void {\n this.lib.setTerminalTitle(this.rendererPtr, title)\n }\n\n public copyToClipboardOSC52(text: string, target?: ClipboardTarget): boolean {\n return this.clipboard.copyToClipboardOSC52(text, target)\n }\n\n public clearClipboardOSC52(target?: ClipboardTarget): boolean {\n return this.clipboard.clearClipboardOSC52(target)\n }\n\n public isOsc52Supported(): boolean {\n return this._capabilities?.osc52 ?? this.clipboard.isOsc52Supported()\n }\n\n public dumpHitGrid(): void {\n this.lib.dumpHitGrid(this.rendererPtr)\n }\n\n public dumpBuffers(timestamp?: number): void {\n this.lib.dumpBuffers(this.rendererPtr, timestamp)\n }\n\n public dumpStdoutBuffer(timestamp?: number): void {\n this.lib.dumpStdoutBuffer(this.rendererPtr, timestamp)\n }\n\n public static setCursorPosition(renderer: CliRenderer, x: number, y: number, visible: boolean = true): void {\n const lib = resolveRenderLib()\n lib.setCursorPosition(renderer.rendererPtr, x, y, visible)\n }\n\n public static setCursorStyle(renderer: CliRenderer, options: CursorStyleOptions): void {\n const lib = resolveRenderLib()\n lib.setCursorStyleOptions(renderer.rendererPtr, options)\n if (options.cursor !== undefined) {\n renderer._currentMousePointerStyle = options.cursor\n }\n }\n\n public static setCursorColor(renderer: CliRenderer, color: RGBA): void {\n const lib = resolveRenderLib()\n lib.setCursorColor(renderer.rendererPtr, color)\n }\n\n public setCursorPosition(x: number, y: number, visible: boolean = true): void {\n this.lib.setCursorPosition(this.rendererPtr, x, y, visible)\n }\n\n public setCursorStyle(options: CursorStyleOptions): void {\n this.lib.setCursorStyleOptions(this.rendererPtr, options)\n if (options.cursor !== undefined) {\n this._currentMousePointerStyle = options.cursor\n }\n }\n\n public setCursorColor(color: RGBA): void {\n this.lib.setCursorColor(this.rendererPtr, color)\n }\n\n public getCursorState() {\n return this.lib.getCursorState(this.rendererPtr)\n }\n\n public addPostProcessFn(processFn: (buffer: OptimizedBuffer, deltaTime: number) => void): void {\n this.postProcessFns.push(processFn)\n }\n\n public removePostProcessFn(processFn: (buffer: OptimizedBuffer, deltaTime: number) => void): void {\n this.postProcessFns = this.postProcessFns.filter((fn) => fn !== processFn)\n }\n\n public clearPostProcessFns(): void {\n this.postProcessFns = []\n }\n\n public setFrameCallback(callback: (deltaTime: number) => Promise<void>): void {\n this.frameCallbacks.push(callback)\n }\n\n public removeFrameCallback(callback: (deltaTime: number) => Promise<void>): void {\n this.frameCallbacks = this.frameCallbacks.filter((cb) => cb !== callback)\n }\n\n public clearFrameCallbacks(): void {\n this.frameCallbacks = []\n }\n\n public requestLive(): void {\n this.liveRequestCounter++\n\n if (this._controlState === RendererControlState.IDLE && this.liveRequestCounter > 0) {\n this._controlState = RendererControlState.AUTO_STARTED\n this.internalStart()\n }\n }\n\n public dropLive(): void {\n this.liveRequestCounter = Math.max(0, this.liveRequestCounter - 1)\n\n if (this._controlState === RendererControlState.AUTO_STARTED && this.liveRequestCounter === 0) {\n this._controlState = RendererControlState.IDLE\n this.internalPause()\n }\n }\n\n public start(): void {\n this._controlState = RendererControlState.EXPLICIT_STARTED\n this.internalStart()\n }\n\n public auto(): void {\n this._controlState = this._isRunning ? RendererControlState.AUTO_STARTED : RendererControlState.IDLE\n }\n\n private internalStart(): void {\n if (!this._isRunning && !this._isDestroyed) {\n this._isRunning = true\n\n // Invalidate any queued idle one-shot frame.\n // start()/live/resume transition to the continuous loop, so queued\n // activateFrame callbacks must no-op via !updateScheduled.\n this.updateScheduled = false\n\n if (this.memorySnapshotInterval > 0) {\n this.startMemorySnapshotTimer()\n }\n\n this.startRenderLoop()\n }\n }\n\n public pause(): void {\n this._controlState = RendererControlState.EXPLICIT_PAUSED\n this.internalPause()\n }\n\n public suspend(): void {\n this._previousControlState = this._controlState\n\n this._controlState = RendererControlState.EXPLICIT_SUSPENDED\n this.internalPause()\n\n this._suspendedMouseEnabled = this._useMouse\n\n this.disableMouse()\n this.removeExitListeners()\n this.waitingForPixelResolution = false\n this.updateStdinParserProtocolContext({\n privateCapabilityRepliesActive: false,\n pixelResolutionQueryActive: false,\n explicitWidthCprActive: false,\n })\n this.stdinParser?.reset()\n this.stdin.removeListener(\"data\", this.stdinListener)\n this.lib.suspendRenderer(this.rendererPtr)\n\n if (this.stdin.setRawMode) {\n this.stdin.setRawMode(false)\n }\n\n this.stdin.pause()\n }\n\n public resume(): void {\n if (this.stdin.setRawMode) {\n this.stdin.setRawMode(true)\n }\n\n // Drain any input buffered during suspension before registering the\n // listener. Adding a \"data\" listener can auto-resume a Readable, so the\n // drain must come first while the stream is still paused and read()\n // pulls from the internal buffer rather than being a flowing-mode no-op.\n while (this.stdin.read() !== null) {}\n this.stdin.on(\"data\", this.stdinListener)\n this.stdin.resume()\n this.addExitListeners()\n\n this.lib.resumeRenderer(this.rendererPtr)\n\n if (this._suspendedMouseEnabled) {\n this.enableMouse()\n }\n\n this.currentRenderBuffer.clear(this.backgroundColor)\n this._controlState = this._previousControlState\n\n if (\n this._previousControlState === RendererControlState.AUTO_STARTED ||\n this._previousControlState === RendererControlState.EXPLICIT_STARTED\n ) {\n this.internalStart()\n } else {\n this.requestRender()\n }\n }\n\n private internalPause(): void {\n this._isRunning = false\n\n if (this.renderTimeout) {\n this.clock.clearTimeout(this.renderTimeout)\n this.renderTimeout = null\n }\n\n if (!this.rendering) {\n this.resolveIdleIfNeeded()\n }\n }\n\n public stop(): void {\n this._controlState = RendererControlState.EXPLICIT_STOPPED\n this.internalStop()\n }\n\n private internalStop(): void {\n if (this.isRunning && !this._isDestroyed) {\n this._isRunning = false\n\n if (this.memorySnapshotTimer) {\n this.clock.clearInterval(this.memorySnapshotTimer)\n this.memorySnapshotTimer = null\n }\n\n if (this.renderTimeout) {\n this.clock.clearTimeout(this.renderTimeout)\n this.renderTimeout = null\n }\n\n // If we're currently rendering, the frame will resolve idle when it completes\n // Otherwise, resolve immediately\n if (!this.rendering) {\n this.resolveIdleIfNeeded()\n }\n }\n }\n\n public destroy(): void {\n if (this._isDestroyed) return\n this._isDestroyed = true\n this._destroyPending = true\n\n if (this.rendering) {\n // Restore terminal/input state immediately, but defer full native teardown until the frame unwinds.\n this.prepareDestroyDuringRender()\n return\n }\n\n this.finalizeDestroy()\n }\n\n private cleanupBeforeDestroy(): void {\n if (this._destroyCleanupPrepared) return\n this._destroyCleanupPrepared = true\n\n process.removeListener(\"SIGWINCH\", this.sigwinchHandler)\n process.removeListener(\"uncaughtException\", this.handleError)\n process.removeListener(\"unhandledRejection\", this.handleError)\n process.removeListener(\"warning\", this.warningHandler)\n process.removeListener(\"beforeExit\", this.exitHandler)\n capture.removeListener(\"write\", this.captureCallback)\n this.removeExitListeners()\n\n if (this.resizeTimeoutId !== null) {\n this.clock.clearTimeout(this.resizeTimeoutId)\n this.resizeTimeoutId = null\n }\n\n if (this.capabilityTimeoutId !== null) {\n this.clock.clearTimeout(this.capabilityTimeoutId)\n this.capabilityTimeoutId = null\n }\n\n if (this.memorySnapshotTimer) {\n this.clock.clearInterval(this.memorySnapshotTimer)\n this.memorySnapshotTimer = null\n }\n\n if (this.renderTimeout) {\n this.clock.clearTimeout(this.renderTimeout)\n this.renderTimeout = null\n }\n\n this._isRunning = false\n this.waitingForPixelResolution = false\n this.updateStdinParserProtocolContext(\n {\n privateCapabilityRepliesActive: false,\n pixelResolutionQueryActive: false,\n explicitWidthCprActive: false,\n },\n true,\n )\n this.setCapturedRenderable(undefined)\n\n this.stdin.removeListener(\"data\", this.stdinListener)\n if (this.stdin.setRawMode) {\n this.stdin.setRawMode(false)\n }\n\n this.externalOutputMode = \"passthrough\"\n\n if (this._splitHeight > 0) {\n this.flushStdoutCache(this._splitHeight, true)\n }\n }\n\n private prepareDestroyDuringRender(): void {\n this.cleanupBeforeDestroy()\n this.lib.suspendRenderer(this.rendererPtr)\n }\n\n private finalizeDestroy(): void {\n if (this._destroyFinalized) return\n\n this._destroyFinalized = true\n this._destroyPending = false\n\n this.cleanupBeforeDestroy()\n\n // Clean up palette detector\n if (this._paletteDetector) {\n this._paletteDetector.cleanup()\n this._paletteDetector = null\n }\n this._paletteDetectionPromise = null\n this._cachedPalette = null\n\n this.emit(CliRenderEvents.DESTROY)\n\n try {\n this.root.destroyRecursively()\n } catch (e) {\n console.error(\"Error destroying root renderable:\", e instanceof Error ? e.stack : String(e))\n }\n\n this.stdinParser?.destroy()\n this.stdinParser = null\n this.oscSubscribers.clear()\n this._console.destroy()\n\n this.lib.destroyRenderer(this.rendererPtr)\n rendererTracker.removeRenderer(this)\n\n if (this._onDestroy) {\n try {\n this._onDestroy()\n } catch (e) {\n console.error(\"Error in onDestroy callback:\", e instanceof Error ? e.stack : String(e))\n }\n }\n\n // Resolve any pending idle() calls\n this.resolveIdleIfNeeded()\n }\n\n private startRenderLoop(): void {\n if (!this._isRunning) return\n\n this.lastTime = this.normalizeClockTime(this.clock.now(), 0)\n this.frameCount = 0\n this.lastFpsTime = this.lastTime\n this.currentFps = 0\n\n this.loop()\n }\n\n private async loop(): Promise<void> {\n if (this.rendering || this._isDestroyed) return\n this.renderTimeout = null\n\n this.rendering = true\n if (this.renderTimeout) {\n this.clock.clearTimeout(this.renderTimeout)\n this.renderTimeout = null\n }\n try {\n const now = this.normalizeClockTime(this.clock.now(), this.lastTime)\n const elapsed = this.getElapsedMs(now, this.lastTime)\n\n const deltaTime = elapsed\n this.lastTime = now\n\n this.frameCount++\n if (this.getElapsedMs(now, this.lastFpsTime) >= 1000) {\n this.currentFps = this.frameCount\n this.frameCount = 0\n this.lastFpsTime = now\n }\n\n this.renderStats.frameCount++\n this.renderStats.fps = this.currentFps\n const overallStart = performance.now()\n\n const frameRequests = Array.from(this.animationRequest.values())\n this.animationRequest.clear()\n const animationRequestStart = performance.now()\n for (const callback of frameRequests) {\n callback(deltaTime)\n this.dropLive()\n }\n const animationRequestEnd = performance.now()\n const animationRequestTime = animationRequestEnd - animationRequestStart\n\n const start = performance.now()\n for (const frameCallback of this.frameCallbacks) {\n try {\n await frameCallback(deltaTime)\n } catch (error) {\n console.error(\"Error in frame callback:\", error)\n }\n }\n const end = performance.now()\n this.renderStats.frameCallbackTime = end - start\n\n this.root.render(this.nextRenderBuffer, deltaTime)\n\n for (const postProcessFn of this.postProcessFns) {\n postProcessFn(this.nextRenderBuffer, deltaTime)\n }\n\n this._console.renderToBuffer(this.nextRenderBuffer)\n\n // If destroy() was requested during this frame, skip native work and scheduling.\n if (!this._isDestroyed) {\n this.renderNative()\n\n // Check if hit grid changed and recheck hover state if needed\n if (this._useMouse && this.lib.getHitGridDirty(this.rendererPtr)) {\n this.recheckHoverState()\n }\n\n const overallFrameTime = performance.now() - overallStart\n\n // TODO: Add animationRequestTime to stats\n this.lib.updateStats(\n this.rendererPtr,\n overallFrameTime,\n this.renderStats.fps,\n this.renderStats.frameCallbackTime,\n )\n\n if (this.gatherStats) {\n this.collectStatSample(overallFrameTime)\n }\n\n if (this._isRunning || this.immediateRerenderRequested) {\n const targetFrameTime = this.immediateRerenderRequested ? this.minTargetFrameTime : this.targetFrameTime\n const delay = Math.max(1, targetFrameTime - Math.floor(overallFrameTime))\n this.immediateRerenderRequested = false\n this.renderTimeout = this.clock.setTimeout(() => {\n this.renderTimeout = null\n this.loop()\n }, delay)\n } else {\n this.clock.clearTimeout(this.renderTimeout!)\n this.renderTimeout = null\n }\n }\n } finally {\n this.rendering = false\n if (this._destroyPending) {\n this.finalizeDestroy()\n }\n this.resolveIdleIfNeeded()\n }\n }\n\n public intermediateRender(): void {\n this.immediateRerenderRequested = true\n this.loop()\n }\n\n private renderNative(): void {\n if (this.renderingNative) {\n console.error(\"Rendering called concurrently\")\n throw new Error(\"Rendering called concurrently\")\n }\n\n let force = false\n if (this._splitHeight > 0) {\n // TODO: Flickering could maybe be even more reduced by moving the flush to the native layer,\n // to output the flush with the buffered writer, after the render is done.\n force = this.flushStdoutCache(this._splitHeight)\n }\n\n this.renderingNative = true\n this.lib.render(this.rendererPtr, force)\n // this.dumpStdoutBuffer(Date.now())\n this.renderingNative = false\n }\n\n private collectStatSample(frameTime: number): void {\n this.frameTimes.push(frameTime)\n if (this.frameTimes.length > this.maxStatSamples) {\n this.frameTimes.shift()\n }\n }\n\n public getStats(): {\n fps: number\n frameCount: number\n frameTimes: number[]\n averageFrameTime: number\n minFrameTime: number\n maxFrameTime: number\n } {\n const frameTimes = [...this.frameTimes]\n const sum = frameTimes.reduce((acc, time) => acc + time, 0)\n const avg = frameTimes.length ? sum / frameTimes.length : 0\n const min = frameTimes.length ? Math.min(...frameTimes) : 0\n const max = frameTimes.length ? Math.max(...frameTimes) : 0\n\n return {\n fps: this.renderStats.fps,\n frameCount: this.renderStats.frameCount,\n frameTimes,\n averageFrameTime: avg,\n minFrameTime: min,\n maxFrameTime: max,\n }\n }\n\n public resetStats(): void {\n this.frameTimes = []\n this.renderStats.frameCount = 0\n }\n\n public setGatherStats(enabled: boolean): void {\n this.gatherStats = enabled\n if (!enabled) {\n this.frameTimes = []\n }\n }\n\n public getSelection(): Selection | null {\n return this.currentSelection\n }\n\n public get hasSelection(): boolean {\n return !!this.currentSelection\n }\n\n public getSelectionContainer(): Renderable | null {\n return this.selectionContainers.length > 0 ? this.selectionContainers[this.selectionContainers.length - 1] : null\n }\n\n public clearSelection(): void {\n if (this.currentSelection) {\n for (const renderable of this.currentSelection.touchedRenderables) {\n if (renderable.selectable && !renderable.isDestroyed) {\n renderable.onSelectionChanged(null)\n }\n }\n this.currentSelection = null\n }\n this.selectionContainers = []\n }\n\n /**\n * Start a new selection at the given coordinates.\n * Used by both mouse and keyboard selection.\n */\n public startSelection(renderable: Renderable, x: number, y: number): void {\n if (!renderable.selectable) return\n\n this.clearSelection()\n this.selectionContainers.push(renderable.parent || this.root)\n this.currentSelection = new Selection(renderable, { x, y }, { x, y })\n this.currentSelection.isStart = true\n\n this.notifySelectablesOfSelectionChange()\n }\n\n public updateSelection(\n currentRenderable: Renderable | undefined,\n x: number,\n y: number,\n options?: { finishDragging?: boolean },\n ): void {\n if (this.currentSelection) {\n this.currentSelection.isStart = false\n this.currentSelection.focus = { x, y }\n\n if (options?.finishDragging) {\n this.currentSelection.isDragging = false\n }\n\n if (this.selectionContainers.length > 0) {\n const currentContainer = this.selectionContainers[this.selectionContainers.length - 1]\n\n if (!currentRenderable || !this.isWithinContainer(currentRenderable, currentContainer)) {\n const parentContainer = currentContainer.parent || this.root\n this.selectionContainers.push(parentContainer)\n } else if (currentRenderable && this.selectionContainers.length > 1) {\n let containerIndex = this.selectionContainers.indexOf(currentRenderable)\n\n if (containerIndex === -1) {\n const immediateParent = currentRenderable.parent || this.root\n containerIndex = this.selectionContainers.indexOf(immediateParent)\n }\n\n if (containerIndex !== -1 && containerIndex < this.selectionContainers.length - 1) {\n this.selectionContainers = this.selectionContainers.slice(0, containerIndex + 1)\n }\n }\n }\n\n this.notifySelectablesOfSelectionChange()\n }\n }\n\n public requestSelectionUpdate(): void {\n if (this.currentSelection?.isDragging) {\n const pointer = this._latestPointer\n\n const maybeRenderableId = this.hitTest(pointer.x, pointer.y)\n const maybeRenderable = Renderable.renderablesByNumber.get(maybeRenderableId)\n\n this.updateSelection(maybeRenderable, pointer.x, pointer.y)\n }\n }\n\n private isWithinContainer(renderable: Renderable, container: Renderable): boolean {\n let current: Renderable | null = renderable\n while (current) {\n if (current === container) return true\n current = current.parent\n }\n return false\n }\n\n private finishSelection(): void {\n if (this.currentSelection) {\n this.currentSelection.isDragging = false\n this.emit(CliRenderEvents.SELECTION, this.currentSelection)\n this.notifySelectablesOfSelectionChange()\n }\n }\n\n private notifySelectablesOfSelectionChange(): void {\n const selectedRenderables: Renderable[] = []\n const touchedRenderables: Renderable[] = []\n const currentContainer =\n this.selectionContainers.length > 0 ? this.selectionContainers[this.selectionContainers.length - 1] : this.root\n\n if (this.currentSelection) {\n this.walkSelectableRenderables(\n currentContainer,\n this.currentSelection.bounds,\n selectedRenderables,\n touchedRenderables,\n )\n\n for (const renderable of this.currentSelection.touchedRenderables) {\n if (!touchedRenderables.includes(renderable) && !renderable.isDestroyed) {\n renderable.onSelectionChanged(null)\n }\n }\n\n this.currentSelection.updateSelectedRenderables(selectedRenderables)\n this.currentSelection.updateTouchedRenderables(touchedRenderables)\n }\n }\n\n private walkSelectableRenderables(\n container: Renderable,\n selectionBounds: ViewportBounds,\n selectedRenderables: Renderable[],\n touchedRenderables: Renderable[],\n ): void {\n const children = getObjectsInViewport<Renderable>(\n selectionBounds,\n container.getChildrenSortedByPrimaryAxis(),\n container.primaryAxis,\n 0, // padding\n 0, // minTriggerSize - always perform overlap checks for selection\n )\n\n for (const child of children) {\n if (child.selectable) {\n const hasSelection = child.onSelectionChanged(this.currentSelection)\n if (hasSelection) {\n selectedRenderables.push(child)\n }\n touchedRenderables.push(child)\n }\n if (child.getChildrenCount() > 0) {\n this.walkSelectableRenderables(child, selectionBounds, selectedRenderables, touchedRenderables)\n }\n }\n }\n\n public get paletteDetectionStatus(): \"idle\" | \"detecting\" | \"cached\" {\n if (this._cachedPalette) return \"cached\"\n if (this._paletteDetectionPromise) return \"detecting\"\n return \"idle\"\n }\n\n public clearPaletteCache(): void {\n this._cachedPalette = null\n }\n\n /**\n * Detects the terminal's color palette\n *\n * @returns Promise resolving to TerminalColors object containing palette and special colors\n * @throws Error if renderer is suspended\n */\n public async getPalette(options?: GetPaletteOptions): Promise<TerminalColors> {\n if (this._controlState === RendererControlState.EXPLICIT_SUSPENDED) {\n throw new Error(\"Cannot detect palette while renderer is suspended\")\n }\n\n const requestedSize = options?.size ?? 16\n\n if (this._cachedPalette && this._cachedPalette.palette.length !== requestedSize) {\n this._cachedPalette = null\n }\n\n if (this._cachedPalette) {\n return this._cachedPalette\n }\n\n if (this._paletteDetectionPromise) {\n return this._paletteDetectionPromise\n }\n\n if (!this._paletteDetector) {\n const isLegacyTmux =\n this.capabilities?.terminal?.name?.toLowerCase()?.includes(\"tmux\") &&\n this.capabilities?.terminal?.version?.localeCompare(\"3.6\") < 0\n this._paletteDetector = createTerminalPalette(\n this.stdin,\n this.stdout,\n this.writeOut.bind(this),\n isLegacyTmux,\n {\n subscribeOsc: this.subscribeOsc.bind(this),\n },\n this.clock,\n )\n }\n\n this._paletteDetectionPromise = this._paletteDetector.detect(options).then((result) => {\n this._cachedPalette = result\n this._paletteDetectionPromise = null\n return result\n })\n\n return this._paletteDetectionPromise\n }\n}\n",
60
+ "import { ANSI } from \"./ansi.js\"\nimport { Renderable, RootRenderable } from \"./Renderable.js\"\nimport {\n DebugOverlayCorner,\n type CursorStyleOptions,\n type MousePointerStyle,\n type RenderContext,\n type ThemeMode,\n type ViewportBounds,\n type WidthMethod,\n} from \"./types.js\"\nimport { RGBA, parseColor, type ColorInput } from \"./lib/RGBA.js\"\nimport type { Pointer } from \"bun:ffi\"\nimport { OptimizedBuffer } from \"./buffer.js\"\nimport { resolveRenderLib, type RenderLib } from \"./zig.js\"\nimport { TerminalConsole, type ConsoleOptions, capture } from \"./console.js\"\nimport { type MouseEventType, type RawMouseEvent, type ScrollInfo } from \"./lib/parse.mouse.js\"\nimport { Selection } from \"./lib/selection.js\"\nimport { Clipboard, type ClipboardTarget } from \"./lib/clipboard.js\"\nimport { EventEmitter } from \"events\"\nimport { destroySingleton, hasSingleton, singleton } from \"./lib/singleton.js\"\nimport { getObjectsInViewport } from \"./lib/objects-in-viewport.js\"\nimport { KeyHandler, InternalKeyHandler } from \"./lib/KeyHandler.js\"\nimport { isEditBufferRenderable, type EditBufferRenderable } from \"./renderables/EditBufferRenderable.js\"\nimport { env, registerEnvVar } from \"./lib/env.js\"\nimport { getTreeSitterClient } from \"./lib/tree-sitter/index.js\"\nimport {\n createTerminalPalette,\n type TerminalPaletteDetector,\n type TerminalColors,\n type GetPaletteOptions,\n} from \"./lib/terminal-palette.js\"\nimport {\n isCapabilityResponse,\n isPixelResolutionResponse,\n parsePixelResolution,\n} from \"./lib/terminal-capability-detection.js\"\nimport { type Clock, type TimerHandle, SystemClock } from \"./lib/clock.js\"\nimport { StdinParser, type StdinEvent, type StdinParserProtocolContext } from \"./lib/stdin-parser.js\"\n\nregisterEnvVar({\n name: \"OTUI_DUMP_CAPTURES\",\n description: \"Dump captured stdout and console caches when the renderer exit handler runs.\",\n type: \"boolean\",\n default: false,\n})\n\nregisterEnvVar({\n name: \"OTUI_NO_NATIVE_RENDER\",\n description:\n \"Skip the Zig/native frame renderer. Useful for debugging the render loop; split-footer stdout flushing may still write ANSI.\",\n type: \"boolean\",\n default: false,\n})\n\nregisterEnvVar({\n name: \"OTUI_USE_ALTERNATE_SCREEN\",\n description: \"When explicitly set, force screen mode selection: true=alternate-screen, false=main-screen.\",\n type: \"boolean\",\n default: true,\n})\n\nregisterEnvVar({\n name: \"OTUI_OVERRIDE_STDOUT\",\n description: \"When explicitly set, force stdout routing: false=passthrough, true=capture in split-footer mode.\",\n type: \"boolean\",\n default: true,\n})\n\nregisterEnvVar({\n name: \"OTUI_DEBUG\",\n description: \"Enable debug mode to capture all raw input for debugging purposes.\",\n type: \"boolean\",\n default: false,\n})\n\nregisterEnvVar({\n name: \"OTUI_SHOW_STATS\",\n description: \"Show the debug overlay at startup.\",\n type: \"boolean\",\n default: false,\n})\n\nexport interface CliRendererConfig {\n // Read input from this stream. Defaults to process.stdin.\n stdin?: NodeJS.ReadStream\n\n // Use a custom stdout stream for size detection and stdout interception.\n // Native frame output still goes to the real TTY.\n stdout?: NodeJS.WriteStream\n\n // Tell the native renderer it is driving a remote terminal.\n remote?: boolean\n\n // Skip terminal setup. Useful in tests.\n testing?: boolean\n\n // Call renderer.destroy() when Ctrl+C is pressed. Defaults to true.\n exitOnCtrlC?: boolean\n\n // Clean up on these signals. Defaults to the common termination signals.\n exitSignals?: NodeJS.Signals[]\n\n // Forward these env var names to native terminal detection.\n forwardEnvKeys?: string[]\n\n // Wait this long before handling resize events. Defaults to 100 ms.\n debounceDelay?: number\n\n // Aim for this many frames per second in continuous mode. Defaults to 30.\n targetFps?: number\n\n // Cap immediate re-renders at this frame rate. Defaults to 60.\n maxFps?: number\n\n // Emit memory snapshots on this interval in ms. Set 0 to disable.\n memorySnapshotInterval?: number\n\n // Render from a separate thread when the platform supports it.\n useThread?: boolean\n\n // Collect frame timing stats for the debug overlay.\n gatherStats?: boolean\n\n // Keep this many timing samples. Defaults to 300.\n maxStatSamples?: number\n\n // Pass options to the built-in console overlay.\n consoleOptions?: Omit<ConsoleOptions, \"clock\">\n\n // Run these hooks after each render pass.\n postProcessFns?: ((buffer: OptimizedBuffer, deltaTime: number) => void)[]\n\n // Track mouse move events. Defaults to true.\n enableMouseMovement?: boolean\n\n // Enable mouse input. Defaults to true.\n useMouse?: boolean\n\n // Focus the nearest focusable renderable on left click. Defaults to true.\n autoFocus?: boolean\n\n // Choose where the renderer owns terminal space. Defaults to \"alternate-screen\".\n screenMode?: ScreenMode\n\n // Set the requested footer height for \"split-footer\". Defaults to 12.\n footerHeight?: number\n\n // Choose what happens to writes that go through `stdout.write`.\n externalOutputMode?: ExternalOutputMode\n\n // Choose what the built-in console overlay does.\n consoleMode?: ConsoleMode\n\n // Set Kitty keyboard protocol flags, or null to disable them.\n useKittyKeyboard?: KittyKeyboardOptions | null\n\n // Fill the render buffer with this background color. Default transparent.\n backgroundColor?: ColorInput\n\n // Open the console overlay on uncaught errors. Defaults to true in development.\n openConsoleOnError?: boolean\n\n // Run these input handlers before the built-in handlers.\n prependInputHandlers?: ((sequence: string) => boolean)[]\n\n // Cap the stdin parser buffer size in bytes. Defaults to 64 MB.\n stdinParserMaxBufferBytes?: number\n\n // Use a custom clock for timers and tests.\n clock?: Clock\n\n // Run after destroy() finishes cleanup.\n onDestroy?: () => void\n}\n\n// Controls how the renderer uses terminal space:\n//\n// - \"alternate-screen\": Use the terminal's alternate screen buffer.\n//\n// - \"main-screen\": Render on the main screen.\n//\n// - \"split-footer\": Keep the renderer in a reserved footer on the main screen.\nexport type ScreenMode = \"alternate-screen\" | \"main-screen\" | \"split-footer\"\n\n// Controls writes that go through the configured `stdout.write`.\n//\n// - \"capture-stdout\": Queue stdout and replay it above the split footer.\n// Only valid with \"split-footer\".\n//\n// - \"passthrough\": Leave stdout alone.\nexport type ExternalOutputMode = \"capture-stdout\" | \"passthrough\"\n\n// Controls the built-in console overlay:\n//\n// - \"console-overlay\": Capture `console.*` output and show the overlay.\n//\n// - \"disabled\": Hide the overlay. `OTUI_USE_CONSOLE` controls global console\n// capture.\nexport type ConsoleMode = \"console-overlay\" | \"disabled\"\n\nexport type PixelResolution = {\n width: number\n height: number\n}\n\nconst DEFAULT_FOOTER_HEIGHT = 12\n\nfunction normalizeFooterHeight(footerHeight: number | undefined): number {\n if (footerHeight === undefined) {\n return DEFAULT_FOOTER_HEIGHT\n }\n\n if (!Number.isFinite(footerHeight)) {\n throw new Error(\"footerHeight must be a finite number\")\n }\n\n const normalizedFooterHeight = Math.trunc(footerHeight)\n if (normalizedFooterHeight <= 0) {\n throw new Error(\"footerHeight must be greater than 0\")\n }\n\n return normalizedFooterHeight\n}\n\nfunction resolveModes(config: CliRendererConfig): {\n screenMode: ScreenMode\n footerHeight: number\n externalOutputMode: ExternalOutputMode\n} {\n let screenMode = config.screenMode ?? \"alternate-screen\"\n if (process.env.OTUI_USE_ALTERNATE_SCREEN !== undefined) {\n screenMode = env.OTUI_USE_ALTERNATE_SCREEN ? \"alternate-screen\" : \"main-screen\"\n }\n\n const footerHeight =\n screenMode === \"split-footer\" ? normalizeFooterHeight(config.footerHeight) : DEFAULT_FOOTER_HEIGHT\n\n let externalOutputMode =\n config.externalOutputMode ?? (screenMode === \"split-footer\" ? \"capture-stdout\" : \"passthrough\")\n if (process.env.OTUI_OVERRIDE_STDOUT !== undefined) {\n externalOutputMode = env.OTUI_OVERRIDE_STDOUT && screenMode === \"split-footer\" ? \"capture-stdout\" : \"passthrough\"\n }\n\n if (externalOutputMode === \"capture-stdout\" && screenMode !== \"split-footer\") {\n throw new Error('externalOutputMode \"capture-stdout\" requires screenMode \"split-footer\"')\n }\n\n return {\n screenMode,\n footerHeight,\n externalOutputMode,\n }\n}\n\nconst DEFAULT_FORWARDED_ENV_KEYS = [\n \"TMUX\",\n \"TERM\",\n \"OPENTUI_GRAPHICS\",\n \"TERM_PROGRAM\",\n \"TERM_PROGRAM_VERSION\",\n \"ALACRITTY_SOCKET\",\n \"ALACRITTY_LOG\",\n \"COLORTERM\",\n \"TERMUX_VERSION\",\n \"VHS_RECORD\",\n \"OPENTUI_FORCE_WCWIDTH\",\n \"OPENTUI_FORCE_UNICODE\",\n \"OPENTUI_FORCE_NOZWJ\",\n \"OPENTUI_FORCE_EXPLICIT_WIDTH\",\n \"WT_SESSION\",\n \"STY\",\n \"WSL_DISTRO_NAME\",\n \"WSL_INTEROP\",\n] as const\n\n// Kitty keyboard protocol flags\n// See: https://sw.kovidgoyal.net/kitty/keyboard-protocol/\nconst KITTY_FLAG_DISAMBIGUATE = 0b1 // Report disambiguated escape codes\nconst KITTY_FLAG_EVENT_TYPES = 0b10 // Report event types (press/repeat/release)\nconst KITTY_FLAG_ALTERNATE_KEYS = 0b100 // Report alternate keys (e.g., numpad vs regular)\nconst KITTY_FLAG_ALL_KEYS_AS_ESCAPES = 0b1000 // Report all keys as escape codes\nconst KITTY_FLAG_REPORT_TEXT = 0b10000 // Report text associated with key events\n\nconst DEFAULT_STDIN_PARSER_MAX_BUFFER_BYTES = 64 * 1024 * 1024\n\n/**\n * Kitty Keyboard Protocol configuration options\n * See: https://sw.kovidgoyal.net/kitty/keyboard-protocol/#progressive-enhancement\n */\nexport interface KittyKeyboardOptions {\n /** Disambiguate escape codes (fixes ESC timing, alt+key ambiguity, ctrl+c as event). Default: true */\n disambiguate?: boolean\n /** Report alternate keys (numpad, shifted, base layout) for cross-keyboard shortcuts. Default: true */\n alternateKeys?: boolean\n /** Report event types (press/repeat/release). Default: false */\n events?: boolean\n /** Report all keys as escape codes. Default: false */\n allKeysAsEscapes?: boolean\n /** Report text associated with key events. Default: false */\n reportText?: boolean\n}\n\n/**\n * Build kitty keyboard protocol flags based on configuration\n * @param config Kitty keyboard configuration object (null/undefined = disabled)\n * @returns The combined flags value (0 = disabled, >0 = enabled)\n * @internal Exported for testing\n */\nexport function buildKittyKeyboardFlags(config: KittyKeyboardOptions | null | undefined): number {\n if (!config) {\n return 0\n }\n\n let flags = 0\n\n // Default: disambiguate + alternate keys (both default to true)\n // - Disambiguate (0b1): Fixes ESC timing issues, alt+key ambiguity, makes ctrl+c a key event\n // - Alternate keys (0b100): Reports shifted/base-layout keys for cross-keyboard shortcuts\n\n // disambiguate defaults to true unless explicitly set to false\n if (config.disambiguate !== false) {\n flags |= KITTY_FLAG_DISAMBIGUATE\n }\n\n // alternateKeys defaults to true unless explicitly set to false\n if (config.alternateKeys !== false) {\n flags |= KITTY_FLAG_ALTERNATE_KEYS\n }\n\n // Optional flags (default to false, only enabled when explicitly true)\n if (config.events === true) {\n flags |= KITTY_FLAG_EVENT_TYPES\n }\n\n if (config.allKeysAsEscapes === true) {\n flags |= KITTY_FLAG_ALL_KEYS_AS_ESCAPES\n }\n\n if (config.reportText === true) {\n flags |= KITTY_FLAG_REPORT_TEXT\n }\n\n return flags\n}\n\nexport class MouseEvent {\n public readonly type: MouseEventType\n public readonly button: number\n public readonly x: number\n public readonly y: number\n public readonly source?: Renderable\n public readonly modifiers: {\n shift: boolean\n alt: boolean\n ctrl: boolean\n }\n public readonly scroll?: ScrollInfo\n public readonly target: Renderable | null\n public readonly isDragging?: boolean\n private _propagationStopped: boolean = false\n private _defaultPrevented: boolean = false\n\n public get propagationStopped(): boolean {\n return this._propagationStopped\n }\n\n public get defaultPrevented(): boolean {\n return this._defaultPrevented\n }\n\n constructor(target: Renderable | null, attributes: RawMouseEvent & { source?: Renderable; isDragging?: boolean }) {\n this.target = target\n this.type = attributes.type\n this.button = attributes.button\n this.x = attributes.x\n this.y = attributes.y\n this.modifiers = attributes.modifiers\n this.scroll = attributes.scroll\n this.source = attributes.source\n this.isDragging = attributes.isDragging\n }\n\n public stopPropagation(): void {\n this._propagationStopped = true\n }\n\n public preventDefault(): void {\n this._defaultPrevented = true\n }\n}\n\nexport enum MouseButton {\n LEFT = 0,\n MIDDLE = 1,\n RIGHT = 2,\n WHEEL_UP = 4,\n WHEEL_DOWN = 5,\n}\n\nconst rendererTracker = singleton(\"RendererTracker\", () => {\n const renderers = new Set<CliRenderer>()\n return {\n addRenderer: (renderer: CliRenderer) => {\n renderers.add(renderer)\n },\n removeRenderer: (renderer: CliRenderer) => {\n renderers.delete(renderer)\n if (renderers.size === 0) {\n process.stdin.pause()\n\n if (hasSingleton(\"tree-sitter-client\")) {\n getTreeSitterClient().destroy()\n destroySingleton(\"tree-sitter-client\")\n }\n }\n },\n }\n})\n\nexport async function createCliRenderer(config: CliRendererConfig = {}): Promise<CliRenderer> {\n if (process.argv.includes(\"--delay-start\")) {\n await new Promise((resolve) => setTimeout(resolve, 5000))\n }\n const stdin = config.stdin || process.stdin\n const stdout = config.stdout || process.stdout\n const { screenMode, footerHeight } = resolveModes(config)\n\n const width = stdout.columns || 80\n const height = stdout.rows || 24\n const renderHeight = screenMode === \"split-footer\" ? footerHeight : height\n\n const ziglib = resolveRenderLib()\n const rendererPtr = ziglib.createRenderer(width, renderHeight, {\n remote: config.remote ?? false,\n testing: config.testing ?? false,\n })\n if (!rendererPtr) {\n throw new Error(\"Failed to create renderer\")\n }\n if (config.useThread === undefined) {\n config.useThread = true\n }\n\n // Disable threading on linux because there currently is currently an issue\n // might be just a missing dependency for the build or something, but threads crash on linux\n if (process.platform === \"linux\") {\n config.useThread = false\n }\n ziglib.setUseThread(rendererPtr, config.useThread)\n\n const kittyConfig = config.useKittyKeyboard ?? {}\n const kittyFlags = buildKittyKeyboardFlags(kittyConfig)\n\n ziglib.setKittyKeyboardFlags(rendererPtr, kittyFlags)\n\n const renderer = new CliRenderer(ziglib, rendererPtr, stdin, stdout, width, height, config)\n if (!config.testing) {\n await renderer.setupTerminal()\n }\n return renderer\n}\n\nexport enum CliRenderEvents {\n RESIZE = \"resize\",\n FOCUS = \"focus\",\n BLUR = \"blur\",\n FOCUSED_EDITOR = \"focused_editor\",\n THEME_MODE = \"theme_mode\",\n CAPABILITIES = \"capabilities\",\n SELECTION = \"selection\",\n DEBUG_OVERLAY_TOGGLE = \"debugOverlay:toggle\",\n DESTROY = \"destroy\",\n MEMORY_SNAPSHOT = \"memory:snapshot\",\n}\n\nexport enum RendererControlState {\n IDLE = \"idle\",\n AUTO_STARTED = \"auto_started\",\n EXPLICIT_STARTED = \"explicit_started\",\n EXPLICIT_PAUSED = \"explicit_paused\",\n EXPLICIT_SUSPENDED = \"explicit_suspended\",\n EXPLICIT_STOPPED = \"explicit_stopped\",\n}\n\nexport class CliRenderer extends EventEmitter implements RenderContext {\n private static animationFrameId = 0\n private lib: RenderLib\n public rendererPtr: Pointer\n public stdin: NodeJS.ReadStream\n private stdout: NodeJS.WriteStream\n private exitOnCtrlC: boolean\n private exitSignals: NodeJS.Signals[]\n private _exitListenersAdded: boolean = false\n private _isDestroyed: boolean = false\n private _destroyPending: boolean = false\n private _destroyFinalized: boolean = false\n private _destroyCleanupPrepared: boolean = false\n public nextRenderBuffer: OptimizedBuffer\n public currentRenderBuffer: OptimizedBuffer\n private _isRunning: boolean = false\n private _targetFps: number = 30\n private _maxFps: number = 60\n private automaticMemorySnapshot: boolean = false\n private memorySnapshotInterval: number\n private memorySnapshotTimer: TimerHandle | null = null\n private lastMemorySnapshot: { heapUsed: number; heapTotal: number; arrayBuffers: number } = {\n heapUsed: 0,\n heapTotal: 0,\n arrayBuffers: 0,\n }\n public readonly root: RootRenderable\n public width: number\n public height: number\n private _useThread: boolean = false\n private gatherStats: boolean = false\n private frameTimes: number[] = []\n private maxStatSamples: number = 300\n private postProcessFns: ((buffer: OptimizedBuffer, deltaTime: number) => void)[] = []\n private backgroundColor: RGBA = RGBA.fromInts(0, 0, 0, 0)\n private waitingForPixelResolution: boolean = false\n private readonly clock: Clock\n\n private rendering: boolean = false\n private renderingNative: boolean = false\n private renderTimeout: TimerHandle | null = null\n private lastTime: number = 0\n private frameCount: number = 0\n private lastFpsTime: number = 0\n private currentFps: number = 0\n private targetFrameTime: number = 1000 / this._targetFps\n private minTargetFrameTime: number = 1000 / this._maxFps\n private immediateRerenderRequested: boolean = false\n private updateScheduled: boolean = false\n\n private liveRequestCounter: number = 0\n private _controlState: RendererControlState = RendererControlState.IDLE\n\n private frameCallbacks: ((deltaTime: number) => Promise<void>)[] = []\n private renderStats: {\n frameCount: number\n fps: number\n renderTime?: number\n frameCallbackTime: number\n } = {\n frameCount: 0,\n fps: 0,\n renderTime: 0,\n frameCallbackTime: 0,\n }\n public debugOverlay = {\n enabled: env.OTUI_SHOW_STATS,\n corner: DebugOverlayCorner.bottomRight,\n }\n\n private _console: TerminalConsole\n private _resolution: PixelResolution | null = null\n private _keyHandler: InternalKeyHandler\n private stdinParser: StdinParser | null = null\n private readonly oscSubscribers = new Set<(sequence: string) => void>()\n private hasLoggedStdinParserError = false\n\n private animationRequest: Map<number, FrameRequestCallback> = new Map()\n\n private resizeTimeoutId: TimerHandle | null = null\n private capabilityTimeoutId: TimerHandle | null = null\n private resizeDebounceDelay: number = 100\n\n private enableMouseMovement: boolean = false\n private _useMouse: boolean = true\n private autoFocus: boolean = true\n private _screenMode: ScreenMode = \"alternate-screen\"\n private _footerHeight: number = DEFAULT_FOOTER_HEIGHT\n private _externalOutputMode: ExternalOutputMode = \"passthrough\"\n private _suspendedMouseEnabled: boolean = false\n private _previousControlState: RendererControlState = RendererControlState.IDLE\n private capturedRenderable?: Renderable\n private lastOverRenderableNum: number = 0\n private lastOverRenderable?: Renderable\n\n private currentSelection: Selection | null = null\n private selectionContainers: Renderable[] = []\n private clipboard: Clipboard\n\n private _splitHeight: number = 0\n private renderOffset: number = 0\n\n private _terminalWidth: number = 0\n private _terminalHeight: number = 0\n private _terminalIsSetup: boolean = false\n\n private realStdoutWrite: (chunk: any, encoding?: any, callback?: any) => boolean\n private captureCallback: () => void = () => {\n if (this._splitHeight > 0) {\n this.requestRender()\n }\n }\n\n private _useConsole: boolean = true\n private sigwinchHandler: () => void = (() => {\n const width = this.stdout.columns || 80\n const height = this.stdout.rows || 24\n this.handleResize(width, height)\n }).bind(this)\n private _capabilities: any | null = null\n private _latestPointer: { x: number; y: number } = { x: 0, y: 0 }\n private _hasPointer: boolean = false\n private _lastPointerModifiers: RawMouseEvent[\"modifiers\"] = { shift: false, alt: false, ctrl: false }\n private _currentMousePointerStyle: MousePointerStyle | undefined = undefined\n\n private _currentFocusedRenderable: Renderable | null = null\n private lifecyclePasses: Set<Renderable> = new Set()\n private _openConsoleOnError: boolean = true\n private _paletteDetector: TerminalPaletteDetector | null = null\n private _cachedPalette: TerminalColors | null = null\n private _paletteDetectionPromise: Promise<TerminalColors> | null = null\n private _onDestroy?: () => void\n private _themeMode: ThemeMode | null = null\n private _terminalFocusState: boolean | null = null\n\n private sequenceHandlers: ((sequence: string) => boolean)[] = []\n private prependedInputHandlers: ((sequence: string) => boolean)[] = []\n private shouldRestoreModesOnNextFocus: boolean = false\n\n private idleResolvers: (() => void)[] = []\n\n private _debugInputs: Array<{ timestamp: string; sequence: string }> = []\n private _debugModeEnabled: boolean = env.OTUI_DEBUG\n\n private handleError: (error: Error) => void = ((error: Error) => {\n console.error(error)\n\n if (this._openConsoleOnError) {\n this.console.show()\n }\n }).bind(this)\n\n private dumpOutputCache(optionalMessage: string = \"\"): void {\n const cachedLogs = this.console.getCachedLogs()\n const capturedOutput = capture.claimOutput()\n\n if (capturedOutput.length > 0 || cachedLogs.length > 0) {\n this.realStdoutWrite.call(this.stdout, optionalMessage)\n }\n\n if (cachedLogs.length > 0) {\n this.realStdoutWrite.call(this.stdout, \"Console cache:\\n\")\n this.realStdoutWrite.call(this.stdout, cachedLogs)\n }\n\n if (capturedOutput.length > 0) {\n this.realStdoutWrite.call(this.stdout, \"\\nCaptured output:\\n\")\n this.realStdoutWrite.call(this.stdout, capturedOutput + \"\\n\")\n }\n\n this.realStdoutWrite.call(this.stdout, ANSI.reset)\n }\n\n private exitHandler: () => void = (() => {\n this.destroy()\n if (env.OTUI_DUMP_CAPTURES) {\n Bun.sleep(100).then(() => {\n this.dumpOutputCache(\"=== CAPTURED OUTPUT ===\\n\")\n })\n }\n }).bind(this)\n\n private warningHandler: (warning: any) => void = ((warning: any) => {\n console.warn(JSON.stringify(warning.message, null, 2))\n }).bind(this)\n\n public get controlState(): RendererControlState {\n return this._controlState\n }\n\n constructor(\n lib: RenderLib,\n rendererPtr: Pointer,\n stdin: NodeJS.ReadStream,\n stdout: NodeJS.WriteStream,\n width: number,\n height: number,\n config: CliRendererConfig = {},\n ) {\n super()\n\n rendererTracker.addRenderer(this)\n\n this.stdin = stdin\n this.stdout = stdout\n this.realStdoutWrite = stdout.write\n this.lib = lib\n this._terminalWidth = stdout.columns ?? width\n this._terminalHeight = stdout.rows ?? height\n this.width = width\n this.height = height\n this._useThread = config.useThread === undefined ? false : config.useThread\n const { screenMode, footerHeight, externalOutputMode } = resolveModes(config)\n\n this._footerHeight = footerHeight\n this._screenMode = screenMode\n\n this.rendererPtr = rendererPtr\n\n const forwardEnvKeys = config.forwardEnvKeys ?? [...DEFAULT_FORWARDED_ENV_KEYS]\n for (const key of forwardEnvKeys) {\n const value = process.env[key]\n if (value === undefined) continue\n this.lib.setTerminalEnvVar(this.rendererPtr, key, value)\n }\n\n this.exitOnCtrlC = config.exitOnCtrlC === undefined ? true : config.exitOnCtrlC\n this.exitSignals = config.exitSignals || [\n \"SIGINT\", // Ctrl+C\n \"SIGTERM\", // Termination signal\n \"SIGQUIT\", // Ctrl+\\\n \"SIGABRT\", // Abort signal\n \"SIGHUP\", // Hangup (terminal closed)\n \"SIGBREAK\", // Ctrl+Break on Windows\n \"SIGPIPE\", // Broken pipe\n \"SIGBUS\", // Bus error\n ]\n\n this.clipboard = new Clipboard(this.lib, this.rendererPtr)\n this.resizeDebounceDelay = config.debounceDelay || 100\n this.targetFps = config.targetFps || 30\n this.maxFps = config.maxFps || 60\n this.clock = config.clock ?? new SystemClock()\n this.memorySnapshotInterval = config.memorySnapshotInterval ?? 0\n this.gatherStats = config.gatherStats || false\n this.maxStatSamples = config.maxStatSamples || 300\n this.enableMouseMovement = config.enableMouseMovement ?? true\n this._useMouse = config.useMouse ?? true\n this.autoFocus = config.autoFocus ?? true\n this.nextRenderBuffer = this.lib.getNextBuffer(this.rendererPtr)\n this.currentRenderBuffer = this.lib.getCurrentBuffer(this.rendererPtr)\n this.postProcessFns = config.postProcessFns || []\n this.prependedInputHandlers = config.prependInputHandlers || []\n\n this.root = new RootRenderable(this)\n\n if (this.memorySnapshotInterval > 0) {\n this.startMemorySnapshotTimer()\n }\n\n // Handle terminal resize\n process.on(\"SIGWINCH\", this.sigwinchHandler)\n\n process.on(\"warning\", this.warningHandler)\n\n process.on(\"uncaughtException\", this.handleError)\n process.on(\"unhandledRejection\", this.handleError)\n process.on(\"beforeExit\", this.exitHandler)\n\n const kittyConfig = config.useKittyKeyboard ?? {}\n const useKittyForParsing = kittyConfig !== null\n this._keyHandler = new InternalKeyHandler()\n this._keyHandler.on(\"keypress\", (event) => {\n if (this.exitOnCtrlC && event.name === \"c\" && event.ctrl) {\n process.nextTick(() => {\n this.destroy()\n })\n return\n }\n })\n\n this.addExitListeners()\n\n const stdinParserMaxBufferBytes = config.stdinParserMaxBufferBytes ?? DEFAULT_STDIN_PARSER_MAX_BUFFER_BYTES\n this.stdinParser = new StdinParser({\n timeoutMs: 20,\n maxPendingBytes: stdinParserMaxBufferBytes,\n armTimeouts: true,\n onTimeoutFlush: () => {\n this.drainStdinParser()\n },\n useKittyKeyboard: useKittyForParsing,\n protocolContext: {\n kittyKeyboardEnabled: useKittyForParsing,\n privateCapabilityRepliesActive: false,\n pixelResolutionQueryActive: false,\n explicitWidthCprActive: false,\n },\n clock: this.clock,\n })\n\n this._console = new TerminalConsole(this, {\n ...(config.consoleOptions ?? {}),\n clock: this.clock,\n })\n this.consoleMode = config.consoleMode ?? \"console-overlay\"\n this.applyScreenMode(screenMode, false, false)\n this.externalOutputMode = externalOutputMode\n this._openConsoleOnError = config.openConsoleOnError ?? process.env.NODE_ENV !== \"production\"\n this._onDestroy = config.onDestroy\n\n global.requestAnimationFrame = (callback: FrameRequestCallback) => {\n const id = CliRenderer.animationFrameId++\n this.animationRequest.set(id, callback)\n this.requestLive()\n return id\n }\n global.cancelAnimationFrame = (handle: number) => {\n this.animationRequest.delete(handle)\n }\n\n const window = global.window\n if (!window) {\n global.window = {} as Window & typeof globalThis\n }\n global.window.requestAnimationFrame = requestAnimationFrame\n\n // Prevents output from being written to the terminal, useful for debugging\n if (env.OTUI_NO_NATIVE_RENDER) {\n this.renderNative = () => {\n if (this._splitHeight > 0) {\n this.flushStdoutCache(this._splitHeight)\n }\n }\n }\n\n this.setupInput()\n }\n\n private addExitListeners(): void {\n if (this._exitListenersAdded || this.exitSignals.length === 0) return\n\n this.exitSignals.forEach((signal) => {\n process.addListener(signal, this.exitHandler)\n })\n\n this._exitListenersAdded = true\n }\n\n private removeExitListeners(): void {\n if (!this._exitListenersAdded || this.exitSignals.length === 0) return\n\n this.exitSignals.forEach((signal) => {\n process.removeListener(signal, this.exitHandler)\n })\n\n this._exitListenersAdded = false\n }\n\n public get isDestroyed(): boolean {\n return this._isDestroyed\n }\n\n public registerLifecyclePass(renderable: Renderable) {\n this.lifecyclePasses.add(renderable)\n }\n\n public unregisterLifecyclePass(renderable: Renderable) {\n this.lifecyclePasses.delete(renderable)\n }\n\n public getLifecyclePasses() {\n return this.lifecyclePasses\n }\n\n public get currentFocusedRenderable(): Renderable | null {\n return this._currentFocusedRenderable\n }\n\n public get currentFocusedEditor(): EditBufferRenderable | null {\n if (!this._currentFocusedRenderable) return null\n if (!isEditBufferRenderable(this._currentFocusedRenderable)) return null\n return this._currentFocusedRenderable\n }\n\n private normalizeClockTime(now: number, fallback: number): number {\n if (Number.isFinite(now)) {\n return now\n }\n\n return Number.isFinite(fallback) ? fallback : 0\n }\n\n private getElapsedMs(now: number, then: number): number {\n if (!Number.isFinite(now) || !Number.isFinite(then)) {\n return 0\n }\n\n return Math.max(now - then, 0)\n }\n\n public focusRenderable(renderable: Renderable) {\n if (this._currentFocusedRenderable === renderable) return\n\n const prev = this.currentFocusedEditor\n\n if (this._currentFocusedRenderable) {\n this._currentFocusedRenderable.blur()\n }\n\n this._currentFocusedRenderable = renderable\n\n const next = this.currentFocusedEditor\n if (prev !== next) {\n this.emit(CliRenderEvents.FOCUSED_EDITOR, next, prev)\n }\n }\n\n private setCapturedRenderable(renderable: Renderable | undefined): void {\n if (this.capturedRenderable === renderable) {\n return\n }\n this.capturedRenderable = renderable\n }\n\n public addToHitGrid(x: number, y: number, width: number, height: number, id: number) {\n if (id !== this.capturedRenderable?.num) {\n this.lib.addToHitGrid(this.rendererPtr, x, y, width, height, id)\n }\n }\n\n public pushHitGridScissorRect(x: number, y: number, width: number, height: number): void {\n this.lib.hitGridPushScissorRect(this.rendererPtr, x, y, width, height)\n }\n\n public popHitGridScissorRect(): void {\n this.lib.hitGridPopScissorRect(this.rendererPtr)\n }\n\n public clearHitGridScissorRects(): void {\n this.lib.hitGridClearScissorRects(this.rendererPtr)\n }\n\n public get widthMethod(): WidthMethod {\n const caps = this.capabilities\n return caps?.unicode === \"wcwidth\" ? \"wcwidth\" : \"unicode\"\n }\n\n private writeOut(chunk: any, encoding?: any, callback?: any): boolean {\n if (this.rendererPtr && this._useThread) {\n const data = typeof chunk === \"string\" ? chunk : (chunk?.toString() ?? \"\")\n this.lib.writeOut(this.rendererPtr, data)\n if (typeof callback === \"function\") {\n process.nextTick(callback)\n }\n return true\n }\n\n return this.realStdoutWrite.call(this.stdout, chunk, encoding, callback)\n }\n\n public requestRender() {\n if (this._controlState === RendererControlState.EXPLICIT_SUSPENDED) {\n return\n }\n\n if (this._isRunning) {\n return\n }\n\n // NOTE: Using a frame callback that causes a re-render while already rendering\n // leads to a continuous loop of renders.\n if (this.rendering) {\n this.immediateRerenderRequested = true\n return\n }\n\n if (!this.updateScheduled && !this.renderTimeout) {\n this.updateScheduled = true\n const now = this.normalizeClockTime(this.clock.now(), this.lastTime)\n const elapsed = this.getElapsedMs(now, this.lastTime)\n const delay = Math.max(this.minTargetFrameTime - elapsed, 0)\n\n if (delay === 0) {\n process.nextTick(() => this.activateFrame())\n return\n }\n\n this.clock.setTimeout(() => this.activateFrame(), delay)\n }\n }\n\n private async activateFrame() {\n if (!this.updateScheduled) {\n this.resolveIdleIfNeeded()\n return\n }\n\n try {\n await this.loop()\n } finally {\n this.updateScheduled = false\n this.resolveIdleIfNeeded()\n }\n }\n\n public get consoleMode(): ConsoleMode {\n return this._useConsole ? \"console-overlay\" : \"disabled\"\n }\n\n public set consoleMode(mode: ConsoleMode) {\n this._useConsole = mode === \"console-overlay\"\n if (this._useConsole) {\n this.console.activate()\n } else {\n this.console.deactivate()\n }\n }\n\n public get isRunning(): boolean {\n return this._isRunning\n }\n\n private isIdleNow(): boolean {\n return (\n !this._isRunning &&\n !this.rendering &&\n !this.renderTimeout &&\n !this.updateScheduled &&\n !this.immediateRerenderRequested\n )\n }\n\n private resolveIdleIfNeeded(): void {\n if (!this.isIdleNow()) return\n const resolvers = this.idleResolvers.splice(0)\n for (const resolve of resolvers) {\n resolve()\n }\n }\n\n public idle(): Promise<void> {\n if (this._isDestroyed) return Promise.resolve()\n if (this.isIdleNow()) return Promise.resolve()\n return new Promise<void>((resolve) => {\n this.idleResolvers.push(resolve)\n })\n }\n\n public get resolution(): PixelResolution | null {\n return this._resolution\n }\n\n public get console(): TerminalConsole {\n return this._console\n }\n\n public get keyInput(): KeyHandler {\n return this._keyHandler\n }\n\n public get _internalKeyInput(): InternalKeyHandler {\n return this._keyHandler\n }\n\n public get terminalWidth(): number {\n return this._terminalWidth\n }\n\n public get terminalHeight(): number {\n return this._terminalHeight\n }\n\n public get useThread(): boolean {\n return this._useThread\n }\n\n public get targetFps(): number {\n return this._targetFps\n }\n\n public set targetFps(targetFps: number) {\n this._targetFps = targetFps\n this.targetFrameTime = 1000 / this._targetFps\n }\n\n public get maxFps(): number {\n return this._maxFps\n }\n\n public set maxFps(maxFps: number) {\n this._maxFps = maxFps\n this.minTargetFrameTime = 1000 / this._maxFps\n }\n\n public get useMouse(): boolean {\n return this._useMouse\n }\n\n public set useMouse(useMouse: boolean) {\n if (this._useMouse === useMouse) return // No change needed\n\n this._useMouse = useMouse\n\n if (useMouse) {\n this.enableMouse()\n } else {\n this.disableMouse()\n }\n }\n\n public get screenMode(): ScreenMode {\n return this._screenMode\n }\n\n public set screenMode(mode: ScreenMode) {\n if (this.externalOutputMode === \"capture-stdout\" && mode !== \"split-footer\") {\n throw new Error('externalOutputMode \"capture-stdout\" requires screenMode \"split-footer\"')\n }\n\n this.applyScreenMode(mode)\n }\n\n public get footerHeight(): number {\n return this._footerHeight\n }\n\n public set footerHeight(footerHeight: number) {\n const normalizedFooterHeight = normalizeFooterHeight(footerHeight)\n if (normalizedFooterHeight === this._footerHeight) {\n return\n }\n\n this._footerHeight = normalizedFooterHeight\n if (this.screenMode === \"split-footer\") {\n this.applyScreenMode(\"split-footer\")\n }\n }\n\n public get externalOutputMode(): ExternalOutputMode {\n return this._externalOutputMode\n }\n\n public set externalOutputMode(mode: ExternalOutputMode) {\n if (mode === \"capture-stdout\" && this.screenMode !== \"split-footer\") {\n throw new Error('externalOutputMode \"capture-stdout\" requires screenMode \"split-footer\"')\n }\n\n this._externalOutputMode = mode\n this.stdout.write = mode === \"capture-stdout\" ? this.interceptStdoutWrite : this.realStdoutWrite\n }\n\n public get liveRequestCount(): number {\n return this.liveRequestCounter\n }\n\n public get currentControlState(): string {\n return this._controlState\n }\n\n public get capabilities(): any | null {\n return this._capabilities\n }\n\n public get themeMode(): ThemeMode | null {\n return this._themeMode\n }\n\n public getDebugInputs(): Array<{ timestamp: string; sequence: string }> {\n return [...this._debugInputs]\n }\n\n public get useKittyKeyboard(): boolean {\n return this.lib.getKittyKeyboardFlags(this.rendererPtr) > 0\n }\n\n public set useKittyKeyboard(use: boolean) {\n const flags = use ? KITTY_FLAG_DISAMBIGUATE | KITTY_FLAG_ALTERNATE_KEYS : 0\n this.lib.setKittyKeyboardFlags(this.rendererPtr, flags)\n }\n\n private interceptStdoutWrite = (chunk: any, encoding?: any, callback?: any): boolean => {\n const text = chunk.toString()\n\n capture.write(\"stdout\", text)\n if (this._splitHeight > 0) {\n this.requestRender()\n }\n\n if (typeof callback === \"function\") {\n process.nextTick(callback)\n }\n\n return true\n }\n\n private applyScreenMode(screenMode: ScreenMode, emitResize: boolean = true, requestRender: boolean = true): void {\n const prevScreenMode = this._screenMode\n const prevSplitHeight = this._splitHeight\n const nextSplitHeight = screenMode === \"split-footer\" ? this._footerHeight : 0\n\n if (prevScreenMode === screenMode && prevSplitHeight === nextSplitHeight) {\n return\n }\n\n const prevUseAlternateScreen = prevScreenMode === \"alternate-screen\"\n const nextUseAlternateScreen = screenMode === \"alternate-screen\"\n const terminalScreenModeChanged = this._terminalIsSetup && prevUseAlternateScreen !== nextUseAlternateScreen\n const leavingSplitFooter = prevSplitHeight > 0 && nextSplitHeight === 0\n\n if (this._terminalIsSetup && leavingSplitFooter) {\n this.flushStdoutCache(this._terminalHeight, true)\n }\n\n if (this._terminalIsSetup && !terminalScreenModeChanged) {\n if (prevSplitHeight === 0 && nextSplitHeight > 0) {\n const freedLines = this._terminalHeight - nextSplitHeight\n const scrollDown = ANSI.scrollDown(freedLines)\n this.writeOut(scrollDown)\n } else if (prevSplitHeight > nextSplitHeight && nextSplitHeight > 0) {\n const freedLines = prevSplitHeight - nextSplitHeight\n const scrollDown = ANSI.scrollDown(freedLines)\n this.writeOut(scrollDown)\n } else if (prevSplitHeight < nextSplitHeight && prevSplitHeight > 0) {\n const additionalLines = nextSplitHeight - prevSplitHeight\n const scrollUp = ANSI.scrollUp(additionalLines)\n this.writeOut(scrollUp)\n }\n }\n\n if (prevSplitHeight === 0 && nextSplitHeight > 0) {\n capture.on(\"write\", this.captureCallback)\n } else if (prevSplitHeight > 0 && nextSplitHeight === 0) {\n capture.off(\"write\", this.captureCallback)\n }\n\n this._screenMode = screenMode\n this._splitHeight = nextSplitHeight\n this.renderOffset = nextSplitHeight > 0 ? this._terminalHeight - nextSplitHeight : 0\n this.width = this._terminalWidth\n this.height = nextSplitHeight > 0 ? nextSplitHeight : this._terminalHeight\n\n this.lib.setRenderOffset(this.rendererPtr, this.renderOffset)\n this.lib.resizeRenderer(this.rendererPtr, this.width, this.height)\n this.nextRenderBuffer = this.lib.getNextBuffer(this.rendererPtr)\n this.currentRenderBuffer = this.lib.getCurrentBuffer(this.rendererPtr)\n\n this._console.resize(this.width, this.height)\n this.root.resize(this.width, this.height)\n\n if (terminalScreenModeChanged) {\n this.lib.suspendRenderer(this.rendererPtr)\n this.lib.setupTerminal(this.rendererPtr, nextUseAlternateScreen)\n\n if (this._useMouse) {\n this.enableMouse()\n }\n }\n\n if (emitResize) {\n this.emit(CliRenderEvents.RESIZE, this.width, this.height)\n }\n\n if (requestRender) {\n this.requestRender()\n }\n }\n\n // TODO: Move this to native\n private flushStdoutCache(space: number, force: boolean = false): boolean {\n if (capture.size === 0 && !force) return false\n\n const output = capture.claimOutput()\n\n const rendererStartLine = this._terminalHeight - this._splitHeight\n const flush = ANSI.moveCursorAndClear(rendererStartLine, 1)\n\n const outputLine = this._terminalHeight - this._splitHeight\n const move = ANSI.moveCursor(outputLine, 1)\n\n let clear = \"\"\n if (space > 0) {\n const backgroundColor = this.backgroundColor.toInts()\n const newlines = \" \".repeat(this.width) + \"\\n\".repeat(space)\n // Check if background is transparent (alpha = 0)\n if (backgroundColor[3] === 0) {\n clear = newlines\n } else {\n clear =\n ANSI.setRgbBackground(backgroundColor[0], backgroundColor[1], backgroundColor[2]) +\n newlines +\n ANSI.resetBackground\n }\n }\n\n this.writeOut(flush + move + output + clear)\n\n return true\n }\n\n private enableMouse(): void {\n this._useMouse = true\n this.lib.enableMouse(this.rendererPtr, this.enableMouseMovement)\n }\n\n private disableMouse(): void {\n this._useMouse = false\n this.setCapturedRenderable(undefined)\n this.stdinParser?.resetMouseState()\n this.lib.disableMouse(this.rendererPtr)\n }\n\n public enableKittyKeyboard(flags: number = 0b00011): void {\n this.lib.enableKittyKeyboard(this.rendererPtr, flags)\n this.updateStdinParserProtocolContext({ kittyKeyboardEnabled: true })\n }\n\n public disableKittyKeyboard(): void {\n this.lib.disableKittyKeyboard(this.rendererPtr)\n this.updateStdinParserProtocolContext({ kittyKeyboardEnabled: false }, true)\n }\n\n public set useThread(useThread: boolean) {\n this._useThread = useThread\n this.lib.setUseThread(this.rendererPtr, useThread)\n }\n\n // TODO: All input management may move to native when zig finally has async io support again,\n // without rolling a full event loop\n public async setupTerminal(): Promise<void> {\n if (this._terminalIsSetup) return\n this._terminalIsSetup = true\n\n this.updateStdinParserProtocolContext({\n privateCapabilityRepliesActive: true,\n explicitWidthCprActive: true,\n })\n this.lib.setupTerminal(this.rendererPtr, this._screenMode === \"alternate-screen\")\n this._capabilities = this.lib.getTerminalCapabilities(this.rendererPtr)\n\n if (this.debugOverlay.enabled) {\n this.lib.setDebugOverlay(this.rendererPtr, true, this.debugOverlay.corner)\n if (!this.memorySnapshotInterval) {\n this.memorySnapshotInterval = 3000\n this.startMemorySnapshotTimer()\n this.automaticMemorySnapshot = true\n }\n }\n\n this.capabilityTimeoutId = this.clock.setTimeout(() => {\n this.capabilityTimeoutId = null\n this.removeInputHandler(this.capabilityHandler)\n this.updateStdinParserProtocolContext(\n {\n privateCapabilityRepliesActive: false,\n explicitWidthCprActive: false,\n },\n true,\n )\n }, 5000)\n\n if (this._useMouse) {\n this.enableMouse()\n }\n\n this.queryPixelResolution()\n }\n\n private stdinListener: (chunk: Buffer | string) => void = ((chunk: Buffer | string) => {\n const data = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)\n if (!this.stdinParser) return\n\n try {\n this.stdinParser.push(data)\n this.drainStdinParser()\n } catch (error) {\n this.handleStdinParserFailure(error)\n }\n }).bind(this)\n\n public addInputHandler(handler: (sequence: string) => boolean): void {\n this.sequenceHandlers.push(handler)\n }\n\n public prependInputHandler(handler: (sequence: string) => boolean): void {\n this.sequenceHandlers.unshift(handler)\n }\n\n public removeInputHandler(handler: (sequence: string) => boolean): void {\n this.sequenceHandlers = this.sequenceHandlers.filter((candidate) => candidate !== handler)\n }\n\n private updateStdinParserProtocolContext(patch: Partial<StdinParserProtocolContext>, drain = false): void {\n if (!this.stdinParser) return\n this.stdinParser.updateProtocolContext(patch)\n if (drain) this.drainStdinParser()\n }\n\n public subscribeOsc(handler: (sequence: string) => void): () => void {\n this.oscSubscribers.add(handler)\n return () => {\n this.oscSubscribers.delete(handler)\n }\n }\n\n private capabilityHandler: (sequence: string) => boolean = ((sequence: string) => {\n if (isCapabilityResponse(sequence)) {\n this.lib.processCapabilityResponse(this.rendererPtr, sequence)\n this._capabilities = this.lib.getTerminalCapabilities(this.rendererPtr)\n this.emit(CliRenderEvents.CAPABILITIES, this._capabilities)\n return true\n }\n return false\n }).bind(this)\n\n private focusHandler: (sequence: string) => boolean = ((sequence: string) => {\n if (sequence === \"\\x1b[I\") {\n // When the terminal regains focus, some terminal emulators (notably\n // Windows Terminal / ConPTY) may have stripped DEC private modes like\n // mouse tracking, bracketed paste, and focus tracking itself while the\n // window was unfocused.\n if (this.shouldRestoreModesOnNextFocus) {\n this.lib.restoreTerminalModes(this.rendererPtr)\n this.shouldRestoreModesOnNextFocus = false\n }\n if (this._terminalFocusState !== true) {\n this._terminalFocusState = true\n this.emit(CliRenderEvents.FOCUS)\n }\n return true\n }\n if (sequence === \"\\x1b[O\") {\n this.shouldRestoreModesOnNextFocus = true\n if (this._terminalFocusState !== false) {\n this._terminalFocusState = false\n this.emit(CliRenderEvents.BLUR)\n }\n return true\n }\n return false\n }).bind(this)\n\n private themeModeHandler: (sequence: string) => boolean = ((sequence: string) => {\n if (sequence === \"\\x1b[?997;1n\") {\n if (this._themeMode !== \"dark\") {\n this._themeMode = \"dark\"\n this.emit(CliRenderEvents.THEME_MODE, \"dark\")\n }\n return true\n }\n if (sequence === \"\\x1b[?997;2n\") {\n if (this._themeMode !== \"light\") {\n this._themeMode = \"light\"\n this.emit(CliRenderEvents.THEME_MODE, \"light\")\n }\n return true\n }\n return false\n }).bind(this)\n\n private dispatchSequenceHandlers(sequence: string): boolean {\n if (this._debugModeEnabled) {\n this._debugInputs.push({\n timestamp: new Date().toISOString(),\n sequence,\n })\n }\n\n for (const handler of this.sequenceHandlers) {\n if (handler(sequence)) {\n return true\n }\n }\n\n return false\n }\n\n private drainStdinParser(): void {\n if (!this.stdinParser) return\n\n this.stdinParser.drain((event) => {\n this.handleStdinEvent(event)\n })\n }\n\n private handleStdinEvent(event: StdinEvent): void {\n switch (event.type) {\n case \"key\":\n if (this.dispatchSequenceHandlers(event.raw)) {\n return\n }\n\n this._keyHandler.processParsedKey(event.key)\n return\n case \"mouse\":\n if (this._useMouse && this.processSingleMouseEvent(event.event)) {\n return\n }\n\n this.dispatchSequenceHandlers(event.raw)\n return\n case \"paste\":\n this._keyHandler.processPaste(event.bytes, event.metadata)\n return\n case \"response\":\n if (event.protocol === \"osc\") {\n for (const subscriber of this.oscSubscribers) {\n subscriber(event.sequence)\n }\n }\n\n this.dispatchSequenceHandlers(event.sequence)\n return\n }\n }\n\n private handleStdinParserFailure(error: unknown): void {\n if (!this.hasLoggedStdinParserError) {\n this.hasLoggedStdinParserError = true\n if (process.env.NODE_ENV !== \"test\") {\n console.error(\"[stdin-parser-error] parser failure, resetting parser\", error)\n }\n }\n\n try {\n this.stdinParser?.reset()\n } catch (resetError) {\n console.error(\"stdin parser reset failed after parser error\", resetError)\n }\n }\n\n private setupInput(): void {\n for (const handler of this.prependedInputHandlers) {\n this.addInputHandler(handler)\n }\n\n this.addInputHandler((sequence: string) => {\n if (isPixelResolutionResponse(sequence) && this.waitingForPixelResolution) {\n const resolution = parsePixelResolution(sequence)\n if (resolution) {\n this._resolution = resolution\n }\n this.waitingForPixelResolution = false\n this.updateStdinParserProtocolContext({ pixelResolutionQueryActive: false }, true)\n return true\n }\n return false\n })\n this.addInputHandler(this.capabilityHandler)\n this.addInputHandler(this.focusHandler)\n this.addInputHandler(this.themeModeHandler)\n\n if (this.stdin.setRawMode) {\n this.stdin.setRawMode(true)\n }\n\n this.stdin.on(\"data\", this.stdinListener)\n this.stdin.resume()\n }\n\n private dispatchMouseEvent(\n target: Renderable,\n attributes: RawMouseEvent & { source?: Renderable; isDragging?: boolean },\n ): MouseEvent {\n const event = new MouseEvent(target, attributes)\n target.processMouseEvent(event)\n\n if (this.autoFocus && event.type === \"down\" && event.button === MouseButton.LEFT && !event.defaultPrevented) {\n let current: Renderable | null = target\n while (current) {\n if (current.focusable) {\n current.focus()\n break\n }\n current = current.parent\n }\n }\n\n return event\n }\n\n private processSingleMouseEvent(mouseEvent: RawMouseEvent): boolean {\n if (this._splitHeight > 0) {\n if (mouseEvent.y < this.renderOffset) {\n return false\n }\n mouseEvent.y -= this.renderOffset\n }\n\n this._latestPointer.x = mouseEvent.x\n this._latestPointer.y = mouseEvent.y\n this._hasPointer = true\n this._lastPointerModifiers = mouseEvent.modifiers\n\n if (this._console.visible) {\n const consoleBounds = this._console.bounds\n if (\n mouseEvent.x >= consoleBounds.x &&\n mouseEvent.x < consoleBounds.x + consoleBounds.width &&\n mouseEvent.y >= consoleBounds.y &&\n mouseEvent.y < consoleBounds.y + consoleBounds.height\n ) {\n const event = new MouseEvent(null, mouseEvent)\n const handled = this._console.handleMouse(event)\n if (handled) return true\n }\n }\n\n if (mouseEvent.type === \"scroll\") {\n const maybeRenderableId = this.hitTest(mouseEvent.x, mouseEvent.y)\n const maybeRenderable = Renderable.renderablesByNumber.get(maybeRenderableId)\n const fallbackTarget =\n this._currentFocusedRenderable &&\n !this._currentFocusedRenderable.isDestroyed &&\n this._currentFocusedRenderable.focused\n ? this._currentFocusedRenderable\n : null\n const scrollTarget = maybeRenderable ?? fallbackTarget\n\n if (scrollTarget) {\n const event = new MouseEvent(scrollTarget, mouseEvent)\n scrollTarget.processMouseEvent(event)\n }\n return true\n }\n\n const maybeRenderableId = this.hitTest(mouseEvent.x, mouseEvent.y)\n const sameElement = maybeRenderableId === this.lastOverRenderableNum\n this.lastOverRenderableNum = maybeRenderableId\n const maybeRenderable = Renderable.renderablesByNumber.get(maybeRenderableId)\n\n if (\n mouseEvent.type === \"down\" &&\n mouseEvent.button === MouseButton.LEFT &&\n !this.currentSelection?.isDragging &&\n !mouseEvent.modifiers.ctrl\n ) {\n const canStartSelection = Boolean(\n maybeRenderable &&\n maybeRenderable.selectable &&\n !maybeRenderable.isDestroyed &&\n maybeRenderable.shouldStartSelection(mouseEvent.x, mouseEvent.y),\n )\n\n if (canStartSelection && maybeRenderable) {\n this.startSelection(maybeRenderable, mouseEvent.x, mouseEvent.y)\n this.dispatchMouseEvent(maybeRenderable, mouseEvent)\n return true\n }\n }\n\n if (mouseEvent.type === \"drag\" && this.currentSelection?.isDragging) {\n this.updateSelection(maybeRenderable, mouseEvent.x, mouseEvent.y)\n\n if (maybeRenderable) {\n const event = new MouseEvent(maybeRenderable, { ...mouseEvent, isDragging: true })\n maybeRenderable.processMouseEvent(event)\n }\n\n return true\n }\n\n if (mouseEvent.type === \"up\" && this.currentSelection?.isDragging) {\n if (maybeRenderable) {\n const event = new MouseEvent(maybeRenderable, { ...mouseEvent, isDragging: true })\n maybeRenderable.processMouseEvent(event)\n }\n\n this.finishSelection()\n return true\n }\n\n if (mouseEvent.type === \"down\" && mouseEvent.button === MouseButton.LEFT && this.currentSelection) {\n if (mouseEvent.modifiers.ctrl) {\n this.currentSelection.isDragging = true\n this.updateSelection(maybeRenderable, mouseEvent.x, mouseEvent.y)\n return true\n }\n }\n\n if (!sameElement && (mouseEvent.type === \"drag\" || mouseEvent.type === \"move\")) {\n if (\n this.lastOverRenderable &&\n this.lastOverRenderable !== this.capturedRenderable &&\n !this.lastOverRenderable.isDestroyed\n ) {\n const event = new MouseEvent(this.lastOverRenderable, { ...mouseEvent, type: \"out\" })\n this.lastOverRenderable.processMouseEvent(event)\n }\n this.lastOverRenderable = maybeRenderable\n if (maybeRenderable) {\n const event = new MouseEvent(maybeRenderable, {\n ...mouseEvent,\n type: \"over\",\n source: this.capturedRenderable,\n })\n maybeRenderable.processMouseEvent(event)\n }\n }\n\n if (this.capturedRenderable && mouseEvent.type !== \"up\") {\n const event = new MouseEvent(this.capturedRenderable, mouseEvent)\n this.capturedRenderable.processMouseEvent(event)\n return true\n }\n\n if (this.capturedRenderable && mouseEvent.type === \"up\") {\n const event = new MouseEvent(this.capturedRenderable, { ...mouseEvent, type: \"drag-end\" })\n this.capturedRenderable.processMouseEvent(event)\n this.capturedRenderable.processMouseEvent(new MouseEvent(this.capturedRenderable, mouseEvent))\n if (maybeRenderable) {\n const event = new MouseEvent(maybeRenderable, {\n ...mouseEvent,\n type: \"drop\",\n source: this.capturedRenderable,\n })\n maybeRenderable.processMouseEvent(event)\n }\n this.lastOverRenderable = this.capturedRenderable\n this.lastOverRenderableNum = this.capturedRenderable.num\n this.setCapturedRenderable(undefined)\n // Dropping the renderable needs to push another frame when the renderer is not live\n // to update the hit grid, otherwise capturedRenderable won't be in the hit grid and will not receive mouse events\n this.requestRender()\n }\n\n let event: MouseEvent | undefined\n if (maybeRenderable) {\n if (mouseEvent.type === \"drag\" && mouseEvent.button === MouseButton.LEFT) {\n this.setCapturedRenderable(maybeRenderable)\n } else {\n this.setCapturedRenderable(undefined)\n }\n event = this.dispatchMouseEvent(maybeRenderable, mouseEvent)\n } else {\n this.setCapturedRenderable(undefined)\n this.lastOverRenderable = undefined\n }\n\n if (!event?.defaultPrevented && mouseEvent.type === \"down\" && this.currentSelection) {\n this.clearSelection()\n }\n\n return true\n }\n\n /**\n * Recheck hover state after hit grid changes.\n * Called after render when native code detects the hit grid changed.\n * Fires out/over events if the element under the cursor changed.\n */\n private recheckHoverState(): void {\n if (this._isDestroyed || !this._hasPointer) return\n if (this.capturedRenderable) return\n\n const hitId = this.hitTest(this._latestPointer.x, this._latestPointer.y)\n const hitRenderable = Renderable.renderablesByNumber.get(hitId)\n const lastOver = this.lastOverRenderable\n\n // No change\n if (lastOver?.num === hitId) {\n this.lastOverRenderableNum = hitId\n return\n }\n\n const baseEvent: RawMouseEvent = {\n type: \"move\",\n button: 0,\n x: this._latestPointer.x,\n y: this._latestPointer.y,\n modifiers: this._lastPointerModifiers,\n }\n\n // Fire out on old element\n if (lastOver && !lastOver.isDestroyed) {\n const event = new MouseEvent(lastOver, { ...baseEvent, type: \"out\" })\n lastOver.processMouseEvent(event)\n }\n\n this.lastOverRenderable = hitRenderable\n this.lastOverRenderableNum = hitId\n\n // Fire over on new element\n if (hitRenderable) {\n const event = new MouseEvent(hitRenderable, {\n ...baseEvent,\n type: \"over\",\n })\n hitRenderable.processMouseEvent(event)\n }\n }\n public setMousePointer(style: MousePointerStyle): void {\n this._currentMousePointerStyle = style\n this.lib.setCursorStyleOptions(this.rendererPtr, { cursor: style })\n }\n\n public hitTest(x: number, y: number): number {\n return this.lib.checkHit(this.rendererPtr, x, y)\n }\n\n private takeMemorySnapshot(): void {\n if (this._isDestroyed) return\n\n const memoryUsage = process.memoryUsage()\n this.lastMemorySnapshot = {\n heapUsed: memoryUsage.heapUsed,\n heapTotal: memoryUsage.heapTotal,\n arrayBuffers: memoryUsage.arrayBuffers,\n }\n\n this.lib.updateMemoryStats(\n this.rendererPtr,\n this.lastMemorySnapshot.heapUsed,\n this.lastMemorySnapshot.heapTotal,\n this.lastMemorySnapshot.arrayBuffers,\n )\n\n this.emit(CliRenderEvents.MEMORY_SNAPSHOT, this.lastMemorySnapshot)\n }\n\n private startMemorySnapshotTimer(): void {\n this.stopMemorySnapshotTimer()\n\n this.memorySnapshotTimer = this.clock.setInterval(() => {\n this.takeMemorySnapshot()\n }, this.memorySnapshotInterval)\n }\n\n private stopMemorySnapshotTimer(): void {\n if (this.memorySnapshotTimer) {\n this.clock.clearInterval(this.memorySnapshotTimer)\n this.memorySnapshotTimer = null\n }\n }\n\n public setMemorySnapshotInterval(interval: number): void {\n this.memorySnapshotInterval = interval\n\n if (this._isRunning && interval > 0) {\n this.startMemorySnapshotTimer()\n } else if (interval <= 0 && this.memorySnapshotTimer) {\n this.clock.clearInterval(this.memorySnapshotTimer)\n this.memorySnapshotTimer = null\n }\n }\n\n private handleResize(width: number, height: number): void {\n if (this._isDestroyed) return\n if (this._splitHeight > 0) {\n this.processResize(width, height)\n return\n }\n\n if (this.resizeTimeoutId !== null) {\n this.clock.clearTimeout(this.resizeTimeoutId)\n this.resizeTimeoutId = null\n }\n\n this.resizeTimeoutId = this.clock.setTimeout(() => {\n this.resizeTimeoutId = null\n this.processResize(width, height)\n }, this.resizeDebounceDelay)\n }\n\n private queryPixelResolution() {\n this.waitingForPixelResolution = true\n this.updateStdinParserProtocolContext({ pixelResolutionQueryActive: true })\n this.lib.queryPixelResolution(this.rendererPtr)\n }\n\n private processResize(width: number, height: number): void {\n if (width === this._terminalWidth && height === this._terminalHeight) return\n\n const prevWidth = this._terminalWidth\n\n this._terminalWidth = width\n this._terminalHeight = height\n this.queryPixelResolution()\n\n this.setCapturedRenderable(undefined)\n this.stdinParser?.resetMouseState()\n\n if (this._splitHeight > 0) {\n // TODO: Handle resizing split mode properly\n if (width < prevWidth) {\n const start = this._terminalHeight - this._splitHeight * 2\n const flush = ANSI.moveCursorAndClear(start, 1)\n this.writeOut(flush)\n }\n this.renderOffset = height - this._splitHeight\n this.width = width\n this.height = this._splitHeight\n this.currentRenderBuffer.clear(this.backgroundColor)\n this.lib.setRenderOffset(this.rendererPtr, this.renderOffset)\n } else {\n this.width = width\n this.height = height\n }\n\n this.lib.resizeRenderer(this.rendererPtr, this.width, this.height)\n this.nextRenderBuffer = this.lib.getNextBuffer(this.rendererPtr)\n this.currentRenderBuffer = this.lib.getCurrentBuffer(this.rendererPtr)\n this._console.resize(this.width, this.height)\n this.root.resize(this.width, this.height)\n this.emit(CliRenderEvents.RESIZE, this.width, this.height)\n this.requestRender()\n }\n\n public setBackgroundColor(color: ColorInput): void {\n const parsedColor = parseColor(color)\n this.lib.setBackgroundColor(this.rendererPtr, parsedColor as RGBA)\n this.backgroundColor = parsedColor as RGBA\n this.nextRenderBuffer.clear(parsedColor as RGBA)\n this.requestRender()\n }\n\n public toggleDebugOverlay(): void {\n const willBeEnabled = !this.debugOverlay.enabled\n\n if (willBeEnabled && !this.memorySnapshotInterval) {\n this.memorySnapshotInterval = 3000\n this.startMemorySnapshotTimer()\n this.automaticMemorySnapshot = true\n } else if (!willBeEnabled && this.automaticMemorySnapshot) {\n this.stopMemorySnapshotTimer()\n this.memorySnapshotInterval = 0\n this.automaticMemorySnapshot = false\n }\n\n this.debugOverlay.enabled = !this.debugOverlay.enabled\n this.lib.setDebugOverlay(this.rendererPtr, this.debugOverlay.enabled, this.debugOverlay.corner)\n this.emit(CliRenderEvents.DEBUG_OVERLAY_TOGGLE, this.debugOverlay.enabled)\n this.requestRender()\n }\n\n public configureDebugOverlay(options: { enabled?: boolean; corner?: DebugOverlayCorner }): void {\n this.debugOverlay.enabled = options.enabled ?? this.debugOverlay.enabled\n this.debugOverlay.corner = options.corner ?? this.debugOverlay.corner\n this.lib.setDebugOverlay(this.rendererPtr, this.debugOverlay.enabled, this.debugOverlay.corner)\n this.requestRender()\n }\n\n public setTerminalTitle(title: string): void {\n this.lib.setTerminalTitle(this.rendererPtr, title)\n }\n\n public copyToClipboardOSC52(text: string, target?: ClipboardTarget): boolean {\n return this.clipboard.copyToClipboardOSC52(text, target)\n }\n\n public clearClipboardOSC52(target?: ClipboardTarget): boolean {\n return this.clipboard.clearClipboardOSC52(target)\n }\n\n public isOsc52Supported(): boolean {\n return this._capabilities?.osc52 ?? this.clipboard.isOsc52Supported()\n }\n\n public dumpHitGrid(): void {\n this.lib.dumpHitGrid(this.rendererPtr)\n }\n\n public dumpBuffers(timestamp?: number): void {\n this.lib.dumpBuffers(this.rendererPtr, timestamp)\n }\n\n public dumpStdoutBuffer(timestamp?: number): void {\n this.lib.dumpStdoutBuffer(this.rendererPtr, timestamp)\n }\n\n public static setCursorPosition(renderer: CliRenderer, x: number, y: number, visible: boolean = true): void {\n const lib = resolveRenderLib()\n lib.setCursorPosition(renderer.rendererPtr, x, y, visible)\n }\n\n public static setCursorStyle(renderer: CliRenderer, options: CursorStyleOptions): void {\n const lib = resolveRenderLib()\n lib.setCursorStyleOptions(renderer.rendererPtr, options)\n if (options.cursor !== undefined) {\n renderer._currentMousePointerStyle = options.cursor\n }\n }\n\n public static setCursorColor(renderer: CliRenderer, color: RGBA): void {\n const lib = resolveRenderLib()\n lib.setCursorColor(renderer.rendererPtr, color)\n }\n\n public setCursorPosition(x: number, y: number, visible: boolean = true): void {\n this.lib.setCursorPosition(this.rendererPtr, x, y, visible)\n }\n\n public setCursorStyle(options: CursorStyleOptions): void {\n this.lib.setCursorStyleOptions(this.rendererPtr, options)\n if (options.cursor !== undefined) {\n this._currentMousePointerStyle = options.cursor\n }\n }\n\n public setCursorColor(color: RGBA): void {\n this.lib.setCursorColor(this.rendererPtr, color)\n }\n\n public getCursorState() {\n return this.lib.getCursorState(this.rendererPtr)\n }\n\n public addPostProcessFn(processFn: (buffer: OptimizedBuffer, deltaTime: number) => void): void {\n this.postProcessFns.push(processFn)\n }\n\n public removePostProcessFn(processFn: (buffer: OptimizedBuffer, deltaTime: number) => void): void {\n this.postProcessFns = this.postProcessFns.filter((fn) => fn !== processFn)\n }\n\n public clearPostProcessFns(): void {\n this.postProcessFns = []\n }\n\n public setFrameCallback(callback: (deltaTime: number) => Promise<void>): void {\n this.frameCallbacks.push(callback)\n }\n\n public removeFrameCallback(callback: (deltaTime: number) => Promise<void>): void {\n this.frameCallbacks = this.frameCallbacks.filter((cb) => cb !== callback)\n }\n\n public clearFrameCallbacks(): void {\n this.frameCallbacks = []\n }\n\n public requestLive(): void {\n this.liveRequestCounter++\n\n if (this._controlState === RendererControlState.IDLE && this.liveRequestCounter > 0) {\n this._controlState = RendererControlState.AUTO_STARTED\n this.internalStart()\n }\n }\n\n public dropLive(): void {\n this.liveRequestCounter = Math.max(0, this.liveRequestCounter - 1)\n\n if (this._controlState === RendererControlState.AUTO_STARTED && this.liveRequestCounter === 0) {\n this._controlState = RendererControlState.IDLE\n this.internalPause()\n }\n }\n\n public start(): void {\n this._controlState = RendererControlState.EXPLICIT_STARTED\n this.internalStart()\n }\n\n public auto(): void {\n this._controlState = this._isRunning ? RendererControlState.AUTO_STARTED : RendererControlState.IDLE\n }\n\n private internalStart(): void {\n if (!this._isRunning && !this._isDestroyed) {\n this._isRunning = true\n\n // Invalidate any queued idle one-shot frame.\n // start()/live/resume transition to the continuous loop, so queued\n // activateFrame callbacks must no-op via !updateScheduled.\n this.updateScheduled = false\n\n if (this.memorySnapshotInterval > 0) {\n this.startMemorySnapshotTimer()\n }\n\n this.startRenderLoop()\n }\n }\n\n public pause(): void {\n this._controlState = RendererControlState.EXPLICIT_PAUSED\n this.internalPause()\n }\n\n public suspend(): void {\n this._previousControlState = this._controlState\n\n this._controlState = RendererControlState.EXPLICIT_SUSPENDED\n this.internalPause()\n\n this._suspendedMouseEnabled = this._useMouse\n\n this.disableMouse()\n this.removeExitListeners()\n this.waitingForPixelResolution = false\n this.updateStdinParserProtocolContext({\n privateCapabilityRepliesActive: false,\n pixelResolutionQueryActive: false,\n explicitWidthCprActive: false,\n })\n this.stdinParser?.reset()\n this.stdin.removeListener(\"data\", this.stdinListener)\n this.lib.suspendRenderer(this.rendererPtr)\n\n if (this.stdin.setRawMode) {\n this.stdin.setRawMode(false)\n }\n\n this.stdin.pause()\n }\n\n public resume(): void {\n if (this.stdin.setRawMode) {\n this.stdin.setRawMode(true)\n }\n\n // Drain any input buffered during suspension before registering the\n // listener. Adding a \"data\" listener can auto-resume a Readable, so the\n // drain must come first while the stream is still paused and read()\n // pulls from the internal buffer rather than being a flowing-mode no-op.\n while (this.stdin.read() !== null) {}\n this.stdin.on(\"data\", this.stdinListener)\n this.stdin.resume()\n this.addExitListeners()\n\n this.lib.resumeRenderer(this.rendererPtr)\n\n if (this._suspendedMouseEnabled) {\n this.enableMouse()\n }\n\n this.currentRenderBuffer.clear(this.backgroundColor)\n this._controlState = this._previousControlState\n\n if (\n this._previousControlState === RendererControlState.AUTO_STARTED ||\n this._previousControlState === RendererControlState.EXPLICIT_STARTED\n ) {\n this.internalStart()\n } else {\n this.requestRender()\n }\n }\n\n private internalPause(): void {\n this._isRunning = false\n\n if (this.renderTimeout) {\n this.clock.clearTimeout(this.renderTimeout)\n this.renderTimeout = null\n }\n\n if (!this.rendering) {\n this.resolveIdleIfNeeded()\n }\n }\n\n public stop(): void {\n this._controlState = RendererControlState.EXPLICIT_STOPPED\n this.internalStop()\n }\n\n private internalStop(): void {\n if (this.isRunning && !this._isDestroyed) {\n this._isRunning = false\n\n if (this.memorySnapshotTimer) {\n this.clock.clearInterval(this.memorySnapshotTimer)\n this.memorySnapshotTimer = null\n }\n\n if (this.renderTimeout) {\n this.clock.clearTimeout(this.renderTimeout)\n this.renderTimeout = null\n }\n\n // If we're currently rendering, the frame will resolve idle when it completes\n // Otherwise, resolve immediately\n if (!this.rendering) {\n this.resolveIdleIfNeeded()\n }\n }\n }\n\n public destroy(): void {\n if (this._isDestroyed) return\n this._isDestroyed = true\n this._destroyPending = true\n\n if (this.rendering) {\n // Restore terminal/input state immediately, but defer full native teardown until the frame unwinds.\n this.prepareDestroyDuringRender()\n return\n }\n\n this.finalizeDestroy()\n }\n\n private cleanupBeforeDestroy(): void {\n if (this._destroyCleanupPrepared) return\n this._destroyCleanupPrepared = true\n\n process.removeListener(\"SIGWINCH\", this.sigwinchHandler)\n process.removeListener(\"uncaughtException\", this.handleError)\n process.removeListener(\"unhandledRejection\", this.handleError)\n process.removeListener(\"warning\", this.warningHandler)\n process.removeListener(\"beforeExit\", this.exitHandler)\n capture.removeListener(\"write\", this.captureCallback)\n this.removeExitListeners()\n\n if (this.resizeTimeoutId !== null) {\n this.clock.clearTimeout(this.resizeTimeoutId)\n this.resizeTimeoutId = null\n }\n\n if (this.capabilityTimeoutId !== null) {\n this.clock.clearTimeout(this.capabilityTimeoutId)\n this.capabilityTimeoutId = null\n }\n\n if (this.memorySnapshotTimer) {\n this.clock.clearInterval(this.memorySnapshotTimer)\n this.memorySnapshotTimer = null\n }\n\n if (this.renderTimeout) {\n this.clock.clearTimeout(this.renderTimeout)\n this.renderTimeout = null\n }\n\n this._isRunning = false\n this.waitingForPixelResolution = false\n this.updateStdinParserProtocolContext(\n {\n privateCapabilityRepliesActive: false,\n pixelResolutionQueryActive: false,\n explicitWidthCprActive: false,\n },\n true,\n )\n this.setCapturedRenderable(undefined)\n\n this.stdin.removeListener(\"data\", this.stdinListener)\n if (this.stdin.setRawMode) {\n this.stdin.setRawMode(false)\n }\n\n this.externalOutputMode = \"passthrough\"\n\n if (this._splitHeight > 0) {\n this.flushStdoutCache(this._splitHeight, true)\n }\n }\n\n private prepareDestroyDuringRender(): void {\n this.cleanupBeforeDestroy()\n this.lib.suspendRenderer(this.rendererPtr)\n }\n\n private finalizeDestroy(): void {\n if (this._destroyFinalized) return\n\n this._destroyFinalized = true\n this._destroyPending = false\n\n this.cleanupBeforeDestroy()\n\n // Clean up palette detector\n if (this._paletteDetector) {\n this._paletteDetector.cleanup()\n this._paletteDetector = null\n }\n this._paletteDetectionPromise = null\n this._cachedPalette = null\n\n this.emit(CliRenderEvents.DESTROY)\n\n try {\n this.root.destroyRecursively()\n } catch (e) {\n console.error(\"Error destroying root renderable:\", e instanceof Error ? e.stack : String(e))\n }\n\n this.stdinParser?.destroy()\n this.stdinParser = null\n this.oscSubscribers.clear()\n this._console.destroy()\n\n this.lib.destroyRenderer(this.rendererPtr)\n rendererTracker.removeRenderer(this)\n\n if (this._onDestroy) {\n try {\n this._onDestroy()\n } catch (e) {\n console.error(\"Error in onDestroy callback:\", e instanceof Error ? e.stack : String(e))\n }\n }\n\n // Resolve any pending idle() calls\n this.resolveIdleIfNeeded()\n }\n\n private startRenderLoop(): void {\n if (!this._isRunning) return\n\n this.lastTime = this.normalizeClockTime(this.clock.now(), 0)\n this.frameCount = 0\n this.lastFpsTime = this.lastTime\n this.currentFps = 0\n\n this.loop()\n }\n\n private async loop(): Promise<void> {\n if (this.rendering || this._isDestroyed) return\n this.renderTimeout = null\n\n this.rendering = true\n if (this.renderTimeout) {\n this.clock.clearTimeout(this.renderTimeout)\n this.renderTimeout = null\n }\n try {\n const now = this.normalizeClockTime(this.clock.now(), this.lastTime)\n const elapsed = this.getElapsedMs(now, this.lastTime)\n\n const deltaTime = elapsed\n this.lastTime = now\n\n this.frameCount++\n if (this.getElapsedMs(now, this.lastFpsTime) >= 1000) {\n this.currentFps = this.frameCount\n this.frameCount = 0\n this.lastFpsTime = now\n }\n\n this.renderStats.frameCount++\n this.renderStats.fps = this.currentFps\n const overallStart = performance.now()\n\n const frameRequests = Array.from(this.animationRequest.values())\n this.animationRequest.clear()\n const animationRequestStart = performance.now()\n for (const callback of frameRequests) {\n callback(deltaTime)\n this.dropLive()\n }\n const animationRequestEnd = performance.now()\n const animationRequestTime = animationRequestEnd - animationRequestStart\n\n const start = performance.now()\n for (const frameCallback of this.frameCallbacks) {\n try {\n await frameCallback(deltaTime)\n } catch (error) {\n console.error(\"Error in frame callback:\", error)\n }\n }\n const end = performance.now()\n this.renderStats.frameCallbackTime = end - start\n\n this.root.render(this.nextRenderBuffer, deltaTime)\n\n for (const postProcessFn of this.postProcessFns) {\n postProcessFn(this.nextRenderBuffer, deltaTime)\n }\n\n this._console.renderToBuffer(this.nextRenderBuffer)\n\n // If destroy() was requested during this frame, skip native work and scheduling.\n if (!this._isDestroyed) {\n this.renderNative()\n\n // Check if hit grid changed and recheck hover state if needed\n if (this._useMouse && this.lib.getHitGridDirty(this.rendererPtr)) {\n this.recheckHoverState()\n }\n\n const overallFrameTime = performance.now() - overallStart\n\n // TODO: Add animationRequestTime to stats\n this.lib.updateStats(\n this.rendererPtr,\n overallFrameTime,\n this.renderStats.fps,\n this.renderStats.frameCallbackTime,\n )\n\n if (this.gatherStats) {\n this.collectStatSample(overallFrameTime)\n }\n\n if (this._isRunning || this.immediateRerenderRequested) {\n const targetFrameTime = this.immediateRerenderRequested ? this.minTargetFrameTime : this.targetFrameTime\n const delay = Math.max(1, targetFrameTime - Math.floor(overallFrameTime))\n this.immediateRerenderRequested = false\n this.renderTimeout = this.clock.setTimeout(() => {\n this.renderTimeout = null\n this.loop()\n }, delay)\n } else {\n this.clock.clearTimeout(this.renderTimeout!)\n this.renderTimeout = null\n }\n }\n } finally {\n this.rendering = false\n if (this._destroyPending) {\n this.finalizeDestroy()\n }\n this.resolveIdleIfNeeded()\n }\n }\n\n public intermediateRender(): void {\n this.immediateRerenderRequested = true\n this.loop()\n }\n\n private renderNative(): void {\n if (this.renderingNative) {\n console.error(\"Rendering called concurrently\")\n throw new Error(\"Rendering called concurrently\")\n }\n\n let force = false\n if (this._splitHeight > 0) {\n // TODO: Flickering could maybe be even more reduced by moving the flush to the native layer,\n // to output the flush with the buffered writer, after the render is done.\n force = this.flushStdoutCache(this._splitHeight)\n }\n\n this.renderingNative = true\n this.lib.render(this.rendererPtr, force)\n // this.dumpStdoutBuffer(Date.now())\n this.renderingNative = false\n }\n\n private collectStatSample(frameTime: number): void {\n this.frameTimes.push(frameTime)\n if (this.frameTimes.length > this.maxStatSamples) {\n this.frameTimes.shift()\n }\n }\n\n public getStats(): {\n fps: number\n frameCount: number\n frameTimes: number[]\n averageFrameTime: number\n minFrameTime: number\n maxFrameTime: number\n } {\n const frameTimes = [...this.frameTimes]\n const sum = frameTimes.reduce((acc, time) => acc + time, 0)\n const avg = frameTimes.length ? sum / frameTimes.length : 0\n const min = frameTimes.length ? Math.min(...frameTimes) : 0\n const max = frameTimes.length ? Math.max(...frameTimes) : 0\n\n return {\n fps: this.renderStats.fps,\n frameCount: this.renderStats.frameCount,\n frameTimes,\n averageFrameTime: avg,\n minFrameTime: min,\n maxFrameTime: max,\n }\n }\n\n public resetStats(): void {\n this.frameTimes = []\n this.renderStats.frameCount = 0\n }\n\n public setGatherStats(enabled: boolean): void {\n this.gatherStats = enabled\n if (!enabled) {\n this.frameTimes = []\n }\n }\n\n public getSelection(): Selection | null {\n return this.currentSelection\n }\n\n public get hasSelection(): boolean {\n return !!this.currentSelection\n }\n\n public getSelectionContainer(): Renderable | null {\n return this.selectionContainers.length > 0 ? this.selectionContainers[this.selectionContainers.length - 1] : null\n }\n\n public clearSelection(): void {\n if (this.currentSelection) {\n for (const renderable of this.currentSelection.touchedRenderables) {\n if (renderable.selectable && !renderable.isDestroyed) {\n renderable.onSelectionChanged(null)\n }\n }\n this.currentSelection = null\n }\n this.selectionContainers = []\n }\n\n /**\n * Start a new selection at the given coordinates.\n * Used by both mouse and keyboard selection.\n */\n public startSelection(renderable: Renderable, x: number, y: number): void {\n if (!renderable.selectable) return\n\n this.clearSelection()\n this.selectionContainers.push(renderable.parent || this.root)\n this.currentSelection = new Selection(renderable, { x, y }, { x, y })\n this.currentSelection.isStart = true\n\n this.notifySelectablesOfSelectionChange()\n }\n\n public updateSelection(\n currentRenderable: Renderable | undefined,\n x: number,\n y: number,\n options?: { finishDragging?: boolean },\n ): void {\n if (this.currentSelection) {\n this.currentSelection.isStart = false\n this.currentSelection.focus = { x, y }\n\n if (options?.finishDragging) {\n this.currentSelection.isDragging = false\n }\n\n if (this.selectionContainers.length > 0) {\n const currentContainer = this.selectionContainers[this.selectionContainers.length - 1]\n\n if (!currentRenderable || !this.isWithinContainer(currentRenderable, currentContainer)) {\n const parentContainer = currentContainer.parent || this.root\n this.selectionContainers.push(parentContainer)\n } else if (currentRenderable && this.selectionContainers.length > 1) {\n let containerIndex = this.selectionContainers.indexOf(currentRenderable)\n\n if (containerIndex === -1) {\n const immediateParent = currentRenderable.parent || this.root\n containerIndex = this.selectionContainers.indexOf(immediateParent)\n }\n\n if (containerIndex !== -1 && containerIndex < this.selectionContainers.length - 1) {\n this.selectionContainers = this.selectionContainers.slice(0, containerIndex + 1)\n }\n }\n }\n\n this.notifySelectablesOfSelectionChange()\n }\n }\n\n public requestSelectionUpdate(): void {\n if (this.currentSelection?.isDragging) {\n const pointer = this._latestPointer\n\n const maybeRenderableId = this.hitTest(pointer.x, pointer.y)\n const maybeRenderable = Renderable.renderablesByNumber.get(maybeRenderableId)\n\n this.updateSelection(maybeRenderable, pointer.x, pointer.y)\n }\n }\n\n private isWithinContainer(renderable: Renderable, container: Renderable): boolean {\n let current: Renderable | null = renderable\n while (current) {\n if (current === container) return true\n current = current.parent\n }\n return false\n }\n\n private finishSelection(): void {\n if (this.currentSelection) {\n this.currentSelection.isDragging = false\n this.emit(CliRenderEvents.SELECTION, this.currentSelection)\n this.notifySelectablesOfSelectionChange()\n }\n }\n\n private notifySelectablesOfSelectionChange(): void {\n const selectedRenderables: Renderable[] = []\n const touchedRenderables: Renderable[] = []\n const currentContainer =\n this.selectionContainers.length > 0 ? this.selectionContainers[this.selectionContainers.length - 1] : this.root\n\n if (this.currentSelection) {\n this.walkSelectableRenderables(\n currentContainer,\n this.currentSelection.bounds,\n selectedRenderables,\n touchedRenderables,\n )\n\n for (const renderable of this.currentSelection.touchedRenderables) {\n if (!touchedRenderables.includes(renderable) && !renderable.isDestroyed) {\n renderable.onSelectionChanged(null)\n }\n }\n\n this.currentSelection.updateSelectedRenderables(selectedRenderables)\n this.currentSelection.updateTouchedRenderables(touchedRenderables)\n }\n }\n\n private walkSelectableRenderables(\n container: Renderable,\n selectionBounds: ViewportBounds,\n selectedRenderables: Renderable[],\n touchedRenderables: Renderable[],\n ): void {\n const children = getObjectsInViewport<Renderable>(\n selectionBounds,\n container.getChildrenSortedByPrimaryAxis(),\n container.primaryAxis,\n 0, // padding\n 0, // minTriggerSize - always perform overlap checks for selection\n )\n\n for (const child of children) {\n if (child.selectable) {\n const hasSelection = child.onSelectionChanged(this.currentSelection)\n if (hasSelection) {\n selectedRenderables.push(child)\n }\n touchedRenderables.push(child)\n }\n if (child.getChildrenCount() > 0) {\n this.walkSelectableRenderables(child, selectionBounds, selectedRenderables, touchedRenderables)\n }\n }\n }\n\n public get paletteDetectionStatus(): \"idle\" | \"detecting\" | \"cached\" {\n if (this._cachedPalette) return \"cached\"\n if (this._paletteDetectionPromise) return \"detecting\"\n return \"idle\"\n }\n\n public clearPaletteCache(): void {\n this._cachedPalette = null\n }\n\n /**\n * Detects the terminal's color palette\n *\n * @returns Promise resolving to TerminalColors object containing palette and special colors\n * @throws Error if renderer is suspended\n */\n public async getPalette(options?: GetPaletteOptions): Promise<TerminalColors> {\n if (this._controlState === RendererControlState.EXPLICIT_SUSPENDED) {\n throw new Error(\"Cannot detect palette while renderer is suspended\")\n }\n\n const requestedSize = options?.size ?? 16\n\n if (this._cachedPalette && this._cachedPalette.palette.length !== requestedSize) {\n this._cachedPalette = null\n }\n\n if (this._cachedPalette) {\n return this._cachedPalette\n }\n\n if (this._paletteDetectionPromise) {\n return this._paletteDetectionPromise\n }\n\n if (!this._paletteDetector) {\n const isLegacyTmux =\n this.capabilities?.terminal?.name?.toLowerCase()?.includes(\"tmux\") &&\n this.capabilities?.terminal?.version?.localeCompare(\"3.6\") < 0\n this._paletteDetector = createTerminalPalette(\n this.stdin,\n this.stdout,\n this.writeOut.bind(this),\n isLegacyTmux,\n {\n subscribeOsc: this.subscribeOsc.bind(this),\n },\n this.clock,\n )\n }\n\n this._paletteDetectionPromise = this._paletteDetector.detect(options).then((result) => {\n this._cachedPalette = result\n this._paletteDetectionPromise = null\n return result\n })\n\n return this._paletteDetectionPromise\n }\n}\n",
61
61
  "import type { ViewportBounds } from \"../types.js\"\n\ninterface ViewportObject {\n x: number\n y: number\n width: number\n height: number\n zIndex: number\n}\n\n/**\n * Returns objects that overlap with the viewport bounds.\n *\n * @param viewport - The viewport bounds to check against\n * @param objects - Array of objects MUST be sorted by position (y for column, x for row direction)\n * @param direction - Primary scroll direction: \"column\" (vertical) or \"row\" (horizontal)\n * @param padding - Extra padding around viewport to include nearby objects\n * @param minTriggerSize - Minimum array size to use binary search optimization\n * @returns Array of visible objects sorted by zIndex\n *\n * @remarks\n * Objects must be pre-sorted by their start position (y for column direction, x for row direction).\n * Unsorted input will produce incorrect results.\n */\nexport function getObjectsInViewport<T extends ViewportObject>(\n viewport: ViewportBounds,\n objects: T[],\n direction: \"row\" | \"column\" = \"column\",\n padding: number = 10,\n minTriggerSize: number = 16,\n): T[] {\n if (viewport.width <= 0 || viewport.height <= 0) {\n return []\n }\n\n if (objects.length === 0) {\n return []\n }\n\n if (objects.length < minTriggerSize) {\n return objects\n }\n\n const viewportTop = viewport.y - padding\n const viewportBottom = viewport.y + viewport.height + padding\n const viewportLeft = viewport.x - padding\n const viewportRight = viewport.x + viewport.width + padding\n\n const isRow = direction === \"row\"\n\n const children = objects\n const totalChildren = children.length\n if (totalChildren === 0) return []\n\n const vpStart = isRow ? viewportLeft : viewportTop\n const vpEnd = isRow ? viewportRight : viewportBottom\n\n // Binary search to find any child that overlaps along the primary axis\n let lo = 0\n let hi = totalChildren - 1\n let candidate = -1\n while (lo <= hi) {\n const mid = (lo + hi) >> 1\n const c = children[mid]\n const start = isRow ? c.x : c.y\n const end = isRow ? c.x + c.width : c.y + c.height\n\n if (end < vpStart) {\n lo = mid + 1\n } else if (start > vpEnd) {\n hi = mid - 1\n } else {\n candidate = mid\n break\n }\n }\n\n const visibleChildren: T[] = []\n\n // If binary search found no candidate, the viewport might be in a gap between objects\n // Start from the position where the search ended\n if (candidate === -1) {\n // Binary search failed to find overlap - viewport is in a gap\n // We need to check objects before lo for any that extend into the viewport\n candidate = lo > 0 ? lo - 1 : 0\n }\n\n // Expand left to find all objects that overlap the viewport\n // To handle large objects that start early but extend far, we continue\n // checking even after finding objects that don't overlap, up to a limit\n // This handles cases where many small objects sit between a large object and the viewport\n // Real-world examples: background panels, large images, or spanning containers\n const maxLookBehind = 50\n let left = candidate\n let gapCount = 0\n\n while (left - 1 >= 0) {\n const prev = children[left - 1]\n const prevEnd = isRow ? prev.x + prev.width : prev.y + prev.height\n\n if (prevEnd <= vpStart) {\n gapCount++\n if (gapCount >= maxLookBehind) {\n break\n }\n } else {\n gapCount = 0\n }\n\n left--\n }\n\n // Expand right to find the rightmost overlapping object\n let right = candidate + 1\n while (right < totalChildren) {\n const next = children[right]\n if ((isRow ? next.x : next.y) >= vpEnd) break\n right++\n }\n\n // Collect candidates that also overlap on the cross axis\n for (let i = left; i < right; i++) {\n const child = children[i]\n const start = isRow ? child.x : child.y\n const end = isRow ? child.x + child.width : child.y + child.height\n\n // Check primary axis overlap (optimization: skip objects that don't overlap)\n if (end <= vpStart) continue\n if (start >= vpEnd) break\n\n // Check cross-axis overlap\n if (isRow) {\n const childBottom = child.y + child.height\n if (childBottom < viewportTop) continue\n const childTop = child.y\n if (childTop > viewportBottom) continue\n } else {\n const childRight = child.x + child.width\n if (childRight < viewportLeft) continue\n const childLeft = child.x\n if (childLeft > viewportRight) continue\n }\n\n visibleChildren.push(child)\n }\n\n // Sort by zIndex\n if (visibleChildren.length > 1) {\n visibleChildren.sort((a, b) => (a.zIndex > b.zIndex ? 1 : a.zIndex < b.zIndex ? -1 : 0))\n }\n\n return visibleChildren\n}\n",
62
62
  "/**\n * Terminal capability response detection utilities.\n *\n * Detects various terminal capability response sequences:\n * - DECRPM (DEC Request Mode): ESC[?...;N$y where N is 0,1,2,3,4\n * - CPR (Cursor Position Report): ESC[row;colR (used for width detection)\n * - XTVersion: ESC P >| ... ESC \\\n * - Kitty Graphics: ESC _ G ... ESC \\\n * - Kitty Keyboard Query: ESC[?Nu where N is 0,1,2,etc\n * - DA1 (Device Attributes): ESC[?...c\n * - Pixel Resolution: ESC[4;height;widtht\n */\n\n/**\n * Check if a sequence is a terminal capability response.\n * Returns true if the sequence matches any known capability response pattern.\n */\nexport function isCapabilityResponse(sequence: string): boolean {\n // DECRPM: ESC[?digits;digits$y\n if (/\\x1b\\[\\?\\d+(?:;\\d+)*\\$y/.test(sequence)) {\n return true\n }\n\n // CPR for explicit width/scaled text detection: ESC[1;NR where N >= 2\n // The column number tells us how many characters were rendered with width annotations\n // ESC[1;1R means no width support (cursor didn't move)\n // ESC[1;2R or higher means width support (cursor moved after rendering)\n // We accept any column >= 2 to handle cases where cursor wasn't at exact home position\n if (/\\x1b\\[1;(?!1R)\\d+R/.test(sequence)) {\n return true\n }\n\n // XTVersion: ESC P >| ... ESC \\\n if (/\\x1bP>\\|[\\s\\S]*?\\x1b\\\\/.test(sequence)) {\n return true\n }\n\n // Kitty graphics response: ESC _ G ... ESC \\\n // Matches any graphics response including OK, errors, etc.\n // This is for filtering capability responses from user input\n if (/\\x1b_G[\\s\\S]*?\\x1b\\\\/.test(sequence)) {\n return true\n }\n\n // Kitty keyboard query response: ESC[?Nu or ESC[?N;Mu (progressive enhancement)\n if (/\\x1b\\[\\?\\d+(?:;\\d+)?u/.test(sequence)) {\n return true\n }\n\n // DA1 (Device Attributes): ESC[?...c\n if (/\\x1b\\[\\?[0-9;]*c/.test(sequence)) {\n return true\n }\n\n return false\n}\n\n/**\n * Check if a sequence is a pixel resolution response.\n * Format: ESC[4;height;widtht\n */\nexport function isPixelResolutionResponse(sequence: string): boolean {\n return /\\x1b\\[4;\\d+;\\d+t/.test(sequence)\n}\n\n/**\n * Parse pixel resolution from response sequence.\n * Returns { width, height } or null if not a valid resolution response.\n */\nexport function parsePixelResolution(sequence: string): { width: number; height: number } | null {\n const match = sequence.match(/\\x1b\\[4;(\\d+);(\\d+)t/)\n if (match) {\n return {\n width: parseInt(match[2]),\n height: parseInt(match[1]),\n }\n }\n return null\n}\n"
63
63
  ],
64
- "mappings": "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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;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,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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",
65
- "debugId": "D3013A6779DE950364756E2164756E21",
64
+ "mappings": "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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;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,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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",
65
+ "debugId": "7AE492200477211D64756E2164756E21",
66
66
  "names": []
67
67
  }