@cascadetui/core 0.1.4 → 0.1.6
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.
- package/3d/Advanced3D.d.ts +161 -0
- package/3d/WGPURenderer.d.ts +13 -1
- package/3d/index.d.ts +1 -0
- package/3d.js +451 -6
- package/3d.js.map +5 -4
- package/Renderable.d.ts +4 -0
- package/{index-jx194wn1.js → index-rj3f00a6.js} +313 -36
- package/{index-jx194wn1.js.map → index-rj3f00a6.js.map} +7 -7
- package/index.js +205 -4
- package/index.js.map +4 -4
- package/lib/parse.mouse.d.ts +2 -2
- package/lib/stdin-buffer.d.ts +2 -1
- package/package.json +7 -7
- package/renderables/TextBufferRenderable.d.ts +16 -0
- package/renderables/TextNode.d.ts +8 -0
- package/renderer.d.ts +42 -2
- package/testing.js +1 -1
- package/types.d.ts +6 -0
|
@@ -12,14 +12,14 @@
|
|
|
12
12
|
"import { EventEmitter } from \"events\"\r\nimport { parseKeypress, type KeyEventType, type ParsedKey } from \"./parse.keypress\"\r\nimport { ANSI } from \"../ansi\"\r\n\r\nexport class KeyEvent implements ParsedKey {\r\n name: string\r\n ctrl: boolean\r\n meta: boolean\r\n shift: boolean\r\n option: boolean\r\n sequence: string\r\n number: boolean\r\n raw: string\r\n eventType: KeyEventType\r\n source: \"raw\" | \"kitty\"\r\n code?: string\r\n super?: boolean\r\n hyper?: boolean\r\n capsLock?: boolean\r\n numLock?: boolean\r\n baseCode?: number\r\n repeated?: boolean\r\n\r\n private _defaultPrevented: boolean = false\r\n private _propagationStopped: boolean = false\r\n\r\n constructor(key: ParsedKey) {\r\n this.name = key.name\r\n this.ctrl = key.ctrl\r\n this.meta = key.meta\r\n this.shift = key.shift\r\n this.option = key.option\r\n this.sequence = key.sequence\r\n this.number = key.number\r\n this.raw = key.raw\r\n this.eventType = key.eventType\r\n this.source = key.source\r\n this.code = key.code\r\n this.super = key.super\r\n this.hyper = key.hyper\r\n this.capsLock = key.capsLock\r\n this.numLock = key.numLock\r\n this.baseCode = key.baseCode\r\n this.repeated = key.repeated\r\n }\r\n\r\n get defaultPrevented(): boolean {\r\n return this._defaultPrevented\r\n }\r\n\r\n get propagationStopped(): boolean {\r\n return this._propagationStopped\r\n }\r\n\r\n preventDefault(): void {\r\n this._defaultPrevented = true\r\n }\r\n\r\n stopPropagation(): void {\r\n this._propagationStopped = true\r\n }\r\n}\r\n\r\nexport class PasteEvent {\r\n text: string\r\n private _defaultPrevented: boolean = false\r\n private _propagationStopped: boolean = false\r\n\r\n constructor(text: string) {\r\n this.text = text\r\n }\r\n\r\n get defaultPrevented(): boolean {\r\n return this._defaultPrevented\r\n }\r\n\r\n get propagationStopped(): boolean {\r\n return this._propagationStopped\r\n }\r\n\r\n preventDefault(): void {\r\n this._defaultPrevented = true\r\n }\r\n\r\n stopPropagation(): void {\r\n this._propagationStopped = true\r\n }\r\n}\r\n\r\nexport type KeyHandlerEventMap = {\r\n keypress: [KeyEvent]\r\n keyrelease: [KeyEvent]\r\n paste: [PasteEvent]\r\n}\r\n\r\nexport class KeyHandler extends EventEmitter<KeyHandlerEventMap> {\r\n protected useKittyKeyboard: boolean\r\n\r\n constructor(useKittyKeyboard: boolean = false) {\r\n super()\r\n this.useKittyKeyboard = useKittyKeyboard\r\n }\r\n\r\n public processInput(data: string): boolean {\r\n const parsedKey = parseKeypress(data, { useKittyKeyboard: this.useKittyKeyboard })\r\n\r\n if (!parsedKey) {\r\n return false\r\n }\r\n\r\n try {\r\n switch (parsedKey.eventType) {\r\n case \"press\":\r\n this.emit(\"keypress\", new KeyEvent(parsedKey))\r\n break\r\n case \"release\":\r\n this.emit(\"keyrelease\", new KeyEvent(parsedKey))\r\n break\r\n default:\r\n this.emit(\"keypress\", new KeyEvent(parsedKey))\r\n break\r\n }\r\n } catch (error) {\r\n console.error(`[KeyHandler] Error processing input:`, error)\r\n return true\r\n }\r\n\r\n return true\r\n }\r\n\r\n public processPaste(data: string): void {\r\n try {\r\n const cleanedData = Bun.stripANSI(data)\r\n this.emit(\"paste\", new PasteEvent(cleanedData))\r\n } catch (error) {\r\n console.error(`[KeyHandler] Error processing paste:`, error)\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * This class is used internally by the renderer to ensure global handlers\r\n * can preventDefault before renderable handlers process events.\r\n */\r\nexport class InternalKeyHandler extends KeyHandler {\r\n private renderableHandlers: Map<keyof KeyHandlerEventMap, Set<Function>> = new Map()\r\n\r\n constructor(useKittyKeyboard: boolean = false) {\r\n super(useKittyKeyboard)\r\n }\r\n\r\n public emit<K extends keyof KeyHandlerEventMap>(event: K, ...args: KeyHandlerEventMap[K]): boolean {\r\n return this.emitWithPriority(event, ...args)\r\n }\r\n\r\n private emitWithPriority<K extends keyof KeyHandlerEventMap>(event: K, ...args: KeyHandlerEventMap[K]): boolean {\r\n let hasGlobalListeners = false\r\n\r\n // Check if we should emit to global handlers\r\n // Global handlers are emitted using the parent EventEmitter which calls all listeners\r\n // We need to manually iterate to check for stopPropagation between handlers\r\n const globalListeners = this.listeners(event as any)\r\n if (globalListeners.length > 0) {\r\n hasGlobalListeners = true\r\n\r\n for (const listener of globalListeners) {\r\n try {\r\n listener(...args)\r\n } catch (error) {\r\n console.error(`[KeyHandler] Error in global ${event} handler:`, error)\r\n }\r\n\r\n // Check if propagation was stopped after this handler\r\n if (event === \"keypress\" || event === \"keyrelease\" || event === \"paste\") {\r\n const keyEvent = args[0]\r\n if (keyEvent.propagationStopped) {\r\n return hasGlobalListeners\r\n }\r\n }\r\n }\r\n }\r\n\r\n const renderableSet = this.renderableHandlers.get(event)\r\n // Snapshot the handler list so listeners added during dispatch (e.g., via focus changes)\r\n // do not receive the in-flight key event.\r\n const renderableHandlers = renderableSet && renderableSet.size > 0 ? [...renderableSet] : []\r\n let hasRenderableListeners = false\r\n\r\n if (renderableSet && renderableSet.size > 0) {\r\n hasRenderableListeners = true\r\n\r\n if (event === \"keypress\" || event === \"keyrelease\" || event === \"paste\") {\r\n const keyEvent = args[0]\r\n if (keyEvent.defaultPrevented) return hasGlobalListeners || hasRenderableListeners\r\n if (keyEvent.propagationStopped) return hasGlobalListeners || hasRenderableListeners\r\n }\r\n\r\n for (const handler of renderableHandlers) {\r\n try {\r\n handler(...args)\r\n } catch (error) {\r\n console.error(`[KeyHandler] Error in renderable ${event} handler:`, error)\r\n }\r\n\r\n // Check if propagation was stopped after this handler\r\n if (event === \"keypress\" || event === \"keyrelease\" || event === \"paste\") {\r\n const keyEvent = args[0]\r\n if (keyEvent.propagationStopped) {\r\n return hasGlobalListeners || hasRenderableListeners\r\n }\r\n }\r\n }\r\n }\r\n\r\n return hasGlobalListeners || hasRenderableListeners\r\n }\r\n\r\n public onInternal<K extends keyof KeyHandlerEventMap>(\r\n event: K,\r\n handler: (...args: KeyHandlerEventMap[K]) => void,\r\n ): void {\r\n if (!this.renderableHandlers.has(event)) {\r\n this.renderableHandlers.set(event, new Set())\r\n }\r\n this.renderableHandlers.get(event)!.add(handler)\r\n }\r\n\r\n public offInternal<K extends keyof KeyHandlerEventMap>(\r\n event: K,\r\n handler: (...args: KeyHandlerEventMap[K]) => void,\r\n ): void {\r\n const handlers = this.renderableHandlers.get(event)\r\n if (handlers) {\r\n handlers.delete(handler)\r\n }\r\n }\r\n}\r\n",
|
|
13
13
|
"export class RGBA {\r\n buffer: Float32Array\r\n\r\n constructor(buffer: Float32Array) {\r\n this.buffer = buffer\r\n }\r\n\r\n static fromArray(array: Float32Array) {\r\n return new RGBA(array)\r\n }\r\n\r\n static fromValues(r: number, g: number, b: number, a: number = 1.0) {\r\n return new RGBA(new Float32Array([r, g, b, a]))\r\n }\r\n\r\n static fromInts(r: number, g: number, b: number, a: number = 255) {\r\n return new RGBA(new Float32Array([r / 255, g / 255, b / 255, a / 255]))\r\n }\r\n\r\n static fromHex(hex: string): RGBA {\r\n return hexToRgb(hex)\r\n }\r\n\r\n toInts(): [number, number, number, number] {\r\n return [Math.round(this.r * 255), Math.round(this.g * 255), Math.round(this.b * 255), Math.round(this.a * 255)]\r\n }\r\n\r\n get r(): number {\r\n return this.buffer[0]\r\n }\r\n\r\n set r(value: number) {\r\n this.buffer[0] = value\r\n }\r\n\r\n get g(): number {\r\n return this.buffer[1]\r\n }\r\n\r\n set g(value: number) {\r\n this.buffer[1] = value\r\n }\r\n\r\n get b(): number {\r\n return this.buffer[2]\r\n }\r\n\r\n set b(value: number) {\r\n this.buffer[2] = value\r\n }\r\n\r\n get a(): number {\r\n return this.buffer[3]\r\n }\r\n\r\n set a(value: number) {\r\n this.buffer[3] = value\r\n }\r\n\r\n map<R>(fn: (value: number) => R) {\r\n return [fn(this.r), fn(this.g), fn(this.b), fn(this.a)]\r\n }\r\n\r\n toString() {\r\n return `rgba(${this.r.toFixed(2)}, ${this.g.toFixed(2)}, ${this.b.toFixed(2)}, ${this.a.toFixed(2)})`\r\n }\r\n\r\n equals(other?: RGBA): boolean {\r\n if (!other) return false\r\n return this.r === other.r && this.g === other.g && this.b === other.b && this.a === other.a\r\n }\r\n}\r\n\r\nexport type ColorInput = string | RGBA\r\n\r\nexport function hexToRgb(hex: string): RGBA {\r\n hex = hex.replace(/^#/, \"\")\r\n\r\n if (hex.length === 3) {\r\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2]\r\n } else if (hex.length === 4) {\r\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2] + hex[3] + hex[3]\r\n }\r\n\r\n if (!/^[0-9A-Fa-f]{6}$/.test(hex) && !/^[0-9A-Fa-f]{8}$/.test(hex)) {\r\n console.warn(`Invalid hex color: ${hex}, defaulting to magenta`)\r\n return RGBA.fromValues(1, 0, 1, 1)\r\n }\r\n\r\n const r = parseInt(hex.substring(0, 2), 16) / 255\r\n const g = parseInt(hex.substring(2, 4), 16) / 255\r\n const b = parseInt(hex.substring(4, 6), 16) / 255\r\n const a = hex.length === 8 ? parseInt(hex.substring(6, 8), 16) / 255 : 1\r\n\r\n return RGBA.fromValues(r, g, b, a)\r\n}\r\n\r\nexport function rgbToHex(rgb: RGBA): string {\r\n const components = rgb.a === 1 ? [rgb.r, rgb.g, rgb.b] : [rgb.r, rgb.g, rgb.b, rgb.a]\r\n return (\r\n \"#\" +\r\n components\r\n .map((x) => {\r\n const hex = Math.floor(Math.max(0, Math.min(1, x) * 255)).toString(16)\r\n return hex.length === 1 ? \"0\" + hex : hex\r\n })\r\n .join(\"\")\r\n )\r\n}\r\n\r\nexport function hsvToRgb(h: number, s: number, v: number): RGBA {\r\n let r = 0,\r\n g = 0,\r\n b = 0\r\n\r\n const i = Math.floor(h / 60) % 6\r\n const f = h / 60 - Math.floor(h / 60)\r\n const p = v * (1 - s)\r\n const q = v * (1 - f * s)\r\n const t = v * (1 - (1 - f) * s)\r\n\r\n switch (i) {\r\n case 0:\r\n r = v\r\n g = t\r\n b = p\r\n break\r\n case 1:\r\n r = q\r\n g = v\r\n b = p\r\n break\r\n case 2:\r\n r = p\r\n g = v\r\n b = t\r\n break\r\n case 3:\r\n r = p\r\n g = q\r\n b = v\r\n break\r\n case 4:\r\n r = t\r\n g = p\r\n b = v\r\n break\r\n case 5:\r\n r = v\r\n g = p\r\n b = q\r\n break\r\n }\r\n\r\n return RGBA.fromValues(r, g, b, 1)\r\n}\r\n\r\nconst CSS_COLOR_NAMES: Record<string, string> = {\r\n black: \"#000000\",\r\n white: \"#FFFFFF\",\r\n red: \"#FF0000\",\r\n green: \"#008000\",\r\n blue: \"#0000FF\",\r\n yellow: \"#FFFF00\",\r\n cyan: \"#00FFFF\",\r\n magenta: \"#FF00FF\",\r\n silver: \"#C0C0C0\",\r\n gray: \"#808080\",\r\n grey: \"#808080\",\r\n maroon: \"#800000\",\r\n olive: \"#808000\",\r\n lime: \"#00FF00\",\r\n aqua: \"#00FFFF\",\r\n teal: \"#008080\",\r\n navy: \"#000080\",\r\n fuchsia: \"#FF00FF\",\r\n purple: \"#800080\",\r\n orange: \"#FFA500\",\r\n brightblack: \"#666666\",\r\n brightred: \"#FF6666\",\r\n brightgreen: \"#66FF66\",\r\n brightblue: \"#6666FF\",\r\n brightyellow: \"#FFFF66\",\r\n brightcyan: \"#66FFFF\",\r\n brightmagenta: \"#FF66FF\",\r\n brightwhite: \"#FFFFFF\",\r\n}\r\n\r\nexport function parseColor(color: ColorInput): RGBA {\r\n if (typeof color === \"string\") {\r\n const lowerColor = color.toLowerCase()\r\n\r\n if (lowerColor === \"transparent\") {\r\n return RGBA.fromValues(0, 0, 0, 0)\r\n }\r\n\r\n if (CSS_COLOR_NAMES[lowerColor]) {\r\n return hexToRgb(CSS_COLOR_NAMES[lowerColor])\r\n }\r\n\r\n return hexToRgb(color)\r\n }\r\n return color\r\n}\r\n",
|
|
14
14
|
"import { OptimizedBuffer } from \"../buffer\"\r\nimport { parseColor, RGBA, type ColorInput } from \"./RGBA\"\r\nimport block from \"./fonts/block.json\"\r\nimport shade from \"./fonts/shade.json\"\r\nimport slick from \"./fonts/slick.json\"\r\nimport tiny from \"./fonts/tiny.json\"\r\nimport huge from \"./fonts/huge.json\"\r\nimport grid from \"./fonts/grid.json\"\r\nimport pallet from \"./fonts/pallet.json\"\r\n\r\n/*\r\n * Renders ASCII fonts to a buffer.\r\n * Font definitions plugged from cfonts - https://github.com/dominikwilkowski/cfonts\r\n */\r\n\r\nexport type ASCIIFontName = \"tiny\" | \"block\" | \"shade\" | \"slick\" | \"huge\" | \"grid\" | \"pallet\"\r\n\r\nexport const fonts = {\r\n tiny,\r\n block,\r\n shade,\r\n slick,\r\n huge,\r\n grid,\r\n pallet,\r\n}\r\n\r\ntype FontSegment = {\r\n text: string\r\n colorIndex: number\r\n}\r\n\r\ntype FontDefinition = {\r\n name: string\r\n lines: number\r\n letterspace_size: number\r\n letterspace: string[]\r\n colors?: number\r\n chars: Record<string, string[]>\r\n}\r\n\r\ntype ParsedFontDefinition = {\r\n name: string\r\n lines: number\r\n letterspace_size: number\r\n letterspace: string[]\r\n colors: number\r\n chars: Record<string, FontSegment[][]>\r\n}\r\n\r\nconst parsedFonts: Record<string, ParsedFontDefinition> = {}\r\n\r\nfunction parseColorTags(text: string): FontSegment[] {\r\n const segments: FontSegment[] = []\r\n let currentIndex = 0\r\n\r\n const colorTagRegex = /<c(\\d+)>(.*?)<\\/c\\d+>/g\r\n let lastIndex = 0\r\n let match\r\n\r\n while ((match = colorTagRegex.exec(text)) !== null) {\r\n if (match.index > lastIndex) {\r\n const plainText = text.slice(lastIndex, match.index)\r\n if (plainText) {\r\n segments.push({ text: plainText, colorIndex: 0 })\r\n }\r\n }\r\n\r\n const colorIndex = parseInt(match[1]) - 1\r\n const taggedText = match[2]\r\n segments.push({ text: taggedText, colorIndex: Math.max(0, colorIndex) })\r\n\r\n lastIndex = match.index + match[0].length\r\n }\r\n\r\n if (lastIndex < text.length) {\r\n const remainingText = text.slice(lastIndex)\r\n if (remainingText) {\r\n segments.push({ text: remainingText, colorIndex: 0 })\r\n }\r\n }\r\n\r\n return segments\r\n}\r\n\r\nfunction getParsedFont(fontKey: keyof typeof fonts): ParsedFontDefinition {\r\n if (!parsedFonts[fontKey]) {\r\n const fontDef = fonts[fontKey] as FontDefinition\r\n const parsedChars: Record<string, FontSegment[][]> = {}\r\n\r\n for (const [char, lines] of Object.entries(fontDef.chars)) {\r\n parsedChars[char] = lines.map((line) => parseColorTags(line))\r\n }\r\n\r\n parsedFonts[fontKey] = {\r\n ...fontDef,\r\n colors: fontDef.colors || 1,\r\n chars: parsedChars,\r\n }\r\n }\r\n\r\n return parsedFonts[fontKey]\r\n}\r\n\r\nexport function measureText({ text, font = \"tiny\" }: { text: string; font?: keyof typeof fonts }): {\r\n width: number\r\n height: number\r\n} {\r\n const fontDef = getParsedFont(font)\r\n if (!fontDef) {\r\n console.warn(`Font '${font}' not found`)\r\n return { width: 0, height: 0 }\r\n }\r\n\r\n let currentX = 0\r\n\r\n for (let i = 0; i < text.length; i++) {\r\n const char = text[i].toUpperCase()\r\n const charDef = fontDef.chars[char]\r\n\r\n if (!charDef) {\r\n const spaceChar = fontDef.chars[\" \"]\r\n if (spaceChar && spaceChar[0]) {\r\n let spaceWidth = 0\r\n for (const segment of spaceChar[0]) {\r\n spaceWidth += segment.text.length\r\n }\r\n currentX += spaceWidth\r\n } else {\r\n currentX += 1\r\n }\r\n continue\r\n }\r\n\r\n let charWidth = 0\r\n if (charDef[0]) {\r\n for (const segment of charDef[0]) {\r\n charWidth += segment.text.length\r\n }\r\n }\r\n\r\n currentX += charWidth\r\n\r\n if (i < text.length - 1) {\r\n currentX += fontDef.letterspace_size\r\n }\r\n }\r\n\r\n return {\r\n width: currentX,\r\n height: fontDef.lines,\r\n }\r\n}\r\n\r\nexport function getCharacterPositions(text: string, font: keyof typeof fonts = \"tiny\"): number[] {\r\n const fontDef = getParsedFont(font)\r\n if (!fontDef) {\r\n return [0]\r\n }\r\n\r\n const positions: number[] = [0]\r\n let currentX = 0\r\n\r\n for (let i = 0; i < text.length; i++) {\r\n const char = text[i].toUpperCase()\r\n const charDef = fontDef.chars[char]\r\n\r\n let charWidth = 0\r\n if (!charDef) {\r\n const spaceChar = fontDef.chars[\" \"]\r\n if (spaceChar && spaceChar[0]) {\r\n for (const segment of spaceChar[0]) {\r\n charWidth += segment.text.length\r\n }\r\n } else {\r\n charWidth = 1\r\n }\r\n } else if (charDef[0]) {\r\n for (const segment of charDef[0]) {\r\n charWidth += segment.text.length\r\n }\r\n }\r\n\r\n currentX += charWidth\r\n\r\n if (i < text.length - 1) {\r\n currentX += fontDef.letterspace_size\r\n }\r\n\r\n positions.push(currentX)\r\n }\r\n\r\n return positions\r\n}\r\n\r\nexport function coordinateToCharacterIndex(x: number, text: string, font: keyof typeof fonts = \"tiny\"): number {\r\n const positions = getCharacterPositions(text, font)\r\n\r\n if (x < 0) {\r\n return 0\r\n }\r\n\r\n for (let i = 0; i < positions.length - 1; i++) {\r\n const currentPos = positions[i]\r\n const nextPos = positions[i + 1]\r\n\r\n if (x >= currentPos && x < nextPos) {\r\n const charMidpoint = currentPos + (nextPos - currentPos) / 2\r\n return x < charMidpoint ? i : i + 1\r\n }\r\n }\r\n\r\n if (positions.length > 0 && x >= positions[positions.length - 1]) {\r\n return text.length\r\n }\r\n\r\n return 0\r\n}\r\n\r\nexport function renderFontToFrameBuffer(\r\n buffer: OptimizedBuffer,\r\n {\r\n text,\r\n x = 0,\r\n y = 0,\r\n color = [RGBA.fromInts(255, 255, 255, 255)],\r\n backgroundColor = RGBA.fromInts(0, 0, 0, 255),\r\n font = \"tiny\",\r\n }: {\r\n text: string\r\n x?: number\r\n y?: number\r\n color?: ColorInput | ColorInput[]\r\n backgroundColor?: ColorInput\r\n font?: keyof typeof fonts\r\n },\r\n): { width: number; height: number } {\r\n const width = buffer.width\r\n const height = buffer.height\r\n\r\n const fontDef = getParsedFont(font)\r\n if (!fontDef) {\r\n console.warn(`Font '${font}' not found`)\r\n return { width: 0, height: 0 }\r\n }\r\n\r\n const colors = Array.isArray(color) ? color : [color]\r\n\r\n if (y < 0 || y + fontDef.lines > height) {\r\n return { width: 0, height: fontDef.lines }\r\n }\r\n\r\n let currentX = x\r\n const startX = x\r\n\r\n for (let i = 0; i < text.length; i++) {\r\n const char = text[i].toUpperCase()\r\n const charDef = fontDef.chars[char]\r\n\r\n if (!charDef) {\r\n const spaceChar = fontDef.chars[\" \"]\r\n if (spaceChar && spaceChar[0]) {\r\n let spaceWidth = 0\r\n for (const segment of spaceChar[0]) {\r\n spaceWidth += segment.text.length\r\n }\r\n currentX += spaceWidth\r\n } else {\r\n currentX += 1\r\n }\r\n continue\r\n }\r\n\r\n let charWidth = 0\r\n if (charDef[0]) {\r\n for (const segment of charDef[0]) {\r\n charWidth += segment.text.length\r\n }\r\n }\r\n\r\n if (currentX >= width) break\r\n if (currentX + charWidth < 0) {\r\n currentX += charWidth + fontDef.letterspace_size\r\n continue\r\n }\r\n\r\n for (let lineIdx = 0; lineIdx < fontDef.lines && lineIdx < charDef.length; lineIdx++) {\r\n const segments = charDef[lineIdx]\r\n const renderY = y + lineIdx\r\n\r\n if (renderY >= 0 && renderY < height) {\r\n let segmentX = currentX\r\n\r\n for (const segment of segments) {\r\n const segmentColor = colors[segment.colorIndex] || colors[0]\r\n\r\n for (let charIdx = 0; charIdx < segment.text.length; charIdx++) {\r\n const renderX = segmentX + charIdx\r\n\r\n if (renderX >= 0 && renderX < width) {\r\n const fontChar = segment.text[charIdx]\r\n if (fontChar !== \" \") {\r\n buffer.setCellWithAlphaBlending(\r\n renderX,\r\n renderY,\r\n fontChar,\r\n parseColor(segmentColor),\r\n parseColor(backgroundColor),\r\n )\r\n }\r\n }\r\n }\r\n\r\n segmentX += segment.text.length\r\n }\r\n }\r\n }\r\n\r\n currentX += charWidth\r\n\r\n if (i < text.length - 1) {\r\n currentX += fontDef.letterspace_size\r\n }\r\n }\r\n\r\n return {\r\n width: currentX - startX,\r\n height: fontDef.lines,\r\n }\r\n}\r\n",
|
|
15
|
-
"import type { RGBA } from \"./lib/RGBA\"\r\nimport type { EventEmitter } from \"events\"\r\nimport type { Selection } from \"./lib/selection\"\
|
|
15
|
+
"import type { RGBA } from \"./lib/RGBA\"\r\nimport type { EventEmitter } from \"events\"\r\nimport type { Selection } from \"./lib/selection\"\nimport type { Renderable } from \"./Renderable\"\nimport type { InternalKeyHandler, KeyHandler } from \"./lib/KeyHandler\"\n\r\nexport const TextAttributes = {\r\n NONE: 0,\r\n BOLD: 1 << 0, // 1\r\n DIM: 1 << 1, // 2\r\n ITALIC: 1 << 2, // 4\r\n UNDERLINE: 1 << 3, // 8\r\n BLINK: 1 << 4, // 16\r\n INVERSE: 1 << 5, // 32\r\n HIDDEN: 1 << 6, // 64\r\n STRIKETHROUGH: 1 << 7, // 128\r\n}\r\n\r\n// Constants for attribute bit packing\r\nexport const ATTRIBUTE_BASE_BITS = 8\r\nexport const ATTRIBUTE_BASE_MASK = 0xff\r\n\r\n/**\r\n * Extract the base 8 bits of attributes from a u32 attribute value.\r\n * Currently we only use the first 8 bits for standard text attributes.\r\n */\r\nexport function getBaseAttributes(attr: number): number {\r\n return attr & ATTRIBUTE_BASE_MASK\r\n}\r\n\r\nexport type ThemeMode = \"dark\" | \"light\"\r\n\r\nexport type CursorStyle = \"block\" | \"line\" | \"underline\"\r\n\r\nexport type MousePointerStyle = \"default\" | \"pointer\" | \"text\" | \"crosshair\" | \"move\" | \"not-allowed\"\r\n\r\nexport interface CursorStyleOptions {\r\n style?: CursorStyle\r\n blinking?: boolean\r\n color?: RGBA\r\n cursor?: MousePointerStyle\r\n}\r\n\r\nexport enum DebugOverlayCorner {\r\n topLeft = 0,\r\n topRight = 1,\r\n bottomLeft = 2,\r\n bottomRight = 3,\r\n}\r\n\r\nexport type WidthMethod = \"wcwidth\" | \"unicode\"\r\n\r\nexport interface RendererEvents {\n resize: (width: number, height: number) => void\r\n key: (data: Buffer) => void\r\n \"memory:snapshot\": (snapshot: { heapUsed: number; heapTotal: number; arrayBuffers: number }) => void\r\n selection: (selection: Selection) => void\r\n \"debugOverlay:toggle\": (enabled: boolean) => void\n theme_mode: (mode: ThemeMode) => void\n crash: (report: { timestamp: string; source: string; message: string; stack?: string }) => void\n}\n\r\nexport interface RenderContext extends EventEmitter {\r\n addToHitGrid: (x: number, y: number, width: number, height: number, id: number) => void\r\n pushHitGridScissorRect: (x: number, y: number, width: number, height: number) => void\r\n popHitGridScissorRect: () => void\r\n clearHitGridScissorRects: () => void\r\n width: number\r\n height: number\r\n requestRender: () => void\r\n setCursorPosition: (x: number, y: number, visible: boolean) => void\r\n setCursorStyle: (options: CursorStyleOptions) => void\r\n setCursorColor: (color: RGBA) => void\r\n setMousePointer: (shape: MousePointerStyle) => void\r\n widthMethod: WidthMethod\r\n capabilities: any | null\r\n requestLive: () => void\r\n dropLive: () => void\r\n hasSelection: boolean\r\n getSelection: () => Selection | null\r\n requestSelectionUpdate: () => void\r\n currentFocusedRenderable: Renderable | null\r\n focusRenderable: (renderable: Renderable) => void\r\n registerLifecyclePass: (renderable: Renderable) => void\r\n unregisterLifecyclePass: (renderable: Renderable) => void\r\n getLifecyclePasses: () => Set<Renderable>\r\n keyInput: KeyHandler\r\n _internalKeyInput: InternalKeyHandler\r\n clearSelection: () => void\r\n startSelection: (renderable: Renderable, x: number, y: number) => void\r\n updateSelection: (\r\n currentRenderable: Renderable | undefined,\r\n x: number,\r\n y: number,\r\n options?: { finishDragging?: boolean },\r\n ) => void\r\n}\r\n\r\nexport type Timeout = ReturnType<typeof setTimeout> | undefined\r\n\r\nexport interface ViewportBounds {\r\n x: number\r\n y: number\r\n width: number\r\n height: number\r\n}\r\n\r\nexport interface Highlight {\r\n start: number\r\n end: number\r\n styleId: number\r\n priority?: number | null\r\n hlRef?: number | null\r\n}\r\n\r\nexport interface LineInfo {\r\n lineStarts: number[]\r\n lineWidths: number[]\r\n maxLineWidth: number\r\n lineSources: number[]\r\n lineWraps: number[]\r\n}\r\n\r\nexport interface LineInfoProvider {\r\n get lineInfo(): LineInfo\r\n get lineCount(): number\r\n get virtualLineCount(): number\r\n get scrollY(): number\r\n}\r\n\r\nexport interface CapturedSpan {\r\n text: string\r\n fg: RGBA\r\n bg: RGBA\r\n attributes: number\r\n width: number\r\n}\r\n\r\nexport interface CapturedLine {\r\n spans: CapturedSpan[]\r\n}\r\n\r\nexport interface CapturedFrame {\r\n cols: number\r\n rows: number\r\n cursor: [number, number]\r\n lines: CapturedLine[]\r\n}\r\n",
|
|
16
16
|
"import { TextAttributes } from \"./types\"\r\nimport { Renderable } from \"./Renderable\"\r\n\r\nexport function createTextAttributes({\r\n bold = false,\r\n italic = false,\r\n underline = false,\r\n dim = false,\r\n blink = false,\r\n inverse = false,\r\n hidden = false,\r\n strikethrough = false,\r\n}: {\r\n bold?: boolean\r\n italic?: boolean\r\n underline?: boolean\r\n dim?: boolean\r\n blink?: boolean\r\n inverse?: boolean\r\n hidden?: boolean\r\n strikethrough?: boolean\r\n} = {}): number {\r\n let attributes = TextAttributes.NONE\r\n\r\n if (bold) attributes |= TextAttributes.BOLD\r\n if (italic) attributes |= TextAttributes.ITALIC\r\n if (underline) attributes |= TextAttributes.UNDERLINE\r\n if (dim) attributes |= TextAttributes.DIM\r\n if (blink) attributes |= TextAttributes.BLINK\r\n if (inverse) attributes |= TextAttributes.INVERSE\r\n if (hidden) attributes |= TextAttributes.HIDDEN\r\n if (strikethrough) attributes |= TextAttributes.STRIKETHROUGH\r\n\r\n return attributes\r\n}\r\n\r\n// Link attribute helpers (bits 8-31 encode link_id)\r\nconst ATTRIBUTE_BASE_MASK = 0xff\r\nconst LINK_ID_SHIFT = 8\r\nconst LINK_ID_PAYLOAD_MASK = 0xffffff\r\n\r\nexport function attributesWithLink(baseAttributes: number, linkId: number): number {\r\n const base = baseAttributes & ATTRIBUTE_BASE_MASK\r\n const linkBits = (linkId & LINK_ID_PAYLOAD_MASK) << LINK_ID_SHIFT\r\n return base | linkBits\r\n}\r\n\r\nexport function getLinkId(attributes: number): number {\r\n return (attributes >>> LINK_ID_SHIFT) & LINK_ID_PAYLOAD_MASK\r\n}\r\n\r\n// For debugging purposes\r\nexport function visualizeRenderableTree(renderable: Renderable, maxDepth: number = 10): void {\r\n function buildTreeLines(\r\n node: Renderable,\r\n prefix: string = \"\",\r\n parentPrefix: string = \"\",\r\n isLastChild: boolean = true,\r\n depth: number = 0,\r\n ): string[] {\r\n if (depth >= maxDepth) {\r\n return [`${prefix}${node.id} ... (max depth reached)`]\r\n }\r\n\r\n const lines: string[] = []\r\n const children = node.getChildren()\r\n\r\n // Add current node\r\n lines.push(`${prefix}${node.id}`)\r\n\r\n if (children.length > 0) {\r\n const lastChildIndex = children.length - 1\r\n\r\n children.forEach((child, index) => {\r\n const childIsLast = index === lastChildIndex\r\n const connector = childIsLast ? \"└── \" : \"├── \"\r\n const childPrefix = parentPrefix + (isLastChild ? \" \" : \"│ \")\r\n const childLines = buildTreeLines(child, childPrefix + connector, childPrefix, childIsLast, depth + 1)\r\n lines.push(...childLines)\r\n })\r\n }\r\n\r\n return lines\r\n }\r\n\r\n const treeLines = buildTreeLines(renderable)\r\n console.log(\"Renderable Tree:\\n\" + treeLines.join(\"\\n\"))\r\n}\r\n",
|
|
17
17
|
"import type { TextRenderable } from \"../renderables/Text\"\r\nimport type { TextBuffer, TextChunk } from \"../text-buffer\"\r\nimport { createTextAttributes } from \"../utils\"\r\nimport { parseColor, type ColorInput } from \"./RGBA\"\r\n\r\nconst BrandedStyledText: unique symbol = Symbol.for(\"@cascadetui/core/StyledText\")\r\n\r\nexport type Color = ColorInput\r\n\r\nexport interface StyleAttrs {\r\n fg?: Color\r\n bg?: Color\r\n bold?: boolean\r\n italic?: boolean\r\n underline?: boolean\r\n strikethrough?: boolean\r\n dim?: boolean\r\n reverse?: boolean\r\n blink?: boolean\r\n}\r\n\r\nexport function isStyledText(obj: any): obj is StyledText {\r\n return obj && obj[BrandedStyledText]\r\n}\r\n\r\nexport class StyledText {\r\n [BrandedStyledText] = true\r\n\r\n public chunks: TextChunk[]\r\n\r\n constructor(chunks: TextChunk[]) {\r\n this.chunks = chunks\r\n }\r\n}\r\n\r\nexport function stringToStyledText(content: string): StyledText {\r\n const chunk = {\r\n __isChunk: true as const,\r\n text: content,\r\n }\r\n return new StyledText([chunk])\r\n}\r\n\r\nexport type StylableInput = string | number | boolean | TextChunk\r\n\r\nfunction applyStyle(input: StylableInput, style: StyleAttrs): TextChunk {\r\n if (typeof input === \"object\" && \"__isChunk\" in input) {\r\n const existingChunk = input as TextChunk\r\n\r\n const fg = style.fg ? parseColor(style.fg) : existingChunk.fg\r\n const bg = style.bg ? parseColor(style.bg) : existingChunk.bg\r\n\r\n const newAttrs = createTextAttributes(style)\r\n const mergedAttrs = existingChunk.attributes ? existingChunk.attributes | newAttrs : newAttrs\r\n\r\n return {\r\n __isChunk: true,\r\n text: existingChunk.text,\r\n fg,\r\n bg,\r\n attributes: mergedAttrs,\r\n link: existingChunk.link,\r\n }\r\n } else {\r\n const plainTextStr = String(input)\r\n const fg = style.fg ? parseColor(style.fg) : undefined\r\n const bg = style.bg ? parseColor(style.bg) : undefined\r\n const attributes = createTextAttributes(style)\r\n\r\n return {\r\n __isChunk: true,\r\n text: plainTextStr,\r\n fg,\r\n bg,\r\n attributes,\r\n }\r\n }\r\n}\r\n\r\n// Color functions\r\nexport const black = (input: StylableInput): TextChunk => applyStyle(input, { fg: \"black\" })\r\nexport const red = (input: StylableInput): TextChunk => applyStyle(input, { fg: \"red\" })\r\nexport const green = (input: StylableInput): TextChunk => applyStyle(input, { fg: \"green\" })\r\nexport const yellow = (input: StylableInput): TextChunk => applyStyle(input, { fg: \"yellow\" })\r\nexport const blue = (input: StylableInput): TextChunk => applyStyle(input, { fg: \"blue\" })\r\nexport const magenta = (input: StylableInput): TextChunk => applyStyle(input, { fg: \"magenta\" })\r\nexport const cyan = (input: StylableInput): TextChunk => applyStyle(input, { fg: \"cyan\" })\r\nexport const white = (input: StylableInput): TextChunk => applyStyle(input, { fg: \"white\" })\r\n\r\n// Bright color functions\r\nexport const brightBlack = (input: StylableInput): TextChunk => applyStyle(input, { fg: \"brightBlack\" })\r\nexport const brightRed = (input: StylableInput): TextChunk => applyStyle(input, { fg: \"brightRed\" })\r\nexport const brightGreen = (input: StylableInput): TextChunk => applyStyle(input, { fg: \"brightGreen\" })\r\nexport const brightYellow = (input: StylableInput): TextChunk => applyStyle(input, { fg: \"brightYellow\" })\r\nexport const brightBlue = (input: StylableInput): TextChunk => applyStyle(input, { fg: \"brightBlue\" })\r\nexport const brightMagenta = (input: StylableInput): TextChunk => applyStyle(input, { fg: \"brightMagenta\" })\r\nexport const brightCyan = (input: StylableInput): TextChunk => applyStyle(input, { fg: \"brightCyan\" })\r\nexport const brightWhite = (input: StylableInput): TextChunk => applyStyle(input, { fg: \"brightWhite\" })\r\n\r\n// Background color functions\r\nexport const bgBlack = (input: StylableInput): TextChunk => applyStyle(input, { bg: \"black\" })\r\nexport const bgRed = (input: StylableInput): TextChunk => applyStyle(input, { bg: \"red\" })\r\nexport const bgGreen = (input: StylableInput): TextChunk => applyStyle(input, { bg: \"green\" })\r\nexport const bgYellow = (input: StylableInput): TextChunk => applyStyle(input, { bg: \"yellow\" })\r\nexport const bgBlue = (input: StylableInput): TextChunk => applyStyle(input, { bg: \"blue\" })\r\nexport const bgMagenta = (input: StylableInput): TextChunk => applyStyle(input, { bg: \"magenta\" })\r\nexport const bgCyan = (input: StylableInput): TextChunk => applyStyle(input, { bg: \"cyan\" })\r\nexport const bgWhite = (input: StylableInput): TextChunk => applyStyle(input, { bg: \"white\" })\r\n\r\n// Style functions\r\nexport const bold = (input: StylableInput): TextChunk => applyStyle(input, { bold: true })\r\nexport const italic = (input: StylableInput): TextChunk => applyStyle(input, { italic: true })\r\nexport const underline = (input: StylableInput): TextChunk => applyStyle(input, { underline: true })\r\nexport const strikethrough = (input: StylableInput): TextChunk => applyStyle(input, { strikethrough: true })\r\nexport const dim = (input: StylableInput): TextChunk => applyStyle(input, { dim: true })\r\nexport const reverse = (input: StylableInput): TextChunk => applyStyle(input, { reverse: true })\r\nexport const blink = (input: StylableInput): TextChunk => applyStyle(input, { blink: true })\r\n\r\n// Custom color functions\r\nexport const fg =\r\n (color: Color) =>\r\n (input: StylableInput): TextChunk =>\r\n applyStyle(input, { fg: color })\r\nexport const bg =\r\n (color: Color) =>\r\n (input: StylableInput): TextChunk =>\r\n applyStyle(input, { bg: color })\r\n\r\nexport const link =\r\n (url: string) =>\r\n (input: StylableInput): TextChunk => {\r\n const chunk =\r\n typeof input === \"object\" && \"__isChunk\" in input\r\n ? (input as TextChunk)\r\n : {\r\n __isChunk: true as const,\r\n text: String(input),\r\n }\r\n\r\n return {\r\n ...chunk,\r\n link: { url },\r\n }\r\n }\r\n\r\n/**\r\n * Template literal handler for styled text (non-cached version).\r\n * Returns a StyledText object containing chunks of text with optional styles.\r\n */\r\nexport function t(strings: TemplateStringsArray, ...values: StylableInput[]): StyledText {\r\n const chunks: TextChunk[] = []\r\n\r\n for (let i = 0; i < strings.length; i++) {\r\n const raw = strings[i]\r\n\r\n if (raw) {\r\n chunks.push({\r\n __isChunk: true,\r\n text: raw,\r\n attributes: 0,\r\n })\r\n }\r\n\r\n const val = values[i]\r\n if (typeof val === \"object\" && \"__isChunk\" in val) {\r\n chunks.push(val as TextChunk)\r\n } else if (val !== undefined) {\r\n const plainTextStr = String(val)\r\n chunks.push({\r\n __isChunk: true,\r\n text: plainTextStr,\r\n attributes: 0,\r\n })\r\n }\r\n }\r\n\r\n return new StyledText(chunks)\r\n}\r\n",
|
|
18
18
|
"import type { TextChunk } from \"../text-buffer\"\r\nimport { StyledText } from \"./styled-text\"\r\nimport { SyntaxStyle } from \"../syntax-style\"\r\n\r\nexport interface HASTText {\r\n type: \"text\"\r\n value: string\r\n}\r\n\r\nexport interface HASTElement {\r\n type: \"element\"\r\n tagName: string\r\n properties?: {\r\n className?: string\r\n }\r\n children: HASTNode[]\r\n}\r\n\r\nexport type HASTNode = HASTText | HASTElement\r\n\r\nexport type { StyleDefinition } from \"../syntax-style\"\r\n\r\nfunction hastToTextChunks(node: HASTNode, syntaxStyle: SyntaxStyle, parentStyles: string[] = []): TextChunk[] {\r\n const chunks: TextChunk[] = []\r\n\r\n if (node.type === \"text\") {\r\n const stylesToMerge = parentStyles.length > 0 ? parentStyles : [\"default\"]\r\n const mergedStyle = syntaxStyle.mergeStyles(...stylesToMerge)\r\n\r\n chunks.push({\r\n __isChunk: true,\r\n text: node.value,\r\n fg: mergedStyle.fg,\r\n bg: mergedStyle.bg,\r\n attributes: mergedStyle.attributes,\r\n })\r\n } else if (node.type === \"element\") {\r\n let currentStyles = [...parentStyles]\r\n\r\n if (node.properties?.className) {\r\n const classes = node.properties.className.split(\" \")\r\n\r\n for (const cls of classes) {\r\n currentStyles.push(cls)\r\n }\r\n }\r\n\r\n for (const child of node.children) {\r\n chunks.push(...hastToTextChunks(child, syntaxStyle, currentStyles))\r\n }\r\n }\r\n\r\n return chunks\r\n}\r\n\r\nexport function hastToStyledText(hast: HASTNode, syntaxStyle: SyntaxStyle): StyledText {\r\n const chunks = hastToTextChunks(hast, syntaxStyle)\r\n return new StyledText(chunks)\r\n}\r\n",
|
|
19
19
|
"export interface ScrollAcceleration {\r\n tick(now?: number): number\r\n reset(): void\r\n}\r\n\r\nexport class LinearScrollAccel implements ScrollAcceleration {\r\n tick(_now?: number): number {\r\n return 1\r\n }\r\n\r\n reset(): void {}\r\n}\r\n\r\n/**\r\n * macOS-inspired scroll acceleration.\r\n *\r\n * The class measures the time between consecutive scroll events and keeps a short\r\n * moving window of the latest intervals. The average interval determines which\r\n * multiplier to apply so that quick bursts accelerate and slower gestures stay precise.\r\n *\r\n * For intuition, treat the streak as a continuous timeline and compare it with the\r\n * exponential distance curve from the pointer-acceleration research post:\r\n * d(t) = v₀ * ( t + A * (exp(t/τ) - 1 - t/τ) ).\r\n * Small t stays near the base multiplier, medium streaks settle on multiplier1, and\r\n * sustained bursts reach multiplier2, mirroring how the exponential curve bends up.\r\n *\r\n * Options:\r\n * - threshold1: upper bound (ms) of the \"medium\" band. Raise to delay the ramp.\r\n * - threshold2: upper bound (ms) of the \"fast\" band. Lower to demand tighter bursts.\r\n * - multiplier1: scale for medium speed streaks.\r\n * - multiplier2: scale for sustained fast streaks.\r\n * - baseMultiplier: scale for relaxed scrolling; set to 1 for linear behaviour.\r\n */\r\nexport class MacOSScrollAccel implements ScrollAcceleration {\r\n private lastTickTime = 0\r\n private velocityHistory: number[] = []\r\n private readonly historySize = 3\r\n private readonly streakTimeout = 150\r\n // Some terminals send 2 or more ticks for each mouse wheel tick, for example Ghostty, with a small delay between each tick, about 4ms on average.\r\n // We ignore these ticks otherwise they would cause faster acceleration to kick in\r\n // https://github.com/ghostty-org/ghostty/discussions/7577\r\n private readonly minTickInterval = 6\r\n\r\n constructor(\r\n private opts: {\r\n A?: number\r\n tau?: number\r\n maxMultiplier?: number\r\n } = {},\r\n ) {}\r\n\r\n tick(now = Date.now()): number {\r\n const A = this.opts.A ?? 0.8\r\n const tau = this.opts.tau ?? 3\r\n const maxMultiplier = this.opts.maxMultiplier ?? 6\r\n\r\n const dt = this.lastTickTime ? now - this.lastTickTime : Infinity\r\n\r\n // Reset streak if too much time has passed or first tick\r\n if (dt === Infinity || dt > this.streakTimeout) {\r\n this.lastTickTime = now\r\n this.velocityHistory = []\r\n return 1\r\n }\r\n\r\n // Ignore ticks closer than minTickInterval (they're part of the same logical tick)\r\n if (dt < this.minTickInterval) {\r\n return 1\r\n }\r\n\r\n this.lastTickTime = now\r\n\r\n this.velocityHistory.push(dt)\r\n if (this.velocityHistory.length > this.historySize) {\r\n this.velocityHistory.shift()\r\n }\r\n\r\n // Calculate average interval (lower = faster scrolling)\r\n const avgInterval = this.velocityHistory.reduce((a, b) => a + b, 0) / this.velocityHistory.length\r\n\r\n // Convert interval to velocity: faster ticks = higher velocity\r\n // Normalize to a reference interval (e.g., 100ms = velocity of 1)\r\n const referenceInterval = 100\r\n const velocity = referenceInterval / avgInterval\r\n\r\n // Apply exponential curve based on velocity\r\n // Higher velocity (tighter ticks) = more acceleration\r\n const x = velocity / tau\r\n const multiplier = 1 + A * (Math.exp(x) - 1)\r\n\r\n return Math.min(multiplier, maxMultiplier)\r\n }\r\n\r\n reset(): void {\r\n this.lastTickTime = 0\r\n this.velocityHistory = []\r\n }\r\n}\r\n",
|
|
20
|
-
"/**\r\n * StdinBuffer buffers input and emits complete sequences.\r\n *\r\n * This is necessary because stdin data events can arrive in partial chunks,\r\n * especially for escape sequences like mouse events. Without buffering,\r\n * partial sequences can be misinterpreted as regular keypresses.\r\n *\r\n * For example, the mouse SGR sequence `\\x1b[<35;20;5m` might arrive as:\r\n * - Event 1: `\\x1b`\r\n * - Event 2: `[<35`\r\n * - Event 3: `;20;5m`\r\n *\r\n * The buffer accumulates these until a complete sequence is detected.\r\n * Call the `process()` method to feed input data.\r\n */\r\n\r\nimport { EventEmitter } from \"events\"\r\n\r\nconst ESC = \"\\x1b\"\r\nconst BRACKETED_PASTE_START = \"\\x1b[200~\"\r\nconst BRACKETED_PASTE_END = \"\\x1b[201~\"\r\n\r\n/**\r\n * Check if a string is a complete escape sequence or needs more data\r\n */\r\nfunction isCompleteSequence(data: string): \"complete\" | \"incomplete\" | \"not-escape\" {\r\n if (!data.startsWith(ESC)) {\r\n return \"not-escape\"\r\n }\r\n\r\n if (data.length === 1) {\r\n return \"incomplete\"\r\n }\r\n\r\n const afterEsc = data.slice(1)\r\n\r\n // Double-escape sequences: ESC ESC [ ... / ESC ESC O ...\r\n if (afterEsc.startsWith(ESC)) {\r\n return isCompleteSequence(afterEsc)\r\n }\r\n\r\n // CSI sequences: ESC [\r\n if (afterEsc.startsWith(\"[\")) {\r\n // Check for old-style mouse sequence: ESC[M + 3 bytes\r\n if (afterEsc.startsWith(\"[M\")) {\r\n // Old-style mouse needs ESC[M + 3 bytes = 6 total\r\n return data.length >= 6 ? \"complete\" : \"incomplete\"\r\n }\r\n return isCompleteCsiSequence(data)\r\n }\r\n\r\n // OSC sequences: ESC ]\r\n if (afterEsc.startsWith(\"]\")) {\r\n return isCompleteOscSequence(data)\r\n }\r\n\r\n // DCS sequences: ESC P ... ESC \\ (includes XTVersion responses)\r\n if (afterEsc.startsWith(\"P\")) {\r\n return isCompleteDcsSequence(data)\r\n }\r\n\r\n // APC sequences: ESC _ ... ESC \\ (includes Kitty graphics responses)\r\n if (afterEsc.startsWith(\"_\")) {\r\n return isCompleteApcSequence(data)\r\n }\r\n\r\n // SS3 sequences: ESC O\r\n if (afterEsc.startsWith(\"O\")) {\r\n // ESC O followed by a single character\r\n return afterEsc.length >= 2 ? \"complete\" : \"incomplete\"\r\n }\r\n\r\n // Meta key sequences: ESC followed by a single character\r\n if (afterEsc.length === 1) {\r\n return \"complete\"\r\n }\r\n\r\n // Unknown escape sequence - treat as complete\r\n return \"complete\"\r\n}\r\n\r\n/**\r\n * Check if CSI sequence is complete\r\n * CSI sequences: ESC [ ... followed by a final byte (0x40-0x7E)\r\n */\r\nfunction isCompleteCsiSequence(data: string): \"complete\" | \"incomplete\" {\r\n if (!data.startsWith(ESC + \"[\")) {\r\n return \"complete\"\r\n }\r\n\r\n // Need at least ESC [ and one more character\r\n if (data.length < 3) {\r\n return \"incomplete\"\r\n }\r\n\r\n const payload = data.slice(2)\r\n\r\n // CSI sequences end with a byte in the range 0x40-0x7E (@-~)\r\n // This includes all letters and several special characters\r\n const lastChar = payload[payload.length - 1]\r\n const lastCharCode = lastChar.charCodeAt(0)\r\n\r\n if (lastCharCode >= 0x40 && lastCharCode <= 0x7e) {\r\n // Special handling for SGR mouse sequences\r\n // Format: ESC[<B;X;Ym or ESC[<B;X;YM\r\n if (payload.startsWith(\"<\")) {\r\n // Must have format: <digits;digits;digits[Mm]\r\n const mouseMatch = /^<\\d+;\\d+;\\d+[Mm]$/.test(payload)\r\n if (mouseMatch) {\r\n return \"complete\"\r\n }\r\n // If it ends with M or m but doesn't match the pattern, still incomplete\r\n if (lastChar === \"M\" || lastChar === \"m\") {\r\n // Check if we have the right structure\r\n const parts = payload.slice(1, -1).split(\";\")\r\n if (parts.length === 3 && parts.every((p) => /^\\d+$/.test(p))) {\r\n return \"complete\"\r\n }\r\n }\r\n\r\n return \"incomplete\"\r\n }\r\n\r\n return \"complete\"\r\n }\r\n\r\n return \"incomplete\"\r\n}\r\n\r\n/**\r\n * Check if OSC sequence is complete\r\n * OSC sequences: ESC ] ... ST (where ST is ESC \\ or BEL)\r\n */\r\nfunction isCompleteOscSequence(data: string): \"complete\" | \"incomplete\" {\r\n if (!data.startsWith(ESC + \"]\")) {\r\n return \"complete\"\r\n }\r\n\r\n // OSC sequences end with ST (ESC \\) or BEL (\\x07)\r\n if (data.endsWith(ESC + \"\\\\\") || data.endsWith(\"\\x07\")) {\r\n return \"complete\"\r\n }\r\n\r\n return \"incomplete\"\r\n}\r\n\r\n/**\r\n * Check if DCS (Device Control String) sequence is complete\r\n * DCS sequences: ESC P ... ST (where ST is ESC \\)\r\n * Used for XTVersion responses like ESC P >| ... ESC \\\r\n */\r\nfunction isCompleteDcsSequence(data: string): \"complete\" | \"incomplete\" {\r\n if (!data.startsWith(ESC + \"P\")) {\r\n return \"complete\"\r\n }\r\n\r\n // DCS sequences end with ST (ESC \\)\r\n if (data.endsWith(ESC + \"\\\\\")) {\r\n return \"complete\"\r\n }\r\n\r\n return \"incomplete\"\r\n}\r\n\r\n/**\r\n * Check if APC (Application Program Command) sequence is complete\r\n * APC sequences: ESC _ ... ST (where ST is ESC \\)\r\n * Used for Kitty graphics responses like ESC _ G ... ESC \\\r\n */\r\nfunction isCompleteApcSequence(data: string): \"complete\" | \"incomplete\" {\r\n if (!data.startsWith(ESC + \"_\")) {\r\n return \"complete\"\r\n }\r\n\r\n // APC sequences end with ST (ESC \\)\r\n if (data.endsWith(ESC + \"\\\\\")) {\r\n return \"complete\"\r\n }\r\n\r\n return \"incomplete\"\r\n}\r\n\r\n/* Check if a character can start a nested escape sequence after a double ESC\r\n * For example, ESC ESC [ ... for Option+Arrow keys in iTerm2.\r\n */\r\nfunction isNestedEscapeSequenceStart(char: string | undefined): boolean {\r\n return char === \"[\" || char === \"]\" || char === \"O\" || char === \"N\" || char === \"P\" || char === \"_\"\r\n}\r\n\r\n/**\r\n * Split accumulated buffer into complete sequences\r\n */\r\nfunction extractCompleteSequences(buffer: string): { sequences: string[]; remainder: string } {\r\n const sequences: string[] = []\r\n let pos = 0\r\n\r\n while (pos < buffer.length) {\r\n const remaining = buffer.slice(pos)\r\n\r\n // Try to extract a sequence starting at this position\r\n if (remaining.startsWith(ESC)) {\r\n // Find the end of this escape sequence\r\n let seqEnd = 1\r\n while (seqEnd <= remaining.length) {\r\n const candidate = remaining.slice(0, seqEnd)\r\n const status = isCompleteSequence(candidate)\r\n\r\n if (status === \"complete\") {\r\n sequences.push(candidate)\r\n pos += seqEnd\r\n break\r\n } else if (status === \"incomplete\") {\r\n // Keep ESC ESC as its own sequence unless it is followed by a nested\r\n // escape introducer (e.g. ESC ESC [D for Option+Left).\r\n if (candidate === ESC + ESC) {\r\n const nextChar = remaining[seqEnd]\r\n if (seqEnd < remaining.length && !isNestedEscapeSequenceStart(nextChar)) {\r\n sequences.push(candidate)\r\n pos += seqEnd\r\n break\r\n }\r\n }\r\n\r\n seqEnd++\r\n } else {\r\n // Should not happen when starting with ESC\r\n sequences.push(candidate)\r\n pos += seqEnd\r\n break\r\n }\r\n }\r\n\r\n if (seqEnd > remaining.length) {\r\n return { sequences, remainder: remaining }\r\n }\r\n } else {\r\n // Not an escape sequence - take a single character, keeping surrogate pairs together\r\n const code = remaining.charCodeAt(0)\r\n if (code >= 0xd800 && code <= 0xdbff) {\r\n if (remaining.length === 1) {\r\n return { sequences, remainder: remaining }\r\n }\r\n\r\n const next = remaining.charCodeAt(1)\r\n if (next >= 0xdc00 && next <= 0xdfff) {\r\n sequences.push(remaining.slice(0, 2))\r\n pos += 2\r\n } else {\r\n sequences.push(remaining[0])\r\n pos++\r\n }\r\n } else {\r\n sequences.push(remaining[0])\r\n pos++\r\n }\r\n }\r\n }\r\n\r\n return { sequences, remainder: \"\" }\r\n}\r\n\r\nexport type StdinBufferOptions = {\r\n /**\r\n * Maximum time to wait for sequence completion (default: 10ms)\r\n * After this time, the buffer is flushed even if incomplete\r\n */\r\n timeout?: number\r\n}\r\n\r\nexport type StdinBufferEventMap = {\r\n data: [string]\r\n paste: [string]\r\n}\r\n\r\n/**\r\n * Buffers stdin input and emits complete sequences via the 'data' event.\r\n * Handles partial escape sequences that arrive across multiple chunks.\r\n */\r\nexport class StdinBuffer extends EventEmitter<StdinBufferEventMap> {\r\n private buffer: string = \"\"\r\n private timeout: Timer | null = null\r\n private readonly timeoutMs: number\r\n private pasteMode: boolean = false\r\n private pasteBuffer: string = \"\"\r\n\r\n constructor(options: StdinBufferOptions = {}) {\r\n super()\r\n this.timeoutMs = options.timeout ?? 10\r\n }\r\n\r\n public process(data: string | Buffer): void {\r\n // Clear any pending timeout\r\n if (this.timeout) {\r\n clearTimeout(this.timeout)\r\n this.timeout = null\r\n }\r\n\r\n // Handle high-byte conversion (for compatibility with parseKeypress)\r\n // If buffer has single byte > 127, convert to ESC + (byte - 128)\r\n // TODO: This seems redundant as parseKeypress should handle this.\r\n let str: string\r\n if (Buffer.isBuffer(data)) {\r\n if (data.length === 1 && data[0]! > 127) {\r\n const byte = data[0]! - 128\r\n str = \"\\x1b\" + String.fromCharCode(byte)\r\n } else {\r\n str = data.toString()\r\n }\r\n } else {\r\n str = data\r\n }\r\n\r\n if (str.length === 0 && this.buffer.length === 0) {\r\n this.emit(\"data\", \"\")\r\n return\r\n }\r\n\r\n this.buffer += str\r\n\r\n if (this.pasteMode) {\r\n this.pasteBuffer += this.buffer\r\n this.buffer = \"\"\r\n\r\n const endIndex = this.pasteBuffer.indexOf(BRACKETED_PASTE_END)\r\n if (endIndex !== -1) {\r\n const pastedContent = this.pasteBuffer.slice(0, endIndex)\r\n const remaining = this.pasteBuffer.slice(endIndex + BRACKETED_PASTE_END.length)\r\n\r\n this.pasteMode = false\r\n this.pasteBuffer = \"\"\r\n\r\n this.emit(\"paste\", pastedContent)\r\n\r\n if (remaining.length > 0) {\r\n this.process(remaining)\r\n }\r\n }\r\n return\r\n }\r\n\r\n const startIndex = this.buffer.indexOf(BRACKETED_PASTE_START)\r\n if (startIndex !== -1) {\r\n if (startIndex > 0) {\r\n const beforePaste = this.buffer.slice(0, startIndex)\r\n const result = extractCompleteSequences(beforePaste)\r\n for (const sequence of result.sequences) {\r\n this.emit(\"data\", sequence)\r\n }\r\n }\r\n\r\n this.buffer = this.buffer.slice(startIndex + BRACKETED_PASTE_START.length)\r\n this.pasteMode = true\r\n this.pasteBuffer = this.buffer\r\n this.buffer = \"\"\r\n\r\n const endIndex = this.pasteBuffer.indexOf(BRACKETED_PASTE_END)\r\n if (endIndex !== -1) {\r\n const pastedContent = this.pasteBuffer.slice(0, endIndex)\r\n const remaining = this.pasteBuffer.slice(endIndex + BRACKETED_PASTE_END.length)\r\n\r\n this.pasteMode = false\r\n this.pasteBuffer = \"\"\r\n\r\n this.emit(\"paste\", pastedContent)\r\n\r\n if (remaining.length > 0) {\r\n this.process(remaining)\r\n }\r\n }\r\n return\r\n }\r\n\r\n const result = extractCompleteSequences(this.buffer)\r\n this.buffer = result.remainder\r\n\r\n for (const sequence of result.sequences) {\r\n this.emit(\"data\", sequence)\r\n }\r\n\r\n if (this.buffer.length > 0) {\r\n this.timeout = setTimeout(() => {\r\n const flushed = this.flush()\r\n\r\n for (const sequence of flushed) {\r\n this.emit(\"data\", sequence)\r\n }\r\n }, this.timeoutMs)\r\n }\r\n }\r\n\r\n flush(): string[] {\r\n if (this.timeout) {\r\n clearTimeout(this.timeout)\r\n this.timeout = null\r\n }\r\n\r\n if (this.buffer.length === 0) {\r\n return []\r\n }\r\n\r\n const sequences = [this.buffer]\r\n this.buffer = \"\"\r\n return sequences\r\n }\r\n\r\n clear(): void {\r\n if (this.timeout) {\r\n clearTimeout(this.timeout)\r\n this.timeout = null\r\n }\r\n this.buffer = \"\"\r\n this.pasteMode = false\r\n this.pasteBuffer = \"\"\r\n }\r\n\r\n getBuffer(): string {\r\n return this.buffer\r\n }\r\n\r\n destroy(): void {\r\n this.clear()\r\n }\r\n}\r\n",
|
|
20
|
+
"/**\r\n * StdinBuffer buffers input and emits complete sequences.\r\n *\r\n * This is necessary because stdin data events can arrive in partial chunks,\r\n * especially for escape sequences like mouse events. Without buffering,\r\n * partial sequences can be misinterpreted as regular keypresses.\r\n *\r\n * For example, the mouse SGR sequence `\\x1b[<35;20;5m` might arrive as:\r\n * - Event 1: `\\x1b`\r\n * - Event 2: `[<35`\r\n * - Event 3: `;20;5m`\r\n *\r\n * The buffer accumulates these until a complete sequence is detected.\r\n * Call the `process()` method to feed input data.\r\n */\r\n\r\nimport { EventEmitter } from \"events\"\r\n\r\nconst ESC = \"\\x1b\"\r\nconst BRACKETED_PASTE_START = \"\\x1b[200~\"\r\nconst BRACKETED_PASTE_END = \"\\x1b[201~\"\r\n\r\n/**\r\n * Check if a string is a complete escape sequence or needs more data\r\n */\r\nfunction isCompleteSequence(data: string): \"complete\" | \"incomplete\" | \"not-escape\" {\r\n if (!data.startsWith(ESC)) {\r\n return \"not-escape\"\r\n }\r\n\r\n if (data.length === 1) {\r\n return \"incomplete\"\r\n }\r\n\r\n const afterEsc = data.slice(1)\r\n\r\n // Double-escape sequences: ESC ESC [ ... / ESC ESC O ...\r\n if (afterEsc.startsWith(ESC)) {\r\n return isCompleteSequence(afterEsc)\r\n }\r\n\r\n // CSI sequences: ESC [\r\n if (afterEsc.startsWith(\"[\")) {\r\n // Check for old-style mouse sequence: ESC[M + 3 bytes\r\n if (afterEsc.startsWith(\"[M\")) {\r\n // Old-style mouse needs ESC[M + 3 bytes = 6 total\r\n return data.length >= 6 ? \"complete\" : \"incomplete\"\r\n }\r\n return isCompleteCsiSequence(data)\r\n }\r\n\r\n // OSC sequences: ESC ]\r\n if (afterEsc.startsWith(\"]\")) {\r\n return isCompleteOscSequence(data)\r\n }\r\n\r\n // DCS sequences: ESC P ... ESC \\ (includes XTVersion responses)\r\n if (afterEsc.startsWith(\"P\")) {\r\n return isCompleteDcsSequence(data)\r\n }\r\n\r\n // APC sequences: ESC _ ... ESC \\ (includes Kitty graphics responses)\r\n if (afterEsc.startsWith(\"_\")) {\r\n return isCompleteApcSequence(data)\r\n }\r\n\r\n // SS3 sequences: ESC O\r\n if (afterEsc.startsWith(\"O\")) {\r\n // ESC O followed by a single character\r\n return afterEsc.length >= 2 ? \"complete\" : \"incomplete\"\r\n }\r\n\r\n // Meta key sequences: ESC followed by a single character\r\n if (afterEsc.length === 1) {\r\n return \"complete\"\r\n }\r\n\r\n // Unknown escape sequence - treat as complete\r\n return \"complete\"\r\n}\r\n\r\n/**\r\n * Check if CSI sequence is complete\r\n * CSI sequences: ESC [ ... followed by a final byte (0x40-0x7E)\r\n */\r\nfunction isCompleteCsiSequence(data: string): \"complete\" | \"incomplete\" {\r\n if (!data.startsWith(ESC + \"[\")) {\r\n return \"complete\"\r\n }\r\n\r\n // Need at least ESC [ and one more character\r\n if (data.length < 3) {\r\n return \"incomplete\"\r\n }\r\n\r\n const payload = data.slice(2)\r\n\r\n // CSI sequences end with a byte in the range 0x40-0x7E (@-~)\r\n // This includes all letters and several special characters\r\n const lastChar = payload[payload.length - 1]\r\n const lastCharCode = lastChar.charCodeAt(0)\r\n\r\n if (lastCharCode >= 0x40 && lastCharCode <= 0x7e) {\r\n // Special handling for SGR mouse sequences\r\n // Format: ESC[<B;X;Ym or ESC[<B;X;YM\r\n if (payload.startsWith(\"<\")) {\r\n // Must have format: <digits;digits;digits[Mm]\r\n const mouseMatch = /^<\\d+;\\d+;\\d+[Mm]$/.test(payload)\r\n if (mouseMatch) {\r\n return \"complete\"\r\n }\r\n // If it ends with M or m but doesn't match the pattern, still incomplete\r\n if (lastChar === \"M\" || lastChar === \"m\") {\r\n // Check if we have the right structure\r\n const parts = payload.slice(1, -1).split(\";\")\r\n if (parts.length === 3 && parts.every((p) => /^\\d+$/.test(p))) {\r\n return \"complete\"\r\n }\r\n }\r\n\r\n return \"incomplete\"\r\n }\r\n\r\n return \"complete\"\r\n }\r\n\r\n return \"incomplete\"\r\n}\r\n\r\n/**\r\n * Check if OSC sequence is complete\r\n * OSC sequences: ESC ] ... ST (where ST is ESC \\ or BEL)\r\n */\r\nfunction isCompleteOscSequence(data: string): \"complete\" | \"incomplete\" {\r\n if (!data.startsWith(ESC + \"]\")) {\r\n return \"complete\"\r\n }\r\n\r\n // OSC sequences end with ST (ESC \\) or BEL (\\x07)\r\n if (data.endsWith(ESC + \"\\\\\") || data.endsWith(\"\\x07\")) {\r\n return \"complete\"\r\n }\r\n\r\n return \"incomplete\"\r\n}\r\n\r\n/**\r\n * Check if DCS (Device Control String) sequence is complete\r\n * DCS sequences: ESC P ... ST (where ST is ESC \\)\r\n * Used for XTVersion responses like ESC P >| ... ESC \\\r\n */\r\nfunction isCompleteDcsSequence(data: string): \"complete\" | \"incomplete\" {\r\n if (!data.startsWith(ESC + \"P\")) {\r\n return \"complete\"\r\n }\r\n\r\n // DCS sequences end with ST (ESC \\)\r\n if (data.endsWith(ESC + \"\\\\\")) {\r\n return \"complete\"\r\n }\r\n\r\n return \"incomplete\"\r\n}\r\n\r\n/**\r\n * Check if APC (Application Program Command) sequence is complete\r\n * APC sequences: ESC _ ... ST (where ST is ESC \\)\r\n * Used for Kitty graphics responses like ESC _ G ... ESC \\\r\n */\r\nfunction isCompleteApcSequence(data: string): \"complete\" | \"incomplete\" {\r\n if (!data.startsWith(ESC + \"_\")) {\r\n return \"complete\"\r\n }\r\n\r\n // APC sequences end with ST (ESC \\)\r\n if (data.endsWith(ESC + \"\\\\\")) {\r\n return \"complete\"\r\n }\r\n\r\n return \"incomplete\"\r\n}\r\n\r\n/* Check if a character can start a nested escape sequence after a double ESC\r\n * For example, ESC ESC [ ... for Option+Arrow keys in iTerm2.\r\n */\r\nfunction isNestedEscapeSequenceStart(char: string | undefined): boolean {\r\n return char === \"[\" || char === \"]\" || char === \"O\" || char === \"N\" || char === \"P\" || char === \"_\"\r\n}\r\n\r\n/**\r\n * Split accumulated buffer into complete sequences\r\n */\r\nfunction extractCompleteSequences(buffer: string): { sequences: string[]; remainder: string } {\r\n const sequences: string[] = []\r\n let pos = 0\r\n\r\n while (pos < buffer.length) {\r\n const remaining = buffer.slice(pos)\r\n\r\n // Try to extract a sequence starting at this position\r\n if (remaining.startsWith(ESC)) {\r\n // Find the end of this escape sequence\r\n let seqEnd = 1\r\n while (seqEnd <= remaining.length) {\r\n const candidate = remaining.slice(0, seqEnd)\r\n const status = isCompleteSequence(candidate)\r\n\r\n if (status === \"complete\") {\r\n sequences.push(candidate)\r\n pos += seqEnd\r\n break\r\n } else if (status === \"incomplete\") {\r\n // Keep ESC ESC as its own sequence unless it is followed by a nested\r\n // escape introducer (e.g. ESC ESC [D for Option+Left).\r\n if (candidate === ESC + ESC) {\r\n const nextChar = remaining[seqEnd]\r\n if (seqEnd < remaining.length && !isNestedEscapeSequenceStart(nextChar)) {\r\n sequences.push(candidate)\r\n pos += seqEnd\r\n break\r\n }\r\n }\r\n\r\n seqEnd++\r\n } else {\r\n // Should not happen when starting with ESC\r\n sequences.push(candidate)\r\n pos += seqEnd\r\n break\r\n }\r\n }\r\n\r\n if (seqEnd > remaining.length) {\r\n return { sequences, remainder: remaining }\r\n }\r\n } else {\r\n // Not an escape sequence - take a single character, keeping surrogate pairs together\r\n const code = remaining.charCodeAt(0)\r\n if (code >= 0xd800 && code <= 0xdbff) {\r\n if (remaining.length === 1) {\r\n return { sequences, remainder: remaining }\r\n }\r\n\r\n const next = remaining.charCodeAt(1)\r\n if (next >= 0xdc00 && next <= 0xdfff) {\r\n sequences.push(remaining.slice(0, 2))\r\n pos += 2\r\n } else {\r\n sequences.push(remaining[0])\r\n pos++\r\n }\r\n } else {\r\n sequences.push(remaining[0])\r\n pos++\r\n }\r\n }\r\n }\r\n\r\n return { sequences, remainder: \"\" }\r\n}\r\n\r\nexport type StdinBufferOptions = {\r\n /**\r\n * Maximum time to wait for sequence completion (default: 10ms)\r\n * After this time, the buffer is flushed even if incomplete\r\n */\r\n timeout?: number\r\n}\r\n\r\nexport type StdinBufferEventMap = {\r\n data: [string]\r\n paste: [string]\r\n}\r\n\r\n/**\r\n * Buffers stdin input and emits complete sequences via the 'data' event.\r\n * Handles partial escape sequences that arrive across multiple chunks.\r\n */\r\nexport class StdinBuffer extends EventEmitter<StdinBufferEventMap> {\n private buffer: string = \"\"\r\n private timeout: Timer | null = null\r\n private readonly timeoutMs: number\r\n private pasteMode: boolean = false\r\n private pasteBuffer: string = \"\"\r\n\r\n constructor(options: StdinBufferOptions = {}) {\r\n super()\r\n this.timeoutMs = options.timeout ?? 10\r\n }\r\n\r\n public process(data: string | Buffer | Uint8Array | ArrayBuffer): void {\n // Clear any pending timeout\r\n if (this.timeout) {\r\n clearTimeout(this.timeout)\r\n this.timeout = null\r\n }\r\n\r\n // Handle high-byte conversion (for compatibility with parseKeypress)\r\n // If buffer has single byte > 127, convert to ESC + (byte - 128)\r\n // TODO: This seems redundant as parseKeypress should handle this.\r\n let str: string\n if (typeof data === \"string\") {\n str = data\n } else {\n const chunk = this.toBuffer(data)\n if (chunk.length === 1 && chunk[0]! > 127) {\n const byte = chunk[0]! - 128\n str = \"\\x1b\" + String.fromCharCode(byte)\n } else {\n str = chunk.toString()\n }\n }\n\r\n if (str.length === 0 && this.buffer.length === 0) {\r\n this.emit(\"data\", \"\")\r\n return\r\n }\r\n\r\n this.buffer += str\r\n\r\n if (this.pasteMode) {\r\n this.pasteBuffer += this.buffer\r\n this.buffer = \"\"\r\n\r\n const endIndex = this.pasteBuffer.indexOf(BRACKETED_PASTE_END)\r\n if (endIndex !== -1) {\r\n const pastedContent = this.pasteBuffer.slice(0, endIndex)\r\n const remaining = this.pasteBuffer.slice(endIndex + BRACKETED_PASTE_END.length)\r\n\r\n this.pasteMode = false\r\n this.pasteBuffer = \"\"\r\n\r\n this.emit(\"paste\", pastedContent)\r\n\r\n if (remaining.length > 0) {\r\n this.process(remaining)\r\n }\r\n }\r\n return\r\n }\r\n\r\n const startIndex = this.buffer.indexOf(BRACKETED_PASTE_START)\r\n if (startIndex !== -1) {\r\n if (startIndex > 0) {\r\n const beforePaste = this.buffer.slice(0, startIndex)\r\n const result = extractCompleteSequences(beforePaste)\r\n for (const sequence of result.sequences) {\r\n this.emit(\"data\", sequence)\r\n }\r\n }\r\n\r\n this.buffer = this.buffer.slice(startIndex + BRACKETED_PASTE_START.length)\r\n this.pasteMode = true\r\n this.pasteBuffer = this.buffer\r\n this.buffer = \"\"\r\n\r\n const endIndex = this.pasteBuffer.indexOf(BRACKETED_PASTE_END)\r\n if (endIndex !== -1) {\r\n const pastedContent = this.pasteBuffer.slice(0, endIndex)\r\n const remaining = this.pasteBuffer.slice(endIndex + BRACKETED_PASTE_END.length)\r\n\r\n this.pasteMode = false\r\n this.pasteBuffer = \"\"\r\n\r\n this.emit(\"paste\", pastedContent)\r\n\r\n if (remaining.length > 0) {\r\n this.process(remaining)\r\n }\r\n }\r\n return\r\n }\r\n\r\n const result = extractCompleteSequences(this.buffer)\r\n this.buffer = result.remainder\r\n\r\n for (const sequence of result.sequences) {\r\n this.emit(\"data\", sequence)\r\n }\r\n\r\n if (this.buffer.length > 0) {\r\n this.timeout = setTimeout(() => {\r\n const flushed = this.flush()\r\n\r\n for (const sequence of flushed) {\r\n this.emit(\"data\", sequence)\r\n }\r\n }, this.timeoutMs)\r\n }\r\n }\r\n\r\n flush(): string[] {\r\n if (this.timeout) {\r\n clearTimeout(this.timeout)\r\n this.timeout = null\r\n }\r\n\r\n if (this.buffer.length === 0) {\r\n return []\r\n }\r\n\r\n const sequences = [this.buffer]\r\n this.buffer = \"\"\r\n return sequences\r\n }\r\n\r\n clear(): void {\r\n if (this.timeout) {\r\n clearTimeout(this.timeout)\r\n this.timeout = null\r\n }\r\n this.buffer = \"\"\r\n this.pasteMode = false\r\n this.pasteBuffer = \"\"\r\n }\r\n\r\n getBuffer(): string {\r\n return this.buffer\r\n }\r\n\r\n destroy(): void {\n this.clear()\n }\n\n private toBuffer(data: Buffer | Uint8Array | ArrayBuffer): Buffer {\n if (Buffer.isBuffer(data)) {\n return data\n }\n if (data instanceof Uint8Array) {\n return Buffer.from(data.buffer, data.byteOffset, data.byteLength)\n }\n return Buffer.from(data)\n }\n}\n",
|
|
21
21
|
"import {\r\n BoxSizing,\r\n Align,\r\n Dimension,\r\n Direction,\r\n Display,\r\n Edge,\r\n FlexDirection,\r\n Gutter,\r\n Justify,\r\n LogLevel,\r\n MeasureMode,\r\n Overflow,\r\n PositionType,\r\n Unit,\r\n Wrap,\r\n} from \"yoga-layout\"\r\n\r\nexport type AlignString =\r\n | \"auto\"\r\n | \"flex-start\"\r\n | \"center\"\r\n | \"flex-end\"\r\n | \"stretch\"\r\n | \"baseline\"\r\n | \"space-between\"\r\n | \"space-around\"\r\n | \"space-evenly\"\r\nexport type BoxSizingString = \"border-box\" | \"content-box\"\r\nexport type DimensionString = \"width\" | \"height\"\r\nexport type DirectionString = \"inherit\" | \"ltr\" | \"rtl\"\r\nexport type DisplayString = \"flex\" | \"none\" | \"contents\"\r\nexport type EdgeString = \"left\" | \"top\" | \"right\" | \"bottom\" | \"start\" | \"end\" | \"horizontal\" | \"vertical\" | \"all\"\r\nexport type FlexDirectionString = \"column\" | \"column-reverse\" | \"row\" | \"row-reverse\"\r\nexport type GutterString = \"column\" | \"row\" | \"all\"\r\nexport type JustifyString = \"flex-start\" | \"center\" | \"flex-end\" | \"space-between\" | \"space-around\" | \"space-evenly\"\r\nexport type LogLevelString = \"error\" | \"warn\" | \"info\" | \"debug\" | \"verbose\" | \"fatal\"\r\nexport type MeasureModeString = \"undefined\" | \"exactly\" | \"at-most\"\r\nexport type OverflowString = \"visible\" | \"hidden\" | \"scroll\"\r\nexport type PositionTypeString = \"static\" | \"relative\" | \"absolute\"\r\nexport type UnitString = \"undefined\" | \"point\" | \"percent\" | \"auto\"\r\nexport type WrapString = \"no-wrap\" | \"wrap\" | \"wrap-reverse\"\r\n\r\nexport function parseAlign(value: string | null | undefined): Align {\r\n if (value == null) {\r\n return Align.Auto\r\n }\r\n switch (value.toLowerCase()) {\r\n case \"auto\":\r\n return Align.Auto\r\n case \"flex-start\":\r\n return Align.FlexStart\r\n case \"center\":\r\n return Align.Center\r\n case \"flex-end\":\r\n return Align.FlexEnd\r\n case \"stretch\":\r\n return Align.Stretch\r\n case \"baseline\":\r\n return Align.Baseline\r\n case \"space-between\":\r\n return Align.SpaceBetween\r\n case \"space-around\":\r\n return Align.SpaceAround\r\n case \"space-evenly\":\r\n return Align.SpaceEvenly\r\n default:\r\n return Align.Auto\r\n }\r\n}\r\n\r\nexport function parseAlignItems(value: string | null | undefined): Align {\r\n if (value == null) {\r\n return Align.Stretch\r\n }\r\n switch (value.toLowerCase()) {\r\n case \"auto\":\r\n return Align.Auto\r\n case \"flex-start\":\r\n return Align.FlexStart\r\n case \"center\":\r\n return Align.Center\r\n case \"flex-end\":\r\n return Align.FlexEnd\r\n case \"stretch\":\r\n return Align.Stretch\r\n case \"baseline\":\r\n return Align.Baseline\r\n case \"space-between\":\r\n return Align.SpaceBetween\r\n case \"space-around\":\r\n return Align.SpaceAround\r\n case \"space-evenly\":\r\n return Align.SpaceEvenly\r\n default:\r\n return Align.Stretch\r\n }\r\n}\r\n\r\nexport function parseBoxSizing(value: string): BoxSizing {\r\n if (value == null) {\r\n return BoxSizing.BorderBox\r\n }\r\n switch (value.toLowerCase()) {\r\n case \"border-box\":\r\n return BoxSizing.BorderBox\r\n case \"content-box\":\r\n return BoxSizing.ContentBox\r\n default:\r\n return BoxSizing.BorderBox\r\n }\r\n}\r\n\r\nexport function parseDimension(value: string): Dimension {\r\n if (value == null) {\r\n return Dimension.Width\r\n }\r\n switch (value.toLowerCase()) {\r\n case \"width\":\r\n return Dimension.Width\r\n case \"height\":\r\n return Dimension.Height\r\n default:\r\n return Dimension.Width\r\n }\r\n}\r\n\r\nexport function parseDirection(value: string): Direction {\r\n if (value == null) {\r\n return Direction.LTR\r\n }\r\n switch (value.toLowerCase()) {\r\n case \"inherit\":\r\n return Direction.Inherit\r\n case \"ltr\":\r\n return Direction.LTR\r\n case \"rtl\":\r\n return Direction.RTL\r\n default:\r\n return Direction.LTR\r\n }\r\n}\r\n\r\nexport function parseDisplay(value: string): Display {\r\n if (value == null) {\r\n return Display.Flex\r\n }\r\n switch (value.toLowerCase()) {\r\n case \"flex\":\r\n return Display.Flex\r\n case \"none\":\r\n return Display.None\r\n case \"contents\":\r\n return Display.Contents\r\n default:\r\n return Display.Flex\r\n }\r\n}\r\n\r\nexport function parseEdge(value: string): Edge {\r\n if (value == null) {\r\n return Edge.All\r\n }\r\n switch (value.toLowerCase()) {\r\n case \"left\":\r\n return Edge.Left\r\n case \"top\":\r\n return Edge.Top\r\n case \"right\":\r\n return Edge.Right\r\n case \"bottom\":\r\n return Edge.Bottom\r\n case \"start\":\r\n return Edge.Start\r\n case \"end\":\r\n return Edge.End\r\n case \"horizontal\":\r\n return Edge.Horizontal\r\n case \"vertical\":\r\n return Edge.Vertical\r\n case \"all\":\r\n return Edge.All\r\n default:\r\n return Edge.All\r\n }\r\n}\r\n\r\nexport function parseFlexDirection(value: string | null | undefined): FlexDirection {\r\n if (value == null) {\r\n return FlexDirection.Column\r\n }\r\n switch (value.toLowerCase()) {\r\n case \"column\":\r\n return FlexDirection.Column\r\n case \"column-reverse\":\r\n return FlexDirection.ColumnReverse\r\n case \"row\":\r\n return FlexDirection.Row\r\n case \"row-reverse\":\r\n return FlexDirection.RowReverse\r\n default:\r\n return FlexDirection.Column\r\n }\r\n}\r\n\r\nexport function parseGutter(value: string): Gutter {\r\n if (value == null) {\r\n return Gutter.All\r\n }\r\n switch (value.toLowerCase()) {\r\n case \"column\":\r\n return Gutter.Column\r\n case \"row\":\r\n return Gutter.Row\r\n case \"all\":\r\n return Gutter.All\r\n default:\r\n return Gutter.All\r\n }\r\n}\r\n\r\nexport function parseJustify(value: string | null | undefined): Justify {\r\n if (value == null) {\r\n return Justify.FlexStart\r\n }\r\n switch (value.toLowerCase()) {\r\n case \"flex-start\":\r\n return Justify.FlexStart\r\n case \"center\":\r\n return Justify.Center\r\n case \"flex-end\":\r\n return Justify.FlexEnd\r\n case \"space-between\":\r\n return Justify.SpaceBetween\r\n case \"space-around\":\r\n return Justify.SpaceAround\r\n case \"space-evenly\":\r\n return Justify.SpaceEvenly\r\n default:\r\n return Justify.FlexStart\r\n }\r\n}\r\n\r\nexport function parseLogLevel(value: string): LogLevel {\r\n if (value == null) {\r\n return LogLevel.Info\r\n }\r\n switch (value.toLowerCase()) {\r\n case \"error\":\r\n return LogLevel.Error\r\n case \"warn\":\r\n return LogLevel.Warn\r\n case \"info\":\r\n return LogLevel.Info\r\n case \"debug\":\r\n return LogLevel.Debug\r\n case \"verbose\":\r\n return LogLevel.Verbose\r\n case \"fatal\":\r\n return LogLevel.Fatal\r\n default:\r\n return LogLevel.Info\r\n }\r\n}\r\n\r\nexport function parseMeasureMode(value: string): MeasureMode {\r\n if (value == null) {\r\n return MeasureMode.Undefined\r\n }\r\n switch (value.toLowerCase()) {\r\n case \"undefined\":\r\n return MeasureMode.Undefined\r\n case \"exactly\":\r\n return MeasureMode.Exactly\r\n case \"at-most\":\r\n return MeasureMode.AtMost\r\n default:\r\n return MeasureMode.Undefined\r\n }\r\n}\r\n\r\nexport function parseOverflow(value: string | null | undefined): Overflow {\r\n if (value == null) {\r\n return Overflow.Visible\r\n }\r\n switch (value.toLowerCase()) {\r\n case \"visible\":\r\n return Overflow.Visible\r\n case \"hidden\":\r\n return Overflow.Hidden\r\n case \"scroll\":\r\n return Overflow.Scroll\r\n default:\r\n return Overflow.Visible\r\n }\r\n}\r\n\r\nexport function parsePositionType(value: string | null | undefined): PositionType {\r\n if (value == null) {\r\n return PositionType.Relative\r\n }\r\n switch (value.toLowerCase()) {\r\n case \"static\":\r\n return PositionType.Static\r\n case \"relative\":\r\n return PositionType.Relative\r\n case \"absolute\":\r\n return PositionType.Absolute\r\n default:\r\n return PositionType.Static\r\n }\r\n}\r\n\r\nexport function parseUnit(value: string): Unit {\r\n if (value == null) {\r\n return Unit.Point\r\n }\r\n switch (value.toLowerCase()) {\r\n case \"undefined\":\r\n return Unit.Undefined\r\n case \"point\":\r\n return Unit.Point\r\n case \"percent\":\r\n return Unit.Percent\r\n case \"auto\":\r\n return Unit.Auto\r\n default:\r\n return Unit.Point\r\n }\r\n}\r\n\r\nexport function parseWrap(value: string | null | undefined): Wrap {\r\n if (value == null) {\r\n return Wrap.NoWrap\r\n }\r\n switch (value.toLowerCase()) {\r\n case \"no-wrap\":\r\n return Wrap.NoWrap\r\n case \"wrap\":\r\n return Wrap.Wrap\r\n case \"wrap-reverse\":\r\n return Wrap.WrapReverse\r\n default:\r\n return Wrap.NoWrap\r\n }\r\n}\r\n",
|
|
22
|
-
"export type MouseEventType = \"down\" | \"up\" | \"move\" | \"drag\" | \"drag-end\" | \"drop\" | \"over\" | \"out\" | \"scroll\"\r\n\r\nexport interface ScrollInfo {\r\n direction: \"up\" | \"down\" | \"left\" | \"right\"\r\n delta: number\r\n}\r\n\r\nexport type RawMouseEvent = {\r\n type: MouseEventType\r\n button: number\r\n x: number\r\n y: number\r\n modifiers: { shift: boolean; alt: boolean; ctrl: boolean }\r\n scroll?: ScrollInfo\r\n}\r\n\r\ntype ParsedMouseSequence = {\r\n event: RawMouseEvent\r\n consumed: number\r\n}\r\n\r\nexport class MouseParser {\r\n private mouseButtonsPressed = new Set<number>()\r\n\r\n private static readonly SCROLL_DIRECTIONS: Record<number, \"up\" | \"down\" | \"left\" | \"right\"> = {\r\n 0: \"up\",\r\n 1: \"down\",\r\n 2: \"left\",\r\n 3: \"right\",\r\n }\r\n\r\n public reset(): void {\r\n this.mouseButtonsPressed.clear()\r\n }\r\n\r\n // NOTE: Renderer currently sets stdin encoding to utf8, so Buffer -> string\r\n // decoding happens before parsing. That can corrupt old X10 bytes >= 0x80\r\n // (for example x/y >= 95), because utf8 does not preserve arbitrary bytes.\r\n // SGR sequences are ASCII digits + separators and are unaffected.\r\n private decodeInput(data: Buffer): string {\
|
|
22
|
+
"export type MouseEventType = \"down\" | \"up\" | \"move\" | \"drag\" | \"drag-end\" | \"drop\" | \"over\" | \"out\" | \"scroll\"\r\n\r\nexport interface ScrollInfo {\r\n direction: \"up\" | \"down\" | \"left\" | \"right\"\r\n delta: number\r\n}\r\n\r\nexport type RawMouseEvent = {\r\n type: MouseEventType\r\n button: number\r\n x: number\r\n y: number\r\n modifiers: { shift: boolean; alt: boolean; ctrl: boolean }\r\n scroll?: ScrollInfo\r\n}\r\n\r\ntype ParsedMouseSequence = {\r\n event: RawMouseEvent\r\n consumed: number\r\n}\r\n\r\nexport class MouseParser {\r\n private mouseButtonsPressed = new Set<number>()\r\n\r\n private static readonly SCROLL_DIRECTIONS: Record<number, \"up\" | \"down\" | \"left\" | \"right\"> = {\r\n 0: \"up\",\r\n 1: \"down\",\r\n 2: \"left\",\r\n 3: \"right\",\r\n }\r\n\r\n public reset(): void {\r\n this.mouseButtonsPressed.clear()\r\n }\r\n\r\n // NOTE: Renderer currently sets stdin encoding to utf8, so Buffer -> string\r\n // decoding happens before parsing. That can corrupt old X10 bytes >= 0x80\r\n // (for example x/y >= 95), because utf8 does not preserve arbitrary bytes.\r\n // SGR sequences are ASCII digits + separators and are unaffected.\r\n private decodeInput(data: Buffer | string | Uint8Array | ArrayBuffer): string {\n if (typeof data === \"string\") {\n return data\n }\n if (Buffer.isBuffer(data)) {\n return data.toString()\n }\n if (data instanceof Uint8Array) {\n return Buffer.from(data.buffer, data.byteOffset, data.byteLength).toString()\n }\n return Buffer.from(data).toString()\n }\n\n public parseMouseEvent(data: Buffer | string | Uint8Array | ArrayBuffer): RawMouseEvent | null {\n const str = this.decodeInput(data)\r\n const parsed = this.parseMouseSequenceAt(str, 0)\r\n return parsed?.event ?? null\r\n }\r\n\r\n public parseAllMouseEvents(data: Buffer | string | Uint8Array | ArrayBuffer): RawMouseEvent[] {\n const str = this.decodeInput(data)\r\n const events: RawMouseEvent[] = []\r\n let offset = 0\r\n\r\n while (offset < str.length) {\r\n const parsed = this.parseMouseSequenceAt(str, offset)\r\n if (!parsed) {\r\n // Stop at the first non-mouse sequence. Callers can decide whether to\r\n // route any remaining data through keyboard/terminal input handling.\r\n break\r\n }\r\n\r\n events.push(parsed.event)\r\n offset += parsed.consumed\r\n }\r\n\r\n return events\r\n }\r\n\r\n private parseMouseSequenceAt(str: string, offset: number): ParsedMouseSequence | null {\r\n if (!str.startsWith(\"\\x1b[\", offset)) return null\r\n const introducer = str[offset + 2]\r\n\r\n if (introducer === \"<\") {\r\n return this.parseSgrSequence(str, offset)\r\n }\r\n\r\n if (introducer === \"M\") {\r\n return this.parseBasicSequence(str, offset)\r\n }\r\n\r\n return null\r\n }\r\n\r\n private parseSgrSequence(str: string, offset: number): ParsedMouseSequence | null {\r\n let index = offset + 3\r\n const values = [0, 0, 0]\r\n let part = 0\r\n let hasDigit = false\r\n\r\n while (index < str.length) {\r\n const char = str[index]\r\n const charCode = str.charCodeAt(index)\r\n\r\n if (charCode >= 48 && charCode <= 57) {\r\n hasDigit = true\r\n values[part] = values[part]! * 10 + (charCode - 48)\r\n index++\r\n continue\r\n }\r\n\r\n switch (char) {\r\n case \";\": {\r\n if (!hasDigit || part >= 2) return null\r\n part++\r\n hasDigit = false\r\n index++\r\n break\r\n }\r\n case \"M\":\r\n case \"m\": {\r\n if (!hasDigit || part !== 2) return null\r\n\r\n return {\r\n event: this.decodeSgrEvent(values[0]!, values[1]!, values[2]!, char),\r\n consumed: index - offset + 1,\r\n }\r\n }\r\n default:\r\n return null\r\n }\r\n }\r\n\r\n return null\r\n }\r\n\r\n private parseBasicSequence(str: string, offset: number): ParsedMouseSequence | null {\r\n // ESC [ M + 3 bytes\r\n if (offset + 6 > str.length) return null\r\n\r\n const buttonByte = str.charCodeAt(offset + 3) - 32\r\n // Convert from 1-based to 0-based\r\n const x = str.charCodeAt(offset + 4) - 33\r\n const y = str.charCodeAt(offset + 5) - 33\r\n\r\n return {\r\n event: this.decodeBasicEvent(buttonByte, x, y),\r\n consumed: 6,\r\n }\r\n }\r\n\r\n private decodeSgrEvent(rawButtonCode: number, wireX: number, wireY: number, pressRelease: \"M\" | \"m\"): RawMouseEvent {\r\n const button = rawButtonCode & 3\r\n const isScroll = (rawButtonCode & 64) !== 0\r\n const scrollDirection = !isScroll ? undefined : MouseParser.SCROLL_DIRECTIONS[button]\r\n\r\n const isMotion = (rawButtonCode & 32) !== 0\r\n const modifiers = {\r\n shift: (rawButtonCode & 4) !== 0,\r\n alt: (rawButtonCode & 8) !== 0,\r\n ctrl: (rawButtonCode & 16) !== 0,\r\n }\r\n\r\n let type: MouseEventType\r\n let scrollInfo: ScrollInfo | undefined\r\n\r\n if (isScroll && pressRelease === \"M\") {\r\n type = \"scroll\"\r\n scrollInfo = {\r\n direction: scrollDirection!,\r\n delta: 1,\r\n }\r\n } else if (isMotion) {\r\n const isDragging = this.mouseButtonsPressed.size > 0\r\n\r\n if (button === 3) {\r\n type = \"move\"\r\n } else if (isDragging) {\r\n type = \"drag\"\r\n } else {\r\n type = \"move\"\r\n }\r\n } else {\r\n type = pressRelease === \"M\" ? \"down\" : \"up\"\r\n\r\n if (type === \"down\" && button !== 3) {\r\n this.mouseButtonsPressed.add(button)\r\n } else if (type === \"up\") {\r\n this.mouseButtonsPressed.clear()\r\n }\r\n }\r\n\r\n return {\r\n type,\r\n button: button === 3 ? 0 : button,\r\n x: wireX - 1,\r\n y: wireY - 1,\r\n modifiers,\r\n scroll: scrollInfo,\r\n }\r\n }\r\n\r\n private decodeBasicEvent(buttonByte: number, x: number, y: number): RawMouseEvent {\r\n const button = buttonByte & 3\r\n const isScroll = (buttonByte & 64) !== 0\r\n const isMotion = (buttonByte & 32) !== 0\r\n const scrollDirection = !isScroll ? undefined : MouseParser.SCROLL_DIRECTIONS[button]\r\n\r\n const modifiers = {\r\n shift: (buttonByte & 4) !== 0,\r\n alt: (buttonByte & 8) !== 0,\r\n ctrl: (buttonByte & 16) !== 0,\r\n }\r\n\r\n let type: MouseEventType\r\n let actualButton: number\r\n let scrollInfo: ScrollInfo | undefined\r\n\r\n if (isScroll) {\r\n type = \"scroll\"\r\n actualButton = 0\r\n scrollInfo = {\r\n direction: scrollDirection!,\r\n delta: 1,\r\n }\r\n } else if (isMotion) {\r\n type = \"move\"\r\n actualButton = button === 3 ? -1 : button\r\n } else {\r\n type = button === 3 ? \"up\" : \"down\"\r\n actualButton = button === 3 ? 0 : button\r\n }\r\n\r\n return {\r\n type,\r\n button: actualButton,\r\n x,\r\n y,\r\n modifiers,\r\n scroll: scrollInfo,\r\n }\r\n }\r\n}\r\n",
|
|
23
23
|
"import { Renderable, type ViewportBounds } from \"..\"\r\nimport { coordinateToCharacterIndex, fonts } from \"./ascii.font\"\r\n\r\nclass SelectionAnchor {\r\n private relativeX: number\r\n private relativeY: number\r\n\r\n constructor(\r\n private renderable: Renderable,\r\n absoluteX: number,\r\n absoluteY: number,\r\n ) {\r\n this.relativeX = absoluteX - this.renderable.x\r\n this.relativeY = absoluteY - this.renderable.y\r\n }\r\n\r\n get x(): number {\r\n return this.renderable.x + this.relativeX\r\n }\r\n\r\n get y(): number {\r\n return this.renderable.y + this.relativeY\r\n }\r\n}\r\n\r\nexport class Selection {\r\n private _anchor: SelectionAnchor\r\n private _focus: { x: number; y: number }\r\n private _selectedRenderables: Renderable[] = []\r\n private _touchedRenderables: Renderable[] = []\r\n private _isActive: boolean = true\r\n private _isDragging: boolean = true\r\n private _isStart: boolean = false\r\n\r\n constructor(anchorRenderable: Renderable, anchor: { x: number; y: number }, focus: { x: number; y: number }) {\r\n this._anchor = new SelectionAnchor(anchorRenderable, anchor.x, anchor.y)\r\n this._focus = { ...focus }\r\n }\r\n\r\n get isStart(): boolean {\r\n return this._isStart\r\n }\r\n\r\n set isStart(value: boolean) {\r\n this._isStart = value\r\n }\r\n\r\n get anchor(): { x: number; y: number } {\r\n return { x: this._anchor.x, y: this._anchor.y }\r\n }\r\n\r\n get focus(): { x: number; y: number } {\r\n return { ...this._focus }\r\n }\r\n\r\n set focus(value: { x: number; y: number }) {\r\n this._focus = { ...value }\r\n }\r\n\r\n get isActive(): boolean {\r\n return this._isActive\r\n }\r\n\r\n set isActive(value: boolean) {\r\n this._isActive = value\r\n }\r\n\r\n get isDragging(): boolean {\r\n return this._isDragging\r\n }\r\n\r\n set isDragging(value: boolean) {\r\n this._isDragging = value\r\n }\r\n\r\n get bounds(): ViewportBounds {\r\n const minX = Math.min(this._anchor.x, this._focus.x)\r\n const maxX = Math.max(this._anchor.x, this._focus.x)\r\n const minY = Math.min(this._anchor.y, this._focus.y)\r\n const maxY = Math.max(this._anchor.y, this._focus.y)\r\n\r\n // Selection bounds are inclusive of both anchor and focus\r\n // A selection from (0,0) to (0,0) covers 1 cell\r\n // A selection from (0,0) to (5,3) covers cells from (0,0) to (5,3) inclusive\r\n const width = maxX - minX + 1\r\n const height = maxY - minY + 1\r\n\r\n return {\r\n x: minX,\r\n y: minY,\r\n width,\r\n height,\r\n }\r\n }\r\n\r\n updateSelectedRenderables(selectedRenderables: Renderable[]): void {\r\n this._selectedRenderables = selectedRenderables\r\n }\r\n\r\n get selectedRenderables(): Renderable[] {\r\n return this._selectedRenderables\r\n }\r\n\r\n updateTouchedRenderables(touchedRenderables: Renderable[]): void {\r\n this._touchedRenderables = touchedRenderables\r\n }\r\n\r\n get touchedRenderables(): Renderable[] {\r\n return this._touchedRenderables\r\n }\r\n\r\n getSelectedText(): string {\r\n const selectedTexts = this._selectedRenderables\r\n // Sort by reading order: top-to-bottom, then left-to-right\r\n .sort((a, b) => {\r\n const aY = a.y\r\n const bY = b.y\r\n if (aY !== bY) {\r\n return aY - bY\r\n }\r\n return a.x - b.x\r\n })\r\n .filter((renderable) => !renderable.isDestroyed)\r\n .map((renderable) => renderable.getSelectedText())\r\n .filter((text) => text)\r\n return selectedTexts.join(\"\\n\")\r\n }\r\n}\r\n\r\nexport interface LocalSelectionBounds {\r\n anchorX: number\r\n anchorY: number\r\n focusX: number\r\n focusY: number\r\n isActive: boolean\r\n}\r\n\r\nexport function convertGlobalToLocalSelection(\r\n globalSelection: Selection | null,\r\n localX: number,\r\n localY: number,\r\n): LocalSelectionBounds | null {\r\n if (!globalSelection?.isActive) {\r\n return null\r\n }\r\n\r\n return {\r\n anchorX: globalSelection.anchor.x - localX,\r\n anchorY: globalSelection.anchor.y - localY,\r\n focusX: globalSelection.focus.x - localX,\r\n focusY: globalSelection.focus.y - localY,\r\n isActive: true,\r\n }\r\n}\r\n\r\nexport class ASCIIFontSelectionHelper {\r\n private localSelection: { start: number; end: number } | null = null\r\n\r\n constructor(\r\n private getText: () => string,\r\n private getFont: () => keyof typeof fonts,\r\n ) {}\r\n\r\n hasSelection(): boolean {\r\n return this.localSelection !== null\r\n }\r\n\r\n getSelection(): { start: number; end: number } | null {\r\n return this.localSelection\r\n }\r\n\r\n shouldStartSelection(localX: number, localY: number, width: number, height: number): boolean {\r\n if (localX < 0 || localX >= width || localY < 0 || localY >= height) {\r\n return false\r\n }\r\n\r\n const text = this.getText()\r\n const font = this.getFont()\r\n const charIndex = coordinateToCharacterIndex(localX, text, font)\r\n\r\n return charIndex >= 0 && charIndex <= text.length\r\n }\r\n\r\n onLocalSelectionChanged(localSelection: LocalSelectionBounds | null, width: number, height: number): boolean {\r\n const previousSelection = this.localSelection\r\n\r\n if (!localSelection?.isActive) {\r\n this.localSelection = null\r\n return previousSelection !== null\r\n }\r\n\r\n const text = this.getText()\r\n const font = this.getFont()\r\n\r\n const selStart = { x: localSelection.anchorX, y: localSelection.anchorY }\r\n const selEnd = { x: localSelection.focusX, y: localSelection.focusY }\r\n\r\n if (height - 1 < selStart.y || 0 > selEnd.y) {\r\n this.localSelection = null\r\n return previousSelection !== null\r\n }\r\n\r\n let startCharIndex = 0\r\n let endCharIndex = text.length\r\n\r\n if (selStart.y > height - 1) {\r\n // Selection starts below us - we're not selected\r\n this.localSelection = null\r\n return previousSelection !== null\r\n } else if (selStart.y >= 0 && selStart.y <= height - 1) {\r\n // Selection starts within our Y range - use the actual start X coordinate\r\n if (selStart.x > 0) {\r\n startCharIndex = coordinateToCharacterIndex(selStart.x, text, font)\r\n }\r\n }\r\n\r\n if (selEnd.y < 0) {\r\n // Selection ends above us - we're not selected\r\n this.localSelection = null\r\n return previousSelection !== null\r\n } else if (selEnd.y >= 0 && selEnd.y <= height - 1) {\r\n // Selection ends within our Y range - use the actual end X coordinate\r\n if (selEnd.x >= 0) {\r\n endCharIndex = coordinateToCharacterIndex(selEnd.x, text, font)\r\n } else {\r\n endCharIndex = 0\r\n }\r\n }\r\n\r\n if (startCharIndex < endCharIndex && startCharIndex >= 0 && endCharIndex <= text.length) {\r\n this.localSelection = { start: startCharIndex, end: endCharIndex }\r\n } else {\r\n this.localSelection = null\r\n }\r\n\r\n return (\r\n previousSelection?.start !== this.localSelection?.start || previousSelection?.end !== this.localSelection?.end\r\n )\r\n }\r\n}\r\n",
|
|
24
24
|
"const singletonCacheSymbol = Symbol.for(\"@cascadetui/core/singleton\")\r\n\r\n/**\r\n * Ensures a value is initialized once per process,\r\n * persists across Bun hot reloads, and is type-safe.\r\n */\r\nexport function singleton<T>(key: string, factory: () => T): T {\r\n // @ts-expect-error this symbol is only used in this file and is not part of the public API\r\n const bag = (globalThis[singletonCacheSymbol] ??= {})\r\n if (!(key in bag)) {\r\n bag[key] = factory()\r\n }\r\n return bag[key] as T\r\n}\r\n\r\nexport function destroySingleton(key: string): void {\r\n // @ts-expect-error this symbol is only used in this file and is not part of the public API\r\n const bag = globalThis[singletonCacheSymbol]\r\n if (bag && key in bag) {\r\n delete bag[key]\r\n }\r\n}\r\n\r\nexport function hasSingleton(key: string): boolean {\r\n // @ts-expect-error this symbol is only used in this file and is not part of the public API\r\n const bag = globalThis[singletonCacheSymbol]\r\n return bag && key in bag\r\n}\r\n",
|
|
25
25
|
"import { singleton } from \"./singleton.ts\"\r\n\r\n/**\r\n * Environment variable registry\r\n *\r\n * Usage:\r\n * ```ts\r\n * import { registerEnvVar, env } from \"./lib/env.ts\";\r\n *\r\n * // Register environment variables\r\n * registerEnvVar({\r\n * name: \"DEBUG\",\r\n * description: \"Enable debug logging\",\r\n * type: \"boolean\",\r\n * default: false\r\n * });\r\n *\r\n * registerEnvVar({\r\n * name: \"PORT\",\r\n * description: \"Server port number\",\r\n * type: \"number\",\r\n * default: 3000\r\n * });\r\n *\r\n * // Access environment variables\r\n * if (env.DEBUG) {\r\n * console.log(\"Debug mode enabled\");\r\n * }\r\n *\r\n * const port = env.PORT; // number\r\n * ```\r\n */\r\n\r\nexport interface EnvVarConfig {\r\n name: string\r\n description: string\r\n default?: string | boolean | number\r\n type?: \"string\" | \"boolean\" | \"number\"\r\n}\r\n\r\nexport const envRegistry: Record<string, EnvVarConfig> = singleton(\"env-registry\", () => ({}))\r\n\r\nexport function registerEnvVar(config: EnvVarConfig): void {\r\n const existing = envRegistry[config.name]\r\n if (existing) {\r\n if (\r\n existing.description !== config.description ||\r\n existing.type !== config.type ||\r\n existing.default !== config.default\r\n ) {\r\n throw new Error(\r\n `Environment variable \"${config.name}\" is already registered with different configuration. ` +\r\n `Existing: ${JSON.stringify(existing)}, New: ${JSON.stringify(config)}`,\r\n )\r\n }\r\n return\r\n }\r\n envRegistry[config.name] = config\r\n}\r\n\r\nfunction normalizeBoolean(value: string): boolean {\r\n const lowerValue = value.toLowerCase()\r\n return [\"true\", \"1\", \"on\", \"yes\"].includes(lowerValue)\r\n}\r\n\r\nfunction parseEnvValue(config: EnvVarConfig): string | boolean | number {\r\n const envValue = process.env[config.name]\r\n\r\n if (envValue === undefined && config.default !== undefined) {\r\n return config.default\r\n }\r\n\r\n if (envValue === undefined) {\r\n throw new Error(`Required environment variable ${config.name} is not set. ${config.description}`)\r\n }\r\n\r\n switch (config.type) {\r\n case \"boolean\":\r\n return typeof envValue === \"boolean\" ? envValue : normalizeBoolean(envValue)\r\n case \"number\":\r\n const numValue = Number(envValue)\r\n if (isNaN(numValue)) {\r\n throw new Error(`Environment variable ${config.name} must be a valid number, got: ${envValue}`)\r\n }\r\n return numValue\r\n case \"string\":\r\n default:\r\n return envValue\r\n }\r\n}\r\n\r\nclass EnvStore {\r\n private parsedValues: Map<string, string | boolean | number> = new Map()\r\n\r\n get(key: string): any {\r\n if (this.parsedValues.has(key)) {\r\n return this.parsedValues.get(key)!\r\n }\r\n\r\n if (!(key in envRegistry)) {\r\n throw new Error(`Environment variable ${key} is not registered.`)\r\n }\r\n\r\n try {\r\n const value = parseEnvValue(envRegistry[key])\r\n this.parsedValues.set(key, value)\r\n return value\r\n } catch (error) {\r\n throw new Error(`Failed to parse env var ${key}: ${error instanceof Error ? error.message : String(error)}`)\r\n }\r\n }\r\n\r\n has(key: string): boolean {\r\n return key in envRegistry\r\n }\r\n\r\n clearCache(): void {\r\n this.parsedValues.clear()\r\n }\r\n}\r\n\r\nconst envStore = singleton(\"env-store\", () => new EnvStore())\r\n\r\nexport function clearEnvCache(): void {\r\n envStore.clearCache()\r\n}\r\n\r\nexport function generateEnvMarkdown(): string {\r\n const configs = Object.values(envRegistry)\r\n\r\n if (configs.length === 0) {\r\n return \"# Environment Variables\\n\\nNo environment variables registered.\\n\"\r\n }\r\n\r\n let markdown = \"# Environment Variables\\n\\n\"\r\n\r\n for (const config of configs) {\r\n markdown += `## ${config.name}\\n\\n`\r\n markdown += `${config.description}\\n\\n`\r\n\r\n markdown += `**Type:** \\`${config.type || \"string\"}\\` \\n`\r\n\r\n if (config.default !== undefined) {\r\n const defaultValue = typeof config.default === \"string\" ? `\"${config.default}\"` : String(config.default)\r\n markdown += `**Default:** \\`${defaultValue}\\`\\n`\r\n } else {\r\n markdown += \"**Default:** *Required*\\n\"\r\n }\r\n\r\n markdown += \"\\n\"\r\n }\r\n\r\n return markdown\r\n}\r\n\r\nexport function generateEnvColored(): string {\r\n const configs = Object.values(envRegistry)\r\n\r\n if (configs.length === 0) {\r\n return \"\\x1b[1;36mEnvironment Variables\\x1b[0m\\n\\nNo environment variables registered.\\n\"\r\n }\r\n\r\n let output = \"\\x1b[1;36mEnvironment Variables\\x1b[0m\\n\\n\"\r\n\r\n for (const config of configs) {\r\n output += `\\x1b[1;33m${config.name}\\x1b[0m\\n`\r\n output += `${config.description}\\n`\r\n output += `\\x1b[32mType:\\x1b[0m \\x1b[36m${config.type || \"string\"}\\x1b[0m\\n`\r\n\r\n if (config.default !== undefined) {\r\n const defaultValue = typeof config.default === \"string\" ? `\"${config.default}\"` : String(config.default)\r\n output += `\\x1b[32mDefault:\\x1b[0m \\x1b[35m${defaultValue}\\x1b[0m\\n`\r\n } else {\r\n output += `\\x1b[32mDefault:\\x1b[0m \\x1b[31mRequired\\x1b[0m\\n`\r\n }\r\n\r\n output += \"\\n\"\r\n }\r\n\r\n return output\r\n}\r\n\r\nexport const env = new Proxy({} as Record<string, any>, {\r\n get(target, prop: string) {\r\n if (typeof prop !== \"string\") {\r\n return undefined\r\n }\r\n return envStore.get(prop)\r\n },\r\n\r\n has(target, prop: string) {\r\n return envStore.has(prop)\r\n },\r\n\r\n ownKeys() {\r\n return Object.keys(envRegistry)\r\n },\r\n\r\n getOwnPropertyDescriptor(target, prop: string) {\r\n if (envStore.has(prop)) {\r\n return {\r\n enumerable: true,\r\n configurable: true,\r\n get: () => envStore.get(prop),\r\n }\r\n }\r\n return undefined\r\n },\r\n})\r\n",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"// 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",
|
|
44
44
|
"import { defineStruct, defineEnum } from \"bun-ffi-structs\"\r\nimport { ptr, toArrayBuffer, type Pointer } from \"bun:ffi\"\r\nimport { RGBA } from \"./lib/RGBA\"\r\n\r\nconst rgbaPackTransform = (rgba?: RGBA) => (rgba ? ptr(rgba.buffer) : null)\r\nconst rgbaUnpackTransform = (ptr?: Pointer) => (ptr ? RGBA.fromArray(new Float32Array(toArrayBuffer(ptr))) : undefined)\r\n\r\ntype StyledChunkInput = {\r\n text: string\r\n fg?: RGBA | null\r\n bg?: RGBA | null\r\n attributes?: number | null\r\n link?: { url: string } | string | null\r\n}\r\n\r\nexport const StyledChunkStruct = defineStruct(\r\n [\r\n [\"text\", \"char*\"],\r\n [\"text_len\", \"u64\", { lengthOf: \"text\" }],\r\n [\r\n \"fg\",\r\n \"pointer\",\r\n {\r\n optional: true,\r\n packTransform: rgbaPackTransform,\r\n unpackTransform: rgbaUnpackTransform,\r\n },\r\n ],\r\n [\r\n \"bg\",\r\n \"pointer\",\r\n {\r\n optional: true,\r\n packTransform: rgbaPackTransform,\r\n unpackTransform: rgbaUnpackTransform,\r\n },\r\n ],\r\n [\"attributes\", \"u32\", { default: 0 }],\r\n [\"link\", \"char*\", { default: \"\" }],\r\n [\"link_len\", \"u64\", { lengthOf: \"link\" }],\r\n ],\r\n {\r\n mapValue: (chunk: StyledChunkInput): StyledChunkInput => {\r\n if (!chunk.link || typeof chunk.link === \"string\") {\r\n return chunk\r\n }\r\n\r\n return {\r\n ...chunk,\r\n link: chunk.link.url,\r\n }\r\n },\r\n },\r\n)\r\n\r\nexport const HighlightStruct = defineStruct([\r\n [\"start\", \"u32\"],\r\n [\"end\", \"u32\"],\r\n [\"styleId\", \"u32\"],\r\n [\"priority\", \"u8\", { default: 0 }],\r\n [\"hlRef\", \"u16\", { default: 0 }],\r\n])\r\n\r\nexport const LogicalCursorStruct = defineStruct([\r\n [\"row\", \"u32\"],\r\n [\"col\", \"u32\"],\r\n [\"offset\", \"u32\"],\r\n])\r\n\r\nexport const VisualCursorStruct = defineStruct([\r\n [\"visualRow\", \"u32\"],\r\n [\"visualCol\", \"u32\"],\r\n [\"logicalRow\", \"u32\"],\r\n [\"logicalCol\", \"u32\"],\r\n [\"offset\", \"u32\"],\r\n])\r\n\r\nconst UnicodeMethodEnum = defineEnum({ wcwidth: 0, unicode: 1 }, \"u8\")\r\n\r\nexport const TerminalCapabilitiesStruct = defineStruct([\r\n [\"kitty_keyboard\", \"bool_u8\"],\r\n [\"kitty_graphics\", \"bool_u8\"],\r\n [\"rgb\", \"bool_u8\"],\r\n [\"unicode\", UnicodeMethodEnum],\r\n [\"sgr_pixels\", \"bool_u8\"],\r\n [\"color_scheme_updates\", \"bool_u8\"],\r\n [\"explicit_width\", \"bool_u8\"],\r\n [\"scaled_text\", \"bool_u8\"],\r\n [\"sixel\", \"bool_u8\"],\r\n [\"focus_tracking\", \"bool_u8\"],\r\n [\"sync\", \"bool_u8\"],\r\n [\"bracketed_paste\", \"bool_u8\"],\r\n [\"hyperlinks\", \"bool_u8\"],\r\n [\"osc52\", \"bool_u8\"],\r\n [\"explicit_cursor_positioning\", \"bool_u8\"],\r\n [\"term_name\", \"char*\"],\r\n [\"term_name_len\", \"u64\", { lengthOf: \"term_name\" }],\r\n [\"term_version\", \"char*\"],\r\n [\"term_version_len\", \"u64\", { lengthOf: \"term_version\" }],\r\n [\"term_from_xtversion\", \"bool_u8\"],\r\n])\r\n\r\nexport const EncodedCharStruct = defineStruct([\r\n [\"width\", \"u8\"],\r\n [\"char\", \"u32\"],\r\n])\r\n\r\nexport const LineInfoStruct = defineStruct([\r\n [\"starts\", [\"u32\"]],\r\n [\"startsLen\", \"u32\", { lengthOf: \"starts\" }],\r\n [\"widths\", [\"u32\"]],\r\n [\"widthsLen\", \"u32\", { lengthOf: \"widths\" }],\r\n [\"sources\", [\"u32\"]],\r\n [\"sourcesLen\", \"u32\", { lengthOf: \"sources\" }],\r\n [\"wraps\", [\"u32\"]],\r\n [\"wrapsLen\", \"u32\", { lengthOf: \"wraps\" }],\r\n [\"maxWidth\", \"u32\"],\r\n])\r\n\r\nexport const MeasureResultStruct = defineStruct([\r\n [\"lineCount\", \"u32\"],\r\n [\"maxWidth\", \"u32\"],\r\n])\r\n\r\nexport const CursorStateStruct = defineStruct([\r\n [\"x\", \"u32\"],\r\n [\"y\", \"u32\"],\r\n [\"visible\", \"bool_u8\"],\r\n [\"style\", \"u8\"],\r\n [\"blinking\", \"bool_u8\"],\r\n [\"r\", \"f32\"],\r\n [\"g\", \"f32\"],\r\n [\"b\", \"f32\"],\r\n [\"a\", \"f32\"],\r\n])\r\n\r\nexport const CursorStyleOptionsStruct = defineStruct([\r\n [\"style\", \"u8\", { default: 255 }],\r\n [\"blinking\", \"u8\", { default: 255 }],\r\n [\r\n \"color\",\r\n \"pointer\",\r\n {\r\n optional: true,\r\n packTransform: rgbaPackTransform,\r\n unpackTransform: rgbaUnpackTransform,\r\n },\r\n ],\r\n [\"cursor\", \"u8\", { default: 255 }],\r\n])\r\n\r\nexport const GridDrawOptionsStruct = defineStruct([\r\n [\"drawInner\", \"bool_u8\", { default: true }],\r\n [\"drawOuter\", \"bool_u8\", { default: true }],\r\n])\r\n\r\nexport type BuildOptions = {\r\n gpaSafeStats: boolean\r\n gpaMemoryLimitTracking: boolean\r\n}\r\n\r\nexport const BuildOptionsStruct = defineStruct([\r\n [\"gpaSafeStats\", \"bool_u8\"],\r\n [\"gpaMemoryLimitTracking\", \"bool_u8\"],\r\n])\r\n\r\nexport type AllocatorStats = {\r\n totalRequestedBytes: number\r\n activeAllocations: number\r\n smallAllocations: number\r\n largeAllocations: number\r\n requestedBytesValid: boolean\r\n}\r\n\r\nexport const AllocatorStatsStruct = defineStruct([\r\n [\"totalRequestedBytes\", \"u64\"],\r\n [\"activeAllocations\", \"u64\"],\r\n [\"smallAllocations\", \"u64\"],\r\n [\"largeAllocations\", \"u64\"],\r\n [\"requestedBytesValid\", \"bool_u8\"],\r\n])\r\n\r\nexport type GrowthPolicy = \"grow\" | \"block\"\r\n\r\nexport type NativeSpanFeedOptions = {\r\n chunkSize?: number\r\n initialChunks?: number\r\n maxBytes?: bigint\r\n growthPolicy?: GrowthPolicy\r\n autoCommitOnFull?: boolean\r\n spanQueueCapacity?: number\r\n}\r\n\r\nexport type NativeSpanFeedStats = {\r\n bytesWritten: bigint\r\n spansCommitted: bigint\r\n chunks: number\r\n pendingSpans: number\r\n}\r\n\r\nexport type SpanInfo = {\r\n chunkPtr: Pointer\r\n offset: number\r\n len: number\r\n chunkIndex: number\r\n}\r\n\r\nexport type ReserveInfo = {\r\n ptr: Pointer\r\n len: number\r\n}\r\n\r\nconst GrowthPolicyEnum = defineEnum({ grow: 0, block: 1 }, \"u8\")\r\n\r\nexport const NativeSpanFeedOptionsStruct = defineStruct([\r\n [\"chunkSize\", \"u32\", { default: 64 * 1024 }],\r\n [\"initialChunks\", \"u32\", { default: 2 }],\r\n [\"maxBytes\", \"u64\", { default: 0n }],\r\n [\"growthPolicy\", GrowthPolicyEnum, { default: \"grow\" }],\r\n [\"autoCommitOnFull\", \"bool_u8\", { default: true }],\r\n [\"spanQueueCapacity\", \"u32\", { default: 0 }],\r\n])\r\n\r\nexport const NativeSpanFeedStatsStruct = defineStruct([\r\n [\"bytesWritten\", \"u64\"],\r\n [\"spansCommitted\", \"u64\"],\r\n [\"chunks\", \"u32\"],\r\n [\"pendingSpans\", \"u32\"],\r\n])\r\n\r\nexport const SpanInfoStruct = defineStruct(\r\n [\r\n [\"chunkPtr\", \"pointer\"],\r\n [\"offset\", \"u32\"],\r\n [\"len\", \"u32\"],\r\n [\"chunkIndex\", \"u32\"],\r\n [\"reserved\", \"u32\", { default: 0 }],\r\n ],\r\n {\r\n reduceValue: (value: { chunkPtr: Pointer; offset: number; len: number; chunkIndex: number }) => ({\r\n chunkPtr: value.chunkPtr as Pointer,\r\n offset: value.offset,\r\n len: value.len,\r\n chunkIndex: value.chunkIndex,\r\n }),\r\n },\r\n)\r\n\r\nexport const ReserveInfoStruct = defineStruct(\r\n [\r\n [\"ptr\", \"pointer\"],\r\n [\"len\", \"u32\"],\r\n [\"reserved\", \"u32\", { default: 0 }],\r\n ],\r\n {\r\n reduceValue: (value: { ptr: Pointer; len: number }) => ({\r\n ptr: value.ptr as Pointer,\r\n len: value.len,\r\n }),\r\n },\r\n)\r\n",
|
|
45
45
|
"import type { StyledText } from \"./lib/styled-text\"\r\nimport { RGBA } from \"./lib/RGBA\"\r\nimport { resolveRenderLib, type LineInfo, type RenderLib } from \"./zig\"\r\nimport { type Pointer } from \"bun:ffi\"\r\nimport { type WidthMethod, type Highlight } from \"./types\"\r\nimport type { SyntaxStyle } from \"./syntax-style\"\r\n\r\nexport interface TextChunk {\r\n __isChunk: true\r\n text: string\r\n fg?: RGBA\r\n bg?: RGBA\r\n attributes?: number\r\n link?: { url: string }\r\n}\r\n\r\nexport class TextBuffer {\r\n private lib: RenderLib\r\n private bufferPtr: Pointer\r\n private _length: number = 0\r\n private _byteSize: number = 0\r\n private _lineInfo?: LineInfo\r\n private _destroyed: boolean = false\r\n private _syntaxStyle?: SyntaxStyle\r\n private _textBytes?: Uint8Array\r\n private _memId?: number\r\n private _appendedChunks: Uint8Array[] = []\r\n\r\n constructor(lib: RenderLib, ptr: Pointer) {\r\n this.lib = lib\r\n this.bufferPtr = ptr\r\n }\r\n\r\n static create(widthMethod: WidthMethod): TextBuffer {\r\n const lib = resolveRenderLib()\r\n return lib.createTextBuffer(widthMethod)\r\n }\r\n\r\n // Fail loud and clear\r\n // Instead of trying to return values that could work or not,\r\n // this at least will show a stack trace to know where the call to a destroyed TextBuffer was made\r\n private guard(): void {\r\n if (this._destroyed) throw new Error(\"TextBuffer is destroyed\")\r\n }\r\n\r\n public setText(text: string): void {\r\n this.guard()\r\n this._textBytes = this.lib.encoder.encode(text)\r\n\r\n if (this._memId === undefined) {\r\n this._memId = this.lib.textBufferRegisterMemBuffer(this.bufferPtr, this._textBytes, false)\r\n } else {\r\n this.lib.textBufferReplaceMemBuffer(this.bufferPtr, this._memId, this._textBytes, false)\r\n }\r\n\r\n this.lib.textBufferSetTextFromMem(this.bufferPtr, this._memId)\r\n this._length = this.lib.textBufferGetLength(this.bufferPtr)\r\n this._byteSize = this.lib.textBufferGetByteSize(this.bufferPtr)\r\n this._lineInfo = undefined\r\n this._appendedChunks = [] // Clear any previously appended chunks\r\n }\r\n\r\n public append(text: string): void {\r\n this.guard()\r\n const textBytes = this.lib.encoder.encode(text)\r\n // Keep the bytes alive to prevent garbage collection\r\n this._appendedChunks.push(textBytes)\r\n this.lib.textBufferAppend(this.bufferPtr, textBytes)\r\n this._length = this.lib.textBufferGetLength(this.bufferPtr)\r\n this._byteSize = this.lib.textBufferGetByteSize(this.bufferPtr)\r\n this._lineInfo = undefined\r\n }\r\n\r\n public loadFile(path: string): void {\r\n this.guard()\r\n const success = this.lib.textBufferLoadFile(this.bufferPtr, path)\r\n if (!success) {\r\n throw new Error(`Failed to load file: ${path}`)\r\n }\r\n this._length = this.lib.textBufferGetLength(this.bufferPtr)\r\n this._byteSize = this.lib.textBufferGetByteSize(this.bufferPtr)\r\n this._lineInfo = undefined\r\n this._textBytes = undefined\r\n }\r\n\r\n public setStyledText(text: StyledText): void {\r\n this.guard()\r\n\r\n this.lib.textBufferSetStyledText(this.bufferPtr, text.chunks)\r\n\r\n this._length = this.lib.textBufferGetLength(this.bufferPtr)\r\n this._byteSize = this.lib.textBufferGetByteSize(this.bufferPtr)\r\n this._lineInfo = undefined\r\n }\r\n\r\n public setDefaultFg(fg: RGBA | null): void {\r\n this.guard()\r\n this.lib.textBufferSetDefaultFg(this.bufferPtr, fg)\r\n }\r\n\r\n public setDefaultBg(bg: RGBA | null): void {\r\n this.guard()\r\n this.lib.textBufferSetDefaultBg(this.bufferPtr, bg)\r\n }\r\n\r\n public setDefaultAttributes(attributes: number | null): void {\r\n this.guard()\r\n this.lib.textBufferSetDefaultAttributes(this.bufferPtr, attributes)\r\n }\r\n\r\n public resetDefaults(): void {\r\n this.guard()\r\n this.lib.textBufferResetDefaults(this.bufferPtr)\r\n }\r\n\r\n public getLineCount(): number {\r\n this.guard()\r\n return this.lib.textBufferGetLineCount(this.bufferPtr)\r\n }\r\n\r\n public get length(): number {\r\n this.guard()\r\n return this._length\r\n }\r\n\r\n public get byteSize(): number {\r\n this.guard()\r\n return this._byteSize\r\n }\r\n\r\n public get ptr(): Pointer {\r\n this.guard()\r\n return this.bufferPtr\r\n }\r\n\r\n public getPlainText(): string {\r\n this.guard()\r\n if (this._byteSize === 0) return \"\"\r\n // Use byteSize for accurate buffer allocation (includes newlines in byte count)\r\n const plainBytes = this.lib.getPlainTextBytes(this.bufferPtr, this._byteSize)\r\n\r\n if (!plainBytes) return \"\"\r\n\r\n return this.lib.decoder.decode(plainBytes)\r\n }\r\n\r\n public getTextRange(startOffset: number, endOffset: number): string {\r\n this.guard()\r\n if (startOffset >= endOffset) return \"\"\r\n if (this._byteSize === 0) return \"\"\r\n\r\n const rangeBytes = this.lib.textBufferGetTextRange(this.bufferPtr, startOffset, endOffset, this._byteSize)\r\n\r\n if (!rangeBytes) return \"\"\r\n\r\n return this.lib.decoder.decode(rangeBytes)\r\n }\r\n\r\n /**\r\n * Add a highlight using character offsets into the full text.\r\n * start/end in highlight represent absolute character positions.\r\n */\r\n public addHighlightByCharRange(highlight: Highlight): void {\r\n this.guard()\r\n this.lib.textBufferAddHighlightByCharRange(this.bufferPtr, highlight)\r\n }\r\n\r\n /**\r\n * Add a highlight to a specific line by column positions.\r\n * start/end in highlight represent column offsets.\r\n */\r\n public addHighlight(lineIdx: number, highlight: Highlight): void {\r\n this.guard()\r\n this.lib.textBufferAddHighlight(this.bufferPtr, lineIdx, highlight)\r\n }\r\n\r\n public removeHighlightsByRef(hlRef: number): void {\r\n this.guard()\r\n this.lib.textBufferRemoveHighlightsByRef(this.bufferPtr, hlRef)\r\n }\r\n\r\n public clearLineHighlights(lineIdx: number): void {\r\n this.guard()\r\n this.lib.textBufferClearLineHighlights(this.bufferPtr, lineIdx)\r\n }\r\n\r\n public clearAllHighlights(): void {\r\n this.guard()\r\n this.lib.textBufferClearAllHighlights(this.bufferPtr)\r\n }\r\n\r\n public getLineHighlights(lineIdx: number): Array<Highlight> {\r\n this.guard()\r\n return this.lib.textBufferGetLineHighlights(this.bufferPtr, lineIdx)\r\n }\r\n\r\n public getHighlightCount(): number {\r\n this.guard()\r\n return this.lib.textBufferGetHighlightCount(this.bufferPtr)\r\n }\r\n\r\n public setSyntaxStyle(style: SyntaxStyle | null): void {\r\n this.guard()\r\n this._syntaxStyle = style ?? undefined\r\n this.lib.textBufferSetSyntaxStyle(this.bufferPtr, style?.ptr ?? null)\r\n }\r\n\r\n public getSyntaxStyle(): SyntaxStyle | null {\r\n this.guard()\r\n return this._syntaxStyle ?? null\r\n }\r\n\r\n public setTabWidth(width: number): void {\r\n this.guard()\r\n this.lib.textBufferSetTabWidth(this.bufferPtr, width)\r\n }\r\n\r\n public getTabWidth(): number {\r\n this.guard()\r\n return this.lib.textBufferGetTabWidth(this.bufferPtr)\r\n }\r\n\r\n public clear(): void {\r\n this.guard()\r\n this.lib.textBufferClear(this.bufferPtr)\r\n this._length = 0\r\n this._byteSize = 0\r\n this._lineInfo = undefined\r\n this._textBytes = undefined\r\n this._appendedChunks = []\r\n // Note: _memId is NOT cleared - it can be reused for next setText\r\n }\r\n\r\n public reset(): void {\r\n this.guard()\r\n this.lib.textBufferReset(this.bufferPtr)\r\n this._length = 0\r\n this._byteSize = 0\r\n this._lineInfo = undefined\r\n this._textBytes = undefined\r\n this._memId = undefined // Reset clears the registry, so clear our ID\r\n this._appendedChunks = []\r\n }\r\n\r\n public destroy(): void {\r\n if (this._destroyed) return\r\n this._destroyed = true\r\n this.lib.destroyTextBuffer(this.bufferPtr)\r\n }\r\n}\r\n",
|
|
46
|
-
"import { EventEmitter } from \"events\"\r\nimport Yoga, { Direction, Display, Edge, FlexDirection, type Config, type Node as YogaNode } from \"yoga-layout\"\r\nimport { OptimizedBuffer } from \"./buffer\"\r\nimport type { KeyEvent, PasteEvent } from \"./lib/KeyHandler\"\r\nimport type { MouseEventType } from \"./lib/parse.mouse\"\r\nimport type { Selection } from \"./lib/selection\"\r\nimport {\r\n parseAlign,\r\n parseAlignItems,\r\n parseFlexDirection,\r\n parseJustify,\r\n parseOverflow,\r\n parsePositionType,\r\n parseWrap,\r\n type AlignString,\r\n type FlexDirectionString,\r\n type JustifyString,\r\n type OverflowString,\r\n type PositionTypeString,\r\n type WrapString,\r\n} from \"./lib/yoga.options\"\r\nimport { maybeMakeRenderable, type VNode } from \"./renderables/composition/vnode\"\r\nimport type { MouseEvent } from \"./renderer\"\r\nimport type { RenderContext } from \"./types\"\r\nimport {\r\n validateOptions,\r\n isPositionType,\r\n isDimensionType,\r\n isFlexBasisType,\r\n isSizeType,\r\n isMarginType,\r\n isPaddingType,\r\n isPositionTypeType,\r\n isOverflowType,\r\n} from \"./lib/renderable.validations\"\r\n\r\nconst BrandedRenderable: unique symbol = Symbol.for(\"@cascadetui/core/Renderable\")\r\n\r\nexport enum LayoutEvents {\r\n LAYOUT_CHANGED = \"layout-changed\",\r\n ADDED = \"added\",\r\n REMOVED = \"removed\",\r\n RESIZED = \"resized\",\r\n}\r\n\r\nexport enum RenderableEvents {\r\n FOCUSED = \"focused\",\r\n BLURRED = \"blurred\",\r\n}\r\n\r\nexport interface Position {\r\n top?: number | \"auto\" | `${number}%`\r\n right?: number | \"auto\" | `${number}%`\r\n bottom?: number | \"auto\" | `${number}%`\r\n left?: number | \"auto\" | `${number}%`\r\n}\r\n\r\nexport interface BaseRenderableOptions {\r\n id?: string\r\n}\r\n\r\nexport interface LayoutOptions extends BaseRenderableOptions {\r\n flexGrow?: number\r\n flexShrink?: number\r\n flexDirection?: FlexDirectionString\r\n flexWrap?: WrapString\r\n alignItems?: AlignString\r\n justifyContent?: JustifyString\r\n alignSelf?: AlignString\r\n flexBasis?: number | \"auto\" | undefined\r\n position?: PositionTypeString\r\n overflow?: OverflowString\r\n top?: number | \"auto\" | `${number}%`\r\n right?: number | \"auto\" | `${number}%`\r\n bottom?: number | \"auto\" | `${number}%`\r\n left?: number | \"auto\" | `${number}%`\r\n minWidth?: number | \"auto\" | `${number}%`\r\n minHeight?: number | \"auto\" | `${number}%`\r\n maxWidth?: number | \"auto\" | `${number}%`\r\n maxHeight?: number | \"auto\" | `${number}%`\r\n margin?: number | \"auto\" | `${number}%`\r\n marginX?: number | \"auto\" | `${number}%`\r\n marginY?: number | \"auto\" | `${number}%`\r\n marginTop?: number | \"auto\" | `${number}%`\r\n marginRight?: number | \"auto\" | `${number}%`\r\n marginBottom?: number | \"auto\" | `${number}%`\r\n marginLeft?: number | \"auto\" | `${number}%`\r\n padding?: number | `${number}%`\r\n paddingX?: number | `${number}%`\r\n paddingY?: number | `${number}%`\r\n paddingTop?: number | `${number}%`\r\n paddingRight?: number | `${number}%`\r\n paddingBottom?: number | `${number}%`\r\n paddingLeft?: number | `${number}%`\r\n enableLayout?: boolean\r\n}\r\n\r\nexport interface RenderableOptions<T extends BaseRenderable = BaseRenderable> extends Partial<LayoutOptions> {\r\n width?: number | \"auto\" | `${number}%`\r\n height?: number | \"auto\" | `${number}%`\r\n zIndex?: number\r\n visible?: boolean\r\n buffered?: boolean\r\n live?: boolean\r\n opacity?: number\r\n\r\n // hooks for custom render logic\r\n renderBefore?: (this: T, buffer: OptimizedBuffer, deltaTime: number) => void\r\n renderAfter?: (this: T, buffer: OptimizedBuffer, deltaTime: number) => void\r\n\r\n // catch all\r\n onMouse?: (this: T, event: MouseEvent) => void\r\n\r\n onMouseDown?: (this: T, event: MouseEvent) => void\r\n onMouseUp?: (this: T, event: MouseEvent) => void\r\n onMouseMove?: (this: T, event: MouseEvent) => void\r\n onMouseDrag?: (this: T, event: MouseEvent) => void\r\n onMouseDragEnd?: (this: T, event: MouseEvent) => void\r\n onMouseDrop?: (this: T, event: MouseEvent) => void\r\n onMouseOver?: (this: T, event: MouseEvent) => void\r\n onMouseOut?: (this: T, event: MouseEvent) => void\r\n onMouseScroll?: (this: T, event: MouseEvent) => void\r\n\r\n onPaste?: (this: T, event: PasteEvent) => void\r\n\r\n onKeyDown?: (key: KeyEvent) => void\r\n\r\n onSizeChange?: (this: T) => void\r\n}\r\n\r\nexport function isRenderable(obj: any): obj is Renderable {\r\n return !!obj?.[BrandedRenderable]\r\n}\r\n\r\nexport abstract class BaseRenderable extends EventEmitter {\r\n [BrandedRenderable] = true\r\n\r\n private static renderableNumber = 1\r\n protected _id: string\r\n public readonly num: number\r\n protected _dirty: boolean = false\r\n public parent: BaseRenderable | null = null\r\n protected _visible: boolean = true\r\n\r\n constructor(options: BaseRenderableOptions) {\r\n super()\r\n this.num = BaseRenderable.renderableNumber++\r\n this._id = options.id ?? `renderable-${this.num}`\r\n }\r\n\r\n public abstract add(obj: BaseRenderable | unknown, index?: number): number\r\n public abstract remove(id: string): void\r\n public abstract insertBefore(obj: BaseRenderable | unknown, anchor: BaseRenderable | unknown): void\r\n public abstract getChildren(): BaseRenderable[]\r\n public abstract getChildrenCount(): number\r\n public abstract getRenderable(id: string): BaseRenderable | undefined\r\n public abstract requestRender(): void\r\n public abstract findDescendantById(id: string): BaseRenderable | undefined\r\n\r\n public get id(): string {\r\n return this._id\r\n }\r\n\r\n public set id(value: string) {\r\n this._id = value\r\n }\r\n\r\n public get isDirty(): boolean {\r\n return this._dirty\r\n }\r\n\r\n protected markClean(): void {\r\n this._dirty = false\r\n }\r\n\r\n protected markDirty(): void {\r\n this._dirty = true\r\n }\r\n\r\n public destroy(): void {\r\n // Default implementation: do nothing\r\n // Override this method to provide custom removal logic\r\n }\r\n\r\n public destroyRecursively(): void {\r\n // Default implementation: do nothing\r\n // Override this method to provide custom destruction logic\r\n }\r\n\r\n public get visible(): boolean {\r\n return this._visible\r\n }\r\n\r\n public set visible(value: boolean) {\r\n this._visible = value\r\n }\r\n}\r\n\r\nconst yogaConfig: Config = Yoga.Config.create()\r\nyogaConfig.setUseWebDefaults(false)\r\nyogaConfig.setPointScaleFactor(1)\r\n\r\nexport abstract class Renderable extends BaseRenderable {\r\n static renderablesByNumber: Map<number, Renderable> = new Map()\r\n\r\n protected _isDestroyed: boolean = false\r\n protected _ctx: RenderContext\r\n protected _translateX: number = 0\r\n protected _translateY: number = 0\r\n protected _x: number = 0\r\n protected _y: number = 0\r\n protected _width: number | \"auto\" | `${number}%`\r\n protected _height: number | \"auto\" | `${number}%`\r\n protected _widthValue: number = 0\r\n protected _heightValue: number = 0\r\n private _zIndex: number\r\n public selectable: boolean = false\r\n protected buffered: boolean\r\n protected frameBuffer: OptimizedBuffer | null = null\r\n\r\n protected _focusable: boolean = false\r\n protected _focused: boolean = false\r\n protected keypressHandler: ((key: KeyEvent) => void) | null = null\r\n protected pasteHandler: ((event: PasteEvent) => void) | null = null\r\n\r\n private _live: boolean = false\r\n protected _liveCount: number = 0\r\n\r\n private _sizeChangeListener: (() => void) | undefined = undefined\r\n private _mouseListener: ((event: MouseEvent) => void) | null = null\r\n private _mouseListeners: Partial<Record<MouseEventType, (event: MouseEvent) => void>> = {}\r\n private _pasteListener: ((event: PasteEvent) => void) | undefined = undefined\r\n private _keyListeners: Partial<Record<\"down\", (key: KeyEvent) => void>> = {}\r\n\r\n protected yogaNode: YogaNode\r\n protected _positionType: PositionTypeString = \"relative\"\r\n protected _overflow: OverflowString = \"visible\"\r\n protected _position: Position = {}\r\n protected _opacity: number = 1.0\r\n private _flexShrink: number = 1\r\n\r\n private renderableMapById: Map<string, Renderable> = new Map()\r\n protected _childrenInLayoutOrder: Renderable[] = []\r\n protected _childrenInZIndexOrder: Renderable[] = []\r\n private needsZIndexSort: boolean = false\r\n public parent: Renderable | null = null\r\n\r\n private childrenPrimarySortDirty: boolean = true\r\n private childrenSortedByPrimaryAxis: Renderable[] = []\r\n private _shouldUpdateBefore: Set<Renderable> = new Set()\r\n\r\n public onLifecyclePass: (() => void) | null = null\r\n\r\n public renderBefore?: (this: Renderable, buffer: OptimizedBuffer, deltaTime: number) => void\r\n public renderAfter?: (this: Renderable, buffer: OptimizedBuffer, deltaTime: number) => void\r\n\r\n constructor(ctx: RenderContext, options: RenderableOptions<any>) {\r\n super(options)\r\n\r\n this._ctx = ctx\r\n Renderable.renderablesByNumber.set(this.num, this)\r\n\r\n validateOptions(this.id, options)\r\n\r\n this.renderBefore = options.renderBefore\r\n this.renderAfter = options.renderAfter\r\n\r\n this._width = options.width ?? \"auto\"\r\n this._height = options.height ?? \"auto\"\r\n\r\n if (typeof this._width === \"number\") {\r\n this._widthValue = this._width\r\n }\r\n if (typeof this._height === \"number\") {\r\n this._heightValue = this._height\r\n }\r\n\r\n this._zIndex = options.zIndex ?? 0\r\n this._visible = options.visible !== false\r\n this.buffered = options.buffered ?? false\r\n this._live = options.live ?? false\r\n this._liveCount = this._live && this._visible ? 1 : 0\r\n this._opacity = options.opacity !== undefined ? Math.max(0, Math.min(1, options.opacity)) : 1.0\r\n\r\n // TODO: use a global yoga config\r\n this.yogaNode = Yoga.Node.create(yogaConfig)\r\n this.yogaNode.setDisplay(this._visible ? Display.Flex : Display.None)\r\n this.setupYogaProperties(options)\r\n\r\n this.applyEventOptions(options)\r\n\r\n if (this.buffered) {\r\n this.createFrameBuffer()\r\n }\r\n }\r\n\r\n public override get id() {\r\n return this._id\r\n }\r\n\r\n public override set id(value: string) {\r\n if (this.parent) {\r\n this.parent.renderableMapById.delete(this.id)\r\n this.parent.renderableMapById.set(value, this)\r\n }\r\n super.id = value\r\n }\r\n\r\n public get focusable(): boolean {\r\n return this._focusable\r\n }\r\n\r\n public set focusable(value: boolean) {\r\n this._focusable = value\r\n }\r\n\r\n public get ctx(): RenderContext {\r\n return this._ctx\r\n }\r\n\r\n public get visible(): boolean {\r\n return this._visible\r\n }\r\n\r\n public get primaryAxis(): \"row\" | \"column\" {\r\n const dir = this.yogaNode.getFlexDirection()\r\n return dir === 2 || dir === 3 ? \"row\" : \"column\"\r\n }\r\n\r\n public set visible(value: boolean) {\r\n if (this._visible === value) return\r\n\r\n const wasVisible = this._visible\r\n this._visible = value\r\n this.yogaNode.setDisplay(value ? Display.Flex : Display.None)\r\n\r\n if (this._live) {\r\n if (!wasVisible && value) {\r\n this.propagateLiveCount(1)\r\n } else if (wasVisible && !value) {\r\n this.propagateLiveCount(-1)\r\n }\r\n }\r\n\r\n if (this._focused) {\r\n this.blur()\r\n }\r\n this.requestRender()\r\n }\r\n\r\n public get opacity(): number {\r\n return this._opacity\r\n }\r\n\r\n public set opacity(value: number) {\r\n const clamped = Math.max(0, Math.min(1, value))\r\n if (this._opacity !== clamped) {\r\n this._opacity = clamped\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public hasSelection(): boolean {\r\n return false\r\n }\r\n\r\n public onSelectionChanged(selection: Selection | null): boolean {\r\n // Default implementation: do nothing\r\n // Override this method to provide custom selection handling\r\n return false\r\n }\r\n\r\n public getSelectedText(): string {\r\n return \"\"\r\n }\r\n\r\n public shouldStartSelection(x: number, y: number): boolean {\r\n return false\r\n }\r\n\r\n public focus(): void {\r\n if (this._isDestroyed || this._focused || !this._focusable) return\r\n\r\n this._ctx.focusRenderable(this)\r\n this._focused = true\r\n this.requestRender()\r\n\r\n this.keypressHandler = (key: KeyEvent) => {\r\n if (this._isDestroyed) return\r\n this._keyListeners[\"down\"]?.(key)\r\n // Check again after user listener - it might have destroyed the renderable\r\n if (this._isDestroyed) return\r\n if (!key.defaultPrevented && this.handleKeyPress) {\r\n this.handleKeyPress(key)\r\n }\r\n }\r\n\r\n this.pasteHandler = (event: PasteEvent) => {\r\n if (this._isDestroyed) return\r\n this._pasteListener?.call(this, event)\r\n // Check again after user listener - it might have destroyed the renderable\r\n if (this._isDestroyed) return\r\n if (!event.defaultPrevented && this.handlePaste) {\r\n this.handlePaste(event)\r\n }\r\n }\r\n\r\n this.ctx._internalKeyInput.onInternal(\"keypress\", this.keypressHandler)\r\n this.ctx._internalKeyInput.onInternal(\"paste\", this.pasteHandler)\r\n this.emit(RenderableEvents.FOCUSED)\r\n }\r\n\r\n public blur(): void {\r\n if (!this._focused || !this._focusable) return\r\n\r\n this._focused = false\r\n this.requestRender()\r\n\r\n if (this.keypressHandler) {\r\n this.ctx._internalKeyInput.offInternal(\"keypress\", this.keypressHandler)\r\n this.keypressHandler = null\r\n }\r\n\r\n if (this.pasteHandler) {\r\n this.ctx._internalKeyInput.offInternal(\"paste\", this.pasteHandler)\r\n this.pasteHandler = null\r\n }\r\n\r\n this.emit(RenderableEvents.BLURRED)\r\n }\r\n\r\n public get focused(): boolean {\r\n return this._focused\r\n }\r\n\r\n public get live(): boolean {\r\n return this._live\r\n }\r\n\r\n public get liveCount(): number {\r\n return this._liveCount\r\n }\r\n\r\n public set live(value: boolean) {\r\n if (this._live === value) return\r\n\r\n this._live = value\r\n\r\n if (this._visible) {\r\n const delta = value ? 1 : -1\r\n this.propagateLiveCount(delta)\r\n }\r\n }\r\n\r\n protected propagateLiveCount(delta: number): void {\r\n this._liveCount += delta\r\n this.parent?.propagateLiveCount(delta)\r\n }\r\n\r\n public handleKeyPress?(key: KeyEvent): boolean\r\n public handlePaste?(event: PasteEvent): void\r\n\r\n public findDescendantById(id: string): Renderable | undefined {\r\n for (const child of this._childrenInLayoutOrder) {\r\n if (child.id === id) return child\r\n if (isRenderable(child)) {\r\n const found = child.findDescendantById(id)\r\n if (found) return found\r\n }\r\n }\r\n return undefined\r\n }\r\n\r\n public requestRender() {\r\n this.markDirty()\r\n this._ctx.requestRender()\r\n }\r\n\r\n public get translateX(): number {\r\n return this._translateX\r\n }\r\n\r\n public set translateX(value: number) {\r\n if (this._translateX === value) return\r\n this._translateX = value\r\n if (this.parent) this.parent.childrenPrimarySortDirty = true\r\n this.requestRender()\r\n }\r\n\r\n public get translateY(): number {\r\n return this._translateY\r\n }\r\n\r\n public set translateY(value: number) {\r\n if (this._translateY === value) return\r\n this._translateY = value\r\n if (this.parent) this.parent.childrenPrimarySortDirty = true\r\n this.requestRender()\r\n }\r\n\r\n public get x(): number {\r\n if (this.parent) {\r\n return this.parent.x + this._x + this._translateX\r\n }\r\n return this._x + this._translateX\r\n }\r\n\r\n public set x(value: number) {\r\n this.left = value\r\n }\r\n\r\n public get top(): number | \"auto\" | `${number}%` | undefined {\r\n return this._position.top\r\n }\r\n\r\n public set top(value: number | \"auto\" | `${number}%` | undefined) {\r\n if (isPositionType(value) || value === undefined) {\r\n this.setPosition({ top: value })\r\n }\r\n }\r\n\r\n public get right(): number | \"auto\" | `${number}%` | undefined {\r\n return this._position.right\r\n }\r\n\r\n public set right(value: number | \"auto\" | `${number}%` | undefined) {\r\n if (isPositionType(value) || value === undefined) {\r\n this.setPosition({ right: value })\r\n }\r\n }\r\n\r\n public get bottom(): number | \"auto\" | `${number}%` | undefined {\r\n return this._position.bottom\r\n }\r\n\r\n public set bottom(value: number | \"auto\" | `${number}%` | undefined) {\r\n if (isPositionType(value) || value === undefined) {\r\n this.setPosition({ bottom: value })\r\n }\r\n }\r\n\r\n public get left(): number | \"auto\" | `${number}%` | undefined {\r\n return this._position.left\r\n }\r\n\r\n public set left(value: number | \"auto\" | `${number}%` | undefined) {\r\n if (isPositionType(value) || value === undefined) {\r\n this.setPosition({ left: value })\r\n }\r\n }\r\n\r\n public get y(): number {\r\n if (this.parent) {\r\n return this.parent.y + this._y + this._translateY\r\n }\r\n return this._y + this._translateY\r\n }\r\n\r\n public set y(value: number) {\r\n this.top = value\r\n }\r\n\r\n public get width(): number {\r\n return this._widthValue\r\n }\r\n\r\n public set width(value: number | \"auto\" | `${number}%`) {\r\n if (isDimensionType(value)) {\r\n this._width = value\r\n this.yogaNode.setWidth(value)\r\n\r\n if (typeof value === \"number\" && this._flexShrink === 1) {\r\n this._flexShrink = 0\r\n this.yogaNode.setFlexShrink(0)\r\n }\r\n\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public get height(): number {\r\n return this._heightValue\r\n }\r\n\r\n public set height(value: number | \"auto\" | `${number}%`) {\r\n if (isDimensionType(value)) {\r\n this._height = value\r\n this.yogaNode.setHeight(value)\r\n\r\n if (typeof value === \"number\" && this._flexShrink === 1) {\r\n this._flexShrink = 0\r\n this.yogaNode.setFlexShrink(0)\r\n }\r\n\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public get zIndex(): number {\r\n return this._zIndex\r\n }\r\n\r\n public set zIndex(value: number) {\r\n if (this._zIndex !== value) {\r\n this._zIndex = value\r\n this.parent?.requestZIndexSort()\r\n this.requestRender()\r\n }\r\n }\r\n\r\n private requestZIndexSort(): void {\r\n this.needsZIndexSort = true\r\n }\r\n\r\n private ensureZIndexSorted(): void {\r\n if (this.needsZIndexSort) {\r\n this._childrenInZIndexOrder.sort((a, b) => (a.zIndex > b.zIndex ? 1 : a.zIndex < b.zIndex ? -1 : 0))\r\n this.needsZIndexSort = false\r\n }\r\n }\r\n\r\n public getChildrenSortedByPrimaryAxis(): Renderable[] {\r\n if (\r\n !this.childrenPrimarySortDirty &&\r\n this.childrenSortedByPrimaryAxis.length === this._childrenInLayoutOrder.length\r\n ) {\r\n return this.childrenSortedByPrimaryAxis\r\n }\r\n\r\n const dir = this.yogaNode.getFlexDirection()\r\n const axis: \"x\" | \"y\" = dir === 2 || dir === 3 ? \"x\" : \"y\"\r\n\r\n const sorted = [...this._childrenInLayoutOrder]\r\n sorted.sort((a, b) => {\r\n const va = axis === \"y\" ? a.y : a.x\r\n const vb = axis === \"y\" ? b.y : b.x\r\n return va - vb\r\n })\r\n\r\n this.childrenSortedByPrimaryAxis = sorted\r\n this.childrenPrimarySortDirty = false\r\n return this.childrenSortedByPrimaryAxis\r\n }\r\n\r\n private setupYogaProperties(options: RenderableOptions<Renderable>): void {\r\n const node = this.yogaNode\r\n\r\n if (isFlexBasisType(options.flexBasis)) {\r\n node.setFlexBasis(options.flexBasis)\r\n }\r\n\r\n if (isSizeType(options.minWidth)) {\r\n node.setMinWidth(options.minWidth)\r\n }\r\n if (isSizeType(options.minHeight)) {\r\n node.setMinHeight(options.minHeight)\r\n }\r\n\r\n if (options.flexGrow !== undefined) {\r\n node.setFlexGrow(options.flexGrow)\r\n } else {\r\n node.setFlexGrow(0)\r\n }\r\n\r\n if (options.flexShrink !== undefined) {\r\n this._flexShrink = options.flexShrink\r\n node.setFlexShrink(options.flexShrink)\r\n } else {\r\n // If explicit numeric width is set, don't shrink by default\r\n // Otherwise follow web default of 1\r\n const hasExplicitWidth = typeof options.width === \"number\"\r\n const hasExplicitHeight = typeof options.height === \"number\"\r\n this._flexShrink = hasExplicitWidth || hasExplicitHeight ? 0 : 1\r\n node.setFlexShrink(this._flexShrink)\r\n }\r\n\r\n node.setFlexDirection(parseFlexDirection(options.flexDirection))\r\n node.setFlexWrap(parseWrap(options.flexWrap))\r\n node.setAlignItems(parseAlignItems(options.alignItems))\r\n node.setJustifyContent(parseJustify(options.justifyContent))\r\n node.setAlignSelf(parseAlign(options.alignSelf))\r\n\r\n if (isDimensionType(options.width)) {\r\n this._width = options.width\r\n this.yogaNode.setWidth(options.width)\r\n }\r\n if (isDimensionType(options.height)) {\r\n this._height = options.height\r\n this.yogaNode.setHeight(options.height)\r\n }\r\n\r\n this._positionType = options.position === \"absolute\" ? \"absolute\" : \"relative\"\r\n if (this._positionType !== \"relative\") {\r\n node.setPositionType(parsePositionType(this._positionType))\r\n }\r\n\r\n this._overflow = options.overflow === \"hidden\" ? \"hidden\" : options.overflow === \"scroll\" ? \"scroll\" : \"visible\"\r\n if (this._overflow !== \"visible\") {\r\n node.setOverflow(parseOverflow(this._overflow))\r\n }\r\n\r\n // TODO: flatten position properties internally as well\r\n const hasPositionProps =\r\n options.top !== undefined ||\r\n options.right !== undefined ||\r\n options.bottom !== undefined ||\r\n options.left !== undefined\r\n if (hasPositionProps) {\r\n this._position = {\r\n top: options.top,\r\n right: options.right,\r\n bottom: options.bottom,\r\n left: options.left,\r\n }\r\n this.updateYogaPosition(this._position)\r\n }\r\n\r\n if (isSizeType(options.maxWidth)) {\r\n node.setMaxWidth(options.maxWidth)\r\n }\r\n if (isSizeType(options.maxHeight)) {\r\n node.setMaxHeight(options.maxHeight)\r\n }\r\n\r\n this.setupMarginAndPadding(options)\r\n }\r\n\r\n private setupMarginAndPadding(options: RenderableOptions<Renderable>): void {\r\n const node = this.yogaNode\r\n\r\n if (isMarginType(options.margin)) {\r\n node.setMargin(Edge.All, options.margin)\r\n }\r\n\r\n if (isMarginType(options.marginX)) {\r\n node.setMargin(Edge.Horizontal, options.marginX)\r\n }\r\n if (isMarginType(options.marginY)) {\r\n node.setMargin(Edge.Vertical, options.marginY)\r\n }\r\n if (isMarginType(options.marginTop)) {\r\n node.setMargin(Edge.Top, options.marginTop)\r\n }\r\n if (isMarginType(options.marginRight)) {\r\n node.setMargin(Edge.Right, options.marginRight)\r\n }\r\n if (isMarginType(options.marginBottom)) {\r\n node.setMargin(Edge.Bottom, options.marginBottom)\r\n }\r\n if (isMarginType(options.marginLeft)) {\r\n node.setMargin(Edge.Left, options.marginLeft)\r\n }\r\n\r\n if (isPaddingType(options.padding)) {\r\n node.setPadding(Edge.All, options.padding)\r\n }\r\n\r\n if (isPaddingType(options.paddingX)) {\r\n node.setPadding(Edge.Horizontal, options.paddingX)\r\n }\r\n if (isPaddingType(options.paddingY)) {\r\n node.setPadding(Edge.Vertical, options.paddingY)\r\n }\r\n if (isPaddingType(options.paddingTop)) {\r\n node.setPadding(Edge.Top, options.paddingTop)\r\n }\r\n if (isPaddingType(options.paddingRight)) {\r\n node.setPadding(Edge.Right, options.paddingRight)\r\n }\r\n if (isPaddingType(options.paddingBottom)) {\r\n node.setPadding(Edge.Bottom, options.paddingBottom)\r\n }\r\n if (isPaddingType(options.paddingLeft)) {\r\n node.setPadding(Edge.Left, options.paddingLeft)\r\n }\r\n }\r\n\r\n set position(positionType: PositionTypeString | null | undefined) {\r\n if (!isPositionTypeType(positionType) || this._positionType === positionType) return\r\n\r\n this._positionType = positionType\r\n this.yogaNode.setPositionType(parsePositionType(positionType))\r\n this.requestRender()\r\n }\r\n\r\n get overflow(): OverflowString {\r\n return this._overflow\r\n }\r\n\r\n set overflow(overflow: OverflowString | null | undefined) {\r\n if (!isOverflowType(overflow) || this._overflow === overflow) return\r\n\r\n this._overflow = overflow\r\n this.yogaNode.setOverflow(parseOverflow(overflow))\r\n this.requestRender()\r\n }\r\n\r\n public setPosition(position: Position): void {\r\n this._position = { ...this._position, ...position }\r\n this.updateYogaPosition(position)\r\n }\r\n\r\n private updateYogaPosition(position: Position): void {\r\n const node = this.yogaNode\r\n const { top, right, bottom, left } = position\r\n\r\n if (isPositionType(top)) {\r\n if (top === \"auto\") {\r\n node.setPositionAuto(Edge.Top)\r\n } else {\r\n node.setPosition(Edge.Top, top)\r\n }\r\n }\r\n if (isPositionType(right)) {\r\n if (right === \"auto\") {\r\n node.setPositionAuto(Edge.Right)\r\n } else {\r\n node.setPosition(Edge.Right, right)\r\n }\r\n }\r\n if (isPositionType(bottom)) {\r\n if (bottom === \"auto\") {\r\n node.setPositionAuto(Edge.Bottom)\r\n } else {\r\n node.setPosition(Edge.Bottom, bottom)\r\n }\r\n }\r\n if (isPositionType(left)) {\r\n if (left === \"auto\") {\r\n node.setPositionAuto(Edge.Left)\r\n } else {\r\n node.setPosition(Edge.Left, left)\r\n }\r\n }\r\n this.requestRender()\r\n }\r\n\r\n public set flexGrow(grow: number | null | undefined) {\r\n if (grow == null) {\r\n this.yogaNode.setFlexGrow(0)\r\n } else {\r\n this.yogaNode.setFlexGrow(grow)\r\n }\r\n this.requestRender()\r\n }\r\n\r\n public set flexShrink(shrink: number | null | undefined) {\r\n const value = shrink == null ? 1 : shrink\r\n this._flexShrink = value\r\n this.yogaNode.setFlexShrink(value)\r\n this.requestRender()\r\n }\r\n\r\n public set flexDirection(direction: FlexDirectionString | null | undefined) {\r\n this.yogaNode.setFlexDirection(parseFlexDirection(direction))\r\n this.requestRender()\r\n }\r\n\r\n public set flexWrap(wrap: WrapString | null | undefined) {\r\n this.yogaNode.setFlexWrap(parseWrap(wrap))\r\n this.requestRender()\r\n }\r\n\r\n public set alignItems(alignItems: AlignString | null | undefined) {\r\n this.yogaNode.setAlignItems(parseAlignItems(alignItems))\r\n this.requestRender()\r\n }\r\n\r\n public set justifyContent(justifyContent: JustifyString | null | undefined) {\r\n this.yogaNode.setJustifyContent(parseJustify(justifyContent))\r\n this.requestRender()\r\n }\r\n\r\n public set alignSelf(alignSelf: AlignString | null | undefined) {\r\n this.yogaNode.setAlignSelf(parseAlign(alignSelf))\r\n this.requestRender()\r\n }\r\n\r\n public set flexBasis(basis: number | \"auto\" | null | undefined) {\r\n if (isFlexBasisType(basis)) {\r\n this.yogaNode.setFlexBasis(basis)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public set minWidth(minWidth: number | `${number}%` | null | undefined) {\r\n if (isSizeType(minWidth)) {\r\n this.yogaNode.setMinWidth(minWidth)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public set maxWidth(maxWidth: number | `${number}%` | null | undefined) {\r\n if (isSizeType(maxWidth)) {\r\n this.yogaNode.setMaxWidth(maxWidth)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public set minHeight(minHeight: number | `${number}%` | null | undefined) {\r\n if (isSizeType(minHeight)) {\r\n this.yogaNode.setMinHeight(minHeight)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public set maxHeight(maxHeight: number | `${number}%` | null | undefined) {\r\n if (isSizeType(maxHeight)) {\r\n this.yogaNode.setMaxHeight(maxHeight)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public set margin(margin: number | \"auto\" | `${number}%` | null | undefined) {\r\n if (isMarginType(margin)) {\r\n this.yogaNode.setMargin(Edge.All, margin)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public set marginX(marginX: number | \"auto\" | `${number}%` | null | undefined) {\r\n if (isMarginType(marginX)) {\r\n this.yogaNode.setMargin(Edge.Horizontal, marginX)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public set marginY(marginY: number | \"auto\" | `${number}%` | null | undefined) {\r\n if (isMarginType(marginY)) {\r\n this.yogaNode.setMargin(Edge.Vertical, marginY)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public set marginTop(margin: number | \"auto\" | `${number}%` | null | undefined) {\r\n if (isMarginType(margin)) {\r\n this.yogaNode.setMargin(Edge.Top, margin)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public set marginRight(margin: number | \"auto\" | `${number}%` | null | undefined) {\r\n if (isMarginType(margin)) {\r\n this.yogaNode.setMargin(Edge.Right, margin)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public set marginBottom(margin: number | \"auto\" | `${number}%` | null | undefined) {\r\n if (isMarginType(margin)) {\r\n this.yogaNode.setMargin(Edge.Bottom, margin)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public set marginLeft(margin: number | \"auto\" | `${number}%` | null | undefined) {\r\n if (isMarginType(margin)) {\r\n this.yogaNode.setMargin(Edge.Left, margin)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public set padding(padding: number | `${number}%` | null | undefined) {\r\n if (isPaddingType(padding)) {\r\n this.yogaNode.setPadding(Edge.All, padding)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public set paddingX(paddingX: number | `${number}%` | null | undefined) {\r\n if (isPaddingType(paddingX)) {\r\n this.yogaNode.setPadding(Edge.Horizontal, paddingX)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public set paddingY(paddingY: number | `${number}%` | null | undefined) {\r\n if (isPaddingType(paddingY)) {\r\n this.yogaNode.setPadding(Edge.Vertical, paddingY)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public set paddingTop(padding: number | `${number}%` | null | undefined) {\r\n if (isPaddingType(padding)) {\r\n this.yogaNode.setPadding(Edge.Top, padding)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public set paddingRight(padding: number | `${number}%` | null | undefined) {\r\n if (isPaddingType(padding)) {\r\n this.yogaNode.setPadding(Edge.Right, padding)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public set paddingBottom(padding: number | `${number}%` | null | undefined) {\r\n if (isPaddingType(padding)) {\r\n this.yogaNode.setPadding(Edge.Bottom, padding)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public set paddingLeft(padding: number | `${number}%` | null | undefined) {\r\n if (isPaddingType(padding)) {\r\n this.yogaNode.setPadding(Edge.Left, padding)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public getLayoutNode(): YogaNode {\r\n return this.yogaNode\r\n }\r\n\r\n public updateFromLayout(): void {\r\n const layout = this.yogaNode.getComputedLayout()\r\n\r\n const oldX = this._x\r\n const oldY = this._y\r\n const oldWidth = this._widthValue\r\n const oldHeight = this._heightValue\r\n\r\n this._x = layout.left\r\n this._y = layout.top\r\n\r\n const newWidth = Math.max(layout.width, 1)\r\n const newHeight = Math.max(layout.height, 1)\r\n const sizeChanged = oldWidth !== newWidth || oldHeight !== newHeight\r\n\r\n this._widthValue = newWidth\r\n this._heightValue = newHeight\r\n\r\n if (sizeChanged) {\r\n this.onLayoutResize(newWidth, newHeight)\r\n }\r\n\r\n const positionChanged = oldX !== this._x || oldY !== this._y\r\n if (positionChanged) {\r\n if (this.parent) this.parent.childrenPrimarySortDirty = true\r\n }\r\n }\r\n\r\n protected onLayoutResize(width: number, height: number): void {\r\n if (this._visible) {\r\n // TODO: Should probably .markDirty()\r\n this.handleFrameBufferResize(width, height)\r\n this.onResize(width, height)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n protected handleFrameBufferResize(width: number, height: number): void {\r\n if (!this.buffered) return\r\n\r\n if (width <= 0 || height <= 0) {\r\n return\r\n }\r\n\r\n if (this.frameBuffer) {\r\n this.frameBuffer.resize(width, height)\r\n } else {\r\n this.createFrameBuffer()\r\n }\r\n }\r\n\r\n protected createFrameBuffer(): void {\r\n const w = this.width\r\n const h = this.height\r\n\r\n if (w <= 0 || h <= 0) {\r\n return\r\n }\r\n\r\n try {\r\n const widthMethod = this._ctx.widthMethod\r\n this.frameBuffer = OptimizedBuffer.create(w, h, widthMethod, { respectAlpha: true, id: `framebuffer-${this.id}` })\r\n } catch (error) {\r\n console.error(`Failed to create frame buffer for ${this.id}:`, error)\r\n this.frameBuffer = null\r\n }\r\n }\r\n\r\n /**\r\n * This will be called during a render pass.\r\n * Requesting a render during a render pass will drop the requested render.\r\n * If you need to request a render during a render pass, use process.nextTick.\r\n */\r\n protected onResize(width: number, height: number): void {\r\n this.onSizeChange?.()\r\n this.emit(\"resize\")\r\n // Override in subclasses for additional resize logic\r\n }\r\n\r\n private replaceParent(obj: Renderable) {\r\n if (obj.parent) {\r\n obj.parent.remove(obj.id)\r\n }\r\n obj.parent = this\r\n }\r\n\r\n public add(obj: Renderable | VNode<any, any[]> | unknown, index?: number): number {\r\n if (!obj) {\r\n return -1\r\n }\r\n\r\n const renderable = maybeMakeRenderable(this._ctx, obj)\r\n if (!renderable) {\r\n return -1\r\n }\r\n\r\n if (renderable.isDestroyed) {\r\n if (process.env.NODE_ENV !== \"production\") {\r\n console.warn(`Renderable with id ${renderable.id} was already destroyed, skipping add`)\r\n }\r\n return -1\r\n }\r\n\r\n const anchorRenderable = index !== undefined ? this._childrenInLayoutOrder[index] : undefined\r\n\r\n if (anchorRenderable) {\r\n return this.insertBefore(renderable, anchorRenderable)\r\n }\r\n\r\n if (renderable.parent === this) {\r\n this.yogaNode.removeChild(renderable.getLayoutNode())\r\n this._childrenInLayoutOrder.splice(this._childrenInLayoutOrder.indexOf(renderable), 1)\r\n } else {\r\n this.replaceParent(renderable)\r\n this.needsZIndexSort = true\r\n this.renderableMapById.set(renderable.id, renderable)\r\n this._childrenInZIndexOrder.push(renderable)\r\n\r\n if (typeof renderable.onLifecyclePass === \"function\") {\r\n this._ctx.registerLifecyclePass(renderable)\r\n }\r\n\r\n if (renderable._liveCount > 0) {\r\n this.propagateLiveCount(renderable._liveCount)\r\n }\r\n }\r\n\r\n const childLayoutNode = renderable.getLayoutNode()\r\n const insertedIndex = this._childrenInLayoutOrder.length\r\n this._childrenInLayoutOrder.push(renderable)\r\n this.yogaNode.insertChild(childLayoutNode, insertedIndex)\r\n\r\n this.childrenPrimarySortDirty = true\r\n this._shouldUpdateBefore.add(renderable)\r\n\r\n this.requestRender()\r\n\r\n return insertedIndex\r\n }\r\n\r\n insertBefore(obj: Renderable | VNode<any, any[]> | unknown, anchor?: Renderable | unknown): number {\r\n if (!anchor) {\r\n return this.add(obj)\r\n }\r\n\r\n if (!obj) {\r\n return -1\r\n }\r\n\r\n const renderable = maybeMakeRenderable(this._ctx, obj)\r\n if (!renderable) {\r\n return -1\r\n }\r\n\r\n if (renderable.isDestroyed) {\r\n if (process.env.NODE_ENV !== \"production\") {\r\n console.warn(`Renderable with id ${renderable.id} was already destroyed, skipping insertBefore`)\r\n }\r\n return -1\r\n }\r\n\r\n if (!isRenderable(anchor)) {\r\n throw new Error(\"Anchor must be a Renderable\")\r\n }\r\n\r\n if (anchor.isDestroyed) {\r\n if (process.env.NODE_ENV !== \"production\") {\r\n console.warn(`Anchor with id ${anchor.id} was already destroyed, skipping insertBefore`)\r\n }\r\n return -1\r\n }\r\n\r\n if (!this.renderableMapById.has(anchor.id)) {\r\n if (process.env.NODE_ENV !== \"production\") {\r\n console.warn(`Anchor with id ${anchor.id} does not exist within the parent ${this.id}, skipping insertBefore`)\r\n }\r\n return -1\r\n }\r\n\r\n if (renderable === anchor || renderable.id === anchor.id) {\r\n if (process.env.NODE_ENV !== \"production\") {\r\n console.warn(`Anchor is the same as the node ${renderable.id} being inserted, skipping insertBefore`)\r\n }\r\n return -1\r\n }\r\n\r\n if (renderable.parent === this) {\r\n this.yogaNode.removeChild(renderable.getLayoutNode())\r\n this._childrenInLayoutOrder.splice(this._childrenInLayoutOrder.indexOf(renderable), 1)\r\n } else {\r\n this.replaceParent(renderable)\r\n this.needsZIndexSort = true\r\n this.renderableMapById.set(renderable.id, renderable)\r\n this._childrenInZIndexOrder.push(renderable)\r\n\r\n if (typeof renderable.onLifecyclePass === \"function\") {\r\n this._ctx.registerLifecyclePass(renderable)\r\n }\r\n\r\n if (renderable._liveCount > 0) {\r\n this.propagateLiveCount(renderable._liveCount)\r\n }\r\n }\r\n\r\n this.childrenPrimarySortDirty = true\r\n\r\n const anchorIndex = this._childrenInLayoutOrder.indexOf(anchor)\r\n const insertedIndex = Math.max(0, Math.min(anchorIndex, this._childrenInLayoutOrder.length))\r\n\r\n this._childrenInLayoutOrder.splice(insertedIndex, 0, renderable)\r\n this.yogaNode.insertChild(renderable.getLayoutNode(), insertedIndex)\r\n\r\n this._shouldUpdateBefore.add(renderable)\r\n\r\n this.requestRender()\r\n\r\n return insertedIndex\r\n }\r\n\r\n // TODO: that naming is meh\r\n public getRenderable(id: string): Renderable | undefined {\r\n return this.renderableMapById.get(id)\r\n }\r\n\r\n public remove(id: string): void {\r\n if (!id) {\r\n return\r\n }\r\n\r\n if (this.renderableMapById.has(id)) {\r\n const obj = this.renderableMapById.get(id)\r\n if (obj) {\r\n if (obj._liveCount > 0) {\r\n this.propagateLiveCount(-obj._liveCount)\r\n }\r\n\r\n const childLayoutNode = obj.getLayoutNode()\r\n this.yogaNode.removeChild(childLayoutNode)\r\n this.requestRender()\r\n\r\n obj.onRemove()\r\n obj.parent = null\r\n this._ctx.unregisterLifecyclePass(obj)\r\n this.renderableMapById.delete(id)\r\n\r\n const index = this._childrenInLayoutOrder.findIndex((obj) => obj.id === id)\r\n if (index !== -1) {\r\n this._childrenInLayoutOrder.splice(index, 1)\r\n }\r\n\r\n const zIndexIndex = this._childrenInZIndexOrder.findIndex((obj) => obj.id === id)\r\n if (zIndexIndex !== -1) {\r\n this._childrenInZIndexOrder.splice(zIndexIndex, 1)\r\n }\r\n\r\n this.childrenPrimarySortDirty = true\r\n }\r\n }\r\n }\r\n\r\n protected onRemove(): void {\r\n // Default implementation: do nothing\r\n // Override this method to provide custom removal logic\r\n }\r\n\r\n public getChildren(): Renderable[] {\r\n return [...this._childrenInLayoutOrder]\r\n }\r\n\r\n public getChildrenCount(): number {\r\n return this._childrenInLayoutOrder.length\r\n }\r\n\r\n public updateLayout(deltaTime: number, renderList: RenderCommand[] = []): void {\r\n if (!this.visible) return\r\n\r\n this.onUpdate(deltaTime)\r\n\r\n // If destroyed during onUpdate, don't add to render list\r\n if (this._isDestroyed) return\r\n\r\n // NOTE: worst case updateFromLayout is called throughout the whole tree,\r\n // which currently still has yoga performance issues.\r\n // This can be mitigated at some point when the layout tree moved to native,\r\n // as in the native yoga tree we can use events during the calculateLayout phase,\r\n // and anctually know if a child has changed or not.\r\n // That would allow us to to generate optimised render commands,\r\n // including the layout updates, in one pass.\r\n this.updateFromLayout()\r\n\r\n // Update newly added children before getting visible children\r\n // This ensures their positions are current when culling happens\r\n if (this._shouldUpdateBefore.size > 0) {\r\n for (const child of this._shouldUpdateBefore) {\r\n if (!child.isDestroyed) {\r\n child.updateFromLayout()\r\n }\r\n }\r\n this._shouldUpdateBefore.clear()\r\n }\r\n\r\n // Check again after updateFromLayout, which calls onResize/onSizeChange\r\n if (this._isDestroyed) return\r\n\r\n // Push opacity BEFORE rendering this element so it affects this element and all children\r\n const shouldPushOpacity = this._opacity < 1.0\r\n if (shouldPushOpacity) {\r\n renderList.push({ action: \"pushOpacity\", opacity: this._opacity })\r\n }\r\n\r\n renderList.push({ action: \"render\", renderable: this })\r\n\r\n this.ensureZIndexSorted()\r\n\r\n const shouldPushScissor = this._overflow !== \"visible\" && this.width > 0 && this.height > 0\r\n if (shouldPushScissor) {\r\n const scissorRect = this.getScissorRect()\r\n renderList.push({\r\n action: \"pushScissorRect\",\r\n x: scissorRect.x,\r\n y: scissorRect.y,\r\n width: scissorRect.width,\r\n height: scissorRect.height,\r\n screenX: this.x,\r\n screenY: this.y,\r\n })\r\n }\r\n const visibleChildren = this._getVisibleChildren()\r\n for (const child of this._childrenInZIndexOrder) {\r\n if (!visibleChildren.includes(child.num)) {\r\n child.updateFromLayout()\r\n continue\r\n }\r\n child.updateLayout(deltaTime, renderList)\r\n }\r\n\r\n if (shouldPushScissor) {\r\n renderList.push({ action: \"popScissorRect\" })\r\n }\r\n if (shouldPushOpacity) {\r\n renderList.push({ action: \"popOpacity\" })\r\n }\r\n }\r\n\r\n public render(buffer: OptimizedBuffer, deltaTime: number): void {\r\n let renderBuffer = buffer\r\n if (this.buffered && this.frameBuffer) {\r\n renderBuffer = this.frameBuffer\r\n }\r\n\r\n if (this.renderBefore) {\r\n this.renderBefore.call(this, renderBuffer, deltaTime)\r\n }\r\n\r\n this.renderSelf(renderBuffer, deltaTime)\r\n\r\n if (this.renderAfter) {\r\n this.renderAfter.call(this, renderBuffer, deltaTime)\r\n }\r\n\r\n this.markClean()\r\n this._ctx.addToHitGrid(this.x, this.y, this.width, this.height, this.num)\r\n\r\n if (this.buffered && this.frameBuffer) {\r\n buffer.drawFrameBuffer(this.x, this.y, this.frameBuffer)\r\n }\r\n }\r\n\r\n protected _getVisibleChildren(): number[] {\r\n return this._childrenInZIndexOrder.map((child) => child.num)\r\n }\r\n\r\n protected onUpdate(deltaTime: number): void {\r\n // Default implementation: do nothing\r\n // Override this method to provide custom rendering\r\n }\r\n\r\n protected getScissorRect(): { x: number; y: number; width: number; height: number } {\r\n return {\r\n x: this.buffered ? 0 : this.x,\r\n y: this.buffered ? 0 : this.y,\r\n width: this.width,\r\n height: this.height,\r\n }\r\n }\r\n\r\n protected renderSelf(buffer: OptimizedBuffer, deltaTime: number): void {\r\n // Default implementation: do nothing\r\n // Override this method to provide custom rendering\r\n }\r\n\r\n public get isDestroyed(): boolean {\r\n return this._isDestroyed\r\n }\r\n\r\n public destroy(): void {\r\n if (this._isDestroyed) {\r\n return\r\n }\r\n\r\n this._isDestroyed = true\r\n\r\n if (this.parent) {\r\n this.parent.remove(this.id)\r\n }\r\n\r\n if (this.frameBuffer) {\r\n this.frameBuffer.destroy()\r\n this.frameBuffer = null\r\n }\r\n\r\n for (const child of this._childrenInLayoutOrder) {\r\n this.remove(child.id)\r\n }\r\n\r\n this._childrenInLayoutOrder = []\r\n this.renderableMapById.clear()\r\n Renderable.renderablesByNumber.delete(this.num)\r\n\r\n this.blur()\r\n this.removeAllListeners()\r\n\r\n this.destroySelf()\r\n\r\n try {\r\n this.yogaNode.free()\r\n } catch (e) {\r\n // Might be already freed and will throw an error if we try to free it again\r\n }\r\n }\r\n\r\n public destroyRecursively(): void {\r\n // Destroy children first to ensure removal as destroy clears child array\r\n // Make a copy of the children array to avoid iteration issues when children are destroyed\r\n const children = [...this._childrenInLayoutOrder]\r\n for (const child of children) {\r\n child.destroyRecursively()\r\n }\r\n this.destroy()\r\n }\r\n\r\n protected destroySelf(): void {\r\n // Default implementation: do nothing else\r\n // Override this method to provide custom cleanup\r\n }\r\n\r\n public processMouseEvent(event: MouseEvent): void {\r\n this._mouseListener?.call(this, event)\r\n this._mouseListeners[event.type]?.call(this, event)\r\n this.onMouseEvent(event)\r\n\r\n if (this.parent && !event.propagationStopped) {\r\n this.parent.processMouseEvent(event)\r\n }\r\n }\r\n\r\n protected onMouseEvent(event: MouseEvent): void {\r\n // Default implementation: do nothing\r\n // Override this method to provide custom event handling\r\n }\r\n\r\n public set onMouse(handler: ((event: MouseEvent) => void) | undefined) {\r\n if (handler) this._mouseListener = handler\r\n else this._mouseListener = null\r\n }\r\n\r\n public set onMouseDown(handler: ((event: MouseEvent) => void) | undefined) {\r\n if (handler) this._mouseListeners[\"down\"] = handler\r\n else delete this._mouseListeners[\"down\"]\r\n }\r\n\r\n public set onMouseUp(handler: ((event: MouseEvent) => void) | undefined) {\r\n if (handler) this._mouseListeners[\"up\"] = handler\r\n else delete this._mouseListeners[\"up\"]\r\n }\r\n\r\n public set onMouseMove(handler: ((event: MouseEvent) => void) | undefined) {\r\n if (handler) this._mouseListeners[\"move\"] = handler\r\n else delete this._mouseListeners[\"move\"]\r\n }\r\n\r\n public set onMouseDrag(handler: ((event: MouseEvent) => void) | undefined) {\r\n if (handler) this._mouseListeners[\"drag\"] = handler\r\n else delete this._mouseListeners[\"drag\"]\r\n }\r\n\r\n public set onMouseDragEnd(handler: ((event: MouseEvent) => void) | undefined) {\r\n if (handler) this._mouseListeners[\"drag-end\"] = handler\r\n else delete this._mouseListeners[\"drag-end\"]\r\n }\r\n\r\n public set onMouseDrop(handler: ((event: MouseEvent) => void) | undefined) {\r\n if (handler) this._mouseListeners[\"drop\"] = handler\r\n else delete this._mouseListeners[\"drop\"]\r\n }\r\n\r\n public set onMouseOver(handler: ((event: MouseEvent) => void) | undefined) {\r\n if (handler) this._mouseListeners[\"over\"] = handler\r\n else delete this._mouseListeners[\"over\"]\r\n }\r\n\r\n public set onMouseOut(handler: ((event: MouseEvent) => void) | undefined) {\r\n if (handler) this._mouseListeners[\"out\"] = handler\r\n else delete this._mouseListeners[\"out\"]\r\n }\r\n\r\n public set onMouseScroll(handler: ((event: MouseEvent) => void) | undefined) {\r\n if (handler) this._mouseListeners[\"scroll\"] = handler\r\n else delete this._mouseListeners[\"scroll\"]\r\n }\r\n\r\n public set onPaste(handler: ((event: PasteEvent) => void) | undefined) {\r\n this._pasteListener = handler\r\n }\r\n public get onPaste(): ((event: PasteEvent) => void) | undefined {\r\n return this._pasteListener\r\n }\r\n\r\n public set onKeyDown(handler: ((key: KeyEvent) => void) | undefined) {\r\n if (handler) this._keyListeners[\"down\"] = handler\r\n else delete this._keyListeners[\"down\"]\r\n }\r\n public get onKeyDown(): ((key: KeyEvent) => void) | undefined {\r\n return this._keyListeners[\"down\"]\r\n }\r\n\r\n public set onSizeChange(handler: (() => void) | undefined) {\r\n this._sizeChangeListener = handler\r\n }\r\n public get onSizeChange(): (() => void) | undefined {\r\n return this._sizeChangeListener\r\n }\r\n\r\n private applyEventOptions(options: RenderableOptions<Renderable>): void {\r\n this.onMouse = options.onMouse\r\n this.onMouseDown = options.onMouseDown\r\n this.onMouseUp = options.onMouseUp\r\n this.onMouseMove = options.onMouseMove\r\n this.onMouseDrag = options.onMouseDrag\r\n this.onMouseDragEnd = options.onMouseDragEnd\r\n this.onMouseDrop = options.onMouseDrop\r\n this.onMouseOver = options.onMouseOver\r\n this.onMouseOut = options.onMouseOut\r\n this.onMouseScroll = options.onMouseScroll\r\n this.onPaste = options.onPaste\r\n this.onKeyDown = options.onKeyDown\r\n this.onSizeChange = options.onSizeChange\r\n }\r\n}\r\n\r\ninterface RenderCommandBase {\r\n action: \"render\" | \"pushScissorRect\" | \"popScissorRect\" | \"pushOpacity\" | \"popOpacity\"\r\n}\r\n\r\ninterface RenderCommandPushScissorRect extends RenderCommandBase {\r\n action: \"pushScissorRect\"\r\n x: number\r\n y: number\r\n width: number\r\n height: number\r\n screenX: number\r\n screenY: number\r\n}\r\n\r\ninterface RenderCommandPopScissorRect extends RenderCommandBase {\r\n action: \"popScissorRect\"\r\n}\r\n\r\ninterface RenderCommandRender extends RenderCommandBase {\r\n action: \"render\"\r\n renderable: Renderable\r\n}\r\n\r\ninterface RenderCommandPushOpacity extends RenderCommandBase {\r\n action: \"pushOpacity\"\r\n opacity: number\r\n}\r\n\r\ninterface RenderCommandPopOpacity extends RenderCommandBase {\r\n action: \"popOpacity\"\r\n}\r\n\r\nexport type RenderCommand =\r\n | RenderCommandPushScissorRect\r\n | RenderCommandPopScissorRect\r\n | RenderCommandRender\r\n | RenderCommandPushOpacity\r\n | RenderCommandPopOpacity\r\n\r\nexport class RootRenderable extends Renderable {\r\n private renderList: RenderCommand[] = []\r\n\r\n constructor(ctx: RenderContext) {\r\n super(ctx, { id: \"__root__\", zIndex: 0, visible: true, width: ctx.width, height: ctx.height, enableLayout: true })\r\n\r\n if (this.yogaNode) {\r\n this.yogaNode.free()\r\n }\r\n\r\n this.yogaNode = Yoga.Node.create(yogaConfig)\r\n this.yogaNode.setWidth(ctx.width)\r\n this.yogaNode.setHeight(ctx.height)\r\n this.yogaNode.setFlexDirection(FlexDirection.Column)\r\n\r\n this.calculateLayout()\r\n }\r\n\r\n public render(buffer: OptimizedBuffer, deltaTime: number): void {\r\n if (!this.visible) return\r\n\r\n // 0. Run lifecycle pass\r\n for (const renderable of this._ctx.getLifecyclePasses()) {\r\n renderable.onLifecyclePass?.call(renderable)\r\n }\r\n\r\n // NOTE: Strictly speaking, this is a 3-pass rendering process:\r\n // 1. Calculate layout from root\r\n // 2. Update layout throughout the tree and collect render list\r\n // 3. Render all collected renderables\r\n // Should be 2-pass by hooking into the calculateLayout phase,\r\n // but that's only possible if we move the layout tree to native.\r\n\r\n // 1. Calculate layout from root\r\n if (this.yogaNode.isDirty()) {\r\n this.calculateLayout()\r\n }\r\n\r\n // 2. Update layout throughout the tree and collect render list\r\n this.renderList.length = 0\r\n this.updateLayout(deltaTime, this.renderList)\r\n\r\n // 3. Render all collected renderables\r\n this._ctx.clearHitGridScissorRects()\r\n for (let i = 1; i < this.renderList.length; i++) {\r\n const command = this.renderList[i]\r\n switch (command.action) {\r\n case \"render\":\r\n // Skip if renderable was destroyed during a previous render callback\r\n if (!command.renderable.isDestroyed) {\r\n command.renderable.render(buffer, deltaTime)\r\n }\r\n break\r\n case \"pushScissorRect\":\r\n buffer.pushScissorRect(command.x, command.y, command.width, command.height)\r\n this._ctx.pushHitGridScissorRect(command.screenX, command.screenY, command.width, command.height)\r\n break\r\n case \"popScissorRect\":\r\n buffer.popScissorRect()\r\n this._ctx.popHitGridScissorRect()\r\n break\r\n case \"pushOpacity\":\r\n buffer.pushOpacity(command.opacity)\r\n break\r\n case \"popOpacity\":\r\n buffer.popOpacity()\r\n break\r\n }\r\n }\r\n }\r\n\r\n protected propagateLiveCount(delta: number): void {\r\n const oldCount = this._liveCount\r\n this._liveCount += delta\r\n\r\n if (oldCount === 0 && this._liveCount > 0) {\r\n this._ctx.requestLive()\r\n } else if (oldCount > 0 && this._liveCount === 0) {\r\n this._ctx.dropLive()\r\n }\r\n }\r\n\r\n public calculateLayout(): void {\r\n this.yogaNode.calculateLayout(this.width, this.height, Direction.LTR)\r\n this.emit(LayoutEvents.LAYOUT_CHANGED)\r\n }\r\n\r\n public resize(width: number, height: number): void {\r\n this.width = width\r\n this.height = height\r\n\r\n this.emit(LayoutEvents.RESIZED, { width, height })\r\n }\r\n}\r\n",
|
|
46
|
+
"import { EventEmitter } from \"events\"\r\nimport Yoga, { Direction, Display, Edge, FlexDirection, type Config, type Node as YogaNode } from \"yoga-layout\"\r\nimport { OptimizedBuffer } from \"./buffer\"\r\nimport type { KeyEvent, PasteEvent } from \"./lib/KeyHandler\"\r\nimport type { MouseEventType } from \"./lib/parse.mouse\"\r\nimport type { Selection } from \"./lib/selection\"\r\nimport {\r\n parseAlign,\r\n parseAlignItems,\r\n parseFlexDirection,\r\n parseJustify,\r\n parseOverflow,\r\n parsePositionType,\r\n parseWrap,\r\n type AlignString,\r\n type FlexDirectionString,\r\n type JustifyString,\r\n type OverflowString,\r\n type PositionTypeString,\r\n type WrapString,\r\n} from \"./lib/yoga.options\"\r\nimport { maybeMakeRenderable, type VNode } from \"./renderables/composition/vnode\"\r\nimport type { MouseEvent } from \"./renderer\"\r\nimport type { RenderContext } from \"./types\"\r\nimport {\r\n validateOptions,\r\n isPositionType,\r\n isDimensionType,\r\n isFlexBasisType,\r\n isSizeType,\r\n isMarginType,\r\n isPaddingType,\r\n isPositionTypeType,\r\n isOverflowType,\r\n} from \"./lib/renderable.validations\"\r\n\r\nconst BrandedRenderable: unique symbol = Symbol.for(\"@cascadetui/core/Renderable\")\r\n\r\nexport enum LayoutEvents {\r\n LAYOUT_CHANGED = \"layout-changed\",\r\n ADDED = \"added\",\r\n REMOVED = \"removed\",\r\n RESIZED = \"resized\",\r\n}\r\n\r\nexport enum RenderableEvents {\r\n FOCUSED = \"focused\",\r\n BLURRED = \"blurred\",\r\n}\r\n\r\nexport interface Position {\r\n top?: number | \"auto\" | `${number}%`\r\n right?: number | \"auto\" | `${number}%`\r\n bottom?: number | \"auto\" | `${number}%`\r\n left?: number | \"auto\" | `${number}%`\r\n}\r\n\r\nexport interface BaseRenderableOptions {\r\n id?: string\r\n}\r\n\r\nexport interface LayoutOptions extends BaseRenderableOptions {\r\n flexGrow?: number\r\n flexShrink?: number\r\n flexDirection?: FlexDirectionString\r\n flexWrap?: WrapString\r\n alignItems?: AlignString\r\n justifyContent?: JustifyString\r\n alignSelf?: AlignString\r\n flexBasis?: number | \"auto\" | undefined\r\n position?: PositionTypeString\r\n overflow?: OverflowString\r\n top?: number | \"auto\" | `${number}%`\r\n right?: number | \"auto\" | `${number}%`\r\n bottom?: number | \"auto\" | `${number}%`\r\n left?: number | \"auto\" | `${number}%`\r\n minWidth?: number | \"auto\" | `${number}%`\r\n minHeight?: number | \"auto\" | `${number}%`\r\n maxWidth?: number | \"auto\" | `${number}%`\r\n maxHeight?: number | \"auto\" | `${number}%`\r\n margin?: number | \"auto\" | `${number}%`\r\n marginX?: number | \"auto\" | `${number}%`\r\n marginY?: number | \"auto\" | `${number}%`\r\n marginTop?: number | \"auto\" | `${number}%`\r\n marginRight?: number | \"auto\" | `${number}%`\r\n marginBottom?: number | \"auto\" | `${number}%`\r\n marginLeft?: number | \"auto\" | `${number}%`\r\n padding?: number | `${number}%`\r\n paddingX?: number | `${number}%`\r\n paddingY?: number | `${number}%`\r\n paddingTop?: number | `${number}%`\r\n paddingRight?: number | `${number}%`\r\n paddingBottom?: number | `${number}%`\r\n paddingLeft?: number | `${number}%`\r\n enableLayout?: boolean\r\n}\r\n\r\nexport interface RenderableOptions<T extends BaseRenderable = BaseRenderable> extends Partial<LayoutOptions> {\r\n width?: number | \"auto\" | `${number}%`\r\n height?: number | \"auto\" | `${number}%`\r\n zIndex?: number\r\n visible?: boolean\r\n buffered?: boolean\r\n live?: boolean\r\n opacity?: number\r\n\r\n // hooks for custom render logic\r\n renderBefore?: (this: T, buffer: OptimizedBuffer, deltaTime: number) => void\r\n renderAfter?: (this: T, buffer: OptimizedBuffer, deltaTime: number) => void\r\n\r\n // catch all\r\n onMouse?: (this: T, event: MouseEvent) => void\r\n\r\n onMouseDown?: (this: T, event: MouseEvent) => void\r\n onMouseUp?: (this: T, event: MouseEvent) => void\r\n onMouseMove?: (this: T, event: MouseEvent) => void\r\n onMouseDrag?: (this: T, event: MouseEvent) => void\r\n onMouseDragEnd?: (this: T, event: MouseEvent) => void\r\n onMouseDrop?: (this: T, event: MouseEvent) => void\r\n onMouseOver?: (this: T, event: MouseEvent) => void\r\n onMouseOut?: (this: T, event: MouseEvent) => void\r\n onMouseScroll?: (this: T, event: MouseEvent) => void\r\n\r\n onPaste?: (this: T, event: PasteEvent) => void\r\n\r\n onKeyDown?: (key: KeyEvent) => void\r\n\r\n onSizeChange?: (this: T) => void\r\n}\r\n\r\nexport function isRenderable(obj: any): obj is Renderable {\r\n return !!obj?.[BrandedRenderable]\r\n}\r\n\r\nexport abstract class BaseRenderable extends EventEmitter {\r\n [BrandedRenderable] = true\r\n\r\n private static renderableNumber = 1\r\n protected _id: string\r\n public readonly num: number\r\n protected _dirty: boolean = false\r\n public parent: BaseRenderable | null = null\r\n protected _visible: boolean = true\r\n\r\n constructor(options: BaseRenderableOptions) {\r\n super()\r\n this.num = BaseRenderable.renderableNumber++\r\n this._id = options.id ?? `renderable-${this.num}`\r\n }\r\n\r\n public abstract add(obj: BaseRenderable | unknown, index?: number): number\r\n public abstract remove(id: string): void\r\n public abstract insertBefore(obj: BaseRenderable | unknown, anchor: BaseRenderable | unknown): void\r\n public abstract getChildren(): BaseRenderable[]\r\n public abstract getChildrenCount(): number\r\n public abstract getRenderable(id: string): BaseRenderable | undefined\r\n public abstract requestRender(): void\r\n public abstract findDescendantById(id: string): BaseRenderable | undefined\r\n\r\n public get id(): string {\r\n return this._id\r\n }\r\n\r\n public set id(value: string) {\r\n this._id = value\r\n }\r\n\r\n public get isDirty(): boolean {\r\n return this._dirty\r\n }\r\n\r\n protected markClean(): void {\r\n this._dirty = false\r\n }\r\n\r\n protected markDirty(): void {\r\n this._dirty = true\r\n }\r\n\r\n public destroy(): void {\r\n // Default implementation: do nothing\r\n // Override this method to provide custom removal logic\r\n }\r\n\r\n public destroyRecursively(): void {\r\n // Default implementation: do nothing\r\n // Override this method to provide custom destruction logic\r\n }\r\n\r\n public get visible(): boolean {\r\n return this._visible\r\n }\r\n\r\n public set visible(value: boolean) {\r\n this._visible = value\r\n }\r\n}\r\n\r\nconst yogaConfig: Config = Yoga.Config.create()\r\nyogaConfig.setUseWebDefaults(false)\r\nyogaConfig.setPointScaleFactor(1)\r\n\r\nexport abstract class Renderable extends BaseRenderable {\r\n static renderablesByNumber: Map<number, Renderable> = new Map()\r\n\r\n protected _isDestroyed: boolean = false\r\n protected _ctx: RenderContext\r\n protected _translateX: number = 0\r\n protected _translateY: number = 0\r\n protected _x: number = 0\r\n protected _y: number = 0\r\n protected _width: number | \"auto\" | `${number}%`\r\n protected _height: number | \"auto\" | `${number}%`\r\n protected _widthValue: number = 0\r\n protected _heightValue: number = 0\r\n private _zIndex: number\r\n public selectable: boolean = false\r\n protected buffered: boolean\r\n protected frameBuffer: OptimizedBuffer | null = null\r\n\r\n protected _focusable: boolean = false\r\n protected _focused: boolean = false\r\n protected keypressHandler: ((key: KeyEvent) => void) | null = null\r\n protected pasteHandler: ((event: PasteEvent) => void) | null = null\r\n\r\n private _live: boolean = false\r\n protected _liveCount: number = 0\r\n\r\n private _sizeChangeListener: (() => void) | undefined = undefined\r\n private _mouseListener: ((event: MouseEvent) => void) | null = null\r\n private _mouseListeners: Partial<Record<MouseEventType, (event: MouseEvent) => void>> = {}\r\n private _pasteListener: ((event: PasteEvent) => void) | undefined = undefined\r\n private _keyListeners: Partial<Record<\"down\", (key: KeyEvent) => void>> = {}\r\n\r\n protected yogaNode: YogaNode\r\n protected _positionType: PositionTypeString = \"relative\"\r\n protected _overflow: OverflowString = \"visible\"\r\n protected _position: Position = {}\r\n protected _opacity: number = 1.0\r\n private _flexShrink: number = 1\r\n\r\n private renderableMapById: Map<string, Renderable> = new Map()\r\n protected _childrenInLayoutOrder: Renderable[] = []\r\n protected _childrenInZIndexOrder: Renderable[] = []\r\n private needsZIndexSort: boolean = false\r\n public parent: Renderable | null = null\r\n\r\n private childrenPrimarySortDirty: boolean = true\r\n private childrenSortedByPrimaryAxis: Renderable[] = []\r\n private _shouldUpdateBefore: Set<Renderable> = new Set()\r\n\r\n public onLifecyclePass: (() => void) | null = null\r\n\r\n public renderBefore?: (this: Renderable, buffer: OptimizedBuffer, deltaTime: number) => void\r\n public renderAfter?: (this: Renderable, buffer: OptimizedBuffer, deltaTime: number) => void\r\n\r\n constructor(ctx: RenderContext, options: RenderableOptions<any>) {\r\n super(options)\r\n\r\n this._ctx = ctx\r\n Renderable.renderablesByNumber.set(this.num, this)\r\n\r\n validateOptions(this.id, options)\r\n\r\n this.renderBefore = options.renderBefore\r\n this.renderAfter = options.renderAfter\r\n\r\n this._width = options.width ?? \"auto\"\r\n this._height = options.height ?? \"auto\"\r\n\r\n if (typeof this._width === \"number\") {\r\n this._widthValue = this._width\r\n }\r\n if (typeof this._height === \"number\") {\r\n this._heightValue = this._height\r\n }\r\n\r\n this._zIndex = options.zIndex ?? 0\r\n this._visible = options.visible !== false\r\n this.buffered = options.buffered ?? false\r\n this._live = options.live ?? false\r\n this._liveCount = this._live && this._visible ? 1 : 0\r\n this._opacity = options.opacity !== undefined ? Math.max(0, Math.min(1, options.opacity)) : 1.0\r\n\r\n // TODO: use a global yoga config\r\n this.yogaNode = Yoga.Node.create(yogaConfig)\r\n this.yogaNode.setDisplay(this._visible ? Display.Flex : Display.None)\r\n this.setupYogaProperties(options)\r\n\r\n this.applyEventOptions(options)\r\n\r\n if (this.buffered) {\r\n this.createFrameBuffer()\r\n }\r\n }\r\n\r\n public override get id() {\r\n return this._id\r\n }\r\n\r\n public override set id(value: string) {\r\n if (this.parent) {\r\n this.parent.renderableMapById.delete(this.id)\r\n this.parent.renderableMapById.set(value, this)\r\n }\r\n super.id = value\r\n }\r\n\r\n public get focusable(): boolean {\r\n return this._focusable\r\n }\r\n\r\n public set focusable(value: boolean) {\r\n this._focusable = value\r\n }\r\n\r\n public get ctx(): RenderContext {\r\n return this._ctx\r\n }\r\n\r\n public get visible(): boolean {\r\n return this._visible\r\n }\r\n\r\n public get primaryAxis(): \"row\" | \"column\" {\r\n const dir = this.yogaNode.getFlexDirection()\r\n return dir === 2 || dir === 3 ? \"row\" : \"column\"\r\n }\r\n\r\n public set visible(value: boolean) {\r\n if (this._visible === value) return\r\n\r\n const wasVisible = this._visible\r\n this._visible = value\r\n this.yogaNode.setDisplay(value ? Display.Flex : Display.None)\r\n\r\n if (this._live) {\r\n if (!wasVisible && value) {\r\n this.propagateLiveCount(1)\r\n } else if (wasVisible && !value) {\r\n this.propagateLiveCount(-1)\r\n }\r\n }\r\n\r\n if (this._focused) {\r\n this.blur()\r\n }\r\n this.requestRender()\r\n }\r\n\r\n public get opacity(): number {\r\n return this._opacity\r\n }\r\n\r\n public set opacity(value: number) {\r\n const clamped = Math.max(0, Math.min(1, value))\r\n if (this._opacity !== clamped) {\r\n this._opacity = clamped\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public hasSelection(): boolean {\r\n return false\r\n }\r\n\r\n public onSelectionChanged(selection: Selection | null): boolean {\r\n // Default implementation: do nothing\r\n // Override this method to provide custom selection handling\r\n return false\r\n }\r\n\r\n public getSelectedText(): string {\r\n return \"\"\r\n }\r\n\r\n public shouldStartSelection(x: number, y: number): boolean {\n return false\n }\n\n public selectWord(_x: number, _y: number): boolean {\n return false\n }\n\n public selectLine(_x: number, _y: number): boolean {\n return false\n }\n\n public updateSelectionWordSnap(_x: number, _y: number): boolean {\n return false\n }\n\r\n public focus(): void {\r\n if (this._isDestroyed || this._focused || !this._focusable) return\r\n\r\n this._ctx.focusRenderable(this)\r\n this._focused = true\r\n this.requestRender()\r\n\r\n this.keypressHandler = (key: KeyEvent) => {\r\n if (this._isDestroyed) return\r\n this._keyListeners[\"down\"]?.(key)\r\n // Check again after user listener - it might have destroyed the renderable\r\n if (this._isDestroyed) return\r\n if (!key.defaultPrevented && this.handleKeyPress) {\r\n this.handleKeyPress(key)\r\n }\r\n }\r\n\r\n this.pasteHandler = (event: PasteEvent) => {\r\n if (this._isDestroyed) return\r\n this._pasteListener?.call(this, event)\r\n // Check again after user listener - it might have destroyed the renderable\r\n if (this._isDestroyed) return\r\n if (!event.defaultPrevented && this.handlePaste) {\r\n this.handlePaste(event)\r\n }\r\n }\r\n\r\n this.ctx._internalKeyInput.onInternal(\"keypress\", this.keypressHandler)\r\n this.ctx._internalKeyInput.onInternal(\"paste\", this.pasteHandler)\r\n this.emit(RenderableEvents.FOCUSED)\r\n }\r\n\r\n public blur(): void {\r\n if (!this._focused || !this._focusable) return\r\n\r\n this._focused = false\r\n this.requestRender()\r\n\r\n if (this.keypressHandler) {\r\n this.ctx._internalKeyInput.offInternal(\"keypress\", this.keypressHandler)\r\n this.keypressHandler = null\r\n }\r\n\r\n if (this.pasteHandler) {\r\n this.ctx._internalKeyInput.offInternal(\"paste\", this.pasteHandler)\r\n this.pasteHandler = null\r\n }\r\n\r\n this.emit(RenderableEvents.BLURRED)\r\n }\r\n\r\n public get focused(): boolean {\r\n return this._focused\r\n }\r\n\r\n public get live(): boolean {\r\n return this._live\r\n }\r\n\r\n public get liveCount(): number {\r\n return this._liveCount\r\n }\r\n\r\n public set live(value: boolean) {\r\n if (this._live === value) return\r\n\r\n this._live = value\r\n\r\n if (this._visible) {\r\n const delta = value ? 1 : -1\r\n this.propagateLiveCount(delta)\r\n }\r\n }\r\n\r\n protected propagateLiveCount(delta: number): void {\r\n this._liveCount += delta\r\n this.parent?.propagateLiveCount(delta)\r\n }\r\n\r\n public handleKeyPress?(key: KeyEvent): boolean\r\n public handlePaste?(event: PasteEvent): void\r\n\r\n public findDescendantById(id: string): Renderable | undefined {\n const visited = new Set<Renderable>()\n const stack = [...this._childrenInLayoutOrder]\n\n while (stack.length > 0) {\n const current = stack.pop()!\n if (visited.has(current)) {\n continue\n }\n visited.add(current)\n\n if (current.id === id) {\n return current\n }\n\n const children = current.getChildren()\n for (let i = children.length - 1; i >= 0; i -= 1) {\n const child = children[i]\n if (isRenderable(child)) {\n stack.push(child)\n }\n }\n }\n\n return undefined\n }\n\r\n public requestRender() {\r\n this.markDirty()\r\n this._ctx.requestRender()\r\n }\r\n\r\n public get translateX(): number {\r\n return this._translateX\r\n }\r\n\r\n public set translateX(value: number) {\r\n if (this._translateX === value) return\r\n this._translateX = value\r\n if (this.parent) this.parent.childrenPrimarySortDirty = true\r\n this.requestRender()\r\n }\r\n\r\n public get translateY(): number {\r\n return this._translateY\r\n }\r\n\r\n public set translateY(value: number) {\r\n if (this._translateY === value) return\r\n this._translateY = value\r\n if (this.parent) this.parent.childrenPrimarySortDirty = true\r\n this.requestRender()\r\n }\r\n\r\n public get x(): number {\r\n if (this.parent) {\r\n return this.parent.x + this._x + this._translateX\r\n }\r\n return this._x + this._translateX\r\n }\r\n\r\n public set x(value: number) {\r\n this.left = value\r\n }\r\n\r\n public get top(): number | \"auto\" | `${number}%` | undefined {\r\n return this._position.top\r\n }\r\n\r\n public set top(value: number | \"auto\" | `${number}%` | undefined) {\r\n if (isPositionType(value) || value === undefined) {\r\n this.setPosition({ top: value })\r\n }\r\n }\r\n\r\n public get right(): number | \"auto\" | `${number}%` | undefined {\r\n return this._position.right\r\n }\r\n\r\n public set right(value: number | \"auto\" | `${number}%` | undefined) {\r\n if (isPositionType(value) || value === undefined) {\r\n this.setPosition({ right: value })\r\n }\r\n }\r\n\r\n public get bottom(): number | \"auto\" | `${number}%` | undefined {\r\n return this._position.bottom\r\n }\r\n\r\n public set bottom(value: number | \"auto\" | `${number}%` | undefined) {\r\n if (isPositionType(value) || value === undefined) {\r\n this.setPosition({ bottom: value })\r\n }\r\n }\r\n\r\n public get left(): number | \"auto\" | `${number}%` | undefined {\r\n return this._position.left\r\n }\r\n\r\n public set left(value: number | \"auto\" | `${number}%` | undefined) {\r\n if (isPositionType(value) || value === undefined) {\r\n this.setPosition({ left: value })\r\n }\r\n }\r\n\r\n public get y(): number {\r\n if (this.parent) {\r\n return this.parent.y + this._y + this._translateY\r\n }\r\n return this._y + this._translateY\r\n }\r\n\r\n public set y(value: number) {\r\n this.top = value\r\n }\r\n\r\n public get width(): number {\r\n return this._widthValue\r\n }\r\n\r\n public set width(value: number | \"auto\" | `${number}%`) {\r\n if (isDimensionType(value)) {\r\n this._width = value\r\n this.yogaNode.setWidth(value)\r\n\r\n if (typeof value === \"number\" && this._flexShrink === 1) {\r\n this._flexShrink = 0\r\n this.yogaNode.setFlexShrink(0)\r\n }\r\n\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public get height(): number {\r\n return this._heightValue\r\n }\r\n\r\n public set height(value: number | \"auto\" | `${number}%`) {\r\n if (isDimensionType(value)) {\r\n this._height = value\r\n this.yogaNode.setHeight(value)\r\n\r\n if (typeof value === \"number\" && this._flexShrink === 1) {\r\n this._flexShrink = 0\r\n this.yogaNode.setFlexShrink(0)\r\n }\r\n\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public get zIndex(): number {\r\n return this._zIndex\r\n }\r\n\r\n public set zIndex(value: number) {\r\n if (this._zIndex !== value) {\r\n this._zIndex = value\r\n this.parent?.requestZIndexSort()\r\n this.requestRender()\r\n }\r\n }\r\n\r\n private requestZIndexSort(): void {\r\n this.needsZIndexSort = true\r\n }\r\n\r\n private ensureZIndexSorted(): void {\r\n if (this.needsZIndexSort) {\r\n this._childrenInZIndexOrder.sort((a, b) => (a.zIndex > b.zIndex ? 1 : a.zIndex < b.zIndex ? -1 : 0))\r\n this.needsZIndexSort = false\r\n }\r\n }\r\n\r\n public getChildrenSortedByPrimaryAxis(): Renderable[] {\r\n if (\r\n !this.childrenPrimarySortDirty &&\r\n this.childrenSortedByPrimaryAxis.length === this._childrenInLayoutOrder.length\r\n ) {\r\n return this.childrenSortedByPrimaryAxis\r\n }\r\n\r\n const dir = this.yogaNode.getFlexDirection()\r\n const axis: \"x\" | \"y\" = dir === 2 || dir === 3 ? \"x\" : \"y\"\r\n\r\n const sorted = [...this._childrenInLayoutOrder]\r\n sorted.sort((a, b) => {\r\n const va = axis === \"y\" ? a.y : a.x\r\n const vb = axis === \"y\" ? b.y : b.x\r\n return va - vb\r\n })\r\n\r\n this.childrenSortedByPrimaryAxis = sorted\r\n this.childrenPrimarySortDirty = false\r\n return this.childrenSortedByPrimaryAxis\r\n }\r\n\r\n private setupYogaProperties(options: RenderableOptions<Renderable>): void {\r\n const node = this.yogaNode\r\n\r\n if (isFlexBasisType(options.flexBasis)) {\r\n node.setFlexBasis(options.flexBasis)\r\n }\r\n\r\n if (isSizeType(options.minWidth)) {\r\n node.setMinWidth(options.minWidth)\r\n }\r\n if (isSizeType(options.minHeight)) {\r\n node.setMinHeight(options.minHeight)\r\n }\r\n\r\n if (options.flexGrow !== undefined) {\r\n node.setFlexGrow(options.flexGrow)\r\n } else {\r\n node.setFlexGrow(0)\r\n }\r\n\r\n if (options.flexShrink !== undefined) {\r\n this._flexShrink = options.flexShrink\r\n node.setFlexShrink(options.flexShrink)\r\n } else {\r\n // If explicit numeric width is set, don't shrink by default\r\n // Otherwise follow web default of 1\r\n const hasExplicitWidth = typeof options.width === \"number\"\r\n const hasExplicitHeight = typeof options.height === \"number\"\r\n this._flexShrink = hasExplicitWidth || hasExplicitHeight ? 0 : 1\r\n node.setFlexShrink(this._flexShrink)\r\n }\r\n\r\n node.setFlexDirection(parseFlexDirection(options.flexDirection))\r\n node.setFlexWrap(parseWrap(options.flexWrap))\r\n node.setAlignItems(parseAlignItems(options.alignItems))\r\n node.setJustifyContent(parseJustify(options.justifyContent))\r\n node.setAlignSelf(parseAlign(options.alignSelf))\r\n\r\n if (isDimensionType(options.width)) {\r\n this._width = options.width\r\n this.yogaNode.setWidth(options.width)\r\n }\r\n if (isDimensionType(options.height)) {\r\n this._height = options.height\r\n this.yogaNode.setHeight(options.height)\r\n }\r\n\r\n this._positionType = options.position === \"absolute\" ? \"absolute\" : \"relative\"\r\n if (this._positionType !== \"relative\") {\r\n node.setPositionType(parsePositionType(this._positionType))\r\n }\r\n\r\n this._overflow = options.overflow === \"hidden\" ? \"hidden\" : options.overflow === \"scroll\" ? \"scroll\" : \"visible\"\r\n if (this._overflow !== \"visible\") {\r\n node.setOverflow(parseOverflow(this._overflow))\r\n }\r\n\r\n // TODO: flatten position properties internally as well\r\n const hasPositionProps =\r\n options.top !== undefined ||\r\n options.right !== undefined ||\r\n options.bottom !== undefined ||\r\n options.left !== undefined\r\n if (hasPositionProps) {\r\n this._position = {\r\n top: options.top,\r\n right: options.right,\r\n bottom: options.bottom,\r\n left: options.left,\r\n }\r\n this.updateYogaPosition(this._position)\r\n }\r\n\r\n if (isSizeType(options.maxWidth)) {\r\n node.setMaxWidth(options.maxWidth)\r\n }\r\n if (isSizeType(options.maxHeight)) {\r\n node.setMaxHeight(options.maxHeight)\r\n }\r\n\r\n this.setupMarginAndPadding(options)\r\n }\r\n\r\n private setupMarginAndPadding(options: RenderableOptions<Renderable>): void {\r\n const node = this.yogaNode\r\n\r\n if (isMarginType(options.margin)) {\r\n node.setMargin(Edge.All, options.margin)\r\n }\r\n\r\n if (isMarginType(options.marginX)) {\r\n node.setMargin(Edge.Horizontal, options.marginX)\r\n }\r\n if (isMarginType(options.marginY)) {\r\n node.setMargin(Edge.Vertical, options.marginY)\r\n }\r\n if (isMarginType(options.marginTop)) {\r\n node.setMargin(Edge.Top, options.marginTop)\r\n }\r\n if (isMarginType(options.marginRight)) {\r\n node.setMargin(Edge.Right, options.marginRight)\r\n }\r\n if (isMarginType(options.marginBottom)) {\r\n node.setMargin(Edge.Bottom, options.marginBottom)\r\n }\r\n if (isMarginType(options.marginLeft)) {\r\n node.setMargin(Edge.Left, options.marginLeft)\r\n }\r\n\r\n if (isPaddingType(options.padding)) {\r\n node.setPadding(Edge.All, options.padding)\r\n }\r\n\r\n if (isPaddingType(options.paddingX)) {\r\n node.setPadding(Edge.Horizontal, options.paddingX)\r\n }\r\n if (isPaddingType(options.paddingY)) {\r\n node.setPadding(Edge.Vertical, options.paddingY)\r\n }\r\n if (isPaddingType(options.paddingTop)) {\r\n node.setPadding(Edge.Top, options.paddingTop)\r\n }\r\n if (isPaddingType(options.paddingRight)) {\r\n node.setPadding(Edge.Right, options.paddingRight)\r\n }\r\n if (isPaddingType(options.paddingBottom)) {\r\n node.setPadding(Edge.Bottom, options.paddingBottom)\r\n }\r\n if (isPaddingType(options.paddingLeft)) {\r\n node.setPadding(Edge.Left, options.paddingLeft)\r\n }\r\n }\r\n\r\n set position(positionType: PositionTypeString | null | undefined) {\r\n if (!isPositionTypeType(positionType) || this._positionType === positionType) return\r\n\r\n this._positionType = positionType\r\n this.yogaNode.setPositionType(parsePositionType(positionType))\r\n this.requestRender()\r\n }\r\n\r\n get overflow(): OverflowString {\r\n return this._overflow\r\n }\r\n\r\n set overflow(overflow: OverflowString | null | undefined) {\r\n if (!isOverflowType(overflow) || this._overflow === overflow) return\r\n\r\n this._overflow = overflow\r\n this.yogaNode.setOverflow(parseOverflow(overflow))\r\n this.requestRender()\r\n }\r\n\r\n public setPosition(position: Position): void {\r\n this._position = { ...this._position, ...position }\r\n this.updateYogaPosition(position)\r\n }\r\n\r\n private updateYogaPosition(position: Position): void {\r\n const node = this.yogaNode\r\n const { top, right, bottom, left } = position\r\n\r\n if (isPositionType(top)) {\r\n if (top === \"auto\") {\r\n node.setPositionAuto(Edge.Top)\r\n } else {\r\n node.setPosition(Edge.Top, top)\r\n }\r\n }\r\n if (isPositionType(right)) {\r\n if (right === \"auto\") {\r\n node.setPositionAuto(Edge.Right)\r\n } else {\r\n node.setPosition(Edge.Right, right)\r\n }\r\n }\r\n if (isPositionType(bottom)) {\r\n if (bottom === \"auto\") {\r\n node.setPositionAuto(Edge.Bottom)\r\n } else {\r\n node.setPosition(Edge.Bottom, bottom)\r\n }\r\n }\r\n if (isPositionType(left)) {\r\n if (left === \"auto\") {\r\n node.setPositionAuto(Edge.Left)\r\n } else {\r\n node.setPosition(Edge.Left, left)\r\n }\r\n }\r\n this.requestRender()\r\n }\r\n\r\n public set flexGrow(grow: number | null | undefined) {\r\n if (grow == null) {\r\n this.yogaNode.setFlexGrow(0)\r\n } else {\r\n this.yogaNode.setFlexGrow(grow)\r\n }\r\n this.requestRender()\r\n }\r\n\r\n public set flexShrink(shrink: number | null | undefined) {\r\n const value = shrink == null ? 1 : shrink\r\n this._flexShrink = value\r\n this.yogaNode.setFlexShrink(value)\r\n this.requestRender()\r\n }\r\n\r\n public set flexDirection(direction: FlexDirectionString | null | undefined) {\r\n this.yogaNode.setFlexDirection(parseFlexDirection(direction))\r\n this.requestRender()\r\n }\r\n\r\n public set flexWrap(wrap: WrapString | null | undefined) {\r\n this.yogaNode.setFlexWrap(parseWrap(wrap))\r\n this.requestRender()\r\n }\r\n\r\n public set alignItems(alignItems: AlignString | null | undefined) {\r\n this.yogaNode.setAlignItems(parseAlignItems(alignItems))\r\n this.requestRender()\r\n }\r\n\r\n public set justifyContent(justifyContent: JustifyString | null | undefined) {\r\n this.yogaNode.setJustifyContent(parseJustify(justifyContent))\r\n this.requestRender()\r\n }\r\n\r\n public set alignSelf(alignSelf: AlignString | null | undefined) {\r\n this.yogaNode.setAlignSelf(parseAlign(alignSelf))\r\n this.requestRender()\r\n }\r\n\r\n public set flexBasis(basis: number | \"auto\" | null | undefined) {\r\n if (isFlexBasisType(basis)) {\r\n this.yogaNode.setFlexBasis(basis)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public set minWidth(minWidth: number | `${number}%` | null | undefined) {\r\n if (isSizeType(minWidth)) {\r\n this.yogaNode.setMinWidth(minWidth)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public set maxWidth(maxWidth: number | `${number}%` | null | undefined) {\r\n if (isSizeType(maxWidth)) {\r\n this.yogaNode.setMaxWidth(maxWidth)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public set minHeight(minHeight: number | `${number}%` | null | undefined) {\r\n if (isSizeType(minHeight)) {\r\n this.yogaNode.setMinHeight(minHeight)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public set maxHeight(maxHeight: number | `${number}%` | null | undefined) {\r\n if (isSizeType(maxHeight)) {\r\n this.yogaNode.setMaxHeight(maxHeight)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public set margin(margin: number | \"auto\" | `${number}%` | null | undefined) {\r\n if (isMarginType(margin)) {\r\n this.yogaNode.setMargin(Edge.All, margin)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public set marginX(marginX: number | \"auto\" | `${number}%` | null | undefined) {\r\n if (isMarginType(marginX)) {\r\n this.yogaNode.setMargin(Edge.Horizontal, marginX)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public set marginY(marginY: number | \"auto\" | `${number}%` | null | undefined) {\r\n if (isMarginType(marginY)) {\r\n this.yogaNode.setMargin(Edge.Vertical, marginY)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public set marginTop(margin: number | \"auto\" | `${number}%` | null | undefined) {\r\n if (isMarginType(margin)) {\r\n this.yogaNode.setMargin(Edge.Top, margin)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public set marginRight(margin: number | \"auto\" | `${number}%` | null | undefined) {\r\n if (isMarginType(margin)) {\r\n this.yogaNode.setMargin(Edge.Right, margin)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public set marginBottom(margin: number | \"auto\" | `${number}%` | null | undefined) {\r\n if (isMarginType(margin)) {\r\n this.yogaNode.setMargin(Edge.Bottom, margin)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public set marginLeft(margin: number | \"auto\" | `${number}%` | null | undefined) {\r\n if (isMarginType(margin)) {\r\n this.yogaNode.setMargin(Edge.Left, margin)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public set padding(padding: number | `${number}%` | null | undefined) {\r\n if (isPaddingType(padding)) {\r\n this.yogaNode.setPadding(Edge.All, padding)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public set paddingX(paddingX: number | `${number}%` | null | undefined) {\r\n if (isPaddingType(paddingX)) {\r\n this.yogaNode.setPadding(Edge.Horizontal, paddingX)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public set paddingY(paddingY: number | `${number}%` | null | undefined) {\r\n if (isPaddingType(paddingY)) {\r\n this.yogaNode.setPadding(Edge.Vertical, paddingY)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public set paddingTop(padding: number | `${number}%` | null | undefined) {\r\n if (isPaddingType(padding)) {\r\n this.yogaNode.setPadding(Edge.Top, padding)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public set paddingRight(padding: number | `${number}%` | null | undefined) {\r\n if (isPaddingType(padding)) {\r\n this.yogaNode.setPadding(Edge.Right, padding)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public set paddingBottom(padding: number | `${number}%` | null | undefined) {\r\n if (isPaddingType(padding)) {\r\n this.yogaNode.setPadding(Edge.Bottom, padding)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public set paddingLeft(padding: number | `${number}%` | null | undefined) {\r\n if (isPaddingType(padding)) {\r\n this.yogaNode.setPadding(Edge.Left, padding)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n public getLayoutNode(): YogaNode {\r\n return this.yogaNode\r\n }\r\n\r\n public updateFromLayout(): void {\r\n const layout = this.yogaNode.getComputedLayout()\r\n\r\n const oldX = this._x\r\n const oldY = this._y\r\n const oldWidth = this._widthValue\r\n const oldHeight = this._heightValue\r\n\r\n this._x = layout.left\r\n this._y = layout.top\r\n\r\n const newWidth = Math.max(layout.width, 1)\r\n const newHeight = Math.max(layout.height, 1)\r\n const sizeChanged = oldWidth !== newWidth || oldHeight !== newHeight\r\n\r\n this._widthValue = newWidth\r\n this._heightValue = newHeight\r\n\r\n if (sizeChanged) {\r\n this.onLayoutResize(newWidth, newHeight)\r\n }\r\n\r\n const positionChanged = oldX !== this._x || oldY !== this._y\r\n if (positionChanged) {\r\n if (this.parent) this.parent.childrenPrimarySortDirty = true\r\n }\r\n }\r\n\r\n protected onLayoutResize(width: number, height: number): void {\r\n if (this._visible) {\r\n // TODO: Should probably .markDirty()\r\n this.handleFrameBufferResize(width, height)\r\n this.onResize(width, height)\r\n this.requestRender()\r\n }\r\n }\r\n\r\n protected handleFrameBufferResize(width: number, height: number): void {\r\n if (!this.buffered) return\r\n\r\n if (width <= 0 || height <= 0) {\r\n return\r\n }\r\n\r\n if (this.frameBuffer) {\r\n this.frameBuffer.resize(width, height)\r\n } else {\r\n this.createFrameBuffer()\r\n }\r\n }\r\n\r\n protected createFrameBuffer(): void {\r\n const w = this.width\r\n const h = this.height\r\n\r\n if (w <= 0 || h <= 0) {\r\n return\r\n }\r\n\r\n try {\r\n const widthMethod = this._ctx.widthMethod\r\n this.frameBuffer = OptimizedBuffer.create(w, h, widthMethod, { respectAlpha: true, id: `framebuffer-${this.id}` })\r\n } catch (error) {\r\n console.error(`Failed to create frame buffer for ${this.id}:`, error)\r\n this.frameBuffer = null\r\n }\r\n }\r\n\r\n /**\r\n * This will be called during a render pass.\r\n * Requesting a render during a render pass will drop the requested render.\r\n * If you need to request a render during a render pass, use process.nextTick.\r\n */\r\n protected onResize(width: number, height: number): void {\r\n this.onSizeChange?.()\r\n this.emit(\"resize\")\r\n // Override in subclasses for additional resize logic\r\n }\r\n\r\n private replaceParent(obj: Renderable) {\n if (obj.parent) {\n obj.parent.remove(obj.id)\n }\n obj.parent = this\n }\n\n private assertCanAdoptChild(renderable: Renderable): void {\n if (renderable === this) {\n throw new Error(`Invalid render tree operation: '${this.id}' cannot contain itself`)\n }\n\n let current: Renderable | null = this\n const visited = new Set<Renderable>()\n while (current) {\n if (visited.has(current)) {\n throw new Error(`Invalid render tree operation: parent chain cycle detected near '${current.id}'`)\n }\n visited.add(current)\n if (current === renderable) {\n throw new Error(`Invalid render tree operation: adding '${renderable.id}' to '${this.id}' would create a cycle`)\n }\n current = current.parent\n }\n }\n\r\n public add(obj: Renderable | VNode<any, any[]> | unknown, index?: number): number {\n if (!obj) {\r\n return -1\r\n }\r\n\r\n const renderable = maybeMakeRenderable(this._ctx, obj)\r\n if (!renderable) {\r\n return -1\r\n }\r\n\r\n if (renderable.isDestroyed) {\n if (process.env.NODE_ENV !== \"production\") {\r\n console.warn(`Renderable with id ${renderable.id} was already destroyed, skipping add`)\r\n }\r\n return -1\n }\n\n this.assertCanAdoptChild(renderable)\n\r\n const anchorRenderable = index !== undefined ? this._childrenInLayoutOrder[index] : undefined\r\n\r\n if (anchorRenderable) {\r\n return this.insertBefore(renderable, anchorRenderable)\r\n }\r\n\r\n if (renderable.parent === this) {\r\n this.yogaNode.removeChild(renderable.getLayoutNode())\r\n this._childrenInLayoutOrder.splice(this._childrenInLayoutOrder.indexOf(renderable), 1)\r\n } else {\r\n this.replaceParent(renderable)\r\n this.needsZIndexSort = true\r\n this.renderableMapById.set(renderable.id, renderable)\r\n this._childrenInZIndexOrder.push(renderable)\r\n\r\n if (typeof renderable.onLifecyclePass === \"function\") {\r\n this._ctx.registerLifecyclePass(renderable)\r\n }\r\n\r\n if (renderable._liveCount > 0) {\r\n this.propagateLiveCount(renderable._liveCount)\r\n }\r\n }\r\n\r\n const childLayoutNode = renderable.getLayoutNode()\r\n const insertedIndex = this._childrenInLayoutOrder.length\r\n this._childrenInLayoutOrder.push(renderable)\r\n this.yogaNode.insertChild(childLayoutNode, insertedIndex)\r\n\r\n this.childrenPrimarySortDirty = true\r\n this._shouldUpdateBefore.add(renderable)\r\n\r\n this.requestRender()\r\n\r\n return insertedIndex\r\n }\r\n\r\n insertBefore(obj: Renderable | VNode<any, any[]> | unknown, anchor?: Renderable | unknown): number {\n if (!anchor) {\r\n return this.add(obj)\r\n }\r\n\r\n if (!obj) {\r\n return -1\r\n }\r\n\r\n const renderable = maybeMakeRenderable(this._ctx, obj)\r\n if (!renderable) {\r\n return -1\r\n }\r\n\r\n if (renderable.isDestroyed) {\n if (process.env.NODE_ENV !== \"production\") {\r\n console.warn(`Renderable with id ${renderable.id} was already destroyed, skipping insertBefore`)\r\n }\r\n return -1\n }\n\n this.assertCanAdoptChild(renderable)\n\r\n if (!isRenderable(anchor)) {\r\n throw new Error(\"Anchor must be a Renderable\")\r\n }\r\n\r\n if (anchor.isDestroyed) {\r\n if (process.env.NODE_ENV !== \"production\") {\r\n console.warn(`Anchor with id ${anchor.id} was already destroyed, skipping insertBefore`)\r\n }\r\n return -1\r\n }\r\n\r\n if (!this.renderableMapById.has(anchor.id)) {\r\n if (process.env.NODE_ENV !== \"production\") {\r\n console.warn(`Anchor with id ${anchor.id} does not exist within the parent ${this.id}, skipping insertBefore`)\r\n }\r\n return -1\r\n }\r\n\r\n if (renderable === anchor || renderable.id === anchor.id) {\r\n if (process.env.NODE_ENV !== \"production\") {\r\n console.warn(`Anchor is the same as the node ${renderable.id} being inserted, skipping insertBefore`)\r\n }\r\n return -1\r\n }\r\n\r\n if (renderable.parent === this) {\r\n this.yogaNode.removeChild(renderable.getLayoutNode())\r\n this._childrenInLayoutOrder.splice(this._childrenInLayoutOrder.indexOf(renderable), 1)\r\n } else {\r\n this.replaceParent(renderable)\r\n this.needsZIndexSort = true\r\n this.renderableMapById.set(renderable.id, renderable)\r\n this._childrenInZIndexOrder.push(renderable)\r\n\r\n if (typeof renderable.onLifecyclePass === \"function\") {\r\n this._ctx.registerLifecyclePass(renderable)\r\n }\r\n\r\n if (renderable._liveCount > 0) {\r\n this.propagateLiveCount(renderable._liveCount)\r\n }\r\n }\r\n\r\n this.childrenPrimarySortDirty = true\r\n\r\n const anchorIndex = this._childrenInLayoutOrder.indexOf(anchor)\r\n const insertedIndex = Math.max(0, Math.min(anchorIndex, this._childrenInLayoutOrder.length))\r\n\r\n this._childrenInLayoutOrder.splice(insertedIndex, 0, renderable)\r\n this.yogaNode.insertChild(renderable.getLayoutNode(), insertedIndex)\r\n\r\n this._shouldUpdateBefore.add(renderable)\r\n\r\n this.requestRender()\r\n\r\n return insertedIndex\r\n }\r\n\r\n // TODO: that naming is meh\r\n public getRenderable(id: string): Renderable | undefined {\r\n return this.renderableMapById.get(id)\r\n }\r\n\r\n public remove(id: string): void {\r\n if (!id) {\r\n return\r\n }\r\n\r\n if (this.renderableMapById.has(id)) {\r\n const obj = this.renderableMapById.get(id)\r\n if (obj) {\r\n if (obj._liveCount > 0) {\r\n this.propagateLiveCount(-obj._liveCount)\r\n }\r\n\r\n const childLayoutNode = obj.getLayoutNode()\r\n this.yogaNode.removeChild(childLayoutNode)\r\n this.requestRender()\r\n\r\n obj.onRemove()\r\n obj.parent = null\r\n this._ctx.unregisterLifecyclePass(obj)\r\n this.renderableMapById.delete(id)\r\n\r\n const index = this._childrenInLayoutOrder.findIndex((obj) => obj.id === id)\r\n if (index !== -1) {\r\n this._childrenInLayoutOrder.splice(index, 1)\r\n }\r\n\r\n const zIndexIndex = this._childrenInZIndexOrder.findIndex((obj) => obj.id === id)\r\n if (zIndexIndex !== -1) {\r\n this._childrenInZIndexOrder.splice(zIndexIndex, 1)\r\n }\r\n\r\n this.childrenPrimarySortDirty = true\r\n }\r\n }\r\n }\r\n\r\n protected onRemove(): void {\r\n // Default implementation: do nothing\r\n // Override this method to provide custom removal logic\r\n }\r\n\r\n public getChildren(): Renderable[] {\r\n return [...this._childrenInLayoutOrder]\r\n }\r\n\r\n public getChildrenCount(): number {\r\n return this._childrenInLayoutOrder.length\r\n }\r\n\r\n public updateLayout(deltaTime: number, renderList: RenderCommand[] = []): void {\r\n if (!this.visible) return\r\n\r\n this.onUpdate(deltaTime)\r\n\r\n // If destroyed during onUpdate, don't add to render list\r\n if (this._isDestroyed) return\r\n\r\n // NOTE: worst case updateFromLayout is called throughout the whole tree,\r\n // which currently still has yoga performance issues.\r\n // This can be mitigated at some point when the layout tree moved to native,\r\n // as in the native yoga tree we can use events during the calculateLayout phase,\r\n // and anctually know if a child has changed or not.\r\n // That would allow us to to generate optimised render commands,\r\n // including the layout updates, in one pass.\r\n this.updateFromLayout()\r\n\r\n // Update newly added children before getting visible children\r\n // This ensures their positions are current when culling happens\r\n if (this._shouldUpdateBefore.size > 0) {\r\n for (const child of this._shouldUpdateBefore) {\r\n if (!child.isDestroyed) {\r\n child.updateFromLayout()\r\n }\r\n }\r\n this._shouldUpdateBefore.clear()\r\n }\r\n\r\n // Check again after updateFromLayout, which calls onResize/onSizeChange\r\n if (this._isDestroyed) return\r\n\r\n // Push opacity BEFORE rendering this element so it affects this element and all children\r\n const shouldPushOpacity = this._opacity < 1.0\r\n if (shouldPushOpacity) {\r\n renderList.push({ action: \"pushOpacity\", opacity: this._opacity })\r\n }\r\n\r\n renderList.push({ action: \"render\", renderable: this })\r\n\r\n this.ensureZIndexSorted()\r\n\r\n const shouldPushScissor = this._overflow !== \"visible\" && this.width > 0 && this.height > 0\r\n if (shouldPushScissor) {\r\n const scissorRect = this.getScissorRect()\r\n renderList.push({\r\n action: \"pushScissorRect\",\r\n x: scissorRect.x,\r\n y: scissorRect.y,\r\n width: scissorRect.width,\r\n height: scissorRect.height,\r\n screenX: this.x,\r\n screenY: this.y,\r\n })\r\n }\r\n const visibleChildren = this._getVisibleChildren()\r\n for (const child of this._childrenInZIndexOrder) {\r\n if (!visibleChildren.includes(child.num)) {\r\n child.updateFromLayout()\r\n continue\r\n }\r\n child.updateLayout(deltaTime, renderList)\r\n }\r\n\r\n if (shouldPushScissor) {\r\n renderList.push({ action: \"popScissorRect\" })\r\n }\r\n if (shouldPushOpacity) {\r\n renderList.push({ action: \"popOpacity\" })\r\n }\r\n }\r\n\r\n public render(buffer: OptimizedBuffer, deltaTime: number): void {\r\n let renderBuffer = buffer\r\n if (this.buffered && this.frameBuffer) {\r\n renderBuffer = this.frameBuffer\r\n }\r\n\r\n if (this.renderBefore) {\r\n this.renderBefore.call(this, renderBuffer, deltaTime)\r\n }\r\n\r\n this.renderSelf(renderBuffer, deltaTime)\r\n\r\n if (this.renderAfter) {\r\n this.renderAfter.call(this, renderBuffer, deltaTime)\r\n }\r\n\r\n this.markClean()\r\n this._ctx.addToHitGrid(this.x, this.y, this.width, this.height, this.num)\r\n\r\n if (this.buffered && this.frameBuffer) {\r\n buffer.drawFrameBuffer(this.x, this.y, this.frameBuffer)\r\n }\r\n }\r\n\r\n protected _getVisibleChildren(): number[] {\r\n return this._childrenInZIndexOrder.map((child) => child.num)\r\n }\r\n\r\n protected onUpdate(deltaTime: number): void {\r\n // Default implementation: do nothing\r\n // Override this method to provide custom rendering\r\n }\r\n\r\n protected getScissorRect(): { x: number; y: number; width: number; height: number } {\r\n return {\r\n x: this.buffered ? 0 : this.x,\r\n y: this.buffered ? 0 : this.y,\r\n width: this.width,\r\n height: this.height,\r\n }\r\n }\r\n\r\n protected renderSelf(buffer: OptimizedBuffer, deltaTime: number): void {\r\n // Default implementation: do nothing\r\n // Override this method to provide custom rendering\r\n }\r\n\r\n public get isDestroyed(): boolean {\r\n return this._isDestroyed\r\n }\r\n\r\n public destroy(): void {\r\n if (this._isDestroyed) {\r\n return\r\n }\r\n\r\n this._isDestroyed = true\r\n\r\n if (this.parent) {\r\n this.parent.remove(this.id)\r\n }\r\n\r\n if (this.frameBuffer) {\r\n this.frameBuffer.destroy()\r\n this.frameBuffer = null\r\n }\r\n\r\n for (const child of this._childrenInLayoutOrder) {\r\n this.remove(child.id)\r\n }\r\n\r\n this._childrenInLayoutOrder = []\r\n this.renderableMapById.clear()\r\n Renderable.renderablesByNumber.delete(this.num)\r\n\r\n this.blur()\r\n this.removeAllListeners()\r\n\r\n this.destroySelf()\r\n\r\n try {\r\n this.yogaNode.free()\r\n } catch (e) {\r\n // Might be already freed and will throw an error if we try to free it again\r\n }\r\n }\r\n\r\n public destroyRecursively(): void {\r\n // Destroy children first to ensure removal as destroy clears child array\r\n // Make a copy of the children array to avoid iteration issues when children are destroyed\r\n const children = [...this._childrenInLayoutOrder]\r\n for (const child of children) {\r\n child.destroyRecursively()\r\n }\r\n this.destroy()\r\n }\r\n\r\n protected destroySelf(): void {\r\n // Default implementation: do nothing else\r\n // Override this method to provide custom cleanup\r\n }\r\n\r\n public processMouseEvent(event: MouseEvent): void {\n if (!event.tryVisit(this)) {\n return\n }\n\n this._mouseListener?.call(this, event)\n this._mouseListeners[event.type]?.call(this, event)\n this.onMouseEvent(event)\n\r\n if (this.parent && !event.propagationStopped) {\r\n this.parent.processMouseEvent(event)\r\n }\r\n }\r\n\r\n protected onMouseEvent(event: MouseEvent): void {\r\n // Default implementation: do nothing\r\n // Override this method to provide custom event handling\r\n }\r\n\r\n public set onMouse(handler: ((event: MouseEvent) => void) | undefined) {\r\n if (handler) this._mouseListener = handler\r\n else this._mouseListener = null\r\n }\r\n\r\n public set onMouseDown(handler: ((event: MouseEvent) => void) | undefined) {\r\n if (handler) this._mouseListeners[\"down\"] = handler\r\n else delete this._mouseListeners[\"down\"]\r\n }\r\n\r\n public set onMouseUp(handler: ((event: MouseEvent) => void) | undefined) {\r\n if (handler) this._mouseListeners[\"up\"] = handler\r\n else delete this._mouseListeners[\"up\"]\r\n }\r\n\r\n public set onMouseMove(handler: ((event: MouseEvent) => void) | undefined) {\r\n if (handler) this._mouseListeners[\"move\"] = handler\r\n else delete this._mouseListeners[\"move\"]\r\n }\r\n\r\n public set onMouseDrag(handler: ((event: MouseEvent) => void) | undefined) {\r\n if (handler) this._mouseListeners[\"drag\"] = handler\r\n else delete this._mouseListeners[\"drag\"]\r\n }\r\n\r\n public set onMouseDragEnd(handler: ((event: MouseEvent) => void) | undefined) {\r\n if (handler) this._mouseListeners[\"drag-end\"] = handler\r\n else delete this._mouseListeners[\"drag-end\"]\r\n }\r\n\r\n public set onMouseDrop(handler: ((event: MouseEvent) => void) | undefined) {\r\n if (handler) this._mouseListeners[\"drop\"] = handler\r\n else delete this._mouseListeners[\"drop\"]\r\n }\r\n\r\n public set onMouseOver(handler: ((event: MouseEvent) => void) | undefined) {\r\n if (handler) this._mouseListeners[\"over\"] = handler\r\n else delete this._mouseListeners[\"over\"]\r\n }\r\n\r\n public set onMouseOut(handler: ((event: MouseEvent) => void) | undefined) {\r\n if (handler) this._mouseListeners[\"out\"] = handler\r\n else delete this._mouseListeners[\"out\"]\r\n }\r\n\r\n public set onMouseScroll(handler: ((event: MouseEvent) => void) | undefined) {\r\n if (handler) this._mouseListeners[\"scroll\"] = handler\r\n else delete this._mouseListeners[\"scroll\"]\r\n }\r\n\r\n public set onPaste(handler: ((event: PasteEvent) => void) | undefined) {\r\n this._pasteListener = handler\r\n }\r\n public get onPaste(): ((event: PasteEvent) => void) | undefined {\r\n return this._pasteListener\r\n }\r\n\r\n public set onKeyDown(handler: ((key: KeyEvent) => void) | undefined) {\r\n if (handler) this._keyListeners[\"down\"] = handler\r\n else delete this._keyListeners[\"down\"]\r\n }\r\n public get onKeyDown(): ((key: KeyEvent) => void) | undefined {\r\n return this._keyListeners[\"down\"]\r\n }\r\n\r\n public set onSizeChange(handler: (() => void) | undefined) {\r\n this._sizeChangeListener = handler\r\n }\r\n public get onSizeChange(): (() => void) | undefined {\r\n return this._sizeChangeListener\r\n }\r\n\r\n private applyEventOptions(options: RenderableOptions<Renderable>): void {\r\n this.onMouse = options.onMouse\r\n this.onMouseDown = options.onMouseDown\r\n this.onMouseUp = options.onMouseUp\r\n this.onMouseMove = options.onMouseMove\r\n this.onMouseDrag = options.onMouseDrag\r\n this.onMouseDragEnd = options.onMouseDragEnd\r\n this.onMouseDrop = options.onMouseDrop\r\n this.onMouseOver = options.onMouseOver\r\n this.onMouseOut = options.onMouseOut\r\n this.onMouseScroll = options.onMouseScroll\r\n this.onPaste = options.onPaste\r\n this.onKeyDown = options.onKeyDown\r\n this.onSizeChange = options.onSizeChange\r\n }\r\n}\r\n\r\ninterface RenderCommandBase {\r\n action: \"render\" | \"pushScissorRect\" | \"popScissorRect\" | \"pushOpacity\" | \"popOpacity\"\r\n}\r\n\r\ninterface RenderCommandPushScissorRect extends RenderCommandBase {\r\n action: \"pushScissorRect\"\r\n x: number\r\n y: number\r\n width: number\r\n height: number\r\n screenX: number\r\n screenY: number\r\n}\r\n\r\ninterface RenderCommandPopScissorRect extends RenderCommandBase {\r\n action: \"popScissorRect\"\r\n}\r\n\r\ninterface RenderCommandRender extends RenderCommandBase {\r\n action: \"render\"\r\n renderable: Renderable\r\n}\r\n\r\ninterface RenderCommandPushOpacity extends RenderCommandBase {\r\n action: \"pushOpacity\"\r\n opacity: number\r\n}\r\n\r\ninterface RenderCommandPopOpacity extends RenderCommandBase {\r\n action: \"popOpacity\"\r\n}\r\n\r\nexport type RenderCommand =\r\n | RenderCommandPushScissorRect\r\n | RenderCommandPopScissorRect\r\n | RenderCommandRender\r\n | RenderCommandPushOpacity\r\n | RenderCommandPopOpacity\r\n\r\nexport class RootRenderable extends Renderable {\r\n private renderList: RenderCommand[] = []\r\n\r\n constructor(ctx: RenderContext) {\r\n super(ctx, { id: \"__root__\", zIndex: 0, visible: true, width: ctx.width, height: ctx.height, enableLayout: true })\r\n\r\n if (this.yogaNode) {\r\n this.yogaNode.free()\r\n }\r\n\r\n this.yogaNode = Yoga.Node.create(yogaConfig)\r\n this.yogaNode.setWidth(ctx.width)\r\n this.yogaNode.setHeight(ctx.height)\r\n this.yogaNode.setFlexDirection(FlexDirection.Column)\r\n\r\n this.calculateLayout()\r\n }\r\n\r\n public render(buffer: OptimizedBuffer, deltaTime: number): void {\r\n if (!this.visible) return\r\n\r\n // 0. Run lifecycle pass\r\n for (const renderable of this._ctx.getLifecyclePasses()) {\r\n renderable.onLifecyclePass?.call(renderable)\r\n }\r\n\r\n // NOTE: Strictly speaking, this is a 3-pass rendering process:\r\n // 1. Calculate layout from root\r\n // 2. Update layout throughout the tree and collect render list\r\n // 3. Render all collected renderables\r\n // Should be 2-pass by hooking into the calculateLayout phase,\r\n // but that's only possible if we move the layout tree to native.\r\n\r\n // 1. Calculate layout from root\r\n if (this.yogaNode.isDirty()) {\r\n this.calculateLayout()\r\n }\r\n\r\n // 2. Update layout throughout the tree and collect render list\r\n this.renderList.length = 0\r\n this.updateLayout(deltaTime, this.renderList)\r\n\r\n // 3. Render all collected renderables\r\n this._ctx.clearHitGridScissorRects()\r\n for (let i = 1; i < this.renderList.length; i++) {\r\n const command = this.renderList[i]\r\n switch (command.action) {\r\n case \"render\":\r\n // Skip if renderable was destroyed during a previous render callback\r\n if (!command.renderable.isDestroyed) {\r\n command.renderable.render(buffer, deltaTime)\r\n }\r\n break\r\n case \"pushScissorRect\":\r\n buffer.pushScissorRect(command.x, command.y, command.width, command.height)\r\n this._ctx.pushHitGridScissorRect(command.screenX, command.screenY, command.width, command.height)\r\n break\r\n case \"popScissorRect\":\r\n buffer.popScissorRect()\r\n this._ctx.popHitGridScissorRect()\r\n break\r\n case \"pushOpacity\":\r\n buffer.pushOpacity(command.opacity)\r\n break\r\n case \"popOpacity\":\r\n buffer.popOpacity()\r\n break\r\n }\r\n }\r\n }\r\n\r\n protected propagateLiveCount(delta: number): void {\r\n const oldCount = this._liveCount\r\n this._liveCount += delta\r\n\r\n if (oldCount === 0 && this._liveCount > 0) {\r\n this._ctx.requestLive()\r\n } else if (oldCount > 0 && this._liveCount === 0) {\r\n this._ctx.dropLive()\r\n }\r\n }\r\n\r\n public calculateLayout(): void {\r\n this.yogaNode.calculateLayout(this.width, this.height, Direction.LTR)\r\n this.emit(LayoutEvents.LAYOUT_CHANGED)\r\n }\r\n\r\n public resize(width: number, height: number): void {\r\n this.width = width\r\n this.height = height\r\n\r\n this.emit(LayoutEvents.RESIZED, { width, height })\r\n }\r\n}\r\n",
|
|
47
47
|
"import type { RenderableOptions, Renderable } from \"../Renderable\"\r\nimport type { PositionTypeString, OverflowString } from \"./yoga.options\"\r\n\r\nexport function validateOptions(id: string, options: RenderableOptions<Renderable>): void {\r\n if (typeof options.width === \"number\") {\r\n if (options.width < 0) {\r\n throw new TypeError(`Invalid width for Renderable ${id}: ${options.width}`)\r\n }\r\n }\r\n if (typeof options.height === \"number\") {\r\n if (options.height < 0) {\r\n throw new TypeError(`Invalid height for Renderable ${id}: ${options.height}`)\r\n }\r\n }\r\n}\r\n\r\nexport function isValidPercentage(value: any): value is `${number}%` {\r\n if (typeof value === \"string\" && value.endsWith(\"%\")) {\r\n const numPart = value.slice(0, -1)\r\n const num = parseFloat(numPart)\r\n return !Number.isNaN(num)\r\n }\r\n return false\r\n}\r\n\r\nexport function isMarginType(value: any): value is number | \"auto\" | `${number}%` {\r\n if (typeof value === \"number\" && !Number.isNaN(value)) {\r\n return true\r\n }\r\n if (value === \"auto\") {\r\n return true\r\n }\r\n return isValidPercentage(value)\r\n}\r\n\r\nexport function isPaddingType(value: any): value is number | `${number}%` {\r\n if (typeof value === \"number\" && !Number.isNaN(value)) {\r\n return true\r\n }\r\n return isValidPercentage(value)\r\n}\r\n\r\nexport function isPositionType(value: any): value is number | \"auto\" | `${number}%` {\r\n if (typeof value === \"number\" && !Number.isNaN(value)) {\r\n return true\r\n }\r\n if (value === \"auto\") {\r\n return true\r\n }\r\n return isValidPercentage(value)\r\n}\r\n\r\nexport function isPositionTypeType(value: any): value is PositionTypeString {\r\n return value === \"relative\" || value === \"absolute\"\r\n}\r\n\r\nexport function isOverflowType(value: any): value is OverflowString {\r\n return value === \"visible\" || value === \"hidden\" || value === \"scroll\"\r\n}\r\n\r\nexport function isDimensionType(value: any): value is number | \"auto\" | `${number}%` {\r\n return isPositionType(value)\r\n}\r\n\r\nexport function isFlexBasisType(value: any): value is number | \"auto\" | undefined {\r\n if (value === undefined || value === \"auto\") {\r\n return true\r\n }\r\n if (typeof value === \"number\" && !Number.isNaN(value)) {\r\n return true\r\n }\r\n return false\r\n}\r\n\r\nexport function isSizeType(value: any): value is number | `${number}%` | undefined {\r\n if (value === undefined) {\r\n return true\r\n }\r\n if (typeof value === \"number\" && !Number.isNaN(value)) {\r\n return true\r\n }\r\n return isValidPercentage(value)\r\n}\r\n",
|
|
48
48
|
"import { isRenderable, Renderable, type RenderableOptions } from \"../../Renderable\"\r\nimport type { RenderContext } from \"../../types\"\r\nimport util from \"node:util\"\r\n\r\nexport type VChild = VNode | Renderable | VChild[] | null | undefined | false\r\n\r\nexport interface PendingCall {\r\n method: string\r\n args: any[]\r\n isProperty?: boolean\r\n}\r\n\r\nconst BrandedVNode: unique symbol = Symbol.for(\"@cascadetui/core/VNode\")\r\n\r\nexport interface VNode<P = any, C = VChild[]> {\r\n [BrandedVNode]: true\r\n type: Construct<P>\r\n props?: P\r\n children?: C\r\n __delegateMap?: Record<string, string>\r\n __pendingCalls?: PendingCall[]\r\n}\r\n\r\n// Type that represents a VNode with Renderable methods available for chaining\r\nexport type ProxiedVNode<TCtor extends RenderableConstructor<any>> = VNode<\r\n TCtor extends RenderableConstructor<infer P> ? P : any\r\n> & {\r\n [K in keyof InstanceType<TCtor>]: InstanceType<TCtor>[K] extends (...args: infer Args) => any\r\n ? (...args: Args) => ProxiedVNode<TCtor>\r\n : InstanceType<TCtor>[K]\r\n}\r\n\r\nexport interface RenderableConstructor<P extends RenderableOptions<any> = RenderableOptions<any>> {\r\n new (ctx: RenderContext, options: P): Renderable\r\n}\r\n\r\nexport type FunctionalConstruct<P = any> = (props: P, children?: VChild[]) => VNode\r\n\r\nexport type Construct<P = any> =\r\n | RenderableConstructor<P extends RenderableOptions<any> ? P : never>\r\n | FunctionalConstruct<P>\r\n\r\nfunction isRenderableConstructor<P extends RenderableOptions<any> = RenderableOptions<any>>(\r\n value: any,\r\n): value is RenderableConstructor<P> {\r\n return typeof value === \"function\" && value.prototype && Renderable.prototype.isPrototypeOf(value.prototype)\r\n}\r\n\r\nfunction flattenChildren(children: VChild[]): VChild[] {\r\n const result: VChild[] = []\r\n for (const child of children) {\r\n if (Array.isArray(child)) {\r\n result.push(...flattenChildren(child))\r\n } else if (child !== null && child !== undefined && child !== false) {\r\n result.push(child)\r\n }\r\n }\r\n return result\r\n}\r\n\r\n// Overloads for proper typing\r\nexport function h<TCtor extends RenderableConstructor<any>>(\r\n type: TCtor,\r\n props?: TCtor extends RenderableConstructor<infer P> ? P : never,\r\n ...children: VChild[]\r\n): ProxiedVNode<TCtor>\r\nexport function h<P>(type: FunctionalConstruct<P>, props?: P, ...children: VChild[]): VNode<P>\r\nexport function h<P>(type: Construct<P>, props?: P, ...children: VChild[]): VNode<P> | ProxiedVNode<any>\r\nexport function h<P>(type: Construct<P>, props?: P, ...children: VChild[]): any {\r\n if (typeof type !== \"function\") {\r\n throw new TypeError(\"h() received an invalid vnode type\")\r\n }\r\n\r\n const vnode: VNode<P> = {\r\n [BrandedVNode]: true,\r\n type,\r\n props,\r\n children: flattenChildren(children),\r\n __pendingCalls: [],\r\n }\r\n\r\n if (isRenderableConstructor(type)) {\r\n return new Proxy(vnode, {\r\n get(target, prop, receiver) {\r\n // Return VNode properties directly\r\n if (prop in target) {\r\n return Reflect.get(target, prop, receiver)\r\n }\r\n\r\n if (typeof prop === \"string\") {\r\n const prototype = type.prototype\r\n const hasMethod =\r\n prototype &&\r\n (typeof prototype[prop] === \"function\" ||\r\n Object.getOwnPropertyDescriptor(prototype, prop) ||\r\n Object.getOwnPropertyDescriptor(Object.getPrototypeOf(prototype), prop))\r\n\r\n if (hasMethod) {\r\n return (...args: any[]) => {\r\n target.__pendingCalls = target.__pendingCalls || []\r\n target.__pendingCalls.push({ method: prop, args })\r\n return target\r\n }\r\n }\r\n }\r\n\r\n return Reflect.get(target, prop, receiver)\r\n },\r\n\r\n set(target, prop, value, receiver) {\r\n if (typeof prop === \"string\" && isRenderableConstructor(type)) {\r\n const prototype = type.prototype\r\n const descriptor =\r\n Object.getOwnPropertyDescriptor(prototype, prop) ||\r\n Object.getOwnPropertyDescriptor(Object.getPrototypeOf(prototype), prop)\r\n\r\n if (descriptor && descriptor.set) {\r\n target.__pendingCalls = target.__pendingCalls || []\r\n target.__pendingCalls.push({ method: prop, args: [value], isProperty: true })\r\n return true\r\n }\r\n }\r\n\r\n return Reflect.set(target, prop, value, receiver)\r\n },\r\n })\r\n }\r\n\r\n return vnode\r\n}\r\n\r\nexport function isVNode(node: any): node is VNode {\r\n return node && node[BrandedVNode]\r\n}\r\n\r\nexport function maybeMakeRenderable(\r\n ctx: RenderContext,\r\n node: Renderable | VNode<any, any[]> | unknown,\r\n): Renderable | null {\r\n if (isRenderable(node)) return node\r\n if (isVNode(node)) return instantiate(ctx, node)\r\n if (process.env.NODE_ENV !== \"production\") {\r\n console.warn(\"maybeMakeRenderable received an invalid node\", util.inspect(node, { depth: 2 }))\r\n }\r\n return null\r\n}\r\n\r\nexport function wrapWithDelegates<T extends InstanceType<RenderableConstructor>>(\r\n instance: T,\r\n delegateMap: Record<string, string> | undefined,\r\n): T {\r\n if (!delegateMap || Object.keys(delegateMap).length === 0) return instance\r\n\r\n const descendantCache = new Map<string, Renderable | undefined>()\r\n\r\n const getDescendant = (id: string): Renderable | undefined => {\r\n if (descendantCache.has(id)) {\r\n const cached = descendantCache.get(id)\r\n if (cached !== undefined) {\r\n return cached\r\n }\r\n }\r\n const descendant = (instance as Renderable).findDescendantById(id)\r\n if (descendant) {\r\n descendantCache.set(id, descendant)\r\n }\r\n return descendant\r\n }\r\n\r\n const proxy = new Proxy(instance as any, {\r\n get(target, prop, receiver) {\r\n if (typeof prop === \"string\" && delegateMap[prop]) {\r\n const host = getDescendant(delegateMap[prop])\r\n if (host) {\r\n const value = (host as any)[prop]\r\n if (typeof value === \"function\") {\r\n return value.bind(host)\r\n }\r\n return value\r\n }\r\n }\r\n return Reflect.get(target, prop, receiver)\r\n },\r\n set(target, prop, value, receiver) {\r\n if (typeof prop === \"string\" && delegateMap[prop]) {\r\n const host = getDescendant(delegateMap[prop])\r\n if (host) {\r\n return Reflect.set(host as any, prop, value)\r\n }\r\n }\r\n return Reflect.set(target, prop, value, receiver)\r\n },\r\n })\r\n return proxy\r\n}\r\n\r\nexport type InstantiateFn<NodeType extends VNode | Renderable> = Renderable & { __node?: NodeType }\r\n\r\nexport function instantiate<NodeType extends VNode | Renderable>(\r\n ctx: RenderContext,\r\n node: NodeType,\r\n): InstantiateFn<NodeType> {\r\n if (isRenderable(node)) return node\r\n\r\n if (!node || typeof node !== \"object\") {\r\n throw new TypeError(\"mount() received an invalid vnode\")\r\n }\r\n\r\n const vnode = node as VNode\r\n const { type, props } = vnode\r\n const children = flattenChildren(vnode.children || [])\r\n const delegateMap = (vnode as any).__delegateMap as Record<string, string> | undefined\r\n\r\n if (isRenderableConstructor(type)) {\r\n const instance = new type(ctx, (props || {}) as any)\r\n\r\n for (const child of children) {\r\n if (isRenderable(child)) {\r\n instance.add(child)\r\n } else {\r\n const mounted = instantiate(ctx, child as NodeType)\r\n instance.add(mounted)\r\n }\r\n }\r\n\r\n const delegatedInstance = wrapWithDelegates(instance, delegateMap)\r\n\r\n const pendingCalls = (vnode as any).__pendingCalls as PendingCall[] | undefined\r\n if (pendingCalls) {\r\n for (const call of pendingCalls) {\r\n if (call.isProperty) {\r\n ;(delegatedInstance as any)[call.method] = call.args[0]\r\n } else {\r\n ;(delegatedInstance as any)[call.method].apply(delegatedInstance, call.args)\r\n }\r\n }\r\n }\r\n\r\n return delegatedInstance\r\n }\r\n\r\n // Functional construct: resolve to a concrete vnode and mount it\r\n const resolved = (type as FunctionalConstruct)(props || ({} as any), children)\r\n const inst = instantiate(ctx, resolved)\r\n\r\n return wrapWithDelegates(inst, delegateMap) as InstantiateFn<NodeType>\r\n}\r\n\r\nexport type DelegateMap<T> = Partial<Record<keyof T, string>>\r\n\r\nexport type ValidateShape<Given, AllowedKeys> = {\r\n [K in keyof Given]: K extends keyof AllowedKeys ? NonNullable<Given[K]> : never\r\n}\r\n\r\ntype InferNode<T> = T extends InstantiateFn<infer U> ? U : never\r\n\r\nexport function delegate<\r\n Factory extends InstantiateFn<any>,\r\n InnerNode extends InferNode<Factory>,\r\n TargetMap extends Record<keyof InnerNode, string>,\r\n const Mapping extends Partial<TargetMap>,\r\n>(mapping: ValidateShape<Mapping, TargetMap>, vnode: Factory): Renderable\r\n\r\nexport function delegate<\r\n ConstructorType extends RenderableConstructor<any>,\r\n TargetMap extends Record<keyof InstanceType<ConstructorType>, string>,\r\n const Mapping extends Partial<TargetMap>,\r\n>(mapping: ValidateShape<Mapping, TargetMap>, vnode: ProxiedVNode<ConstructorType>): ProxiedVNode<ConstructorType>\r\n\r\nexport function delegate<\r\n ConstructorType extends RenderableConstructor<any>,\r\n const Mapping extends DelegateMap<InstanceType<ConstructorType>>,\r\n>(mapping: ValidateShape<Mapping, string>, vnode: VNode & { type: ConstructorType }): VNode\r\n\r\n/**\r\n * Controlled delegation that routes selected properties/methods\r\n * to a descendant renderable identified by ID.\r\n */\r\nexport function delegate<NodeType extends VNode | Renderable | InstantiateFn<any>>(\r\n mapping: Record<string, string>,\r\n vnode: NodeType,\r\n): VNode | Renderable {\r\n if (isRenderable(vnode)) {\r\n return wrapWithDelegates(vnode, mapping)\r\n }\r\n if (!vnode || typeof vnode !== \"object\") return vnode\r\n vnode.__delegateMap = { ...(vnode.__delegateMap || {}), ...mapping }\r\n return vnode\r\n}\r\n",
|
|
49
49
|
"import { EventEmitter } from \"events\"\r\nimport { Console } from \"node:console\"\r\nimport fs from \"node:fs\"\r\nimport path from \"node:path\"\r\nimport util from \"node:util\"\r\nimport type { CliRenderer, ColorInput, MouseEvent } from \".\"\r\nimport { OptimizedBuffer } from \"./buffer\"\r\nimport { Capture, CapturedWritableStream } from \"./lib/output.capture\"\r\nimport { parseColor, RGBA } from \"./lib/RGBA\"\r\nimport { singleton } from \"./lib/singleton\"\r\nimport { env, registerEnvVar } from \"./lib/env\"\r\nimport type { KeyEvent } from \"./lib/KeyHandler\"\r\nimport {\r\n type KeyBinding as BaseKeyBinding,\r\n mergeKeyBindings,\r\n getKeyBindingKey,\r\n buildKeyBindingsMap,\r\n type KeyAliasMap,\r\n defaultKeyAliases,\r\n mergeKeyAliases,\r\n keyBindingToString,\r\n} from \"./lib/keymapping\"\r\n\r\ninterface CallerInfo {\r\n functionName: string\r\n fullPath: string\r\n fileName: string\r\n lineNumber: number\r\n columnNumber: number\r\n}\r\n\r\nfunction getCallerInfo(): CallerInfo | null {\r\n const err = new Error()\r\n const stackLines = err.stack?.split(\"\\n\").slice(5) || []\r\n if (!stackLines.length) return null\r\n\r\n const callerLine = stackLines[0].trim()\r\n\r\n const regex = /at\\s+(?:([\\w$.<>]+)\\s+\\()?((?:\\/|[A-Za-z]:\\\\)[^:]+):(\\d+):(\\d+)\\)?/\r\n const match = callerLine.match(regex)\r\n\r\n if (!match) return null\r\n\r\n // Extract details from the match.\r\n const functionName = match[1] || \"<anonymous>\"\r\n const fullPath = match[2]\r\n const fileName = fullPath.split(/[\\\\/]/).pop() || \"<unknown>\"\r\n const lineNumber = parseInt(match[3], 10) || 0\r\n const columnNumber = parseInt(match[4], 10) || 0\r\n\r\n return { functionName, fullPath, fileName, lineNumber, columnNumber }\r\n}\r\n\r\nenum LogLevel {\r\n LOG = \"LOG\",\r\n INFO = \"INFO\",\r\n WARN = \"WARN\",\r\n ERROR = \"ERROR\",\r\n DEBUG = \"DEBUG\",\r\n}\r\n\r\nexport const capture = singleton(\"ConsoleCapture\", () => new Capture())\r\n\r\nregisterEnvVar({\r\n name: \"CASCADE_USE_CONSOLE\",\r\n description: \"Whether to use the console. Will not capture console output if set to false.\",\r\n type: \"boolean\",\r\n default: true,\r\n})\r\n\r\nregisterEnvVar({\r\n name: \"SHOW_CONSOLE\",\r\n description: \"Show the console at startup if set to true.\",\r\n type: \"boolean\",\r\n default: false,\r\n})\r\n\r\nclass TerminalConsoleCache extends EventEmitter {\r\n private _cachedLogs: [Date, LogLevel, any[], CallerInfo | null][] = []\r\n private readonly MAX_CACHE_SIZE = 1000\r\n private _collectCallerInfo: boolean = false\r\n private _cachingEnabled: boolean = true\r\n private _originalConsole: typeof console | null = null\r\n\r\n get cachedLogs(): [Date, LogLevel, any[], CallerInfo | null][] {\r\n return this._cachedLogs\r\n }\r\n\r\n constructor() {\r\n super()\r\n\r\n // Note: Console activation will be handled by the renderer when needed\r\n // Don't activate on import to avoid hiding console.log globally\r\n }\r\n\r\n public activate(): void {\r\n if (!this._originalConsole) {\r\n this._originalConsole = global.console\r\n }\r\n this.setupConsoleCapture()\r\n this.overrideConsoleMethods()\r\n }\r\n\r\n private setupConsoleCapture(): void {\r\n if (!env.CASCADE_USE_CONSOLE) return\r\n\r\n const mockStdout = new CapturedWritableStream(\"stdout\", capture)\r\n const mockStderr = new CapturedWritableStream(\"stderr\", capture)\r\n\r\n // TODO: The Console constructor doesn't return a full Console interface implementation,\r\n // it only provides a subset of methods (log, info, warn, error, debug, etc.).\r\n // TypeScript's Console interface requires all methods (assert, clear, count, etc.).\r\n // Using 'as any' as a workaround since we override the methods we use immediately after.\r\n global.console = new Console({\r\n stdout: mockStdout,\r\n stderr: mockStderr,\r\n colorMode: true,\r\n inspectOptions: {\r\n compact: false,\r\n breakLength: 80,\r\n depth: 2,\r\n },\r\n }) as any\r\n }\r\n\r\n private overrideConsoleMethods(): void {\r\n console.log = (...args: any[]) => {\r\n this.appendToConsole(LogLevel.LOG, ...args)\r\n }\r\n\r\n console.info = (...args: any[]) => {\r\n this.appendToConsole(LogLevel.INFO, ...args)\r\n }\r\n\r\n console.warn = (...args: any[]) => {\r\n this.appendToConsole(LogLevel.WARN, ...args)\r\n }\r\n\r\n console.error = (...args: any[]) => {\r\n this.appendToConsole(LogLevel.ERROR, ...args)\r\n }\r\n\r\n console.debug = (...args: any[]) => {\r\n this.appendToConsole(LogLevel.DEBUG, ...args)\r\n }\r\n }\r\n\r\n public setCollectCallerInfo(enabled: boolean): void {\r\n this._collectCallerInfo = enabled\r\n }\r\n\r\n public clearConsole(): void {\r\n this._cachedLogs = []\r\n }\r\n\r\n public setCachingEnabled(enabled: boolean): void {\r\n this._cachingEnabled = enabled\r\n }\r\n\r\n public deactivate(): void {\r\n this.restoreOriginalConsole()\r\n }\r\n\r\n private restoreOriginalConsole(): void {\r\n if (this._originalConsole) {\r\n global.console = this._originalConsole\r\n }\r\n\r\n this.setupConsoleCapture()\r\n }\r\n\r\n public addLogEntry(level: LogLevel, ...args: any[]) {\r\n const callerInfo = this._collectCallerInfo ? getCallerInfo() : null\r\n const logEntry: [Date, LogLevel, any[], CallerInfo | null] = [new Date(), level, args, callerInfo]\r\n\r\n if (this._cachingEnabled) {\r\n if (this._cachedLogs.length >= this.MAX_CACHE_SIZE) {\r\n this._cachedLogs.shift()\r\n }\r\n this._cachedLogs.push(logEntry)\r\n }\r\n\r\n return logEntry\r\n }\r\n\r\n private appendToConsole(level: LogLevel, ...args: any[]): void {\r\n if (this._cachedLogs.length >= this.MAX_CACHE_SIZE) {\r\n this._cachedLogs.shift()\r\n }\r\n const entry = this.addLogEntry(level, ...args)\r\n this.emit(\"entry\", entry)\r\n }\r\n\r\n public destroy(): void {\r\n this.deactivate()\r\n }\r\n}\r\n\r\nconst terminalConsoleCache = singleton(\"TerminalConsoleCache\", () => {\r\n const terminalConsoleCache = new TerminalConsoleCache()\r\n process.on(\"exit\", () => {\r\n terminalConsoleCache.destroy()\r\n })\r\n return terminalConsoleCache\r\n})\r\n\r\nexport enum ConsolePosition {\r\n TOP = \"top\",\r\n BOTTOM = \"bottom\",\r\n LEFT = \"left\",\r\n RIGHT = \"right\",\r\n}\r\n\r\ninterface ConsoleSelection {\r\n startLine: number\r\n startCol: number\r\n endLine: number\r\n endCol: number\r\n}\r\n\r\nexport type ConsoleAction =\r\n | \"scroll-up\"\r\n | \"scroll-down\"\r\n | \"scroll-to-top\"\r\n | \"scroll-to-bottom\"\r\n | \"position-previous\"\r\n | \"position-next\"\r\n | \"size-increase\"\r\n | \"size-decrease\"\r\n | \"save-logs\"\r\n | \"copy-selection\"\r\n\r\nexport type ConsoleKeyBinding = BaseKeyBinding<ConsoleAction>\r\n\r\nconst defaultConsoleKeybindings: ConsoleKeyBinding[] = [\r\n { name: \"up\", action: \"scroll-up\" },\r\n { name: \"down\", action: \"scroll-down\" },\r\n { name: \"up\", shift: true, action: \"scroll-to-top\" },\r\n { name: \"down\", shift: true, action: \"scroll-to-bottom\" },\r\n { name: \"p\", ctrl: true, action: \"position-previous\" },\r\n { name: \"o\", ctrl: true, action: \"position-next\" },\r\n { name: \"+\", action: \"size-increase\" },\r\n { name: \"=\", shift: true, action: \"size-increase\" },\r\n { name: \"-\", action: \"size-decrease\" },\r\n { name: \"s\", ctrl: true, action: \"save-logs\" },\r\n { name: \"c\", ctrl: true, shift: true, action: \"copy-selection\" },\r\n]\r\n\r\nexport interface ConsoleOptions {\r\n position?: ConsolePosition\r\n sizePercent?: number\r\n zIndex?: number\r\n colorInfo?: ColorInput\r\n colorWarn?: ColorInput\r\n colorError?: ColorInput\r\n colorDebug?: ColorInput\r\n colorDefault?: ColorInput\r\n backgroundColor?: ColorInput\r\n startInDebugMode?: boolean\r\n title?: string\r\n titleBarColor?: ColorInput\r\n titleBarTextColor?: ColorInput\r\n cursorColor?: ColorInput\r\n maxStoredLogs?: number\r\n maxDisplayLines?: number\r\n onCopySelection?: (text: string) => void\r\n keyBindings?: ConsoleKeyBinding[]\r\n keyAliasMap?: KeyAliasMap\r\n selectionColor?: ColorInput\r\n copyButtonColor?: ColorInput\r\n}\r\n\r\nconst DEFAULT_CONSOLE_OPTIONS: Required<Omit<ConsoleOptions, \"onCopySelection\" | \"keyBindings\" | \"keyAliasMap\">> & {\r\n onCopySelection?: (text: string) => void\r\n keyBindings?: ConsoleKeyBinding[]\r\n keyAliasMap?: KeyAliasMap\r\n} = {\r\n position: ConsolePosition.BOTTOM,\r\n sizePercent: 30,\r\n zIndex: Infinity,\r\n colorInfo: \"#00FFFF\", // Cyan\r\n colorWarn: \"#FFFF00\", // Yellow\r\n colorError: \"#FF0000\", // Red\r\n colorDebug: \"#808080\", // Gray\r\n colorDefault: \"#FFFFFF\", // White\r\n backgroundColor: RGBA.fromValues(0.1, 0.1, 0.1, 0.7),\r\n startInDebugMode: false,\r\n title: \"Console\",\r\n titleBarColor: RGBA.fromValues(0.05, 0.05, 0.05, 0.7),\r\n titleBarTextColor: \"#FFFFFF\",\r\n cursorColor: \"#00A0FF\",\r\n maxStoredLogs: 2000,\r\n maxDisplayLines: 3000,\r\n onCopySelection: undefined,\r\n keyBindings: undefined,\r\n keyAliasMap: undefined,\r\n selectionColor: RGBA.fromValues(0.3, 0.5, 0.8, 0.5),\r\n copyButtonColor: \"#00A0FF\",\r\n}\r\n\r\nconst INDENT_WIDTH = 2\r\n\r\ninterface DisplayLine {\r\n text: string\r\n level: LogLevel\r\n indent: boolean\r\n}\r\n\r\nexport class TerminalConsole extends EventEmitter {\r\n private isVisible: boolean = false\r\n private isFocused: boolean = false\r\n private renderer: CliRenderer\r\n private keyHandler: (event: KeyEvent) => void\r\n private options: Required<Omit<ConsoleOptions, \"onCopySelection\" | \"keyBindings\" | \"keyAliasMap\">> & {\r\n onCopySelection?: (text: string) => void\r\n keyBindings?: ConsoleKeyBinding[]\r\n keyAliasMap?: KeyAliasMap\r\n }\r\n private _debugModeEnabled: boolean = false\r\n\r\n private frameBuffer: OptimizedBuffer | null = null\r\n private consoleX: number = 0\r\n private consoleY: number = 0\r\n private consoleWidth: number = 0\r\n private consoleHeight: number = 0\r\n private scrollTopIndex: number = 0\r\n private isScrolledToBottom: boolean = true\r\n private currentLineIndex: number = 0\r\n private _displayLines: DisplayLine[] = []\r\n private _allLogEntries: [Date, LogLevel, any[], CallerInfo | null][] = []\r\n private _needsFrameBufferUpdate: boolean = false\r\n private _entryListener: (logEntry: [Date, LogLevel, any[], CallerInfo | null]) => void\r\n\r\n private _selectionStart: { line: number; col: number } | null = null\r\n private _selectionEnd: { line: number; col: number } | null = null\r\n private _isDragging: boolean = false\r\n private _copyButtonBounds: { x: number; y: number; width: number; height: number } = {\r\n x: 0,\r\n y: 0,\r\n width: 0,\r\n height: 0,\r\n }\r\n private _autoScrollInterval: number | null = null\r\n\r\n private _keyBindingsMap: Map<string, ConsoleAction>\r\n private _keyAliasMap: KeyAliasMap\r\n private _keyBindings: ConsoleKeyBinding[]\r\n private _mergedKeyBindings: ConsoleKeyBinding[]\r\n private _actionHandlers: Map<ConsoleAction, () => boolean>\r\n\r\n private markNeedsRerender(): void {\r\n this._needsFrameBufferUpdate = true\r\n this.renderer.requestRender()\r\n }\r\n\r\n private getCopyButtonLabel(): string {\r\n const copyBindings = this._mergedKeyBindings.filter((b) => b.action === \"copy-selection\")\r\n const copyBinding = copyBindings[copyBindings.length - 1]\r\n if (copyBinding) {\r\n const shortcut = keyBindingToString(copyBinding)\r\n return `[Copy (${shortcut})]`\r\n }\r\n return \"[Copy]\"\r\n }\r\n\r\n private _rgbaInfo: RGBA\r\n private _rgbaWarn: RGBA\r\n private _rgbaError: RGBA\r\n private _rgbaDebug: RGBA\r\n private _rgbaDefault: RGBA\r\n private backgroundColor: RGBA\r\n private _rgbaTitleBar: RGBA\r\n private _rgbaTitleBarText: RGBA\r\n private _title: string\r\n private _rgbaCursor: RGBA\r\n private _rgbaSelection: RGBA\r\n private _rgbaCopyButton: RGBA\r\n\r\n private _positions: ConsolePosition[] = [\r\n ConsolePosition.TOP,\r\n ConsolePosition.RIGHT,\r\n ConsolePosition.BOTTOM,\r\n ConsolePosition.LEFT,\r\n ]\r\n\r\n constructor(renderer: CliRenderer, options: ConsoleOptions = {}) {\r\n super()\r\n this.renderer = renderer\r\n this.options = { ...DEFAULT_CONSOLE_OPTIONS, ...options }\r\n this.keyHandler = this.handleKeyPress.bind(this)\r\n this._debugModeEnabled = this.options.startInDebugMode\r\n terminalConsoleCache.setCollectCallerInfo(this._debugModeEnabled)\r\n\r\n this._rgbaInfo = parseColor(this.options.colorInfo)\r\n this._rgbaWarn = parseColor(this.options.colorWarn)\r\n this._rgbaError = parseColor(this.options.colorError)\r\n this._rgbaDebug = parseColor(this.options.colorDebug)\r\n this._rgbaDefault = parseColor(this.options.colorDefault)\r\n this.backgroundColor = parseColor(this.options.backgroundColor)\r\n this._rgbaTitleBar = parseColor(this.options.titleBarColor)\r\n this._rgbaTitleBarText = parseColor(this.options.titleBarTextColor || this.options.colorDefault)\r\n this._title = this.options.title\r\n this._rgbaCursor = parseColor(this.options.cursorColor)\r\n this._rgbaSelection = parseColor(this.options.selectionColor)\r\n this._rgbaCopyButton = parseColor(this.options.copyButtonColor)\r\n\r\n this._keyAliasMap = mergeKeyAliases(defaultKeyAliases, options.keyAliasMap || {})\r\n this._keyBindings = options.keyBindings || []\r\n this._mergedKeyBindings = mergeKeyBindings(defaultConsoleKeybindings, this._keyBindings)\r\n this._keyBindingsMap = buildKeyBindingsMap(this._mergedKeyBindings, this._keyAliasMap)\r\n this._actionHandlers = this.buildActionHandlers()\r\n\r\n this._updateConsoleDimensions()\r\n this._scrollToBottom(true)\r\n\r\n this._entryListener = (logEntry: [Date, LogLevel, any[], CallerInfo | null]) => {\r\n this._handleNewLog(logEntry)\r\n }\r\n terminalConsoleCache.on(\"entry\", this._entryListener)\r\n\r\n if (env.SHOW_CONSOLE) {\r\n this.show()\r\n }\r\n }\r\n\r\n private buildActionHandlers(): Map<ConsoleAction, () => boolean> {\r\n return new Map([\r\n [\"scroll-up\", () => this.scrollUp()],\r\n [\"scroll-down\", () => this.scrollDown()],\r\n [\"scroll-to-top\", () => this.scrollToTop()],\r\n [\"scroll-to-bottom\", () => this.scrollToBottomAction()],\r\n [\"position-previous\", () => this.positionPrevious()],\r\n [\"position-next\", () => this.positionNext()],\r\n [\"size-increase\", () => this.sizeIncrease()],\r\n [\"size-decrease\", () => this.sizeDecrease()],\r\n [\"save-logs\", () => this.saveLogsAction()],\r\n [\"copy-selection\", () => this.triggerCopyAction()],\r\n ])\r\n }\r\n\r\n public activate(): void {\r\n terminalConsoleCache.activate()\r\n }\r\n\r\n public deactivate(): void {\r\n terminalConsoleCache.deactivate()\r\n }\r\n\r\n // Handles a single new log entry *while the console is visible*\r\n private _handleNewLog(logEntry: [Date, LogLevel, any[], CallerInfo | null]): void {\r\n if (!this.isVisible) return\r\n\r\n this._allLogEntries.push(logEntry)\r\n\r\n if (this._allLogEntries.length > this.options.maxStoredLogs) {\r\n this._allLogEntries.splice(0, this._allLogEntries.length - this.options.maxStoredLogs)\r\n }\r\n\r\n const newDisplayLines = this._processLogEntry(logEntry)\r\n this._displayLines.push(...newDisplayLines)\r\n\r\n if (this._displayLines.length > this.options.maxDisplayLines) {\r\n this._displayLines.splice(0, this._displayLines.length - this.options.maxDisplayLines)\r\n const linesRemoved = this._displayLines.length - this.options.maxDisplayLines\r\n this.scrollTopIndex = Math.max(0, this.scrollTopIndex - linesRemoved)\r\n }\r\n\r\n if (this.isScrolledToBottom) {\r\n this._scrollToBottom()\r\n }\r\n this.markNeedsRerender()\r\n }\r\n\r\n private _updateConsoleDimensions(termWidth?: number, termHeight?: number): void {\r\n const width = termWidth ?? this.renderer.width\r\n const height = termHeight ?? this.renderer.height\r\n const sizePercent = this.options.sizePercent / 100\r\n\r\n switch (this.options.position) {\r\n case ConsolePosition.TOP:\r\n this.consoleX = 0\r\n this.consoleY = 0\r\n this.consoleWidth = width\r\n this.consoleHeight = Math.max(1, Math.floor(height * sizePercent))\r\n break\r\n case ConsolePosition.BOTTOM:\r\n this.consoleHeight = Math.max(1, Math.floor(height * sizePercent))\r\n this.consoleWidth = width\r\n this.consoleX = 0\r\n this.consoleY = height - this.consoleHeight\r\n break\r\n case ConsolePosition.LEFT:\r\n this.consoleWidth = Math.max(1, Math.floor(width * sizePercent))\r\n this.consoleHeight = height\r\n this.consoleX = 0\r\n this.consoleY = 0\r\n break\r\n case ConsolePosition.RIGHT:\r\n this.consoleWidth = Math.max(1, Math.floor(width * sizePercent))\r\n this.consoleHeight = height\r\n this.consoleY = 0\r\n this.consoleX = width - this.consoleWidth\r\n break\r\n }\r\n this.currentLineIndex = Math.max(0, Math.min(this.currentLineIndex, this.consoleHeight - 1))\r\n }\r\n\r\n private handleKeyPress(event: KeyEvent): void {\r\n if (event.name === \"escape\") {\r\n this.blur()\r\n return\r\n }\r\n\r\n const bindingKey = getKeyBindingKey({\r\n name: event.name,\r\n ctrl: event.ctrl,\r\n shift: event.shift,\r\n meta: event.meta,\r\n super: event.super,\r\n action: \"scroll-up\" as ConsoleAction,\r\n })\r\n\r\n const action = this._keyBindingsMap.get(bindingKey)\r\n\r\n if (action) {\r\n const handler = this._actionHandlers.get(action)\r\n if (handler) {\r\n handler()\r\n return\r\n }\r\n }\r\n }\r\n\r\n private scrollUp(): boolean {\r\n const logAreaHeight = Math.max(1, this.consoleHeight - 1)\r\n\r\n if (this.currentLineIndex > 0) {\r\n this.currentLineIndex--\r\n this.markNeedsRerender()\r\n } else if (this.scrollTopIndex > 0) {\r\n this.scrollTopIndex--\r\n this.isScrolledToBottom = false\r\n this.markNeedsRerender()\r\n }\r\n return true\r\n }\r\n\r\n private scrollDown(): boolean {\r\n const displayLineCount = this._displayLines.length\r\n const logAreaHeight = Math.max(1, this.consoleHeight - 1)\r\n const maxScrollTop = Math.max(0, displayLineCount - logAreaHeight)\r\n const canCursorMoveDown =\r\n this.currentLineIndex < logAreaHeight - 1 && this.scrollTopIndex + this.currentLineIndex < displayLineCount - 1\r\n\r\n if (canCursorMoveDown) {\r\n this.currentLineIndex++\r\n this.markNeedsRerender()\r\n } else if (this.scrollTopIndex < maxScrollTop) {\r\n this.scrollTopIndex++\r\n this.isScrolledToBottom = this.scrollTopIndex === maxScrollTop\r\n this.markNeedsRerender()\r\n }\r\n return true\r\n }\r\n\r\n private scrollToTop(): boolean {\r\n if (this.scrollTopIndex > 0 || this.currentLineIndex > 0) {\r\n this.scrollTopIndex = 0\r\n this.currentLineIndex = 0\r\n this.isScrolledToBottom = this._displayLines.length <= Math.max(1, this.consoleHeight - 1)\r\n this.markNeedsRerender()\r\n }\r\n return true\r\n }\r\n\r\n private scrollToBottomAction(): boolean {\r\n const logAreaHeightForScroll = Math.max(1, this.consoleHeight - 1)\r\n const maxScrollPossible = Math.max(0, this._displayLines.length - logAreaHeightForScroll)\r\n if (this.scrollTopIndex < maxScrollPossible || !this.isScrolledToBottom) {\r\n this._scrollToBottom(true)\r\n this.markNeedsRerender()\r\n }\r\n return true\r\n }\r\n\r\n private positionPrevious(): boolean {\r\n const currentPositionIndex = this._positions.indexOf(this.options.position)\r\n const prevIndex = (currentPositionIndex - 1 + this._positions.length) % this._positions.length\r\n this.options.position = this._positions[prevIndex]\r\n this.resize(this.renderer.width, this.renderer.height)\r\n return true\r\n }\r\n\r\n private positionNext(): boolean {\r\n const currentPositionIndex = this._positions.indexOf(this.options.position)\r\n const nextIndex = (currentPositionIndex + 1) % this._positions.length\r\n this.options.position = this._positions[nextIndex]\r\n this.resize(this.renderer.width, this.renderer.height)\r\n return true\r\n }\r\n\r\n private sizeIncrease(): boolean {\r\n this.options.sizePercent = Math.min(100, this.options.sizePercent + 5)\r\n this.resize(this.renderer.width, this.renderer.height)\r\n return true\r\n }\r\n\r\n private sizeDecrease(): boolean {\r\n this.options.sizePercent = Math.max(10, this.options.sizePercent - 5)\r\n this.resize(this.renderer.width, this.renderer.height)\r\n return true\r\n }\r\n\r\n private saveLogsAction(): boolean {\r\n this.saveLogsToFile()\r\n return true\r\n }\r\n\r\n private triggerCopyAction(): boolean {\r\n this.triggerCopy()\r\n return true\r\n }\r\n\r\n private attachStdin(): void {\r\n if (this.isFocused) return\r\n this.renderer.keyInput.on(\"keypress\", this.keyHandler)\r\n this.isFocused = true\r\n }\r\n\r\n private detachStdin(): void {\r\n if (!this.isFocused) return\r\n this.renderer.keyInput.off(\"keypress\", this.keyHandler)\r\n this.isFocused = false\r\n }\r\n\r\n private formatTimestamp(date: Date): string {\r\n return new Intl.DateTimeFormat(\"en-US\", {\r\n hour: \"2-digit\",\r\n minute: \"2-digit\",\r\n second: \"2-digit\",\r\n hour12: false,\r\n }).format(date)\r\n }\r\n\r\n private formatArguments(args: any[]): string {\r\n return args\r\n .map((arg) => {\r\n if (arg instanceof Error) {\r\n const errorProps = arg\r\n return `Error: ${errorProps.message}\\n` + (errorProps.stack ? `${errorProps.stack}\\n` : \"\")\r\n }\r\n if (typeof arg === \"object\" && arg !== null) {\r\n try {\r\n return util.inspect(arg, { depth: 2 })\r\n } catch (e) {\r\n return String(arg)\r\n }\r\n }\r\n try {\r\n return util.inspect(arg, { depth: 2 })\r\n } catch (e) {\r\n return String(arg)\r\n }\r\n })\r\n .join(\" \")\r\n }\r\n\r\n public resize(width: number, height: number): void {\r\n this._updateConsoleDimensions(width, height)\r\n\r\n if (this.frameBuffer) {\r\n this.frameBuffer.resize(this.consoleWidth, this.consoleHeight)\r\n\r\n const displayLineCount = this._displayLines.length\r\n const logAreaHeight = Math.max(1, this.consoleHeight - 1)\r\n const maxScrollTop = Math.max(0, displayLineCount - logAreaHeight)\r\n this.scrollTopIndex = Math.min(this.scrollTopIndex, maxScrollTop)\r\n this.isScrolledToBottom = this.scrollTopIndex === maxScrollTop\r\n const visibleLineCount = Math.min(logAreaHeight, displayLineCount - this.scrollTopIndex)\r\n this.currentLineIndex = Math.max(0, Math.min(this.currentLineIndex, visibleLineCount - 1))\r\n\r\n if (this.isVisible) {\r\n this.markNeedsRerender()\r\n }\r\n }\r\n }\r\n\r\n public clear(): void {\r\n terminalConsoleCache.clearConsole()\r\n this._allLogEntries = []\r\n this._displayLines = []\r\n this.markNeedsRerender()\r\n }\r\n\r\n public toggle(): void {\r\n if (this.isVisible) {\r\n if (this.isFocused) {\r\n this.hide()\r\n } else {\r\n this.focus()\r\n }\r\n } else {\r\n this.show()\r\n }\r\n if (!this.renderer.isRunning) {\r\n this.renderer.requestRender()\r\n }\r\n }\r\n\r\n public focus(): void {\r\n this.attachStdin()\r\n this._scrollToBottom(true)\r\n this.markNeedsRerender()\r\n }\r\n\r\n public blur(): void {\r\n this.detachStdin()\r\n this.markNeedsRerender()\r\n }\r\n\r\n public show(): void {\r\n if (!this.isVisible) {\r\n this.isVisible = true\r\n this._processCachedLogs()\r\n terminalConsoleCache.setCachingEnabled(false)\r\n\r\n if (!this.frameBuffer) {\r\n this.frameBuffer = OptimizedBuffer.create(this.consoleWidth, this.consoleHeight, this.renderer.widthMethod, {\r\n respectAlpha: this.backgroundColor.a < 1,\r\n id: \"console framebuffer\",\r\n })\r\n }\r\n const logCount = terminalConsoleCache.cachedLogs.length\r\n const visibleLogLines = Math.min(this.consoleHeight, logCount)\r\n this.currentLineIndex = Math.max(0, visibleLogLines - 1)\r\n this.scrollTopIndex = 0\r\n this._scrollToBottom(true)\r\n\r\n this.focus()\r\n this.markNeedsRerender()\r\n }\r\n }\r\n\r\n public hide(): void {\r\n if (this.isVisible) {\r\n this.isVisible = false\r\n this.blur()\r\n terminalConsoleCache.setCachingEnabled(true)\r\n }\r\n }\r\n\r\n public destroy(): void {\r\n this.stopAutoScroll()\r\n this.hide()\r\n this.deactivate()\r\n terminalConsoleCache.off(\"entry\", this._entryListener)\r\n }\r\n\r\n public getCachedLogs(): string {\r\n return terminalConsoleCache.cachedLogs\r\n .map((logEntry) => logEntry[0].toISOString() + \" \" + logEntry.slice(1).join(\" \"))\r\n .join(\"\\n\")\r\n }\r\n\r\n private updateFrameBuffer(): void {\r\n if (!this.frameBuffer) return\r\n\r\n this.frameBuffer.clear(this.backgroundColor)\r\n\r\n const displayLines = this._displayLines\r\n const displayLineCount = displayLines.length\r\n const logAreaHeight = Math.max(1, this.consoleHeight - 1)\r\n\r\n // --- Draw Title Bar ---\r\n this.frameBuffer.fillRect(0, 0, this.consoleWidth, 1, this._rgbaTitleBar)\r\n const dynamicTitle = `${this._title}${this.isFocused ? \" (Focused)\" : \"\"}`\r\n const titleX = Math.max(0, Math.floor((this.consoleWidth - dynamicTitle.length) / 2))\r\n this.frameBuffer.drawText(dynamicTitle, titleX, 0, this._rgbaTitleBarText, this._rgbaTitleBar)\r\n\r\n // --- Draw [Copy] Button ---\r\n const copyLabel = this.getCopyButtonLabel()\r\n const copyButtonX = this.consoleWidth - copyLabel.length - 1\r\n if (copyButtonX >= 0) {\r\n const copyButtonEnabled = this.hasSelection()\r\n const disabledColor = RGBA.fromInts(100, 100, 100, 255)\r\n const copyColor = copyButtonEnabled ? this._rgbaCopyButton : disabledColor\r\n this.frameBuffer.drawText(copyLabel, copyButtonX, 0, copyColor, this._rgbaTitleBar)\r\n this._copyButtonBounds = { x: copyButtonX, y: 0, width: copyLabel.length, height: 1 }\r\n } else {\r\n this._copyButtonBounds = { x: -1, y: -1, width: 0, height: 0 }\r\n }\r\n\r\n const startIndex = this.scrollTopIndex\r\n const endIndex = Math.min(startIndex + logAreaHeight, displayLineCount)\r\n const visibleDisplayLines = displayLines.slice(startIndex, endIndex)\r\n\r\n let lineY = 1\r\n for (let i = 0; i < visibleDisplayLines.length; i++) {\r\n if (lineY >= this.consoleHeight) break\r\n\r\n const displayLine = visibleDisplayLines[i]\r\n const absoluteLineIndex = startIndex + i\r\n\r\n let levelColor = this._rgbaDefault\r\n switch (displayLine.level) {\r\n case LogLevel.INFO:\r\n levelColor = this._rgbaInfo\r\n break\r\n case LogLevel.WARN:\r\n levelColor = this._rgbaWarn\r\n break\r\n case LogLevel.ERROR:\r\n levelColor = this._rgbaError\r\n break\r\n case LogLevel.DEBUG:\r\n levelColor = this._rgbaDebug\r\n break\r\n }\r\n\r\n const linePrefix = displayLine.indent ? \" \".repeat(INDENT_WIDTH) : \"\"\r\n const textToDraw = displayLine.text\r\n const textAvailableWidth = this.consoleWidth - 1 - (displayLine.indent ? INDENT_WIDTH : 0)\r\n const showCursor = this.isFocused && lineY - 1 === this.currentLineIndex\r\n\r\n if (showCursor) {\r\n this.frameBuffer.drawText(\">\", 0, lineY, this._rgbaCursor, this.backgroundColor)\r\n } else {\r\n this.frameBuffer.drawText(\" \", 0, lineY, this._rgbaDefault, this.backgroundColor)\r\n }\r\n\r\n const fullText = `${linePrefix}${textToDraw.substring(0, textAvailableWidth)}`\r\n const selectionRange = this.getLineSelectionRange(absoluteLineIndex)\r\n\r\n if (selectionRange) {\r\n const adjustedStart = Math.max(0, selectionRange.start)\r\n const adjustedEnd = Math.min(fullText.length, selectionRange.end)\r\n\r\n if (adjustedStart > 0) {\r\n this.frameBuffer.drawText(fullText.substring(0, adjustedStart), 1, lineY, levelColor)\r\n }\r\n\r\n if (adjustedStart < adjustedEnd) {\r\n this.frameBuffer.fillRect(1 + adjustedStart, lineY, adjustedEnd - adjustedStart, 1, this._rgbaSelection)\r\n this.frameBuffer.drawText(\r\n fullText.substring(adjustedStart, adjustedEnd),\r\n 1 + adjustedStart,\r\n lineY,\r\n levelColor,\r\n this._rgbaSelection,\r\n )\r\n }\r\n\r\n if (adjustedEnd < fullText.length) {\r\n this.frameBuffer.drawText(fullText.substring(adjustedEnd), 1 + adjustedEnd, lineY, levelColor)\r\n }\r\n } else {\r\n this.frameBuffer.drawText(fullText, 1, lineY, levelColor)\r\n }\r\n\r\n lineY++\r\n }\r\n }\r\n\r\n public renderToBuffer(buffer: OptimizedBuffer): void {\r\n if (!this.isVisible || !this.frameBuffer) return\r\n\r\n if (this._needsFrameBufferUpdate) {\r\n this.updateFrameBuffer()\r\n this._needsFrameBufferUpdate = false\r\n }\r\n\r\n buffer.drawFrameBuffer(this.consoleX, this.consoleY, this.frameBuffer)\r\n }\r\n\r\n public setDebugMode(enabled: boolean): void {\r\n this._debugModeEnabled = enabled\r\n terminalConsoleCache.setCollectCallerInfo(enabled)\r\n if (this.isVisible) {\r\n this.markNeedsRerender()\r\n }\r\n }\r\n\r\n public toggleDebugMode(): void {\r\n this.setDebugMode(!this._debugModeEnabled)\r\n }\r\n\r\n public set keyBindings(bindings: ConsoleKeyBinding[]) {\r\n this._keyBindings = bindings\r\n this._mergedKeyBindings = mergeKeyBindings(defaultConsoleKeybindings, bindings)\r\n this._keyBindingsMap = buildKeyBindingsMap(this._mergedKeyBindings, this._keyAliasMap)\r\n this.markNeedsRerender()\r\n }\r\n\r\n public set keyAliasMap(aliases: KeyAliasMap) {\r\n this._keyAliasMap = mergeKeyAliases(defaultKeyAliases, aliases)\r\n this._mergedKeyBindings = mergeKeyBindings(defaultConsoleKeybindings, this._keyBindings)\r\n this._keyBindingsMap = buildKeyBindingsMap(this._mergedKeyBindings, this._keyAliasMap)\r\n this.markNeedsRerender()\r\n }\r\n\r\n public set onCopySelection(callback: ((text: string) => void) | undefined) {\r\n this.options.onCopySelection = callback\r\n }\r\n\r\n public get onCopySelection(): ((text: string) => void) | undefined {\r\n return this.options.onCopySelection\r\n }\r\n\r\n private _scrollToBottom(forceCursorToLastLine: boolean = false): void {\r\n const displayLineCount = this._displayLines.length\r\n const logAreaHeight = Math.max(1, this.consoleHeight - 1)\r\n const maxScrollTop = Math.max(0, displayLineCount - logAreaHeight)\r\n this.scrollTopIndex = maxScrollTop\r\n this.isScrolledToBottom = true\r\n\r\n const visibleLineCount = Math.min(logAreaHeight, displayLineCount - this.scrollTopIndex)\r\n if (forceCursorToLastLine || this.currentLineIndex >= visibleLineCount) {\r\n this.currentLineIndex = Math.max(0, visibleLineCount - 1)\r\n }\r\n }\r\n\r\n private _processLogEntry(logEntry: [Date, LogLevel, any[], CallerInfo | null]): DisplayLine[] {\r\n const [date, level, args, callerInfo] = logEntry\r\n const displayLines: DisplayLine[] = []\r\n\r\n const timestamp = this.formatTimestamp(date)\r\n const callerSource = callerInfo ? `${callerInfo.fileName}:${callerInfo.lineNumber}` : \"unknown\"\r\n const prefix = `[${timestamp}] [${level}]` + (this._debugModeEnabled ? ` [${callerSource}]` : \"\") + \" \"\r\n\r\n const formattedArgs = this.formatArguments(args)\r\n const initialLines = formattedArgs.split(\"\\n\")\r\n\r\n for (let i = 0; i < initialLines.length; i++) {\r\n const lineText = initialLines[i]\r\n const isFirstLineOfEntry = i === 0\r\n const availableWidth = this.consoleWidth - 1 - (isFirstLineOfEntry ? 0 : INDENT_WIDTH)\r\n const linePrefix = isFirstLineOfEntry ? prefix : \" \".repeat(INDENT_WIDTH)\r\n const textToWrap = isFirstLineOfEntry ? linePrefix + lineText : lineText\r\n\r\n let currentPos = 0\r\n while (currentPos < textToWrap.length || (isFirstLineOfEntry && currentPos === 0 && textToWrap.length === 0)) {\r\n const segment = textToWrap.substring(currentPos, currentPos + availableWidth)\r\n const isFirstSegmentOfLine = currentPos === 0\r\n\r\n displayLines.push({\r\n text: isFirstSegmentOfLine && !isFirstLineOfEntry ? linePrefix + segment : segment,\r\n level: level,\r\n indent: !isFirstLineOfEntry || !isFirstSegmentOfLine,\r\n })\r\n\r\n currentPos += availableWidth\r\n if (isFirstLineOfEntry && currentPos === 0 && textToWrap.length === 0) break\r\n }\r\n }\r\n\r\n return displayLines\r\n }\r\n\r\n private _processCachedLogs(): void {\r\n const logsToProcess = [...terminalConsoleCache.cachedLogs]\r\n terminalConsoleCache.clearConsole()\r\n\r\n this._allLogEntries.push(...logsToProcess)\r\n\r\n if (this._allLogEntries.length > this.options.maxStoredLogs) {\r\n this._allLogEntries.splice(0, this._allLogEntries.length - this.options.maxStoredLogs)\r\n }\r\n\r\n for (const logEntry of logsToProcess) {\r\n const processed = this._processLogEntry(logEntry)\r\n this._displayLines.push(...processed)\r\n }\r\n\r\n if (this._displayLines.length > this.options.maxDisplayLines) {\r\n this._displayLines.splice(0, this._displayLines.length - this.options.maxDisplayLines)\r\n }\r\n }\r\n\r\n private hasSelection(): boolean {\r\n if (this._selectionStart === null || this._selectionEnd === null) return false\r\n\r\n return this._selectionStart.line !== this._selectionEnd.line || this._selectionStart.col !== this._selectionEnd.col\r\n }\r\n\r\n private normalizeSelection(): ConsoleSelection | null {\r\n if (!this._selectionStart || !this._selectionEnd) return null\r\n\r\n const start = this._selectionStart\r\n const end = this._selectionEnd\r\n\r\n const startBeforeEnd = start.line < end.line || (start.line === end.line && start.col <= end.col)\r\n\r\n if (startBeforeEnd) {\r\n return {\r\n startLine: start.line,\r\n startCol: start.col,\r\n endLine: end.line,\r\n endCol: end.col,\r\n }\r\n } else {\r\n return {\r\n startLine: end.line,\r\n startCol: end.col,\r\n endLine: start.line,\r\n endCol: start.col,\r\n }\r\n }\r\n }\r\n\r\n private getSelectedText(): string {\r\n const selection = this.normalizeSelection()\r\n if (!selection) return \"\"\r\n\r\n const lines: string[] = []\r\n for (let i = selection.startLine; i <= selection.endLine; i++) {\r\n if (i < 0 || i >= this._displayLines.length) continue\r\n const line = this._displayLines[i]\r\n const linePrefix = line.indent ? \" \".repeat(INDENT_WIDTH) : \"\"\r\n const textAvailableWidth = this.consoleWidth - 1 - (line.indent ? INDENT_WIDTH : 0)\r\n const fullText = linePrefix + line.text.substring(0, textAvailableWidth)\r\n let text = fullText\r\n\r\n if (i === selection.startLine && i === selection.endLine) {\r\n text = fullText.substring(selection.startCol, selection.endCol)\r\n } else if (i === selection.startLine) {\r\n text = fullText.substring(selection.startCol)\r\n } else if (i === selection.endLine) {\r\n text = fullText.substring(0, selection.endCol)\r\n }\r\n\r\n lines.push(text)\r\n }\r\n\r\n return lines.join(\"\\n\")\r\n }\r\n\r\n private clearSelection(): void {\r\n this._selectionStart = null\r\n this._selectionEnd = null\r\n this._isDragging = false\r\n this.stopAutoScroll()\r\n }\r\n\r\n private stopAutoScroll(): void {\r\n if (this._autoScrollInterval !== null) {\r\n clearInterval(this._autoScrollInterval)\r\n this._autoScrollInterval = null\r\n }\r\n }\r\n\r\n private startAutoScroll(direction: \"up\" | \"down\"): void {\r\n this.stopAutoScroll()\r\n this._autoScrollInterval = setInterval(() => {\r\n if (direction === \"up\") {\r\n if (this.scrollTopIndex > 0) {\r\n this.scrollTopIndex--\r\n this.isScrolledToBottom = false\r\n if (this._selectionEnd) {\r\n this._selectionEnd = {\r\n line: this.scrollTopIndex,\r\n col: this._selectionEnd.col,\r\n }\r\n }\r\n this.markNeedsRerender()\r\n } else {\r\n this.stopAutoScroll()\r\n }\r\n } else {\r\n const displayLineCount = this._displayLines.length\r\n const logAreaHeight = Math.max(1, this.consoleHeight - 1)\r\n const maxScrollTop = Math.max(0, displayLineCount - logAreaHeight)\r\n if (this.scrollTopIndex < maxScrollTop) {\r\n this.scrollTopIndex++\r\n this.isScrolledToBottom = this.scrollTopIndex === maxScrollTop\r\n if (this._selectionEnd) {\r\n const maxLine = this.scrollTopIndex + logAreaHeight - 1\r\n this._selectionEnd = {\r\n line: Math.min(maxLine, displayLineCount - 1),\r\n col: this._selectionEnd.col,\r\n }\r\n }\r\n this.markNeedsRerender()\r\n } else {\r\n this.stopAutoScroll()\r\n }\r\n }\r\n }, 50) as any\r\n }\r\n\r\n private triggerCopy(): void {\r\n if (!this.hasSelection()) return\r\n const text = this.getSelectedText()\r\n if (text && this.options.onCopySelection) {\r\n try {\r\n this.options.onCopySelection(text)\r\n } catch {}\r\n this.clearSelection()\r\n this.markNeedsRerender()\r\n }\r\n }\r\n\r\n private getLineSelectionRange(lineIndex: number): { start: number; end: number } | null {\r\n const selection = this.normalizeSelection()\r\n if (!selection) return null\r\n\r\n if (lineIndex < selection.startLine || lineIndex > selection.endLine) {\r\n return null\r\n }\r\n\r\n const line = this._displayLines[lineIndex]\r\n if (!line) return null\r\n\r\n const linePrefix = line.indent ? \" \".repeat(INDENT_WIDTH) : \"\"\r\n const textAvailableWidth = this.consoleWidth - 1 - (line.indent ? INDENT_WIDTH : 0)\r\n const fullTextLength = linePrefix.length + Math.min(line.text.length, textAvailableWidth)\r\n\r\n let start = 0\r\n let end = fullTextLength\r\n\r\n if (lineIndex === selection.startLine) {\r\n start = Math.max(0, selection.startCol)\r\n }\r\n if (lineIndex === selection.endLine) {\r\n end = Math.min(fullTextLength, selection.endCol)\r\n }\r\n\r\n if (start >= end) return null\r\n return { start, end }\r\n }\r\n\r\n public handleMouse(event: MouseEvent): boolean {\r\n if (!this.isVisible) return false\r\n\r\n const localX = event.x - this.consoleX\r\n const localY = event.y - this.consoleY\r\n\r\n if (localX < 0 || localX >= this.consoleWidth || localY < 0 || localY >= this.consoleHeight) {\r\n return false\r\n }\r\n\r\n if (event.type === \"scroll\" && event.scroll) {\r\n if (event.scroll.direction === \"up\") {\r\n this.scrollUp()\r\n } else if (event.scroll.direction === \"down\") {\r\n this.scrollDown()\r\n }\r\n return true\r\n }\r\n\r\n if (localY === 0) {\r\n if (\r\n event.type === \"down\" &&\r\n event.button === 0 &&\r\n localX >= this._copyButtonBounds.x &&\r\n localX < this._copyButtonBounds.x + this._copyButtonBounds.width\r\n ) {\r\n this.triggerCopy()\r\n return true\r\n }\r\n return true\r\n }\r\n\r\n const lineIndex = this.scrollTopIndex + (localY - 1)\r\n const colIndex = Math.max(0, localX - 1)\r\n\r\n if (event.type === \"down\" && event.button === 0) {\r\n this.clearSelection()\r\n this._selectionStart = { line: lineIndex, col: colIndex }\r\n this._selectionEnd = { line: lineIndex, col: colIndex }\r\n this._isDragging = true\r\n this.markNeedsRerender()\r\n return true\r\n }\r\n\r\n if (event.type === \"drag\" && this._isDragging) {\r\n this._selectionEnd = { line: lineIndex, col: colIndex }\r\n\r\n // Check if drag is at the edge and trigger auto-scroll\r\n const logAreaHeight = Math.max(1, this.consoleHeight - 1)\r\n const relativeY = localY - 1 // Subtract 1 for title bar\r\n\r\n if (relativeY <= 0) {\r\n // Dragging at top edge\r\n this.startAutoScroll(\"up\")\r\n } else if (relativeY >= logAreaHeight - 1) {\r\n // Dragging at bottom edge\r\n this.startAutoScroll(\"down\")\r\n } else {\r\n // Not at edge, stop auto-scrolling\r\n this.stopAutoScroll()\r\n }\r\n\r\n this.markNeedsRerender()\r\n return true\r\n }\r\n\r\n if (event.type === \"up\") {\r\n if (this._isDragging) {\r\n this._selectionEnd = { line: lineIndex, col: colIndex }\r\n this._isDragging = false\r\n this.stopAutoScroll()\r\n this.markNeedsRerender()\r\n }\r\n return true\r\n }\r\n\r\n return true\r\n }\r\n\r\n public get visible(): boolean {\r\n return this.isVisible\r\n }\r\n\r\n public get bounds(): { x: number; y: number; width: number; height: number } {\r\n return {\r\n x: this.consoleX,\r\n y: this.consoleY,\r\n width: this.consoleWidth,\r\n height: this.consoleHeight,\r\n }\r\n }\r\n\r\n private saveLogsToFile(): void {\r\n try {\r\n const timestamp = Date.now()\r\n const filename = `_console_${timestamp}.log`\r\n const filepath = path.join(process.cwd(), filename)\r\n\r\n const allLogEntries = [...this._allLogEntries, ...terminalConsoleCache.cachedLogs]\r\n\r\n const logLines: string[] = []\r\n\r\n for (const [date, level, args, callerInfo] of allLogEntries) {\r\n const timestampStr = this.formatTimestamp(date)\r\n const callerSource = callerInfo ? `${callerInfo.fileName}:${callerInfo.lineNumber}` : \"unknown\"\r\n const prefix = `[${timestampStr}] [${level}]` + (this._debugModeEnabled ? ` [${callerSource}]` : \"\") + \" \"\r\n const formattedArgs = this.formatArguments(args)\r\n logLines.push(prefix + formattedArgs)\r\n }\r\n\r\n const content = logLines.join(\"\\n\")\r\n fs.writeFileSync(filepath, content, \"utf8\")\r\n\r\n console.info(`Console logs saved to: ${filename}`)\r\n } catch (error) {\r\n console.error(`Failed to save console logs:`, error)\r\n }\r\n }\r\n}\r\n",
|
|
@@ -51,11 +51,11 @@
|
|
|
51
51
|
"export interface KeyBinding<Action extends string = string> {\r\n name: string\r\n ctrl?: boolean\r\n shift?: boolean\r\n meta?: boolean\r\n super?: boolean\r\n action: Action\r\n}\r\n\r\nexport type KeyAliasMap = Record<string, string>\r\n\r\nexport const defaultKeyAliases: KeyAliasMap = {\r\n enter: \"return\",\r\n esc: \"escape\",\r\n}\r\n\r\nexport function mergeKeyAliases(defaults: KeyAliasMap, custom: KeyAliasMap): KeyAliasMap {\r\n return { ...defaults, ...custom }\r\n}\r\n\r\nexport function mergeKeyBindings<Action extends string>(\r\n defaults: KeyBinding<Action>[],\r\n custom: KeyBinding<Action>[],\r\n): KeyBinding<Action>[] {\r\n const map = new Map<string, KeyBinding<Action>>()\r\n for (const binding of defaults) {\r\n const key = getKeyBindingKey(binding)\r\n map.set(key, binding)\r\n }\r\n for (const binding of custom) {\r\n const key = getKeyBindingKey(binding)\r\n map.set(key, binding)\r\n }\r\n return Array.from(map.values())\r\n}\r\n\r\nexport function getKeyBindingKey<Action extends string>(binding: KeyBinding<Action>): string {\r\n return `${binding.name}:${binding.ctrl ? 1 : 0}:${binding.shift ? 1 : 0}:${binding.meta ? 1 : 0}:${binding.super ? 1 : 0}`\r\n}\r\n\r\nexport function buildKeyBindingsMap<Action extends string>(\r\n bindings: KeyBinding<Action>[],\r\n aliasMap?: KeyAliasMap,\r\n): Map<string, Action> {\r\n const map = new Map<string, Action>()\r\n const aliases = aliasMap || {}\r\n\r\n for (const binding of bindings) {\r\n const key = getKeyBindingKey(binding)\r\n map.set(key, binding.action)\r\n }\r\n\r\n // Add aliased versions of all bindings\r\n for (const binding of bindings) {\r\n const normalizedName = aliases[binding.name] || binding.name\r\n if (normalizedName !== binding.name) {\r\n // Create aliased key with normalized name\r\n const aliasedKey = getKeyBindingKey({ ...binding, name: normalizedName })\r\n map.set(aliasedKey, binding.action)\r\n }\r\n }\r\n\r\n return map\r\n}\r\n\r\n/**\r\n * Converts a key binding to a human-readable string representation\r\n * @param binding The key binding to stringify\r\n * @returns A string like \"ctrl+shift+y\" or just \"escape\"\r\n * @example\r\n * keyBindingToString({ name: \"y\", ctrl: true, shift: true }) // \"ctrl+shift+y\"\r\n * keyBindingToString({ name: \"escape\" }) // \"escape\"\r\n * keyBindingToString({ name: \"c\", ctrl: true }) // \"ctrl+c\"\r\n * keyBindingToString({ name: \"s\", super: true }) // \"super+s\"\r\n */\r\nexport function keyBindingToString<Action extends string>(binding: KeyBinding<Action>): string {\r\n const parts: string[] = []\r\n\r\n if (binding.ctrl) parts.push(\"ctrl\")\r\n if (binding.shift) parts.push(\"shift\")\r\n if (binding.meta) parts.push(\"meta\")\r\n if (binding.super) parts.push(\"super\")\r\n\r\n parts.push(binding.name)\r\n\r\n return parts.join(\"+\")\r\n}\r\n",
|
|
52
52
|
"export const ANSI = {\r\n switchToAlternateScreen: \"\\x1b[?1049h\",\r\n switchToMainScreen: \"\\x1b[?1049l\",\r\n reset: \"\\x1b[0m\",\r\n\r\n scrollDown: (lines: number) => `\\x1b[${lines}T`,\r\n scrollUp: (lines: number) => `\\x1b[${lines}S`,\r\n\r\n moveCursor: (row: number, col: number) => `\\x1b[${row};${col}H`,\r\n moveCursorAndClear: (row: number, col: number) => `\\x1b[${row};${col}H\\x1b[J`,\r\n\r\n setRgbBackground: (r: number, g: number, b: number) => `\\x1b[48;2;${r};${g};${b}m`,\r\n resetBackground: \"\\x1b[49m\",\r\n\r\n // Bracketed paste mode\r\n bracketedPasteStart: \"\\u001b[200~\",\r\n bracketedPasteEnd: \"\\u001b[201~\",\r\n}\r\n",
|
|
53
53
|
"// 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\"\n\ntype ClipboardCommandResult = {\n success: boolean\n output: string\n}\n\nexport type ClipboardCommandRunner = (command: string[], input?: string) => ClipboardCommandResult\n\nexport enum ClipboardTarget {\n Clipboard = 0,\n Primary = 1,\n Secondary = 2,\n Query = 3,\r\n}\r\n\r\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\nfunction runClipboardCommand(command: string[], input?: string): ClipboardCommandResult {\n try {\n const stdin = input === undefined ? undefined : new TextEncoder().encode(input)\n const subprocess = Bun.spawnSync({\n cmd: command,\n stdin,\n stdout: \"pipe\",\n stderr: \"pipe\",\n })\n\n const ok = subprocess.exitCode === 0 && subprocess.signalCode === null\n const output = ok ? new TextDecoder().decode(subprocess.stdout) : \"\"\n return { success: ok, output }\n } catch {\n return { success: false, output: \"\" }\n }\n}\n\nexport function getSystemClipboardWriteCommands(platform: NodeJS.Platform = process.platform): string[][] {\n if (platform === \"win32\") {\n return [\n [\"powershell\", \"-NoProfile\", \"-NonInteractive\", \"-Command\", \"Set-Clipboard\"],\n [\"pwsh\", \"-NoProfile\", \"-NonInteractive\", \"-Command\", \"Set-Clipboard\"],\n [\"clip.exe\"],\n [\"clip\"],\n ]\n }\n\n if (platform === \"darwin\") {\n return [[\"pbcopy\"]]\n }\n\n return [\n [\"wl-copy\"],\n [\"xclip\", \"-selection\", \"clipboard\"],\n [\"xsel\", \"--clipboard\", \"--input\"],\n ]\n}\n\nexport function getSystemClipboardReadCommands(platform: NodeJS.Platform = process.platform): string[][] {\n if (platform === \"win32\") {\n return [\n [\"powershell\", \"-NoProfile\", \"-NonInteractive\", \"-Command\", \"Get-Clipboard -Raw\"],\n [\"pwsh\", \"-NoProfile\", \"-NonInteractive\", \"-Command\", \"Get-Clipboard -Raw\"],\n ]\n }\n\n if (platform === \"darwin\") {\n return [[\"pbpaste\"]]\n }\n\n return [\n [\"wl-paste\", \"--no-newline\"],\n [\"xclip\", \"-selection\", \"clipboard\", \"-out\"],\n [\"xsel\", \"--clipboard\", \"--output\"],\n ]\n}\n\nexport class Clipboard {\n private lib: RenderLib\n private rendererPtr: Pointer\n private commandRunner: ClipboardCommandRunner\n\n constructor(lib: RenderLib, rendererPtr: Pointer, commandRunner: ClipboardCommandRunner = runClipboardCommand) {\n this.lib = lib\n this.rendererPtr = rendererPtr\n this.commandRunner = commandRunner\n }\n\n public copyToClipboardOSC52(text: string, target: ClipboardTarget = ClipboardTarget.Clipboard): boolean {\n if (!this.isOsc52Supported()) {\n return false\n }\r\n const payload = encodeOsc52Payload(text, this.lib.encoder)\r\n return this.lib.copyToClipboardOSC52(this.rendererPtr, target, payload)\r\n }\r\n\r\n public clearClipboardOSC52(target: ClipboardTarget = ClipboardTarget.Clipboard): boolean {\r\n if (!this.isOsc52Supported()) {\r\n return false\r\n }\r\n return this.lib.clearClipboardOSC52(this.rendererPtr, target)\r\n }\r\n\r\n public isOsc52Supported(): boolean {\n const caps = this.lib.getTerminalCapabilities(this.rendererPtr)\n return Boolean(caps?.osc52)\n }\n\n public copyToSystemClipboard(text: string, platform: NodeJS.Platform = process.platform): boolean {\n const commands = getSystemClipboardWriteCommands(platform)\n for (const command of commands) {\n const result = this.commandRunner(command, text)\n if (result.success) {\n return true\n }\n }\n return false\n }\n\n public readFromSystemClipboard(platform: NodeJS.Platform = process.platform): string | null {\n const commands = getSystemClipboardReadCommands(platform)\n for (const command of commands) {\n const result = this.commandRunner(command)\n if (result.success) {\n return result.output\n }\n }\n return null\n }\n\n public copyToBestAvailable(text: string, target: ClipboardTarget = ClipboardTarget.Clipboard): boolean {\n return this.copyToClipboardOSC52(text, target) || this.copyToSystemClipboard(text)\n }\n}\n",
|
|
54
|
-
"import { ANSI } from \"./ansi\"\r\nimport { Renderable, RootRenderable } from \"./Renderable\"\r\nimport {\r\n DebugOverlayCorner,\r\n type CursorStyleOptions,\r\n type MousePointerStyle,\r\n type RenderContext,\r\n type ThemeMode,\r\n type ViewportBounds,\r\n type WidthMethod,\r\n} from \"./types\"\r\nimport { RGBA, parseColor, type ColorInput } from \"./lib/RGBA\"\r\nimport type { Pointer } from \"bun:ffi\"\r\nimport { OptimizedBuffer } from \"./buffer\"\r\nimport { resolveRenderLib, type RenderLib } from \"./zig\"\r\nimport { TerminalConsole, type ConsoleOptions, capture } from \"./console\"\r\nimport { MouseParser, type MouseEventType, type RawMouseEvent, type ScrollInfo } from \"./lib/parse.mouse\"\r\nimport { Selection } from \"./lib/selection\"\r\nimport { Clipboard, type ClipboardTarget } from \"./lib/clipboard\"\r\nimport { EventEmitter } from \"events\"\r\nimport { destroySingleton, hasSingleton, singleton } from \"./lib/singleton\"\r\nimport { getObjectsInViewport } from \"./lib/objects-in-viewport\"\r\nimport { KeyHandler, InternalKeyHandler } from \"./lib/KeyHandler\"\r\nimport { StdinBuffer } from \"./lib/stdin-buffer\"\r\nimport { env, registerEnvVar } from \"./lib/env\"\r\nimport { getTreeSitterClient } from \"./lib/tree-sitter\"\r\nimport {\r\n createTerminalPalette,\r\n type TerminalPaletteDetector,\r\n type TerminalColors,\r\n type GetPaletteOptions,\r\n} from \"./lib/terminal-palette\"\r\nimport {\r\n isCapabilityResponse,\r\n isPixelResolutionResponse,\r\n parsePixelResolution,\r\n} from \"./lib/terminal-capability-detection\"\r\n\r\nregisterEnvVar({\r\n name: \"CASCADE_DUMP_CAPTURES\",\r\n description: \"Dump captured output when the renderer exits.\",\r\n type: \"boolean\",\r\n default: false,\r\n})\r\n\r\nregisterEnvVar({\r\n name: \"CASCADE_NO_NATIVE_RENDER\",\r\n description: \"Disable native rendering. This will not actually output ansi and is useful for debugging.\",\r\n type: \"boolean\",\r\n default: false,\r\n})\r\n\r\nregisterEnvVar({\r\n name: \"CASCADE_USE_ALTERNATE_SCREEN\",\r\n description: \"Whether to use the console. Will not capture console output if set to false.\",\r\n type: \"boolean\",\r\n default: true,\r\n})\r\n\r\nregisterEnvVar({\r\n name: \"CASCADE_OVERRIDE_STDOUT\",\r\n description: \"Override the stdout stream. This is useful for debugging.\",\r\n type: \"boolean\",\r\n default: true,\r\n})\r\n\r\nregisterEnvVar({\r\n name: \"CASCADE_DEBUG\",\r\n description: \"Enable debug mode to capture all raw input for debugging purposes.\",\r\n type: \"boolean\",\r\n default: false,\r\n})\r\n\r\nregisterEnvVar({\r\n name: \"CASCADE_SHOW_STATS\",\r\n description: \"Show the debug overlay at startup.\",\r\n type: \"boolean\",\r\n default: false,\r\n})\r\n\r\nexport interface CliRendererConfig {\r\n stdin?: NodeJS.ReadStream\r\n stdout?: NodeJS.WriteStream\r\n remote?: boolean\r\n testing?: boolean\r\n exitOnCtrlC?: boolean\r\n exitSignals?: NodeJS.Signals[]\r\n forwardEnvKeys?: string[]\r\n debounceDelay?: number\r\n targetFps?: number\r\n maxFps?: number\r\n memorySnapshotInterval?: number\r\n useThread?: boolean\r\n gatherStats?: boolean\r\n maxStatSamples?: number\r\n consoleOptions?: ConsoleOptions\r\n postProcessFns?: ((buffer: OptimizedBuffer, deltaTime: number) => void)[]\r\n enableMouseMovement?: boolean\r\n useMouse?: boolean\r\n autoFocus?: boolean\r\n useAlternateScreen?: boolean\r\n useConsole?: boolean\r\n experimental_splitHeight?: number\r\n useKittyKeyboard?: KittyKeyboardOptions | null\r\n backgroundColor?: ColorInput\r\n openConsoleOnError?: boolean\r\n prependInputHandlers?: ((sequence: string) => boolean)[]\r\n onDestroy?: () => void\r\n}\r\n\r\nexport type PixelResolution = {\r\n width: number\r\n height: number\r\n}\r\n\r\nconst DEFAULT_FORWARDED_ENV_KEYS = [\r\n \"TMUX\",\r\n \"TERM\",\r\n \"CASCADE_GRAPHICS\",\r\n \"TERM_PROGRAM\",\r\n \"TERM_PROGRAM_VERSION\",\r\n \"ALACRITTY_SOCKET\",\r\n \"ALACRITTY_LOG\",\r\n \"COLORTERM\",\r\n \"TERMUX_VERSION\",\r\n \"VHS_RECORD\",\r\n \"CASCADE_FORCE_WCWIDTH\",\r\n \"CASCADE_FORCE_UNICODE\",\r\n \"CASCADE_FORCE_NOZWJ\",\r\n \"CASCADE_FORCE_EXPLICIT_WIDTH\",\r\n \"WT_SESSION\",\r\n \"STY\",\r\n] as const\r\n\r\n// Kitty keyboard protocol flags\r\n// See: https://sw.kovidgoyal.net/kitty/keyboard-protocol/\r\nconst KITTY_FLAG_DISAMBIGUATE = 0b1 // Report disambiguated escape codes\r\nconst KITTY_FLAG_EVENT_TYPES = 0b10 // Report event types (press/repeat/release)\r\nconst KITTY_FLAG_ALTERNATE_KEYS = 0b100 // Report alternate keys (e.g., numpad vs regular)\r\nconst KITTY_FLAG_ALL_KEYS_AS_ESCAPES = 0b1000 // Report all keys as escape codes\r\nconst KITTY_FLAG_REPORT_TEXT = 0b10000 // Report text associated with key events\r\n\r\n/**\r\n * Kitty Keyboard Protocol configuration options\r\n * See: https://sw.kovidgoyal.net/kitty/keyboard-protocol/#progressive-enhancement\r\n */\r\nexport interface KittyKeyboardOptions {\r\n /** Disambiguate escape codes (fixes ESC timing, alt+key ambiguity, ctrl+c as event). Default: true */\r\n disambiguate?: boolean\r\n /** Report alternate keys (numpad, shifted, base layout) for cross-keyboard shortcuts. Default: true */\r\n alternateKeys?: boolean\r\n /** Report event types (press/repeat/release). Default: false */\r\n events?: boolean\r\n /** Report all keys as escape codes. Default: false */\r\n allKeysAsEscapes?: boolean\r\n /** Report text associated with key events. Default: false */\r\n reportText?: boolean\r\n}\r\n\r\n/**\r\n * Build kitty keyboard protocol flags based on configuration\r\n * @param config Kitty keyboard configuration object (null/undefined = disabled)\r\n * @returns The combined flags value (0 = disabled, >0 = enabled)\r\n * @internal Exported for testing\r\n */\r\nexport function buildKittyKeyboardFlags(config: KittyKeyboardOptions | null | undefined): number {\r\n if (!config) {\r\n return 0\r\n }\r\n\r\n let flags = 0\r\n\r\n // Default: disambiguate + alternate keys (both default to true)\r\n // - Disambiguate (0b1): Fixes ESC timing issues, alt+key ambiguity, makes ctrl+c a key event\r\n // - Alternate keys (0b100): Reports shifted/base-layout keys for cross-keyboard shortcuts\r\n\r\n // disambiguate defaults to true unless explicitly set to false\r\n if (config.disambiguate !== false) {\r\n flags |= KITTY_FLAG_DISAMBIGUATE\r\n }\r\n\r\n // alternateKeys defaults to true unless explicitly set to false\r\n if (config.alternateKeys !== false) {\r\n flags |= KITTY_FLAG_ALTERNATE_KEYS\r\n }\r\n\r\n // Optional flags (default to false, only enabled when explicitly true)\r\n if (config.events === true) {\r\n flags |= KITTY_FLAG_EVENT_TYPES\r\n }\r\n\r\n if (config.allKeysAsEscapes === true) {\r\n flags |= KITTY_FLAG_ALL_KEYS_AS_ESCAPES\r\n }\r\n\r\n if (config.reportText === true) {\r\n flags |= KITTY_FLAG_REPORT_TEXT\r\n }\r\n\r\n return flags\r\n}\r\n\r\nexport class MouseEvent {\r\n public readonly type: MouseEventType\r\n public readonly button: number\r\n public readonly x: number\r\n public readonly y: number\r\n public readonly source?: Renderable\r\n public readonly modifiers: {\r\n shift: boolean\r\n alt: boolean\r\n ctrl: boolean\r\n }\r\n public readonly scroll?: ScrollInfo\r\n public readonly target: Renderable | null\r\n public readonly isDragging?: boolean\r\n private _propagationStopped: boolean = false\r\n private _defaultPrevented: boolean = false\r\n\r\n public get propagationStopped(): boolean {\r\n return this._propagationStopped\r\n }\r\n\r\n public get defaultPrevented(): boolean {\r\n return this._defaultPrevented\r\n }\r\n\r\n constructor(target: Renderable | null, attributes: RawMouseEvent & { source?: Renderable; isDragging?: boolean }) {\r\n this.target = target\r\n this.type = attributes.type\r\n this.button = attributes.button\r\n this.x = attributes.x\r\n this.y = attributes.y\r\n this.modifiers = attributes.modifiers\r\n this.scroll = attributes.scroll\r\n this.source = attributes.source\r\n this.isDragging = attributes.isDragging\r\n }\r\n\r\n public stopPropagation(): void {\r\n this._propagationStopped = true\r\n }\r\n\r\n public preventDefault(): void {\r\n this._defaultPrevented = true\r\n }\r\n}\r\n\r\nexport enum MouseButton {\r\n LEFT = 0,\r\n MIDDLE = 1,\r\n RIGHT = 2,\r\n WHEEL_UP = 4,\r\n WHEEL_DOWN = 5,\r\n}\r\n\r\nconst rendererTracker = singleton(\"RendererTracker\", () => {\r\n const renderers = new Set<CliRenderer>()\r\n return {\r\n addRenderer: (renderer: CliRenderer) => {\r\n renderers.add(renderer)\r\n },\r\n removeRenderer: (renderer: CliRenderer) => {\r\n renderers.delete(renderer)\r\n if (renderers.size === 0) {\r\n process.stdin.pause()\r\n\r\n if (hasSingleton(\"tree-sitter-client\")) {\r\n getTreeSitterClient().destroy()\r\n destroySingleton(\"tree-sitter-client\")\r\n }\r\n }\r\n },\r\n }\r\n})\r\n\r\nexport async function createCliRenderer(config: CliRendererConfig = {}): Promise<CliRenderer> {\r\n if (process.argv.includes(\"--delay-start\")) {\r\n await new Promise((resolve) => setTimeout(resolve, 5000))\r\n }\r\n const stdin = config.stdin || process.stdin\r\n const stdout = config.stdout || process.stdout\r\n\r\n const width = stdout.columns || 80\r\n const height = stdout.rows || 24\r\n const renderHeight =\r\n config.experimental_splitHeight && config.experimental_splitHeight > 0 ? config.experimental_splitHeight : height\r\n\r\n const ziglib = resolveRenderLib()\r\n const rendererPtr = ziglib.createRenderer(width, renderHeight, {\r\n remote: config.remote ?? false,\r\n testing: config.testing ?? false,\r\n })\r\n if (!rendererPtr) {\r\n throw new Error(\"Failed to create renderer\")\r\n }\r\n if (config.useThread === undefined) {\r\n config.useThread = true\r\n }\r\n\r\n // Disable threading on linux because there currently is currently an issue\r\n // might be just a missing dependency for the build or something, but threads crash on linux\r\n if (process.platform === \"linux\") {\r\n config.useThread = false\r\n }\r\n ziglib.setUseThread(rendererPtr, config.useThread)\r\n\r\n const kittyConfig = config.useKittyKeyboard ?? {}\r\n const kittyFlags = buildKittyKeyboardFlags(kittyConfig)\r\n\r\n ziglib.setKittyKeyboardFlags(rendererPtr, kittyFlags)\r\n\r\n const renderer = new CliRenderer(ziglib, rendererPtr, stdin, stdout, width, height, config)\r\n if (!config.testing) {\r\n await renderer.setupTerminal()\r\n }\r\n return renderer\r\n}\r\n\r\nexport enum CliRenderEvents {\r\n DEBUG_OVERLAY_TOGGLE = \"debugOverlay:toggle\",\r\n DESTROY = \"destroy\",\r\n}\r\n\r\nexport enum RendererControlState {\r\n IDLE = \"idle\",\r\n AUTO_STARTED = \"auto_started\",\r\n EXPLICIT_STARTED = \"explicit_started\",\r\n EXPLICIT_PAUSED = \"explicit_paused\",\r\n EXPLICIT_SUSPENDED = \"explicit_suspended\",\r\n EXPLICIT_STOPPED = \"explicit_stopped\",\r\n}\r\n\r\nexport class CliRenderer extends EventEmitter implements RenderContext {\r\n private static animationFrameId = 0\r\n private lib: RenderLib\r\n public rendererPtr: Pointer\r\n public stdin: NodeJS.ReadStream\r\n private stdout: NodeJS.WriteStream\r\n private exitOnCtrlC: boolean\r\n private exitSignals: NodeJS.Signals[]\r\n private _exitListenersAdded: boolean = false\r\n private _isDestroyed: boolean = false\r\n private _destroyPending: boolean = false\r\n private _destroyFinalized: boolean = false\r\n public nextRenderBuffer: OptimizedBuffer\r\n public currentRenderBuffer: OptimizedBuffer\r\n private _isRunning: boolean = false\r\n private targetFps: number = 30\r\n private maxFps: number = 60\r\n private automaticMemorySnapshot: boolean = false\r\n private memorySnapshotInterval: number\r\n private memorySnapshotTimer: Timer | null = null\r\n private lastMemorySnapshot: { heapUsed: number; heapTotal: number; arrayBuffers: number } = {\r\n heapUsed: 0,\r\n heapTotal: 0,\r\n arrayBuffers: 0,\r\n }\r\n public readonly root: RootRenderable\r\n public width: number\r\n public height: number\r\n private _useThread: boolean = false\r\n private gatherStats: boolean = false\r\n private frameTimes: number[] = []\r\n private maxStatSamples: number = 300\r\n private postProcessFns: ((buffer: OptimizedBuffer, deltaTime: number) => void)[] = []\r\n private backgroundColor: RGBA = RGBA.fromInts(0, 0, 0, 0)\r\n private waitingForPixelResolution: boolean = false\r\n\r\n private rendering: boolean = false\r\n private renderingNative: boolean = false\r\n private renderTimeout: Timer | null = null\r\n private lastTime: number = 0\r\n private frameCount: number = 0\r\n private lastFpsTime: number = 0\r\n private currentFps: number = 0\r\n private targetFrameTime: number = 1000 / this.targetFps\r\n private minTargetFrameTime: number = 1000 / this.maxFps\r\n private immediateRerenderRequested: boolean = false\r\n private updateScheduled: boolean = false\r\n\r\n private liveRequestCounter: number = 0\r\n private _controlState: RendererControlState = RendererControlState.IDLE\r\n\r\n private frameCallbacks: ((deltaTime: number) => Promise<void>)[] = []\r\n private renderStats: {\r\n frameCount: number\r\n fps: number\r\n renderTime?: number\r\n frameCallbackTime: number\r\n } = {\r\n frameCount: 0,\r\n fps: 0,\r\n renderTime: 0,\r\n frameCallbackTime: 0,\r\n }\r\n public debugOverlay = {\r\n enabled: env.CASCADE_SHOW_STATS,\r\n corner: DebugOverlayCorner.bottomRight,\r\n }\r\n\r\n private _console: TerminalConsole\r\n private _resolution: PixelResolution | null = null\r\n private _keyHandler: InternalKeyHandler\r\n private _stdinBuffer: StdinBuffer\r\n\r\n private animationRequest: Map<number, FrameRequestCallback> = new Map()\r\n\r\n private resizeTimeoutId: ReturnType<typeof setTimeout> | null = null\r\n private capabilityTimeoutId: ReturnType<typeof setTimeout> | null = null\r\n private resizeDebounceDelay: number = 100\r\n\r\n private enableMouseMovement: boolean = false\r\n private _useMouse: boolean = true\r\n private autoFocus: boolean = true\r\n private _useAlternateScreen: boolean = env.CASCADE_USE_ALTERNATE_SCREEN\r\n private _suspendedMouseEnabled: boolean = false\r\n private _previousControlState: RendererControlState = RendererControlState.IDLE\r\n private capturedRenderable?: Renderable\r\n private lastOverRenderableNum: number = 0\r\n private lastOverRenderable?: Renderable\r\n\r\n private currentSelection: Selection | null = null\r\n private selectionContainers: Renderable[] = []\r\n private clipboard: Clipboard\r\n\r\n private _splitHeight: number = 0\r\n private renderOffset: number = 0\r\n\r\n private _terminalWidth: number = 0\r\n private _terminalHeight: number = 0\r\n private _terminalIsSetup: boolean = false\r\n\r\n private realStdoutWrite: (chunk: any, encoding?: any, callback?: any) => boolean\r\n private captureCallback: () => void = () => {\r\n if (this._splitHeight > 0) {\r\n this.requestRender()\r\n }\r\n }\r\n\r\n private _useConsole: boolean = true\r\n private mouseParser: MouseParser = new MouseParser()\r\n private sigwinchHandler: () => void = (() => {\r\n const width = this.stdout.columns || 80\r\n const height = this.stdout.rows || 24\r\n this.handleResize(width, height)\r\n }).bind(this)\r\n private _capabilities: any | null = null\r\n private _latestPointer: { x: number; y: number } = { x: 0, y: 0 }\r\n private _hasPointer: boolean = false\r\n private _lastPointerModifiers: RawMouseEvent[\"modifiers\"] = { shift: false, alt: false, ctrl: false }\r\n private _currentMousePointerStyle: MousePointerStyle | undefined = undefined\r\n\r\n private _currentFocusedRenderable: Renderable | null = null\r\n private lifecyclePasses: Set<Renderable> = new Set()\r\n private _openConsoleOnError: boolean = true\r\n private _paletteDetector: TerminalPaletteDetector | null = null\r\n private _cachedPalette: TerminalColors | null = null\r\n private _paletteDetectionPromise: Promise<TerminalColors> | null = null\r\n private _onDestroy?: () => void\r\n private _themeMode: ThemeMode | null = null\r\n\r\n private inputHandlers: ((sequence: string) => boolean)[] = []\r\n private prependedInputHandlers: ((sequence: string) => boolean)[] = []\r\n\r\n private idleResolvers: (() => void)[] = []\r\n\r\n private _debugInputs: Array<{ timestamp: string; sequence: string }> = []\r\n private _debugModeEnabled: boolean = env.CASCADE_DEBUG\r\n\r\n private handleError: (error: Error) => void = ((error: Error) => {\r\n console.error(error)\r\n\r\n if (this._openConsoleOnError) {\r\n this.console.show()\r\n }\r\n }).bind(this)\r\n\r\n private dumpOutputCache(optionalMessage: string = \"\"): void {\r\n const cachedLogs = this.console.getCachedLogs()\r\n const capturedOutput = capture.claimOutput()\r\n\r\n if (capturedOutput.length > 0 || cachedLogs.length > 0) {\r\n this.realStdoutWrite.call(this.stdout, optionalMessage)\r\n }\r\n\r\n if (cachedLogs.length > 0) {\r\n this.realStdoutWrite.call(this.stdout, \"Console cache:\\n\")\r\n this.realStdoutWrite.call(this.stdout, cachedLogs)\r\n }\r\n\r\n if (capturedOutput.length > 0) {\r\n this.realStdoutWrite.call(this.stdout, \"\\nCaptured output:\\n\")\r\n this.realStdoutWrite.call(this.stdout, capturedOutput + \"\\n\")\r\n }\r\n\r\n this.realStdoutWrite.call(this.stdout, ANSI.reset)\r\n }\r\n\r\n private exitHandler: () => void = (() => {\r\n this.destroy()\r\n if (env.CASCADE_DUMP_CAPTURES) {\r\n Bun.sleep(100).then(() => {\r\n this.dumpOutputCache(\"=== CAPTURED OUTPUT ===\\n\")\r\n })\r\n }\r\n }).bind(this)\r\n\r\n private warningHandler: (warning: any) => void = ((warning: any) => {\r\n console.warn(JSON.stringify(warning.message, null, 2))\r\n }).bind(this)\r\n\r\n public get controlState(): RendererControlState {\r\n return this._controlState\r\n }\r\n\r\n constructor(\r\n lib: RenderLib,\r\n rendererPtr: Pointer,\r\n stdin: NodeJS.ReadStream,\r\n stdout: NodeJS.WriteStream,\r\n width: number,\r\n height: number,\r\n config: CliRendererConfig = {},\r\n ) {\r\n super()\r\n\r\n rendererTracker.addRenderer(this)\r\n\r\n this.stdin = stdin\r\n this.stdout = stdout\r\n this.realStdoutWrite = stdout.write\r\n this.lib = lib\r\n this._terminalWidth = stdout.columns ?? width\r\n this._terminalHeight = stdout.rows ?? height\r\n this.width = width\r\n this.height = height\r\n this._useThread = config.useThread === undefined ? false : config.useThread\r\n this._splitHeight = config.experimental_splitHeight || 0\r\n\r\n if (this._splitHeight > 0) {\r\n capture.on(\"write\", this.captureCallback)\r\n this.renderOffset = height - this._splitHeight\r\n this.height = this._splitHeight\r\n lib.setRenderOffset(rendererPtr, this.renderOffset)\r\n }\r\n\r\n this.rendererPtr = rendererPtr\r\n\r\n const forwardEnvKeys = config.forwardEnvKeys ?? [...DEFAULT_FORWARDED_ENV_KEYS]\r\n for (const key of forwardEnvKeys) {\r\n const value = process.env[key]\r\n if (value === undefined) continue\r\n this.lib.setTerminalEnvVar(this.rendererPtr, key, value)\r\n }\r\n\r\n this.exitOnCtrlC = config.exitOnCtrlC === undefined ? true : config.exitOnCtrlC\r\n this.exitSignals = config.exitSignals || [\r\n \"SIGINT\", // Ctrl+C\r\n \"SIGTERM\", // Termination signal\r\n \"SIGQUIT\", // Ctrl+\\\r\n \"SIGABRT\", // Abort signal\r\n \"SIGHUP\", // Hangup (terminal closed)\r\n \"SIGBREAK\", // Ctrl+Break on Windows\r\n \"SIGPIPE\", // Broken pipe\r\n \"SIGBUS\", // Bus error\r\n \"SIGFPE\", // Floating point exception\r\n ]\r\n\r\n this.clipboard = new Clipboard(this.lib, this.rendererPtr)\r\n this.resizeDebounceDelay = config.debounceDelay || 100\r\n this.targetFps = config.targetFps || 30\r\n this.maxFps = config.maxFps || 60\r\n this.targetFrameTime = 1000 / this.targetFps\r\n this.minTargetFrameTime = 1000 / this.maxFps\r\n this.memorySnapshotInterval = config.memorySnapshotInterval ?? 0\r\n this.gatherStats = config.gatherStats || false\r\n this.maxStatSamples = config.maxStatSamples || 300\r\n this.enableMouseMovement = config.enableMouseMovement ?? true\r\n this._useMouse = config.useMouse ?? true\r\n this.autoFocus = config.autoFocus ?? true\r\n this._useAlternateScreen = config.useAlternateScreen ?? env.CASCADE_USE_ALTERNATE_SCREEN\r\n this.nextRenderBuffer = this.lib.getNextBuffer(this.rendererPtr)\r\n this.currentRenderBuffer = this.lib.getCurrentBuffer(this.rendererPtr)\r\n this.postProcessFns = config.postProcessFns || []\r\n this.prependedInputHandlers = config.prependInputHandlers || []\r\n\r\n this.root = new RootRenderable(this)\r\n\r\n if (this.memorySnapshotInterval > 0) {\r\n this.startMemorySnapshotTimer()\r\n }\r\n\r\n if (env.CASCADE_OVERRIDE_STDOUT) {\r\n this.stdout.write = this.interceptStdoutWrite.bind(this)\r\n }\r\n\r\n // Handle terminal resize\r\n process.on(\"SIGWINCH\", this.sigwinchHandler)\r\n\r\n process.on(\"warning\", this.warningHandler)\r\n\r\n process.on(\"uncaughtException\", this.handleError)\r\n process.on(\"unhandledRejection\", this.handleError)\r\n process.on(\"beforeExit\", this.exitHandler)\r\n\r\n const kittyConfig = config.useKittyKeyboard ?? {}\r\n const useKittyForParsing = kittyConfig !== null\r\n this._keyHandler = new InternalKeyHandler(useKittyForParsing)\n this._keyHandler.on(\"keypress\", (event) => {\n if (event.name === \"c\" && event.ctrl) {\n if (this.copyActiveSelectionToClipboard()) {\n event.preventDefault()\n return\n }\n }\n\n if (this.exitOnCtrlC && event.name === \"c\" && event.ctrl) {\n process.nextTick(() => {\n this.destroy()\n })\n return\n }\n })\r\n\r\n this.addExitListeners()\r\n\r\n this._stdinBuffer = new StdinBuffer({ timeout: 5 })\r\n\r\n const consoleOptions = { ...(config.consoleOptions || {}) }\n if (!consoleOptions.onCopySelection) {\n consoleOptions.onCopySelection = (text: string) => {\n this.copyToClipboard(text)\n }\n }\n this._console = new TerminalConsole(this, consoleOptions)\n this.useConsole = config.useConsole ?? true\r\n this._openConsoleOnError = config.openConsoleOnError ?? process.env.NODE_ENV !== \"production\"\r\n this._onDestroy = config.onDestroy\r\n\r\n global.requestAnimationFrame = (callback: FrameRequestCallback) => {\r\n const id = CliRenderer.animationFrameId++\r\n this.animationRequest.set(id, callback)\r\n this.requestLive()\r\n return id\r\n }\r\n global.cancelAnimationFrame = (handle: number) => {\r\n this.animationRequest.delete(handle)\r\n }\r\n\r\n const window = global.window\r\n if (!window) {\r\n global.window = {} as Window & typeof globalThis\r\n }\r\n global.window.requestAnimationFrame = requestAnimationFrame\r\n\r\n // Prevents output from being written to the terminal, useful for debugging\r\n if (env.CASCADE_NO_NATIVE_RENDER) {\r\n this.renderNative = () => {\r\n if (this._splitHeight > 0) {\r\n this.flushStdoutCache(this._splitHeight)\r\n }\r\n }\r\n }\r\n\r\n this.setupInput()\r\n }\r\n\r\n private addExitListeners(): void {\r\n if (this._exitListenersAdded || this.exitSignals.length === 0) return\r\n\r\n this.exitSignals.forEach((signal) => {\r\n process.addListener(signal, this.exitHandler)\r\n })\r\n\r\n this._exitListenersAdded = true\r\n }\r\n\r\n private removeExitListeners(): void {\r\n if (!this._exitListenersAdded || this.exitSignals.length === 0) return\r\n\r\n this.exitSignals.forEach((signal) => {\r\n process.removeListener(signal, this.exitHandler)\r\n })\r\n\r\n this._exitListenersAdded = false\r\n }\r\n\r\n public get isDestroyed(): boolean {\r\n return this._isDestroyed\r\n }\r\n\r\n public registerLifecyclePass(renderable: Renderable) {\r\n this.lifecyclePasses.add(renderable)\r\n }\r\n\r\n public unregisterLifecyclePass(renderable: Renderable) {\r\n this.lifecyclePasses.delete(renderable)\r\n }\r\n\r\n public getLifecyclePasses() {\r\n return this.lifecyclePasses\r\n }\r\n\r\n public get currentFocusedRenderable(): Renderable | null {\r\n return this._currentFocusedRenderable\r\n }\r\n\r\n public focusRenderable(renderable: Renderable) {\r\n if (this._currentFocusedRenderable === renderable) return\r\n\r\n if (this._currentFocusedRenderable) {\r\n this._currentFocusedRenderable.blur()\r\n }\r\n\r\n this._currentFocusedRenderable = renderable\r\n }\r\n\r\n private setCapturedRenderable(renderable: Renderable | undefined): void {\r\n if (this.capturedRenderable === renderable) {\r\n return\r\n }\r\n this.capturedRenderable = renderable\r\n }\r\n\r\n public addToHitGrid(x: number, y: number, width: number, height: number, id: number) {\r\n if (id !== this.capturedRenderable?.num) {\r\n this.lib.addToHitGrid(this.rendererPtr, x, y, width, height, id)\r\n }\r\n }\r\n\r\n public pushHitGridScissorRect(x: number, y: number, width: number, height: number): void {\r\n this.lib.hitGridPushScissorRect(this.rendererPtr, x, y, width, height)\r\n }\r\n\r\n public popHitGridScissorRect(): void {\r\n this.lib.hitGridPopScissorRect(this.rendererPtr)\r\n }\r\n\r\n public clearHitGridScissorRects(): void {\r\n this.lib.hitGridClearScissorRects(this.rendererPtr)\r\n }\r\n\r\n public get widthMethod(): WidthMethod {\r\n const caps = this.capabilities\r\n return caps?.unicode === \"wcwidth\" ? \"wcwidth\" : \"unicode\"\r\n }\r\n\r\n private writeOut(chunk: any, encoding?: any, callback?: any): boolean {\r\n if (this.rendererPtr && this._useThread) {\r\n const data = typeof chunk === \"string\" ? chunk : (chunk?.toString() ?? \"\")\r\n this.lib.writeOut(this.rendererPtr, data)\r\n if (typeof callback === \"function\") {\r\n process.nextTick(callback)\r\n }\r\n return true\r\n }\r\n\r\n return this.realStdoutWrite.call(this.stdout, chunk, encoding, callback)\r\n }\r\n\r\n public requestRender() {\r\n if (this._controlState === RendererControlState.EXPLICIT_SUSPENDED) {\r\n return\r\n }\r\n\r\n if (this._isRunning) {\r\n return\r\n }\r\n\r\n // NOTE: Using a frame callback that causes a re-render while already rendering\r\n // leads to a continuous loop of renders.\r\n if (this.rendering) {\r\n this.immediateRerenderRequested = true\r\n return\r\n }\r\n\r\n if (!this.updateScheduled && !this.renderTimeout) {\r\n this.updateScheduled = true\r\n const now = Date.now()\r\n const elapsed = now - this.lastTime\r\n const delay = Math.max(this.minTargetFrameTime - elapsed, 0)\r\n\r\n if (delay === 0) {\r\n process.nextTick(() => this.activateFrame())\r\n return\r\n }\r\n\r\n setTimeout(() => this.activateFrame(), delay)\r\n }\r\n }\r\n\r\n private async activateFrame() {\r\n await this.loop()\r\n this.updateScheduled = false\r\n this.resolveIdleIfNeeded()\r\n }\r\n\r\n public get useConsole(): boolean {\r\n return this._useConsole\r\n }\r\n\r\n public set useConsole(value: boolean) {\r\n this._useConsole = value\r\n if (value) {\r\n this.console.activate()\r\n } else {\r\n this.console.deactivate()\r\n }\r\n }\r\n\r\n public get isRunning(): boolean {\r\n return this._isRunning\r\n }\r\n\r\n private isIdleNow(): boolean {\r\n return (\r\n !this._isRunning &&\r\n !this.rendering &&\r\n !this.renderTimeout &&\r\n !this.updateScheduled &&\r\n !this.immediateRerenderRequested\r\n )\r\n }\r\n\r\n private resolveIdleIfNeeded(): void {\r\n if (!this.isIdleNow()) return\r\n const resolvers = this.idleResolvers.splice(0)\r\n for (const resolve of resolvers) {\r\n resolve()\r\n }\r\n }\r\n\r\n public idle(): Promise<void> {\r\n if (this._isDestroyed) return Promise.resolve()\r\n if (this.isIdleNow()) return Promise.resolve()\r\n return new Promise<void>((resolve) => {\r\n this.idleResolvers.push(resolve)\r\n })\r\n }\r\n\r\n public get resolution(): PixelResolution | null {\r\n return this._resolution\r\n }\r\n\r\n public get console(): TerminalConsole {\r\n return this._console\r\n }\r\n\r\n public get keyInput(): KeyHandler {\r\n return this._keyHandler\r\n }\r\n\r\n public get _internalKeyInput(): InternalKeyHandler {\r\n return this._keyHandler\r\n }\r\n\r\n public get terminalWidth(): number {\r\n return this._terminalWidth\r\n }\r\n\r\n public get terminalHeight(): number {\r\n return this._terminalHeight\r\n }\r\n\r\n public get useThread(): boolean {\r\n return this._useThread\r\n }\r\n\r\n public get useMouse(): boolean {\r\n return this._useMouse\r\n }\r\n\r\n public set useMouse(useMouse: boolean) {\r\n if (this._useMouse === useMouse) return // No change needed\r\n\r\n this._useMouse = useMouse\r\n\r\n if (useMouse) {\r\n this.enableMouse()\r\n } else {\r\n this.disableMouse()\r\n }\r\n }\r\n\r\n public get experimental_splitHeight(): number {\r\n return this._splitHeight\r\n }\r\n\r\n public get liveRequestCount(): number {\r\n return this.liveRequestCounter\r\n }\r\n\r\n public get currentControlState(): string {\r\n return this._controlState\r\n }\r\n\r\n public get capabilities(): any | null {\r\n return this._capabilities\r\n }\r\n\r\n public get themeMode(): ThemeMode | null {\r\n return this._themeMode\r\n }\r\n\r\n public getDebugInputs(): Array<{ timestamp: string; sequence: string }> {\r\n return [...this._debugInputs]\r\n }\r\n\r\n public get useKittyKeyboard(): boolean {\r\n return this.lib.getKittyKeyboardFlags(this.rendererPtr) > 0\r\n }\r\n\r\n public set useKittyKeyboard(use: boolean) {\r\n const flags = use ? KITTY_FLAG_DISAMBIGUATE | KITTY_FLAG_ALTERNATE_KEYS : 0\r\n this.lib.setKittyKeyboardFlags(this.rendererPtr, flags)\r\n }\r\n\r\n public set experimental_splitHeight(splitHeight: number) {\r\n if (splitHeight < 0) splitHeight = 0\r\n\r\n const prevSplitHeight = this._splitHeight\r\n\r\n if (splitHeight > 0) {\r\n this._splitHeight = splitHeight\r\n this.renderOffset = this._terminalHeight - this._splitHeight\r\n this.height = this._splitHeight\r\n\r\n if (prevSplitHeight === 0) {\r\n this.useConsole = false\r\n capture.on(\"write\", this.captureCallback)\r\n const freedLines = this._terminalHeight - this._splitHeight\r\n const scrollDown = ANSI.scrollDown(freedLines)\r\n this.writeOut(scrollDown)\r\n } else if (prevSplitHeight > this._splitHeight) {\r\n const freedLines = prevSplitHeight - this._splitHeight\r\n const scrollDown = ANSI.scrollDown(freedLines)\r\n this.writeOut(scrollDown)\r\n } else if (prevSplitHeight < this._splitHeight) {\r\n const additionalLines = this._splitHeight - prevSplitHeight\r\n const scrollUp = ANSI.scrollUp(additionalLines)\r\n this.writeOut(scrollUp)\r\n }\r\n } else {\r\n if (prevSplitHeight > 0) {\r\n this.flushStdoutCache(this._terminalHeight, true)\r\n\r\n capture.off(\"write\", this.captureCallback)\r\n this.useConsole = true\r\n }\r\n\r\n this._splitHeight = 0\r\n this.renderOffset = 0\r\n this.height = this._terminalHeight\r\n }\r\n\r\n this.width = this._terminalWidth\r\n this.lib.setRenderOffset(this.rendererPtr, this.renderOffset)\r\n this.lib.resizeRenderer(this.rendererPtr, this.width, this.height)\r\n this.nextRenderBuffer = this.lib.getNextBuffer(this.rendererPtr)\r\n\r\n this._console.resize(this.width, this.height)\r\n this.root.resize(this.width, this.height)\r\n this.emit(\"resize\", this.width, this.height)\r\n this.requestRender()\r\n }\r\n\r\n private interceptStdoutWrite = (chunk: any, encoding?: any, callback?: any): boolean => {\r\n const text = chunk.toString()\r\n\r\n capture.write(\"stdout\", text)\r\n if (this._splitHeight > 0) {\r\n this.requestRender()\r\n }\r\n\r\n if (typeof callback === \"function\") {\r\n process.nextTick(callback)\r\n }\r\n\r\n return true\r\n }\r\n\r\n public disableStdoutInterception(): void {\r\n this.stdout.write = this.realStdoutWrite\r\n }\r\n\r\n // TODO: Move this to native\r\n private flushStdoutCache(space: number, force: boolean = false): boolean {\r\n if (capture.size === 0 && !force) return false\r\n\r\n const output = capture.claimOutput()\r\n\r\n const rendererStartLine = this._terminalHeight - this._splitHeight\r\n const flush = ANSI.moveCursorAndClear(rendererStartLine, 1)\r\n\r\n const outputLine = this._terminalHeight - this._splitHeight\r\n const move = ANSI.moveCursor(outputLine, 1)\r\n\r\n let clear = \"\"\r\n if (space > 0) {\r\n const backgroundColor = this.backgroundColor.toInts()\r\n const newlines = \" \".repeat(this.width) + \"\\n\".repeat(space)\r\n // Check if background is transparent (alpha = 0)\r\n if (backgroundColor[3] === 0) {\r\n clear = newlines\r\n } else {\r\n clear =\r\n ANSI.setRgbBackground(backgroundColor[0], backgroundColor[1], backgroundColor[2]) +\r\n newlines +\r\n ANSI.resetBackground\r\n }\r\n }\r\n\r\n this.writeOut(flush + move + output + clear)\r\n\r\n return true\r\n }\r\n\r\n private enableMouse(): void {\r\n this._useMouse = true\r\n this.lib.enableMouse(this.rendererPtr, this.enableMouseMovement)\r\n }\r\n\r\n private disableMouse(): void {\r\n this._useMouse = false\r\n this.setCapturedRenderable(undefined)\r\n this.mouseParser.reset()\r\n this.lib.disableMouse(this.rendererPtr)\r\n }\r\n\r\n public enableKittyKeyboard(flags: number = 0b00011): void {\r\n this.lib.enableKittyKeyboard(this.rendererPtr, flags)\r\n }\r\n\r\n public disableKittyKeyboard(): void {\r\n this.lib.disableKittyKeyboard(this.rendererPtr)\r\n }\r\n\r\n public set useThread(useThread: boolean) {\r\n this._useThread = useThread\r\n this.lib.setUseThread(this.rendererPtr, useThread)\r\n }\r\n\r\n // TODO: All input management may move to native when zig finally has async io support again,\r\n // without rolling a full event loop\r\n public async setupTerminal(): Promise<void> {\r\n if (this._terminalIsSetup) return\r\n this._terminalIsSetup = true\r\n\r\n this.lib.setupTerminal(this.rendererPtr, this._useAlternateScreen)\r\n this._capabilities = this.lib.getTerminalCapabilities(this.rendererPtr)\r\n\r\n if (this.debugOverlay.enabled) {\r\n this.lib.setDebugOverlay(this.rendererPtr, true, this.debugOverlay.corner)\r\n if (!this.memorySnapshotInterval) {\r\n this.memorySnapshotInterval = 3000\r\n this.startMemorySnapshotTimer()\r\n this.automaticMemorySnapshot = true\r\n }\r\n }\r\n\r\n this.capabilityTimeoutId = setTimeout(() => {\r\n this.capabilityTimeoutId = null\r\n this.removeInputHandler(this.capabilityHandler)\r\n }, 5000)\r\n\r\n if (this._useMouse) {\r\n this.enableMouse()\r\n }\r\n\r\n this.queryPixelResolution()\r\n }\r\n\r\n private stdinListener: (data: Buffer) => void = ((data: Buffer) => {\r\n // Mouse first (consume and stop if handled)\r\n if (this._useMouse && this.handleMouseData(data)) {\r\n return\r\n }\r\n\r\n // Everything else goes through the sequence buffer\r\n this._stdinBuffer.process(data)\r\n }).bind(this)\r\n\r\n public addInputHandler(handler: (sequence: string) => boolean): void {\r\n this.inputHandlers.push(handler)\r\n }\r\n\r\n public prependInputHandler(handler: (sequence: string) => boolean): void {\r\n this.inputHandlers.unshift(handler)\r\n }\r\n\r\n public removeInputHandler(handler: (sequence: string) => boolean): void {\r\n this.inputHandlers = this.inputHandlers.filter((h) => h !== handler)\r\n }\r\n\r\n private capabilityHandler: (sequence: string) => boolean = ((sequence: string) => {\r\n if (isCapabilityResponse(sequence)) {\r\n this.lib.processCapabilityResponse(this.rendererPtr, sequence)\r\n this._capabilities = this.lib.getTerminalCapabilities(this.rendererPtr)\r\n this.emit(\"capabilities\", this._capabilities)\r\n return true\r\n }\r\n return false\r\n }).bind(this)\r\n\r\n private focusHandler: (sequence: string) => boolean = ((sequence: string) => {\r\n if (sequence === \"\\x1b[I\") {\r\n // When the terminal regains focus, some terminal emulators (notably\r\n // Windows Terminal / ConPTY) may have stripped DEC private modes like\r\n // mouse tracking, bracketed paste, and focus tracking itself while the\r\n // window was unfocused. Re-send all active mode sequences unconditionally.\r\n this.lib.restoreTerminalModes(this.rendererPtr)\r\n this.emit(\"focus\")\r\n return true\r\n }\r\n if (sequence === \"\\x1b[O\") {\r\n this.emit(\"blur\")\r\n return true\r\n }\r\n return false\r\n }).bind(this)\r\n\r\n private themeModeHandler: (sequence: string) => boolean = ((sequence: string) => {\r\n if (sequence === \"\\x1b[?997;1n\") {\r\n if (this._themeMode !== \"dark\") {\r\n this._themeMode = \"dark\"\r\n this.emit(\"theme_mode\", \"dark\")\r\n }\r\n return true\r\n }\r\n if (sequence === \"\\x1b[?997;2n\") {\r\n if (this._themeMode !== \"light\") {\r\n this._themeMode = \"light\"\r\n this.emit(\"theme_mode\", \"light\")\r\n }\r\n return true\r\n }\r\n return false\r\n }).bind(this)\r\n\r\n private setupInput(): void {\r\n for (const handler of this.prependedInputHandlers) {\r\n this.addInputHandler(handler)\r\n }\r\n\r\n this.addInputHandler((sequence: string) => {\r\n if (isPixelResolutionResponse(sequence) && this.waitingForPixelResolution) {\r\n const resolution = parsePixelResolution(sequence)\r\n if (resolution) {\r\n this._resolution = resolution\r\n this.waitingForPixelResolution = false\r\n }\r\n return true\r\n }\r\n return false\r\n })\r\n this.addInputHandler(this.capabilityHandler)\r\n this.addInputHandler(this.focusHandler)\r\n this.addInputHandler(this.themeModeHandler)\r\n this.addInputHandler((sequence: string) => {\r\n return this._keyHandler.processInput(sequence)\r\n })\r\n\r\n if (this.stdin.setRawMode) {\r\n this.stdin.setRawMode(true)\r\n }\r\n\r\n this.stdin.resume()\r\n this.stdin.setEncoding(\"utf8\")\r\n this.stdin.on(\"data\", this.stdinListener)\r\n this._stdinBuffer.on(\"data\", (sequence: string) => {\r\n // Capture all input in debug mode\r\n if (this._debugModeEnabled) {\r\n this._debugInputs.push({\r\n timestamp: new Date().toISOString(),\r\n sequence,\r\n })\r\n }\r\n\r\n for (const handler of this.inputHandlers) {\r\n if (handler(sequence)) {\r\n return\r\n }\r\n }\r\n })\r\n this._stdinBuffer.on(\"paste\", (data: string) => {\r\n this._keyHandler.processPaste(data)\r\n })\r\n }\r\n\r\n private dispatchMouseEvent(\r\n target: Renderable,\r\n attributes: RawMouseEvent & { source?: Renderable; isDragging?: boolean },\r\n ): MouseEvent {\r\n const event = new MouseEvent(target, attributes)\r\n target.processMouseEvent(event)\r\n\r\n if (this.autoFocus && event.type === \"down\" && event.button === MouseButton.LEFT && !event.defaultPrevented) {\r\n let current: Renderable | null = target\r\n while (current) {\r\n if (current.focusable) {\r\n current.focus()\r\n break\r\n }\r\n current = current.parent\r\n }\r\n }\r\n\r\n return event\r\n }\r\n\r\n private handleMouseData(data: Buffer): boolean {\r\n const mouseEvents = this.mouseParser.parseAllMouseEvents(data)\r\n\r\n if (mouseEvents.length === 0) return false\r\n\r\n let anyHandled = false\r\n for (const mouseEvent of mouseEvents) {\r\n if (this.processSingleMouseEvent(mouseEvent)) {\r\n anyHandled = true\r\n }\r\n }\r\n\r\n return anyHandled\r\n }\r\n\r\n private processSingleMouseEvent(mouseEvent: RawMouseEvent): boolean {\r\n if (this._splitHeight > 0) {\r\n if (mouseEvent.y < this.renderOffset) {\r\n return false\r\n }\r\n mouseEvent.y -= this.renderOffset\r\n }\r\n\r\n this._latestPointer.x = mouseEvent.x\r\n this._latestPointer.y = mouseEvent.y\r\n this._hasPointer = true\r\n this._lastPointerModifiers = mouseEvent.modifiers\r\n\r\n if (this._console.visible) {\r\n const consoleBounds = this._console.bounds\r\n if (\r\n mouseEvent.x >= consoleBounds.x &&\r\n mouseEvent.x < consoleBounds.x + consoleBounds.width &&\r\n mouseEvent.y >= consoleBounds.y &&\r\n mouseEvent.y < consoleBounds.y + consoleBounds.height\r\n ) {\r\n const event = new MouseEvent(null, mouseEvent)\r\n const handled = this._console.handleMouse(event)\r\n if (handled) return true\r\n }\r\n }\r\n\r\n if (mouseEvent.type === \"scroll\") {\r\n const maybeRenderableId = this.hitTest(mouseEvent.x, mouseEvent.y)\r\n const maybeRenderable = Renderable.renderablesByNumber.get(maybeRenderableId)\r\n const fallbackTarget =\r\n this._currentFocusedRenderable &&\r\n !this._currentFocusedRenderable.isDestroyed &&\r\n this._currentFocusedRenderable.focused\r\n ? this._currentFocusedRenderable\r\n : null\r\n const scrollTarget = maybeRenderable ?? fallbackTarget\r\n\r\n if (scrollTarget) {\r\n const event = new MouseEvent(scrollTarget, mouseEvent)\r\n scrollTarget.processMouseEvent(event)\r\n }\r\n return true\r\n }\r\n\r\n const maybeRenderableId = this.hitTest(mouseEvent.x, mouseEvent.y)\r\n const sameElement = maybeRenderableId === this.lastOverRenderableNum\r\n this.lastOverRenderableNum = maybeRenderableId\r\n const maybeRenderable = Renderable.renderablesByNumber.get(maybeRenderableId)\r\n\r\n if (\r\n mouseEvent.type === \"down\" &&\r\n mouseEvent.button === MouseButton.LEFT &&\r\n !this.currentSelection?.isDragging &&\r\n !mouseEvent.modifiers.ctrl\r\n ) {\r\n const canStartSelection = Boolean(\r\n maybeRenderable &&\r\n maybeRenderable.selectable &&\r\n !maybeRenderable.isDestroyed &&\r\n maybeRenderable.shouldStartSelection(mouseEvent.x, mouseEvent.y),\r\n )\r\n\r\n if (canStartSelection && maybeRenderable) {\r\n this.startSelection(maybeRenderable, mouseEvent.x, mouseEvent.y)\r\n this.dispatchMouseEvent(maybeRenderable, mouseEvent)\r\n return true\r\n }\r\n }\r\n\r\n if (mouseEvent.type === \"drag\" && this.currentSelection?.isDragging) {\r\n this.updateSelection(maybeRenderable, mouseEvent.x, mouseEvent.y)\r\n\r\n if (maybeRenderable) {\r\n const event = new MouseEvent(maybeRenderable, { ...mouseEvent, isDragging: true })\r\n maybeRenderable.processMouseEvent(event)\r\n }\r\n\r\n return true\r\n }\r\n\r\n if (mouseEvent.type === \"up\" && this.currentSelection?.isDragging) {\r\n if (maybeRenderable) {\r\n const event = new MouseEvent(maybeRenderable, { ...mouseEvent, isDragging: true })\r\n maybeRenderable.processMouseEvent(event)\r\n }\r\n\r\n this.finishSelection()\r\n return true\r\n }\r\n\r\n if (mouseEvent.type === \"down\" && mouseEvent.button === MouseButton.LEFT && this.currentSelection) {\r\n if (mouseEvent.modifiers.ctrl) {\r\n this.currentSelection.isDragging = true\r\n this.updateSelection(maybeRenderable, mouseEvent.x, mouseEvent.y)\r\n return true\r\n }\r\n }\r\n\r\n if (!sameElement && (mouseEvent.type === \"drag\" || mouseEvent.type === \"move\")) {\r\n if (this.lastOverRenderable && this.lastOverRenderable !== this.capturedRenderable) {\r\n const event = new MouseEvent(this.lastOverRenderable, { ...mouseEvent, type: \"out\" })\r\n this.lastOverRenderable.processMouseEvent(event)\r\n }\r\n this.lastOverRenderable = maybeRenderable\r\n if (maybeRenderable) {\r\n const event = new MouseEvent(maybeRenderable, {\r\n ...mouseEvent,\r\n type: \"over\",\r\n source: this.capturedRenderable,\r\n })\r\n maybeRenderable.processMouseEvent(event)\r\n }\r\n }\r\n\r\n if (this.capturedRenderable && mouseEvent.type !== \"up\") {\r\n const event = new MouseEvent(this.capturedRenderable, mouseEvent)\r\n this.capturedRenderable.processMouseEvent(event)\r\n return true\r\n }\r\n\r\n if (this.capturedRenderable && mouseEvent.type === \"up\") {\r\n const event = new MouseEvent(this.capturedRenderable, { ...mouseEvent, type: \"drag-end\" })\r\n this.capturedRenderable.processMouseEvent(event)\r\n this.capturedRenderable.processMouseEvent(new MouseEvent(this.capturedRenderable, mouseEvent))\r\n if (maybeRenderable) {\r\n const event = new MouseEvent(maybeRenderable, {\r\n ...mouseEvent,\r\n type: \"drop\",\r\n source: this.capturedRenderable,\r\n })\r\n maybeRenderable.processMouseEvent(event)\r\n }\r\n this.lastOverRenderable = this.capturedRenderable\r\n this.lastOverRenderableNum = this.capturedRenderable.num\r\n this.setCapturedRenderable(undefined)\r\n // Dropping the renderable needs to push another frame when the renderer is not live\r\n // to update the hit grid, otherwise capturedRenderable won't be in the hit grid and will not receive mouse events\r\n this.requestRender()\r\n }\r\n\r\n let event: MouseEvent | undefined\r\n if (maybeRenderable) {\r\n if (mouseEvent.type === \"drag\" && mouseEvent.button === MouseButton.LEFT) {\r\n this.setCapturedRenderable(maybeRenderable)\r\n } else {\r\n this.setCapturedRenderable(undefined)\r\n }\r\n event = this.dispatchMouseEvent(maybeRenderable, mouseEvent)\r\n } else {\r\n this.setCapturedRenderable(undefined)\r\n this.lastOverRenderable = undefined\r\n }\r\n\r\n if (!event?.defaultPrevented && mouseEvent.type === \"down\" && this.currentSelection) {\r\n this.clearSelection()\r\n }\r\n\r\n return true\r\n }\r\n\r\n /**\r\n * Recheck hover state after hit grid changes.\r\n * Called after render when native code detects the hit grid changed.\r\n * Fires out/over events if the element under the cursor changed.\r\n */\r\n private recheckHoverState(): void {\r\n if (this._isDestroyed || !this._hasPointer) return\r\n if (this.capturedRenderable) return\r\n\r\n const hitId = this.hitTest(this._latestPointer.x, this._latestPointer.y)\r\n const hitRenderable = Renderable.renderablesByNumber.get(hitId)\r\n const lastOver = this.lastOverRenderable\r\n\r\n // No change\r\n if (lastOver?.num === hitId) {\r\n this.lastOverRenderableNum = hitId\r\n return\r\n }\r\n\r\n const baseEvent: RawMouseEvent = {\r\n type: \"move\",\r\n button: 0,\r\n x: this._latestPointer.x,\r\n y: this._latestPointer.y,\r\n modifiers: this._lastPointerModifiers,\r\n }\r\n\r\n // Fire out on old element\r\n if (lastOver) {\r\n const event = new MouseEvent(lastOver, { ...baseEvent, type: \"out\" })\r\n lastOver.processMouseEvent(event)\r\n }\r\n\r\n this.lastOverRenderable = hitRenderable\r\n this.lastOverRenderableNum = hitId\r\n\r\n // Fire over on new element\r\n if (hitRenderable) {\r\n const event = new MouseEvent(hitRenderable, {\r\n ...baseEvent,\r\n type: \"over\",\r\n })\r\n hitRenderable.processMouseEvent(event)\r\n }\r\n }\r\n public setMousePointer(style: MousePointerStyle): void {\r\n this._currentMousePointerStyle = style\r\n this.lib.setCursorStyleOptions(this.rendererPtr, { cursor: style })\r\n }\r\n\r\n public hitTest(x: number, y: number): number {\r\n return this.lib.checkHit(this.rendererPtr, x, y)\r\n }\r\n\r\n private takeMemorySnapshot(): void {\r\n if (this._isDestroyed) return\r\n\r\n const memoryUsage = process.memoryUsage()\r\n this.lastMemorySnapshot = {\r\n heapUsed: memoryUsage.heapUsed,\r\n heapTotal: memoryUsage.heapTotal,\r\n arrayBuffers: memoryUsage.arrayBuffers,\r\n }\r\n\r\n this.lib.updateMemoryStats(\r\n this.rendererPtr,\r\n this.lastMemorySnapshot.heapUsed,\r\n this.lastMemorySnapshot.heapTotal,\r\n this.lastMemorySnapshot.arrayBuffers,\r\n )\r\n\r\n this.emit(\"memory:snapshot\", this.lastMemorySnapshot)\r\n }\r\n\r\n private startMemorySnapshotTimer(): void {\r\n this.stopMemorySnapshotTimer()\r\n\r\n this.memorySnapshotTimer = setInterval(() => {\r\n this.takeMemorySnapshot()\r\n }, this.memorySnapshotInterval)\r\n }\r\n\r\n private stopMemorySnapshotTimer(): void {\r\n if (this.memorySnapshotTimer) {\r\n clearInterval(this.memorySnapshotTimer)\r\n this.memorySnapshotTimer = null\r\n }\r\n }\r\n\r\n public setMemorySnapshotInterval(interval: number): void {\r\n this.memorySnapshotInterval = interval\r\n\r\n if (this._isRunning && interval > 0) {\r\n this.startMemorySnapshotTimer()\r\n } else if (interval <= 0 && this.memorySnapshotTimer) {\r\n clearInterval(this.memorySnapshotTimer)\r\n this.memorySnapshotTimer = null\r\n }\r\n }\r\n\r\n private handleResize(width: number, height: number): void {\r\n if (this._isDestroyed) return\r\n if (this._splitHeight > 0) {\r\n this.processResize(width, height)\r\n return\r\n }\r\n\r\n if (this.resizeTimeoutId !== null) {\r\n clearTimeout(this.resizeTimeoutId)\r\n this.resizeTimeoutId = null\r\n }\r\n\r\n this.resizeTimeoutId = setTimeout(() => {\r\n this.resizeTimeoutId = null\r\n this.processResize(width, height)\r\n }, this.resizeDebounceDelay)\r\n }\r\n\r\n private queryPixelResolution() {\r\n this.waitingForPixelResolution = true\r\n this.lib.queryPixelResolution(this.rendererPtr)\r\n }\r\n\r\n private processResize(width: number, height: number): void {\r\n if (width === this._terminalWidth && height === this._terminalHeight) return\r\n\r\n const prevWidth = this._terminalWidth\r\n\r\n this._terminalWidth = width\r\n this._terminalHeight = height\r\n this.queryPixelResolution()\r\n\r\n this.setCapturedRenderable(undefined)\r\n this.mouseParser.reset()\r\n\r\n if (this._splitHeight > 0) {\r\n // TODO: Handle resizing split mode properly\r\n if (width < prevWidth) {\r\n const start = this._terminalHeight - this._splitHeight * 2\r\n const flush = ANSI.moveCursorAndClear(start, 1)\r\n this.writeOut(flush)\r\n }\r\n this.renderOffset = height - this._splitHeight\r\n this.width = width\r\n this.height = this._splitHeight\r\n this.currentRenderBuffer.clear(this.backgroundColor)\r\n this.lib.setRenderOffset(this.rendererPtr, this.renderOffset)\r\n } else {\r\n this.width = width\r\n this.height = height\r\n }\r\n\r\n this.lib.resizeRenderer(this.rendererPtr, this.width, this.height)\r\n this.nextRenderBuffer = this.lib.getNextBuffer(this.rendererPtr)\r\n this.currentRenderBuffer = this.lib.getCurrentBuffer(this.rendererPtr)\r\n this._console.resize(this.width, this.height)\r\n this.root.resize(this.width, this.height)\r\n this.emit(\"resize\", this.width, this.height)\r\n this.requestRender()\r\n }\r\n\r\n public setBackgroundColor(color: ColorInput): void {\r\n const parsedColor = parseColor(color)\r\n this.lib.setBackgroundColor(this.rendererPtr, parsedColor as RGBA)\r\n this.backgroundColor = parsedColor as RGBA\r\n this.nextRenderBuffer.clear(parsedColor as RGBA)\r\n this.requestRender()\r\n }\r\n\r\n public toggleDebugOverlay(): void {\r\n const willBeEnabled = !this.debugOverlay.enabled\r\n\r\n if (willBeEnabled && !this.memorySnapshotInterval) {\r\n this.memorySnapshotInterval = 3000\r\n this.startMemorySnapshotTimer()\r\n this.automaticMemorySnapshot = true\r\n } else if (!willBeEnabled && this.automaticMemorySnapshot) {\r\n this.stopMemorySnapshotTimer()\r\n this.memorySnapshotInterval = 0\r\n this.automaticMemorySnapshot = false\r\n }\r\n\r\n this.debugOverlay.enabled = !this.debugOverlay.enabled\r\n this.lib.setDebugOverlay(this.rendererPtr, this.debugOverlay.enabled, this.debugOverlay.corner)\r\n this.emit(CliRenderEvents.DEBUG_OVERLAY_TOGGLE, this.debugOverlay.enabled)\r\n this.requestRender()\r\n }\r\n\r\n public configureDebugOverlay(options: { enabled?: boolean; corner?: DebugOverlayCorner }): void {\r\n this.debugOverlay.enabled = options.enabled ?? this.debugOverlay.enabled\r\n this.debugOverlay.corner = options.corner ?? this.debugOverlay.corner\r\n this.lib.setDebugOverlay(this.rendererPtr, this.debugOverlay.enabled, this.debugOverlay.corner)\r\n this.requestRender()\r\n }\r\n\r\n public setTerminalTitle(title: string): void {\r\n this.lib.setTerminalTitle(this.rendererPtr, title)\r\n }\r\n\r\n public copyToClipboardOSC52(text: string, target?: ClipboardTarget): boolean {\n return this.clipboard.copyToClipboardOSC52(text, target)\n }\n\n public copyToSystemClipboard(text: string): boolean {\n return this.clipboard.copyToSystemClipboard(text)\n }\n\n public readFromSystemClipboard(): string | null {\n return this.clipboard.readFromSystemClipboard()\n }\n\n public copyToClipboard(text: string, target?: ClipboardTarget): boolean {\n return this.clipboard.copyToBestAvailable(text, target)\n }\n\n private copyActiveSelectionToClipboard(): boolean {\n const selection = this.currentSelection\n if (!selection) {\n return false\n }\n\n const selectedText = selection.getSelectedText()\n if (!selectedText) {\n return false\n }\n\n this.copyToClipboard(selectedText)\n this.clearSelection()\n this.requestRender()\n return true\n }\n\n public clearClipboardOSC52(target?: ClipboardTarget): boolean {\n return this.clipboard.clearClipboardOSC52(target)\n }\n\r\n public isOsc52Supported(): boolean {\r\n return this._capabilities?.osc52 ?? this.clipboard.isOsc52Supported()\r\n }\r\n\r\n public dumpHitGrid(): void {\r\n this.lib.dumpHitGrid(this.rendererPtr)\r\n }\r\n\r\n public dumpBuffers(timestamp?: number): void {\r\n this.lib.dumpBuffers(this.rendererPtr, timestamp)\r\n }\r\n\r\n public dumpStdoutBuffer(timestamp?: number): void {\r\n this.lib.dumpStdoutBuffer(this.rendererPtr, timestamp)\r\n }\r\n\r\n public static setCursorPosition(renderer: CliRenderer, x: number, y: number, visible: boolean = true): void {\r\n const lib = resolveRenderLib()\r\n lib.setCursorPosition(renderer.rendererPtr, x, y, visible)\r\n }\r\n\r\n public static setCursorStyle(renderer: CliRenderer, options: CursorStyleOptions): void {\r\n const lib = resolveRenderLib()\r\n lib.setCursorStyleOptions(renderer.rendererPtr, options)\r\n if (options.cursor !== undefined) {\r\n renderer._currentMousePointerStyle = options.cursor\r\n }\r\n }\r\n\r\n public static setCursorColor(renderer: CliRenderer, color: RGBA): void {\r\n const lib = resolveRenderLib()\r\n lib.setCursorColor(renderer.rendererPtr, color)\r\n }\r\n\r\n public setCursorPosition(x: number, y: number, visible: boolean = true): void {\r\n this.lib.setCursorPosition(this.rendererPtr, x, y, visible)\r\n }\r\n\r\n public setCursorStyle(options: CursorStyleOptions): void {\r\n this.lib.setCursorStyleOptions(this.rendererPtr, options)\r\n if (options.cursor !== undefined) {\r\n this._currentMousePointerStyle = options.cursor\r\n }\r\n }\r\n\r\n public setCursorColor(color: RGBA): void {\r\n this.lib.setCursorColor(this.rendererPtr, color)\r\n }\r\n\r\n public getCursorState() {\r\n return this.lib.getCursorState(this.rendererPtr)\r\n }\r\n\r\n public addPostProcessFn(processFn: (buffer: OptimizedBuffer, deltaTime: number) => void): void {\r\n this.postProcessFns.push(processFn)\r\n }\r\n\r\n public removePostProcessFn(processFn: (buffer: OptimizedBuffer, deltaTime: number) => void): void {\r\n this.postProcessFns = this.postProcessFns.filter((fn) => fn !== processFn)\r\n }\r\n\r\n public clearPostProcessFns(): void {\r\n this.postProcessFns = []\r\n }\r\n\r\n public setFrameCallback(callback: (deltaTime: number) => Promise<void>): void {\r\n this.frameCallbacks.push(callback)\r\n }\r\n\r\n public removeFrameCallback(callback: (deltaTime: number) => Promise<void>): void {\r\n this.frameCallbacks = this.frameCallbacks.filter((cb) => cb !== callback)\r\n }\r\n\r\n public clearFrameCallbacks(): void {\r\n this.frameCallbacks = []\r\n }\r\n\r\n public requestLive(): void {\r\n this.liveRequestCounter++\r\n\r\n if (this._controlState === RendererControlState.IDLE && this.liveRequestCounter > 0) {\r\n this._controlState = RendererControlState.AUTO_STARTED\r\n this.internalStart()\r\n }\r\n }\r\n\r\n public dropLive(): void {\r\n this.liveRequestCounter = Math.max(0, this.liveRequestCounter - 1)\r\n\r\n if (this._controlState === RendererControlState.AUTO_STARTED && this.liveRequestCounter === 0) {\r\n this._controlState = RendererControlState.IDLE\r\n this.internalPause()\r\n }\r\n }\r\n\r\n public start(): void {\r\n this._controlState = RendererControlState.EXPLICIT_STARTED\r\n this.internalStart()\r\n }\r\n\r\n public auto(): void {\r\n this._controlState = this._isRunning ? RendererControlState.AUTO_STARTED : RendererControlState.IDLE\r\n }\r\n\r\n private internalStart(): void {\r\n if (!this._isRunning && !this._isDestroyed) {\r\n this._isRunning = true\r\n\r\n if (this.memorySnapshotInterval > 0) {\r\n this.startMemorySnapshotTimer()\r\n }\r\n\r\n this.startRenderLoop()\r\n }\r\n }\r\n\r\n public pause(): void {\r\n this._controlState = RendererControlState.EXPLICIT_PAUSED\r\n this.internalPause()\r\n }\r\n\r\n public suspend(): void {\r\n this._previousControlState = this._controlState\r\n\r\n this._controlState = RendererControlState.EXPLICIT_SUSPENDED\r\n this.internalPause()\r\n\r\n this._suspendedMouseEnabled = this._useMouse\r\n\r\n this.disableMouse()\r\n this.removeExitListeners()\r\n this._stdinBuffer.clear()\r\n this.stdin.removeListener(\"data\", this.stdinListener)\r\n this.lib.suspendRenderer(this.rendererPtr)\r\n\r\n if (this.stdin.setRawMode) {\r\n this.stdin.setRawMode(false)\r\n }\r\n\r\n this.stdin.pause()\r\n }\r\n\r\n public resume(): void {\r\n if (this.stdin.setRawMode) {\r\n this.stdin.setRawMode(true)\r\n }\r\n\r\n this.stdin.resume()\r\n this.addExitListeners()\r\n\r\n setImmediate(() => {\r\n // Consume any existing stdin data to avoid processing stale input\r\n while (this.stdin.read() !== null) {}\r\n this.stdin.on(\"data\", this.stdinListener)\r\n })\r\n\r\n this.lib.resumeRenderer(this.rendererPtr)\r\n\r\n if (this._suspendedMouseEnabled) {\r\n this.enableMouse()\r\n }\r\n\r\n this.currentRenderBuffer.clear(this.backgroundColor)\r\n this._controlState = this._previousControlState\r\n\r\n if (\r\n this._previousControlState === RendererControlState.AUTO_STARTED ||\r\n this._previousControlState === RendererControlState.EXPLICIT_STARTED\r\n ) {\r\n this.internalStart()\r\n } else {\r\n this.requestRender()\r\n }\r\n }\r\n\r\n private internalPause(): void {\r\n this._isRunning = false\r\n\r\n if (this.renderTimeout) {\r\n clearTimeout(this.renderTimeout)\r\n this.renderTimeout = null\r\n }\r\n\r\n if (!this.rendering) {\r\n this.resolveIdleIfNeeded()\r\n }\r\n }\r\n\r\n public stop(): void {\r\n this._controlState = RendererControlState.EXPLICIT_STOPPED\r\n this.internalStop()\r\n }\r\n\r\n private internalStop(): void {\r\n if (this.isRunning && !this._isDestroyed) {\r\n this._isRunning = false\r\n\r\n if (this.memorySnapshotTimer) {\r\n clearInterval(this.memorySnapshotTimer)\r\n this.memorySnapshotTimer = null\r\n }\r\n\r\n if (this.renderTimeout) {\r\n clearTimeout(this.renderTimeout)\r\n this.renderTimeout = null\r\n }\r\n\r\n // If we're currently rendering, the frame will resolve idle when it completes\r\n // Otherwise, resolve immediately\r\n if (!this.rendering) {\r\n this.resolveIdleIfNeeded()\r\n }\r\n }\r\n }\r\n\r\n public destroy(): void {\r\n if (this._isDestroyed) return\r\n this._isDestroyed = true\r\n this._destroyPending = true\r\n\r\n if (this.rendering) {\r\n // Defer teardown until the active frame completes to avoid freeing native resources mid-render.\r\n return\r\n }\r\n\r\n this.finalizeDestroy()\r\n }\r\n\r\n private finalizeDestroy(): void {\r\n if (this._destroyFinalized) return\r\n this._destroyFinalized = true\r\n this._destroyPending = false\r\n\r\n process.removeListener(\"SIGWINCH\", this.sigwinchHandler)\r\n process.removeListener(\"uncaughtException\", this.handleError)\r\n process.removeListener(\"unhandledRejection\", this.handleError)\r\n process.removeListener(\"warning\", this.warningHandler)\r\n process.removeListener(\"beforeExit\", this.exitHandler)\r\n capture.removeListener(\"write\", this.captureCallback)\r\n this.removeExitListeners()\r\n\r\n if (this.resizeTimeoutId !== null) {\r\n clearTimeout(this.resizeTimeoutId)\r\n this.resizeTimeoutId = null\r\n }\r\n\r\n if (this.capabilityTimeoutId !== null) {\r\n clearTimeout(this.capabilityTimeoutId)\r\n this.capabilityTimeoutId = null\r\n }\r\n\r\n if (this.memorySnapshotTimer) {\r\n clearInterval(this.memorySnapshotTimer)\r\n }\r\n\r\n // Clean up palette detector\r\n if (this._paletteDetector) {\r\n this._paletteDetector.cleanup()\r\n this._paletteDetector = null\r\n }\r\n this._paletteDetectionPromise = null\r\n this._cachedPalette = null\r\n\r\n this.emit(CliRenderEvents.DESTROY)\r\n\r\n if (this.renderTimeout) {\r\n clearTimeout(this.renderTimeout)\r\n this.renderTimeout = null\r\n }\r\n this._isRunning = false\r\n\r\n this.waitingForPixelResolution = false\r\n this.setCapturedRenderable(undefined)\r\n\r\n try {\r\n this.root.destroyRecursively()\r\n } catch (e) {\r\n console.error(\"Error destroying root renderable:\", e instanceof Error ? e.stack : String(e))\r\n }\r\n\r\n this._stdinBuffer.destroy()\r\n this._console.destroy()\r\n this.disableStdoutInterception()\r\n\r\n if (this._splitHeight > 0) {\r\n this.flushStdoutCache(this._splitHeight, true)\r\n }\r\n\r\n if (this.stdin.setRawMode) {\r\n this.stdin.setRawMode(false)\r\n }\r\n this.stdin.removeListener(\"data\", this.stdinListener)\r\n\r\n this.lib.destroyRenderer(this.rendererPtr)\r\n rendererTracker.removeRenderer(this)\r\n\r\n if (this._onDestroy) {\r\n try {\r\n this._onDestroy()\r\n } catch (e) {\r\n console.error(\"Error in onDestroy callback:\", e instanceof Error ? e.stack : String(e))\r\n }\r\n }\r\n\r\n // Resolve any pending idle() calls\r\n this.resolveIdleIfNeeded()\r\n }\r\n\r\n private startRenderLoop(): void {\r\n if (!this._isRunning) return\r\n\r\n this.lastTime = Date.now()\r\n this.frameCount = 0\r\n this.lastFpsTime = this.lastTime\r\n this.currentFps = 0\r\n\r\n this.loop()\r\n }\r\n\r\n private async loop(): Promise<void> {\r\n if (this.rendering || this._isDestroyed) return\r\n this.renderTimeout = null\r\n\r\n this.rendering = true\r\n if (this.renderTimeout) {\r\n clearTimeout(this.renderTimeout)\r\n this.renderTimeout = null\r\n }\r\n try {\r\n const now = Date.now()\r\n const elapsed = now - this.lastTime\r\n\r\n const deltaTime = elapsed\r\n this.lastTime = now\r\n\r\n this.frameCount++\r\n if (now - this.lastFpsTime >= 1000) {\r\n this.currentFps = this.frameCount\r\n this.frameCount = 0\r\n this.lastFpsTime = now\r\n }\r\n\r\n this.renderStats.frameCount++\r\n this.renderStats.fps = this.currentFps\r\n const overallStart = performance.now()\r\n\r\n const frameRequests = Array.from(this.animationRequest.values())\r\n this.animationRequest.clear()\r\n const animationRequestStart = performance.now()\r\n for (const callback of frameRequests) {\r\n callback(deltaTime)\r\n this.dropLive()\r\n }\r\n const animationRequestEnd = performance.now()\r\n const animationRequestTime = animationRequestEnd - animationRequestStart\r\n\r\n const start = performance.now()\r\n for (const frameCallback of this.frameCallbacks) {\r\n try {\r\n await frameCallback(deltaTime)\r\n } catch (error) {\r\n console.error(\"Error in frame callback:\", error)\r\n }\r\n }\r\n const end = performance.now()\r\n this.renderStats.frameCallbackTime = end - start\r\n\r\n this.root.render(this.nextRenderBuffer, deltaTime)\r\n\r\n for (const postProcessFn of this.postProcessFns) {\r\n postProcessFn(this.nextRenderBuffer, deltaTime)\r\n }\r\n\r\n this._console.renderToBuffer(this.nextRenderBuffer)\r\n\r\n // If destroy() was requested during this frame, skip native work and scheduling.\r\n if (!this._isDestroyed) {\r\n this.renderNative()\r\n\r\n // Check if hit grid changed and recheck hover state if needed\r\n if (this._useMouse && this.lib.getHitGridDirty(this.rendererPtr)) {\r\n this.recheckHoverState()\r\n }\r\n\r\n const overallFrameTime = performance.now() - overallStart\r\n\r\n // TODO: Add animationRequestTime to stats\r\n this.lib.updateStats(\r\n this.rendererPtr,\r\n overallFrameTime,\r\n this.renderStats.fps,\r\n this.renderStats.frameCallbackTime,\r\n )\r\n\r\n if (this.gatherStats) {\r\n this.collectStatSample(overallFrameTime)\r\n }\r\n\r\n if (this._isRunning || this.immediateRerenderRequested) {\r\n const targetFrameTime = this.immediateRerenderRequested ? this.minTargetFrameTime : this.targetFrameTime\r\n const delay = Math.max(1, targetFrameTime - Math.floor(overallFrameTime))\r\n this.immediateRerenderRequested = false\r\n this.renderTimeout = setTimeout(() => {\r\n this.renderTimeout = null\r\n this.loop()\r\n }, delay)\r\n } else {\r\n clearTimeout(this.renderTimeout!)\r\n this.renderTimeout = null\r\n }\r\n }\r\n } finally {\r\n this.rendering = false\r\n if (this._destroyPending) {\r\n this.finalizeDestroy()\r\n }\r\n this.resolveIdleIfNeeded()\r\n }\r\n }\r\n\r\n public intermediateRender(): void {\r\n this.immediateRerenderRequested = true\r\n this.loop()\r\n }\r\n\r\n private renderNative(): void {\r\n if (this.renderingNative) {\r\n console.error(\"Rendering called concurrently\")\r\n throw new Error(\"Rendering called concurrently\")\r\n }\r\n\r\n let force = false\r\n if (this._splitHeight > 0) {\r\n // TODO: Flickering could maybe be even more reduced by moving the flush to the native layer,\r\n // to output the flush with the buffered writer, after the render is done.\r\n force = this.flushStdoutCache(this._splitHeight)\r\n }\r\n\r\n this.renderingNative = true\r\n this.lib.render(this.rendererPtr, force)\r\n // this.dumpStdoutBuffer(Date.now())\r\n this.renderingNative = false\r\n }\r\n\r\n private collectStatSample(frameTime: number): void {\r\n this.frameTimes.push(frameTime)\r\n if (this.frameTimes.length > this.maxStatSamples) {\r\n this.frameTimes.shift()\r\n }\r\n }\r\n\r\n public getStats(): {\r\n fps: number\r\n frameCount: number\r\n frameTimes: number[]\r\n averageFrameTime: number\r\n minFrameTime: number\r\n maxFrameTime: number\r\n } {\r\n const frameTimes = [...this.frameTimes]\r\n const sum = frameTimes.reduce((acc, time) => acc + time, 0)\r\n const avg = frameTimes.length ? sum / frameTimes.length : 0\r\n const min = frameTimes.length ? Math.min(...frameTimes) : 0\r\n const max = frameTimes.length ? Math.max(...frameTimes) : 0\r\n\r\n return {\r\n fps: this.renderStats.fps,\r\n frameCount: this.renderStats.frameCount,\r\n frameTimes,\r\n averageFrameTime: avg,\r\n minFrameTime: min,\r\n maxFrameTime: max,\r\n }\r\n }\r\n\r\n public resetStats(): void {\r\n this.frameTimes = []\r\n this.renderStats.frameCount = 0\r\n }\r\n\r\n public setGatherStats(enabled: boolean): void {\r\n this.gatherStats = enabled\r\n if (!enabled) {\r\n this.frameTimes = []\r\n }\r\n }\r\n\r\n public getSelection(): Selection | null {\r\n return this.currentSelection\r\n }\r\n\r\n public get hasSelection(): boolean {\r\n return !!this.currentSelection\r\n }\r\n\r\n public getSelectionContainer(): Renderable | null {\r\n return this.selectionContainers.length > 0 ? this.selectionContainers[this.selectionContainers.length - 1] : null\r\n }\r\n\r\n public clearSelection(): void {\r\n if (this.currentSelection) {\r\n for (const renderable of this.currentSelection.touchedRenderables) {\r\n if (renderable.selectable && !renderable.isDestroyed) {\r\n renderable.onSelectionChanged(null)\r\n }\r\n }\r\n this.currentSelection = null\r\n }\r\n this.selectionContainers = []\r\n }\r\n\r\n /**\r\n * Start a new selection at the given coordinates.\r\n * Used by both mouse and keyboard selection.\r\n */\r\n public startSelection(renderable: Renderable, x: number, y: number): void {\r\n if (!renderable.selectable) return\r\n\r\n this.clearSelection()\r\n this.selectionContainers.push(renderable.parent || this.root)\r\n this.currentSelection = new Selection(renderable, { x, y }, { x, y })\r\n this.currentSelection.isStart = true\r\n\r\n this.notifySelectablesOfSelectionChange()\r\n }\r\n\r\n public updateSelection(\r\n currentRenderable: Renderable | undefined,\r\n x: number,\r\n y: number,\r\n options?: { finishDragging?: boolean },\r\n ): void {\r\n if (this.currentSelection) {\r\n this.currentSelection.isStart = false\r\n this.currentSelection.focus = { x, y }\r\n\r\n if (options?.finishDragging) {\r\n this.currentSelection.isDragging = false\r\n }\r\n\r\n if (this.selectionContainers.length > 0) {\r\n const currentContainer = this.selectionContainers[this.selectionContainers.length - 1]\r\n\r\n if (!currentRenderable || !this.isWithinContainer(currentRenderable, currentContainer)) {\r\n const parentContainer = currentContainer.parent || this.root\r\n this.selectionContainers.push(parentContainer)\r\n } else if (currentRenderable && this.selectionContainers.length > 1) {\r\n let containerIndex = this.selectionContainers.indexOf(currentRenderable)\r\n\r\n if (containerIndex === -1) {\r\n const immediateParent = currentRenderable.parent || this.root\r\n containerIndex = this.selectionContainers.indexOf(immediateParent)\r\n }\r\n\r\n if (containerIndex !== -1 && containerIndex < this.selectionContainers.length - 1) {\r\n this.selectionContainers = this.selectionContainers.slice(0, containerIndex + 1)\r\n }\r\n }\r\n }\r\n\r\n this.notifySelectablesOfSelectionChange()\r\n }\r\n }\r\n\r\n public requestSelectionUpdate(): void {\r\n if (this.currentSelection?.isDragging) {\r\n const pointer = this._latestPointer\r\n\r\n const maybeRenderableId = this.hitTest(pointer.x, pointer.y)\r\n const maybeRenderable = Renderable.renderablesByNumber.get(maybeRenderableId)\r\n\r\n this.updateSelection(maybeRenderable, pointer.x, pointer.y)\r\n }\r\n }\r\n\r\n private isWithinContainer(renderable: Renderable, container: Renderable): boolean {\r\n let current: Renderable | null = renderable\r\n while (current) {\r\n if (current === container) return true\r\n current = current.parent\r\n }\r\n return false\r\n }\r\n\r\n private finishSelection(): void {\r\n if (this.currentSelection) {\r\n this.currentSelection.isDragging = false\r\n this.emit(\"selection\", this.currentSelection)\r\n this.notifySelectablesOfSelectionChange()\r\n }\r\n }\r\n\r\n private notifySelectablesOfSelectionChange(): void {\r\n const selectedRenderables: Renderable[] = []\r\n const touchedRenderables: Renderable[] = []\r\n const currentContainer =\r\n this.selectionContainers.length > 0 ? this.selectionContainers[this.selectionContainers.length - 1] : this.root\r\n\r\n if (this.currentSelection) {\r\n this.walkSelectableRenderables(\r\n currentContainer,\r\n this.currentSelection.bounds,\r\n selectedRenderables,\r\n touchedRenderables,\r\n )\r\n\r\n for (const renderable of this.currentSelection.touchedRenderables) {\r\n if (!touchedRenderables.includes(renderable) && !renderable.isDestroyed) {\r\n renderable.onSelectionChanged(null)\r\n }\r\n }\r\n\r\n this.currentSelection.updateSelectedRenderables(selectedRenderables)\r\n this.currentSelection.updateTouchedRenderables(touchedRenderables)\r\n }\r\n }\r\n\r\n private walkSelectableRenderables(\r\n container: Renderable,\r\n selectionBounds: ViewportBounds,\r\n selectedRenderables: Renderable[],\r\n touchedRenderables: Renderable[],\r\n ): void {\r\n const children = getObjectsInViewport<Renderable>(\r\n selectionBounds,\r\n container.getChildrenSortedByPrimaryAxis(),\r\n container.primaryAxis,\r\n 0, // padding\r\n 0, // minTriggerSize - always perform overlap checks for selection\r\n )\r\n\r\n for (const child of children) {\r\n if (child.selectable) {\r\n const hasSelection = child.onSelectionChanged(this.currentSelection)\r\n if (hasSelection) {\r\n selectedRenderables.push(child)\r\n }\r\n touchedRenderables.push(child)\r\n }\r\n if (child.getChildrenCount() > 0) {\r\n this.walkSelectableRenderables(child, selectionBounds, selectedRenderables, touchedRenderables)\r\n }\r\n }\r\n }\r\n\r\n public get paletteDetectionStatus(): \"idle\" | \"detecting\" | \"cached\" {\r\n if (this._cachedPalette) return \"cached\"\r\n if (this._paletteDetectionPromise) return \"detecting\"\r\n return \"idle\"\r\n }\r\n\r\n public clearPaletteCache(): void {\r\n this._cachedPalette = null\r\n }\r\n\r\n /**\r\n * Detects the terminal's color palette\r\n *\r\n * @returns Promise resolving to TerminalColors object containing palette and special colors\r\n * @throws Error if renderer is suspended\r\n */\r\n public async getPalette(options?: GetPaletteOptions): Promise<TerminalColors> {\r\n if (this._controlState === RendererControlState.EXPLICIT_SUSPENDED) {\r\n throw new Error(\"Cannot detect palette while renderer is suspended\")\r\n }\r\n\r\n const requestedSize = options?.size ?? 16\r\n\r\n if (this._cachedPalette && this._cachedPalette.palette.length !== requestedSize) {\r\n this._cachedPalette = null\r\n }\r\n\r\n if (this._cachedPalette) {\r\n return this._cachedPalette\r\n }\r\n\r\n if (this._paletteDetectionPromise) {\r\n return this._paletteDetectionPromise\r\n }\r\n\r\n if (!this._paletteDetector) {\r\n const isLegacyTmux =\r\n this.capabilities?.terminal?.name?.toLowerCase()?.includes(\"tmux\") &&\r\n this.capabilities?.terminal?.version?.localeCompare(\"3.6\") < 0\r\n this._paletteDetector = createTerminalPalette(this.stdin, this.stdout, this.writeOut.bind(this), isLegacyTmux)\r\n }\r\n\r\n this._paletteDetectionPromise = this._paletteDetector.detect(options).then((result) => {\r\n this._cachedPalette = result\r\n this._paletteDetectionPromise = null\r\n return result\r\n })\r\n\r\n return this._paletteDetectionPromise\r\n }\r\n}\r\n",
|
|
54
|
+
"import { ANSI } from \"./ansi\"\r\nimport { Renderable, RootRenderable } from \"./Renderable\"\r\nimport {\r\n DebugOverlayCorner,\r\n type CursorStyleOptions,\r\n type MousePointerStyle,\r\n type RenderContext,\r\n type ThemeMode,\r\n type ViewportBounds,\r\n type WidthMethod,\r\n} from \"./types\"\r\nimport { RGBA, parseColor, type ColorInput } from \"./lib/RGBA\"\r\nimport type { Pointer } from \"bun:ffi\"\r\nimport { OptimizedBuffer } from \"./buffer\"\r\nimport { resolveRenderLib, type RenderLib } from \"./zig\"\r\nimport { TerminalConsole, type ConsoleOptions, capture } from \"./console\"\r\nimport { MouseParser, type MouseEventType, type RawMouseEvent, type ScrollInfo } from \"./lib/parse.mouse\"\r\nimport { Selection } from \"./lib/selection\"\r\nimport { Clipboard, type ClipboardTarget } from \"./lib/clipboard\"\r\nimport { EventEmitter } from \"events\"\r\nimport { destroySingleton, hasSingleton, singleton } from \"./lib/singleton\"\r\nimport { getObjectsInViewport } from \"./lib/objects-in-viewport\"\r\nimport { KeyHandler, InternalKeyHandler } from \"./lib/KeyHandler\"\r\nimport { StdinBuffer } from \"./lib/stdin-buffer\"\r\nimport { env, registerEnvVar } from \"./lib/env\"\r\nimport { getTreeSitterClient } from \"./lib/tree-sitter\"\r\nimport {\r\n createTerminalPalette,\r\n type TerminalPaletteDetector,\r\n type TerminalColors,\r\n type GetPaletteOptions,\r\n} from \"./lib/terminal-palette\"\r\nimport {\r\n isCapabilityResponse,\r\n isPixelResolutionResponse,\r\n parsePixelResolution,\r\n} from \"./lib/terminal-capability-detection\"\r\n\r\nregisterEnvVar({\r\n name: \"CASCADE_DUMP_CAPTURES\",\r\n description: \"Dump captured output when the renderer exits.\",\r\n type: \"boolean\",\r\n default: false,\r\n})\r\n\r\nregisterEnvVar({\r\n name: \"CASCADE_NO_NATIVE_RENDER\",\r\n description: \"Disable native rendering. This will not actually output ansi and is useful for debugging.\",\r\n type: \"boolean\",\r\n default: false,\r\n})\r\n\r\nregisterEnvVar({\r\n name: \"CASCADE_USE_ALTERNATE_SCREEN\",\r\n description: \"Whether to use the console. Will not capture console output if set to false.\",\r\n type: \"boolean\",\r\n default: true,\r\n})\r\n\r\nregisterEnvVar({\r\n name: \"CASCADE_OVERRIDE_STDOUT\",\r\n description: \"Override the stdout stream. This is useful for debugging.\",\r\n type: \"boolean\",\r\n default: true,\r\n})\r\n\r\nregisterEnvVar({\r\n name: \"CASCADE_DEBUG\",\r\n description: \"Enable debug mode to capture all raw input for debugging purposes.\",\r\n type: \"boolean\",\r\n default: false,\r\n})\r\n\r\nregisterEnvVar({\n name: \"CASCADE_SHOW_STATS\",\n description: \"Show the debug overlay at startup.\",\n type: \"boolean\",\n default: false,\n})\n\nregisterEnvVar({\n name: \"CASCADE_LOG_CRASH_REPORTS\",\n description: \"Log detailed crash reports to the console when a crash is captured.\",\n type: \"boolean\",\n default: false,\n})\n\r\nexport interface CliRendererConfig {\r\n stdin?: NodeJS.ReadStream\r\n stdout?: NodeJS.WriteStream\r\n remote?: boolean\r\n testing?: boolean\r\n exitOnCtrlC?: boolean\r\n exitSignals?: NodeJS.Signals[]\r\n forwardEnvKeys?: string[]\r\n debounceDelay?: number\r\n targetFps?: number\r\n maxFps?: number\r\n memorySnapshotInterval?: number\r\n useThread?: boolean\r\n gatherStats?: boolean\r\n maxStatSamples?: number\r\n consoleOptions?: ConsoleOptions\r\n postProcessFns?: ((buffer: OptimizedBuffer, deltaTime: number) => void)[]\r\n enableMouseMovement?: boolean\r\n useMouse?: boolean\r\n autoFocus?: boolean\r\n useAlternateScreen?: boolean\r\n useConsole?: boolean\r\n experimental_splitHeight?: number\r\n useKittyKeyboard?: KittyKeyboardOptions | null\r\n backgroundColor?: ColorInput\n openConsoleOnError?: boolean\n logCrashReportsToConsole?: boolean\n prependInputHandlers?: ((sequence: string) => boolean)[]\n onDestroy?: () => void\n}\n\r\nexport type PixelResolution = {\r\n width: number\r\n height: number\r\n}\r\n\r\nconst DEFAULT_FORWARDED_ENV_KEYS = [\r\n \"TMUX\",\r\n \"TERM\",\r\n \"CASCADE_GRAPHICS\",\r\n \"TERM_PROGRAM\",\r\n \"TERM_PROGRAM_VERSION\",\r\n \"ALACRITTY_SOCKET\",\r\n \"ALACRITTY_LOG\",\r\n \"COLORTERM\",\r\n \"TERMUX_VERSION\",\r\n \"VHS_RECORD\",\r\n \"CASCADE_FORCE_WCWIDTH\",\r\n \"CASCADE_FORCE_UNICODE\",\r\n \"CASCADE_FORCE_NOZWJ\",\r\n \"CASCADE_FORCE_EXPLICIT_WIDTH\",\r\n \"WT_SESSION\",\r\n \"STY\",\r\n] as const\r\n\r\n// Kitty keyboard protocol flags\r\n// See: https://sw.kovidgoyal.net/kitty/keyboard-protocol/\r\nconst KITTY_FLAG_DISAMBIGUATE = 0b1 // Report disambiguated escape codes\r\nconst KITTY_FLAG_EVENT_TYPES = 0b10 // Report event types (press/repeat/release)\r\nconst KITTY_FLAG_ALTERNATE_KEYS = 0b100 // Report alternate keys (e.g., numpad vs regular)\r\nconst KITTY_FLAG_ALL_KEYS_AS_ESCAPES = 0b1000 // Report all keys as escape codes\r\nconst KITTY_FLAG_REPORT_TEXT = 0b10000 // Report text associated with key events\r\n\r\n/**\r\n * Kitty Keyboard Protocol configuration options\r\n * See: https://sw.kovidgoyal.net/kitty/keyboard-protocol/#progressive-enhancement\r\n */\r\nexport interface KittyKeyboardOptions {\r\n /** Disambiguate escape codes (fixes ESC timing, alt+key ambiguity, ctrl+c as event). Default: true */\r\n disambiguate?: boolean\r\n /** Report alternate keys (numpad, shifted, base layout) for cross-keyboard shortcuts. Default: true */\r\n alternateKeys?: boolean\r\n /** Report event types (press/repeat/release). Default: false */\r\n events?: boolean\r\n /** Report all keys as escape codes. Default: false */\r\n allKeysAsEscapes?: boolean\r\n /** Report text associated with key events. Default: false */\r\n reportText?: boolean\r\n}\r\n\r\n/**\r\n * Build kitty keyboard protocol flags based on configuration\r\n * @param config Kitty keyboard configuration object (null/undefined = disabled)\r\n * @returns The combined flags value (0 = disabled, >0 = enabled)\r\n * @internal Exported for testing\r\n */\r\nexport function buildKittyKeyboardFlags(config: KittyKeyboardOptions | null | undefined): number {\r\n if (!config) {\r\n return 0\r\n }\r\n\r\n let flags = 0\r\n\r\n // Default: disambiguate + alternate keys (both default to true)\r\n // - Disambiguate (0b1): Fixes ESC timing issues, alt+key ambiguity, makes ctrl+c a key event\r\n // - Alternate keys (0b100): Reports shifted/base-layout keys for cross-keyboard shortcuts\r\n\r\n // disambiguate defaults to true unless explicitly set to false\r\n if (config.disambiguate !== false) {\r\n flags |= KITTY_FLAG_DISAMBIGUATE\r\n }\r\n\r\n // alternateKeys defaults to true unless explicitly set to false\r\n if (config.alternateKeys !== false) {\r\n flags |= KITTY_FLAG_ALTERNATE_KEYS\r\n }\r\n\r\n // Optional flags (default to false, only enabled when explicitly true)\r\n if (config.events === true) {\r\n flags |= KITTY_FLAG_EVENT_TYPES\r\n }\r\n\r\n if (config.allKeysAsEscapes === true) {\r\n flags |= KITTY_FLAG_ALL_KEYS_AS_ESCAPES\r\n }\r\n\r\n if (config.reportText === true) {\r\n flags |= KITTY_FLAG_REPORT_TEXT\r\n }\r\n\r\n return flags\r\n}\r\n\r\nexport class MouseEvent {\n public readonly type: MouseEventType\r\n public readonly button: number\r\n public readonly x: number\r\n public readonly y: number\r\n public readonly source?: Renderable\r\n public readonly modifiers: {\r\n shift: boolean\r\n alt: boolean\r\n ctrl: boolean\r\n }\r\n public readonly scroll?: ScrollInfo\r\n public readonly target: Renderable | null\r\n public readonly isDragging?: boolean\n public readonly clickCount: number\n private _propagationStopped: boolean = false\n private _defaultPrevented: boolean = false\n private _visitedRenderableNums: Set<number> = new Set()\n\r\n public get propagationStopped(): boolean {\r\n return this._propagationStopped\r\n }\r\n\r\n public get defaultPrevented(): boolean {\r\n return this._defaultPrevented\r\n }\r\n\r\n constructor(\n target: Renderable | null,\n attributes: RawMouseEvent & { source?: Renderable; isDragging?: boolean; clickCount?: number },\n ) {\n this.target = target\n this.type = attributes.type\r\n this.button = attributes.button\r\n this.x = attributes.x\r\n this.y = attributes.y\r\n this.modifiers = attributes.modifiers\r\n this.scroll = attributes.scroll\r\n this.source = attributes.source\n this.isDragging = attributes.isDragging\n this.clickCount = attributes.clickCount ?? 1\n }\n\r\n public stopPropagation(): void {\r\n this._propagationStopped = true\r\n }\r\n\r\n public preventDefault(): void {\n this._defaultPrevented = true\n }\n\n public tryVisit(renderable: Renderable): boolean {\n if (this._visitedRenderableNums.has(renderable.num)) {\n return false\n }\n this._visitedRenderableNums.add(renderable.num)\n return true\n }\n}\n\r\nexport enum MouseButton {\r\n LEFT = 0,\r\n MIDDLE = 1,\r\n RIGHT = 2,\r\n WHEEL_UP = 4,\r\n WHEEL_DOWN = 5,\r\n}\r\n\r\nconst rendererTracker = singleton(\"RendererTracker\", () => {\r\n const renderers = new Set<CliRenderer>()\r\n return {\r\n addRenderer: (renderer: CliRenderer) => {\r\n renderers.add(renderer)\r\n },\r\n removeRenderer: (renderer: CliRenderer) => {\r\n renderers.delete(renderer)\r\n if (renderers.size === 0) {\r\n process.stdin.pause()\r\n\r\n if (hasSingleton(\"tree-sitter-client\")) {\r\n getTreeSitterClient().destroy()\r\n destroySingleton(\"tree-sitter-client\")\r\n }\r\n }\r\n },\r\n }\r\n})\r\n\r\nexport async function createCliRenderer(config: CliRendererConfig = {}): Promise<CliRenderer> {\r\n if (process.argv.includes(\"--delay-start\")) {\r\n await new Promise((resolve) => setTimeout(resolve, 5000))\r\n }\r\n const stdin = config.stdin || process.stdin\r\n const stdout = config.stdout || process.stdout\r\n\r\n const width = stdout.columns || 80\r\n const height = stdout.rows || 24\r\n const renderHeight =\r\n config.experimental_splitHeight && config.experimental_splitHeight > 0 ? config.experimental_splitHeight : height\r\n\r\n const ziglib = resolveRenderLib()\r\n const rendererPtr = ziglib.createRenderer(width, renderHeight, {\r\n remote: config.remote ?? false,\r\n testing: config.testing ?? false,\r\n })\r\n if (!rendererPtr) {\r\n throw new Error(\"Failed to create renderer\")\r\n }\r\n if (config.useThread === undefined) {\r\n config.useThread = true\r\n }\r\n\r\n // Disable threading on linux because there currently is currently an issue\r\n // might be just a missing dependency for the build or something, but threads crash on linux\r\n if (process.platform === \"linux\") {\r\n config.useThread = false\r\n }\r\n ziglib.setUseThread(rendererPtr, config.useThread)\r\n\r\n const kittyConfig = config.useKittyKeyboard ?? {}\r\n const kittyFlags = buildKittyKeyboardFlags(kittyConfig)\r\n\r\n ziglib.setKittyKeyboardFlags(rendererPtr, kittyFlags)\r\n\r\n const renderer = new CliRenderer(ziglib, rendererPtr, stdin, stdout, width, height, config)\r\n if (!config.testing) {\r\n await renderer.setupTerminal()\r\n }\r\n return renderer\r\n}\r\n\r\nexport enum CliRenderEvents {\n DEBUG_OVERLAY_TOGGLE = \"debugOverlay:toggle\",\n DESTROY = \"destroy\",\n CRASH = \"crash\",\n}\n\nexport type RuntimeEventRecord = {\n timestamp: string\n type: string\n payload: Record<string, unknown>\n}\n\nexport type CrashReport = {\n timestamp: string\n source: string\n message: string\n stack?: string\n recentEvents: RuntimeEventRecord[]\n}\n\r\nexport enum RendererControlState {\r\n IDLE = \"idle\",\r\n AUTO_STARTED = \"auto_started\",\r\n EXPLICIT_STARTED = \"explicit_started\",\r\n EXPLICIT_PAUSED = \"explicit_paused\",\r\n EXPLICIT_SUSPENDED = \"explicit_suspended\",\r\n EXPLICIT_STOPPED = \"explicit_stopped\",\r\n}\r\n\r\nexport class CliRenderer extends EventEmitter implements RenderContext {\r\n private static animationFrameId = 0\r\n private lib: RenderLib\r\n public rendererPtr: Pointer\r\n public stdin: NodeJS.ReadStream\r\n private stdout: NodeJS.WriteStream\r\n private exitOnCtrlC: boolean\r\n private exitSignals: NodeJS.Signals[]\r\n private _exitListenersAdded: boolean = false\r\n private _isDestroyed: boolean = false\r\n private _destroyPending: boolean = false\r\n private _destroyFinalized: boolean = false\r\n public nextRenderBuffer: OptimizedBuffer\r\n public currentRenderBuffer: OptimizedBuffer\r\n private _isRunning: boolean = false\r\n private targetFps: number = 30\r\n private maxFps: number = 60\r\n private automaticMemorySnapshot: boolean = false\r\n private memorySnapshotInterval: number\r\n private memorySnapshotTimer: Timer | null = null\r\n private lastMemorySnapshot: { heapUsed: number; heapTotal: number; arrayBuffers: number } = {\r\n heapUsed: 0,\r\n heapTotal: 0,\r\n arrayBuffers: 0,\r\n }\r\n public readonly root: RootRenderable\r\n public width: number\r\n public height: number\r\n private _useThread: boolean = false\r\n private gatherStats: boolean = false\r\n private frameTimes: number[] = []\r\n private maxStatSamples: number = 300\r\n private postProcessFns: ((buffer: OptimizedBuffer, deltaTime: number) => void)[] = []\r\n private backgroundColor: RGBA = RGBA.fromInts(0, 0, 0, 0)\r\n private waitingForPixelResolution: boolean = false\r\n\r\n private rendering: boolean = false\r\n private renderingNative: boolean = false\r\n private renderTimeout: Timer | null = null\r\n private lastTime: number = 0\r\n private frameCount: number = 0\r\n private lastFpsTime: number = 0\r\n private currentFps: number = 0\r\n private targetFrameTime: number = 1000 / this.targetFps\r\n private minTargetFrameTime: number = 1000 / this.maxFps\r\n private immediateRerenderRequested: boolean = false\r\n private updateScheduled: boolean = false\r\n\r\n private liveRequestCounter: number = 0\r\n private _controlState: RendererControlState = RendererControlState.IDLE\r\n\r\n private frameCallbacks: ((deltaTime: number) => Promise<void>)[] = []\r\n private renderStats: {\r\n frameCount: number\r\n fps: number\r\n renderTime?: number\r\n frameCallbackTime: number\r\n } = {\r\n frameCount: 0,\r\n fps: 0,\r\n renderTime: 0,\r\n frameCallbackTime: 0,\r\n }\r\n public debugOverlay = {\r\n enabled: env.CASCADE_SHOW_STATS,\r\n corner: DebugOverlayCorner.bottomRight,\r\n }\r\n\r\n private _console: TerminalConsole\r\n private _resolution: PixelResolution | null = null\r\n private _keyHandler: InternalKeyHandler\r\n private _stdinBuffer: StdinBuffer\r\n\r\n private animationRequest: Map<number, FrameRequestCallback> = new Map()\r\n\r\n private resizeTimeoutId: ReturnType<typeof setTimeout> | null = null\r\n private capabilityTimeoutId: ReturnType<typeof setTimeout> | null = null\r\n private resizeDebounceDelay: number = 100\r\n\r\n private enableMouseMovement: boolean = false\r\n private _useMouse: boolean = true\r\n private autoFocus: boolean = true\r\n private _useAlternateScreen: boolean = env.CASCADE_USE_ALTERNATE_SCREEN\r\n private _suspendedMouseEnabled: boolean = false\r\n private _previousControlState: RendererControlState = RendererControlState.IDLE\r\n private capturedRenderable?: Renderable\r\n private lastOverRenderableNum: number = 0\r\n private lastOverRenderable?: Renderable\r\n\r\n private currentSelection: Selection | null = null\r\n private selectionContainers: Renderable[] = []\r\n private clipboard: Clipboard\r\n\r\n private _splitHeight: number = 0\r\n private renderOffset: number = 0\r\n\r\n private _terminalWidth: number = 0\r\n private _terminalHeight: number = 0\r\n private _terminalIsSetup: boolean = false\r\n\r\n private realStdoutWrite: (chunk: any, encoding?: any, callback?: any) => boolean\r\n private captureCallback: () => void = () => {\r\n if (this._splitHeight > 0) {\r\n this.requestRender()\r\n }\r\n }\r\n\r\n private _useConsole: boolean = true\r\n private mouseParser: MouseParser = new MouseParser()\r\n private sigwinchHandler: () => void = (() => {\r\n const width = this.stdout.columns || 80\r\n const height = this.stdout.rows || 24\r\n this.handleResize(width, height)\r\n }).bind(this)\r\n private _capabilities: any | null = null\r\n private _latestPointer: { x: number; y: number } = { x: 0, y: 0 }\r\n private _hasPointer: boolean = false\r\n private _lastPointerModifiers: RawMouseEvent[\"modifiers\"] = { shift: false, alt: false, ctrl: false }\n private _currentMousePointerStyle: MousePointerStyle | undefined = undefined\n private _lastClick: { x: number; y: number; button: number; timestamp: number; count: number } | null = null\n private readonly clickCountThresholdMs: number = 400\n\r\n private _currentFocusedRenderable: Renderable | null = null\r\n private lifecyclePasses: Set<Renderable> = new Set()\r\n private _openConsoleOnError: boolean = true\n private _logCrashReportsToConsole: boolean = env.CASCADE_LOG_CRASH_REPORTS\n private _paletteDetector: TerminalPaletteDetector | null = null\n private _cachedPalette: TerminalColors | null = null\r\n private _paletteDetectionPromise: Promise<TerminalColors> | null = null\r\n private _onDestroy?: () => void\r\n private _themeMode: ThemeMode | null = null\r\n\r\n private inputHandlers: ((sequence: string) => boolean)[] = []\r\n private prependedInputHandlers: ((sequence: string) => boolean)[] = []\r\n\r\n private idleResolvers: (() => void)[] = []\r\n\r\n private _debugInputs: Array<{ timestamp: string; sequence: string }> = []\n private _debugModeEnabled: boolean = env.CASCADE_DEBUG\n private recentRuntimeEvents: RuntimeEventRecord[] = []\n private crashReports: CrashReport[] = []\n private maxRecentRuntimeEvents = 200\n private maxCrashReports = 20\n\n private handleProcessCrash = (reason: unknown, source: \"uncaughtException\" | \"unhandledRejection\"): void => {\n const report = this.reportCrash(reason, source)\n console.error(reason)\n\n if (this._openConsoleOnError) {\n this.console.show()\n console.log(`[crash:${report.source}] ${report.message}`)\n }\n }\n\n private uncaughtExceptionHandler: (error: Error) => void = ((error: Error) => {\n this.handleProcessCrash(error, \"uncaughtException\")\n }).bind(this)\n\n private unhandledRejectionHandler: (reason: unknown) => void = ((reason: unknown) => {\n this.handleProcessCrash(reason, \"unhandledRejection\")\n }).bind(this)\n\r\n private dumpOutputCache(optionalMessage: string = \"\"): void {\r\n const cachedLogs = this.console.getCachedLogs()\r\n const capturedOutput = capture.claimOutput()\r\n\r\n if (capturedOutput.length > 0 || cachedLogs.length > 0) {\r\n this.realStdoutWrite.call(this.stdout, optionalMessage)\r\n }\r\n\r\n if (cachedLogs.length > 0) {\r\n this.realStdoutWrite.call(this.stdout, \"Console cache:\\n\")\r\n this.realStdoutWrite.call(this.stdout, cachedLogs)\r\n }\r\n\r\n if (capturedOutput.length > 0) {\r\n this.realStdoutWrite.call(this.stdout, \"\\nCaptured output:\\n\")\r\n this.realStdoutWrite.call(this.stdout, capturedOutput + \"\\n\")\r\n }\r\n\r\n this.realStdoutWrite.call(this.stdout, ANSI.reset)\r\n }\r\n\r\n private exitHandler: () => void = (() => {\r\n this.destroy()\r\n if (env.CASCADE_DUMP_CAPTURES) {\r\n Bun.sleep(100).then(() => {\r\n this.dumpOutputCache(\"=== CAPTURED OUTPUT ===\\n\")\r\n })\r\n }\r\n }).bind(this)\r\n\r\n private warningHandler: (warning: any) => void = ((warning: any) => {\r\n console.warn(JSON.stringify(warning.message, null, 2))\r\n }).bind(this)\r\n\r\n public get controlState(): RendererControlState {\r\n return this._controlState\r\n }\r\n\r\n constructor(\r\n lib: RenderLib,\r\n rendererPtr: Pointer,\r\n stdin: NodeJS.ReadStream,\r\n stdout: NodeJS.WriteStream,\r\n width: number,\r\n height: number,\r\n config: CliRendererConfig = {},\r\n ) {\r\n super()\r\n\r\n rendererTracker.addRenderer(this)\r\n\r\n this.stdin = stdin\r\n this.stdout = stdout\r\n this.realStdoutWrite = stdout.write\r\n this.lib = lib\r\n this._terminalWidth = stdout.columns ?? width\r\n this._terminalHeight = stdout.rows ?? height\r\n this.width = width\r\n this.height = height\r\n this._useThread = config.useThread === undefined ? false : config.useThread\r\n this._splitHeight = config.experimental_splitHeight || 0\r\n\r\n if (this._splitHeight > 0) {\r\n capture.on(\"write\", this.captureCallback)\r\n this.renderOffset = height - this._splitHeight\r\n this.height = this._splitHeight\r\n lib.setRenderOffset(rendererPtr, this.renderOffset)\r\n }\r\n\r\n this.rendererPtr = rendererPtr\r\n\r\n const forwardEnvKeys = config.forwardEnvKeys ?? [...DEFAULT_FORWARDED_ENV_KEYS]\r\n for (const key of forwardEnvKeys) {\r\n const value = process.env[key]\r\n if (value === undefined) continue\r\n this.lib.setTerminalEnvVar(this.rendererPtr, key, value)\r\n }\r\n\r\n this.exitOnCtrlC = config.exitOnCtrlC === undefined ? true : config.exitOnCtrlC\r\n this.exitSignals = config.exitSignals || [\r\n \"SIGINT\", // Ctrl+C\r\n \"SIGTERM\", // Termination signal\r\n \"SIGQUIT\", // Ctrl+\\\r\n \"SIGABRT\", // Abort signal\r\n \"SIGHUP\", // Hangup (terminal closed)\r\n \"SIGBREAK\", // Ctrl+Break on Windows\r\n \"SIGPIPE\", // Broken pipe\r\n \"SIGBUS\", // Bus error\r\n \"SIGFPE\", // Floating point exception\r\n ]\r\n\r\n this.clipboard = new Clipboard(this.lib, this.rendererPtr)\r\n this.resizeDebounceDelay = config.debounceDelay || 100\r\n this.targetFps = config.targetFps || 30\r\n this.maxFps = config.maxFps || 60\r\n this.targetFrameTime = 1000 / this.targetFps\r\n this.minTargetFrameTime = 1000 / this.maxFps\r\n this.memorySnapshotInterval = config.memorySnapshotInterval ?? 0\r\n this.gatherStats = config.gatherStats || false\r\n this.maxStatSamples = config.maxStatSamples || 300\r\n this.enableMouseMovement = config.enableMouseMovement ?? true\r\n this._useMouse = config.useMouse ?? true\r\n this.autoFocus = config.autoFocus ?? true\r\n this._useAlternateScreen = config.useAlternateScreen ?? env.CASCADE_USE_ALTERNATE_SCREEN\r\n this.nextRenderBuffer = this.lib.getNextBuffer(this.rendererPtr)\r\n this.currentRenderBuffer = this.lib.getCurrentBuffer(this.rendererPtr)\r\n this.postProcessFns = config.postProcessFns || []\r\n this.prependedInputHandlers = config.prependInputHandlers || []\r\n\r\n this.root = new RootRenderable(this)\r\n\r\n if (this.memorySnapshotInterval > 0) {\r\n this.startMemorySnapshotTimer()\r\n }\r\n\r\n if (env.CASCADE_OVERRIDE_STDOUT) {\r\n this.stdout.write = this.interceptStdoutWrite.bind(this)\r\n }\r\n\r\n // Handle terminal resize\r\n process.on(\"SIGWINCH\", this.sigwinchHandler)\r\n\r\n process.on(\"warning\", this.warningHandler)\r\n\r\n process.on(\"uncaughtException\", this.uncaughtExceptionHandler)\n process.on(\"unhandledRejection\", this.unhandledRejectionHandler)\n process.on(\"beforeExit\", this.exitHandler)\r\n\r\n const kittyConfig = config.useKittyKeyboard ?? {}\r\n const useKittyForParsing = kittyConfig !== null\r\n this._keyHandler = new InternalKeyHandler(useKittyForParsing)\n this._keyHandler.on(\"keypress\", (event) => {\n if (event.name === \"c\" && event.ctrl) {\n if (this.copyActiveSelectionToClipboard()) {\n event.preventDefault()\n return\n }\n }\n\n if (this.exitOnCtrlC && event.name === \"c\" && event.ctrl) {\n process.nextTick(() => {\n this.destroy()\n })\n return\n }\n })\r\n\r\n this.addExitListeners()\r\n\r\n this._stdinBuffer = new StdinBuffer({ timeout: 5 })\r\n\r\n const consoleOptions = { ...(config.consoleOptions || {}) }\n if (!consoleOptions.onCopySelection) {\n consoleOptions.onCopySelection = (text: string) => {\n this.copyToClipboard(text)\n }\n }\n this._console = new TerminalConsole(this, consoleOptions)\n this.useConsole = config.useConsole ?? true\n this._openConsoleOnError = config.openConsoleOnError ?? process.env.NODE_ENV !== \"production\"\n this._logCrashReportsToConsole = config.logCrashReportsToConsole ?? env.CASCADE_LOG_CRASH_REPORTS\n this._onDestroy = config.onDestroy\n\r\n global.requestAnimationFrame = (callback: FrameRequestCallback) => {\r\n const id = CliRenderer.animationFrameId++\r\n this.animationRequest.set(id, callback)\r\n this.requestLive()\r\n return id\r\n }\r\n global.cancelAnimationFrame = (handle: number) => {\r\n this.animationRequest.delete(handle)\r\n }\r\n\r\n const window = global.window\r\n if (!window) {\r\n global.window = {} as Window & typeof globalThis\r\n }\r\n global.window.requestAnimationFrame = requestAnimationFrame\r\n\r\n // Prevents output from being written to the terminal, useful for debugging\r\n if (env.CASCADE_NO_NATIVE_RENDER) {\r\n this.renderNative = () => {\r\n if (this._splitHeight > 0) {\r\n this.flushStdoutCache(this._splitHeight)\r\n }\r\n }\r\n }\r\n\r\n this.setupInput()\r\n }\r\n\r\n private addExitListeners(): void {\r\n if (this._exitListenersAdded || this.exitSignals.length === 0) return\r\n\r\n this.exitSignals.forEach((signal) => {\r\n process.addListener(signal, this.exitHandler)\r\n })\r\n\r\n this._exitListenersAdded = true\r\n }\r\n\r\n private removeExitListeners(): void {\r\n if (!this._exitListenersAdded || this.exitSignals.length === 0) return\r\n\r\n this.exitSignals.forEach((signal) => {\r\n process.removeListener(signal, this.exitHandler)\r\n })\r\n\r\n this._exitListenersAdded = false\r\n }\r\n\r\n public get isDestroyed(): boolean {\r\n return this._isDestroyed\r\n }\r\n\r\n public registerLifecyclePass(renderable: Renderable) {\r\n this.lifecyclePasses.add(renderable)\r\n }\r\n\r\n public unregisterLifecyclePass(renderable: Renderable) {\r\n this.lifecyclePasses.delete(renderable)\r\n }\r\n\r\n public getLifecyclePasses() {\r\n return this.lifecyclePasses\r\n }\r\n\r\n public get currentFocusedRenderable(): Renderable | null {\r\n return this._currentFocusedRenderable\r\n }\r\n\r\n public focusRenderable(renderable: Renderable) {\r\n if (this._currentFocusedRenderable === renderable) return\r\n\r\n if (this._currentFocusedRenderable) {\r\n this._currentFocusedRenderable.blur()\r\n }\r\n\r\n this._currentFocusedRenderable = renderable\r\n }\r\n\r\n private setCapturedRenderable(renderable: Renderable | undefined): void {\r\n if (this.capturedRenderable === renderable) {\r\n return\r\n }\r\n this.capturedRenderable = renderable\r\n }\r\n\r\n public addToHitGrid(x: number, y: number, width: number, height: number, id: number) {\r\n if (id !== this.capturedRenderable?.num) {\r\n this.lib.addToHitGrid(this.rendererPtr, x, y, width, height, id)\r\n }\r\n }\r\n\r\n public pushHitGridScissorRect(x: number, y: number, width: number, height: number): void {\r\n this.lib.hitGridPushScissorRect(this.rendererPtr, x, y, width, height)\r\n }\r\n\r\n public popHitGridScissorRect(): void {\r\n this.lib.hitGridPopScissorRect(this.rendererPtr)\r\n }\r\n\r\n public clearHitGridScissorRects(): void {\r\n this.lib.hitGridClearScissorRects(this.rendererPtr)\r\n }\r\n\r\n public get widthMethod(): WidthMethod {\r\n const caps = this.capabilities\r\n return caps?.unicode === \"wcwidth\" ? \"wcwidth\" : \"unicode\"\r\n }\r\n\r\n private writeOut(chunk: any, encoding?: any, callback?: any): boolean {\r\n if (this.rendererPtr && this._useThread) {\r\n const data = typeof chunk === \"string\" ? chunk : (chunk?.toString() ?? \"\")\r\n this.lib.writeOut(this.rendererPtr, data)\r\n if (typeof callback === \"function\") {\r\n process.nextTick(callback)\r\n }\r\n return true\r\n }\r\n\r\n return this.realStdoutWrite.call(this.stdout, chunk, encoding, callback)\r\n }\r\n\r\n public requestRender() {\r\n if (this._controlState === RendererControlState.EXPLICIT_SUSPENDED) {\r\n return\r\n }\r\n\r\n if (this._isRunning) {\r\n return\r\n }\r\n\r\n // NOTE: Using a frame callback that causes a re-render while already rendering\r\n // leads to a continuous loop of renders.\r\n if (this.rendering) {\r\n this.immediateRerenderRequested = true\r\n return\r\n }\r\n\r\n if (!this.updateScheduled && !this.renderTimeout) {\r\n this.updateScheduled = true\r\n const now = Date.now()\r\n const elapsed = now - this.lastTime\r\n const delay = Math.max(this.minTargetFrameTime - elapsed, 0)\r\n\r\n if (delay === 0) {\r\n process.nextTick(() => this.activateFrame())\r\n return\r\n }\r\n\r\n setTimeout(() => this.activateFrame(), delay)\r\n }\r\n }\r\n\r\n private async activateFrame() {\r\n await this.loop()\r\n this.updateScheduled = false\r\n this.resolveIdleIfNeeded()\r\n }\r\n\r\n public get useConsole(): boolean {\r\n return this._useConsole\r\n }\r\n\r\n public set useConsole(value: boolean) {\r\n this._useConsole = value\r\n if (value) {\r\n this.console.activate()\r\n } else {\r\n this.console.deactivate()\r\n }\r\n }\r\n\r\n public get isRunning(): boolean {\r\n return this._isRunning\r\n }\r\n\r\n private isIdleNow(): boolean {\r\n return (\r\n !this._isRunning &&\r\n !this.rendering &&\r\n !this.renderTimeout &&\r\n !this.updateScheduled &&\r\n !this.immediateRerenderRequested\r\n )\r\n }\r\n\r\n private resolveIdleIfNeeded(): void {\r\n if (!this.isIdleNow()) return\r\n const resolvers = this.idleResolvers.splice(0)\r\n for (const resolve of resolvers) {\r\n resolve()\r\n }\r\n }\r\n\r\n public idle(): Promise<void> {\r\n if (this._isDestroyed) return Promise.resolve()\r\n if (this.isIdleNow()) return Promise.resolve()\r\n return new Promise<void>((resolve) => {\r\n this.idleResolvers.push(resolve)\r\n })\r\n }\r\n\r\n public get resolution(): PixelResolution | null {\r\n return this._resolution\r\n }\r\n\r\n public get console(): TerminalConsole {\r\n return this._console\r\n }\r\n\r\n public get keyInput(): KeyHandler {\r\n return this._keyHandler\r\n }\r\n\r\n public get _internalKeyInput(): InternalKeyHandler {\r\n return this._keyHandler\r\n }\r\n\r\n public get terminalWidth(): number {\r\n return this._terminalWidth\r\n }\r\n\r\n public get terminalHeight(): number {\r\n return this._terminalHeight\r\n }\r\n\r\n public get useThread(): boolean {\r\n return this._useThread\r\n }\r\n\r\n public get useMouse(): boolean {\r\n return this._useMouse\r\n }\r\n\r\n public set useMouse(useMouse: boolean) {\r\n if (this._useMouse === useMouse) return // No change needed\r\n\r\n this._useMouse = useMouse\r\n\r\n if (useMouse) {\r\n this.enableMouse()\r\n } else {\r\n this.disableMouse()\r\n }\r\n }\r\n\r\n public get experimental_splitHeight(): number {\r\n return this._splitHeight\r\n }\r\n\r\n public get liveRequestCount(): number {\r\n return this.liveRequestCounter\r\n }\r\n\r\n public get currentControlState(): string {\r\n return this._controlState\r\n }\r\n\r\n public get capabilities(): any | null {\r\n return this._capabilities\r\n }\r\n\r\n public get themeMode(): ThemeMode | null {\r\n return this._themeMode\r\n }\r\n\r\n public getDebugInputs(): Array<{ timestamp: string; sequence: string }> {\r\n return [...this._debugInputs]\r\n }\r\n\r\n public get useKittyKeyboard(): boolean {\r\n return this.lib.getKittyKeyboardFlags(this.rendererPtr) > 0\r\n }\r\n\r\n public set useKittyKeyboard(use: boolean) {\r\n const flags = use ? KITTY_FLAG_DISAMBIGUATE | KITTY_FLAG_ALTERNATE_KEYS : 0\r\n this.lib.setKittyKeyboardFlags(this.rendererPtr, flags)\r\n }\r\n\r\n public set experimental_splitHeight(splitHeight: number) {\r\n if (splitHeight < 0) splitHeight = 0\r\n\r\n const prevSplitHeight = this._splitHeight\r\n\r\n if (splitHeight > 0) {\r\n this._splitHeight = splitHeight\r\n this.renderOffset = this._terminalHeight - this._splitHeight\r\n this.height = this._splitHeight\r\n\r\n if (prevSplitHeight === 0) {\r\n this.useConsole = false\r\n capture.on(\"write\", this.captureCallback)\r\n const freedLines = this._terminalHeight - this._splitHeight\r\n const scrollDown = ANSI.scrollDown(freedLines)\r\n this.writeOut(scrollDown)\r\n } else if (prevSplitHeight > this._splitHeight) {\r\n const freedLines = prevSplitHeight - this._splitHeight\r\n const scrollDown = ANSI.scrollDown(freedLines)\r\n this.writeOut(scrollDown)\r\n } else if (prevSplitHeight < this._splitHeight) {\r\n const additionalLines = this._splitHeight - prevSplitHeight\r\n const scrollUp = ANSI.scrollUp(additionalLines)\r\n this.writeOut(scrollUp)\r\n }\r\n } else {\r\n if (prevSplitHeight > 0) {\r\n this.flushStdoutCache(this._terminalHeight, true)\r\n\r\n capture.off(\"write\", this.captureCallback)\r\n this.useConsole = true\r\n }\r\n\r\n this._splitHeight = 0\r\n this.renderOffset = 0\r\n this.height = this._terminalHeight\r\n }\r\n\r\n this.width = this._terminalWidth\r\n this.lib.setRenderOffset(this.rendererPtr, this.renderOffset)\r\n this.lib.resizeRenderer(this.rendererPtr, this.width, this.height)\r\n this.nextRenderBuffer = this.lib.getNextBuffer(this.rendererPtr)\r\n\r\n this._console.resize(this.width, this.height)\r\n this.root.resize(this.width, this.height)\r\n this.emit(\"resize\", this.width, this.height)\r\n this.requestRender()\r\n }\r\n\r\n private interceptStdoutWrite = (chunk: any, encoding?: any, callback?: any): boolean => {\r\n const text = chunk.toString()\r\n\r\n capture.write(\"stdout\", text)\r\n if (this._splitHeight > 0) {\r\n this.requestRender()\r\n }\r\n\r\n if (typeof callback === \"function\") {\r\n process.nextTick(callback)\r\n }\r\n\r\n return true\r\n }\r\n\r\n public disableStdoutInterception(): void {\r\n this.stdout.write = this.realStdoutWrite\r\n }\r\n\r\n // TODO: Move this to native\r\n private flushStdoutCache(space: number, force: boolean = false): boolean {\r\n if (capture.size === 0 && !force) return false\r\n\r\n const output = capture.claimOutput()\r\n\r\n const rendererStartLine = this._terminalHeight - this._splitHeight\r\n const flush = ANSI.moveCursorAndClear(rendererStartLine, 1)\r\n\r\n const outputLine = this._terminalHeight - this._splitHeight\r\n const move = ANSI.moveCursor(outputLine, 1)\r\n\r\n let clear = \"\"\r\n if (space > 0) {\r\n const backgroundColor = this.backgroundColor.toInts()\r\n const newlines = \" \".repeat(this.width) + \"\\n\".repeat(space)\r\n // Check if background is transparent (alpha = 0)\r\n if (backgroundColor[3] === 0) {\r\n clear = newlines\r\n } else {\r\n clear =\r\n ANSI.setRgbBackground(backgroundColor[0], backgroundColor[1], backgroundColor[2]) +\r\n newlines +\r\n ANSI.resetBackground\r\n }\r\n }\r\n\r\n this.writeOut(flush + move + output + clear)\r\n\r\n return true\r\n }\r\n\r\n private enableMouse(): void {\r\n this._useMouse = true\r\n this.lib.enableMouse(this.rendererPtr, this.enableMouseMovement)\r\n }\r\n\r\n private disableMouse(): void {\r\n this._useMouse = false\r\n this.setCapturedRenderable(undefined)\r\n this.mouseParser.reset()\r\n this.lib.disableMouse(this.rendererPtr)\r\n }\r\n\r\n public enableKittyKeyboard(flags: number = 0b00011): void {\r\n this.lib.enableKittyKeyboard(this.rendererPtr, flags)\r\n }\r\n\r\n public disableKittyKeyboard(): void {\r\n this.lib.disableKittyKeyboard(this.rendererPtr)\r\n }\r\n\r\n public set useThread(useThread: boolean) {\r\n this._useThread = useThread\r\n this.lib.setUseThread(this.rendererPtr, useThread)\r\n }\r\n\r\n // TODO: All input management may move to native when zig finally has async io support again,\r\n // without rolling a full event loop\r\n public async setupTerminal(): Promise<void> {\r\n if (this._terminalIsSetup) return\r\n this._terminalIsSetup = true\r\n\r\n this.lib.setupTerminal(this.rendererPtr, this._useAlternateScreen)\r\n this._capabilities = this.lib.getTerminalCapabilities(this.rendererPtr)\r\n\r\n if (this.debugOverlay.enabled) {\r\n this.lib.setDebugOverlay(this.rendererPtr, true, this.debugOverlay.corner)\r\n if (!this.memorySnapshotInterval) {\r\n this.memorySnapshotInterval = 3000\r\n this.startMemorySnapshotTimer()\r\n this.automaticMemorySnapshot = true\r\n }\r\n }\r\n\r\n this.capabilityTimeoutId = setTimeout(() => {\r\n this.capabilityTimeoutId = null\r\n this.removeInputHandler(this.capabilityHandler)\r\n }, 5000)\r\n\r\n if (this._useMouse) {\r\n this.enableMouse()\r\n }\r\n\r\n this.queryPixelResolution()\r\n }\r\n\r\n private stdinListener: (data: Buffer | string | Uint8Array | ArrayBuffer) => void = (\n (data: Buffer | string | Uint8Array | ArrayBuffer) => {\n const chunk = this.normalizeInputChunk(data)\n\n // Mouse first (consume and stop if handled)\n if (this._useMouse && this.handleMouseData(chunk)) {\n return\n }\n\n // Everything else goes through the sequence buffer\n this._stdinBuffer.process(chunk)\n }\n ).bind(this)\n\r\n public addInputHandler(handler: (sequence: string) => boolean): void {\r\n this.inputHandlers.push(handler)\r\n }\r\n\r\n public prependInputHandler(handler: (sequence: string) => boolean): void {\r\n this.inputHandlers.unshift(handler)\r\n }\r\n\r\n public removeInputHandler(handler: (sequence: string) => boolean): void {\r\n this.inputHandlers = this.inputHandlers.filter((h) => h !== handler)\r\n }\r\n\r\n private capabilityHandler: (sequence: string) => boolean = ((sequence: string) => {\r\n if (isCapabilityResponse(sequence)) {\r\n this.lib.processCapabilityResponse(this.rendererPtr, sequence)\r\n this._capabilities = this.lib.getTerminalCapabilities(this.rendererPtr)\r\n this.emit(\"capabilities\", this._capabilities)\r\n return true\r\n }\r\n return false\r\n }).bind(this)\r\n\r\n private focusHandler: (sequence: string) => boolean = ((sequence: string) => {\r\n if (sequence === \"\\x1b[I\") {\r\n // When the terminal regains focus, some terminal emulators (notably\r\n // Windows Terminal / ConPTY) may have stripped DEC private modes like\r\n // mouse tracking, bracketed paste, and focus tracking itself while the\r\n // window was unfocused. Re-send all active mode sequences unconditionally.\r\n this.lib.restoreTerminalModes(this.rendererPtr)\r\n this.emit(\"focus\")\r\n return true\r\n }\r\n if (sequence === \"\\x1b[O\") {\r\n this.emit(\"blur\")\r\n return true\r\n }\r\n return false\r\n }).bind(this)\r\n\r\n private themeModeHandler: (sequence: string) => boolean = ((sequence: string) => {\r\n if (sequence === \"\\x1b[?997;1n\") {\r\n if (this._themeMode !== \"dark\") {\r\n this._themeMode = \"dark\"\r\n this.emit(\"theme_mode\", \"dark\")\r\n }\r\n return true\r\n }\r\n if (sequence === \"\\x1b[?997;2n\") {\r\n if (this._themeMode !== \"light\") {\r\n this._themeMode = \"light\"\r\n this.emit(\"theme_mode\", \"light\")\r\n }\r\n return true\r\n }\r\n return false\r\n }).bind(this)\r\n\r\n private setupInput(): void {\r\n for (const handler of this.prependedInputHandlers) {\r\n this.addInputHandler(handler)\r\n }\r\n\r\n this.addInputHandler((sequence: string) => {\r\n if (isPixelResolutionResponse(sequence) && this.waitingForPixelResolution) {\r\n const resolution = parsePixelResolution(sequence)\r\n if (resolution) {\r\n this._resolution = resolution\r\n this.waitingForPixelResolution = false\r\n }\r\n return true\r\n }\r\n return false\r\n })\r\n this.addInputHandler(this.capabilityHandler)\r\n this.addInputHandler(this.focusHandler)\r\n this.addInputHandler(this.themeModeHandler)\r\n this.addInputHandler((sequence: string) => {\r\n return this._keyHandler.processInput(sequence)\r\n })\r\n\r\n if (this.stdin.setRawMode) {\r\n this.stdin.setRawMode(true)\r\n }\r\n\r\n this.stdin.resume()\r\n this.stdin.setEncoding(\"utf8\")\r\n this.stdin.on(\"data\", this.stdinListener)\n this._stdinBuffer.on(\"data\", (sequence: string) => {\n this.recordRuntimeEvent(\"input:data\", {\n sequence: sequence.length > 120 ? `${sequence.slice(0, 120)}...` : sequence,\n length: sequence.length,\n })\n // Capture all input in debug mode\n if (this._debugModeEnabled) {\n this._debugInputs.push({\n timestamp: new Date().toISOString(),\r\n sequence,\r\n })\r\n }\r\n\r\n for (const handler of this.inputHandlers) {\r\n if (handler(sequence)) {\r\n return\r\n }\r\n }\r\n })\n this._stdinBuffer.on(\"paste\", (data: string) => {\n this.recordRuntimeEvent(\"input:paste\", {\n length: data.length,\n })\n this._keyHandler.processPaste(data)\n })\n }\n\r\n private dispatchMouseEvent(\r\n target: Renderable,\r\n attributes: RawMouseEvent & { source?: Renderable; isDragging?: boolean },\r\n ): MouseEvent {\r\n const event = new MouseEvent(target, attributes)\r\n target.processMouseEvent(event)\r\n\r\n if (this.autoFocus && event.type === \"down\" && event.button === MouseButton.LEFT && !event.defaultPrevented) {\n let current: Renderable | null = target\n const visited = new Set<Renderable>()\n while (current) {\n if (visited.has(current)) {\n break\n }\n visited.add(current)\n if (current.focusable) {\n current.focus()\n break\n }\n current = current.parent\n }\r\n }\r\n\r\n return event\r\n }\r\n\r\n private handleMouseData(data: Buffer | string): boolean {\n const mouseEvents = this.mouseParser.parseAllMouseEvents(data)\n\r\n if (mouseEvents.length === 0) return false\r\n\r\n let anyHandled = false\r\n for (const mouseEvent of mouseEvents) {\r\n if (this.processSingleMouseEvent(mouseEvent)) {\r\n anyHandled = true\r\n }\r\n }\r\n\r\n return anyHandled\r\n }\r\n\r\n private processSingleMouseEvent(mouseEvent: RawMouseEvent): boolean {\n if (this._splitHeight > 0) {\r\n if (mouseEvent.y < this.renderOffset) {\r\n return false\r\n }\r\n mouseEvent.y -= this.renderOffset\r\n }\r\n\r\n const clickCount = this.resolveClickCount(mouseEvent)\n const mouseEventWithClickCount = { ...mouseEvent, clickCount }\n this.recordRuntimeEvent(\"input:mouse\", {\n type: mouseEvent.type,\n x: mouseEvent.x,\n y: mouseEvent.y,\n button: mouseEvent.button,\n clickCount,\n ctrl: mouseEvent.modifiers.ctrl,\n alt: mouseEvent.modifiers.alt,\n shift: mouseEvent.modifiers.shift,\n })\n\n this._latestPointer.x = mouseEvent.x\n this._latestPointer.y = mouseEvent.y\n this._hasPointer = true\r\n this._lastPointerModifiers = mouseEvent.modifiers\r\n\r\n if (this._console.visible) {\r\n const consoleBounds = this._console.bounds\r\n if (\r\n mouseEvent.x >= consoleBounds.x &&\r\n mouseEvent.x < consoleBounds.x + consoleBounds.width &&\r\n mouseEvent.y >= consoleBounds.y &&\r\n mouseEvent.y < consoleBounds.y + consoleBounds.height\r\n ) {\r\n const event = new MouseEvent(null, mouseEventWithClickCount)\n const handled = this._console.handleMouse(event)\n if (handled) return true\n }\n }\r\n\r\n if (mouseEvent.type === \"scroll\") {\r\n const maybeRenderableId = this.hitTest(mouseEvent.x, mouseEvent.y)\r\n const maybeRenderable = Renderable.renderablesByNumber.get(maybeRenderableId)\r\n const fallbackTarget =\r\n this._currentFocusedRenderable &&\r\n !this._currentFocusedRenderable.isDestroyed &&\r\n this._currentFocusedRenderable.focused\r\n ? this._currentFocusedRenderable\r\n : null\r\n const scrollTarget = maybeRenderable ?? fallbackTarget\r\n\r\n if (scrollTarget) {\r\n const event = new MouseEvent(scrollTarget, mouseEventWithClickCount)\n scrollTarget.processMouseEvent(event)\n }\n return true\n }\r\n\r\n const maybeRenderableId = this.hitTest(mouseEvent.x, mouseEvent.y)\r\n const sameElement = maybeRenderableId === this.lastOverRenderableNum\r\n this.lastOverRenderableNum = maybeRenderableId\r\n const maybeRenderable = Renderable.renderablesByNumber.get(maybeRenderableId)\r\n\r\n if (\r\n mouseEvent.type === \"down\" &&\r\n mouseEvent.button === MouseButton.LEFT &&\r\n !this.currentSelection?.isDragging &&\r\n !mouseEvent.modifiers.ctrl\r\n ) {\r\n const canStartSelection = Boolean(\r\n maybeRenderable &&\r\n maybeRenderable.selectable &&\r\n !maybeRenderable.isDestroyed &&\r\n maybeRenderable.shouldStartSelection(mouseEvent.x, mouseEvent.y),\r\n )\r\n\r\n if (canStartSelection && maybeRenderable) {\r\n this.startSelection(maybeRenderable, mouseEvent.x, mouseEvent.y)\n this.dispatchMouseEvent(maybeRenderable, mouseEventWithClickCount)\n return true\n }\n }\n\r\n if (mouseEvent.type === \"drag\" && this.currentSelection?.isDragging) {\r\n this.updateSelection(maybeRenderable, mouseEvent.x, mouseEvent.y)\r\n\r\n if (maybeRenderable) {\r\n const event = new MouseEvent(maybeRenderable, { ...mouseEventWithClickCount, isDragging: true })\n maybeRenderable.processMouseEvent(event)\n }\n\r\n return true\r\n }\r\n\r\n if (mouseEvent.type === \"up\" && this.currentSelection?.isDragging) {\r\n if (maybeRenderable) {\r\n const event = new MouseEvent(maybeRenderable, { ...mouseEventWithClickCount, isDragging: true })\n maybeRenderable.processMouseEvent(event)\n }\n\r\n this.finishSelection()\r\n return true\r\n }\r\n\r\n if (mouseEvent.type === \"down\" && mouseEvent.button === MouseButton.LEFT && this.currentSelection) {\r\n if (mouseEvent.modifiers.ctrl) {\r\n this.currentSelection.isDragging = true\r\n this.updateSelection(maybeRenderable, mouseEvent.x, mouseEvent.y)\r\n return true\r\n }\r\n }\r\n\r\n if (!sameElement && (mouseEvent.type === \"drag\" || mouseEvent.type === \"move\")) {\r\n if (this.lastOverRenderable && this.lastOverRenderable !== this.capturedRenderable) {\r\n const event = new MouseEvent(this.lastOverRenderable, { ...mouseEventWithClickCount, type: \"out\" })\n this.lastOverRenderable.processMouseEvent(event)\n }\n this.lastOverRenderable = maybeRenderable\n if (maybeRenderable) {\n const event = new MouseEvent(maybeRenderable, {\n ...mouseEventWithClickCount,\n type: \"over\",\n source: this.capturedRenderable,\n })\n maybeRenderable.processMouseEvent(event)\r\n }\r\n }\r\n\r\n if (this.capturedRenderable && mouseEvent.type !== \"up\") {\r\n const event = new MouseEvent(this.capturedRenderable, mouseEventWithClickCount)\n this.capturedRenderable.processMouseEvent(event)\n return true\n }\n\n if (this.capturedRenderable && mouseEvent.type === \"up\") {\n const event = new MouseEvent(this.capturedRenderable, { ...mouseEventWithClickCount, type: \"drag-end\" })\n this.capturedRenderable.processMouseEvent(event)\n this.capturedRenderable.processMouseEvent(new MouseEvent(this.capturedRenderable, mouseEventWithClickCount))\n if (maybeRenderable) {\n const event = new MouseEvent(maybeRenderable, {\n ...mouseEventWithClickCount,\n type: \"drop\",\n source: this.capturedRenderable,\n })\n maybeRenderable.processMouseEvent(event)\r\n }\r\n this.lastOverRenderable = this.capturedRenderable\r\n this.lastOverRenderableNum = this.capturedRenderable.num\r\n this.setCapturedRenderable(undefined)\r\n // Dropping the renderable needs to push another frame when the renderer is not live\r\n // to update the hit grid, otherwise capturedRenderable won't be in the hit grid and will not receive mouse events\r\n this.requestRender()\r\n }\r\n\r\n let event: MouseEvent | undefined\r\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, mouseEventWithClickCount)\n } else {\r\n this.setCapturedRenderable(undefined)\r\n this.lastOverRenderable = undefined\r\n }\r\n\r\n if (!event?.defaultPrevented && mouseEvent.type === \"down\" && this.currentSelection) {\r\n this.clearSelection()\r\n }\r\n\r\n return true\r\n }\r\n\r\n /**\r\n * Recheck hover state after hit grid changes.\r\n * Called after render when native code detects the hit grid changed.\r\n * Fires out/over events if the element under the cursor changed.\r\n */\r\n private recheckHoverState(): void {\r\n if (this._isDestroyed || !this._hasPointer) return\r\n if (this.capturedRenderable) return\r\n\r\n const hitId = this.hitTest(this._latestPointer.x, this._latestPointer.y)\r\n const hitRenderable = Renderable.renderablesByNumber.get(hitId)\r\n const lastOver = this.lastOverRenderable\r\n\r\n // No change\r\n if (lastOver?.num === hitId) {\r\n this.lastOverRenderableNum = hitId\r\n return\r\n }\r\n\r\n const baseEvent: RawMouseEvent = {\r\n type: \"move\",\r\n button: 0,\r\n x: this._latestPointer.x,\r\n y: this._latestPointer.y,\r\n modifiers: this._lastPointerModifiers,\r\n }\r\n\r\n // Fire out on old element\r\n if (lastOver) {\r\n const event = new MouseEvent(lastOver, { ...baseEvent, type: \"out\" })\r\n lastOver.processMouseEvent(event)\r\n }\r\n\r\n this.lastOverRenderable = hitRenderable\r\n this.lastOverRenderableNum = hitId\r\n\r\n // Fire over on new element\r\n if (hitRenderable) {\r\n const event = new MouseEvent(hitRenderable, {\r\n ...baseEvent,\r\n type: \"over\",\r\n })\r\n hitRenderable.processMouseEvent(event)\r\n }\r\n }\r\n public setMousePointer(style: MousePointerStyle): void {\r\n this._currentMousePointerStyle = style\r\n this.lib.setCursorStyleOptions(this.rendererPtr, { cursor: style })\r\n }\r\n\r\n public hitTest(x: number, y: number): number {\r\n return this.lib.checkHit(this.rendererPtr, x, y)\r\n }\r\n\r\n private takeMemorySnapshot(): void {\r\n if (this._isDestroyed) return\r\n\r\n const memoryUsage = process.memoryUsage()\r\n this.lastMemorySnapshot = {\r\n heapUsed: memoryUsage.heapUsed,\r\n heapTotal: memoryUsage.heapTotal,\r\n arrayBuffers: memoryUsage.arrayBuffers,\r\n }\r\n\r\n this.lib.updateMemoryStats(\r\n this.rendererPtr,\r\n this.lastMemorySnapshot.heapUsed,\r\n this.lastMemorySnapshot.heapTotal,\r\n this.lastMemorySnapshot.arrayBuffers,\r\n )\r\n\r\n this.emit(\"memory:snapshot\", this.lastMemorySnapshot)\r\n }\r\n\r\n private startMemorySnapshotTimer(): void {\r\n this.stopMemorySnapshotTimer()\r\n\r\n this.memorySnapshotTimer = setInterval(() => {\r\n this.takeMemorySnapshot()\r\n }, this.memorySnapshotInterval)\r\n }\r\n\r\n private stopMemorySnapshotTimer(): void {\r\n if (this.memorySnapshotTimer) {\r\n clearInterval(this.memorySnapshotTimer)\r\n this.memorySnapshotTimer = null\r\n }\r\n }\r\n\r\n public setMemorySnapshotInterval(interval: number): void {\r\n this.memorySnapshotInterval = interval\r\n\r\n if (this._isRunning && interval > 0) {\r\n this.startMemorySnapshotTimer()\r\n } else if (interval <= 0 && this.memorySnapshotTimer) {\r\n clearInterval(this.memorySnapshotTimer)\r\n this.memorySnapshotTimer = null\r\n }\r\n }\r\n\r\n private handleResize(width: number, height: number): void {\r\n if (this._isDestroyed) return\r\n if (this._splitHeight > 0) {\r\n this.processResize(width, height)\r\n return\r\n }\r\n\r\n if (this.resizeTimeoutId !== null) {\r\n clearTimeout(this.resizeTimeoutId)\r\n this.resizeTimeoutId = null\r\n }\r\n\r\n this.resizeTimeoutId = setTimeout(() => {\r\n this.resizeTimeoutId = null\r\n this.processResize(width, height)\r\n }, this.resizeDebounceDelay)\r\n }\r\n\r\n private queryPixelResolution() {\r\n this.waitingForPixelResolution = true\r\n this.lib.queryPixelResolution(this.rendererPtr)\r\n }\r\n\r\n private processResize(width: number, height: number): void {\r\n if (width === this._terminalWidth && height === this._terminalHeight) return\r\n\r\n const prevWidth = this._terminalWidth\r\n\r\n this._terminalWidth = width\r\n this._terminalHeight = height\r\n this.queryPixelResolution()\r\n\r\n this.setCapturedRenderable(undefined)\r\n this.mouseParser.reset()\r\n\r\n if (this._splitHeight > 0) {\r\n // TODO: Handle resizing split mode properly\r\n if (width < prevWidth) {\r\n const start = this._terminalHeight - this._splitHeight * 2\r\n const flush = ANSI.moveCursorAndClear(start, 1)\r\n this.writeOut(flush)\r\n }\r\n this.renderOffset = height - this._splitHeight\r\n this.width = width\r\n this.height = this._splitHeight\r\n this.currentRenderBuffer.clear(this.backgroundColor)\r\n this.lib.setRenderOffset(this.rendererPtr, this.renderOffset)\r\n } else {\r\n this.width = width\r\n this.height = height\r\n }\r\n\r\n this.lib.resizeRenderer(this.rendererPtr, this.width, this.height)\r\n this.nextRenderBuffer = this.lib.getNextBuffer(this.rendererPtr)\r\n this.currentRenderBuffer = this.lib.getCurrentBuffer(this.rendererPtr)\r\n this._console.resize(this.width, this.height)\r\n this.root.resize(this.width, this.height)\r\n this.emit(\"resize\", this.width, this.height)\r\n this.requestRender()\r\n }\r\n\r\n public setBackgroundColor(color: ColorInput): void {\r\n const parsedColor = parseColor(color)\r\n this.lib.setBackgroundColor(this.rendererPtr, parsedColor as RGBA)\r\n this.backgroundColor = parsedColor as RGBA\r\n this.nextRenderBuffer.clear(parsedColor as RGBA)\r\n this.requestRender()\r\n }\r\n\r\n public toggleDebugOverlay(): void {\r\n const willBeEnabled = !this.debugOverlay.enabled\r\n\r\n if (willBeEnabled && !this.memorySnapshotInterval) {\r\n this.memorySnapshotInterval = 3000\r\n this.startMemorySnapshotTimer()\r\n this.automaticMemorySnapshot = true\r\n } else if (!willBeEnabled && this.automaticMemorySnapshot) {\r\n this.stopMemorySnapshotTimer()\r\n this.memorySnapshotInterval = 0\r\n this.automaticMemorySnapshot = false\r\n }\r\n\r\n this.debugOverlay.enabled = !this.debugOverlay.enabled\r\n this.lib.setDebugOverlay(this.rendererPtr, this.debugOverlay.enabled, this.debugOverlay.corner)\r\n this.emit(CliRenderEvents.DEBUG_OVERLAY_TOGGLE, this.debugOverlay.enabled)\r\n this.requestRender()\r\n }\r\n\r\n public configureDebugOverlay(options: { enabled?: boolean; corner?: DebugOverlayCorner }): void {\r\n this.debugOverlay.enabled = options.enabled ?? this.debugOverlay.enabled\r\n this.debugOverlay.corner = options.corner ?? this.debugOverlay.corner\r\n this.lib.setDebugOverlay(this.rendererPtr, this.debugOverlay.enabled, this.debugOverlay.corner)\r\n this.requestRender()\r\n }\r\n\r\n public setTerminalTitle(title: string): void {\r\n this.lib.setTerminalTitle(this.rendererPtr, title)\r\n }\r\n\r\n public copyToClipboardOSC52(text: string, target?: ClipboardTarget): boolean {\n return this.clipboard.copyToClipboardOSC52(text, target)\n }\n\n private normalizeInputChunk(data: Buffer | string | Uint8Array | ArrayBuffer): Buffer | string {\n if (typeof data === \"string\") {\n return data\n }\n if (Buffer.isBuffer(data)) {\n return data\n }\n if (data instanceof Uint8Array) {\n return Buffer.from(data.buffer, data.byteOffset, data.byteLength)\n }\n return Buffer.from(data)\n }\n\n private resolveClickCount(mouseEvent: RawMouseEvent): number {\n if (mouseEvent.type !== \"down\" || mouseEvent.button > MouseButton.RIGHT) {\n return 1\n }\n\n const now = Date.now()\n const previous = this._lastClick\n const isConsecutive =\n previous &&\n previous.button === mouseEvent.button &&\n previous.x === mouseEvent.x &&\n previous.y === mouseEvent.y &&\n now - previous.timestamp <= this.clickCountThresholdMs\n\n const count = isConsecutive ? previous.count + 1 : 1\n this._lastClick = {\n x: mouseEvent.x,\n y: mouseEvent.y,\n button: mouseEvent.button,\n timestamp: now,\n count,\n }\n\n return count\n }\n\n private normalizeCrashError(reason: unknown): { message: string; stack?: string } {\n if (reason instanceof Error) {\n return {\n message: reason.message || reason.name || \"Unknown error\",\n stack: reason.stack,\n }\n }\n\n if (typeof reason === \"string\") {\n return { message: reason }\n }\n\n try {\n return { message: JSON.stringify(reason) }\n } catch {\n return { message: String(reason) }\n }\n }\n\n private recordRuntimeEvent(type: string, payload: Record<string, unknown>): void {\n this.recentRuntimeEvents.push({\n timestamp: new Date().toISOString(),\n type,\n payload,\n })\n if (this.recentRuntimeEvents.length > this.maxRecentRuntimeEvents) {\n this.recentRuntimeEvents.shift()\n }\n }\n\n public reportCrash(reason: unknown, source: string = \"manual\", extra?: Record<string, unknown>): CrashReport {\n const error = this.normalizeCrashError(reason)\n const report: CrashReport = {\n timestamp: new Date().toISOString(),\n source,\n message: error.message,\n stack: error.stack,\n recentEvents: [...this.recentRuntimeEvents],\n }\n\n if (extra && Object.keys(extra).length > 0) {\n report.recentEvents.push({\n timestamp: report.timestamp,\n type: \"crash:context\",\n payload: extra,\n })\n }\n\n this.crashReports.push(report)\n if (this.crashReports.length > this.maxCrashReports) {\n this.crashReports.shift()\n }\n\n if (this._logCrashReportsToConsole) {\n console.error(this.formatCrashReportForConsole(report))\n }\n\n this.emit(CliRenderEvents.CRASH, report)\n return report\n }\n\n private formatCrashReportForConsole(report: CrashReport): string {\n const lines: string[] = []\n lines.push(\"[Cascade Crash Report]\")\n lines.push(`timestamp=${report.timestamp}`)\n lines.push(`source=${report.source}`)\n lines.push(`message=${report.message}`)\n if (report.stack) {\n lines.push(\"stack:\")\n lines.push(report.stack)\n }\n if (report.recentEvents.length > 0) {\n lines.push(`recentEvents(${report.recentEvents.length}):`)\n for (const entry of report.recentEvents) {\n lines.push(`${entry.timestamp} ${entry.type} ${JSON.stringify(entry.payload)}`)\n }\n }\n return lines.join(\"\\n\")\n }\n\n public getCrashReports(): CrashReport[] {\n return [...this.crashReports]\n }\n\n public getRecentRuntimeEvents(): RuntimeEventRecord[] {\n return [...this.recentRuntimeEvents]\n }\n\n public clearCrashReports(): void {\n this.crashReports = []\n }\n\n public copyToSystemClipboard(text: string): boolean {\n return this.clipboard.copyToSystemClipboard(text)\n }\n\n public readFromSystemClipboard(): string | null {\n return this.clipboard.readFromSystemClipboard()\n }\n\n public copyToClipboard(text: string, target?: ClipboardTarget): boolean {\n return this.clipboard.copyToBestAvailable(text, target)\n }\n\n private copyActiveSelectionToClipboard(): boolean {\n const selection = this.currentSelection\n if (!selection) {\n return false\n }\n\n const selectedText = selection.getSelectedText()\n if (!selectedText) {\n return false\n }\n\n this.copyToClipboard(selectedText)\n this.clearSelection()\n this.requestRender()\n return true\n }\n\n public clearClipboardOSC52(target?: ClipboardTarget): boolean {\n return this.clipboard.clearClipboardOSC52(target)\n }\n\r\n public isOsc52Supported(): boolean {\r\n return this._capabilities?.osc52 ?? this.clipboard.isOsc52Supported()\r\n }\r\n\r\n public dumpHitGrid(): void {\r\n this.lib.dumpHitGrid(this.rendererPtr)\r\n }\r\n\r\n public dumpBuffers(timestamp?: number): void {\r\n this.lib.dumpBuffers(this.rendererPtr, timestamp)\r\n }\r\n\r\n public dumpStdoutBuffer(timestamp?: number): void {\r\n this.lib.dumpStdoutBuffer(this.rendererPtr, timestamp)\r\n }\r\n\r\n public static setCursorPosition(renderer: CliRenderer, x: number, y: number, visible: boolean = true): void {\r\n const lib = resolveRenderLib()\r\n lib.setCursorPosition(renderer.rendererPtr, x, y, visible)\r\n }\r\n\r\n public static setCursorStyle(renderer: CliRenderer, options: CursorStyleOptions): void {\r\n const lib = resolveRenderLib()\r\n lib.setCursorStyleOptions(renderer.rendererPtr, options)\r\n if (options.cursor !== undefined) {\r\n renderer._currentMousePointerStyle = options.cursor\r\n }\r\n }\r\n\r\n public static setCursorColor(renderer: CliRenderer, color: RGBA): void {\r\n const lib = resolveRenderLib()\r\n lib.setCursorColor(renderer.rendererPtr, color)\r\n }\r\n\r\n public setCursorPosition(x: number, y: number, visible: boolean = true): void {\r\n this.lib.setCursorPosition(this.rendererPtr, x, y, visible)\r\n }\r\n\r\n public setCursorStyle(options: CursorStyleOptions): void {\r\n this.lib.setCursorStyleOptions(this.rendererPtr, options)\r\n if (options.cursor !== undefined) {\r\n this._currentMousePointerStyle = options.cursor\r\n }\r\n }\r\n\r\n public setCursorColor(color: RGBA): void {\r\n this.lib.setCursorColor(this.rendererPtr, color)\r\n }\r\n\r\n public getCursorState() {\r\n return this.lib.getCursorState(this.rendererPtr)\r\n }\r\n\r\n public addPostProcessFn(processFn: (buffer: OptimizedBuffer, deltaTime: number) => void): void {\r\n this.postProcessFns.push(processFn)\r\n }\r\n\r\n public removePostProcessFn(processFn: (buffer: OptimizedBuffer, deltaTime: number) => void): void {\r\n this.postProcessFns = this.postProcessFns.filter((fn) => fn !== processFn)\r\n }\r\n\r\n public clearPostProcessFns(): void {\r\n this.postProcessFns = []\r\n }\r\n\r\n public setFrameCallback(callback: (deltaTime: number) => Promise<void>): void {\r\n this.frameCallbacks.push(callback)\r\n }\r\n\r\n public removeFrameCallback(callback: (deltaTime: number) => Promise<void>): void {\r\n this.frameCallbacks = this.frameCallbacks.filter((cb) => cb !== callback)\r\n }\r\n\r\n public clearFrameCallbacks(): void {\r\n this.frameCallbacks = []\r\n }\r\n\r\n public requestLive(): void {\r\n this.liveRequestCounter++\r\n\r\n if (this._controlState === RendererControlState.IDLE && this.liveRequestCounter > 0) {\r\n this._controlState = RendererControlState.AUTO_STARTED\r\n this.internalStart()\r\n }\r\n }\r\n\r\n public dropLive(): void {\r\n this.liveRequestCounter = Math.max(0, this.liveRequestCounter - 1)\r\n\r\n if (this._controlState === RendererControlState.AUTO_STARTED && this.liveRequestCounter === 0) {\r\n this._controlState = RendererControlState.IDLE\r\n this.internalPause()\r\n }\r\n }\r\n\r\n public start(): void {\r\n this._controlState = RendererControlState.EXPLICIT_STARTED\r\n this.internalStart()\r\n }\r\n\r\n public auto(): void {\r\n this._controlState = this._isRunning ? RendererControlState.AUTO_STARTED : RendererControlState.IDLE\r\n }\r\n\r\n private internalStart(): void {\r\n if (!this._isRunning && !this._isDestroyed) {\r\n this._isRunning = true\r\n\r\n if (this.memorySnapshotInterval > 0) {\r\n this.startMemorySnapshotTimer()\r\n }\r\n\r\n this.startRenderLoop()\r\n }\r\n }\r\n\r\n public pause(): void {\r\n this._controlState = RendererControlState.EXPLICIT_PAUSED\r\n this.internalPause()\r\n }\r\n\r\n public suspend(): void {\r\n this._previousControlState = this._controlState\r\n\r\n this._controlState = RendererControlState.EXPLICIT_SUSPENDED\r\n this.internalPause()\r\n\r\n this._suspendedMouseEnabled = this._useMouse\r\n\r\n this.disableMouse()\r\n this.removeExitListeners()\r\n this._stdinBuffer.clear()\r\n this.stdin.removeListener(\"data\", this.stdinListener)\r\n this.lib.suspendRenderer(this.rendererPtr)\r\n\r\n if (this.stdin.setRawMode) {\r\n this.stdin.setRawMode(false)\r\n }\r\n\r\n this.stdin.pause()\r\n }\r\n\r\n public resume(): void {\r\n if (this.stdin.setRawMode) {\r\n this.stdin.setRawMode(true)\r\n }\r\n\r\n this.stdin.resume()\r\n this.addExitListeners()\r\n\r\n setImmediate(() => {\r\n // Consume any existing stdin data to avoid processing stale input\r\n while (this.stdin.read() !== null) {}\r\n this.stdin.on(\"data\", this.stdinListener)\r\n })\r\n\r\n this.lib.resumeRenderer(this.rendererPtr)\r\n\r\n if (this._suspendedMouseEnabled) {\r\n this.enableMouse()\r\n }\r\n\r\n this.currentRenderBuffer.clear(this.backgroundColor)\r\n this._controlState = this._previousControlState\r\n\r\n if (\r\n this._previousControlState === RendererControlState.AUTO_STARTED ||\r\n this._previousControlState === RendererControlState.EXPLICIT_STARTED\r\n ) {\r\n this.internalStart()\r\n } else {\r\n this.requestRender()\r\n }\r\n }\r\n\r\n private internalPause(): void {\r\n this._isRunning = false\r\n\r\n if (this.renderTimeout) {\r\n clearTimeout(this.renderTimeout)\r\n this.renderTimeout = null\r\n }\r\n\r\n if (!this.rendering) {\r\n this.resolveIdleIfNeeded()\r\n }\r\n }\r\n\r\n public stop(): void {\r\n this._controlState = RendererControlState.EXPLICIT_STOPPED\r\n this.internalStop()\r\n }\r\n\r\n private internalStop(): void {\r\n if (this.isRunning && !this._isDestroyed) {\r\n this._isRunning = false\r\n\r\n if (this.memorySnapshotTimer) {\r\n clearInterval(this.memorySnapshotTimer)\r\n this.memorySnapshotTimer = null\r\n }\r\n\r\n if (this.renderTimeout) {\r\n clearTimeout(this.renderTimeout)\r\n this.renderTimeout = null\r\n }\r\n\r\n // If we're currently rendering, the frame will resolve idle when it completes\r\n // Otherwise, resolve immediately\r\n if (!this.rendering) {\r\n this.resolveIdleIfNeeded()\r\n }\r\n }\r\n }\r\n\r\n public destroy(): void {\r\n if (this._isDestroyed) return\r\n this._isDestroyed = true\r\n this._destroyPending = true\r\n\r\n if (this.rendering) {\r\n // Defer teardown until the active frame completes to avoid freeing native resources mid-render.\r\n return\r\n }\r\n\r\n this.finalizeDestroy()\r\n }\r\n\r\n private finalizeDestroy(): void {\r\n if (this._destroyFinalized) return\r\n this._destroyFinalized = true\r\n this._destroyPending = false\r\n\r\n process.removeListener(\"SIGWINCH\", this.sigwinchHandler)\r\n process.removeListener(\"uncaughtException\", this.uncaughtExceptionHandler)\n process.removeListener(\"unhandledRejection\", this.unhandledRejectionHandler)\n process.removeListener(\"warning\", this.warningHandler)\r\n process.removeListener(\"beforeExit\", this.exitHandler)\r\n capture.removeListener(\"write\", this.captureCallback)\r\n this.removeExitListeners()\r\n\r\n if (this.resizeTimeoutId !== null) {\r\n clearTimeout(this.resizeTimeoutId)\r\n this.resizeTimeoutId = null\r\n }\r\n\r\n if (this.capabilityTimeoutId !== null) {\r\n clearTimeout(this.capabilityTimeoutId)\r\n this.capabilityTimeoutId = null\r\n }\r\n\r\n if (this.memorySnapshotTimer) {\r\n clearInterval(this.memorySnapshotTimer)\r\n }\r\n\r\n // Clean up palette detector\r\n if (this._paletteDetector) {\r\n this._paletteDetector.cleanup()\r\n this._paletteDetector = null\r\n }\r\n this._paletteDetectionPromise = null\r\n this._cachedPalette = null\r\n\r\n this.emit(CliRenderEvents.DESTROY)\r\n\r\n if (this.renderTimeout) {\r\n clearTimeout(this.renderTimeout)\r\n this.renderTimeout = null\r\n }\r\n this._isRunning = false\r\n\r\n this.waitingForPixelResolution = false\r\n this.setCapturedRenderable(undefined)\r\n\r\n try {\r\n this.root.destroyRecursively()\r\n } catch (e) {\r\n console.error(\"Error destroying root renderable:\", e instanceof Error ? e.stack : String(e))\r\n }\r\n\r\n this._stdinBuffer.destroy()\r\n this._console.destroy()\r\n this.disableStdoutInterception()\r\n\r\n if (this._splitHeight > 0) {\r\n this.flushStdoutCache(this._splitHeight, true)\r\n }\r\n\r\n if (this.stdin.setRawMode) {\r\n this.stdin.setRawMode(false)\r\n }\r\n this.stdin.removeListener(\"data\", this.stdinListener)\r\n\r\n this.lib.destroyRenderer(this.rendererPtr)\r\n rendererTracker.removeRenderer(this)\r\n\r\n if (this._onDestroy) {\r\n try {\r\n this._onDestroy()\r\n } catch (e) {\r\n console.error(\"Error in onDestroy callback:\", e instanceof Error ? e.stack : String(e))\r\n }\r\n }\r\n\r\n // Resolve any pending idle() calls\r\n this.resolveIdleIfNeeded()\r\n }\r\n\r\n private startRenderLoop(): void {\r\n if (!this._isRunning) return\r\n\r\n this.lastTime = Date.now()\r\n this.frameCount = 0\r\n this.lastFpsTime = this.lastTime\r\n this.currentFps = 0\r\n\r\n this.loop()\r\n }\r\n\r\n private async loop(): Promise<void> {\r\n if (this.rendering || this._isDestroyed) return\r\n this.renderTimeout = null\r\n\r\n this.rendering = true\r\n if (this.renderTimeout) {\r\n clearTimeout(this.renderTimeout)\r\n this.renderTimeout = null\r\n }\r\n try {\r\n const now = Date.now()\r\n const elapsed = now - this.lastTime\r\n\r\n const deltaTime = elapsed\r\n this.lastTime = now\r\n\r\n this.frameCount++\r\n if (now - this.lastFpsTime >= 1000) {\r\n this.currentFps = this.frameCount\r\n this.frameCount = 0\r\n this.lastFpsTime = now\r\n }\r\n\r\n this.renderStats.frameCount++\r\n this.renderStats.fps = this.currentFps\r\n const overallStart = performance.now()\r\n\r\n const frameRequests = Array.from(this.animationRequest.values())\r\n this.animationRequest.clear()\r\n const animationRequestStart = performance.now()\r\n for (const callback of frameRequests) {\r\n callback(deltaTime)\r\n this.dropLive()\r\n }\r\n const animationRequestEnd = performance.now()\r\n const animationRequestTime = animationRequestEnd - animationRequestStart\r\n\r\n const start = performance.now()\r\n for (const frameCallback of this.frameCallbacks) {\n try {\n await frameCallback(deltaTime)\n } catch (error) {\n this.reportCrash(error, \"frame-callback\")\n console.error(\"Error in frame callback:\", error)\n }\n }\n const end = performance.now()\r\n this.renderStats.frameCallbackTime = end - start\r\n\r\n this.root.render(this.nextRenderBuffer, deltaTime)\r\n\r\n for (const postProcessFn of this.postProcessFns) {\r\n postProcessFn(this.nextRenderBuffer, deltaTime)\r\n }\r\n\r\n this._console.renderToBuffer(this.nextRenderBuffer)\r\n\r\n // If destroy() was requested during this frame, skip native work and scheduling.\r\n if (!this._isDestroyed) {\r\n this.renderNative()\r\n\r\n // Check if hit grid changed and recheck hover state if needed\r\n if (this._useMouse && this.lib.getHitGridDirty(this.rendererPtr)) {\r\n this.recheckHoverState()\r\n }\r\n\r\n const overallFrameTime = performance.now() - overallStart\r\n\r\n // TODO: Add animationRequestTime to stats\r\n this.lib.updateStats(\r\n this.rendererPtr,\r\n overallFrameTime,\r\n this.renderStats.fps,\r\n this.renderStats.frameCallbackTime,\r\n )\r\n\r\n if (this.gatherStats) {\r\n this.collectStatSample(overallFrameTime)\r\n }\r\n\r\n if (this._isRunning || this.immediateRerenderRequested) {\r\n const targetFrameTime = this.immediateRerenderRequested ? this.minTargetFrameTime : this.targetFrameTime\r\n const delay = Math.max(1, targetFrameTime - Math.floor(overallFrameTime))\r\n this.immediateRerenderRequested = false\r\n this.renderTimeout = setTimeout(() => {\r\n this.renderTimeout = null\r\n this.loop()\r\n }, delay)\r\n } else {\r\n clearTimeout(this.renderTimeout!)\r\n this.renderTimeout = null\r\n }\r\n }\r\n } catch (error) {\n this.reportCrash(error, \"render-loop\")\n console.error(\"Error in render loop:\", error)\n } finally {\n this.rendering = false\r\n if (this._destroyPending) {\r\n this.finalizeDestroy()\r\n }\r\n this.resolveIdleIfNeeded()\r\n }\r\n }\r\n\r\n public intermediateRender(): void {\r\n this.immediateRerenderRequested = true\r\n this.loop()\r\n }\r\n\r\n private renderNative(): void {\r\n if (this.renderingNative) {\r\n console.error(\"Rendering called concurrently\")\r\n throw new Error(\"Rendering called concurrently\")\r\n }\r\n\r\n let force = false\r\n if (this._splitHeight > 0) {\r\n // TODO: Flickering could maybe be even more reduced by moving the flush to the native layer,\r\n // to output the flush with the buffered writer, after the render is done.\r\n force = this.flushStdoutCache(this._splitHeight)\r\n }\r\n\r\n this.renderingNative = true\r\n this.lib.render(this.rendererPtr, force)\r\n // this.dumpStdoutBuffer(Date.now())\r\n this.renderingNative = false\r\n }\r\n\r\n private collectStatSample(frameTime: number): void {\r\n this.frameTimes.push(frameTime)\r\n if (this.frameTimes.length > this.maxStatSamples) {\r\n this.frameTimes.shift()\r\n }\r\n }\r\n\r\n public getStats(): {\r\n fps: number\r\n frameCount: number\r\n frameTimes: number[]\r\n averageFrameTime: number\r\n minFrameTime: number\r\n maxFrameTime: number\r\n } {\r\n const frameTimes = [...this.frameTimes]\r\n const sum = frameTimes.reduce((acc, time) => acc + time, 0)\r\n const avg = frameTimes.length ? sum / frameTimes.length : 0\r\n const min = frameTimes.length ? Math.min(...frameTimes) : 0\r\n const max = frameTimes.length ? Math.max(...frameTimes) : 0\r\n\r\n return {\r\n fps: this.renderStats.fps,\r\n frameCount: this.renderStats.frameCount,\r\n frameTimes,\r\n averageFrameTime: avg,\r\n minFrameTime: min,\r\n maxFrameTime: max,\r\n }\r\n }\r\n\r\n public resetStats(): void {\r\n this.frameTimes = []\r\n this.renderStats.frameCount = 0\r\n }\r\n\r\n public setGatherStats(enabled: boolean): void {\r\n this.gatherStats = enabled\r\n if (!enabled) {\r\n this.frameTimes = []\r\n }\r\n }\r\n\r\n public getSelection(): Selection | null {\r\n return this.currentSelection\r\n }\r\n\r\n public get hasSelection(): boolean {\r\n return !!this.currentSelection\r\n }\r\n\r\n public getSelectionContainer(): Renderable | null {\r\n return this.selectionContainers.length > 0 ? this.selectionContainers[this.selectionContainers.length - 1] : null\r\n }\r\n\r\n public clearSelection(): void {\n if (this.currentSelection) {\r\n for (const renderable of this.currentSelection.touchedRenderables) {\r\n if (renderable.selectable && !renderable.isDestroyed) {\r\n renderable.onSelectionChanged(null)\r\n }\r\n }\r\n this.currentSelection = null\r\n }\r\n this.selectionContainers = []\r\n }\n\n public selectWord(x: number, y: number): void {\n let current = this.resolveSelectionMethodTarget(x, y)\n while (current) {\n if (current.selectWord(x, y)) return\n current = current.parent\n }\n }\n\n public selectLine(x: number, y: number): void {\n let current = this.resolveSelectionMethodTarget(x, y)\n while (current) {\n if (current.selectLine(x, y)) return\n current = current.parent\n }\n }\n\n public updateSelectionWordSnap(x: number, y: number): void {\n let current = this.resolveSelectionMethodTarget(x, y)\n while (current) {\n if (current.updateSelectionWordSnap(x, y)) return\n current = current.parent\n }\n }\n\r\n /**\r\n * Start a new selection at the given coordinates.\r\n * Used by both mouse and keyboard selection.\r\n */\r\n public startSelection(renderable: Renderable, x: number, y: number): void {\r\n if (!renderable.selectable) return\r\n\r\n this.clearSelection()\r\n this.selectionContainers.push(renderable.parent || this.root)\r\n this.currentSelection = new Selection(renderable, { x, y }, { x, y })\r\n this.currentSelection.isStart = true\r\n\r\n this.notifySelectablesOfSelectionChange()\r\n }\r\n\r\n public updateSelection(\r\n currentRenderable: Renderable | undefined,\r\n x: number,\r\n y: number,\r\n options?: { finishDragging?: boolean },\r\n ): void {\r\n if (this.currentSelection) {\r\n this.currentSelection.isStart = false\r\n this.currentSelection.focus = { x, y }\r\n\r\n if (options?.finishDragging) {\r\n this.currentSelection.isDragging = false\r\n }\r\n\r\n if (this.selectionContainers.length > 0) {\r\n const currentContainer = this.selectionContainers[this.selectionContainers.length - 1]\r\n\r\n if (!currentRenderable || !this.isWithinContainer(currentRenderable, currentContainer)) {\r\n const parentContainer = currentContainer.parent || this.root\r\n this.selectionContainers.push(parentContainer)\r\n } else if (currentRenderable && this.selectionContainers.length > 1) {\r\n let containerIndex = this.selectionContainers.indexOf(currentRenderable)\r\n\r\n if (containerIndex === -1) {\r\n const immediateParent = currentRenderable.parent || this.root\r\n containerIndex = this.selectionContainers.indexOf(immediateParent)\r\n }\r\n\r\n if (containerIndex !== -1 && containerIndex < this.selectionContainers.length - 1) {\r\n this.selectionContainers = this.selectionContainers.slice(0, containerIndex + 1)\r\n }\r\n }\r\n }\r\n\r\n this.notifySelectablesOfSelectionChange()\r\n }\r\n }\r\n\r\n public requestSelectionUpdate(): void {\r\n if (this.currentSelection?.isDragging) {\r\n const pointer = this._latestPointer\r\n\r\n const maybeRenderableId = this.hitTest(pointer.x, pointer.y)\r\n const maybeRenderable = Renderable.renderablesByNumber.get(maybeRenderableId)\r\n\r\n this.updateSelection(maybeRenderable, pointer.x, pointer.y)\r\n }\r\n }\r\n\r\n private isWithinContainer(renderable: Renderable, container: Renderable): boolean {\n let current: Renderable | null = renderable\n const visited = new Set<Renderable>()\n while (current) {\n if (visited.has(current)) return false\n visited.add(current)\n if (current === container) return true\n current = current.parent\n }\n return false\r\n }\r\n\r\n private finishSelection(): void {\n if (this.currentSelection) {\r\n this.currentSelection.isDragging = false\r\n this.emit(\"selection\", this.currentSelection)\r\n this.notifySelectablesOfSelectionChange()\r\n }\r\n }\n\n private resolveSelectionMethodTarget(x: number, y: number): Renderable | null {\n const maybeRenderableId = this.hitTest(x, y)\n let current = Renderable.renderablesByNumber.get(maybeRenderableId) ?? null\n\n while (current) {\n if (current.selectable && !current.isDestroyed) {\n return current\n }\n current = current.parent\n }\n\n const candidates = [...Renderable.renderablesByNumber.values()]\n for (let i = candidates.length - 1; i >= 0; i -= 1) {\n const candidate = candidates[i]\n if (\n candidate.selectable &&\n !candidate.isDestroyed &&\n x >= candidate.x &&\n x < candidate.x + candidate.width &&\n y >= candidate.y &&\n y < candidate.y + candidate.height\n ) {\n return candidate\n }\n }\n\n return null\n }\n\r\n private notifySelectablesOfSelectionChange(): void {\r\n const selectedRenderables: Renderable[] = []\r\n const touchedRenderables: Renderable[] = []\r\n const currentContainer =\r\n this.selectionContainers.length > 0 ? this.selectionContainers[this.selectionContainers.length - 1] : this.root\r\n\r\n if (this.currentSelection) {\r\n this.walkSelectableRenderables(\r\n currentContainer,\r\n this.currentSelection.bounds,\r\n selectedRenderables,\r\n touchedRenderables,\r\n )\r\n\r\n for (const renderable of this.currentSelection.touchedRenderables) {\r\n if (!touchedRenderables.includes(renderable) && !renderable.isDestroyed) {\r\n renderable.onSelectionChanged(null)\r\n }\r\n }\r\n\r\n this.currentSelection.updateSelectedRenderables(selectedRenderables)\r\n this.currentSelection.updateTouchedRenderables(touchedRenderables)\r\n }\r\n }\r\n\r\n private walkSelectableRenderables(\r\n container: Renderable,\r\n selectionBounds: ViewportBounds,\r\n selectedRenderables: Renderable[],\r\n touchedRenderables: Renderable[],\r\n ): void {\r\n const children = getObjectsInViewport<Renderable>(\r\n selectionBounds,\r\n container.getChildrenSortedByPrimaryAxis(),\r\n container.primaryAxis,\r\n 0, // padding\r\n 0, // minTriggerSize - always perform overlap checks for selection\r\n )\r\n\r\n for (const child of children) {\r\n if (child.selectable) {\r\n const hasSelection = child.onSelectionChanged(this.currentSelection)\r\n if (hasSelection) {\r\n selectedRenderables.push(child)\r\n }\r\n touchedRenderables.push(child)\r\n }\r\n if (child.getChildrenCount() > 0) {\r\n this.walkSelectableRenderables(child, selectionBounds, selectedRenderables, touchedRenderables)\r\n }\r\n }\r\n }\r\n\r\n public get paletteDetectionStatus(): \"idle\" | \"detecting\" | \"cached\" {\r\n if (this._cachedPalette) return \"cached\"\r\n if (this._paletteDetectionPromise) return \"detecting\"\r\n return \"idle\"\r\n }\r\n\r\n public clearPaletteCache(): void {\r\n this._cachedPalette = null\r\n }\r\n\r\n /**\r\n * Detects the terminal's color palette\r\n *\r\n * @returns Promise resolving to TerminalColors object containing palette and special colors\r\n * @throws Error if renderer is suspended\r\n */\r\n public async getPalette(options?: GetPaletteOptions): Promise<TerminalColors> {\r\n if (this._controlState === RendererControlState.EXPLICIT_SUSPENDED) {\r\n throw new Error(\"Cannot detect palette while renderer is suspended\")\r\n }\r\n\r\n const requestedSize = options?.size ?? 16\r\n\r\n if (this._cachedPalette && this._cachedPalette.palette.length !== requestedSize) {\r\n this._cachedPalette = null\r\n }\r\n\r\n if (this._cachedPalette) {\r\n return this._cachedPalette\r\n }\r\n\r\n if (this._paletteDetectionPromise) {\r\n return this._paletteDetectionPromise\r\n }\r\n\r\n if (!this._paletteDetector) {\r\n const isLegacyTmux =\r\n this.capabilities?.terminal?.name?.toLowerCase()?.includes(\"tmux\") &&\r\n this.capabilities?.terminal?.version?.localeCompare(\"3.6\") < 0\r\n this._paletteDetector = createTerminalPalette(this.stdin, this.stdout, this.writeOut.bind(this), isLegacyTmux)\r\n }\r\n\r\n this._paletteDetectionPromise = this._paletteDetector.detect(options).then((result) => {\r\n this._cachedPalette = result\r\n this._paletteDetectionPromise = null\r\n return result\r\n })\r\n\r\n return this._paletteDetectionPromise\r\n }\r\n}\r\n",
|
|
55
55
|
"import type { ViewportBounds } from \"../types\"\r\n\r\ninterface ViewportObject {\r\n x: number\r\n y: number\r\n width: number\r\n height: number\r\n zIndex: number\r\n}\r\n\r\n/**\r\n * Returns objects that overlap with the viewport bounds.\r\n *\r\n * @param viewport - The viewport bounds to check against\r\n * @param objects - Array of objects MUST be sorted by position (y for column, x for row direction)\r\n * @param direction - Primary scroll direction: \"column\" (vertical) or \"row\" (horizontal)\r\n * @param padding - Extra padding around viewport to include nearby objects\r\n * @param minTriggerSize - Minimum array size to use binary search optimization\r\n * @returns Array of visible objects sorted by zIndex\r\n *\r\n * @remarks\r\n * Objects must be pre-sorted by their start position (y for column direction, x for row direction).\r\n * Unsorted input will produce incorrect results.\r\n */\r\nexport function getObjectsInViewport<T extends ViewportObject>(\r\n viewport: ViewportBounds,\r\n objects: T[],\r\n direction: \"row\" | \"column\" = \"column\",\r\n padding: number = 10,\r\n minTriggerSize: number = 16,\r\n): T[] {\r\n if (viewport.width <= 0 || viewport.height <= 0) {\r\n return []\r\n }\r\n\r\n if (objects.length === 0) {\r\n return []\r\n }\r\n\r\n if (objects.length < minTriggerSize) {\r\n return objects\r\n }\r\n\r\n const viewportTop = viewport.y - padding\r\n const viewportBottom = viewport.y + viewport.height + padding\r\n const viewportLeft = viewport.x - padding\r\n const viewportRight = viewport.x + viewport.width + padding\r\n\r\n const isRow = direction === \"row\"\r\n\r\n const children = objects\r\n const totalChildren = children.length\r\n if (totalChildren === 0) return []\r\n\r\n const vpStart = isRow ? viewportLeft : viewportTop\r\n const vpEnd = isRow ? viewportRight : viewportBottom\r\n\r\n // Binary search to find any child that overlaps along the primary axis\r\n let lo = 0\r\n let hi = totalChildren - 1\r\n let candidate = -1\r\n while (lo <= hi) {\r\n const mid = (lo + hi) >> 1\r\n const c = children[mid]\r\n const start = isRow ? c.x : c.y\r\n const end = isRow ? c.x + c.width : c.y + c.height\r\n\r\n if (end < vpStart) {\r\n lo = mid + 1\r\n } else if (start > vpEnd) {\r\n hi = mid - 1\r\n } else {\r\n candidate = mid\r\n break\r\n }\r\n }\r\n\r\n const visibleChildren: T[] = []\r\n\r\n // If binary search found no candidate, the viewport might be in a gap between objects\r\n // Start from the position where the search ended\r\n if (candidate === -1) {\r\n // Binary search failed to find overlap - viewport is in a gap\r\n // We need to check objects before lo for any that extend into the viewport\r\n candidate = lo > 0 ? lo - 1 : 0\r\n }\r\n\r\n // Expand left to find all objects that overlap the viewport\r\n // To handle large objects that start early but extend far, we continue\r\n // checking even after finding objects that don't overlap, up to a limit\r\n // This handles cases where many small objects sit between a large object and the viewport\r\n // Real-world examples: background panels, large images, or spanning containers\r\n const maxLookBehind = 50\r\n let left = candidate\r\n let gapCount = 0\r\n\r\n while (left - 1 >= 0) {\r\n const prev = children[left - 1]\r\n const prevEnd = isRow ? prev.x + prev.width : prev.y + prev.height\r\n\r\n if (prevEnd <= vpStart) {\r\n gapCount++\r\n if (gapCount >= maxLookBehind) {\r\n break\r\n }\r\n } else {\r\n gapCount = 0\r\n }\r\n\r\n left--\r\n }\r\n\r\n // Expand right to find the rightmost overlapping object\r\n let right = candidate + 1\r\n while (right < totalChildren) {\r\n const next = children[right]\r\n if ((isRow ? next.x : next.y) >= vpEnd) break\r\n right++\r\n }\r\n\r\n // Collect candidates that also overlap on the cross axis\r\n for (let i = left; i < right; i++) {\r\n const child = children[i]\r\n const start = isRow ? child.x : child.y\r\n const end = isRow ? child.x + child.width : child.y + child.height\r\n\r\n // Check primary axis overlap (optimization: skip objects that don't overlap)\r\n if (end <= vpStart) continue\r\n if (start >= vpEnd) break\r\n\r\n // Check cross-axis overlap\r\n if (isRow) {\r\n const childBottom = child.y + child.height\r\n if (childBottom < viewportTop) continue\r\n const childTop = child.y\r\n if (childTop > viewportBottom) continue\r\n } else {\r\n const childRight = child.x + child.width\r\n if (childRight < viewportLeft) continue\r\n const childLeft = child.x\r\n if (childLeft > viewportRight) continue\r\n }\r\n\r\n visibleChildren.push(child)\r\n }\r\n\r\n // Sort by zIndex\r\n if (visibleChildren.length > 1) {\r\n visibleChildren.sort((a, b) => (a.zIndex > b.zIndex ? 1 : a.zIndex < b.zIndex ? -1 : 0))\r\n }\r\n\r\n return visibleChildren\r\n}\r\n",
|
|
56
56
|
"/**\r\n * Terminal capability response detection utilities.\r\n *\r\n * Detects various terminal capability response sequences:\r\n * - DECRPM (DEC Request Mode): ESC[?...;N$y where N is 0,1,2,3,4\r\n * - CPR (Cursor Position Report): ESC[row;colR (used for width detection)\r\n * - XTVersion: ESC P >| ... ESC \\\r\n * - Kitty Graphics: ESC _ G ... ESC \\\r\n * - Kitty Keyboard Query: ESC[?Nu where N is 0,1,2,etc\r\n * - DA1 (Device Attributes): ESC[?...c\r\n * - Pixel Resolution: ESC[4;height;widtht\r\n */\r\n\r\n/**\r\n * Check if a sequence is a terminal capability response.\r\n * Returns true if the sequence matches any known capability response pattern.\r\n */\r\nexport function isCapabilityResponse(sequence: string): boolean {\r\n // DECRPM: ESC[?digits;digits$y\r\n if (/\\x1b\\[\\?\\d+(?:;\\d+)*\\$y/.test(sequence)) {\r\n return true\r\n }\r\n\r\n // CPR for explicit width/scaled text detection: ESC[1;NR where N >= 2\r\n // The column number tells us how many characters were rendered with width annotations\r\n // ESC[1;1R means no width support (cursor didn't move)\r\n // ESC[1;2R or higher means width support (cursor moved after rendering)\r\n // We accept any column >= 2 to handle cases where cursor wasn't at exact home position\r\n if (/\\x1b\\[1;(?!1R)\\d+R/.test(sequence)) {\r\n return true\r\n }\r\n\r\n // XTVersion: ESC P >| ... ESC \\\r\n if (/\\x1bP>\\|[\\s\\S]*?\\x1b\\\\/.test(sequence)) {\r\n return true\r\n }\r\n\r\n // Kitty graphics response: ESC _ G ... ESC \\\r\n // Matches any graphics response including OK, errors, etc.\r\n // This is for filtering capability responses from user input\r\n if (/\\x1b_G[\\s\\S]*?\\x1b\\\\/.test(sequence)) {\r\n return true\r\n }\r\n\r\n // Kitty keyboard query response: ESC[?Nu or ESC[?N;Mu (progressive enhancement)\r\n if (/\\x1b\\[\\?\\d+(?:;\\d+)?u/.test(sequence)) {\r\n return true\r\n }\r\n\r\n // DA1 (Device Attributes): ESC[?...c\r\n if (/\\x1b\\[\\?[0-9;]*c/.test(sequence)) {\r\n return true\r\n }\r\n\r\n return false\r\n}\r\n\r\n/**\r\n * Check if a sequence is a pixel resolution response.\r\n * Format: ESC[4;height;widtht\r\n */\r\nexport function isPixelResolutionResponse(sequence: string): boolean {\r\n return /\\x1b\\[4;\\d+;\\d+t/.test(sequence)\r\n}\r\n\r\n/**\r\n * Parse pixel resolution from response sequence.\r\n * Returns { width, height } or null if not a valid resolution response.\r\n */\r\nexport function parsePixelResolution(sequence: string): { width: number; height: number } | null {\r\n const match = sequence.match(/\\x1b\\[4;(\\d+);(\\d+)t/)\r\n if (match) {\r\n return {\r\n width: parseInt(match[2]),\r\n height: parseInt(match[1]),\r\n }\r\n }\r\n return null\r\n}\r\n"
|
|
57
57
|
],
|
|
58
|
-
"mappings": "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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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",
|
|
59
|
-
"debugId": "
|
|
58
|
+
"mappings": "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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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",
|
|
59
|
+
"debugId": "F994E7E6202035C864756E2164756E21",
|
|
60
60
|
"names": []
|
|
61
61
|
}
|