@opentui/core 0.1.55 → 0.1.56

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../node_modules/yoga-layout/dist/binaries/yoga-wasm-base64-esm.js", "../../../node_modules/yoga-layout/dist/src/generated/YGEnums.js", "../../../node_modules/yoga-layout/dist/src/wrapAssembly.js", "../../../node_modules/yoga-layout/dist/src/index.js", "../src/lib/border.ts", "../src/lib/parse.keypress.ts", "../src/lib/parse.keypress-kitty.ts", "../src/lib/KeyHandler.ts", "../src/lib/RGBA.ts", "../src/lib/ascii.font.ts", "../src/types.ts", "../src/utils.ts", "../src/lib/styled-text.ts", "../src/lib/hast-styled-text.ts", "../src/lib/scroll-acceleration.ts", "../src/lib/stdin-buffer.ts", "../src/lib/yoga.options.ts", "../src/lib/parse.mouse.ts", "../src/lib/selection.ts", "../src/lib/singleton.ts", "../src/lib/env.ts", "../src/lib/tree-sitter-styled-text.ts", "../src/lib/tree-sitter/client.ts", "../src/lib/debounce.ts", "../src/lib/queue.ts", "../src/lib/tree-sitter/default-parsers.ts", "../src/lib/data-paths.ts", "../src/lib/validate-dir-name.ts", "../src/lib/tree-sitter/resolve-ft.ts", "../src/lib/tree-sitter/assets/update.ts", "../src/lib/tree-sitter/download-utils.ts", "../src/lib/tree-sitter/index.ts", "../src/lib/extmarks-history.ts", "../src/lib/extmarks.ts", "../src/lib/terminal-palette.ts", "../src/zig.ts", "../src/buffer.ts", "../../../node_modules/bun-ffi-structs/index.js", "../src/zig-structs.ts", "../src/text-buffer.ts", "../src/Renderable.ts", "../src/lib/renderable.validations.ts", "../src/renderables/composition/vnode.ts", "../src/console.ts", "../src/lib/output.capture.ts", "../src/ansi.ts", "../src/renderer.ts", "../src/lib/objects-in-viewport.ts", "../src/lib/terminal-capability-detection.ts"],
3
+ "sources": ["../../../node_modules/yoga-layout/dist/binaries/yoga-wasm-base64-esm.js", "../../../node_modules/yoga-layout/dist/src/generated/YGEnums.js", "../../../node_modules/yoga-layout/dist/src/wrapAssembly.js", "../../../node_modules/yoga-layout/dist/src/index.js", "../src/lib/border.ts", "../src/lib/parse.keypress.ts", "../src/lib/parse.keypress-kitty.ts", "../src/lib/KeyHandler.ts", "../src/lib/RGBA.ts", "../src/lib/ascii.font.ts", "../src/types.ts", "../src/utils.ts", "../src/lib/styled-text.ts", "../src/lib/hast-styled-text.ts", "../src/lib/scroll-acceleration.ts", "../src/lib/stdin-buffer.ts", "../src/lib/yoga.options.ts", "../src/lib/parse.mouse.ts", "../src/lib/selection.ts", "../src/lib/singleton.ts", "../src/lib/env.ts", "../src/lib/tree-sitter-styled-text.ts", "../src/lib/tree-sitter/client.ts", "../src/lib/debounce.ts", "../src/lib/queue.ts", "../src/lib/tree-sitter/default-parsers.ts", "../src/lib/bunfs.ts", "../src/lib/data-paths.ts", "../src/lib/validate-dir-name.ts", "../src/lib/tree-sitter/resolve-ft.ts", "../src/lib/tree-sitter/assets/update.ts", "../src/lib/tree-sitter/download-utils.ts", "../src/lib/tree-sitter/index.ts", "../src/lib/extmarks-history.ts", "../src/lib/extmarks.ts", "../src/lib/terminal-palette.ts", "../src/zig.ts", "../src/buffer.ts", "../../../node_modules/bun-ffi-structs/index.js", "../src/zig-structs.ts", "../src/text-buffer.ts", "../src/Renderable.ts", "../src/lib/renderable.validations.ts", "../src/renderables/composition/vnode.ts", "../src/console.ts", "../src/lib/output.capture.ts", "../src/ansi.ts", "../src/renderer.ts", "../src/lib/objects-in-viewport.ts", "../src/lib/terminal-capability-detection.ts"],
4
4
  "sourcesContent": [
5
5
  "\nvar loadYoga = (() => {\n var _scriptDir = import.meta.url;\n \n return (\nfunction(loadYoga) {\n loadYoga = loadYoga || {};\n\n\nvar h;h||(h=typeof loadYoga !== 'undefined' ? loadYoga : {});var aa,ca;h.ready=new Promise(function(a,b){aa=a;ca=b});var da=Object.assign({},h),q=\"\";\"undefined\"!=typeof document&&document.currentScript&&(q=document.currentScript.src);_scriptDir&&(q=_scriptDir);0!==q.indexOf(\"blob:\")?q=q.substr(0,q.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1):q=\"\";var ea=h.print||console.log.bind(console),v=h.printErr||console.warn.bind(console);Object.assign(h,da);da=null;var w;h.wasmBinary&&(w=h.wasmBinary);\nvar noExitRuntime=h.noExitRuntime||!0;\"object\"!=typeof WebAssembly&&x(\"no native wasm support detected\");var fa,ha=!1;function z(a,b,c){c=b+c;for(var d=\"\";!(b>=c);){var e=a[b++];if(!e)break;if(e&128){var f=a[b++]&63;if(192==(e&224))d+=String.fromCharCode((e&31)<<6|f);else{var g=a[b++]&63;e=224==(e&240)?(e&15)<<12|f<<6|g:(e&7)<<18|f<<12|g<<6|a[b++]&63;65536>e?d+=String.fromCharCode(e):(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023))}}else d+=String.fromCharCode(e)}return d}\nvar ia,ja,A,C,ka,D,E,la,ma;function na(){var a=fa.buffer;ia=a;h.HEAP8=ja=new Int8Array(a);h.HEAP16=C=new Int16Array(a);h.HEAP32=D=new Int32Array(a);h.HEAPU8=A=new Uint8Array(a);h.HEAPU16=ka=new Uint16Array(a);h.HEAPU32=E=new Uint32Array(a);h.HEAPF32=la=new Float32Array(a);h.HEAPF64=ma=new Float64Array(a)}var oa,pa=[],qa=[],ra=[];function sa(){var a=h.preRun.shift();pa.unshift(a)}var F=0,ta=null,G=null;\nfunction x(a){if(h.onAbort)h.onAbort(a);a=\"Aborted(\"+a+\")\";v(a);ha=!0;a=new WebAssembly.RuntimeError(a+\". Build with -sASSERTIONS for more info.\");ca(a);throw a;}function ua(a){return a.startsWith(\"data:application/octet-stream;base64,\")}var H;H=\"data:application/octet-stream;base64,AGFzbQEAAAABugM3YAF/AGACf38AYAF/AX9gA39/fwBgAn98AGACf38Bf2ADf39/AX9gBH9/f30BfWADf398AGAAAGAEf39/fwBgAX8BfGACf38BfGAFf39/f38Bf2AAAX9gA39/fwF9YAZ/f31/fX8AYAV/f39/fwBgAn9/AX1gBX9/f319AX1gAX8BfWADf35/AX5gB39/f39/f38AYAZ/f39/f38AYAR/f39/AX9gBn9/f319fQF9YAR/f31/AGADf399AX1gBn98f39/fwF/YAR/fHx/AGACf30AYAh/f39/f39/fwBgDX9/f39/f39/f39/f38AYAp/f39/f39/f39/AGAFf39/f38BfGAEfHx/fwF9YA1/fX1/f399fX9/f39/AX9gB39/f319f38AYAJ+fwF/YAN/fX0BfWABfAF8YAN/fHwAYAR/f319AGAHf39/fX19fQF9YA1/fX99f31/fX19fX1/AX9gC39/f39/f399fX19AX9gCH9/f39/f319AGAEf39+fgBgB39/f39/f38Bf2ACfH8BfGAFf398fH8AYAN/f38BfGAEf39/fABgA39/fQBgBn9/fX99fwF/ArUBHgFhAWEAHwFhAWIAAwFhAWMACQFhAWQAFgFhAWUAEQFhAWYAIAFhAWcAAAFhAWgAIQFhAWkAAwFhAWoAAAFhAWsAFwFhAWwACgFhAW0ABQFhAW4AAwFhAW8AAQFhAXAAFwFhAXEABgFhAXIAAAFhAXMAIgFhAXQACgFhAXUADQFhAXYAFgFhAXcAAgFhAXgAAwFhAXkAGAFhAXoAAgFhAUEAAQFhAUIAEQFhAUMAAQFhAUQAAAOiAqACAgMSBwcACRkDAAoRBgYKEwAPDxMBBiMTCgcHGgMUASQFJRQHAwMKCgMmAQYYDxobFAAKBw8KBwMDAgkCAAAFGwACBwIHBgIDAQMIDAABKAkHBQURACkZASoAAAIrLAIALQcHBy4HLwkFCgMCMA0xAgMJAgACAQYKAQIBBQEACQIFAQEABQAODQ0GFQIBHBUGAgkCEAAAAAUyDzMMBQYINAUCAwUODg41AgMCAgIDBgICNgIBDAwMAQsLCwsLCx0CAAIAAAABABABBQICAQMCEgMMCwEBAQEBAQsLAQICAwICAgICAgIDAgIICAEICAgEBAQEBAQEBAQABAQABAQEBAAE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GiABQQA2AvADIAFCADcC6AMgAigC7AMiAyACKALoAyIERwRAIAMgBGsiBEEASA0FIAEgBBAeIgM2AuwDIAEgAzYC6AMgASADIARqNgLwAyACKALoAyIEIAIoAuwDIghHBEADQCADIAQoAgA2AgAgA0EEaiEDIARBBGoiBCAIRw0ACwsgASADNgLsAwsgASACKQL0AzcC9AMgASACKAKEBDYChAQgASACKQL8AzcC/AMgAUEANgLkAwsgBSABNgIAIAEgADYC5AMLIAZBAWohBiAFQQRqIgUgB0cNAAsLDwsQAgALUAACQAJAAkACQAJAIAIOBAQAAQIDCyAAIAEgAUEwahBDDwsgACABIAFBMGogAxBEDwsgACABIAFBMGoQQg8LECQACyAAIAEgAUEwaiADEEULcAIBfwF9IwBBEGsiBCQAIARBCGogACABQQJ0QdwlaigCACACEDZDAADAfyEFAkACQAJAIAQtAAxBAWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwt5AgF/AX0jAEEQayIDJAAgA0EIaiAAIAFBAnRB7CVqKAIAIAIQU0MAAMB/IQQCQAJAAkAgAy0ADEEBaw4CAAECCyADKgIIIQQMAQsgAyoCCEMAAAAAlEMK1yM8lCEECyADQRBqJAAgBEMAAAAAl0MAAAAAIAQgBFsbC1QAAkACQAJAAkACQCACDgQEAAECAwsgACABIAFBwgBqEEMPCyAAIAEgAUHCAGogAxBEDwsgACABIAFBwgBqEEIPCxAkAAsgACABIAFBwgBqIAMQRQsvACAAIAJFQQF0IgIgASADEGAgACACIAEQS5IgACACIAEgAxB/IAAgAiABEFKSkgvOAQIDfwJ9IwBBEGsiAyQAQQEhBCADQQhqIABB/ABqIgUgACABQQF0akH2AGoiAS8BABAfAkACQCADKgIIIgcgAioCACIGXARAIAcgB1sEQCACLQAEIQIMAgsgBiAGXCEECyACLQAEIQIgBEUNACADLQAMIAJB/wFxRg0BCyAFIAEgBiACEDkDQCAALQAAIgFBBHENASAAIAFBBHI6AAAgACgCECIBBEAgACABEQAACyAAQYCAgP4HNgKcASAAKALkAyIADQALCyADQRBqJAALzgECA38CfSMAQRBrIgMk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AWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwscACAAIAFBCCACpyACQiCIpyADpyADQiCIpxAVCwUAEFgACzkAIABFBEBBAA8LAn8gAUGAf3FBgL8DRiABQf8ATXJFBEBB/DtBGTYCAEF/DAELIAAgAToAAEEBCwvEAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDhIACgsMCgsCAwQFDAsMDAoLBwgJCyACIAIoAgAiAUEEajYCACAAIAEoAgA2AgAPCwALIAIgAigCACIBQQRqNgIAIAAgATIBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATMBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATAAADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATEAADcDAA8LAAsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACIAMRAQALDwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMAC84BAgN/An0jAEEQayIDJABBASEEIANBCGogAEH8AGoiBSAAIAFBAXRqQegAaiIBLwEAEB8CQAJAIAMqAggiByACKgIAIgZcBEAgByAHWwRAIAItAAQhAgwCCyAGIAZcIQQLIAItAAQhAiAERQ0AIAMtAAwgAkH/AXFGDQELIAUgASAGIAIQOQNAIAAtAAAiAUEEcQ0BIAAgAUEEcjoAACAAKAIQIgEEQCAAIAERAAALIABBgICA/gc2ApwBIAAoAuQDIgANAAsLIANBEGokAAtdAQR/IAAoAgAhAgNAIAIsAAAiAxBXBEBBfyEEIAAgAkEBaiICNgIAIAFBzJmz5gBNBH9BfyADQTBrIgMgAUEKbCIEaiADIARB/////wdzShsFIAQLIQEMAQsLIAELrhQCEn8BfiMAQdAAayIIJAAgCCABNgJMIAhBN2ohFyAIQThqIRQCQAJAAkACQANAIAEhDSAHIA5B/////wdzSg0BIAcgDmohDgJAAkACQCANIgctAAAiCQRAA0ACQAJAIAlB/wFxIgFFBEAgByEBDAELIAFBJUcNASAH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IQEgAEIANwIEIAAgATYCACABIAA2AgQgAkEQaiQAIAALGwEBfyAABEAgACgCACIBBEAgARAjCyAAECMLC0kBAn9BBBAeIQFBIBAeIgBBADYCHCAAQoCAgICAgIDAPzcCFCAAQgA3AgwgAEEAOgAIIABBAzYCBCAAQQA2AgAgASAANgIAIAELIAAgAkEFR0EAIAIbRQRAQbgwIAMgBBBJDwsgAyAEEHALIgEBfiABIAKtIAOtQiCGhCAEIAARFQAiBUIgiKckASAFpwuoAQEFfyAAKAJUIgMoAgAhBSADKAIEIgQgACgCFCAAKAIcIgdrIgYgBCAGSRsiBgRAIAUgByAGECsaIAMgAygCACAGaiIFNgIAIAMgAygCBCAGayIENgIECyAEIAIgAiAESxsiBARAIAUgASAEECsaIAMgAygCACAEaiIFNgIAIAMgAygCBCAEazYCBAsgBUEAOgAAIAAgACgCLCIBNgIcIAAgATYCFCACCwQAQgALBABBAAuKBQIGfgJ/IAEgASgCAEEHakF4cSIBQRBqNgIAIAAhCSABKQMAIQMgASkDCCEGIwBBIGsiCCQAAkAgBkL///////////8AgyIEQoCAgICAgMCAPH0gBEKAgICAgIDA/8MAfVQEQCAGQgSGIANCPIiEIQQgA0L//////////w+DIgNCgYCAgICAgIAIWgRAIARCgYCAgICAgIDAAHwhAgwCCyAEQoCAgICAgICAQH0hAiADQoCAgICAgICACFINASACIARCAYN8IQIMAQsgA1AgBEKAgICAgIDA//8AVCAEQoCAgICAgMD//wBRG0UEQCAGQgSGIANCPIiEQv////////8Dg0KAgICAgICA/P8AhCECDAELQoCAgICAgID4/wAhAiAEQv///////7//wwBWDQBCACECIARCMIinIgBBkfcASQ0AIAMhAiAGQv///////z+DQoCAgICAgMAAhCIFIQcCQCAAQYH3AGsiAUHAAHEEQCACIAFBQGqthiEHQgAhAgwBCyABRQ0AIAcgAa0iBIYgAkHAACABa62IhCEHIAIgBIYhAgsgCCACNwMQIAggBzcDGAJAQYH4ACAAayIAQcAAcQRAIAUgAEFAaq2IIQNCACEFDAELIABFDQAgBUHAACAAa62GIAMgAK0iAoiEIQMgBSACiCEFCyAIIAM3AwAgCCAF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ASAAKAIAIQAgASACQQFxBH8gASgCACAAaigCAAUgAAsRCwALYQECfyMAQRBrIgIkACABIAAoAgQiA0EBdWohASAAKAIAIQAgAiABIANBAXEEfyABKAIAIABqKAIABSAACxEBAEEQEB4iACACKQMINwMIIAAgAikDADcDACACQRBqJAAgAAtjAQJ/IwBBEGsiAyQAIAEgACgCBCIEQQF1aiEBIAAoAgAhACADIAEgAiAEQQFxBH8gASgCACAAaigCAAUgAAsRAwBBEBAeIgAgAykDCDcDCCAAIAMpAwA3AwAgA0EQaiQAIAALNwEBfyABIAAoAgQiA0EBdWohASAAKAIAIQAgASACIANBAXEEfyABKAIAIABqKAIABSAACxEEAAs5AQF/IAEgACgCBCIEQQF1aiEBIAAoAgAhACABIAIgAyAEQQFxBH8gASgCACAAaigCAAUgAAsRCAALCQAgASAAEQIACwUAQcM7Cw8AIAEgACgCAGogAjYCAAsNACABIAAoAgBqKAIACxgBAX9BEBAeIgBCADcDCCAAQQA2AgAgAAsYAQF/QRAQHiIAQgA3AwAgAEIANwMIIAALDABBMBAeQQBBMBAqCzcBAX8gASAAKAIEIgNBAXVqIQEgACgCACEAIAEgAiADQQFxBH8gASgCACAAaigCAAUgAAsRHgALBQBBvjsLIQAgACABKAIAIAEgASwAC0EASBtBuzsgAigCABAQNgIACyoBAX9BDBAeIgFBADoABCABIAAoAgA2AgggAEEANgIAIAFB2Cc2AgAgAQsFAEG7OwsFAEG4OwshACAAIAEoAgAgASABLAALQQBIG0GkOyACKAIAEBA2AgAL2AEBBH8jAEEgayIDJAAgASgCACIEQfD///8HSQRAAkACQCAEQQtPBEAgBEEPckEBaiIFEB4hBiADIAVBgICAgHhyNgIQIAMgBjYCCCADIAQ2AgwgBCAGaiEFDAELIAMgBDoAEyADQQhqIgYgBGohBSAERQ0BCyAGIAFBBGogBBArGgsgBUEAOgAAIAMgAjYCACADQRhqIANBCGogAyAAEQMAIAMoAhgQHSADKAIYIgAQBiADKAIAEAYgAywAE0EASARAIAMoAggQIwsgA0EgaiQAIAAPCxACAAsqAQF/QQwQHiIBQQA6AAQgASAAKAIANgIIIABBADYCACABQeAmNgIA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AkEIaiAIIAYQHyACIAcgAC8AABAfQQEhAyACKgIIIgogAioCACILXAR/IAogClsNAyALIAtcBSADC0UNAiACLQAMIAItAARHDQILIABBAmohAEEBIQMgBCEGQQEhBCAGRQ0ACyABLwB6IgBBB3FFBEAgBS0AekEHcUUNAgsgCCAAECAiCiAHIAUvAHoQICILWw0BIAogClsNACALIAtcDQELIAFBFGogBUEUakHoABArGiABQfwAaiAFQfwAahCgAQNAIAEtAAAiAEEEcQ0BIAEgAEEEcjoAACABKAIQIgAEQCABIAARAAALIAFBgICA/gc2ApwBIAEoAuQDIgENAAsLIAJBEGokAAvGAwEEfyMAQaAEayICJAAgACgCBCEBIABBADYCBCABBEAgASABKAIAKAIEEQAACyAAKAIIIQEgAEEANgIIIAEEQCABIAEoAgAoAgQRAAALAkAgACgCACIAKALoAyAAKALsA0YEQCAAKALkAw0BIAAgAkEYaiAAKAL0AxBcIgEpAgA3AgAgACABKAIQNgIQIAAgASkCCDcCCCAAQRRqIAFBFGpB6AAQKxogACABKQKMATcCjAEgACABKQKEATcChAEgACABKQJ8NwJ8IAEoApQBIQQgAUEANgKUASAAKAKUASEDIAAgBDYClAEgAwRAIAMQWwsgAEGYAWogAUGYAWpB0AIQKxogACgC6AMiAwRAIAAgAzYC7AMgAxAjCyAAIAEoAugDNgLoAyAAIAEoAuwDNgLsAyAAIAEoAvADNgLwAyABQQA2AvADIAFCADcC6AMgACABKQL8AzcC/AMgACABKQL0AzcC9AMgACABKAKEBDYChAQgASgClAEhACABQQA2ApQBIAAEQCAAEFsLIAJBoARqJAAPCyACQfAcNgIQIABBBUHYJSACQRBqECwQJAALIAJB5hE2AgAgAEEFQdglIAIQLBAkAAsLAEEMEB4gABCiAQsLAEEMEB5BABCiAQsNACAAKAIALQAIQQFxCwoAIAAoAgAoAhQLGQAgAUH/AXEEQBACAAsgACgCACgCEEEBcQsYACAAKAIAIgAgAC0ACEH+AXEgAXI6AAgLJgAgASAAKAIAIgAoAhRHBEAgACABNgIUIAAgACgCDEEBajYCDAsLkgEBAn8jAEEQayICJAAgACgCACEAIAFDAAAAAGAEQCABIAAqAhhcBEAgACABOAIYIAAgACgCDEEBajYCDAsgAkEQaiQADwsgAkGIFDYCACMAQRBrIgMkACADIAI2AgwCQCAARQRAQbgwQdglIAIQSRoMAQsgAEEAQQVB2CUgAiAAKAIEEQ0AGgsgA0EQaiQAECQACz8AIAFB/wFxRQRAIAIgACgCACIAKAIQIgFBAXFHBEAgACABQX5xIAJyNgIQIAAgACgCDEEBajYCDAsPCxACAAsL4CYjAEGACAuBHk9ubHkgbGVhZiBub2RlcyB3aXRoIGN1c3RvbSBtZWFzdXJlIGZ1bmN0aW9ucyBzaG91bGQgbWFudWFsbHkgbWFyayB0aGVtc2VsdmVzIGFzIGRpcnR5AGlzRGlydHkAbWFya0RpcnR5AGRlc3Ryb3kAc2V0RGlzcGxheQBnZXREaXNwbGF5AHNldEZsZXgALSsgICAwWDB4AC0wWCswWCAwWC0weCsweCAweABzZXRGbGV4R3JvdwBnZXRGbGV4R3JvdwBzZXRPdmVyZmxvdwBnZXRPdmVyZmxvdwBoYXNOZXdMYXlvdXQAY2FsY3VsYXRlTGF5b3V0AGdldENvbXB1dGVkTGF5b3V0AHVuc2lnbmVkIHNob3J0AGdldENoaWxkQ291bnQAdW5zaWduZWQgaW50AHNldEp1c3RpZnlDb250ZW50AGdldEp1c3RpZnlDb250ZW50AGF2YWlsYWJsZUhlaWdodCBpcyBpbmRlZmluaXRlIHNvIGhlaWdodFNpemluZ01vZGUgbXVzdCBiZSBTaXppbmdNb2RlOjpNYXhDb250ZW50AGF2YWlsYWJsZVdpZHRoIGlzIGluZGVmaW5pdGUgc28gd2lkdGhTaXppbmdNb2RlIG11c3QgYmUgU2l6aW5nTW9kZTo6TWF4Q29udGVudABzZXRBbGlnbkNvbnRlbnQAZ2V0QWxpZ25Db250ZW50AGdldFBhcmVudABpbXBsZW1lbnQAc2V0TWF4SGVpZ2h0UGVyY2VudABzZXRIZWlnaHRQZXJjZW50AHNldE1pbkhlaWdodFBlcmNlbnQAc2V0RmxleEJhc2lzUGVyY2VudABzZXRHYXBQZXJjZW50AHNldFBvc2l0aW9uUGVyY2VudABzZXRNYXJnaW5QZXJjZW50AHNldE1heFdpZHRoUGVyY2VudABzZXRXaWR0aFBlcmNlbnQAc2V0TWluV2lkdGhQZXJjZW50AHNldFBhZGRpbmdQZXJjZW50AGhhbmRsZS50eXBlKCkgPT0gU3R5bGVWYWx1ZUhhbmRsZTo6VHlwZTo6UG9pbnQgfHwgaGFuZGxlLnR5cGUoKSA9PSBTdHlsZVZhbHVlSGFuZGxlOjpUeXBlOjpQZXJjZW50AGNyZWF0ZURlZmF1bHQAdW5pdAByaWdodABoZWlnaHQAc2V0TWF4SGVpZ2h0AGdldE1heEhlaWdodABzZXRIZWlnaHQAZ2V0SGVpZ2h0AHNldE1pbkhlaWdodABnZXRNaW5IZWlnaHQAZ2V0Q29tcHV0ZWRIZWlnaHQAZ2V0Q29tcHV0ZWRSaWdodABsZWZ0AGdldENvbXB1dGVkTGVmdAByZXNldABfX2Rlc3RydWN0AGZsb2F0AHVpbnQ2NF90AHVzZVdlYkRlZmF1bHRzAHNldFVzZVdlYkRlZmF1bHRzAHNldEFsaWduSXRlbXMAZ2V0QWxpZ25JdGVtcwBzZXRGbGV4QmFzaXMAZ2V0RmxleEJhc2lzAENhbm5vdCBnZXQgbGF5b3V0IHByb3BlcnRpZXMgb2YgbXVsdGktZWRnZSBzaG9ydGhhbmRzAHNldFBvaW50U2NhbGVGYWN0b3IATWVhc3VyZUNhbGxiYWNrV3JhcHBlcgBEaXJ0aWVkQ2FsbGJhY2tXcmFwcGVyAENhbm5vdCByZXNldCBhIG5vZGUgc3RpbGwgYXR0YWNoZWQgdG8gYSBvd25lcgBzZXRCb3JkZXIAZ2V0Qm9yZGVyAGdldENvbXB1dGVkQm9yZGVyAGdldE51bWJlcgBoYW5kbGUudHlwZSgpID09IFN0eWxlVmFsdWVIYW5kbGU6OlR5cGU6Ok51bWJlcgB1bnNpZ25lZCBjaGFyAHRvcABnZXRDb21wdXRlZFRvcABzZXRGbGV4V3JhcABnZXRGbGV4V3JhcABzZXRHYXAAZ2V0R2FwACVwAHNldEhlaWdodEF1dG8Ac2V0RmxleEJhc2lzQXV0bwBzZXRQb3NpdGlvbkF1dG8Ac2V0TWFyZ2luQXV0bwBzZXRXaWR0aEF1dG8AU2NhbGUgZmFjdG9yIHNob3VsZCBub3QgYmUgbGVzcyB0aGFuIHplcm8Ac2V0QXNwZWN0UmF0aW8AZ2V0QXNwZWN0UmF0aW8Ac2V0UG9zaXRpb24AZ2V0UG9zaXRpb24Abm90aWZ5T25EZXN0cnVjdGlvbgBzZXRGbGV4RGlyZWN0aW9uAGdldEZsZXhEaXJlY3Rpb24Ac2V0RGlyZWN0aW9uAGdldERpcmVjdGlvbgBzZXRNYXJnaW4AZ2V0TWFyZ2luAGdldENvbXB1dGVkTWFyZ2luAG1hcmtMYXlvdXRTZWVuAG5hbgBib3R0b20AZ2V0Q29tcHV0ZWRCb3R0b20AYm9vbABlbXNjcmlwdGVuOjp2YWwAc2V0RmxleFNocmluawBnZXRGbGV4U2hyaW5rAHNldEFsd2F5c0Zvcm1zQ29udGFpbmluZ0Jsb2NrAE1lYXN1cmVDYWxsYmFjawBEaXJ0aWVkQ2FsbGJhY2sAZ2V0TGVuZ3RoAHdpZHRoAHNldE1heFdpZHRoAGdldE1heFdpZHRoAHNldFdpZHRoAGdldFdpZHRoAHNldE1pbldpZHRoAGdldE1pbldpZHRoAGdldENvbXB1dGVkV2lkdGgAcHVzaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1NtYWxsVmFsdWVCdWZmZXIuaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1N0eWxlVmFsdWVQb29sLmgAdW5zaWduZWQgbG9uZwBzZXRCb3hTaXppbmcAZ2V0Qm94U2l6aW5nAHN0ZDo6d3N0cmluZwBzdGQ6OnN0cmluZwBzdGQ6OnUxNnN0cmluZwBzdGQ6OnUzMnN0cmluZwBzZXRQYWRkaW5nAGdldFBhZGRpbmcAZ2V0Q29tcHV0ZWRQYWRkaW5nAFRyaWVkIHRvIGNvbnN0cnVjdCBZR05vZGUgd2l0aCBudWxsIGNvbmZpZwBBdHRlbXB0aW5nIHRvIGNvbnN0cnVjdCBOb2RlIHdpdGggbnVsbCBjb25maWcAY3JlYXRlV2l0aENvbmZpZwBpbmYAc2V0QWxpZ25TZWxmAGdldEFsaWduU2VsZgBTaXplAHZhbHVlAFZhbHVlAGNyZWF0ZQBtZWFzdXJlAHNldFBvc2l0aW9uVHlwZQBnZXRQb3NpdGlvblR5cGUAaXNSZWZlcmVuY2VCYXNlbGluZQBzZXRJc1JlZmVyZW5jZUJhc2VsaW5lAGNvcHlTdHlsZQBkb3VibGUATm9kZQBleHRlbmQAaW5zZXJ0Q2hpbGQAZ2V0Q2hpbGQAcmVtb3ZlQ2hpbGQAdm9pZABzZXRFeHBlcmltZW50YWxGZWF0dXJlRW5hYmxlZABpc0V4cGVyaW1lbnRhbEZlYXR1cmVFbmFibGVkAGRpcnRpZWQAQ2Fubm90IHJlc2V0IGEgbm9kZSB3aGljaCBzdGlsbCBoYXMgY2hpbGRyZW4gYXR0YWNoZWQAdW5zZXRNZWFzdXJlRnVuYwB1bnNldERpcnRpZWRGdW5jAHNldEVycmF0YQBnZXRFcnJhdGEATWVhc3VyZSBmdW5jdGlvbiByZXR1cm5lZCBhbiBpbnZhbGlkIGRpbWVuc2lvbiB0byBZb2dhOiBbd2lkdGg9JWYsIGhlaWdodD0lZl0ARXhwZWN0IGN1c3RvbSBiYXNlbGluZSBmdW5jdGlvbiB0byBub3QgcmV0dXJuIE5hTgBOQU4ASU5GAGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8Y2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgY2hhcj4Ac3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2lnbmVk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\";if(!ua(H)){var va=H;H=h.locateFile?h.locateFile(va,q):q+va}\nfunction wa(){var a=H;try{if(a==H&&w)return new Uint8Array(w);if(ua(a))try{var b=xa(a.slice(37)),c=new Uint8Array(b.length);for(a=0;a<b.length;++a)c[a]=b.charCodeAt(a);var d=c}catch(f){throw Error(\"Converting base64 string to bytes failed.\");}else d=void 0;var e=d;if(e)return e;throw\"both async and sync fetching of the wasm failed\";}catch(f){x(f)}}\nfunction ya(){return w||\"function\"!=typeof fetch?Promise.resolve().then(function(){return wa()}):fetch(H,{credentials:\"same-origin\"}).then(function(a){if(!a.ok)throw\"failed to load wasm binary file at '\"+H+\"'\";return a.arrayBuffer()}).catch(function(){return wa()})}function za(a){for(;0<a.length;)a.shift()(h)}function Aa(a){if(void 0===a)return\"_unknown\";a=a.replace(/[^a-zA-Z0-9_]/g,\"$\");var b=a.charCodeAt(0);return 48<=b&&57>=b?\"_\"+a:a}\nfunction Ba(a,b){a=Aa(a);return function(){return b.apply(this,arguments)}}var J=[{},{value:void 0},{value:null},{value:!0},{value:!1}],Ca=[];function Da(a){var b=Error,c=Ba(a,function(d){this.name=a;this.message=d;d=Error(d).stack;void 0!==d&&(this.stack=this.toString()+\"\\n\"+d.replace(/^Error(:[^\\n]*)?\\n/,\"\"))});c.prototype=Object.create(b.prototype);c.prototype.constructor=c;c.prototype.toString=function(){return void 0===this.message?this.name:this.name+\": \"+this.message};return c}var K=void 0;\nfunction L(a){throw new K(a);}var M=a=>{a||L(\"Cannot use deleted val. handle = \"+a);return J[a].value},Ea=a=>{switch(a){case void 0:return 1;case null:return 2;case !0:return 3;case !1:return 4;default:var b=Ca.length?Ca.pop():J.length;J[b]={ga:1,value:a};return b}},Fa=void 0,Ga=void 0;function N(a){for(var b=\"\";A[a];)b+=Ga[A[a++]];return b}var O=[];function Ha(){for(;O.length;){var a=O.pop();a.M.$=!1;a[\"delete\"]()}}var P=void 0,Q={};\nfunction Ia(a,b){for(void 0===b&&L(\"ptr should not be undefined\");a.R;)b=a.ba(b),a=a.R;return b}var R={};function Ja(a){a=Ka(a);var b=N(a);S(a);return b}function La(a,b){var c=R[a];void 0===c&&L(b+\" has unknown type \"+Ja(a));return c}function Ma(){}var Na=!1;function Oa(a){--a.count.value;0===a.count.value&&(a.T?a.U.W(a.T):a.P.N.W(a.O))}function Pa(a,b,c){if(b===c)return a;if(void 0===c.R)return null;a=Pa(a,b,c.R);return null===a?null:c.na(a)}var Qa={};function Ra(a,b){b=Ia(a,b);return Q[b]}\nvar Sa=void 0;function Ta(a){throw new Sa(a);}function Ua(a,b){b.P&&b.O||Ta(\"makeClassHandle requires ptr and ptrType\");!!b.U!==!!b.T&&Ta(\"Both smartPtrType and smartPtr must be specified\");b.count={value:1};return T(Object.create(a,{M:{value:b}}))}function T(a){if(\"undefined\"===typeof FinalizationRegistry)return T=b=>b,a;Na=new FinalizationRegistry(b=>{Oa(b.M)});T=b=>{var c=b.M;c.T&&Na.register(b,{M:c},b);return b};Ma=b=>{Na.unregister(b)};return T(a)}var Va={};\nfunction Wa(a){for(;a.length;){var b=a.pop();a.pop()(b)}}function Xa(a){return this.fromWireType(D[a>>2])}var U={},Ya={};function V(a,b,c){function d(k){k=c(k);k.length!==a.length&&Ta(\"Mismatched type converter count\");for(var m=0;m<a.length;++m)W(a[m],k[m])}a.forEach(function(k){Ya[k]=b});var e=Array(b.length),f=[],g=0;b.forEach((k,m)=>{R.hasOwnProperty(k)?e[m]=R[k]:(f.push(k),U.hasOwnProperty(k)||(U[k]=[]),U[k].push(()=>{e[m]=R[k];++g;g===f.length&&d(e)}))});0===f.length&&d(e)}\nfunction Za(a){switch(a){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(\"Unknown type size: \"+a);}}\nfunction W(a,b,c={}){if(!(\"argPackAdvance\"in b))throw new TypeError(\"registerType registeredInstance requires argPackAdvance\");var d=b.name;a||L('type \"'+d+'\" must have a positive integer typeid pointer');if(R.hasOwnProperty(a)){if(c.ua)return;L(\"Cannot register type '\"+d+\"' twice\")}R[a]=b;delete Ya[a];U.hasOwnProperty(a)&&(b=U[a],delete U[a],b.forEach(e=>e()))}function $a(a){L(a.M.P.N.name+\" instance already deleted\")}function X(){}\nfunction ab(a,b,c){if(void 0===a[b].S){var d=a[b];a[b]=function(){a[b].S.hasOwnProperty(arguments.length)||L(\"Function '\"+c+\"' called with an invalid number of arguments (\"+arguments.length+\") - expects one of (\"+a[b].S+\")!\");return a[b].S[arguments.length].apply(this,arguments)};a[b].S=[];a[b].S[d.Z]=d}}\nfunction bb(a,b){h.hasOwnProperty(a)?(L(\"Cannot register public name '\"+a+\"' twice\"),ab(h,a,a),h.hasOwnProperty(void 0)&&L(\"Cannot register multiple overloads of a function with the same number of arguments (undefined)!\"),h[a].S[void 0]=b):h[a]=b}function cb(a,b,c,d,e,f,g,k){this.name=a;this.constructor=b;this.X=c;this.W=d;this.R=e;this.pa=f;this.ba=g;this.na=k;this.ja=[]}\nfunction db(a,b,c){for(;b!==c;)b.ba||L(\"Expected null or instance of \"+c.name+\", got an instance of \"+b.name),a=b.ba(a),b=b.R;return a}function eb(a,b){if(null===b)return this.ea&&L(\"null is not a valid \"+this.name),0;b.M||L('Cannot pass \"'+fb(b)+'\" as a '+this.name);b.M.O||L(\"Cannot pass deleted object as a pointer of type \"+this.name);return db(b.M.O,b.M.P.N,this.N)}\nfunction gb(a,b){if(null===b){this.ea&&L(\"null is not a valid \"+this.name);if(this.da){var c=this.fa();null!==a&&a.push(this.W,c);return c}return 0}b.M||L('Cannot pass \"'+fb(b)+'\" as a '+this.name);b.M.O||L(\"Cannot pass deleted object as a pointer of type \"+this.name);!this.ca&&b.M.P.ca&&L(\"Cannot convert argument of type \"+(b.M.U?b.M.U.name:b.M.P.name)+\" to parameter type \"+this.name);c=db(b.M.O,b.M.P.N,this.N);if(this.da)switch(void 0===b.M.T&&L(\"Passing raw pointer to smart pointer is illegal\"),\nthis.Ba){case 0:b.M.U===this?c=b.M.T:L(\"Cannot convert argument of type \"+(b.M.U?b.M.U.name:b.M.P.name)+\" to parameter type \"+this.name);break;case 1:c=b.M.T;break;case 2:if(b.M.U===this)c=b.M.T;else{var d=b.clone();c=this.xa(c,Ea(function(){d[\"delete\"]()}));null!==a&&a.push(this.W,c)}break;default:L(\"Unsupporting sharing policy\")}return c}\nfunction hb(a,b){if(null===b)return this.ea&&L(\"null is not a valid \"+this.name),0;b.M||L('Cannot pass \"'+fb(b)+'\" as a '+this.name);b.M.O||L(\"Cannot pass deleted object as a pointer of type \"+this.name);b.M.P.ca&&L(\"Cannot convert argument of type \"+b.M.P.name+\" to parameter type \"+this.name);return db(b.M.O,b.M.P.N,this.N)}\nfunction Y(a,b,c,d){this.name=a;this.N=b;this.ea=c;this.ca=d;this.da=!1;this.W=this.xa=this.fa=this.ka=this.Ba=this.wa=void 0;void 0!==b.R?this.toWireType=gb:(this.toWireType=d?eb:hb,this.V=null)}function ib(a,b){h.hasOwnProperty(a)||Ta(\"Replacing nonexistant public symbol\");h[a]=b;h[a].Z=void 0}\nfunction jb(a,b){var c=[];return function(){c.length=0;Object.assign(c,arguments);if(a.includes(\"j\")){var d=h[\"dynCall_\"+a];d=c&&c.length?d.apply(null,[b].concat(c)):d.call(null,b)}else d=oa.get(b).apply(null,c);return d}}function Z(a,b){a=N(a);var c=a.includes(\"j\")?jb(a,b):oa.get(b);\"function\"!=typeof c&&L(\"unknown function pointer with signature \"+a+\": \"+b);return c}var mb=void 0;\nfunction nb(a,b){function c(f){e[f]||R[f]||(Ya[f]?Ya[f].forEach(c):(d.push(f),e[f]=!0))}var d=[],e={};b.forEach(c);throw new mb(a+\": \"+d.map(Ja).join([\", \"]));}\nfunction ob(a,b,c,d,e){var f=b.length;2>f&&L(\"argTypes array size mismatch! Must at least get return value and 'this' types!\");var g=null!==b[1]&&null!==c,k=!1;for(c=1;c<b.length;++c)if(null!==b[c]&&void 0===b[c].V){k=!0;break}var m=\"void\"!==b[0].name,l=f-2,n=Array(l),p=[],r=[];return function(){arguments.length!==l&&L(\"function \"+a+\" called with \"+arguments.length+\" arguments, expected \"+l+\" args!\");r.length=0;p.length=g?2:1;p[0]=e;if(g){var u=b[1].toWireType(r,this);p[1]=u}for(var t=0;t<l;++t)n[t]=\nb[t+2].toWireType(r,arguments[t]),p.push(n[t]);t=d.apply(null,p);if(k)Wa(r);else for(var y=g?1:2;y<b.length;y++){var B=1===y?u:n[y-2];null!==b[y].V&&b[y].V(B)}u=m?b[0].fromWireType(t):void 0;return u}}function pb(a,b){for(var c=[],d=0;d<a;d++)c.push(E[b+4*d>>2]);return c}function qb(a){4<a&&0===--J[a].ga&&(J[a]=void 0,Ca.push(a))}function fb(a){if(null===a)return\"null\";var b=typeof a;return\"object\"===b||\"array\"===b||\"function\"===b?a.toString():\"\"+a}\nfunction rb(a,b){switch(b){case 2:return function(c){return this.fromWireType(la[c>>2])};case 3:return function(c){return this.fromWireType(ma[c>>3])};default:throw new TypeError(\"Unknown float type: \"+a);}}\nfunction sb(a,b,c){switch(b){case 0:return c?function(d){return ja[d]}:function(d){return A[d]};case 1:return c?function(d){return C[d>>1]}:function(d){return ka[d>>1]};case 2:return c?function(d){return D[d>>2]}:function(d){return E[d>>2]};default:throw new TypeError(\"Unknown integer type: \"+a);}}function tb(a,b){for(var c=\"\",d=0;!(d>=b/2);++d){var e=C[a+2*d>>1];if(0==e)break;c+=String.fromCharCode(e)}return c}\nfunction ub(a,b,c){void 0===c&&(c=2147483647);if(2>c)return 0;c-=2;var d=b;c=c<2*a.length?c/2:a.length;for(var e=0;e<c;++e)C[b>>1]=a.charCodeAt(e),b+=2;C[b>>1]=0;return b-d}function vb(a){return 2*a.length}function wb(a,b){for(var c=0,d=\"\";!(c>=b/4);){var e=D[a+4*c>>2];if(0==e)break;++c;65536<=e?(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023)):d+=String.fromCharCode(e)}return d}\nfunction xb(a,b,c){void 0===c&&(c=2147483647);if(4>c)return 0;var d=b;c=d+c-4;for(var e=0;e<a.length;++e){var f=a.charCodeAt(e);if(55296<=f&&57343>=f){var g=a.charCodeAt(++e);f=65536+((f&1023)<<10)|g&1023}D[b>>2]=f;b+=4;if(b+4>c)break}D[b>>2]=0;return b-d}function yb(a){for(var b=0,c=0;c<a.length;++c){var d=a.charCodeAt(c);55296<=d&&57343>=d&&++c;b+=4}return b}var zb={};function Ab(a){var b=zb[a];return void 0===b?N(a):b}var Bb=[];function Cb(a){var b=Bb.length;Bb.push(a);return b}\nfunction Db(a,b){for(var c=Array(a),d=0;d<a;++d)c[d]=La(E[b+4*d>>2],\"parameter \"+d);return c}var Eb=[],Fb=[null,[],[]];K=h.BindingError=Da(\"BindingError\");h.count_emval_handles=function(){for(var a=0,b=5;b<J.length;++b)void 0!==J[b]&&++a;return a};h.get_first_emval=function(){for(var a=5;a<J.length;++a)if(void 0!==J[a])return J[a];return null};Fa=h.PureVirtualError=Da(\"PureVirtualError\");for(var Gb=Array(256),Hb=0;256>Hb;++Hb)Gb[Hb]=String.fromCharCode(Hb);Ga=Gb;h.getInheritedInstanceCount=function(){return Object.keys(Q).length};\nh.getLiveInheritedInstances=function(){var a=[],b;for(b in Q)Q.hasOwnProperty(b)&&a.push(Q[b]);return a};h.flushPendingDeletes=Ha;h.setDelayFunction=function(a){P=a;O.length&&P&&P(Ha)};Sa=h.InternalError=Da(\"InternalError\");X.prototype.isAliasOf=function(a){if(!(this instanceof X&&a instanceof X))return!1;var b=this.M.P.N,c=this.M.O,d=a.M.P.N;for(a=a.M.O;b.R;)c=b.ba(c),b=b.R;for(;d.R;)a=d.ba(a),d=d.R;return b===d&&c===a};\nX.prototype.clone=function(){this.M.O||$a(this);if(this.M.aa)return this.M.count.value+=1,this;var a=T,b=Object,c=b.create,d=Object.getPrototypeOf(this),e=this.M;a=a(c.call(b,d,{M:{value:{count:e.count,$:e.$,aa:e.aa,O:e.O,P:e.P,T:e.T,U:e.U}}}));a.M.count.value+=1;a.M.$=!1;return a};X.prototype[\"delete\"]=function(){this.M.O||$a(this);this.M.$&&!this.M.aa&&L(\"Object already scheduled for deletion\");Ma(this);Oa(this.M);this.M.aa||(this.M.T=void 0,this.M.O=void 0)};X.prototype.isDeleted=function(){return!this.M.O};\nX.prototype.deleteLater=function(){this.M.O||$a(this);this.M.$&&!this.M.aa&&L(\"Object already scheduled for deletion\");O.push(this);1===O.length&&P&&P(Ha);this.M.$=!0;return this};Y.prototype.qa=function(a){this.ka&&(a=this.ka(a));return a};Y.prototype.ha=function(a){this.W&&this.W(a)};Y.prototype.argPackAdvance=8;Y.prototype.readValueFromPointer=Xa;Y.prototype.deleteObject=function(a){if(null!==a)a[\"delete\"]()};\nY.prototype.fromWireType=function(a){function b(){return this.da?Ua(this.N.X,{P:this.wa,O:c,U:this,T:a}):Ua(this.N.X,{P:this,O:a})}var c=this.qa(a);if(!c)return this.ha(a),null;var d=Ra(this.N,c);if(void 0!==d){if(0===d.M.count.value)return d.M.O=c,d.M.T=a,d.clone();d=d.clone();this.ha(a);return d}d=this.N.pa(c);d=Qa[d];if(!d)return b.call(this);d=this.ca?d.la:d.pointerType;var e=Pa(c,this.N,d.N);return null===e?b.call(this):this.da?Ua(d.N.X,{P:d,O:e,U:this,T:a}):Ua(d.N.X,{P:d,O:e})};\nmb=h.UnboundTypeError=Da(\"UnboundTypeError\");\nvar xa=\"function\"==typeof atob?atob:function(a){var b=\"\",c=0;a=a.replace(/[^A-Za-z0-9\\+\\/=]/g,\"\");do{var d=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(a.charAt(c++));var e=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(a.charAt(c++));var f=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(a.charAt(c++));var g=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(a.charAt(c++));d=d<<2|e>>4;\ne=(e&15)<<4|f>>2;var k=(f&3)<<6|g;b+=String.fromCharCode(d);64!==f&&(b+=String.fromCharCode(e));64!==g&&(b+=String.fromCharCode(k))}while(c<a.length);return b},Jb={l:function(a,b,c,d){x(\"Assertion failed: \"+(a?z(A,a):\"\")+\", at: \"+[b?b?z(A,b):\"\":\"unknown filename\",c,d?d?z(A,d):\"\":\"unknown function\"])},q:function(a,b,c){a=N(a);b=La(b,\"wrapper\");c=M(c);var d=[].slice,e=b.N,f=e.X,g=e.R.X,k=e.R.constructor;a=Ba(a,function(){e.R.ja.forEach(function(l){if(this[l]===g[l])throw new Fa(\"Pure virtual function \"+\nl+\" must be implemented in JavaScript\");}.bind(this));Object.defineProperty(this,\"__parent\",{value:f});this.__construct.apply(this,d.call(arguments))});f.__construct=function(){this===f&&L(\"Pass correct 'this' to __construct\");var l=k.implement.apply(void 0,[this].concat(d.call(arguments)));Ma(l);var n=l.M;l.notifyOnDestruction();n.aa=!0;Object.defineProperties(this,{M:{value:n}});T(this);l=n.O;l=Ia(e,l);Q.hasOwnProperty(l)?L(\"Tried to register registered instance: \"+l):Q[l]=this};f.__destruct=function(){this===\nf&&L(\"Pass correct 'this' to __destruct\");Ma(this);var l=this.M.O;l=Ia(e,l);Q.hasOwnProperty(l)?delete Q[l]:L(\"Tried to unregister unregistered instance: \"+l)};a.prototype=Object.create(f);for(var m in c)a.prototype[m]=c[m];return Ea(a)},j:function(a){var b=Va[a];delete Va[a];var c=b.fa,d=b.W,e=b.ia,f=e.map(g=>g.ta).concat(e.map(g=>g.za));V([a],f,g=>{var k={};e.forEach((m,l)=>{var n=g[l],p=m.ra,r=m.sa,u=g[l+e.length],t=m.ya,y=m.Aa;k[m.oa]={read:B=>n.fromWireType(p(r,B)),write:(B,ba)=>{var I=[];t(y,\nB,u.toWireType(I,ba));Wa(I)}}});return[{name:b.name,fromWireType:function(m){var l={},n;for(n in k)l[n]=k[n].read(m);d(m);return l},toWireType:function(m,l){for(var n in k)if(!(n in l))throw new TypeError('Missing field: \"'+n+'\"');var p=c();for(n in k)k[n].write(p,l[n]);null!==m&&m.push(d,p);return p},argPackAdvance:8,readValueFromPointer:Xa,V:d}]})},v:function(){},B:function(a,b,c,d,e){var f=Za(c);b=N(b);W(a,{name:b,fromWireType:function(g){return!!g},toWireType:function(g,k){return k?d:e},argPackAdvance:8,\nreadValueFromPointer:function(g){if(1===c)var k=ja;else if(2===c)k=C;else if(4===c)k=D;else throw new TypeError(\"Unknown boolean type size: \"+b);return this.fromWireType(k[g>>f])},V:null})},f:function(a,b,c,d,e,f,g,k,m,l,n,p,r){n=N(n);f=Z(e,f);k&&(k=Z(g,k));l&&(l=Z(m,l));r=Z(p,r);var u=Aa(n);bb(u,function(){nb(\"Cannot construct \"+n+\" due to unbound types\",[d])});V([a,b,c],d?[d]:[],function(t){t=t[0];if(d){var y=t.N;var B=y.X}else B=X.prototype;t=Ba(u,function(){if(Object.getPrototypeOf(this)!==ba)throw new K(\"Use 'new' to construct \"+\nn);if(void 0===I.Y)throw new K(n+\" has no accessible constructor\");var kb=I.Y[arguments.length];if(void 0===kb)throw new K(\"Tried to invoke ctor of \"+n+\" with invalid number of parameters (\"+arguments.length+\") - expected (\"+Object.keys(I.Y).toString()+\") parameters instead!\");return kb.apply(this,arguments)});var ba=Object.create(B,{constructor:{value:t}});t.prototype=ba;var I=new cb(n,t,ba,r,y,f,k,l);y=new Y(n,I,!0,!1);B=new Y(n+\"*\",I,!1,!1);var lb=new Y(n+\" const*\",I,!1,!0);Qa[a]={pointerType:B,\nla:lb};ib(u,t);return[y,B,lb]})},d:function(a,b,c,d,e,f,g){var k=pb(c,d);b=N(b);f=Z(e,f);V([],[a],function(m){function l(){nb(\"Cannot call \"+n+\" due to unbound types\",k)}m=m[0];var n=m.name+\".\"+b;b.startsWith(\"@@\")&&(b=Symbol[b.substring(2)]);var p=m.N.constructor;void 0===p[b]?(l.Z=c-1,p[b]=l):(ab(p,b,n),p[b].S[c-1]=l);V([],k,function(r){r=ob(n,[r[0],null].concat(r.slice(1)),null,f,g);void 0===p[b].S?(r.Z=c-1,p[b]=r):p[b].S[c-1]=r;return[]});return[]})},p:function(a,b,c,d,e,f){0<b||x();var g=pb(b,\nc);e=Z(d,e);V([],[a],function(k){k=k[0];var m=\"constructor \"+k.name;void 0===k.N.Y&&(k.N.Y=[]);if(void 0!==k.N.Y[b-1])throw new K(\"Cannot register multiple constructors with identical number of parameters (\"+(b-1)+\") for class '\"+k.name+\"'! Overload resolution is currently only performed using the parameter count, not actual type info!\");k.N.Y[b-1]=()=>{nb(\"Cannot construct \"+k.name+\" due to unbound types\",g)};V([],g,function(l){l.splice(1,0,null);k.N.Y[b-1]=ob(m,l,null,e,f);return[]});return[]})},\na:function(a,b,c,d,e,f,g,k){var m=pb(c,d);b=N(b);f=Z(e,f);V([],[a],function(l){function n(){nb(\"Cannot call \"+p+\" due to unbound types\",m)}l=l[0];var p=l.name+\".\"+b;b.startsWith(\"@@\")&&(b=Symbol[b.substring(2)]);k&&l.N.ja.push(b);var r=l.N.X,u=r[b];void 0===u||void 0===u.S&&u.className!==l.name&&u.Z===c-2?(n.Z=c-2,n.className=l.name,r[b]=n):(ab(r,b,p),r[b].S[c-2]=n);V([],m,function(t){t=ob(p,t,l,f,g);void 0===r[b].S?(t.Z=c-2,r[b]=t):r[b].S[c-2]=t;return[]});return[]})},A:function(a,b){b=N(b);W(a,\n{name:b,fromWireType:function(c){var d=M(c);qb(c);return d},toWireType:function(c,d){return Ea(d)},argPackAdvance:8,readValueFromPointer:Xa,V:null})},n:function(a,b,c){c=Za(c);b=N(b);W(a,{name:b,fromWireType:function(d){return d},toWireType:function(d,e){return e},argPackAdvance:8,readValueFromPointer:rb(b,c),V:null})},e:function(a,b,c,d,e){b=N(b);-1===e&&(e=4294967295);e=Za(c);var f=k=>k;if(0===d){var g=32-8*c;f=k=>k<<g>>>g}c=b.includes(\"unsigned\")?function(k,m){return m>>>0}:function(k,m){return m};\nW(a,{name:b,fromWireType:f,toWireType:c,argPackAdvance:8,readValueFromPointer:sb(b,e,0!==d),V:null})},b:function(a,b,c){function d(f){f>>=2;var g=E;return new e(ia,g[f+1],g[f])}var e=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][b];c=N(c);W(a,{name:c,fromWireType:d,argPackAdvance:8,readValueFromPointer:d},{ua:!0})},o:function(a,b){b=N(b);var c=\"std::string\"===b;W(a,{name:b,fromWireType:function(d){var e=E[d>>2],f=d+4;if(c)for(var g=f,k=0;k<=e;++k){var m=\nf+k;if(k==e||0==A[m]){g=g?z(A,g,m-g):\"\";if(void 0===l)var l=g;else l+=String.fromCharCode(0),l+=g;g=m+1}}else{l=Array(e);for(k=0;k<e;++k)l[k]=String.fromCharCode(A[f+k]);l=l.join(\"\")}S(d);return l},toWireType:function(d,e){e instanceof ArrayBuffer&&(e=new Uint8Array(e));var f,g=\"string\"==typeof e;g||e instanceof Uint8Array||e instanceof Uint8ClampedArray||e instanceof Int8Array||L(\"Cannot pass non-string to std::string\");if(c&&g){var k=0;for(f=0;f<e.length;++f){var m=e.charCodeAt(f);127>=m?k++:2047>=\nm?k+=2:55296<=m&&57343>=m?(k+=4,++f):k+=3}f=k}else f=e.length;k=Ib(4+f+1);m=k+4;E[k>>2]=f;if(c&&g){if(g=m,m=f+1,f=A,0<m){m=g+m-1;for(var l=0;l<e.length;++l){var n=e.charCodeAt(l);if(55296<=n&&57343>=n){var p=e.charCodeAt(++l);n=65536+((n&1023)<<10)|p&1023}if(127>=n){if(g>=m)break;f[g++]=n}else{if(2047>=n){if(g+1>=m)break;f[g++]=192|n>>6}else{if(65535>=n){if(g+2>=m)break;f[g++]=224|n>>12}else{if(g+3>=m)break;f[g++]=240|n>>18;f[g++]=128|n>>12&63}f[g++]=128|n>>6&63}f[g++]=128|n&63}}f[g]=0}}else if(g)for(g=\n0;g<f;++g)l=e.charCodeAt(g),255<l&&(S(m),L(\"String has UTF-16 code units that do not fit in 8 bits\")),A[m+g]=l;else for(g=0;g<f;++g)A[m+g]=e[g];null!==d&&d.push(S,k);return k},argPackAdvance:8,readValueFromPointer:Xa,V:function(d){S(d)}})},i:function(a,b,c){c=N(c);if(2===b){var d=tb;var e=ub;var f=vb;var g=()=>ka;var k=1}else 4===b&&(d=wb,e=xb,f=yb,g=()=>E,k=2);W(a,{name:c,fromWireType:function(m){for(var l=E[m>>2],n=g(),p,r=m+4,u=0;u<=l;++u){var t=m+4+u*b;if(u==l||0==n[t>>k])r=d(r,t-r),void 0===\np?p=r:(p+=String.fromCharCode(0),p+=r),r=t+b}S(m);return p},toWireType:function(m,l){\"string\"!=typeof l&&L(\"Cannot pass non-string to C++ string type \"+c);var n=f(l),p=Ib(4+n+b);E[p>>2]=n>>k;e(l,p+4,n+b);null!==m&&m.push(S,p);return p},argPackAdvance:8,readValueFromPointer:Xa,V:function(m){S(m)}})},k:function(a,b,c,d,e,f){Va[a]={name:N(b),fa:Z(c,d),W:Z(e,f),ia:[]}},h:function(a,b,c,d,e,f,g,k,m,l){Va[a].ia.push({oa:N(b),ta:c,ra:Z(d,e),sa:f,za:g,ya:Z(k,m),Aa:l})},C:function(a,b){b=N(b);W(a,{va:!0,name:b,\nargPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},s:function(a,b,c,d,e){a=Bb[a];b=M(b);c=Ab(c);var f=[];E[d>>2]=Ea(f);return a(b,c,f,e)},t:function(a,b,c,d){a=Bb[a];b=M(b);c=Ab(c);a(b,c,null,d)},g:qb,m:function(a,b){var c=Db(a,b),d=c[0];b=d.name+\"_$\"+c.slice(1).map(function(g){return g.name}).join(\"_\")+\"$\";var e=Eb[b];if(void 0!==e)return e;var f=Array(a-1);e=Cb((g,k,m,l)=>{for(var n=0,p=0;p<a-1;++p)f[p]=c[p+1].readValueFromPointer(l+n),n+=c[p+1].argPackAdvance;g=g[k].apply(g,\nf);for(p=0;p<a-1;++p)c[p+1].ma&&c[p+1].ma(f[p]);if(!d.va)return d.toWireType(m,g)});return Eb[b]=e},D:function(a){4<a&&(J[a].ga+=1)},r:function(a){var b=M(a);Wa(b);qb(a)},c:function(){x(\"\")},x:function(a,b,c){A.copyWithin(a,b,b+c)},w:function(a){var b=A.length;a>>>=0;if(2147483648<a)return!1;for(var c=1;4>=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,a+100663296);var e=Math;d=Math.max(a,d);e=e.min.call(e,2147483648,d+(65536-d%65536)%65536);a:{try{fa.grow(e-ia.byteLength+65535>>>16);na();var f=1;break a}catch(g){}f=\nvoid 0}if(f)return!0}return!1},z:function(){return 52},u:function(){return 70},y:function(a,b,c,d){for(var e=0,f=0;f<c;f++){var g=E[b>>2],k=E[b+4>>2];b+=8;for(var m=0;m<k;m++){var l=A[g+m],n=Fb[a];0===l||10===l?((1===a?ea:v)(z(n,0)),n.length=0):n.push(l)}e+=k}E[d>>2]=e;return 0}};\n(function(){function a(e){h.asm=e.exports;fa=h.asm.E;na();oa=h.asm.J;qa.unshift(h.asm.F);F--;h.monitorRunDependencies&&h.monitorRunDependencies(F);0==F&&(null!==ta&&(clearInterval(ta),ta=null),G&&(e=G,G=null,e()))}function b(e){a(e.instance)}function c(e){return ya().then(function(f){return WebAssembly.instantiate(f,d)}).then(function(f){return f}).then(e,function(f){v(\"failed to asynchronously prepare wasm: \"+f);x(f)})}var d={a:Jb};F++;h.monitorRunDependencies&&h.monitorRunDependencies(F);if(h.instantiateWasm)try{return h.instantiateWasm(d,\na)}catch(e){v(\"Module.instantiateWasm callback failed with error: \"+e),ca(e)}(function(){return w||\"function\"!=typeof WebAssembly.instantiateStreaming||ua(H)||\"function\"!=typeof fetch?c(b):fetch(H,{credentials:\"same-origin\"}).then(function(e){return WebAssembly.instantiateStreaming(e,d).then(b,function(f){v(\"wasm streaming compile failed: \"+f);v(\"falling back to ArrayBuffer instantiation\");return c(b)})})})().catch(ca);return{}})();\nh.___wasm_call_ctors=function(){return(h.___wasm_call_ctors=h.asm.F).apply(null,arguments)};var Ka=h.___getTypeName=function(){return(Ka=h.___getTypeName=h.asm.G).apply(null,arguments)};h.__embind_initialize_bindings=function(){return(h.__embind_initialize_bindings=h.asm.H).apply(null,arguments)};var Ib=h._malloc=function(){return(Ib=h._malloc=h.asm.I).apply(null,arguments)},S=h._free=function(){return(S=h._free=h.asm.K).apply(null,arguments)};\nh.dynCall_jiji=function(){return(h.dynCall_jiji=h.asm.L).apply(null,arguments)};var Kb;G=function Lb(){Kb||Mb();Kb||(G=Lb)};\nfunction Mb(){function a(){if(!Kb&&(Kb=!0,h.calledRun=!0,!ha)){za(qa);aa(h);if(h.onRuntimeInitialized)h.onRuntimeInitialized();if(h.postRun)for(\"function\"==typeof h.postRun&&(h.postRun=[h.postRun]);h.postRun.length;){var b=h.postRun.shift();ra.unshift(b)}za(ra)}}if(!(0<F)){if(h.preRun)for(\"function\"==typeof h.preRun&&(h.preRun=[h.preRun]);h.preRun.length;)sa();za(pa);0<F||(h.setStatus?(h.setStatus(\"Running...\"),setTimeout(function(){setTimeout(function(){h.setStatus(\"\")},1);a()},1)):a())}}\nif(h.preInit)for(\"function\"==typeof h.preInit&&(h.preInit=[h.preInit]);0<h.preInit.length;)h.preInit.pop()();Mb();\n\n\n return loadYoga.ready\n}\n);\n})();\nexport default loadYoga;",
6
6
  "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// @generated by enums.py\n\nexport let Align = /*#__PURE__*/function (Align) {\n Align[Align[\"Auto\"] = 0] = \"Auto\";\n Align[Align[\"FlexStart\"] = 1] = \"FlexStart\";\n Align[Align[\"Center\"] = 2] = \"Center\";\n Align[Align[\"FlexEnd\"] = 3] = \"FlexEnd\";\n Align[Align[\"Stretch\"] = 4] = \"Stretch\";\n Align[Align[\"Baseline\"] = 5] = \"Baseline\";\n Align[Align[\"SpaceBetween\"] = 6] = \"SpaceBetween\";\n Align[Align[\"SpaceAround\"] = 7] = \"SpaceAround\";\n Align[Align[\"SpaceEvenly\"] = 8] = \"SpaceEvenly\";\n return Align;\n}({});\nexport let BoxSizing = /*#__PURE__*/function (BoxSizing) {\n BoxSizing[BoxSizing[\"BorderBox\"] = 0] = \"BorderBox\";\n BoxSizing[BoxSizing[\"ContentBox\"] = 1] = \"ContentBox\";\n return BoxSizing;\n}({});\nexport let Dimension = /*#__PURE__*/function (Dimension) {\n Dimension[Dimension[\"Width\"] = 0] = \"Width\";\n Dimension[Dimension[\"Height\"] = 1] = \"Height\";\n return Dimension;\n}({});\nexport let Direction = /*#__PURE__*/function (Direction) {\n Direction[Direction[\"Inherit\"] = 0] = \"Inherit\";\n Direction[Direction[\"LTR\"] = 1] = \"LTR\";\n Direction[Direction[\"RTL\"] = 2] = \"RTL\";\n return Direction;\n}({});\nexport let Display = /*#__PURE__*/function (Display) {\n Display[Display[\"Flex\"] = 0] = \"Flex\";\n Display[Display[\"None\"] = 1] = \"None\";\n Display[Display[\"Contents\"] = 2] = \"Contents\";\n return Display;\n}({});\nexport let Edge = /*#__PURE__*/function (Edge) {\n Edge[Edge[\"Left\"] = 0] = \"Left\";\n Edge[Edge[\"Top\"] = 1] = \"Top\";\n Edge[Edge[\"Right\"] = 2] = \"Right\";\n Edge[Edge[\"Bottom\"] = 3] = \"Bottom\";\n Edge[Edge[\"Start\"] = 4] = \"Start\";\n Edge[Edge[\"End\"] = 5] = \"End\";\n Edge[Edge[\"Horizontal\"] = 6] = \"Horizontal\";\n Edge[Edge[\"Vertical\"] = 7] = \"Vertical\";\n Edge[Edge[\"All\"] = 8] = \"All\";\n return Edge;\n}({});\nexport let Errata = /*#__PURE__*/function (Errata) {\n Errata[Errata[\"None\"] = 0] = \"None\";\n Errata[Errata[\"StretchFlexBasis\"] = 1] = \"StretchFlexBasis\";\n Errata[Errata[\"AbsolutePositionWithoutInsetsExcludesPadding\"] = 2] = \"AbsolutePositionWithoutInsetsExcludesPadding\";\n Errata[Errata[\"AbsolutePercentAgainstInnerSize\"] = 4] = \"AbsolutePercentAgainstInnerSize\";\n Errata[Errata[\"All\"] = 2147483647] = \"All\";\n Errata[Errata[\"Classic\"] = 2147483646] = \"Classic\";\n return Errata;\n}({});\nexport let ExperimentalFeature = /*#__PURE__*/function (ExperimentalFeature) {\n ExperimentalFeature[ExperimentalFeature[\"WebFlexBasis\"] = 0] = \"WebFlexBasis\";\n return ExperimentalFeature;\n}({});\nexport let FlexDirection = /*#__PURE__*/function (FlexDirection) {\n FlexDirection[FlexDirection[\"Column\"] = 0] = \"Column\";\n FlexDirection[FlexDirection[\"ColumnReverse\"] = 1] = \"ColumnReverse\";\n FlexDirection[FlexDirection[\"Row\"] = 2] = \"Row\";\n FlexDirection[FlexDirection[\"RowReverse\"] = 3] = \"RowReverse\";\n return FlexDirection;\n}({});\nexport let Gutter = /*#__PURE__*/function (Gutter) {\n Gutter[Gutter[\"Column\"] = 0] = \"Column\";\n Gutter[Gutter[\"Row\"] = 1] = \"Row\";\n Gutter[Gutter[\"All\"] = 2] = \"All\";\n return Gutter;\n}({});\nexport let Justify = /*#__PURE__*/function (Justify) {\n Justify[Justify[\"FlexStart\"] = 0] = \"FlexStart\";\n Justify[Justify[\"Center\"] = 1] = \"Center\";\n Justify[Justify[\"FlexEnd\"] = 2] = \"FlexEnd\";\n Justify[Justify[\"SpaceBetween\"] = 3] = \"SpaceBetween\";\n Justify[Justify[\"SpaceAround\"] = 4] = \"SpaceAround\";\n Justify[Justify[\"SpaceEvenly\"] = 5] = \"SpaceEvenly\";\n return Justify;\n}({});\nexport let LogLevel = /*#__PURE__*/function (LogLevel) {\n LogLevel[LogLevel[\"Error\"] = 0] = \"Error\";\n LogLevel[LogLevel[\"Warn\"] = 1] = \"Warn\";\n LogLevel[LogLevel[\"Info\"] = 2] = \"Info\";\n LogLevel[LogLevel[\"Debug\"] = 3] = \"Debug\";\n LogLevel[LogLevel[\"Verbose\"] = 4] = \"Verbose\";\n LogLevel[LogLevel[\"Fatal\"] = 5] = \"Fatal\";\n return LogLevel;\n}({});\nexport let MeasureMode = /*#__PURE__*/function (MeasureMode) {\n MeasureMode[MeasureMode[\"Undefined\"] = 0] = \"Undefined\";\n MeasureMode[MeasureMode[\"Exactly\"] = 1] = \"Exactly\";\n MeasureMode[MeasureMode[\"AtMost\"] = 2] = \"AtMost\";\n return MeasureMode;\n}({});\nexport let NodeType = /*#__PURE__*/function (NodeType) {\n NodeType[NodeType[\"Default\"] = 0] = \"Default\";\n NodeType[NodeType[\"Text\"] = 1] = \"Text\";\n return NodeType;\n}({});\nexport let Overflow = /*#__PURE__*/function (Overflow) {\n Overflow[Overflow[\"Visible\"] = 0] = \"Visible\";\n Overflow[Overflow[\"Hidden\"] = 1] = \"Hidden\";\n Overflow[Overflow[\"Scroll\"] = 2] = \"Scroll\";\n return Overflow;\n}({});\nexport let PositionType = /*#__PURE__*/function (PositionType) {\n PositionType[PositionType[\"Static\"] = 0] = \"Static\";\n PositionType[PositionType[\"Relative\"] = 1] = \"Relative\";\n PositionType[PositionType[\"Absolute\"] = 2] = \"Absolute\";\n return PositionType;\n}({});\nexport let Unit = /*#__PURE__*/function (Unit) {\n Unit[Unit[\"Undefined\"] = 0] = \"Undefined\";\n Unit[Unit[\"Point\"] = 1] = \"Point\";\n Unit[Unit[\"Percent\"] = 2] = \"Percent\";\n Unit[Unit[\"Auto\"] = 3] = \"Auto\";\n return Unit;\n}({});\nexport let Wrap = /*#__PURE__*/function (Wrap) {\n Wrap[Wrap[\"NoWrap\"] = 0] = \"NoWrap\";\n Wrap[Wrap[\"Wrap\"] = 1] = \"Wrap\";\n Wrap[Wrap[\"WrapReverse\"] = 2] = \"WrapReverse\";\n return Wrap;\n}({});\nconst constants = {\n ALIGN_AUTO: Align.Auto,\n ALIGN_FLEX_START: Align.FlexStart,\n ALIGN_CENTER: Align.Center,\n ALIGN_FLEX_END: Align.FlexEnd,\n ALIGN_STRETCH: Align.Stretch,\n ALIGN_BASELINE: Align.Baseline,\n ALIGN_SPACE_BETWEEN: Align.SpaceBetween,\n ALIGN_SPACE_AROUND: Align.SpaceAround,\n ALIGN_SPACE_EVENLY: Align.SpaceEvenly,\n BOX_SIZING_BORDER_BOX: BoxSizing.BorderBox,\n BOX_SIZING_CONTENT_BOX: BoxSizing.ContentBox,\n DIMENSION_WIDTH: Dimension.Width,\n DIMENSION_HEIGHT: Dimension.Height,\n DIRECTION_INHERIT: Direction.Inherit,\n DIRECTION_LTR: Direction.LTR,\n DIRECTION_RTL: Direction.RTL,\n DISPLAY_FLEX: Display.Flex,\n DISPLAY_NONE: Display.None,\n DISPLAY_CONTENTS: Display.Contents,\n EDGE_LEFT: Edge.Left,\n EDGE_TOP: Edge.Top,\n EDGE_RIGHT: Edge.Right,\n EDGE_BOTTOM: Edge.Bottom,\n EDGE_START: Edge.Start,\n EDGE_END: Edge.End,\n EDGE_HORIZONTAL: Edge.Horizontal,\n EDGE_VERTICAL: Edge.Vertical,\n EDGE_ALL: Edge.All,\n ERRATA_NONE: Errata.None,\n ERRATA_STRETCH_FLEX_BASIS: Errata.StretchFlexBasis,\n ERRATA_ABSOLUTE_POSITION_WITHOUT_INSETS_EXCLUDES_PADDING: Errata.AbsolutePositionWithoutInsetsExcludesPadding,\n ERRATA_ABSOLUTE_PERCENT_AGAINST_INNER_SIZE: Errata.AbsolutePercentAgainstInnerSize,\n ERRATA_ALL: Errata.All,\n ERRATA_CLASSIC: Errata.Classic,\n EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS: ExperimentalFeature.WebFlexBasis,\n FLEX_DIRECTION_COLUMN: FlexDirection.Column,\n FLEX_DIRECTION_COLUMN_REVERSE: FlexDirection.ColumnReverse,\n FLEX_DIRECTION_ROW: FlexDirection.Row,\n FLEX_DIRECTION_ROW_REVERSE: FlexDirection.RowReverse,\n GUTTER_COLUMN: Gutter.Column,\n GUTTER_ROW: Gutter.Row,\n GUTTER_ALL: Gutter.All,\n JUSTIFY_FLEX_START: Justify.FlexStart,\n JUSTIFY_CENTER: Justify.Center,\n JUSTIFY_FLEX_END: Justify.FlexEnd,\n JUSTIFY_SPACE_BETWEEN: Justify.SpaceBetween,\n JUSTIFY_SPACE_AROUND: Justify.SpaceAround,\n JUSTIFY_SPACE_EVENLY: Justify.SpaceEvenly,\n LOG_LEVEL_ERROR: LogLevel.Error,\n LOG_LEVEL_WARN: LogLevel.Warn,\n LOG_LEVEL_INFO: LogLevel.Info,\n LOG_LEVEL_DEBUG: LogLevel.Debug,\n LOG_LEVEL_VERBOSE: LogLevel.Verbose,\n LOG_LEVEL_FATAL: LogLevel.Fatal,\n MEASURE_MODE_UNDEFINED: MeasureMode.Undefined,\n MEASURE_MODE_EXACTLY: MeasureMode.Exactly,\n MEASURE_MODE_AT_MOST: MeasureMode.AtMost,\n NODE_TYPE_DEFAULT: NodeType.Default,\n NODE_TYPE_TEXT: NodeType.Text,\n OVERFLOW_VISIBLE: Overflow.Visible,\n OVERFLOW_HIDDEN: Overflow.Hidden,\n OVERFLOW_SCROLL: Overflow.Scroll,\n POSITION_TYPE_STATIC: PositionType.Static,\n POSITION_TYPE_RELATIVE: PositionType.Relative,\n POSITION_TYPE_ABSOLUTE: PositionType.Absolute,\n UNIT_UNDEFINED: Unit.Undefined,\n UNIT_POINT: Unit.Point,\n UNIT_PERCENT: Unit.Percent,\n UNIT_AUTO: Unit.Auto,\n WRAP_NO_WRAP: Wrap.NoWrap,\n WRAP_WRAP: Wrap.Wrap,\n WRAP_WRAP_REVERSE: Wrap.WrapReverse\n};\nexport default constants;\n//# sourceMappingURL=YGEnums.js.map",
@@ -24,10 +24,11 @@
24
24
  "const singletonCacheSymbol = Symbol.for(\"@opentui/core/singleton\")\n\n/**\n * Ensures a value is initialized once per process,\n * persists across Bun hot reloads, and is type-safe.\n */\nexport function singleton<T>(key: string, factory: () => T): T {\n // @ts-expect-error this symbol is only used in this file and is not part of the public API\n const bag = (globalThis[singletonCacheSymbol] ??= {})\n if (!(key in bag)) {\n bag[key] = factory()\n }\n return bag[key] as T\n}\n\nexport function destroySingleton(key: string): void {\n // @ts-expect-error this symbol is only used in this file and is not part of the public API\n const bag = globalThis[singletonCacheSymbol]\n if (bag && key in bag) {\n delete bag[key]\n }\n}\n\nexport function hasSingleton(key: string): boolean {\n // @ts-expect-error this symbol is only used in this file and is not part of the public API\n const bag = globalThis[singletonCacheSymbol]\n return bag && key in bag\n}\n",
25
25
  "import { singleton } from \"./singleton.ts\"\n\n/**\n * Environment variable registry\n *\n * Usage:\n * ```ts\n * import { registerEnvVar, env } from \"./lib/env.ts\";\n *\n * // Register environment variables\n * registerEnvVar({\n * name: \"DEBUG\",\n * description: \"Enable debug logging\",\n * type: \"boolean\",\n * default: false\n * });\n *\n * registerEnvVar({\n * name: \"PORT\",\n * description: \"Server port number\",\n * type: \"number\",\n * default: 3000\n * });\n *\n * // Access environment variables\n * if (env.DEBUG) {\n * console.log(\"Debug mode enabled\");\n * }\n *\n * const port = env.PORT; // number\n * ```\n */\n\nexport interface EnvVarConfig {\n name: string\n description: string\n default?: string | boolean | number\n type?: \"string\" | \"boolean\" | \"number\"\n}\n\nexport const envRegistry: Record<string, EnvVarConfig> = singleton(\"env-registry\", () => ({}))\n\nexport function registerEnvVar(config: EnvVarConfig): void {\n const existing = envRegistry[config.name]\n if (existing) {\n if (\n existing.description !== config.description ||\n existing.type !== config.type ||\n existing.default !== config.default\n ) {\n throw new Error(\n `Environment variable \"${config.name}\" is already registered with different configuration. ` +\n `Existing: ${JSON.stringify(existing)}, New: ${JSON.stringify(config)}`,\n )\n }\n return\n }\n envRegistry[config.name] = config\n}\n\nfunction normalizeBoolean(value: string): boolean {\n const lowerValue = value.toLowerCase()\n return [\"true\", \"1\", \"on\", \"yes\"].includes(lowerValue)\n}\n\nfunction parseEnvValue(config: EnvVarConfig): string | boolean | number {\n const envValue = process.env[config.name]\n\n if (envValue === undefined && config.default !== undefined) {\n return config.default\n }\n\n if (envValue === undefined) {\n throw new Error(`Required environment variable ${config.name} is not set. ${config.description}`)\n }\n\n switch (config.type) {\n case \"boolean\":\n return typeof envValue === \"boolean\" ? envValue : normalizeBoolean(envValue)\n case \"number\":\n const numValue = Number(envValue)\n if (isNaN(numValue)) {\n throw new Error(`Environment variable ${config.name} must be a valid number, got: ${envValue}`)\n }\n return numValue\n case \"string\":\n default:\n return envValue\n }\n}\n\nclass EnvStore {\n private parsedValues: Map<string, string | boolean | number> = new Map()\n\n get(key: string): any {\n if (this.parsedValues.has(key)) {\n return this.parsedValues.get(key)!\n }\n\n if (!(key in envRegistry)) {\n throw new Error(`Environment variable ${key} is not registered.`)\n }\n\n try {\n const value = parseEnvValue(envRegistry[key])\n this.parsedValues.set(key, value)\n return value\n } catch (error) {\n throw new Error(`Failed to parse env var ${key}: ${error instanceof Error ? error.message : String(error)}`)\n }\n }\n\n has(key: string): boolean {\n return key in envRegistry\n }\n\n clearCache(): void {\n this.parsedValues.clear()\n }\n}\n\nconst envStore = singleton(\"env-store\", () => new EnvStore())\n\nexport function clearEnvCache(): void {\n envStore.clearCache()\n}\n\nexport function generateEnvMarkdown(): string {\n const configs = Object.values(envRegistry)\n\n if (configs.length === 0) {\n return \"# Environment Variables\\n\\nNo environment variables registered.\\n\"\n }\n\n let markdown = \"# Environment Variables\\n\\n\"\n\n for (const config of configs) {\n markdown += `## ${config.name}\\n\\n`\n markdown += `${config.description}\\n\\n`\n\n markdown += `**Type:** \\`${config.type || \"string\"}\\` \\n`\n\n if (config.default !== undefined) {\n const defaultValue = typeof config.default === \"string\" ? `\"${config.default}\"` : String(config.default)\n markdown += `**Default:** \\`${defaultValue}\\`\\n`\n } else {\n markdown += \"**Default:** *Required*\\n\"\n }\n\n markdown += \"\\n\"\n }\n\n return markdown\n}\n\nexport function generateEnvColored(): string {\n const configs = Object.values(envRegistry)\n\n if (configs.length === 0) {\n return \"\\x1b[1;36mEnvironment Variables\\x1b[0m\\n\\nNo environment variables registered.\\n\"\n }\n\n let output = \"\\x1b[1;36mEnvironment Variables\\x1b[0m\\n\\n\"\n\n for (const config of configs) {\n output += `\\x1b[1;33m${config.name}\\x1b[0m\\n`\n output += `${config.description}\\n`\n output += `\\x1b[32mType:\\x1b[0m \\x1b[36m${config.type || \"string\"}\\x1b[0m\\n`\n\n if (config.default !== undefined) {\n const defaultValue = typeof config.default === \"string\" ? `\"${config.default}\"` : String(config.default)\n output += `\\x1b[32mDefault:\\x1b[0m \\x1b[35m${defaultValue}\\x1b[0m\\n`\n } else {\n output += `\\x1b[32mDefault:\\x1b[0m \\x1b[31mRequired\\x1b[0m\\n`\n }\n\n output += \"\\n\"\n }\n\n return output\n}\n\nexport const env = new Proxy({} as Record<string, any>, {\n get(target, prop: string) {\n if (typeof prop !== \"string\") {\n return undefined\n }\n return envStore.get(prop)\n },\n\n has(target, prop: string) {\n return envStore.has(prop)\n },\n\n ownKeys() {\n return Object.keys(envRegistry)\n },\n\n getOwnPropertyDescriptor(target, prop: string) {\n if (envStore.has(prop)) {\n return {\n enumerable: true,\n configurable: true,\n get: () => envStore.get(prop),\n }\n }\n return undefined\n },\n})\n",
26
26
  "import type { TextChunk } from \"../text-buffer\"\nimport { StyledText } from \"./styled-text\"\nimport { SyntaxStyle, type StyleDefinition } from \"../syntax-style\"\nimport { TreeSitterClient } from \"./tree-sitter/client\"\nimport type { SimpleHighlight } from \"./tree-sitter/types\"\nimport { createTextAttributes } from \"../utils\"\nimport { registerEnvVar, env } from \"./env\"\n\nregisterEnvVar({ name: \"OTUI_TS_STYLE_WARN\", default: false, description: \"Enable warnings for missing syntax styles\" })\n\ninterface ConcealOptions {\n enabled: boolean\n}\n\ninterface Boundary {\n offset: number\n type: \"start\" | \"end\"\n highlightIndex: number\n}\n\nfunction getSpecificity(group: string): number {\n return group.split(\".\").length\n}\n\nfunction shouldSuppressInInjection(group: string, meta: any): boolean {\n if (meta?.isInjection) {\n return false\n }\n\n // Check if this is a parent block that should be suppressed\n // TODO: This is language/highlight specific,\n // not generic enough. Needs a more generic solution.\n // The styles need to be more like a stack that gets merged\n // and for a container with injections we just don't push that container style\n return group === \"markup.raw.block\"\n}\n\nexport function treeSitterToTextChunks(\n content: string,\n highlights: SimpleHighlight[],\n syntaxStyle: SyntaxStyle,\n options?: ConcealOptions,\n): TextChunk[] {\n const chunks: TextChunk[] = []\n const defaultStyle = syntaxStyle.getStyle(\"default\")\n const concealEnabled = options?.enabled ?? true\n\n const injectionContainerRanges: Array<{ start: number; end: number }> = []\n const boundaries: Boundary[] = []\n\n for (let i = 0; i < highlights.length; i++) {\n const [start, end, , meta] = highlights[i]\n if (start === end) continue // Skip zero-length ranges\n if (meta?.containsInjection) {\n injectionContainerRanges.push({ start, end })\n }\n boundaries.push({ offset: start, type: \"start\", highlightIndex: i })\n boundaries.push({ offset: end, type: \"end\", highlightIndex: i })\n }\n\n // Sort boundaries by offset, with ends before starts at same offset\n // This ensures we close old ranges before opening new ones at the same position\n boundaries.sort((a, b) => {\n if (a.offset !== b.offset) return a.offset - b.offset\n if (a.type === \"end\" && b.type === \"start\") return -1\n if (a.type === \"start\" && b.type === \"end\") return 1\n return 0\n })\n\n const activeHighlights = new Set<number>()\n let currentOffset = 0\n\n for (let i = 0; i < boundaries.length; i++) {\n const boundary = boundaries[i]\n\n if (currentOffset < boundary.offset && activeHighlights.size > 0) {\n const segmentText = content.slice(currentOffset, boundary.offset)\n\n const activeGroups: Array<{ group: string; meta: any; index: number }> = []\n for (const idx of activeHighlights) {\n const [, , group, meta] = highlights[idx]\n activeGroups.push({ group, meta, index: idx })\n }\n\n // Check if any active highlight has a conceal property\n // Priority: 1. Check meta.conceal first 2. Check group === \"conceal\" or starts with \"conceal.\"\n const concealHighlight = concealEnabled\n ? activeGroups.find(\n (h) => h.meta?.conceal !== undefined || h.group === \"conceal\" || h.group.startsWith(\"conceal.\"),\n )\n : undefined\n\n if (concealHighlight) {\n let replacementText = \"\"\n\n if (concealHighlight.meta?.conceal !== undefined) {\n // If meta.conceal is set, use it (this would come from (#set! conceal \"...\") if supported)\n replacementText = concealHighlight.meta.conceal\n } else if (concealHighlight.group === \"conceal.with.space\") {\n // Special group name means replace with space\n replacementText = \" \"\n }\n\n if (replacementText) {\n chunks.push({\n __isChunk: true,\n text: replacementText,\n fg: defaultStyle?.fg,\n bg: defaultStyle?.bg,\n attributes: defaultStyle\n ? createTextAttributes({\n bold: defaultStyle.bold,\n italic: defaultStyle.italic,\n underline: defaultStyle.underline,\n dim: defaultStyle.dim,\n })\n : 0,\n })\n }\n } else {\n const insideInjectionContainer = injectionContainerRanges.some(\n (range) => currentOffset >= range.start && currentOffset < range.end,\n )\n\n // Filter out highlights that should be suppressed\n // Suppress highlights when we're inside an injection container\n const validGroups = activeGroups.filter((h) => {\n // If we're inside an injection container, suppress all markup.raw.block highlights\n // This includes both the container itself and any nested markup.raw.block\n if (insideInjectionContainer && shouldSuppressInInjection(h.group, h.meta)) {\n return false\n }\n return true\n })\n\n // Sort groups by specificity (least to most), then by index (earlier to later)\n // This ensures we merge styles in the correct order: parent styles first, then child overrides\n const sortedGroups = validGroups.sort((a, b) => {\n const aSpec = getSpecificity(a.group)\n const bSpec = getSpecificity(b.group)\n if (aSpec !== bSpec) return aSpec - bSpec // Lower specificity first\n return a.index - b.index // Earlier index first\n })\n\n // Merge all active styles in order (like CSS cascade)\n // Later/more specific styles override earlier/less specific ones\n const mergedStyle: StyleDefinition = {}\n\n for (const { group } of sortedGroups) {\n let styleForGroup = syntaxStyle.getStyle(group)\n\n if (!styleForGroup && group.includes(\".\")) {\n // Fallback to base scope\n const baseName = group.split(\".\")[0]\n styleForGroup = syntaxStyle.getStyle(baseName)\n }\n\n if (styleForGroup) {\n // Merge properties - later styles override earlier ones\n if (styleForGroup.fg !== undefined) mergedStyle.fg = styleForGroup.fg\n if (styleForGroup.bg !== undefined) mergedStyle.bg = styleForGroup.bg\n if (styleForGroup.bold !== undefined) mergedStyle.bold = styleForGroup.bold\n if (styleForGroup.italic !== undefined) mergedStyle.italic = styleForGroup.italic\n if (styleForGroup.underline !== undefined) mergedStyle.underline = styleForGroup.underline\n if (styleForGroup.dim !== undefined) mergedStyle.dim = styleForGroup.dim\n } else {\n if (group.includes(\".\")) {\n const baseName = group.split(\".\")[0]\n if (env.OTUI_TS_STYLE_WARN) {\n console.warn(\n `Syntax style not found for group \"${group}\" or base scope \"${baseName}\", using default style`,\n )\n }\n } else {\n if (env.OTUI_TS_STYLE_WARN) {\n console.warn(`Syntax style not found for group \"${group}\", using default style`)\n }\n }\n }\n }\n\n // Use merged style, falling back to default if nothing was merged\n const finalStyle = Object.keys(mergedStyle).length > 0 ? mergedStyle : defaultStyle\n\n chunks.push({\n __isChunk: true,\n text: segmentText,\n fg: finalStyle?.fg,\n bg: finalStyle?.bg,\n attributes: finalStyle\n ? createTextAttributes({\n bold: finalStyle.bold,\n italic: finalStyle.italic,\n underline: finalStyle.underline,\n dim: finalStyle.dim,\n })\n : 0,\n })\n }\n } else if (currentOffset < boundary.offset) {\n const text = content.slice(currentOffset, boundary.offset)\n chunks.push({\n __isChunk: true,\n text,\n fg: defaultStyle?.fg,\n bg: defaultStyle?.bg,\n attributes: defaultStyle\n ? createTextAttributes({\n bold: defaultStyle.bold,\n italic: defaultStyle.italic,\n underline: defaultStyle.underline,\n dim: defaultStyle.dim,\n })\n : 0,\n })\n }\n\n if (boundary.type === \"start\") {\n activeHighlights.add(boundary.highlightIndex)\n } else {\n activeHighlights.delete(boundary.highlightIndex)\n\n if (concealEnabled) {\n const [, , group, meta] = highlights[boundary.highlightIndex]\n if (meta?.concealLines !== undefined) {\n if (boundary.offset < content.length && content[boundary.offset] === \"\\n\") {\n currentOffset = boundary.offset + 1\n continue\n }\n }\n\n // TODO: This is also a query specific workaround, needs improvement\n if (meta?.conceal !== undefined) {\n // Skip the next space if we replaced with a space (prevents double spaces like \"text] (url)\")\n if (meta.conceal === \" \") {\n if (boundary.offset < content.length && content[boundary.offset] === \" \") {\n currentOffset = boundary.offset + 1\n continue\n }\n }\n // For heading markers specifically, also skip the trailing space\n // The group is just \"conceal\" for heading markers from the markdown query\n // We need to check if this conceal is NOT from an injection (markdown_inline)\n else if (meta.conceal === \"\" && group === \"conceal\" && !meta.isInjection) {\n if (boundary.offset < content.length && content[boundary.offset] === \" \") {\n currentOffset = boundary.offset + 1\n continue\n }\n }\n }\n }\n }\n\n currentOffset = boundary.offset\n }\n\n if (currentOffset < content.length) {\n const text = content.slice(currentOffset)\n chunks.push({\n __isChunk: true,\n text,\n fg: defaultStyle?.fg,\n bg: defaultStyle?.bg,\n attributes: defaultStyle\n ? createTextAttributes({\n bold: defaultStyle.bold,\n italic: defaultStyle.italic,\n underline: defaultStyle.underline,\n dim: defaultStyle.dim,\n })\n : 0,\n })\n }\n\n return chunks\n}\n\nexport interface TreeSitterToStyledTextOptions {\n conceal?: ConcealOptions\n}\n\nexport async function treeSitterToStyledText(\n content: string,\n filetype: string,\n syntaxStyle: SyntaxStyle,\n client: TreeSitterClient,\n options?: TreeSitterToStyledTextOptions,\n): Promise<StyledText> {\n const result = await client.highlightOnce(content, filetype)\n if (result.highlights && result.highlights.length > 0) {\n const chunks = treeSitterToTextChunks(content, result.highlights, syntaxStyle, options?.conceal)\n return new StyledText(chunks)\n } else {\n const defaultStyle = syntaxStyle.mergeStyles(\"default\")\n const chunks: TextChunk[] = [\n {\n __isChunk: true,\n text: content,\n fg: defaultStyle.fg,\n bg: defaultStyle.bg,\n attributes: defaultStyle.attributes,\n },\n ]\n return new StyledText(chunks)\n }\n}\n",
27
- "import { EventEmitter } from \"events\"\nimport { createDebounce, clearDebounceScope, DebounceController } from \"../debounce\"\nimport { ProcessQueue } from \"../queue\"\nimport type {\n TreeSitterClientOptions,\n TreeSitterClientEvents,\n BufferState,\n ParsedBuffer,\n FiletypeParserOptions,\n Edit,\n PerformanceStats,\n SimpleHighlight,\n} from \"./types\"\nimport { getParsers } from \"./default-parsers\"\nimport { resolve, isAbsolute } from \"path\"\nimport { existsSync } from \"fs\"\nimport { registerEnvVar, env } from \"../env\"\nimport { parse } from \"path\"\n\nregisterEnvVar({\n name: \"OTUI_TREE_SITTER_WORKER_PATH\",\n description: \"Path to the TreeSitter worker\",\n type: \"string\",\n default: \"\",\n})\n\ndeclare global {\n const OTUI_TREE_SITTER_WORKER_PATH: string\n}\n\ninterface EditQueueItem {\n edits: Edit[]\n newContent: string\n version: number\n isReset?: boolean\n}\n\nlet DEFAULT_PARSERS: FiletypeParserOptions[] = getParsers()\n\nexport function addDefaultParsers(parsers: FiletypeParserOptions[]): void {\n for (const parser of parsers) {\n const existingIndex = DEFAULT_PARSERS.findIndex((p) => p.filetype === parser.filetype)\n\n if (existingIndex >= 0) {\n DEFAULT_PARSERS[existingIndex] = parser\n } else {\n DEFAULT_PARSERS.push(parser)\n }\n }\n}\n\nconst isUrl = (path: string) => path.startsWith(\"http://\") || path.startsWith(\"https://\")\n\n// Parser options now support both URLs and local file paths\n// TODO: TreeSitterClient should have a setOptions method, passing it on to the worker etc.\nexport class TreeSitterClient extends EventEmitter<TreeSitterClientEvents> {\n private initialized = false\n private worker: Worker | undefined\n private buffers: Map<number, BufferState> = new Map()\n private initializePromise: Promise<void> | undefined\n private initializeResolvers:\n | { resolve: () => void; reject: (error: Error) => void; timeoutId: ReturnType<typeof setTimeout> }\n | undefined\n private messageCallbacks: Map<string, (response: any) => void> = new Map()\n private messageIdCounter: number = 0\n private editQueues: Map<number, ProcessQueue<EditQueueItem>> = new Map()\n private debouncer: DebounceController\n private options: TreeSitterClientOptions\n\n constructor(options: TreeSitterClientOptions) {\n super()\n this.options = options\n this.debouncer = createDebounce(\"tree-sitter-client\")\n this.startWorker()\n }\n\n private emitError(error: string, bufferId?: number): void {\n if (this.listenerCount(\"error\") > 0) {\n this.emit(\"error\", error, bufferId)\n }\n }\n\n private emitWarning(warning: string, bufferId?: number): void {\n if (this.listenerCount(\"warning\") > 0) {\n this.emit(\"warning\", warning, bufferId)\n }\n }\n\n private startWorker() {\n if (this.worker) {\n return\n }\n\n let worker_path: string | URL\n\n if (env.OTUI_TREE_SITTER_WORKER_PATH) {\n worker_path = env.OTUI_TREE_SITTER_WORKER_PATH\n } else if (typeof OTUI_TREE_SITTER_WORKER_PATH !== \"undefined\") {\n worker_path = OTUI_TREE_SITTER_WORKER_PATH\n } else if (this.options.workerPath) {\n worker_path = this.options.workerPath\n } else {\n worker_path = new URL(\"./parser.worker.js\", import.meta.url).href\n if (!existsSync(resolve(import.meta.dirname, \"parser.worker.js\"))) {\n worker_path = new URL(\"./parser.worker.ts\", import.meta.url).href\n }\n }\n\n this.worker = new Worker(worker_path)\n\n // @ts-ignore - onmessage exists\n this.worker.onmessage = this.handleWorkerMessage.bind(this)\n\n // @ts-ignore - onerror exists\n this.worker.onerror = (error: ErrorEvent) => {\n console.error(\"TreeSitter worker error:\", error.message)\n\n // If we're still initializing, reject the init promise\n if (this.initializeResolvers) {\n clearTimeout(this.initializeResolvers.timeoutId)\n this.initializeResolvers.reject(new Error(`Worker error: ${error.message}`))\n this.initializeResolvers = undefined\n }\n\n this.emitError(`Worker error: ${error.message}`)\n }\n }\n\n private stopWorker() {\n if (!this.worker) {\n return\n }\n\n this.worker.terminate()\n this.worker = undefined\n }\n\n // NOTE: Unused, but useful for debugging and testing\n private handleReset() {\n this.buffers.clear()\n this.stopWorker()\n this.startWorker()\n this.initializePromise = undefined\n this.initializeResolvers = undefined\n return this.initialize()\n }\n\n async initialize(): Promise<void> {\n if (this.initializePromise) {\n return this.initializePromise\n }\n\n this.initializePromise = new Promise((resolve, reject) => {\n const timeoutMs = this.options.initTimeout ?? 10000 // Default to 10 seconds\n const timeoutId = setTimeout(() => {\n const error = new Error(\"Worker initialization timed out\")\n console.error(\"TreeSitter client:\", error.message)\n this.initializeResolvers = undefined\n reject(error)\n }, timeoutMs)\n\n this.initializeResolvers = { resolve, reject, timeoutId }\n this.worker?.postMessage({\n type: \"INIT\",\n dataPath: this.options.dataPath,\n })\n })\n\n await this.initializePromise\n await this.registerDefaultParsers()\n\n return this.initializePromise\n }\n\n private async registerDefaultParsers(): Promise<void> {\n for (const parser of DEFAULT_PARSERS) {\n this.addFiletypeParser(parser)\n }\n }\n\n private resolvePath(path: string): string {\n if (isUrl(path)) {\n return path\n }\n if (/\\$bunfs/.test(path)) {\n return \"/$bunfs/root/\" + parse(path).base\n }\n if (!isAbsolute(path)) {\n return resolve(path)\n }\n return path\n }\n\n public addFiletypeParser(filetypeParser: FiletypeParserOptions): void {\n const resolvedParser: FiletypeParserOptions = {\n ...filetypeParser,\n wasm: this.resolvePath(filetypeParser.wasm),\n queries: {\n highlights: filetypeParser.queries.highlights.map((path) => this.resolvePath(path)),\n injections: filetypeParser.queries.injections?.map((path) => this.resolvePath(path)),\n },\n }\n this.worker?.postMessage({ type: \"ADD_FILETYPE_PARSER\", filetypeParser: resolvedParser })\n }\n\n public async getPerformance(): Promise<PerformanceStats> {\n const messageId = `performance_${this.messageIdCounter++}`\n return new Promise<PerformanceStats>((resolve) => {\n this.messageCallbacks.set(messageId, resolve)\n this.worker?.postMessage({ type: \"GET_PERFORMANCE\", messageId })\n })\n }\n\n public async highlightOnce(\n content: string,\n filetype: string,\n ): Promise<{ highlights?: SimpleHighlight[]; warning?: string; error?: string }> {\n if (!this.initialized) {\n try {\n await this.initialize()\n } catch (error) {\n return { error: \"Could not highlight because of initialization error\" }\n }\n }\n\n const messageId = `oneshot_${this.messageIdCounter++}`\n return new Promise((resolve) => {\n this.messageCallbacks.set(messageId, resolve)\n this.worker?.postMessage({\n type: \"ONESHOT_HIGHLIGHT\",\n content,\n filetype,\n messageId,\n })\n })\n }\n\n private handleWorkerMessage(event: MessageEvent) {\n const { type, bufferId, error, highlights, warning, messageId, hasParser, performance, version } = event.data\n\n if (type === \"HIGHLIGHT_RESPONSE\") {\n const buffer = this.buffers.get(bufferId)\n if (!buffer || !buffer.hasParser) return\n if (buffer.version !== version) {\n this.resetBuffer(bufferId, buffer.version, buffer.content)\n return\n }\n this.emit(\"highlights:response\", bufferId, version, highlights)\n }\n\n if (type === \"INIT_RESPONSE\") {\n if (this.initializeResolvers) {\n clearTimeout(this.initializeResolvers.timeoutId)\n if (error) {\n console.error(\"TreeSitter client initialization failed:\", error)\n this.initializeResolvers.reject(new Error(error))\n } else {\n this.initialized = true\n this.initializeResolvers.resolve()\n }\n this.initializeResolvers = undefined\n return\n }\n }\n\n if (type === \"PARSER_INIT_RESPONSE\") {\n const callback = this.messageCallbacks.get(messageId)\n if (callback) {\n this.messageCallbacks.delete(messageId)\n callback({ hasParser, warning, error })\n }\n return\n }\n\n if (type === \"PRELOAD_PARSER_RESPONSE\") {\n const callback = this.messageCallbacks.get(messageId)\n if (callback) {\n this.messageCallbacks.delete(messageId)\n callback({ hasParser })\n }\n return\n }\n\n if (type === \"BUFFER_DISPOSED\") {\n const callback = this.messageCallbacks.get(`dispose_${bufferId}`)\n if (callback) {\n this.messageCallbacks.delete(`dispose_${bufferId}`)\n callback(true)\n }\n this.emit(\"buffer:disposed\", bufferId)\n return\n }\n\n if (type === \"PERFORMANCE_RESPONSE\") {\n const callback = this.messageCallbacks.get(messageId)\n if (callback) {\n this.messageCallbacks.delete(messageId)\n callback(performance)\n }\n return\n }\n\n if (type === \"ONESHOT_HIGHLIGHT_RESPONSE\") {\n const callback = this.messageCallbacks.get(messageId)\n if (callback) {\n this.messageCallbacks.delete(messageId)\n callback({ highlights, warning, error })\n }\n return\n }\n\n if (type === \"UPDATE_DATA_PATH_RESPONSE\") {\n const callback = this.messageCallbacks.get(messageId)\n if (callback) {\n this.messageCallbacks.delete(messageId)\n callback({ error })\n }\n return\n }\n\n if (type === \"CLEAR_CACHE_RESPONSE\") {\n const callback = this.messageCallbacks.get(messageId)\n if (callback) {\n this.messageCallbacks.delete(messageId)\n callback({ error })\n }\n return\n }\n\n if (warning) {\n this.emitWarning(warning, bufferId)\n return\n }\n\n if (error) {\n this.emitError(error, bufferId)\n return\n }\n\n if (type === \"WORKER_LOG\") {\n const { logType, data } = event.data\n const message = data.join(\" \")\n\n this.emit(\"worker:log\", logType, message)\n\n if (logType === \"log\") {\n console.log(\"TSWorker:\", ...data)\n } else if (logType === \"error\") {\n console.error(\"TSWorker:\", ...data)\n } else if (logType === \"warn\") {\n console.warn(\"TSWorker:\", ...data)\n }\n return\n }\n }\n\n public async preloadParser(filetype: string): Promise<boolean> {\n const messageId = `has_parser_${this.messageIdCounter++}`\n const response = await new Promise<{ hasParser: boolean; warning?: string; error?: string }>((resolve) => {\n this.messageCallbacks.set(messageId, resolve)\n this.worker?.postMessage({\n type: \"PRELOAD_PARSER\",\n filetype,\n messageId,\n })\n })\n return response.hasParser\n }\n\n public async createBuffer(\n id: number,\n content: string,\n filetype: string,\n version: number = 1,\n autoInitialize: boolean = true,\n ): Promise<boolean> {\n if (!this.initialized) {\n if (!autoInitialize) {\n this.emitError(\"Could not create buffer because client is not initialized\")\n return false\n }\n try {\n await this.initialize()\n } catch (error) {\n this.emitError(\"Could not create buffer because of initialization error\")\n return false\n }\n }\n\n if (this.buffers.has(id)) {\n throw new Error(`Buffer with id ${id} already exists`)\n }\n\n // Set buffer state immediately to avoid race conditions\n this.buffers.set(id, { id, content, filetype, version, hasParser: false })\n\n const messageId = `init_${this.messageIdCounter++}`\n const response = await new Promise<{ hasParser: boolean; warning?: string; error?: string }>((resolve) => {\n this.messageCallbacks.set(messageId, resolve)\n this.worker?.postMessage({\n type: \"INITIALIZE_PARSER\",\n bufferId: id,\n version,\n content,\n filetype,\n messageId,\n })\n })\n\n if (!response.hasParser) {\n this.emit(\"buffer:initialized\", id, false)\n if (filetype !== \"plaintext\") {\n this.emitWarning(response.warning || response.error || \"Buffer has no parser\", id)\n }\n return false\n }\n\n // Update buffer state to indicate it has a parser\n const bufferState: ParsedBuffer = { id, content, filetype, version, hasParser: true }\n this.buffers.set(id, bufferState)\n\n this.emit(\"buffer:initialized\", id, true)\n return true\n }\n\n public async updateBuffer(id: number, edits: Edit[], newContent: string, version: number): Promise<void> {\n if (!this.initialized) {\n return\n }\n\n const buffer = this.buffers.get(id)\n if (!buffer || !buffer.hasParser) {\n return\n }\n\n // Update buffer state\n this.buffers.set(id, { ...buffer, content: newContent, version })\n\n if (!this.editQueues.has(id)) {\n this.editQueues.set(\n id,\n new ProcessQueue<EditQueueItem>((item) =>\n this.processEdit(id, item.edits, item.newContent, item.version, item.isReset),\n ),\n )\n }\n\n const bufferQueue = this.editQueues.get(id)!\n bufferQueue.enqueue({ edits, newContent, version })\n }\n\n private async processEdit(\n bufferId: number,\n edits: Edit[],\n newContent: string,\n version: number,\n isReset = false,\n ): Promise<void> {\n this.worker?.postMessage({\n type: isReset ? \"RESET_BUFFER\" : \"HANDLE_EDITS\",\n bufferId,\n version,\n content: newContent,\n edits,\n })\n }\n\n public async removeBuffer(bufferId: number): Promise<void> {\n if (!this.initialized) {\n return\n }\n\n this.buffers.delete(bufferId)\n\n if (this.editQueues.has(bufferId)) {\n this.editQueues.get(bufferId)?.clear()\n this.editQueues.delete(bufferId)\n }\n\n if (this.worker) {\n await new Promise<boolean>((resolve) => {\n const messageId = `dispose_${bufferId}`\n this.messageCallbacks.set(messageId, resolve)\n try {\n this.worker!.postMessage({\n type: \"DISPOSE_BUFFER\",\n bufferId,\n })\n } catch (error) {\n console.error(\"Error disposing buffer\", error)\n resolve(false)\n }\n\n // Add a timeout in case the worker doesn't respond\n setTimeout(() => {\n if (this.messageCallbacks.has(messageId)) {\n this.messageCallbacks.delete(messageId)\n console.warn({ bufferId }, \"Timed out waiting for buffer to be disposed\")\n resolve(false)\n }\n }, 3000)\n })\n }\n\n this.debouncer.clearDebounce(`reset-${bufferId}`)\n }\n\n public async destroy(): Promise<void> {\n if (this.initializeResolvers) {\n clearTimeout(this.initializeResolvers.timeoutId)\n this.initializeResolvers = undefined\n }\n\n for (const [messageId, callback] of this.messageCallbacks.entries()) {\n if (typeof callback === \"function\") {\n try {\n callback({ error: \"Client destroyed\" })\n } catch (e) {\n // Ignore errors during cleanup\n }\n }\n }\n this.messageCallbacks.clear()\n\n clearDebounceScope(\"tree-sitter-client\")\n this.debouncer.clear()\n\n this.editQueues.clear()\n this.buffers.clear()\n\n this.stopWorker()\n\n this.initialized = false\n this.initializePromise = undefined\n }\n\n public async resetBuffer(bufferId: number, version: number, content: string): Promise<void> {\n if (!this.initialized) {\n return\n }\n\n const buffer = this.buffers.get(bufferId)\n if (!buffer || !buffer.hasParser) {\n this.emitError(\"Cannot reset buffer with no parser\", bufferId)\n return\n }\n\n // Update buffer state\n this.buffers.set(bufferId, { ...buffer, content, version })\n\n // Use debouncer to avoid excessive resets\n this.debouncer.debounce(`reset-${bufferId}`, 10, () => this.processEdit(bufferId, [], content, version, true))\n }\n\n public getBuffer(bufferId: number): BufferState | undefined {\n return this.buffers.get(bufferId)\n }\n\n public getAllBuffers(): BufferState[] {\n return Array.from(this.buffers.values())\n }\n\n public isInitialized(): boolean {\n return this.initialized\n }\n\n public async setDataPath(dataPath: string): Promise<void> {\n if (this.options.dataPath === dataPath) {\n return\n }\n\n this.options.dataPath = dataPath\n\n if (this.initialized && this.worker) {\n const messageId = `update_datapath_${this.messageIdCounter++}`\n return new Promise<void>((resolve, reject) => {\n this.messageCallbacks.set(messageId, (response: any) => {\n if (response.error) {\n reject(new Error(response.error))\n } else {\n resolve()\n }\n })\n this.worker!.postMessage({\n type: \"UPDATE_DATA_PATH\",\n dataPath,\n messageId,\n })\n })\n }\n }\n\n public async clearCache(): Promise<void> {\n if (!this.initialized || !this.worker) {\n throw new Error(\"Cannot clear cache: client is not initialized\")\n }\n\n const messageId = `clear_cache_${this.messageIdCounter++}`\n return new Promise<void>((resolve, reject) => {\n this.messageCallbacks.set(messageId, (response: any) => {\n if (response.error) {\n reject(new Error(response.error))\n } else {\n resolve()\n }\n })\n this.worker!.postMessage({\n type: \"CLEAR_CACHE\",\n messageId,\n })\n })\n }\n}\n",
27
+ "import { EventEmitter } from \"events\"\nimport { createDebounce, clearDebounceScope, DebounceController } from \"../debounce\"\nimport { ProcessQueue } from \"../queue\"\nimport type {\n TreeSitterClientOptions,\n TreeSitterClientEvents,\n BufferState,\n ParsedBuffer,\n FiletypeParserOptions,\n Edit,\n PerformanceStats,\n SimpleHighlight,\n} from \"./types\"\nimport { getParsers } from \"./default-parsers\"\nimport { resolve, isAbsolute, parse } from \"path\"\nimport { existsSync } from \"fs\"\nimport { registerEnvVar, env } from \"../env\"\nimport { isBunfsPath, normalizeBunfsPath } from \"../bunfs\"\n\nregisterEnvVar({\n name: \"OTUI_TREE_SITTER_WORKER_PATH\",\n description: \"Path to the TreeSitter worker\",\n type: \"string\",\n default: \"\",\n})\n\ndeclare global {\n const OTUI_TREE_SITTER_WORKER_PATH: string\n}\n\ninterface EditQueueItem {\n edits: Edit[]\n newContent: string\n version: number\n isReset?: boolean\n}\n\nlet DEFAULT_PARSERS: FiletypeParserOptions[] = getParsers()\n\nexport function addDefaultParsers(parsers: FiletypeParserOptions[]): void {\n for (const parser of parsers) {\n const existingIndex = DEFAULT_PARSERS.findIndex((p) => p.filetype === parser.filetype)\n\n if (existingIndex >= 0) {\n DEFAULT_PARSERS[existingIndex] = parser\n } else {\n DEFAULT_PARSERS.push(parser)\n }\n }\n}\n\nconst isUrl = (path: string) => path.startsWith(\"http://\") || path.startsWith(\"https://\")\n\n// Parser options now support both URLs and local file paths\n// TODO: TreeSitterClient should have a setOptions method, passing it on to the worker etc.\nexport class TreeSitterClient extends EventEmitter<TreeSitterClientEvents> {\n private initialized = false\n private worker: Worker | undefined\n private buffers: Map<number, BufferState> = new Map()\n private initializePromise: Promise<void> | undefined\n private initializeResolvers:\n | { resolve: () => void; reject: (error: Error) => void; timeoutId: ReturnType<typeof setTimeout> }\n | undefined\n private messageCallbacks: Map<string, (response: any) => void> = new Map()\n private messageIdCounter: number = 0\n private editQueues: Map<number, ProcessQueue<EditQueueItem>> = new Map()\n private debouncer: DebounceController\n private options: TreeSitterClientOptions\n\n constructor(options: TreeSitterClientOptions) {\n super()\n this.options = options\n this.debouncer = createDebounce(\"tree-sitter-client\")\n this.startWorker()\n }\n\n private emitError(error: string, bufferId?: number): void {\n if (this.listenerCount(\"error\") > 0) {\n this.emit(\"error\", error, bufferId)\n }\n }\n\n private emitWarning(warning: string, bufferId?: number): void {\n if (this.listenerCount(\"warning\") > 0) {\n this.emit(\"warning\", warning, bufferId)\n }\n }\n\n private startWorker() {\n if (this.worker) {\n return\n }\n\n let worker_path: string | URL\n\n if (env.OTUI_TREE_SITTER_WORKER_PATH) {\n worker_path = env.OTUI_TREE_SITTER_WORKER_PATH\n } else if (typeof OTUI_TREE_SITTER_WORKER_PATH !== \"undefined\") {\n worker_path = OTUI_TREE_SITTER_WORKER_PATH\n } else if (this.options.workerPath) {\n worker_path = this.options.workerPath\n } else {\n worker_path = new URL(\"./parser.worker.js\", import.meta.url).href\n if (!existsSync(resolve(import.meta.dirname, \"parser.worker.js\"))) {\n worker_path = new URL(\"./parser.worker.ts\", import.meta.url).href\n }\n }\n\n this.worker = new Worker(worker_path)\n\n // @ts-ignore - onmessage exists\n this.worker.onmessage = this.handleWorkerMessage.bind(this)\n\n // @ts-ignore - onerror exists\n this.worker.onerror = (error: ErrorEvent) => {\n console.error(\"TreeSitter worker error:\", error.message)\n\n // If we're still initializing, reject the init promise\n if (this.initializeResolvers) {\n clearTimeout(this.initializeResolvers.timeoutId)\n this.initializeResolvers.reject(new Error(`Worker error: ${error.message}`))\n this.initializeResolvers = undefined\n }\n\n this.emitError(`Worker error: ${error.message}`)\n }\n }\n\n private stopWorker() {\n if (!this.worker) {\n return\n }\n\n this.worker.terminate()\n this.worker = undefined\n }\n\n // NOTE: Unused, but useful for debugging and testing\n private handleReset() {\n this.buffers.clear()\n this.stopWorker()\n this.startWorker()\n this.initializePromise = undefined\n this.initializeResolvers = undefined\n return this.initialize()\n }\n\n async initialize(): Promise<void> {\n if (this.initializePromise) {\n return this.initializePromise\n }\n\n this.initializePromise = new Promise((resolve, reject) => {\n const timeoutMs = this.options.initTimeout ?? 10000 // Default to 10 seconds\n const timeoutId = setTimeout(() => {\n const error = new Error(\"Worker initialization timed out\")\n console.error(\"TreeSitter client:\", error.message)\n this.initializeResolvers = undefined\n reject(error)\n }, timeoutMs)\n\n this.initializeResolvers = { resolve, reject, timeoutId }\n this.worker?.postMessage({\n type: \"INIT\",\n dataPath: this.options.dataPath,\n })\n })\n\n await this.initializePromise\n await this.registerDefaultParsers()\n\n return this.initializePromise\n }\n\n private async registerDefaultParsers(): Promise<void> {\n for (const parser of DEFAULT_PARSERS) {\n this.addFiletypeParser(parser)\n }\n }\n\n private resolvePath(path: string): string {\n if (isUrl(path)) {\n return path\n }\n if (isBunfsPath(path)) {\n return normalizeBunfsPath(parse(path).base)\n }\n if (!isAbsolute(path)) {\n return resolve(path)\n }\n return path\n }\n\n public addFiletypeParser(filetypeParser: FiletypeParserOptions): void {\n const resolvedParser: FiletypeParserOptions = {\n ...filetypeParser,\n wasm: this.resolvePath(filetypeParser.wasm),\n queries: {\n highlights: filetypeParser.queries.highlights.map((path) => this.resolvePath(path)),\n injections: filetypeParser.queries.injections?.map((path) => this.resolvePath(path)),\n },\n }\n this.worker?.postMessage({ type: \"ADD_FILETYPE_PARSER\", filetypeParser: resolvedParser })\n }\n\n public async getPerformance(): Promise<PerformanceStats> {\n const messageId = `performance_${this.messageIdCounter++}`\n return new Promise<PerformanceStats>((resolve) => {\n this.messageCallbacks.set(messageId, resolve)\n this.worker?.postMessage({ type: \"GET_PERFORMANCE\", messageId })\n })\n }\n\n public async highlightOnce(\n content: string,\n filetype: string,\n ): Promise<{ highlights?: SimpleHighlight[]; warning?: string; error?: string }> {\n if (!this.initialized) {\n try {\n await this.initialize()\n } catch (error) {\n return { error: \"Could not highlight because of initialization error\" }\n }\n }\n\n const messageId = `oneshot_${this.messageIdCounter++}`\n return new Promise((resolve) => {\n this.messageCallbacks.set(messageId, resolve)\n this.worker?.postMessage({\n type: \"ONESHOT_HIGHLIGHT\",\n content,\n filetype,\n messageId,\n })\n })\n }\n\n private handleWorkerMessage(event: MessageEvent) {\n const { type, bufferId, error, highlights, warning, messageId, hasParser, performance, version } = event.data\n\n if (type === \"HIGHLIGHT_RESPONSE\") {\n const buffer = this.buffers.get(bufferId)\n if (!buffer || !buffer.hasParser) return\n if (buffer.version !== version) {\n this.resetBuffer(bufferId, buffer.version, buffer.content)\n return\n }\n this.emit(\"highlights:response\", bufferId, version, highlights)\n }\n\n if (type === \"INIT_RESPONSE\") {\n if (this.initializeResolvers) {\n clearTimeout(this.initializeResolvers.timeoutId)\n if (error) {\n console.error(\"TreeSitter client initialization failed:\", error)\n this.initializeResolvers.reject(new Error(error))\n } else {\n this.initialized = true\n this.initializeResolvers.resolve()\n }\n this.initializeResolvers = undefined\n return\n }\n }\n\n if (type === \"PARSER_INIT_RESPONSE\") {\n const callback = this.messageCallbacks.get(messageId)\n if (callback) {\n this.messageCallbacks.delete(messageId)\n callback({ hasParser, warning, error })\n }\n return\n }\n\n if (type === \"PRELOAD_PARSER_RESPONSE\") {\n const callback = this.messageCallbacks.get(messageId)\n if (callback) {\n this.messageCallbacks.delete(messageId)\n callback({ hasParser })\n }\n return\n }\n\n if (type === \"BUFFER_DISPOSED\") {\n const callback = this.messageCallbacks.get(`dispose_${bufferId}`)\n if (callback) {\n this.messageCallbacks.delete(`dispose_${bufferId}`)\n callback(true)\n }\n this.emit(\"buffer:disposed\", bufferId)\n return\n }\n\n if (type === \"PERFORMANCE_RESPONSE\") {\n const callback = this.messageCallbacks.get(messageId)\n if (callback) {\n this.messageCallbacks.delete(messageId)\n callback(performance)\n }\n return\n }\n\n if (type === \"ONESHOT_HIGHLIGHT_RESPONSE\") {\n const callback = this.messageCallbacks.get(messageId)\n if (callback) {\n this.messageCallbacks.delete(messageId)\n callback({ highlights, warning, error })\n }\n return\n }\n\n if (type === \"UPDATE_DATA_PATH_RESPONSE\") {\n const callback = this.messageCallbacks.get(messageId)\n if (callback) {\n this.messageCallbacks.delete(messageId)\n callback({ error })\n }\n return\n }\n\n if (type === \"CLEAR_CACHE_RESPONSE\") {\n const callback = this.messageCallbacks.get(messageId)\n if (callback) {\n this.messageCallbacks.delete(messageId)\n callback({ error })\n }\n return\n }\n\n if (warning) {\n this.emitWarning(warning, bufferId)\n return\n }\n\n if (error) {\n this.emitError(error, bufferId)\n return\n }\n\n if (type === \"WORKER_LOG\") {\n const { logType, data } = event.data\n const message = data.join(\" \")\n\n this.emit(\"worker:log\", logType, message)\n\n if (logType === \"log\") {\n console.log(\"TSWorker:\", ...data)\n } else if (logType === \"error\") {\n console.error(\"TSWorker:\", ...data)\n } else if (logType === \"warn\") {\n console.warn(\"TSWorker:\", ...data)\n }\n return\n }\n }\n\n public async preloadParser(filetype: string): Promise<boolean> {\n const messageId = `has_parser_${this.messageIdCounter++}`\n const response = await new Promise<{ hasParser: boolean; warning?: string; error?: string }>((resolve) => {\n this.messageCallbacks.set(messageId, resolve)\n this.worker?.postMessage({\n type: \"PRELOAD_PARSER\",\n filetype,\n messageId,\n })\n })\n return response.hasParser\n }\n\n public async createBuffer(\n id: number,\n content: string,\n filetype: string,\n version: number = 1,\n autoInitialize: boolean = true,\n ): Promise<boolean> {\n if (!this.initialized) {\n if (!autoInitialize) {\n this.emitError(\"Could not create buffer because client is not initialized\")\n return false\n }\n try {\n await this.initialize()\n } catch (error) {\n this.emitError(\"Could not create buffer because of initialization error\")\n return false\n }\n }\n\n if (this.buffers.has(id)) {\n throw new Error(`Buffer with id ${id} already exists`)\n }\n\n // Set buffer state immediately to avoid race conditions\n this.buffers.set(id, { id, content, filetype, version, hasParser: false })\n\n const messageId = `init_${this.messageIdCounter++}`\n const response = await new Promise<{ hasParser: boolean; warning?: string; error?: string }>((resolve) => {\n this.messageCallbacks.set(messageId, resolve)\n this.worker?.postMessage({\n type: \"INITIALIZE_PARSER\",\n bufferId: id,\n version,\n content,\n filetype,\n messageId,\n })\n })\n\n if (!response.hasParser) {\n this.emit(\"buffer:initialized\", id, false)\n if (filetype !== \"plaintext\") {\n this.emitWarning(response.warning || response.error || \"Buffer has no parser\", id)\n }\n return false\n }\n\n // Update buffer state to indicate it has a parser\n const bufferState: ParsedBuffer = { id, content, filetype, version, hasParser: true }\n this.buffers.set(id, bufferState)\n\n this.emit(\"buffer:initialized\", id, true)\n return true\n }\n\n public async updateBuffer(id: number, edits: Edit[], newContent: string, version: number): Promise<void> {\n if (!this.initialized) {\n return\n }\n\n const buffer = this.buffers.get(id)\n if (!buffer || !buffer.hasParser) {\n return\n }\n\n // Update buffer state\n this.buffers.set(id, { ...buffer, content: newContent, version })\n\n if (!this.editQueues.has(id)) {\n this.editQueues.set(\n id,\n new ProcessQueue<EditQueueItem>((item) =>\n this.processEdit(id, item.edits, item.newContent, item.version, item.isReset),\n ),\n )\n }\n\n const bufferQueue = this.editQueues.get(id)!\n bufferQueue.enqueue({ edits, newContent, version })\n }\n\n private async processEdit(\n bufferId: number,\n edits: Edit[],\n newContent: string,\n version: number,\n isReset = false,\n ): Promise<void> {\n this.worker?.postMessage({\n type: isReset ? \"RESET_BUFFER\" : \"HANDLE_EDITS\",\n bufferId,\n version,\n content: newContent,\n edits,\n })\n }\n\n public async removeBuffer(bufferId: number): Promise<void> {\n if (!this.initialized) {\n return\n }\n\n this.buffers.delete(bufferId)\n\n if (this.editQueues.has(bufferId)) {\n this.editQueues.get(bufferId)?.clear()\n this.editQueues.delete(bufferId)\n }\n\n if (this.worker) {\n await new Promise<boolean>((resolve) => {\n const messageId = `dispose_${bufferId}`\n this.messageCallbacks.set(messageId, resolve)\n try {\n this.worker!.postMessage({\n type: \"DISPOSE_BUFFER\",\n bufferId,\n })\n } catch (error) {\n console.error(\"Error disposing buffer\", error)\n resolve(false)\n }\n\n // Add a timeout in case the worker doesn't respond\n setTimeout(() => {\n if (this.messageCallbacks.has(messageId)) {\n this.messageCallbacks.delete(messageId)\n console.warn({ bufferId }, \"Timed out waiting for buffer to be disposed\")\n resolve(false)\n }\n }, 3000)\n })\n }\n\n this.debouncer.clearDebounce(`reset-${bufferId}`)\n }\n\n public async destroy(): Promise<void> {\n if (this.initializeResolvers) {\n clearTimeout(this.initializeResolvers.timeoutId)\n this.initializeResolvers = undefined\n }\n\n for (const [messageId, callback] of this.messageCallbacks.entries()) {\n if (typeof callback === \"function\") {\n try {\n callback({ error: \"Client destroyed\" })\n } catch (e) {\n // Ignore errors during cleanup\n }\n }\n }\n this.messageCallbacks.clear()\n\n clearDebounceScope(\"tree-sitter-client\")\n this.debouncer.clear()\n\n this.editQueues.clear()\n this.buffers.clear()\n\n this.stopWorker()\n\n this.initialized = false\n this.initializePromise = undefined\n }\n\n public async resetBuffer(bufferId: number, version: number, content: string): Promise<void> {\n if (!this.initialized) {\n return\n }\n\n const buffer = this.buffers.get(bufferId)\n if (!buffer || !buffer.hasParser) {\n this.emitError(\"Cannot reset buffer with no parser\", bufferId)\n return\n }\n\n // Update buffer state\n this.buffers.set(bufferId, { ...buffer, content, version })\n\n // Use debouncer to avoid excessive resets\n this.debouncer.debounce(`reset-${bufferId}`, 10, () => this.processEdit(bufferId, [], content, version, true))\n }\n\n public getBuffer(bufferId: number): BufferState | undefined {\n return this.buffers.get(bufferId)\n }\n\n public getAllBuffers(): BufferState[] {\n return Array.from(this.buffers.values())\n }\n\n public isInitialized(): boolean {\n return this.initialized\n }\n\n public async setDataPath(dataPath: string): Promise<void> {\n if (this.options.dataPath === dataPath) {\n return\n }\n\n this.options.dataPath = dataPath\n\n if (this.initialized && this.worker) {\n const messageId = `update_datapath_${this.messageIdCounter++}`\n return new Promise<void>((resolve, reject) => {\n this.messageCallbacks.set(messageId, (response: any) => {\n if (response.error) {\n reject(new Error(response.error))\n } else {\n resolve()\n }\n })\n this.worker!.postMessage({\n type: \"UPDATE_DATA_PATH\",\n dataPath,\n messageId,\n })\n })\n }\n }\n\n public async clearCache(): Promise<void> {\n if (!this.initialized || !this.worker) {\n throw new Error(\"Cannot clear cache: client is not initialized\")\n }\n\n const messageId = `clear_cache_${this.messageIdCounter++}`\n return new Promise<void>((resolve, reject) => {\n this.messageCallbacks.set(messageId, (response: any) => {\n if (response.error) {\n reject(new Error(response.error))\n } else {\n resolve()\n }\n })\n this.worker!.postMessage({\n type: \"CLEAR_CACHE\",\n messageId,\n })\n })\n }\n}\n",
28
28
  "/**\n * A module-level map to store timeout IDs for all debounced functions\n * Structure: Map<scopeId, Map<debounceId, timerId>>\n */\nconst TIMERS_MAP = new Map<string | number, Map<string | number, ReturnType<typeof setTimeout>>>()\n\n/**\n * Debounce controller that manages debounce instances for a specific scope\n */\nexport class DebounceController {\n constructor(private scopeId: string | number) {\n // Initialize the scope map if it doesn't exist\n if (!TIMERS_MAP.has(this.scopeId)) {\n TIMERS_MAP.set(this.scopeId, new Map())\n }\n }\n\n /**\n * Debounces the provided function with the given ID\n *\n * @param id Unique identifier within this scope\n * @param ms Milliseconds to wait before executing\n * @param fn Function to execute\n */\n debounce<R>(id: string | number, ms: number, fn: () => Promise<R>): Promise<R> {\n const scopeMap = TIMERS_MAP.get(this.scopeId)!\n\n return new Promise((resolve, reject) => {\n // Clear any existing timeout for this ID\n if (scopeMap.has(id)) {\n clearTimeout(scopeMap.get(id))\n }\n\n // Set a new timeout\n const timerId = setTimeout(() => {\n try {\n resolve(fn())\n } catch (error) {\n reject(error)\n }\n scopeMap.delete(id)\n }, ms)\n\n // Store the new timeout ID\n scopeMap.set(id, timerId)\n })\n }\n\n /**\n * Clear a specific debounce timer in this scope\n *\n * @param id The debounce ID to clear\n */\n clearDebounce(id: string | number): void {\n const scopeMap = TIMERS_MAP.get(this.scopeId)\n if (scopeMap && scopeMap.has(id)) {\n clearTimeout(scopeMap.get(id))\n scopeMap.delete(id)\n }\n }\n\n /**\n * Clear all debounce timers in this scope\n */\n clear(): void {\n const scopeMap = TIMERS_MAP.get(this.scopeId)\n if (scopeMap) {\n scopeMap.forEach((timerId) => clearTimeout(timerId))\n scopeMap.clear()\n }\n }\n}\n\n/**\n * Creates a new debounce controller for a specific scope\n *\n * @param scopeId Unique identifier for this debounce scope\n * @returns A DebounceController for the specified scope\n */\nexport function createDebounce(scopeId: string | number): DebounceController {\n return new DebounceController(scopeId)\n}\n\n/**\n * Clears all debounce timers for a specific scope\n *\n * @param scopeId The scope identifier\n */\nexport function clearDebounceScope(scopeId: string | number): void {\n const scopeMap = TIMERS_MAP.get(scopeId)\n if (scopeMap) {\n scopeMap.forEach((timerId) => clearTimeout(timerId))\n scopeMap.clear()\n }\n}\n\n/**\n * Clears all active debounce timers across all scopes\n */\nexport function clearAllDebounces(): void {\n TIMERS_MAP.forEach((scopeMap) => {\n scopeMap.forEach((timerId) => clearTimeout(timerId))\n scopeMap.clear()\n })\n TIMERS_MAP.clear()\n}\n",
29
29
  "/**\n * Generic processing queue that handles asynchronous job processing\n */\nexport class ProcessQueue<T> {\n private queue: T[] = []\n private processing: boolean = false\n private autoProcess: boolean = true\n\n constructor(\n private processor: (item: T) => Promise<void> | void,\n autoProcess: boolean = true,\n ) {\n this.autoProcess = autoProcess\n }\n\n enqueue(item: T): void {\n this.queue.push(item)\n\n if (!this.processing && this.autoProcess) {\n this.processQueue()\n }\n }\n\n private processQueue(): void {\n if (this.queue.length === 0) {\n return\n }\n\n this.processing = true\n\n queueMicrotask(async () => {\n if (this.queue.length === 0) {\n this.processing = false\n return\n }\n\n // Get the next item to process (FIFO)\n const item = this.queue.shift()!\n\n try {\n await this.processor(item)\n } catch (error) {\n console.error(\"Error processing queue item:\", error)\n }\n\n if (this.queue.length > 0) {\n this.processQueue()\n } else {\n this.processing = false\n }\n })\n }\n\n clear(): void {\n this.queue = []\n }\n\n isProcessing(): boolean {\n return this.processing\n }\n\n size(): number {\n return this.queue.length\n }\n}\n",
30
30
  "// This file is generated by assets/update.ts - DO NOT EDIT MANUALLY\n// Run 'bun assets/update.ts' to regenerate this file\n// Last generated: 2025-11-06T15:28:19.836Z\n\nimport type { FiletypeParserOptions } from \"./types\"\nimport { resolve, dirname } from \"path\"\nimport { fileURLToPath } from \"url\"\n\nimport javascript_highlights from \"./assets/javascript/highlights.scm\" with { type: \"file\" }\nimport javascript_language from \"./assets/javascript/tree-sitter-javascript.wasm\" with { type: \"file\" }\nimport typescript_highlights from \"./assets/typescript/highlights.scm\" with { type: \"file\" }\nimport typescript_language from \"./assets/typescript/tree-sitter-typescript.wasm\" with { type: \"file\" }\nimport markdown_highlights from \"./assets/markdown/highlights.scm\" with { type: \"file\" }\nimport markdown_language from \"./assets/markdown/tree-sitter-markdown.wasm\" with { type: \"file\" }\nimport markdown_injections from \"./assets/markdown/injections.scm\" with { type: \"file\" }\nimport markdown_inline_highlights from \"./assets/markdown_inline/highlights.scm\" with { type: \"file\" }\nimport markdown_inline_language from \"./assets/markdown_inline/tree-sitter-markdown_inline.wasm\" with { type: \"file\" }\nimport zig_highlights from \"./assets/zig/highlights.scm\" with { type: \"file\" }\nimport zig_language from \"./assets/zig/tree-sitter-zig.wasm\" with { type: \"file\" }\n\n// Cached parsers to avoid re-resolving paths on every call\nlet _cachedParsers: FiletypeParserOptions[] | undefined\n\nexport function getParsers(): FiletypeParserOptions[] {\n if (!_cachedParsers) {\n _cachedParsers = [\n {\n filetype: \"javascript\",\n queries: {\n highlights: [resolve(dirname(fileURLToPath(import.meta.url)), javascript_highlights)],\n },\n wasm: resolve(dirname(fileURLToPath(import.meta.url)), javascript_language),\n },\n {\n filetype: \"typescript\",\n queries: {\n highlights: [resolve(dirname(fileURLToPath(import.meta.url)), typescript_highlights)],\n },\n wasm: resolve(dirname(fileURLToPath(import.meta.url)), typescript_language),\n },\n {\n filetype: \"markdown\",\n queries: {\n highlights: [resolve(dirname(fileURLToPath(import.meta.url)), markdown_highlights)],\n injections: [resolve(dirname(fileURLToPath(import.meta.url)), markdown_injections)],\n },\n wasm: resolve(dirname(fileURLToPath(import.meta.url)), markdown_language),\n injectionMapping: {\n \"nodeTypes\": {\n \"inline\": \"markdown_inline\",\n \"pipe_table_cell\": \"markdown_inline\"\n },\n \"infoStringMap\": {\n \"javascript\": \"javascript\",\n \"js\": \"javascript\",\n \"typescript\": \"typescript\",\n \"ts\": \"typescript\",\n \"markdown\": \"markdown\",\n \"md\": \"markdown\"\n }\n},\n },\n {\n filetype: \"markdown_inline\",\n queries: {\n highlights: [resolve(dirname(fileURLToPath(import.meta.url)), markdown_inline_highlights)],\n },\n wasm: resolve(dirname(fileURLToPath(import.meta.url)), markdown_inline_language),\n },\n {\n filetype: \"zig\",\n queries: {\n highlights: [resolve(dirname(fileURLToPath(import.meta.url)), zig_highlights)],\n },\n wasm: resolve(dirname(fileURLToPath(import.meta.url)), zig_language),\n },\n ]\n }\n return _cachedParsers\n}\n",
31
+ "import { basename, join } from \"node:path\"\n\nexport function isBunfsPath(path: string): boolean {\n // Removed ambiguous '//' check\n return path.includes(\"$bunfs\") || /^B:[\\\\/]~BUN/i.test(path)\n}\n\nexport function getBunfsRootPath(): string {\n return process.platform === \"win32\" ? \"B:\\\\~BUN\\\\root\" : \"/$bunfs/root\"\n}\n\n/**\n * Normalizes a path to the embedded root.\n * Flattens directory structure to ensure file exists at root.\n */\nexport function normalizeBunfsPath(fileName: string): string {\n return join(getBunfsRootPath(), basename(fileName))\n}\n",
31
32
  "import os from \"os\"\nimport path from \"path\"\nimport { EventEmitter } from \"events\"\nimport { singleton } from \"./singleton\"\nimport { env, registerEnvVar } from \"./env\"\nimport { isValidDirectoryName } from \"./validate-dir-name\"\n\n// Register environment variables for XDG directories\nregisterEnvVar({\n name: \"XDG_CONFIG_HOME\",\n description: \"Base directory for user-specific configuration files\",\n type: \"string\",\n default: \"\",\n})\n\nregisterEnvVar({\n name: \"XDG_DATA_HOME\",\n description: \"Base directory for user-specific data files\",\n type: \"string\",\n default: \"\",\n})\n\nexport interface DataPaths {\n globalConfigPath: string\n globalConfigFile: string\n localConfigFile: string\n globalDataPath: string\n}\n\nexport interface DataPathsEvents {\n \"paths:changed\": [paths: DataPaths]\n}\n\nexport class DataPathsManager extends EventEmitter<DataPathsEvents> {\n private _appName: string\n private _globalConfigPath?: string\n private _globalConfigFile?: string\n private _localConfigFile?: string\n private _globalDataPath?: string\n constructor() {\n super()\n this._appName = \"opentui\"\n }\n\n get appName(): string {\n return this._appName\n }\n\n set appName(value: string) {\n if (!isValidDirectoryName(value)) {\n throw new Error(`Invalid app name \"${value}\": must be a valid directory name`)\n }\n if (this._appName !== value) {\n this._appName = value\n this._globalConfigPath = undefined\n this._globalConfigFile = undefined\n this._localConfigFile = undefined\n this._globalDataPath = undefined\n this.emit(\"paths:changed\", this.toObject())\n }\n }\n\n get globalConfigPath(): string {\n if (this._globalConfigPath === undefined) {\n const homeDir = os.homedir()\n const xdgConfigHome = env.XDG_CONFIG_HOME\n const baseConfigDir = xdgConfigHome || path.join(homeDir, \".config\")\n this._globalConfigPath = path.join(baseConfigDir, this._appName)\n }\n return this._globalConfigPath\n }\n\n get globalConfigFile(): string {\n if (this._globalConfigFile === undefined) {\n this._globalConfigFile = path.join(this.globalConfigPath, \"init.ts\")\n }\n return this._globalConfigFile\n }\n\n get localConfigFile(): string {\n if (this._localConfigFile === undefined) {\n this._localConfigFile = path.join(process.cwd(), `.${this._appName}.ts`)\n }\n return this._localConfigFile\n }\n\n get globalDataPath(): string {\n if (this._globalDataPath === undefined) {\n const homeDir = os.homedir()\n const xdgDataHome = env.XDG_DATA_HOME\n const baseDataDir = xdgDataHome || path.join(homeDir, \".local/share\")\n this._globalDataPath = path.join(baseDataDir, this._appName)\n }\n return this._globalDataPath\n }\n\n toObject(): DataPaths {\n return {\n globalConfigPath: this.globalConfigPath,\n globalConfigFile: this.globalConfigFile,\n localConfigFile: this.localConfigFile,\n globalDataPath: this.globalDataPath,\n }\n }\n}\n\nexport function getDataPaths(): DataPathsManager {\n return singleton(\"data-paths-opentui\", () => new DataPathsManager())\n}\n",
32
33
  "export function isValidDirectoryName(name: string): boolean {\n if (!name || typeof name !== \"string\") {\n return false\n }\n\n if (name.trim().length === 0) {\n return false\n }\n\n const reservedNames = [\n \"CON\",\n \"PRN\",\n \"AUX\",\n \"NUL\",\n \"COM1\",\n \"COM2\",\n \"COM3\",\n \"COM4\",\n \"COM5\",\n \"COM6\",\n \"COM7\",\n \"COM8\",\n \"COM9\",\n \"LPT1\",\n \"LPT2\",\n \"LPT3\",\n \"LPT4\",\n \"LPT5\",\n \"LPT6\",\n \"LPT7\",\n \"LPT8\",\n \"LPT9\",\n ]\n if (reservedNames.includes(name.toUpperCase())) {\n return false\n }\n\n // Check for invalid characters\n // Windows: < > : \" | ? * \\ and control characters (0-31)\n // Unix: null character and forward slash\n const invalidChars = /[<>:\"|?*\\/\\\\\\x00-\\x1f]/\n if (invalidChars.test(name)) {\n return false\n }\n\n if (name.endsWith(\".\") || name.endsWith(\" \")) {\n return false\n }\n\n if (name === \".\" || name === \"..\") {\n return false\n }\n\n return true\n}\n",
33
34
  "export function extToFiletype(extension: string): string | undefined {\n const extensionToFiletype: Map<string, string> = new Map([\n [\"js\", \"javascript\"],\n [\"jsx\", \"javascriptreact\"],\n [\"ts\", \"typescript\"],\n [\"tsx\", \"typescriptreact\"],\n [\"md\", \"markdown\"],\n [\"json\", \"json\"],\n [\"py\", \"python\"],\n [\"rb\", \"ruby\"],\n [\"go\", \"go\"],\n [\"rs\", \"rust\"],\n [\"c\", \"c\"],\n [\"cpp\", \"cpp\"],\n [\"c++\", \"cpp\"],\n [\"cs\", \"csharp\"],\n [\"java\", \"java\"],\n [\"kt\", \"kotlin\"],\n [\"swift\", \"swift\"],\n [\"php\", \"php\"],\n [\"sql\", \"sql\"],\n [\"pl\", \"perl\"],\n [\"lua\", \"lua\"],\n [\"erl\", \"erlang\"],\n [\"exs\", \"elixir\"],\n [\"ex\", \"elixir\"],\n [\"elm\", \"elm\"],\n [\"fsharp\", \"fsharp\"],\n [\"fs\", \"fsharp\"],\n [\"fsx\", \"fsharp\"],\n [\"fsscript\", \"fsharp\"],\n [\"fsi\", \"fsharp\"],\n [\"h\", \"c\"],\n [\"hpp\", \"cpp\"],\n [\"html\", \"html\"],\n [\"css\", \"css\"],\n [\"scss\", \"scss\"],\n [\"less\", \"less\"],\n [\"sh\", \"shell\"],\n [\"bash\", \"shell\"],\n [\"zsh\", \"shell\"],\n [\"vim\", \"vim\"],\n [\"yaml\", \"yaml\"],\n [\"yml\", \"yaml\"],\n [\"toml\", \"toml\"],\n [\"xml\", \"xml\"],\n [\"zig\", \"zig\"],\n ])\n\n return extensionToFiletype.get(extension)\n}\n\nexport function pathToFiletype(path: string): string | undefined {\n if (typeof path !== \"string\") return undefined\n const lastDot = path.lastIndexOf(\".\")\n if (lastDot === -1 || lastDot === path.length - 1) {\n return undefined\n }\n\n const extension = path.substring(lastDot + 1)\n return extToFiletype(extension)\n}\n",
@@ -37,7 +38,7 @@
37
38
  "import type { Extmark } from \"./extmarks\"\n\nexport interface ExtmarksSnapshot {\n extmarks: Map<number, Extmark>\n nextId: number\n}\n\nexport class ExtmarksHistory {\n private undoStack: ExtmarksSnapshot[] = []\n private redoStack: ExtmarksSnapshot[] = []\n\n saveSnapshot(extmarks: Map<number, Extmark>, nextId: number): void {\n const snapshot: ExtmarksSnapshot = {\n extmarks: new Map(Array.from(extmarks.entries()).map(([id, extmark]) => [id, { ...extmark }])),\n nextId,\n }\n this.undoStack.push(snapshot)\n this.redoStack = []\n }\n\n undo(): ExtmarksSnapshot | null {\n if (this.undoStack.length === 0) return null\n return this.undoStack.pop()!\n }\n\n redo(): ExtmarksSnapshot | null {\n if (this.redoStack.length === 0) return null\n return this.redoStack.pop()!\n }\n\n pushRedo(snapshot: ExtmarksSnapshot): void {\n this.redoStack.push(snapshot)\n }\n\n pushUndo(snapshot: ExtmarksSnapshot): void {\n this.undoStack.push(snapshot)\n }\n\n clear(): void {\n this.undoStack = []\n this.redoStack = []\n }\n\n canUndo(): boolean {\n return this.undoStack.length > 0\n }\n\n canRedo(): boolean {\n return this.redoStack.length > 0\n }\n}\n",
38
39
  "import type { EditBuffer } from \"../edit-buffer\"\nimport type { EditorView } from \"../editor-view\"\nimport { ExtmarksHistory, type ExtmarksSnapshot } from \"./extmarks-history\"\n\nexport interface Extmark {\n id: number\n start: number // Display-width offset (including newlines), NOT JS string index\n end: number // Display-width offset (including newlines), NOT JS string index\n virtual: boolean\n styleId?: number\n priority?: number\n data?: any\n typeId: number\n}\n\nexport interface ExtmarkOptions {\n start: number // Display-width offset (including newlines), NOT JS string index\n end: number // Display-width offset (including newlines), NOT JS string index\n virtual?: boolean\n styleId?: number\n priority?: number\n data?: any\n typeId?: number\n metadata?: any\n}\n\n/**\n * WARNING: This is simulating extmarks in the edit buffer\n * and will move to a real native implementation in the future.\n * Use with caution.\n */\nexport class ExtmarksController {\n private editBuffer: EditBuffer\n private editorView: EditorView\n private extmarks = new Map<number, Extmark>()\n private extmarksByTypeId = new Map<number, Set<number>>()\n private metadata = new Map<number, any>()\n private nextId = 1\n private destroyed = false\n private history = new ExtmarksHistory()\n private typeNameToId = new Map<string, number>()\n private typeIdToName = new Map<number, string>()\n private nextTypeId = 1\n\n private originalMoveCursorLeft: typeof EditBuffer.prototype.moveCursorLeft\n private originalMoveCursorRight: typeof EditBuffer.prototype.moveCursorRight\n private originalSetCursorByOffset: typeof EditBuffer.prototype.setCursorByOffset\n private originalMoveUpVisual: typeof EditorView.prototype.moveUpVisual\n private originalMoveDownVisual: typeof EditorView.prototype.moveDownVisual\n private originalDeleteCharBackward: typeof EditBuffer.prototype.deleteCharBackward\n private originalDeleteChar: typeof EditBuffer.prototype.deleteChar\n private originalInsertText: typeof EditBuffer.prototype.insertText\n private originalInsertChar: typeof EditBuffer.prototype.insertChar\n private originalDeleteRange: typeof EditBuffer.prototype.deleteRange\n private originalSetText: typeof EditBuffer.prototype.setText\n private originalClear: typeof EditBuffer.prototype.clear\n private originalNewLine: typeof EditBuffer.prototype.newLine\n private originalDeleteLine: typeof EditBuffer.prototype.deleteLine\n private originalEditorViewDeleteSelectedText: typeof EditorView.prototype.deleteSelectedText\n private originalUndo: typeof EditBuffer.prototype.undo\n private originalRedo: typeof EditBuffer.prototype.redo\n\n constructor(editBuffer: EditBuffer, editorView: EditorView) {\n this.editBuffer = editBuffer\n this.editorView = editorView\n\n this.originalMoveCursorLeft = editBuffer.moveCursorLeft.bind(editBuffer)\n this.originalMoveCursorRight = editBuffer.moveCursorRight.bind(editBuffer)\n this.originalSetCursorByOffset = editBuffer.setCursorByOffset.bind(editBuffer)\n this.originalMoveUpVisual = editorView.moveUpVisual.bind(editorView)\n this.originalMoveDownVisual = editorView.moveDownVisual.bind(editorView)\n this.originalDeleteCharBackward = editBuffer.deleteCharBackward.bind(editBuffer)\n this.originalDeleteChar = editBuffer.deleteChar.bind(editBuffer)\n this.originalInsertText = editBuffer.insertText.bind(editBuffer)\n this.originalInsertChar = editBuffer.insertChar.bind(editBuffer)\n this.originalDeleteRange = editBuffer.deleteRange.bind(editBuffer)\n this.originalSetText = editBuffer.setText.bind(editBuffer)\n this.originalClear = editBuffer.clear.bind(editBuffer)\n this.originalNewLine = editBuffer.newLine.bind(editBuffer)\n this.originalDeleteLine = editBuffer.deleteLine.bind(editBuffer)\n this.originalEditorViewDeleteSelectedText = editorView.deleteSelectedText.bind(editorView)\n this.originalUndo = editBuffer.undo.bind(editBuffer)\n this.originalRedo = editBuffer.redo.bind(editBuffer)\n\n this.wrapCursorMovement()\n this.wrapDeletion()\n this.wrapInsertion()\n this.wrapEditorViewDeleteSelectedText()\n this.wrapUndoRedo()\n this.setupContentChangeListener()\n }\n\n private wrapCursorMovement(): void {\n this.editBuffer.moveCursorLeft = (): void => {\n if (this.destroyed) {\n this.originalMoveCursorLeft()\n return\n }\n\n const currentOffset = this.editorView.getVisualCursor().offset\n const hasSelection = this.editorView.hasSelection()\n\n if (hasSelection) {\n this.originalMoveCursorLeft()\n return\n }\n\n const targetOffset = currentOffset - 1\n if (targetOffset < 0) {\n this.originalMoveCursorLeft()\n return\n }\n\n const virtualExtmark = this.findVirtualExtmarkContaining(targetOffset)\n if (virtualExtmark && currentOffset >= virtualExtmark.end) {\n this.editBuffer.setCursorByOffset(virtualExtmark.start - 1)\n return\n }\n\n this.originalMoveCursorLeft()\n }\n\n this.editBuffer.moveCursorRight = (): void => {\n if (this.destroyed) {\n this.originalMoveCursorRight()\n return\n }\n\n const currentOffset = this.editorView.getVisualCursor().offset\n const hasSelection = this.editorView.hasSelection()\n\n if (hasSelection) {\n this.originalMoveCursorRight()\n return\n }\n\n const targetOffset = currentOffset + 1\n const textLength = this.editBuffer.getText().length\n\n if (targetOffset > textLength) {\n this.originalMoveCursorRight()\n return\n }\n\n const virtualExtmark = this.findVirtualExtmarkContaining(targetOffset)\n if (virtualExtmark && currentOffset <= virtualExtmark.start) {\n this.editBuffer.setCursorByOffset(virtualExtmark.end)\n return\n }\n\n this.originalMoveCursorRight()\n }\n\n this.editorView.moveUpVisual = (): void => {\n if (this.destroyed) {\n this.originalMoveUpVisual()\n return\n }\n\n const hasSelection = this.editorView.hasSelection()\n\n if (hasSelection) {\n this.originalMoveUpVisual()\n return\n }\n\n const currentOffset = this.editorView.getVisualCursor().offset\n this.originalMoveUpVisual()\n const newOffset = this.editorView.getVisualCursor().offset\n\n const virtualExtmark = this.findVirtualExtmarkContaining(newOffset)\n if (virtualExtmark) {\n const distanceToStart = newOffset - virtualExtmark.start\n const distanceToEnd = virtualExtmark.end - newOffset\n\n if (distanceToStart < distanceToEnd) {\n this.editorView.setCursorByOffset(virtualExtmark.start - 1)\n } else {\n this.editorView.setCursorByOffset(virtualExtmark.end)\n }\n }\n }\n\n this.editorView.moveDownVisual = (): void => {\n if (this.destroyed) {\n this.originalMoveDownVisual()\n return\n }\n\n const hasSelection = this.editorView.hasSelection()\n\n if (hasSelection) {\n this.originalMoveDownVisual()\n return\n }\n\n this.originalMoveDownVisual()\n const newOffset = this.editorView.getVisualCursor().offset\n\n const virtualExtmark = this.findVirtualExtmarkContaining(newOffset)\n if (virtualExtmark) {\n const distanceToStart = newOffset - virtualExtmark.start\n const distanceToEnd = virtualExtmark.end - newOffset\n\n if (distanceToStart < distanceToEnd) {\n this.editorView.setCursorByOffset(virtualExtmark.start - 1)\n } else {\n this.editorView.setCursorByOffset(virtualExtmark.end)\n }\n }\n }\n\n this.editBuffer.setCursorByOffset = (offset: number): void => {\n if (this.destroyed) {\n this.originalSetCursorByOffset(offset)\n return\n }\n\n const currentOffset = this.editorView.getVisualCursor().offset\n const hasSelection = this.editorView.hasSelection()\n\n if (hasSelection) {\n this.originalSetCursorByOffset(offset)\n return\n }\n\n const movingForward = offset > currentOffset\n\n if (movingForward) {\n const virtualExtmark = this.findVirtualExtmarkContaining(offset)\n if (virtualExtmark && currentOffset <= virtualExtmark.start) {\n this.originalSetCursorByOffset(virtualExtmark.end)\n return\n }\n } else {\n for (const extmark of this.extmarks.values()) {\n if (extmark.virtual && currentOffset >= extmark.end && offset < extmark.end && offset >= extmark.start) {\n this.originalSetCursorByOffset(extmark.start - 1)\n return\n }\n }\n }\n\n this.originalSetCursorByOffset(offset)\n }\n }\n\n private wrapDeletion(): void {\n this.editBuffer.deleteCharBackward = (): void => {\n if (this.destroyed) {\n this.originalDeleteCharBackward()\n return\n }\n\n this.saveSnapshot()\n\n const currentOffset = this.editorView.getVisualCursor().offset\n const hadSelection = this.editorView.hasSelection()\n\n if (currentOffset === 0) {\n this.originalDeleteCharBackward()\n return\n }\n\n if (hadSelection) {\n this.originalDeleteCharBackward()\n return\n }\n\n const targetOffset = currentOffset - 1\n const virtualExtmark = this.findVirtualExtmarkContaining(targetOffset)\n\n if (virtualExtmark && currentOffset === virtualExtmark.end) {\n const startCursor = this.offsetToPosition(virtualExtmark.start)\n const endCursor = this.offsetToPosition(virtualExtmark.end)\n const deleteOffset = virtualExtmark.start\n const deleteLength = virtualExtmark.end - virtualExtmark.start\n\n this.deleteExtmarkById(virtualExtmark.id)\n\n this.originalDeleteRange(startCursor.row, startCursor.col, endCursor.row, endCursor.col)\n this.adjustExtmarksAfterDeletion(deleteOffset, deleteLength)\n\n this.updateHighlights()\n\n return\n }\n\n this.originalDeleteCharBackward()\n this.adjustExtmarksAfterDeletion(targetOffset, 1)\n }\n\n this.editBuffer.deleteChar = (): void => {\n if (this.destroyed) {\n this.originalDeleteChar()\n return\n }\n\n this.saveSnapshot()\n\n const currentOffset = this.editorView.getVisualCursor().offset\n const textLength = this.editBuffer.getText().length\n const hadSelection = this.editorView.hasSelection()\n\n if (currentOffset >= textLength) {\n this.originalDeleteChar()\n return\n }\n\n if (hadSelection) {\n this.originalDeleteChar()\n return\n }\n\n const targetOffset = currentOffset\n const virtualExtmark = this.findVirtualExtmarkContaining(targetOffset)\n\n if (virtualExtmark && currentOffset === virtualExtmark.start) {\n const startCursor = this.offsetToPosition(virtualExtmark.start)\n const endCursor = this.offsetToPosition(virtualExtmark.end)\n const deleteOffset = virtualExtmark.start\n const deleteLength = virtualExtmark.end - virtualExtmark.start\n\n this.deleteExtmarkById(virtualExtmark.id)\n\n this.originalDeleteRange(startCursor.row, startCursor.col, endCursor.row, endCursor.col)\n this.adjustExtmarksAfterDeletion(deleteOffset, deleteLength)\n\n this.updateHighlights()\n\n return\n }\n\n this.originalDeleteChar()\n this.adjustExtmarksAfterDeletion(targetOffset, 1)\n }\n\n this.editBuffer.deleteRange = (startLine: number, startCol: number, endLine: number, endCol: number): void => {\n if (this.destroyed) {\n this.originalDeleteRange(startLine, startCol, endLine, endCol)\n return\n }\n\n this.saveSnapshot()\n\n const startOffset = this.positionToOffset(startLine, startCol)\n const endOffset = this.positionToOffset(endLine, endCol)\n const length = endOffset - startOffset\n\n this.originalDeleteRange(startLine, startCol, endLine, endCol)\n this.adjustExtmarksAfterDeletion(startOffset, length)\n }\n\n this.editBuffer.deleteLine = (): void => {\n if (this.destroyed) {\n this.originalDeleteLine()\n return\n }\n\n this.saveSnapshot()\n\n const text = this.editBuffer.getText()\n const currentOffset = this.editorView.getVisualCursor().offset\n\n let lineStart = 0\n for (let i = currentOffset - 1; i >= 0; i--) {\n if (text[i] === \"\\n\") {\n lineStart = i + 1\n break\n }\n }\n\n let lineEnd = text.length\n for (let i = currentOffset; i < text.length; i++) {\n if (text[i] === \"\\n\") {\n lineEnd = i + 1\n break\n }\n }\n\n const deleteLength = lineEnd - lineStart\n\n this.originalDeleteLine()\n this.adjustExtmarksAfterDeletion(lineStart, deleteLength)\n }\n }\n\n private wrapInsertion(): void {\n this.editBuffer.insertText = (text: string): void => {\n if (this.destroyed) {\n this.originalInsertText(text)\n return\n }\n\n this.saveSnapshot()\n\n const currentOffset = this.editorView.getVisualCursor().offset\n this.originalInsertText(text)\n this.adjustExtmarksAfterInsertion(currentOffset, text.length)\n }\n\n this.editBuffer.insertChar = (char: string): void => {\n if (this.destroyed) {\n this.originalInsertChar(char)\n return\n }\n\n this.saveSnapshot()\n\n const currentOffset = this.editorView.getVisualCursor().offset\n this.originalInsertChar(char)\n this.adjustExtmarksAfterInsertion(currentOffset, 1)\n }\n\n this.editBuffer.setText = (text: string, opts?: { history?: boolean }): void => {\n if (this.destroyed) {\n this.originalSetText(text, opts)\n return\n }\n\n if (opts?.history !== false) {\n this.saveSnapshot()\n }\n\n this.clear()\n this.originalSetText(text, opts)\n }\n\n this.editBuffer.clear = (): void => {\n if (this.destroyed) {\n this.originalClear()\n return\n }\n\n this.saveSnapshot()\n\n this.clear()\n this.originalClear()\n }\n\n this.editBuffer.newLine = (): void => {\n if (this.destroyed) {\n this.originalNewLine()\n return\n }\n\n this.saveSnapshot()\n\n const currentOffset = this.editorView.getVisualCursor().offset\n this.originalNewLine()\n this.adjustExtmarksAfterInsertion(currentOffset, 1)\n }\n }\n\n private wrapEditorViewDeleteSelectedText(): void {\n this.editorView.deleteSelectedText = (): void => {\n if (this.destroyed) {\n this.originalEditorViewDeleteSelectedText()\n return\n }\n\n this.saveSnapshot()\n\n const selection = this.editorView.getSelection()\n if (!selection) {\n this.originalEditorViewDeleteSelectedText()\n return\n }\n\n const deleteOffset = Math.min(selection.start, selection.end)\n const deleteLength = Math.abs(selection.end - selection.start)\n\n this.originalEditorViewDeleteSelectedText()\n\n if (deleteLength > 0) {\n this.adjustExtmarksAfterDeletion(deleteOffset, deleteLength)\n }\n }\n }\n\n private setupContentChangeListener(): void {\n this.editBuffer.on(\"content-changed\", () => {\n if (this.destroyed) return\n this.updateHighlights()\n })\n }\n\n private deleteExtmarkById(id: number): void {\n const extmark = this.extmarks.get(id)\n if (extmark) {\n this.extmarks.delete(id)\n this.extmarksByTypeId.get(extmark.typeId)?.delete(id)\n this.metadata.delete(id)\n }\n }\n\n private findVirtualExtmarkContaining(offset: number): Extmark | null {\n for (const extmark of this.extmarks.values()) {\n if (extmark.virtual && offset >= extmark.start && offset < extmark.end) {\n return extmark\n }\n }\n return null\n }\n\n private adjustExtmarksAfterInsertion(insertOffset: number, length: number): void {\n for (const extmark of this.extmarks.values()) {\n if (extmark.start >= insertOffset) {\n extmark.start += length\n extmark.end += length\n } else if (extmark.end > insertOffset) {\n extmark.end += length\n }\n }\n this.updateHighlights()\n }\n\n public adjustExtmarksAfterDeletion(deleteOffset: number, length: number): void {\n const toDelete: number[] = []\n\n for (const extmark of this.extmarks.values()) {\n if (extmark.end <= deleteOffset) {\n continue\n }\n\n if (extmark.start >= deleteOffset + length) {\n extmark.start -= length\n extmark.end -= length\n } else if (extmark.start >= deleteOffset && extmark.end <= deleteOffset + length) {\n toDelete.push(extmark.id)\n } else if (extmark.start < deleteOffset && extmark.end > deleteOffset + length) {\n extmark.end -= length\n } else if (extmark.start < deleteOffset && extmark.end > deleteOffset) {\n extmark.end -= Math.min(extmark.end, deleteOffset + length) - deleteOffset\n } else if (extmark.start < deleteOffset + length && extmark.end > deleteOffset + length) {\n const overlap = deleteOffset + length - extmark.start\n extmark.start = deleteOffset\n extmark.end -= length\n }\n }\n\n for (const id of toDelete) {\n this.deleteExtmarkById(id)\n }\n\n this.updateHighlights()\n }\n\n private offsetToPosition(offset: number): { row: number; col: number } {\n const result = this.editBuffer.offsetToPosition(offset)\n if (!result) {\n return { row: 0, col: 0 }\n }\n return result\n }\n\n private positionToOffset(row: number, col: number): number {\n return this.editBuffer.positionToOffset(row, col)\n }\n\n private updateHighlights(): void {\n this.editBuffer.clearAllHighlights()\n\n for (const extmark of this.extmarks.values()) {\n if (extmark.styleId !== undefined) {\n // extmark.start/end are display-width offsets including newlines (from cursor operations)\n // addHighlightByCharRange expects display-width offsets excluding newlines\n // So we need to subtract the number of newlines before each position\n const startWithoutNewlines = this.offsetExcludingNewlines(extmark.start)\n const endWithoutNewlines = this.offsetExcludingNewlines(extmark.end)\n\n this.editBuffer.addHighlightByCharRange({\n start: startWithoutNewlines,\n end: endWithoutNewlines,\n styleId: extmark.styleId,\n priority: extmark.priority ?? 0,\n hlRef: extmark.id,\n })\n }\n }\n }\n\n private offsetExcludingNewlines(offset: number): number {\n // offset is a display-width offset from the start of the buffer (includes newlines)\n // We need to convert to display-width excluding newlines\n // This means: subtract 1 for each newline encountered before this offset\n const text = this.editBuffer.getText()\n let displayWidthSoFar = 0\n let newlineCount = 0\n\n // Walk through the text and calculate display widths\n let i = 0\n while (i < text.length && displayWidthSoFar < offset) {\n if (text[i] === \"\\n\") {\n displayWidthSoFar++ // newline counts as width 1 in cursor offset\n newlineCount++\n i++\n } else {\n // Find the next newline or end of string\n let j = i\n while (j < text.length && text[j] !== \"\\n\") {\n j++\n }\n const chunk = text.substring(i, j)\n const chunkWidth = Bun.stringWidth(chunk)\n\n if (displayWidthSoFar + chunkWidth < offset) {\n // Entire chunk fits before offset\n displayWidthSoFar += chunkWidth\n i = j\n } else {\n // Offset is within this chunk - need to find exact position\n // Walk character by character\n for (let k = i; k < j && displayWidthSoFar < offset; k++) {\n const charWidth = Bun.stringWidth(text[k])\n displayWidthSoFar += charWidth\n }\n break\n }\n }\n }\n\n return offset - newlineCount\n }\n\n public create(options: ExtmarkOptions): number {\n if (this.destroyed) {\n throw new Error(\"ExtmarksController is destroyed\")\n }\n\n const id = this.nextId++\n const typeId = options.typeId ?? 0\n const extmark: Extmark = {\n id,\n start: options.start,\n end: options.end,\n virtual: options.virtual ?? false,\n styleId: options.styleId,\n priority: options.priority,\n data: options.data,\n typeId,\n }\n\n this.extmarks.set(id, extmark)\n\n if (!this.extmarksByTypeId.has(typeId)) {\n this.extmarksByTypeId.set(typeId, new Set())\n }\n this.extmarksByTypeId.get(typeId)!.add(id)\n\n if (options.metadata !== undefined) {\n this.metadata.set(id, options.metadata)\n }\n\n this.updateHighlights()\n\n return id\n }\n\n public delete(id: number): boolean {\n if (this.destroyed) {\n throw new Error(\"ExtmarksController is destroyed\")\n }\n\n const extmark = this.extmarks.get(id)\n if (!extmark) return false\n\n this.deleteExtmarkById(id)\n this.updateHighlights()\n\n return true\n }\n\n public get(id: number): Extmark | null {\n if (this.destroyed) return null\n return this.extmarks.get(id) ?? null\n }\n\n public getAll(): Extmark[] {\n if (this.destroyed) return []\n return Array.from(this.extmarks.values())\n }\n\n public getVirtual(): Extmark[] {\n if (this.destroyed) return []\n return Array.from(this.extmarks.values()).filter((e) => e.virtual)\n }\n\n public getAtOffset(offset: number): Extmark[] {\n if (this.destroyed) return []\n return Array.from(this.extmarks.values()).filter((e) => offset >= e.start && offset < e.end)\n }\n\n public getAllForTypeId(typeId: number): Extmark[] {\n if (this.destroyed) return []\n const ids = this.extmarksByTypeId.get(typeId)\n if (!ids) return []\n return Array.from(ids)\n .map((id) => this.extmarks.get(id))\n .filter((e): e is Extmark => e !== undefined)\n }\n\n public clear(): void {\n if (this.destroyed) return\n\n this.extmarks.clear()\n this.extmarksByTypeId.clear()\n this.metadata.clear()\n this.updateHighlights()\n }\n\n private saveSnapshot(): void {\n this.history.saveSnapshot(this.extmarks, this.nextId)\n }\n\n private restoreSnapshot(snapshot: ExtmarksSnapshot): void {\n this.extmarks = new Map(Array.from(snapshot.extmarks.entries()).map(([id, extmark]) => [id, { ...extmark }]))\n this.nextId = snapshot.nextId\n this.updateHighlights()\n }\n\n private wrapUndoRedo(): void {\n this.editBuffer.undo = (): string | null => {\n if (this.destroyed) {\n return this.originalUndo()\n }\n\n if (!this.history.canUndo()) {\n return this.originalUndo()\n }\n\n const currentSnapshot: ExtmarksSnapshot = {\n extmarks: new Map(Array.from(this.extmarks.entries()).map(([id, extmark]) => [id, { ...extmark }])),\n nextId: this.nextId,\n }\n this.history.pushRedo(currentSnapshot)\n\n const snapshot = this.history.undo()!\n this.restoreSnapshot(snapshot)\n\n return this.originalUndo()\n }\n\n this.editBuffer.redo = (): string | null => {\n if (this.destroyed) {\n return this.originalRedo()\n }\n\n if (!this.history.canRedo()) {\n return this.originalRedo()\n }\n\n const currentSnapshot: ExtmarksSnapshot = {\n extmarks: new Map(Array.from(this.extmarks.entries()).map(([id, extmark]) => [id, { ...extmark }])),\n nextId: this.nextId,\n }\n this.history.pushUndo(currentSnapshot)\n\n const snapshot = this.history.redo()!\n this.restoreSnapshot(snapshot)\n\n return this.originalRedo()\n }\n }\n\n public registerType(typeName: string): number {\n if (this.destroyed) {\n throw new Error(\"ExtmarksController is destroyed\")\n }\n\n const existing = this.typeNameToId.get(typeName)\n if (existing !== undefined) {\n return existing\n }\n\n const typeId = this.nextTypeId++\n this.typeNameToId.set(typeName, typeId)\n this.typeIdToName.set(typeId, typeName)\n return typeId\n }\n\n public getTypeId(typeName: string): number | null {\n if (this.destroyed) return null\n return this.typeNameToId.get(typeName) ?? null\n }\n\n public getTypeName(typeId: number): string | null {\n if (this.destroyed) return null\n return this.typeIdToName.get(typeId) ?? null\n }\n\n public getMetadataFor(extmarkId: number): any {\n if (this.destroyed) return undefined\n return this.metadata.get(extmarkId)\n }\n\n public destroy(): void {\n if (this.destroyed) return\n\n this.editBuffer.moveCursorLeft = this.originalMoveCursorLeft\n this.editBuffer.moveCursorRight = this.originalMoveCursorRight\n this.editBuffer.setCursorByOffset = this.originalSetCursorByOffset\n this.editorView.moveUpVisual = this.originalMoveUpVisual\n this.editorView.moveDownVisual = this.originalMoveDownVisual\n this.editBuffer.deleteCharBackward = this.originalDeleteCharBackward\n this.editBuffer.deleteChar = this.originalDeleteChar\n this.editBuffer.insertText = this.originalInsertText\n this.editBuffer.insertChar = this.originalInsertChar\n this.editBuffer.deleteRange = this.originalDeleteRange\n this.editBuffer.setText = this.originalSetText\n this.editBuffer.clear = this.originalClear\n this.editBuffer.newLine = this.originalNewLine\n this.editBuffer.deleteLine = this.originalDeleteLine\n this.editorView.deleteSelectedText = this.originalEditorViewDeleteSelectedText\n this.editBuffer.undo = this.originalUndo\n this.editBuffer.redo = this.originalRedo\n\n this.extmarks.clear()\n this.extmarksByTypeId.clear()\n this.metadata.clear()\n this.typeNameToId.clear()\n this.typeIdToName.clear()\n this.history.clear()\n this.destroyed = true\n }\n}\n\nexport function createExtmarksController(editBuffer: EditBuffer, editorView: EditorView): ExtmarksController {\n return new ExtmarksController(editBuffer, editorView)\n}\n",
39
40
  "type Hex = string | null\n\nconst OSC4_RESPONSE =\n /\\x1b]4;(\\d+);(?:(?:rgb:)([0-9a-fA-F]+)\\/([0-9a-fA-F]+)\\/([0-9a-fA-F]+)|#([0-9a-fA-F]{6}))(?:\\x07|\\x1b\\\\)/g\n\nconst OSC_SPECIAL_RESPONSE =\n /\\x1b](\\d+);(?:(?:rgb:)([0-9a-fA-F]+)\\/([0-9a-fA-F]+)\\/([0-9a-fA-F]+)|#([0-9a-fA-F]{6}))(?:\\x07|\\x1b\\\\)/g\n\nexport type WriteFunction = (data: string | Buffer) => boolean\n\nexport interface TerminalColors {\n palette: Hex[]\n defaultForeground: Hex\n defaultBackground: Hex\n cursorColor: Hex\n mouseForeground: Hex\n mouseBackground: Hex\n tekForeground: Hex\n tekBackground: Hex\n highlightBackground: Hex\n highlightForeground: Hex\n}\n\nexport interface GetPaletteOptions {\n timeout?: number\n size?: number\n}\n\nexport interface TerminalPaletteDetector {\n detect(options?: GetPaletteOptions): Promise<TerminalColors>\n detectOSCSupport(timeoutMs?: number): Promise<boolean>\n cleanup(): void\n}\n\nfunction scaleComponent(comp: string): string {\n const val = parseInt(comp, 16)\n const maxIn = (1 << (4 * comp.length)) - 1\n return Math.round((val / maxIn) * 255)\n .toString(16)\n .padStart(2, \"0\")\n}\n\nfunction toHex(r?: string, g?: string, b?: string, hex6?: string): string {\n if (hex6) return `#${hex6.toLowerCase()}`\n if (r && g && b) return `#${scaleComponent(r)}${scaleComponent(g)}${scaleComponent(b)}`\n return \"#000000\"\n}\n\n/**\n * Wrap OSC sequence for tmux passthrough\n * tmux requires DCS sequences to pass OSC to the underlying terminal\n * Format: ESC P tmux; ESC <OSC_SEQUENCE> ESC \\\n */\nfunction wrapForTmux(osc: string): string {\n // Replace ESC with ESC ESC for tmux (escape the escape)\n const escaped = osc.replace(/\\x1b/g, \"\\x1b\\x1b\")\n return `\\x1bPtmux;${escaped}\\x1b\\\\`\n}\n\nexport class TerminalPalette implements TerminalPaletteDetector {\n private stdin: NodeJS.ReadStream\n private stdout: NodeJS.WriteStream\n private writeFn: WriteFunction\n private activeListeners: Array<{ event: string; handler: (...args: any[]) => void }> = []\n private activeTimers: Array<NodeJS.Timeout> = []\n private inLegacyTmux: boolean\n\n constructor(stdin: NodeJS.ReadStream, stdout: NodeJS.WriteStream, writeFn?: WriteFunction, isLegacyTmux?: boolean) {\n this.stdin = stdin\n this.stdout = stdout\n this.writeFn = writeFn || ((data: string | Buffer) => stdout.write(data))\n this.inLegacyTmux = isLegacyTmux ?? false\n }\n\n /**\n * Write an OSC sequence, wrapping for tmux if needed\n */\n private writeOsc(osc: string): boolean {\n const data = this.inLegacyTmux ? wrapForTmux(osc) : osc\n return this.writeFn(data)\n }\n\n cleanup(): void {\n for (const { event, handler } of this.activeListeners) {\n this.stdin.removeListener(event, handler)\n }\n this.activeListeners = []\n\n for (const timer of this.activeTimers) {\n clearTimeout(timer)\n }\n this.activeTimers = []\n }\n\n async detectOSCSupport(timeoutMs = 300): Promise<boolean> {\n const out = this.stdout\n const inp = this.stdin\n\n if (!out.isTTY || !inp.isTTY) return false\n\n return new Promise<boolean>((resolve) => {\n let buffer = \"\"\n\n const onData = (chunk: string | Buffer) => {\n buffer += chunk.toString()\n // Reset regex lastIndex before testing due to global flag\n OSC4_RESPONSE.lastIndex = 0\n if (OSC4_RESPONSE.test(buffer)) {\n cleanup()\n resolve(true)\n }\n }\n\n const onTimeout = () => {\n cleanup()\n resolve(false)\n }\n\n const cleanup = () => {\n clearTimeout(timer)\n inp.removeListener(\"data\", onData)\n // Remove from active tracking\n const listenerIdx = this.activeListeners.findIndex((l) => l.handler === onData)\n if (listenerIdx !== -1) this.activeListeners.splice(listenerIdx, 1)\n const timerIdx = this.activeTimers.indexOf(timer)\n if (timerIdx !== -1) this.activeTimers.splice(timerIdx, 1)\n }\n\n const timer = setTimeout(onTimeout, timeoutMs)\n this.activeTimers.push(timer)\n inp.on(\"data\", onData)\n this.activeListeners.push({ event: \"data\", handler: onData })\n this.writeOsc(\"\\x1b]4;0;?\\x07\")\n })\n }\n\n private async queryPalette(indices: number[], timeoutMs = 1200): Promise<Map<number, Hex>> {\n const out = this.stdout\n const inp = this.stdin\n const results = new Map<number, Hex>()\n indices.forEach((i) => results.set(i, null))\n\n if (!out.isTTY || !inp.isTTY) {\n return results\n }\n\n return new Promise<Map<number, Hex>>((resolve) => {\n let buffer = \"\"\n let lastResponseTime = Date.now()\n let idleTimer: NodeJS.Timeout | null = null\n\n const onData = (chunk: string | Buffer) => {\n buffer += chunk.toString()\n lastResponseTime = Date.now()\n\n let m: RegExpExecArray | null\n OSC4_RESPONSE.lastIndex = 0\n while ((m = OSC4_RESPONSE.exec(buffer))) {\n const idx = parseInt(m[1], 10)\n if (results.has(idx)) results.set(idx, toHex(m[2], m[3], m[4], m[5]))\n }\n\n if (buffer.length > 8192) buffer = buffer.slice(-4096)\n\n const done = [...results.values()].filter((v) => v !== null).length\n if (done === results.size) {\n cleanup()\n resolve(results)\n return\n }\n\n if (idleTimer) clearTimeout(idleTimer)\n idleTimer = setTimeout(() => {\n cleanup()\n resolve(results)\n }, 150)\n if (idleTimer) this.activeTimers.push(idleTimer)\n }\n\n const onTimeout = () => {\n cleanup()\n resolve(results)\n }\n\n const cleanup = () => {\n clearTimeout(timer)\n if (idleTimer) clearTimeout(idleTimer)\n inp.removeListener(\"data\", onData)\n // Remove from active tracking\n const listenerIdx = this.activeListeners.findIndex((l) => l.handler === onData)\n if (listenerIdx !== -1) this.activeListeners.splice(listenerIdx, 1)\n const timerIdx = this.activeTimers.indexOf(timer)\n if (timerIdx !== -1) this.activeTimers.splice(timerIdx, 1)\n if (idleTimer) {\n const idleTimerIdx = this.activeTimers.indexOf(idleTimer)\n if (idleTimerIdx !== -1) this.activeTimers.splice(idleTimerIdx, 1)\n }\n }\n\n const timer = setTimeout(onTimeout, timeoutMs)\n this.activeTimers.push(timer)\n inp.on(\"data\", onData)\n this.activeListeners.push({ event: \"data\", handler: onData })\n this.writeOsc(indices.map((i) => `\\x1b]4;${i};?\\x07`).join(\"\"))\n })\n }\n\n private async querySpecialColors(timeoutMs = 1200): Promise<Record<number, Hex>> {\n const out = this.stdout\n const inp = this.stdin\n const results: Record<number, Hex> = {\n 10: null,\n 11: null,\n 12: null,\n 13: null,\n 14: null,\n 15: null,\n 16: null,\n 17: null,\n 19: null,\n }\n\n if (!out.isTTY || !inp.isTTY) {\n return results\n }\n\n return new Promise<Record<number, Hex>>((resolve) => {\n let buffer = \"\"\n let idleTimer: NodeJS.Timeout | null = null\n\n const onData = (chunk: string | Buffer) => {\n buffer += chunk.toString()\n\n let m: RegExpExecArray | null\n OSC_SPECIAL_RESPONSE.lastIndex = 0\n while ((m = OSC_SPECIAL_RESPONSE.exec(buffer))) {\n const idx = parseInt(m[1], 10)\n if (idx in results) {\n results[idx] = toHex(m[2], m[3], m[4], m[5])\n }\n }\n\n if (buffer.length > 8192) buffer = buffer.slice(-4096)\n\n const done = Object.values(results).filter((v) => v !== null).length\n if (done === Object.keys(results).length) {\n cleanup()\n resolve(results)\n return\n }\n\n if (idleTimer) clearTimeout(idleTimer)\n idleTimer = setTimeout(() => {\n cleanup()\n resolve(results)\n }, 150)\n if (idleTimer) this.activeTimers.push(idleTimer)\n }\n\n const onTimeout = () => {\n cleanup()\n resolve(results)\n }\n\n const cleanup = () => {\n clearTimeout(timer)\n if (idleTimer) clearTimeout(idleTimer)\n inp.removeListener(\"data\", onData)\n const listenerIdx = this.activeListeners.findIndex((l) => l.handler === onData)\n if (listenerIdx !== -1) this.activeListeners.splice(listenerIdx, 1)\n const timerIdx = this.activeTimers.indexOf(timer)\n if (timerIdx !== -1) this.activeTimers.splice(timerIdx, 1)\n if (idleTimer) {\n const idleTimerIdx = this.activeTimers.indexOf(idleTimer)\n if (idleTimerIdx !== -1) this.activeTimers.splice(idleTimerIdx, 1)\n }\n }\n\n const timer = setTimeout(onTimeout, timeoutMs)\n this.activeTimers.push(timer)\n inp.on(\"data\", onData)\n this.activeListeners.push({ event: \"data\", handler: onData })\n this.writeOsc(\n [\n \"\\x1b]10;?\\x07\",\n \"\\x1b]11;?\\x07\",\n \"\\x1b]12;?\\x07\",\n \"\\x1b]13;?\\x07\",\n \"\\x1b]14;?\\x07\",\n \"\\x1b]15;?\\x07\",\n \"\\x1b]16;?\\x07\",\n \"\\x1b]17;?\\x07\",\n \"\\x1b]19;?\\x07\",\n ].join(\"\"),\n )\n })\n }\n\n async detect(options?: GetPaletteOptions): Promise<TerminalColors> {\n const { timeout = 5000, size = 16 } = options || {}\n const supported = await this.detectOSCSupport()\n\n if (!supported) {\n return {\n palette: Array(size).fill(null),\n defaultForeground: null,\n defaultBackground: null,\n cursorColor: null,\n mouseForeground: null,\n mouseBackground: null,\n tekForeground: null,\n tekBackground: null,\n highlightBackground: null,\n highlightForeground: null,\n }\n }\n\n const indicesToQuery = [...Array(size).keys()]\n const [paletteResults, specialColors] = await Promise.all([\n this.queryPalette(indicesToQuery, timeout),\n this.querySpecialColors(timeout),\n ])\n\n return {\n palette: [...Array(size).keys()].map((i) => paletteResults.get(i) ?? null),\n defaultForeground: specialColors[10],\n defaultBackground: specialColors[11],\n cursorColor: specialColors[12],\n mouseForeground: specialColors[13],\n mouseBackground: specialColors[14],\n tekForeground: specialColors[15],\n tekBackground: specialColors[16],\n highlightBackground: specialColors[17],\n highlightForeground: specialColors[19],\n }\n }\n}\n\nexport function createTerminalPalette(\n stdin: NodeJS.ReadStream,\n stdout: NodeJS.WriteStream,\n writeFn?: WriteFunction,\n isLegacyTmux?: boolean,\n): TerminalPaletteDetector {\n return new TerminalPalette(stdin, stdout, writeFn, isLegacyTmux)\n}\n",
40
- "import { dlopen, toArrayBuffer, JSCallback, ptr, type Pointer } from \"bun:ffi\"\nimport { existsSync } from \"fs\"\nimport { EventEmitter } from \"events\"\nimport { type CursorStyle, type DebugOverlayCorner, type WidthMethod, type Highlight, type LineInfo } from \"./types\"\nexport type { LineInfo }\n\nimport { RGBA } from \"./lib/RGBA\"\nimport { OptimizedBuffer } from \"./buffer\"\nimport { TextBuffer } from \"./text-buffer\"\nimport { env, registerEnvVar } from \"./lib/env\"\nimport {\n StyledChunkStruct,\n HighlightStruct,\n LogicalCursorStruct,\n VisualCursorStruct,\n TerminalCapabilitiesStruct,\n EncodedCharStruct,\n LineInfoStruct,\n MeasureResultStruct,\n} from \"./zig-structs\"\n\nconst module = await import(`@opentui/core-${process.platform}-${process.arch}/index.ts`)\nlet targetLibPath = module.default\n\nif (/\\$bunfs/.test(targetLibPath)) {\n targetLibPath = targetLibPath.replace(\"../\", \"\")\n}\n\nif (!existsSync(targetLibPath)) {\n throw new Error(`opentui is not supported on the current platform: ${process.platform}-${process.arch}`)\n}\n\nregisterEnvVar({\n name: \"OTUI_DEBUG_FFI\",\n description: \"Enable debug logging for the FFI bindings.\",\n type: \"boolean\",\n default: false,\n})\n\nregisterEnvVar({\n name: \"OTUI_TRACE_FFI\",\n description: \"Enable tracing for the FFI bindings.\",\n type: \"boolean\",\n default: false,\n})\n\n// Env vars used in terminal.zig\nregisterEnvVar({\n name: \"OPENTUI_FORCE_WCWIDTH\",\n description: \"Use wcwidth for character width calculations\",\n type: \"boolean\",\n default: false,\n})\nregisterEnvVar({\n name: \"OPENTUI_FORCE_UNICODE\",\n description: \"Force Mode 2026 Unicode support in terminal capabilities\",\n type: \"boolean\",\n default: false,\n})\n\nfunction getOpenTUILib(libPath?: string) {\n const resolvedLibPath = libPath || targetLibPath\n\n const rawSymbols = dlopen(resolvedLibPath, {\n // Logging\n setLogCallback: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n // Event bus\n setEventCallback: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n // Renderer management\n createRenderer: {\n args: [\"u32\", \"u32\", \"bool\"],\n returns: \"ptr\",\n },\n destroyRenderer: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n setUseThread: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\",\n },\n setBackgroundColor: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n setRenderOffset: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\",\n },\n updateStats: {\n args: [\"ptr\", \"f64\", \"u32\", \"f64\"],\n returns: \"void\",\n },\n updateMemoryStats: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n render: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\",\n },\n getNextBuffer: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n getCurrentBuffer: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n\n queryPixelResolution: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n\n createOptimizedBuffer: {\n args: [\"u32\", \"u32\", \"bool\", \"u8\", \"ptr\", \"usize\"],\n returns: \"ptr\",\n },\n destroyOptimizedBuffer: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n\n drawFrameBuffer: {\n args: [\"ptr\", \"i32\", \"i32\", \"ptr\", \"u32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n getBufferWidth: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n getBufferHeight: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n bufferClear: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n bufferGetCharPtr: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n bufferGetFgPtr: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n bufferGetBgPtr: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n bufferGetAttributesPtr: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n bufferGetRespectAlpha: {\n args: [\"ptr\"],\n returns: \"bool\",\n },\n bufferSetRespectAlpha: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\",\n },\n bufferGetId: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n bufferGetRealCharSize: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n bufferWriteResolvedChars: {\n args: [\"ptr\", \"ptr\", \"usize\", \"bool\"],\n returns: \"u32\",\n },\n\n bufferDrawText: {\n args: [\"ptr\", \"ptr\", \"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\", \"u8\"],\n returns: \"void\",\n },\n bufferSetCellWithAlphaBlending: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\", \"u8\"],\n returns: \"void\",\n },\n bufferSetCell: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\", \"u8\"],\n returns: \"void\",\n },\n bufferFillRect: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\", \"ptr\"],\n returns: \"void\",\n },\n bufferResize: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n\n resizeRenderer: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n\n // Cursor functions (now renderer-scoped)\n setCursorPosition: {\n args: [\"ptr\", \"i32\", \"i32\", \"bool\"],\n returns: \"void\",\n },\n setCursorStyle: {\n args: [\"ptr\", \"ptr\", \"u32\", \"bool\"],\n returns: \"void\",\n },\n setCursorColor: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n\n // Debug overlay\n setDebugOverlay: {\n args: [\"ptr\", \"bool\", \"u8\"],\n returns: \"void\",\n },\n\n // Terminal control\n clearTerminal: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n setTerminalTitle: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\",\n },\n\n bufferDrawSuperSampleBuffer: {\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\", \"usize\", \"u8\", \"u32\"],\n returns: \"void\",\n },\n bufferDrawPackedBuffer: {\n args: [\"ptr\", \"ptr\", \"usize\", \"u32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n bufferDrawBox: {\n args: [\"ptr\", \"i32\", \"i32\", \"u32\", \"u32\", \"ptr\", \"u32\", \"ptr\", \"ptr\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n bufferPushScissorRect: {\n args: [\"ptr\", \"i32\", \"i32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n bufferPopScissorRect: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n bufferClearScissorRects: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n\n addToHitGrid: {\n args: [\"ptr\", \"i32\", \"i32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n checkHit: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"u32\",\n },\n dumpHitGrid: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n dumpBuffers: {\n args: [\"ptr\", \"i64\"],\n returns: \"void\",\n },\n dumpStdoutBuffer: {\n args: [\"ptr\", \"i64\"],\n returns: \"void\",\n },\n enableMouse: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\",\n },\n disableMouse: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n enableKittyKeyboard: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\",\n },\n disableKittyKeyboard: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n setUseKittyKeyboard: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\",\n },\n getUseKittyKeyboard: {\n args: [\"ptr\"],\n returns: \"bool\",\n },\n setupTerminal: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\",\n },\n suspendRenderer: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n resumeRenderer: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n\n // TextBuffer functions\n createTextBuffer: {\n args: [\"u8\"],\n returns: \"ptr\",\n },\n destroyTextBuffer: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n textBufferGetLength: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n textBufferGetByteSize: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n\n textBufferReset: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n textBufferClear: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n textBufferSetDefaultFg: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferSetDefaultBg: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferSetDefaultAttributes: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferResetDefaults: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n textBufferGetTabWidth: {\n args: [\"ptr\"],\n returns: \"u8\",\n },\n textBufferSetTabWidth: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\",\n },\n textBufferRegisterMemBuffer: {\n args: [\"ptr\", \"ptr\", \"usize\", \"bool\"],\n returns: \"u16\",\n },\n textBufferReplaceMemBuffer: {\n args: [\"ptr\", \"u8\", \"ptr\", \"usize\", \"bool\"],\n returns: \"bool\",\n },\n textBufferClearMemRegistry: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n textBufferSetTextFromMem: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\",\n },\n textBufferAppend: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\",\n },\n textBufferAppendFromMemId: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\",\n },\n textBufferLoadFile: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"bool\",\n },\n textBufferSetStyledText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\",\n },\n textBufferGetLineCount: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n textBufferGetPlainText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n textBufferAddHighlightByCharRange: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferAddHighlight: {\n args: [\"ptr\", \"u32\", \"ptr\"],\n returns: \"void\",\n },\n textBufferRemoveHighlightsByRef: {\n args: [\"ptr\", \"u16\"],\n returns: \"void\",\n },\n textBufferClearLineHighlights: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\",\n },\n textBufferClearAllHighlights: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n textBufferSetSyntaxStyle: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferGetLineHighlightsPtr: {\n args: [\"ptr\", \"u32\", \"ptr\"],\n returns: \"ptr\",\n },\n textBufferFreeLineHighlights: {\n args: [\"ptr\", \"usize\"],\n returns: \"void\",\n },\n textBufferGetHighlightCount: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n textBufferGetTextRange: {\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n textBufferGetTextRangeByCoords: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n\n // TextBufferView functions\n createTextBufferView: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n destroyTextBufferView: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n textBufferViewSetSelection: {\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferViewResetSelection: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n textBufferViewGetSelectionInfo: {\n args: [\"ptr\"],\n returns: \"u64\",\n },\n textBufferViewSetLocalSelection: {\n args: [\"ptr\", \"i32\", \"i32\", \"i32\", \"i32\", \"ptr\", \"ptr\"],\n returns: \"bool\",\n },\n textBufferViewResetLocalSelection: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n textBufferViewSetWrapWidth: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\",\n },\n textBufferViewSetWrapMode: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\",\n },\n textBufferViewSetViewportSize: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n textBufferViewSetViewport: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n textBufferViewGetVirtualLineCount: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n textBufferViewGetLineInfoDirect: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferViewGetLogicalLineInfoDirect: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferViewGetSelectedText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n textBufferViewGetPlainText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n textBufferViewSetTabIndicator: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\",\n },\n textBufferViewSetTabIndicatorColor: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferViewMeasureForDimensions: {\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\"],\n returns: \"bool\",\n },\n bufferDrawTextBufferView: {\n args: [\"ptr\", \"ptr\", \"i32\", \"i32\"],\n returns: \"void\",\n },\n bufferDrawEditorView: {\n args: [\"ptr\", \"ptr\", \"i32\", \"i32\"],\n returns: \"void\",\n },\n\n // EditorView functions\n createEditorView: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"ptr\",\n },\n destroyEditorView: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editorViewSetViewportSize: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n editorViewGetViewport: {\n args: [\"ptr\", \"ptr\", \"ptr\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewSetScrollMargin: {\n args: [\"ptr\", \"f32\"],\n returns: \"void\",\n },\n editorViewSetWrapMode: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\",\n },\n editorViewGetVirtualLineCount: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n editorViewGetTotalVirtualLineCount: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n editorViewGetTextBufferView: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n editorViewGetLineInfoDirect: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewGetLogicalLineInfoDirect: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n\n // EditBuffer functions\n createEditBuffer: {\n args: [\"u8\"],\n returns: \"ptr\",\n },\n destroyEditBuffer: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferSetText: {\n args: [\"ptr\", \"ptr\", \"usize\", \"bool\"],\n returns: \"void\",\n },\n editBufferSetTextFromMem: {\n args: [\"ptr\", \"u8\", \"bool\"],\n returns: \"void\",\n },\n editBufferGetText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n editBufferInsertChar: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\",\n },\n editBufferInsertText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\",\n },\n editBufferDeleteChar: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferDeleteCharBackward: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferDeleteRange: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n editBufferNewLine: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferDeleteLine: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferMoveCursorLeft: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferMoveCursorRight: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferMoveCursorUp: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferMoveCursorDown: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferGotoLine: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\",\n },\n editBufferSetCursor: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n editBufferSetCursorToLineCol: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n editBufferSetCursorByOffset: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\",\n },\n editBufferGetCursorPosition: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editBufferGetId: {\n args: [\"ptr\"],\n returns: \"u16\",\n },\n editBufferGetTextBuffer: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n editBufferDebugLogRope: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferUndo: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n editBufferRedo: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n editBufferCanUndo: {\n args: [\"ptr\"],\n returns: \"bool\",\n },\n editBufferCanRedo: {\n args: [\"ptr\"],\n returns: \"bool\",\n },\n editBufferClearHistory: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferClear: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferGetNextWordBoundary: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editBufferGetPrevWordBoundary: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editBufferGetEOL: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editBufferOffsetToPosition: {\n args: [\"ptr\", \"u32\", \"ptr\"],\n returns: \"bool\",\n },\n editBufferPositionToOffset: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"u32\",\n },\n editBufferGetLineStartOffset: {\n args: [\"ptr\", \"u32\"],\n returns: \"u32\",\n },\n editBufferGetTextRange: {\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n editBufferGetTextRangeByCoords: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n\n // EditorView selection and editing methods\n editorViewSetSelection: {\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewResetSelection: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editorViewGetSelection: {\n args: [\"ptr\"],\n returns: \"u64\",\n },\n editorViewSetLocalSelection: {\n args: [\"ptr\", \"i32\", \"i32\", \"i32\", \"i32\", \"ptr\", \"ptr\"],\n returns: \"bool\",\n },\n editorViewResetLocalSelection: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editorViewGetSelectedTextBytes: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n editorViewGetCursor: {\n args: [\"ptr\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewGetText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n\n // EditorView VisualCursor methods\n editorViewGetVisualCursor: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n\n editorViewMoveUpVisual: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editorViewMoveDownVisual: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editorViewDeleteSelectedText: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editorViewSetCursorByOffset: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\",\n },\n editorViewGetNextWordBoundary: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewGetPrevWordBoundary: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewGetEOL: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewSetPlaceholderStyledText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\",\n },\n editorViewSetTabIndicator: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\",\n },\n editorViewSetTabIndicatorColor: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n\n getArenaAllocatedBytes: {\n args: [],\n returns: \"usize\",\n },\n\n // SyntaxStyle functions\n createSyntaxStyle: {\n args: [],\n returns: \"ptr\",\n },\n destroySyntaxStyle: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n syntaxStyleRegister: {\n args: [\"ptr\", \"ptr\", \"usize\", \"ptr\", \"ptr\", \"u8\"],\n returns: \"u32\",\n },\n syntaxStyleResolveByName: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"u32\",\n },\n syntaxStyleGetStyleCount: {\n args: [\"ptr\"],\n returns: \"usize\",\n },\n\n // Terminal capability functions\n getTerminalCapabilities: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n processCapabilityResponse: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\",\n },\n\n // Unicode encoding API\n encodeUnicode: {\n args: [\"ptr\", \"usize\", \"ptr\", \"ptr\", \"u8\"],\n returns: \"bool\",\n },\n freeUnicode: {\n args: [\"ptr\", \"usize\"],\n returns: \"void\",\n },\n bufferDrawChar: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\", \"u8\"],\n returns: \"void\",\n },\n })\n\n if (env.OTUI_DEBUG_FFI || env.OTUI_TRACE_FFI) {\n return {\n symbols: convertToDebugSymbols(rawSymbols.symbols),\n }\n }\n\n return rawSymbols\n}\n\nfunction convertToDebugSymbols<T extends Record<string, any>>(symbols: T): T {\n const debugSymbols: Record<string, any> = {}\n const traceSymbols: Record<string, any> = {}\n let hasTracing = false\n let ffiLogWriter: ReturnType<ReturnType<typeof Bun.file>[\"writer\"]> | null = null\n\n Object.entries(symbols).forEach(([key, value]) => {\n debugSymbols[key] = value\n })\n\n if (env.OTUI_DEBUG_FFI) {\n const now = new Date()\n const timestamp = now.toISOString().replace(/[:.]/g, \"-\").replace(/T/, \"_\").split(\"Z\")[0]\n const logFilePath = `ffi_otui_debug_${timestamp}.log`\n ffiLogWriter = Bun.file(logFilePath).writer()\n\n const writer = ffiLogWriter\n const writeSync = (msg: string) => {\n const buffer = new TextEncoder().encode(msg + \"\\n\")\n writer.write(buffer)\n writer.flush()\n }\n\n Object.entries(symbols).forEach(([key, value]) => {\n if (typeof value === \"function\") {\n debugSymbols[key] = (...args: any[]) => {\n writeSync(`${key}(${args.map((arg) => String(arg)).join(\", \")})`)\n const result = value(...args)\n writeSync(`${key} returned: ${String(result)}`)\n return result\n }\n }\n })\n }\n\n if (env.OTUI_TRACE_FFI) {\n hasTracing = true\n Object.entries(symbols).forEach(([key, value]) => {\n if (typeof value === \"function\") {\n traceSymbols[key] = []\n const originalFunc = debugSymbols[key]\n debugSymbols[key] = (...args: any[]) => {\n const start = performance.now()\n const result = originalFunc(...args)\n const end = performance.now()\n traceSymbols[key].push(end - start)\n return result\n }\n }\n })\n }\n\n if (env.OTUI_DEBUG_FFI && ffiLogWriter) {\n process.on(\"exit\", () => {\n try {\n ffiLogWriter.end()\n } catch (e) {\n // Ignore errors on exit\n }\n })\n }\n\n if (hasTracing) {\n process.on(\"exit\", () => {\n const allStats: Array<{\n name: string\n count: number\n total: number\n average: number\n min: number\n max: number\n median: number\n p90: number\n p99: number\n }> = []\n\n for (const [key, timings] of Object.entries(traceSymbols)) {\n if (!Array.isArray(timings) || timings.length === 0) {\n continue\n }\n\n const sortedTimings = [...timings].sort((a, b) => a - b)\n const count = sortedTimings.length\n\n const total = sortedTimings.reduce((acc, t) => acc + t, 0)\n const average = total / count\n const min = sortedTimings[0]\n const max = sortedTimings[count - 1]\n\n const medianIndex = Math.floor(count / 2)\n const p90Index = Math.floor(count * 0.9)\n const p99Index = Math.floor(count * 0.99)\n\n const median = sortedTimings[medianIndex]\n const p90 = sortedTimings[Math.min(p90Index, count - 1)]\n const p99 = sortedTimings[Math.min(p99Index, count - 1)]\n\n allStats.push({\n name: key,\n count,\n total,\n average,\n min,\n max,\n median,\n p90,\n p99,\n })\n }\n\n allStats.sort((a, b) => b.total - a.total)\n\n console.log(\"\\n--- OpenTUI FFI Call Performance ---\")\n console.log(\"Sorted by total time spent (descending)\")\n console.log(\n \"-------------------------------------------------------------------------------------------------------------------------\",\n )\n\n if (allStats.length === 0) {\n console.log(\"No trace data collected or all symbols had zero calls.\")\n } else {\n const nameHeader = \"Symbol\"\n const callsHeader = \"Calls\"\n const totalHeader = \"Total (ms)\"\n const avgHeader = \"Avg (ms)\"\n const minHeader = \"Min (ms)\"\n const maxHeader = \"Max (ms)\"\n const medHeader = \"Med (ms)\"\n const p90Header = \"P90 (ms)\"\n const p99Header = \"P99 (ms)\"\n\n const nameWidth = Math.max(nameHeader.length, ...allStats.map((s) => s.name.length))\n const countWidth = Math.max(callsHeader.length, ...allStats.map((s) => String(s.count).length))\n const totalWidth = Math.max(totalHeader.length, ...allStats.map((s) => s.total.toFixed(2).length))\n const avgWidth = Math.max(avgHeader.length, ...allStats.map((s) => s.average.toFixed(2).length))\n const minWidth = Math.max(minHeader.length, ...allStats.map((s) => s.min.toFixed(2).length))\n const maxWidth = Math.max(maxHeader.length, ...allStats.map((s) => s.max.toFixed(2).length))\n const medianWidth = Math.max(medHeader.length, ...allStats.map((s) => s.median.toFixed(2).length))\n const p90Width = Math.max(p90Header.length, ...allStats.map((s) => s.p90.toFixed(2).length))\n const p99Width = Math.max(p99Header.length, ...allStats.map((s) => s.p99.toFixed(2).length))\n\n // Header\n console.log(\n `${nameHeader.padEnd(nameWidth)} | ` +\n `${callsHeader.padStart(countWidth)} | ` +\n `${totalHeader.padStart(totalWidth)} | ` +\n `${avgHeader.padStart(avgWidth)} | ` +\n `${minHeader.padStart(minWidth)} | ` +\n `${maxHeader.padStart(maxWidth)} | ` +\n `${medHeader.padStart(medianWidth)} | ` +\n `${p90Header.padStart(p90Width)} | ` +\n `${p99Header.padStart(p99Width)}`,\n )\n // Separator\n console.log(\n `${\"-\".repeat(nameWidth)}-+-${\"-\".repeat(countWidth)}-+-${\"-\".repeat(totalWidth)}-+-${\"-\".repeat(avgWidth)}-+-${\"-\".repeat(minWidth)}-+-${\"-\".repeat(maxWidth)}-+-${\"-\".repeat(medianWidth)}-+-${\"-\".repeat(p90Width)}-+-${\"-\".repeat(p99Width)}`,\n )\n\n allStats.forEach((stat) => {\n console.log(\n `${stat.name.padEnd(nameWidth)} | ` +\n `${String(stat.count).padStart(countWidth)} | ` +\n `${stat.total.toFixed(2).padStart(totalWidth)} | ` +\n `${stat.average.toFixed(2).padStart(avgWidth)} | ` +\n `${stat.min.toFixed(2).padStart(minWidth)} | ` +\n `${stat.max.toFixed(2).padStart(maxWidth)} | ` +\n `${stat.median.toFixed(2).padStart(medianWidth)} | ` +\n `${stat.p90.toFixed(2).padStart(p90Width)} | ` +\n `${stat.p99.toFixed(2).padStart(p99Width)}`,\n )\n })\n }\n console.log(\n \"-------------------------------------------------------------------------------------------------------------------------\",\n )\n })\n }\n\n return debugSymbols as T\n}\n\n// Log levels matching Zig's LogLevel enum\nexport enum LogLevel {\n Error = 0,\n Warn = 1,\n Info = 2,\n Debug = 3,\n}\n\n/**\n * VisualCursor represents a cursor position with both visual and logical coordinates.\n * Visual coordinates (visualRow, visualCol) are VIEWPORT-RELATIVE.\n * This means visualRow=0 is the first visible line in the viewport, not the first line in the document.\n * Logical coordinates (logicalRow, logicalCol) are document-absolute.\n */\nexport interface VisualCursor {\n visualRow: number // Viewport-relative row (0 = top of viewport)\n visualCol: number // Viewport-relative column (0 = left edge of viewport when not wrapping)\n logicalRow: number // Document-absolute row\n logicalCol: number // Document-absolute column\n offset: number // Global display-width offset from buffer start\n}\n\nexport interface LogicalCursor {\n row: number\n col: number\n offset: number\n}\n\nexport interface RenderLib {\n createRenderer: (width: number, height: number, options?: { testing: boolean }) => Pointer | null\n destroyRenderer: (renderer: Pointer) => void\n setUseThread: (renderer: Pointer, useThread: boolean) => void\n setBackgroundColor: (renderer: Pointer, color: RGBA) => void\n setRenderOffset: (renderer: Pointer, offset: number) => void\n updateStats: (renderer: Pointer, time: number, fps: number, frameCallbackTime: number) => void\n updateMemoryStats: (renderer: Pointer, heapUsed: number, heapTotal: number, arrayBuffers: number) => void\n render: (renderer: Pointer, force: boolean) => void\n getNextBuffer: (renderer: Pointer) => OptimizedBuffer\n getCurrentBuffer: (renderer: Pointer) => OptimizedBuffer\n createOptimizedBuffer: (\n width: number,\n height: number,\n widthMethod: WidthMethod,\n respectAlpha?: boolean,\n id?: string,\n ) => OptimizedBuffer\n destroyOptimizedBuffer: (bufferPtr: Pointer) => void\n drawFrameBuffer: (\n targetBufferPtr: Pointer,\n destX: number,\n destY: number,\n bufferPtr: Pointer,\n sourceX?: number,\n sourceY?: number,\n sourceWidth?: number,\n sourceHeight?: number,\n ) => void\n getBufferWidth: (buffer: Pointer) => number\n getBufferHeight: (buffer: Pointer) => number\n bufferClear: (buffer: Pointer, color: RGBA) => void\n bufferGetCharPtr: (buffer: Pointer) => Pointer\n bufferGetFgPtr: (buffer: Pointer) => Pointer\n bufferGetBgPtr: (buffer: Pointer) => Pointer\n bufferGetAttributesPtr: (buffer: Pointer) => Pointer\n bufferGetRespectAlpha: (buffer: Pointer) => boolean\n bufferSetRespectAlpha: (buffer: Pointer, respectAlpha: boolean) => void\n bufferGetId: (buffer: Pointer) => string\n bufferGetRealCharSize: (buffer: Pointer) => number\n bufferWriteResolvedChars: (buffer: Pointer, outputBuffer: Uint8Array, addLineBreaks: boolean) => number\n bufferDrawText: (\n buffer: Pointer,\n text: string,\n x: number,\n y: number,\n color: RGBA,\n bgColor?: RGBA,\n attributes?: number,\n ) => void\n bufferSetCellWithAlphaBlending: (\n buffer: Pointer,\n x: number,\n y: number,\n char: string,\n color: RGBA,\n bgColor: RGBA,\n attributes?: number,\n ) => void\n bufferSetCell: (\n buffer: Pointer,\n x: number,\n y: number,\n char: string,\n color: RGBA,\n bgColor: RGBA,\n attributes?: number,\n ) => void\n bufferFillRect: (buffer: Pointer, x: number, y: number, width: number, height: number, color: RGBA) => void\n bufferDrawSuperSampleBuffer: (\n buffer: Pointer,\n x: number,\n y: number,\n pixelDataPtr: Pointer,\n pixelDataLength: number,\n format: \"bgra8unorm\" | \"rgba8unorm\",\n alignedBytesPerRow: number,\n ) => void\n bufferDrawPackedBuffer: (\n buffer: Pointer,\n dataPtr: Pointer,\n dataLen: number,\n posX: number,\n posY: number,\n terminalWidthCells: number,\n terminalHeightCells: number,\n ) => void\n bufferDrawBox: (\n buffer: Pointer,\n x: number,\n y: number,\n width: number,\n height: number,\n borderChars: Uint32Array,\n packedOptions: number,\n borderColor: RGBA,\n backgroundColor: RGBA,\n title: string | null,\n ) => void\n bufferResize: (buffer: Pointer, width: number, height: number) => void\n resizeRenderer: (renderer: Pointer, width: number, height: number) => void\n setCursorPosition: (renderer: Pointer, x: number, y: number, visible: boolean) => void\n setCursorStyle: (renderer: Pointer, style: CursorStyle, blinking: boolean) => void\n setCursorColor: (renderer: Pointer, color: RGBA) => void\n setDebugOverlay: (renderer: Pointer, enabled: boolean, corner: DebugOverlayCorner) => void\n clearTerminal: (renderer: Pointer) => void\n setTerminalTitle: (renderer: Pointer, title: string) => void\n addToHitGrid: (renderer: Pointer, x: number, y: number, width: number, height: number, id: number) => void\n checkHit: (renderer: Pointer, x: number, y: number) => number\n dumpHitGrid: (renderer: Pointer) => void\n dumpBuffers: (renderer: Pointer, timestamp?: number) => void\n dumpStdoutBuffer: (renderer: Pointer, timestamp?: number) => void\n enableMouse: (renderer: Pointer, enableMovement: boolean) => void\n disableMouse: (renderer: Pointer) => void\n enableKittyKeyboard: (renderer: Pointer, flags: number) => void\n disableKittyKeyboard: (renderer: Pointer) => void\n setUseKittyKeyboard: (renderer: Pointer, use: boolean) => void\n getUseKittyKeyboard: (renderer: Pointer) => boolean\n setupTerminal: (renderer: Pointer, useAlternateScreen: boolean) => void\n suspendRenderer: (renderer: Pointer) => void\n resumeRenderer: (renderer: Pointer) => void\n queryPixelResolution: (renderer: Pointer) => void\n\n // TextBuffer methods\n createTextBuffer: (widthMethod: WidthMethod) => TextBuffer\n destroyTextBuffer: (buffer: Pointer) => void\n textBufferGetLength: (buffer: Pointer) => number\n textBufferGetByteSize: (buffer: Pointer) => number\n\n textBufferReset: (buffer: Pointer) => void\n textBufferClear: (buffer: Pointer) => void\n textBufferRegisterMemBuffer: (buffer: Pointer, bytes: Uint8Array, owned?: boolean) => number\n textBufferReplaceMemBuffer: (buffer: Pointer, memId: number, bytes: Uint8Array, owned?: boolean) => boolean\n textBufferClearMemRegistry: (buffer: Pointer) => void\n textBufferSetTextFromMem: (buffer: Pointer, memId: number) => void\n textBufferAppend: (buffer: Pointer, bytes: Uint8Array) => void\n textBufferAppendFromMemId: (buffer: Pointer, memId: number) => void\n textBufferLoadFile: (buffer: Pointer, path: string) => boolean\n textBufferSetStyledText: (\n buffer: Pointer,\n chunks: Array<{ text: string; fg?: RGBA | null; bg?: RGBA | null; attributes?: number }>,\n ) => void\n textBufferSetDefaultFg: (buffer: Pointer, fg: RGBA | null) => void\n textBufferSetDefaultBg: (buffer: Pointer, bg: RGBA | null) => void\n textBufferSetDefaultAttributes: (buffer: Pointer, attributes: number | null) => void\n textBufferResetDefaults: (buffer: Pointer) => void\n textBufferGetTabWidth: (buffer: Pointer) => number\n textBufferSetTabWidth: (buffer: Pointer, width: number) => void\n textBufferGetLineCount: (buffer: Pointer) => number\n getPlainTextBytes: (buffer: Pointer, maxLength: number) => Uint8Array | null\n textBufferGetTextRange: (\n buffer: Pointer,\n startOffset: number,\n endOffset: number,\n maxLength: number,\n ) => Uint8Array | null\n textBufferGetTextRangeByCoords: (\n buffer: Pointer,\n startRow: number,\n startCol: number,\n endRow: number,\n endCol: number,\n maxLength: number,\n ) => Uint8Array | null\n\n // TextBufferView methods\n createTextBufferView: (textBuffer: Pointer) => Pointer\n destroyTextBufferView: (view: Pointer) => void\n textBufferViewSetSelection: (\n view: Pointer,\n start: number,\n end: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n ) => void\n textBufferViewResetSelection: (view: Pointer) => void\n textBufferViewGetSelection: (view: Pointer) => { start: number; end: number } | null\n textBufferViewSetLocalSelection: (\n view: Pointer,\n anchorX: number,\n anchorY: number,\n focusX: number,\n focusY: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n ) => boolean\n textBufferViewResetLocalSelection: (view: Pointer) => void\n textBufferViewSetWrapWidth: (view: Pointer, width: number) => void\n textBufferViewSetWrapMode: (view: Pointer, mode: \"none\" | \"char\" | \"word\") => void\n textBufferViewSetViewportSize: (view: Pointer, width: number, height: number) => void\n textBufferViewSetViewport: (view: Pointer, x: number, y: number, width: number, height: number) => void\n textBufferViewGetLineInfo: (view: Pointer) => LineInfo\n textBufferViewGetLogicalLineInfo: (view: Pointer) => LineInfo\n textBufferViewGetSelectedTextBytes: (view: Pointer, maxLength: number) => Uint8Array | null\n textBufferViewGetPlainTextBytes: (view: Pointer, maxLength: number) => Uint8Array | null\n textBufferViewSetTabIndicator: (view: Pointer, indicator: number) => void\n textBufferViewSetTabIndicatorColor: (view: Pointer, color: RGBA) => void\n textBufferViewMeasureForDimensions: (\n view: Pointer,\n width: number,\n height: number,\n ) => { lineCount: number; maxWidth: number } | null\n textBufferViewGetVirtualLineCount: (view: Pointer) => number\n\n readonly encoder: TextEncoder\n readonly decoder: TextDecoder\n bufferDrawTextBufferView: (buffer: Pointer, view: Pointer, x: number, y: number) => void\n bufferDrawEditorView: (buffer: Pointer, view: Pointer, x: number, y: number) => void\n\n // EditBuffer methods\n createEditBuffer: (widthMethod: WidthMethod) => Pointer\n destroyEditBuffer: (buffer: Pointer) => void\n editBufferSetText: (buffer: Pointer, textBytes: Uint8Array, retainHistory?: boolean) => void\n editBufferSetTextFromMem: (buffer: Pointer, memId: number, retainHistory?: boolean) => void\n editBufferGetText: (buffer: Pointer, maxLength: number) => Uint8Array | null\n editBufferInsertChar: (buffer: Pointer, char: string) => void\n editBufferInsertText: (buffer: Pointer, text: string) => void\n editBufferDeleteChar: (buffer: Pointer) => void\n editBufferDeleteCharBackward: (buffer: Pointer) => void\n editBufferDeleteRange: (buffer: Pointer, startLine: number, startCol: number, endLine: number, endCol: number) => void\n editBufferNewLine: (buffer: Pointer) => void\n editBufferDeleteLine: (buffer: Pointer) => void\n editBufferMoveCursorLeft: (buffer: Pointer) => void\n editBufferMoveCursorRight: (buffer: Pointer) => void\n editBufferMoveCursorUp: (buffer: Pointer) => void\n editBufferMoveCursorDown: (buffer: Pointer) => void\n editBufferGotoLine: (buffer: Pointer, line: number) => void\n editBufferSetCursor: (buffer: Pointer, line: number, col: number) => void\n editBufferSetCursorToLineCol: (buffer: Pointer, line: number, col: number) => void\n editBufferSetCursorByOffset: (buffer: Pointer, offset: number) => void\n editBufferGetCursorPosition: (buffer: Pointer) => LogicalCursor\n editBufferGetId: (buffer: Pointer) => number\n editBufferGetTextBuffer: (buffer: Pointer) => Pointer\n editBufferDebugLogRope: (buffer: Pointer) => void\n editBufferUndo: (buffer: Pointer, maxLength: number) => Uint8Array | null\n editBufferRedo: (buffer: Pointer, maxLength: number) => Uint8Array | null\n editBufferCanUndo: (buffer: Pointer) => boolean\n editBufferCanRedo: (buffer: Pointer) => boolean\n editBufferClearHistory: (buffer: Pointer) => void\n editBufferClear: (buffer: Pointer) => void\n editBufferGetNextWordBoundary: (buffer: Pointer) => { row: number; col: number; offset: number }\n editBufferGetPrevWordBoundary: (buffer: Pointer) => { row: number; col: number; offset: number }\n editBufferGetEOL: (buffer: Pointer) => { row: number; col: number; offset: number }\n editBufferOffsetToPosition: (buffer: Pointer, offset: number) => { row: number; col: number; offset: number } | null\n editBufferPositionToOffset: (buffer: Pointer, row: number, col: number) => number\n editBufferGetLineStartOffset: (buffer: Pointer, row: number) => number\n editBufferGetTextRange: (\n buffer: Pointer,\n startOffset: number,\n endOffset: number,\n maxLength: number,\n ) => Uint8Array | null\n editBufferGetTextRangeByCoords: (\n buffer: Pointer,\n startRow: number,\n startCol: number,\n endRow: number,\n endCol: number,\n maxLength: number,\n ) => Uint8Array | null\n\n // EditorView methods\n createEditorView: (editBufferPtr: Pointer, viewportWidth: number, viewportHeight: number) => Pointer\n destroyEditorView: (view: Pointer) => void\n editorViewSetViewportSize: (view: Pointer, width: number, height: number) => void\n editorViewGetViewport: (view: Pointer) => { offsetY: number; offsetX: number; height: number; width: number }\n editorViewSetScrollMargin: (view: Pointer, margin: number) => void\n editorViewSetWrapMode: (view: Pointer, mode: \"none\" | \"char\" | \"word\") => void\n editorViewGetVirtualLineCount: (view: Pointer) => number\n editorViewGetTotalVirtualLineCount: (view: Pointer) => number\n editorViewGetTextBufferView: (view: Pointer) => Pointer\n editorViewSetSelection: (\n view: Pointer,\n start: number,\n end: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n ) => void\n editorViewResetSelection: (view: Pointer) => void\n editorViewGetSelection: (view: Pointer) => { start: number; end: number } | null\n editorViewSetLocalSelection: (\n view: Pointer,\n anchorX: number,\n anchorY: number,\n focusX: number,\n focusY: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n ) => boolean\n editorViewResetLocalSelection: (view: Pointer) => void\n editorViewGetSelectedTextBytes: (view: Pointer, maxLength: number) => Uint8Array | null\n editorViewGetCursor: (view: Pointer) => { row: number; col: number }\n editorViewGetText: (view: Pointer, maxLength: number) => Uint8Array | null\n editorViewGetVisualCursor: (view: Pointer) => VisualCursor\n editorViewMoveUpVisual: (view: Pointer) => void\n editorViewMoveDownVisual: (view: Pointer) => void\n editorViewDeleteSelectedText: (view: Pointer) => void\n editorViewSetCursorByOffset: (view: Pointer, offset: number) => void\n editorViewGetNextWordBoundary: (view: Pointer) => VisualCursor\n editorViewGetPrevWordBoundary: (view: Pointer) => VisualCursor\n editorViewGetEOL: (view: Pointer) => VisualCursor\n editorViewGetLineInfo: (view: Pointer) => LineInfo\n editorViewGetLogicalLineInfo: (view: Pointer) => LineInfo\n editorViewSetPlaceholderStyledText: (\n view: Pointer,\n chunks: Array<{ text: string; fg?: RGBA | null; bg?: RGBA | null; attributes?: number }>,\n ) => void\n editorViewSetTabIndicator: (view: Pointer, indicator: number) => void\n editorViewSetTabIndicatorColor: (view: Pointer, color: RGBA) => void\n\n bufferPushScissorRect: (buffer: Pointer, x: number, y: number, width: number, height: number) => void\n bufferPopScissorRect: (buffer: Pointer) => void\n bufferClearScissorRects: (buffer: Pointer) => void\n textBufferAddHighlightByCharRange: (buffer: Pointer, highlight: Highlight) => void\n textBufferAddHighlight: (buffer: Pointer, lineIdx: number, highlight: Highlight) => void\n textBufferRemoveHighlightsByRef: (buffer: Pointer, hlRef: number) => void\n textBufferClearLineHighlights: (buffer: Pointer, lineIdx: number) => void\n textBufferClearAllHighlights: (buffer: Pointer) => void\n textBufferSetSyntaxStyle: (buffer: Pointer, style: Pointer | null) => void\n textBufferGetLineHighlights: (buffer: Pointer, lineIdx: number) => Array<Highlight>\n textBufferGetHighlightCount: (buffer: Pointer) => number\n\n getArenaAllocatedBytes: () => number\n\n createSyntaxStyle: () => Pointer\n destroySyntaxStyle: (style: Pointer) => void\n syntaxStyleRegister: (style: Pointer, name: string, fg: RGBA | null, bg: RGBA | null, attributes: number) => number\n syntaxStyleResolveByName: (style: Pointer, name: string) => number | null\n syntaxStyleGetStyleCount: (style: Pointer) => number\n\n getTerminalCapabilities: (renderer: Pointer) => any\n processCapabilityResponse: (renderer: Pointer, response: string) => void\n\n encodeUnicode: (\n text: string,\n widthMethod: WidthMethod,\n ) => { ptr: Pointer; data: Array<{ width: number; char: number }> } | null\n freeUnicode: (encoded: { ptr: Pointer; data: Array<{ width: number; char: number }> }) => void\n bufferDrawChar: (buffer: Pointer, char: number, x: number, y: number, fg: RGBA, bg: RGBA, attributes?: number) => void\n\n onNativeEvent: (name: string, handler: (data: ArrayBuffer) => void) => void\n onceNativeEvent: (name: string, handler: (data: ArrayBuffer) => void) => void\n offNativeEvent: (name: string, handler: (data: ArrayBuffer) => void) => void\n onAnyNativeEvent: (handler: (name: string, data: ArrayBuffer) => void) => void\n}\n\nclass FFIRenderLib implements RenderLib {\n private opentui: ReturnType<typeof getOpenTUILib>\n public readonly encoder: TextEncoder = new TextEncoder()\n public readonly decoder: TextDecoder = new TextDecoder()\n private logCallbackWrapper: any // Store the FFI callback wrapper\n private eventCallbackWrapper: any // Store the FFI event callback wrapper\n private _nativeEvents: EventEmitter = new EventEmitter()\n private _anyEventHandlers: Array<(name: string, data: ArrayBuffer) => void> = []\n\n constructor(libPath?: string) {\n this.opentui = getOpenTUILib(libPath)\n this.setupLogging()\n this.setupEventBus()\n }\n\n private setupLogging() {\n if (this.logCallbackWrapper) {\n return\n }\n\n const logCallback = new JSCallback(\n (level: number, msgPtr: Pointer, msgLenBigInt: bigint | number) => {\n try {\n const msgLen = typeof msgLenBigInt === \"bigint\" ? Number(msgLenBigInt) : msgLenBigInt\n\n if (msgLen === 0 || !msgPtr) {\n return\n }\n\n const msgBuffer = toArrayBuffer(msgPtr, 0, msgLen)\n const msgBytes = new Uint8Array(msgBuffer)\n const message = this.decoder.decode(msgBytes)\n\n switch (level) {\n case LogLevel.Error:\n console.error(message)\n break\n case LogLevel.Warn:\n console.warn(message)\n break\n case LogLevel.Info:\n console.info(message)\n break\n case LogLevel.Debug:\n console.debug(message)\n break\n default:\n console.log(message)\n }\n } catch (error) {\n console.error(\"Error in Zig log callback:\", error)\n }\n },\n {\n args: [\"u8\", \"ptr\", \"usize\"],\n returns: \"void\",\n },\n )\n\n this.logCallbackWrapper = logCallback\n\n if (!logCallback.ptr) {\n throw new Error(\"Failed to create log callback\")\n }\n\n this.setLogCallback(logCallback.ptr)\n }\n\n private setLogCallback(callbackPtr: Pointer) {\n this.opentui.symbols.setLogCallback(callbackPtr)\n }\n\n private setupEventBus() {\n if (this.eventCallbackWrapper) {\n return\n }\n\n const eventCallback = new JSCallback(\n (namePtr: Pointer, nameLenBigInt: bigint | number, dataPtr: Pointer, dataLenBigInt: bigint | number) => {\n try {\n const nameLen = typeof nameLenBigInt === \"bigint\" ? Number(nameLenBigInt) : nameLenBigInt\n const dataLen = typeof dataLenBigInt === \"bigint\" ? Number(dataLenBigInt) : dataLenBigInt\n\n if (nameLen === 0 || !namePtr) {\n return\n }\n\n const nameBuffer = toArrayBuffer(namePtr, 0, nameLen)\n const nameBytes = new Uint8Array(nameBuffer)\n const eventName = this.decoder.decode(nameBytes)\n\n let eventData: ArrayBuffer\n if (dataLen > 0 && dataPtr) {\n eventData = toArrayBuffer(dataPtr, 0, dataLen).slice()\n } else {\n eventData = new ArrayBuffer(0)\n }\n\n queueMicrotask(() => {\n this._nativeEvents.emit(eventName, eventData)\n\n for (const handler of this._anyEventHandlers) {\n handler(eventName, eventData)\n }\n })\n } catch (error) {\n console.error(\"Error in native event callback:\", error)\n }\n },\n {\n args: [\"ptr\", \"usize\", \"ptr\", \"usize\"],\n returns: \"void\",\n },\n )\n\n this.eventCallbackWrapper = eventCallback\n\n if (!eventCallback.ptr) {\n throw new Error(\"Failed to create event callback\")\n }\n\n this.setEventCallback(eventCallback.ptr)\n }\n\n private setEventCallback(callbackPtr: Pointer) {\n this.opentui.symbols.setEventCallback(callbackPtr)\n }\n\n public createRenderer(width: number, height: number, options: { testing: boolean } = { testing: false }) {\n return this.opentui.symbols.createRenderer(width, height, options.testing)\n }\n\n public destroyRenderer(renderer: Pointer): void {\n this.opentui.symbols.destroyRenderer(renderer)\n }\n\n public setUseThread(renderer: Pointer, useThread: boolean) {\n this.opentui.symbols.setUseThread(renderer, useThread)\n }\n\n public setBackgroundColor(renderer: Pointer, color: RGBA) {\n this.opentui.symbols.setBackgroundColor(renderer, color.buffer)\n }\n\n public setRenderOffset(renderer: Pointer, offset: number) {\n this.opentui.symbols.setRenderOffset(renderer, offset)\n }\n\n public updateStats(renderer: Pointer, time: number, fps: number, frameCallbackTime: number) {\n this.opentui.symbols.updateStats(renderer, time, fps, frameCallbackTime)\n }\n\n public updateMemoryStats(renderer: Pointer, heapUsed: number, heapTotal: number, arrayBuffers: number) {\n this.opentui.symbols.updateMemoryStats(renderer, heapUsed, heapTotal, arrayBuffers)\n }\n\n public getNextBuffer(renderer: Pointer): OptimizedBuffer {\n const bufferPtr = this.opentui.symbols.getNextBuffer(renderer)\n if (!bufferPtr) {\n throw new Error(\"Failed to get next buffer\")\n }\n\n const width = this.opentui.symbols.getBufferWidth(bufferPtr)\n const height = this.opentui.symbols.getBufferHeight(bufferPtr)\n\n return new OptimizedBuffer(this, bufferPtr, width, height, { id: \"next buffer\", widthMethod: \"unicode\" })\n }\n\n public getCurrentBuffer(renderer: Pointer): OptimizedBuffer {\n const bufferPtr = this.opentui.symbols.getCurrentBuffer(renderer)\n if (!bufferPtr) {\n throw new Error(\"Failed to get current buffer\")\n }\n\n const width = this.opentui.symbols.getBufferWidth(bufferPtr)\n const height = this.opentui.symbols.getBufferHeight(bufferPtr)\n\n return new OptimizedBuffer(this, bufferPtr, width, height, { id: \"current buffer\", widthMethod: \"unicode\" })\n }\n\n public bufferGetCharPtr(buffer: Pointer): Pointer {\n const ptr = this.opentui.symbols.bufferGetCharPtr(buffer)\n if (!ptr) {\n throw new Error(\"Failed to get char pointer\")\n }\n return ptr\n }\n\n public bufferGetFgPtr(buffer: Pointer): Pointer {\n const ptr = this.opentui.symbols.bufferGetFgPtr(buffer)\n if (!ptr) {\n throw new Error(\"Failed to get fg pointer\")\n }\n return ptr\n }\n\n public bufferGetBgPtr(buffer: Pointer): Pointer {\n const ptr = this.opentui.symbols.bufferGetBgPtr(buffer)\n if (!ptr) {\n throw new Error(\"Failed to get bg pointer\")\n }\n return ptr\n }\n\n public bufferGetAttributesPtr(buffer: Pointer): Pointer {\n const ptr = this.opentui.symbols.bufferGetAttributesPtr(buffer)\n if (!ptr) {\n throw new Error(\"Failed to get attributes pointer\")\n }\n return ptr\n }\n\n public bufferGetRespectAlpha(buffer: Pointer): boolean {\n return this.opentui.symbols.bufferGetRespectAlpha(buffer)\n }\n\n public bufferSetRespectAlpha(buffer: Pointer, respectAlpha: boolean): void {\n this.opentui.symbols.bufferSetRespectAlpha(buffer, respectAlpha)\n }\n\n public bufferGetId(buffer: Pointer): string {\n const maxLen = 256\n const outBuffer = new Uint8Array(maxLen)\n const actualLen = this.opentui.symbols.bufferGetId(buffer, outBuffer, maxLen)\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\n return this.decoder.decode(outBuffer.slice(0, len))\n }\n\n public bufferGetRealCharSize(buffer: Pointer): number {\n return this.opentui.symbols.bufferGetRealCharSize(buffer)\n }\n\n public bufferWriteResolvedChars(buffer: Pointer, outputBuffer: Uint8Array, addLineBreaks: boolean): number {\n const bytesWritten = this.opentui.symbols.bufferWriteResolvedChars(\n buffer,\n outputBuffer,\n outputBuffer.length,\n addLineBreaks,\n )\n return typeof bytesWritten === \"bigint\" ? Number(bytesWritten) : bytesWritten\n }\n\n public getBufferWidth(buffer: Pointer): number {\n return this.opentui.symbols.getBufferWidth(buffer)\n }\n\n public getBufferHeight(buffer: Pointer): number {\n return this.opentui.symbols.getBufferHeight(buffer)\n }\n\n public bufferClear(buffer: Pointer, color: RGBA) {\n this.opentui.symbols.bufferClear(buffer, color.buffer)\n }\n\n public bufferDrawText(\n buffer: Pointer,\n text: string,\n x: number,\n y: number,\n color: RGBA,\n bgColor?: RGBA,\n attributes?: number,\n ) {\n const textBytes = this.encoder.encode(text)\n const textLength = textBytes.byteLength\n const bg = bgColor ? bgColor.buffer : null\n const fg = color.buffer\n\n this.opentui.symbols.bufferDrawText(buffer, textBytes, textLength, x, y, fg, bg, attributes ?? 0)\n }\n\n public bufferSetCellWithAlphaBlending(\n buffer: Pointer,\n x: number,\n y: number,\n char: string,\n color: RGBA,\n bgColor: RGBA,\n attributes?: number,\n ) {\n const charPtr = char.codePointAt(0) ?? \" \".codePointAt(0)!\n const bg = bgColor.buffer\n const fg = color.buffer\n\n this.opentui.symbols.bufferSetCellWithAlphaBlending(buffer, x, y, charPtr, fg, bg, attributes ?? 0)\n }\n\n public bufferSetCell(\n buffer: Pointer,\n x: number,\n y: number,\n char: string,\n color: RGBA,\n bgColor: RGBA,\n attributes?: number,\n ) {\n const charPtr = char.codePointAt(0) ?? \" \".codePointAt(0)!\n const bg = bgColor.buffer\n const fg = color.buffer\n\n this.opentui.symbols.bufferSetCell(buffer, x, y, charPtr, fg, bg, attributes ?? 0)\n }\n\n public bufferFillRect(buffer: Pointer, x: number, y: number, width: number, height: number, color: RGBA) {\n const bg = color.buffer\n this.opentui.symbols.bufferFillRect(buffer, x, y, width, height, bg)\n }\n\n public bufferDrawSuperSampleBuffer(\n buffer: Pointer,\n x: number,\n y: number,\n pixelDataPtr: Pointer,\n pixelDataLength: number,\n format: \"bgra8unorm\" | \"rgba8unorm\",\n alignedBytesPerRow: number,\n ): void {\n const formatId = format === \"bgra8unorm\" ? 0 : 1\n this.opentui.symbols.bufferDrawSuperSampleBuffer(\n buffer,\n x,\n y,\n pixelDataPtr,\n pixelDataLength,\n formatId,\n alignedBytesPerRow,\n )\n }\n\n public bufferDrawPackedBuffer(\n buffer: Pointer,\n dataPtr: Pointer,\n dataLen: number,\n posX: number,\n posY: number,\n terminalWidthCells: number,\n terminalHeightCells: number,\n ): void {\n this.opentui.symbols.bufferDrawPackedBuffer(\n buffer,\n dataPtr,\n dataLen,\n posX,\n posY,\n terminalWidthCells,\n terminalHeightCells,\n )\n }\n\n public bufferDrawBox(\n buffer: Pointer,\n x: number,\n y: number,\n width: number,\n height: number,\n borderChars: Uint32Array,\n packedOptions: number,\n borderColor: RGBA,\n backgroundColor: RGBA,\n title: string | null,\n ): void {\n const titleBytes = title ? this.encoder.encode(title) : null\n const titleLen = title ? titleBytes!.length : 0\n const titlePtr = title ? titleBytes : null\n\n this.opentui.symbols.bufferDrawBox(\n buffer,\n x,\n y,\n width,\n height,\n borderChars,\n packedOptions,\n borderColor.buffer,\n backgroundColor.buffer,\n titlePtr,\n titleLen,\n )\n }\n\n public bufferResize(buffer: Pointer, width: number, height: number): void {\n this.opentui.symbols.bufferResize(buffer, width, height)\n }\n\n public resizeRenderer(renderer: Pointer, width: number, height: number) {\n this.opentui.symbols.resizeRenderer(renderer, width, height)\n }\n\n public setCursorPosition(renderer: Pointer, x: number, y: number, visible: boolean) {\n this.opentui.symbols.setCursorPosition(renderer, x, y, visible)\n }\n\n public setCursorStyle(renderer: Pointer, style: CursorStyle, blinking: boolean) {\n const stylePtr = this.encoder.encode(style)\n this.opentui.symbols.setCursorStyle(renderer, stylePtr, style.length, blinking)\n }\n\n public setCursorColor(renderer: Pointer, color: RGBA) {\n this.opentui.symbols.setCursorColor(renderer, color.buffer)\n }\n\n public render(renderer: Pointer, force: boolean) {\n this.opentui.symbols.render(renderer, force)\n }\n\n public createOptimizedBuffer(\n width: number,\n height: number,\n widthMethod: WidthMethod,\n respectAlpha: boolean = false,\n id?: string,\n ): OptimizedBuffer {\n if (Number.isNaN(width) || Number.isNaN(height)) {\n console.error(new Error(`Invalid dimensions for OptimizedBuffer: ${width}x${height}`).stack)\n }\n\n const widthMethodCode = widthMethod === \"wcwidth\" ? 0 : 1\n const idToUse = id || \"unnamed buffer\"\n const idBytes = this.encoder.encode(idToUse)\n const bufferPtr = this.opentui.symbols.createOptimizedBuffer(\n width,\n height,\n respectAlpha,\n widthMethodCode,\n idBytes,\n idBytes.length,\n )\n if (!bufferPtr) {\n throw new Error(`Failed to create optimized buffer: ${width}x${height}`)\n }\n\n return new OptimizedBuffer(this, bufferPtr, width, height, { respectAlpha, id, widthMethod })\n }\n\n public destroyOptimizedBuffer(bufferPtr: Pointer) {\n this.opentui.symbols.destroyOptimizedBuffer(bufferPtr)\n }\n\n public drawFrameBuffer(\n targetBufferPtr: Pointer,\n destX: number,\n destY: number,\n bufferPtr: Pointer,\n sourceX?: number,\n sourceY?: number,\n sourceWidth?: number,\n sourceHeight?: number,\n ) {\n const srcX = sourceX ?? 0\n const srcY = sourceY ?? 0\n const srcWidth = sourceWidth ?? 0\n const srcHeight = sourceHeight ?? 0\n this.opentui.symbols.drawFrameBuffer(targetBufferPtr, destX, destY, bufferPtr, srcX, srcY, srcWidth, srcHeight)\n }\n\n public setDebugOverlay(renderer: Pointer, enabled: boolean, corner: DebugOverlayCorner) {\n this.opentui.symbols.setDebugOverlay(renderer, enabled, corner)\n }\n\n public clearTerminal(renderer: Pointer) {\n this.opentui.symbols.clearTerminal(renderer)\n }\n\n public setTerminalTitle(renderer: Pointer, title: string) {\n const titleBytes = this.encoder.encode(title)\n this.opentui.symbols.setTerminalTitle(renderer, titleBytes, titleBytes.length)\n }\n\n public addToHitGrid(renderer: Pointer, x: number, y: number, width: number, height: number, id: number) {\n this.opentui.symbols.addToHitGrid(renderer, x, y, width, height, id)\n }\n\n public checkHit(renderer: Pointer, x: number, y: number): number {\n return this.opentui.symbols.checkHit(renderer, x, y)\n }\n\n public dumpHitGrid(renderer: Pointer): void {\n this.opentui.symbols.dumpHitGrid(renderer)\n }\n\n public dumpBuffers(renderer: Pointer, timestamp?: number): void {\n const ts = timestamp ?? Date.now()\n this.opentui.symbols.dumpBuffers(renderer, ts)\n }\n\n public dumpStdoutBuffer(renderer: Pointer, timestamp?: number): void {\n const ts = timestamp ?? Date.now()\n this.opentui.symbols.dumpStdoutBuffer(renderer, ts)\n }\n\n public enableMouse(renderer: Pointer, enableMovement: boolean): void {\n this.opentui.symbols.enableMouse(renderer, enableMovement)\n }\n\n public disableMouse(renderer: Pointer): void {\n this.opentui.symbols.disableMouse(renderer)\n }\n\n public enableKittyKeyboard(renderer: Pointer, flags: number): void {\n this.opentui.symbols.enableKittyKeyboard(renderer, flags)\n }\n\n public disableKittyKeyboard(renderer: Pointer): void {\n this.opentui.symbols.disableKittyKeyboard(renderer)\n }\n\n public setUseKittyKeyboard(renderer: Pointer, use: boolean): void {\n this.opentui.symbols.setUseKittyKeyboard(renderer, use)\n }\n\n public getUseKittyKeyboard(renderer: Pointer): boolean {\n return this.opentui.symbols.getUseKittyKeyboard(renderer)\n }\n\n public setupTerminal(renderer: Pointer, useAlternateScreen: boolean): void {\n this.opentui.symbols.setupTerminal(renderer, useAlternateScreen)\n }\n\n public suspendRenderer(renderer: Pointer): void {\n this.opentui.symbols.suspendRenderer(renderer)\n }\n\n public resumeRenderer(renderer: Pointer): void {\n this.opentui.symbols.resumeRenderer(renderer)\n }\n\n public queryPixelResolution(renderer: Pointer): void {\n this.opentui.symbols.queryPixelResolution(renderer)\n }\n\n // TextBuffer methods\n public createTextBuffer(widthMethod: WidthMethod): TextBuffer {\n const widthMethodCode = widthMethod === \"wcwidth\" ? 0 : 1\n const bufferPtr = this.opentui.symbols.createTextBuffer(widthMethodCode)\n if (!bufferPtr) {\n throw new Error(`Failed to create TextBuffer`)\n }\n\n return new TextBuffer(this, bufferPtr)\n }\n\n public destroyTextBuffer(buffer: Pointer): void {\n this.opentui.symbols.destroyTextBuffer(buffer)\n }\n\n public textBufferGetLength(buffer: Pointer): number {\n return this.opentui.symbols.textBufferGetLength(buffer)\n }\n\n public textBufferGetByteSize(buffer: Pointer): number {\n return this.opentui.symbols.textBufferGetByteSize(buffer)\n }\n\n public textBufferReset(buffer: Pointer): void {\n this.opentui.symbols.textBufferReset(buffer)\n }\n\n public textBufferClear(buffer: Pointer): void {\n this.opentui.symbols.textBufferClear(buffer)\n }\n\n public textBufferSetDefaultFg(buffer: Pointer, fg: RGBA | null): void {\n const fgPtr = fg ? fg.buffer : null\n this.opentui.symbols.textBufferSetDefaultFg(buffer, fgPtr)\n }\n\n public textBufferSetDefaultBg(buffer: Pointer, bg: RGBA | null): void {\n const bgPtr = bg ? bg.buffer : null\n this.opentui.symbols.textBufferSetDefaultBg(buffer, bgPtr)\n }\n\n public textBufferSetDefaultAttributes(buffer: Pointer, attributes: number | null): void {\n const attrValue = attributes === null ? null : new Uint8Array([attributes])\n this.opentui.symbols.textBufferSetDefaultAttributes(buffer, attrValue)\n }\n\n public textBufferResetDefaults(buffer: Pointer): void {\n this.opentui.symbols.textBufferResetDefaults(buffer)\n }\n\n public textBufferGetTabWidth(buffer: Pointer): number {\n return this.opentui.symbols.textBufferGetTabWidth(buffer)\n }\n\n public textBufferSetTabWidth(buffer: Pointer, width: number): void {\n this.opentui.symbols.textBufferSetTabWidth(buffer, width)\n }\n\n public textBufferRegisterMemBuffer(buffer: Pointer, bytes: Uint8Array, owned: boolean = false): number {\n const result = this.opentui.symbols.textBufferRegisterMemBuffer(buffer, bytes, bytes.length, owned)\n if (result === 0xffff) {\n throw new Error(\"Failed to register memory buffer\")\n }\n return result\n }\n\n public textBufferReplaceMemBuffer(\n buffer: Pointer,\n memId: number,\n bytes: Uint8Array,\n owned: boolean = false,\n ): boolean {\n return this.opentui.symbols.textBufferReplaceMemBuffer(buffer, memId, bytes, bytes.length, owned)\n }\n\n public textBufferClearMemRegistry(buffer: Pointer): void {\n this.opentui.symbols.textBufferClearMemRegistry(buffer)\n }\n\n public textBufferSetTextFromMem(buffer: Pointer, memId: number): void {\n this.opentui.symbols.textBufferSetTextFromMem(buffer, memId)\n }\n\n public textBufferAppend(buffer: Pointer, bytes: Uint8Array): void {\n this.opentui.symbols.textBufferAppend(buffer, bytes, bytes.length)\n }\n\n public textBufferAppendFromMemId(buffer: Pointer, memId: number): void {\n this.opentui.symbols.textBufferAppendFromMemId(buffer, memId)\n }\n\n public textBufferLoadFile(buffer: Pointer, path: string): boolean {\n const pathBytes = this.encoder.encode(path)\n return this.opentui.symbols.textBufferLoadFile(buffer, pathBytes, pathBytes.length)\n }\n\n public textBufferSetStyledText(\n buffer: Pointer,\n chunks: Array<{ text: string; fg?: RGBA | null; bg?: RGBA | null; attributes?: number }>,\n ): void {\n // TODO: This should be a filter on the struct packing to not iterate twice\n const nonEmptyChunks = chunks.filter((c) => c.text.length > 0)\n if (nonEmptyChunks.length === 0) {\n this.textBufferClear(buffer)\n return\n }\n\n const chunksBuffer = StyledChunkStruct.packList(nonEmptyChunks)\n\n this.opentui.symbols.textBufferSetStyledText(buffer, ptr(chunksBuffer), nonEmptyChunks.length)\n }\n\n public textBufferGetLineCount(buffer: Pointer): number {\n return this.opentui.symbols.textBufferGetLineCount(buffer)\n }\n\n private textBufferGetPlainText(buffer: Pointer, outPtr: Pointer, maxLen: number): number {\n const result = this.opentui.symbols.textBufferGetPlainText(buffer, outPtr, maxLen)\n return typeof result === \"bigint\" ? Number(result) : result\n }\n\n public getPlainTextBytes(buffer: Pointer, maxLength: number): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n\n const actualLen = this.textBufferGetPlainText(buffer, ptr(outBuffer), maxLength)\n\n if (actualLen === 0) {\n return null\n }\n\n return outBuffer.slice(0, actualLen)\n }\n\n public textBufferGetTextRange(\n buffer: Pointer,\n startOffset: number,\n endOffset: number,\n maxLength: number,\n ): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n\n const actualLen = this.opentui.symbols.textBufferGetTextRange(\n buffer,\n startOffset,\n endOffset,\n ptr(outBuffer),\n maxLength,\n )\n\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\n\n if (len === 0) {\n return null\n }\n\n return outBuffer.slice(0, len)\n }\n\n public textBufferGetTextRangeByCoords(\n buffer: Pointer,\n startRow: number,\n startCol: number,\n endRow: number,\n endCol: number,\n maxLength: number,\n ): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n\n const actualLen = this.opentui.symbols.textBufferGetTextRangeByCoords(\n buffer,\n startRow,\n startCol,\n endRow,\n endCol,\n ptr(outBuffer),\n maxLength,\n )\n\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\n\n if (len === 0) {\n return null\n }\n\n return outBuffer.slice(0, len)\n }\n\n // TextBufferView methods\n public createTextBufferView(textBuffer: Pointer): Pointer {\n const viewPtr = this.opentui.symbols.createTextBufferView(textBuffer)\n if (!viewPtr) {\n throw new Error(\"Failed to create TextBufferView\")\n }\n return viewPtr\n }\n\n public destroyTextBufferView(view: Pointer): void {\n this.opentui.symbols.destroyTextBufferView(view)\n }\n\n public textBufferViewSetSelection(\n view: Pointer,\n start: number,\n end: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n ): void {\n const bg = bgColor ? bgColor.buffer : null\n const fg = fgColor ? fgColor.buffer : null\n this.opentui.symbols.textBufferViewSetSelection(view, start, end, bg, fg)\n }\n\n public textBufferViewResetSelection(view: Pointer): void {\n this.opentui.symbols.textBufferViewResetSelection(view)\n }\n\n public textBufferViewGetSelection(view: Pointer): { start: number; end: number } | null {\n const packedInfo = this.textBufferViewGetSelectionInfo(view)\n\n // Check for no selection marker (0xFFFFFFFF_FFFFFFFF)\n if (packedInfo === 0xffff_ffff_ffff_ffffn) {\n return null\n }\n\n const start = Number(packedInfo >> 32n)\n const end = Number(packedInfo & 0xffff_ffffn)\n\n return { start, end }\n }\n\n private textBufferViewGetSelectionInfo(view: Pointer): bigint {\n return this.opentui.symbols.textBufferViewGetSelectionInfo(view)\n }\n\n public textBufferViewSetLocalSelection(\n view: Pointer,\n anchorX: number,\n anchorY: number,\n focusX: number,\n focusY: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n ): boolean {\n const bg = bgColor ? bgColor.buffer : null\n const fg = fgColor ? fgColor.buffer : null\n return this.opentui.symbols.textBufferViewSetLocalSelection(view, anchorX, anchorY, focusX, focusY, bg, fg)\n }\n\n public textBufferViewResetLocalSelection(view: Pointer): void {\n this.opentui.symbols.textBufferViewResetLocalSelection(view)\n }\n\n public textBufferViewSetWrapWidth(view: Pointer, width: number): void {\n this.opentui.symbols.textBufferViewSetWrapWidth(view, width)\n }\n\n public textBufferViewSetWrapMode(view: Pointer, mode: \"none\" | \"char\" | \"word\"): void {\n const modeValue = mode === \"none\" ? 0 : mode === \"char\" ? 1 : 2\n this.opentui.symbols.textBufferViewSetWrapMode(view, modeValue)\n }\n\n public textBufferViewSetViewportSize(view: Pointer, width: number, height: number): void {\n this.opentui.symbols.textBufferViewSetViewportSize(view, width, height)\n }\n\n public textBufferViewSetViewport(view: Pointer, x: number, y: number, width: number, height: number): void {\n this.opentui.symbols.textBufferViewSetViewport(view, x, y, width, height)\n }\n\n public textBufferViewGetLineInfo(view: Pointer): LineInfo {\n const outBuffer = new ArrayBuffer(LineInfoStruct.size)\n this.textBufferViewGetLineInfoDirect(view, ptr(outBuffer))\n const struct = LineInfoStruct.unpack(outBuffer)\n return {\n maxLineWidth: struct.maxWidth,\n lineStarts: struct.starts as number[],\n lineWidths: struct.widths as number[],\n lineSources: struct.sources as number[],\n lineWraps: struct.wraps as number[],\n }\n }\n\n public textBufferViewGetLogicalLineInfo(view: Pointer): LineInfo {\n const outBuffer = new ArrayBuffer(LineInfoStruct.size)\n this.textBufferViewGetLogicalLineInfoDirect(view, ptr(outBuffer))\n const struct = LineInfoStruct.unpack(outBuffer)\n return {\n maxLineWidth: struct.maxWidth,\n lineStarts: struct.starts as number[],\n lineWidths: struct.widths as number[],\n lineSources: struct.sources as number[],\n lineWraps: struct.wraps as number[],\n }\n }\n\n public textBufferViewGetVirtualLineCount(view: Pointer): number {\n return this.opentui.symbols.textBufferViewGetVirtualLineCount(view)\n }\n\n private textBufferViewGetLineInfoDirect(view: Pointer, outPtr: Pointer): void {\n this.opentui.symbols.textBufferViewGetLineInfoDirect(view, outPtr)\n }\n\n private textBufferViewGetLogicalLineInfoDirect(view: Pointer, outPtr: Pointer): void {\n this.opentui.symbols.textBufferViewGetLogicalLineInfoDirect(view, outPtr)\n }\n\n private textBufferViewGetSelectedText(view: Pointer, outPtr: Pointer, maxLen: number): number {\n const result = this.opentui.symbols.textBufferViewGetSelectedText(view, outPtr, maxLen)\n return typeof result === \"bigint\" ? Number(result) : result\n }\n\n private textBufferViewGetPlainText(view: Pointer, outPtr: Pointer, maxLen: number): number {\n const result = this.opentui.symbols.textBufferViewGetPlainText(view, outPtr, maxLen)\n return typeof result === \"bigint\" ? Number(result) : result\n }\n\n public textBufferViewGetSelectedTextBytes(view: Pointer, maxLength: number): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n\n const actualLen = this.textBufferViewGetSelectedText(view, ptr(outBuffer), maxLength)\n\n if (actualLen === 0) {\n return null\n }\n\n return outBuffer.slice(0, actualLen)\n }\n\n public textBufferViewGetPlainTextBytes(view: Pointer, maxLength: number): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n\n const actualLen = this.textBufferViewGetPlainText(view, ptr(outBuffer), maxLength)\n\n if (actualLen === 0) {\n return null\n }\n\n return outBuffer.slice(0, actualLen)\n }\n\n public textBufferViewSetTabIndicator(view: Pointer, indicator: number): void {\n this.opentui.symbols.textBufferViewSetTabIndicator(view, indicator)\n }\n\n public textBufferViewSetTabIndicatorColor(view: Pointer, color: RGBA): void {\n this.opentui.symbols.textBufferViewSetTabIndicatorColor(view, color.buffer)\n }\n\n public textBufferViewMeasureForDimensions(\n view: Pointer,\n width: number,\n height: number,\n ): { lineCount: number; maxWidth: number } | null {\n const resultBuffer = new ArrayBuffer(MeasureResultStruct.size)\n const resultPtr = ptr(new Uint8Array(resultBuffer))\n const success = this.opentui.symbols.textBufferViewMeasureForDimensions(view, width, height, resultPtr)\n if (!success) {\n return null\n }\n const result = MeasureResultStruct.unpack(resultBuffer)\n return result\n }\n\n public textBufferAddHighlightByCharRange(buffer: Pointer, highlight: Highlight): void {\n const packedHighlight = HighlightStruct.pack(highlight)\n this.opentui.symbols.textBufferAddHighlightByCharRange(buffer, ptr(packedHighlight))\n }\n\n public textBufferAddHighlight(buffer: Pointer, lineIdx: number, highlight: Highlight): void {\n const packedHighlight = HighlightStruct.pack(highlight)\n this.opentui.symbols.textBufferAddHighlight(buffer, lineIdx, ptr(packedHighlight))\n }\n\n public textBufferRemoveHighlightsByRef(buffer: Pointer, hlRef: number): void {\n this.opentui.symbols.textBufferRemoveHighlightsByRef(buffer, hlRef)\n }\n\n public textBufferClearLineHighlights(buffer: Pointer, lineIdx: number): void {\n this.opentui.symbols.textBufferClearLineHighlights(buffer, lineIdx)\n }\n\n public textBufferClearAllHighlights(buffer: Pointer): void {\n this.opentui.symbols.textBufferClearAllHighlights(buffer)\n }\n\n public textBufferSetSyntaxStyle(buffer: Pointer, style: Pointer | null): void {\n this.opentui.symbols.textBufferSetSyntaxStyle(buffer, style)\n }\n\n public textBufferGetLineHighlights(buffer: Pointer, lineIdx: number): Array<Highlight> {\n const outCountBuf = new BigUint64Array(1)\n\n const nativePtr = this.opentui.symbols.textBufferGetLineHighlightsPtr(buffer, lineIdx, ptr(outCountBuf))\n if (!nativePtr) return []\n\n const count = Number(outCountBuf[0])\n const byteLen = count * HighlightStruct.size\n const raw = toArrayBuffer(nativePtr, 0, byteLen)\n const results = HighlightStruct.unpackList(raw, count)\n\n this.opentui.symbols.textBufferFreeLineHighlights(nativePtr, count)\n\n return results\n }\n\n public textBufferGetHighlightCount(buffer: Pointer): number {\n return this.opentui.symbols.textBufferGetHighlightCount(buffer)\n }\n\n public getArenaAllocatedBytes(): number {\n const result = this.opentui.symbols.getArenaAllocatedBytes()\n return typeof result === \"bigint\" ? Number(result) : result\n }\n\n public bufferDrawTextBufferView(buffer: Pointer, view: Pointer, x: number, y: number): void {\n this.opentui.symbols.bufferDrawTextBufferView(buffer, view, x, y)\n }\n\n public bufferDrawEditorView(buffer: Pointer, view: Pointer, x: number, y: number): void {\n this.opentui.symbols.bufferDrawEditorView(buffer, view, x, y)\n }\n\n // EditorView methods\n public createEditorView(editBufferPtr: Pointer, viewportWidth: number, viewportHeight: number): Pointer {\n const viewPtr = this.opentui.symbols.createEditorView(editBufferPtr, viewportWidth, viewportHeight)\n if (!viewPtr) {\n throw new Error(\"Failed to create EditorView\")\n }\n return viewPtr\n }\n\n public destroyEditorView(view: Pointer): void {\n this.opentui.symbols.destroyEditorView(view)\n }\n\n public editorViewSetViewportSize(view: Pointer, width: number, height: number): void {\n this.opentui.symbols.editorViewSetViewportSize(view, width, height)\n }\n\n public editorViewGetViewport(view: Pointer): { offsetY: number; offsetX: number; height: number; width: number } {\n const x = new Uint32Array(1)\n const y = new Uint32Array(1)\n const width = new Uint32Array(1)\n const height = new Uint32Array(1)\n\n this.opentui.symbols.editorViewGetViewport(view, ptr(x), ptr(y), ptr(width), ptr(height))\n\n return {\n offsetX: x[0],\n offsetY: y[0],\n width: width[0],\n height: height[0],\n }\n }\n\n public editorViewSetScrollMargin(view: Pointer, margin: number): void {\n this.opentui.symbols.editorViewSetScrollMargin(view, margin)\n }\n\n public editorViewSetWrapMode(view: Pointer, mode: \"none\" | \"char\" | \"word\"): void {\n const modeValue = mode === \"none\" ? 0 : mode === \"char\" ? 1 : 2\n this.opentui.symbols.editorViewSetWrapMode(view, modeValue)\n }\n\n public editorViewGetVirtualLineCount(view: Pointer): number {\n return this.opentui.symbols.editorViewGetVirtualLineCount(view)\n }\n\n public editorViewGetTotalVirtualLineCount(view: Pointer): number {\n return this.opentui.symbols.editorViewGetTotalVirtualLineCount(view)\n }\n\n public editorViewGetTextBufferView(view: Pointer): Pointer {\n const result = this.opentui.symbols.editorViewGetTextBufferView(view)\n if (!result) {\n throw new Error(\"Failed to get TextBufferView from EditorView\")\n }\n return result\n }\n\n public editorViewGetLineInfo(view: Pointer): LineInfo {\n const outBuffer = new ArrayBuffer(LineInfoStruct.size)\n this.opentui.symbols.editorViewGetLineInfoDirect(view, ptr(outBuffer))\n const struct = LineInfoStruct.unpack(outBuffer)\n return {\n maxLineWidth: struct.maxWidth,\n lineStarts: struct.starts as number[],\n lineWidths: struct.widths as number[],\n lineSources: struct.sources as number[],\n lineWraps: struct.wraps as number[],\n }\n }\n\n public editorViewGetLogicalLineInfo(view: Pointer): LineInfo {\n const outBuffer = new ArrayBuffer(LineInfoStruct.size)\n this.opentui.symbols.editorViewGetLogicalLineInfoDirect(view, ptr(outBuffer))\n const struct = LineInfoStruct.unpack(outBuffer)\n return {\n maxLineWidth: struct.maxWidth,\n lineStarts: struct.starts as number[],\n lineWidths: struct.widths as number[],\n lineSources: struct.sources as number[],\n lineWraps: struct.wraps as number[],\n }\n }\n\n // EditBuffer implementations\n public createEditBuffer(widthMethod: WidthMethod): Pointer {\n const widthMethodCode = widthMethod === \"wcwidth\" ? 0 : 1\n const bufferPtr = this.opentui.symbols.createEditBuffer(widthMethodCode)\n if (!bufferPtr) {\n throw new Error(\"Failed to create EditBuffer\")\n }\n return bufferPtr\n }\n\n public destroyEditBuffer(buffer: Pointer): void {\n this.opentui.symbols.destroyEditBuffer(buffer)\n }\n\n public editBufferSetText(buffer: Pointer, textBytes: Uint8Array, retainHistory: boolean = true): void {\n this.opentui.symbols.editBufferSetText(buffer, textBytes, textBytes.length, retainHistory)\n }\n\n public editBufferSetTextFromMem(buffer: Pointer, memId: number, retainHistory: boolean = true): void {\n this.opentui.symbols.editBufferSetTextFromMem(buffer, memId, retainHistory)\n }\n\n public editBufferGetText(buffer: Pointer, maxLength: number): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n const actualLen = this.opentui.symbols.editBufferGetText(buffer, ptr(outBuffer), maxLength)\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\n if (len === 0) return null\n return outBuffer.slice(0, len)\n }\n\n public editBufferInsertChar(buffer: Pointer, char: string): void {\n const charBytes = this.encoder.encode(char)\n this.opentui.symbols.editBufferInsertChar(buffer, charBytes, charBytes.length)\n }\n\n public editBufferInsertText(buffer: Pointer, text: string): void {\n const textBytes = this.encoder.encode(text)\n this.opentui.symbols.editBufferInsertText(buffer, textBytes, textBytes.length)\n }\n\n public editBufferDeleteChar(buffer: Pointer): void {\n this.opentui.symbols.editBufferDeleteChar(buffer)\n }\n\n public editBufferDeleteCharBackward(buffer: Pointer): void {\n this.opentui.symbols.editBufferDeleteCharBackward(buffer)\n }\n\n public editBufferDeleteRange(\n buffer: Pointer,\n startLine: number,\n startCol: number,\n endLine: number,\n endCol: number,\n ): void {\n this.opentui.symbols.editBufferDeleteRange(buffer, startLine, startCol, endLine, endCol)\n }\n\n public editBufferNewLine(buffer: Pointer): void {\n this.opentui.symbols.editBufferNewLine(buffer)\n }\n\n public editBufferDeleteLine(buffer: Pointer): void {\n this.opentui.symbols.editBufferDeleteLine(buffer)\n }\n\n public editBufferMoveCursorLeft(buffer: Pointer): void {\n this.opentui.symbols.editBufferMoveCursorLeft(buffer)\n }\n\n public editBufferMoveCursorRight(buffer: Pointer): void {\n this.opentui.symbols.editBufferMoveCursorRight(buffer)\n }\n\n public editBufferMoveCursorUp(buffer: Pointer): void {\n this.opentui.symbols.editBufferMoveCursorUp(buffer)\n }\n\n public editBufferMoveCursorDown(buffer: Pointer): void {\n this.opentui.symbols.editBufferMoveCursorDown(buffer)\n }\n\n public editBufferGotoLine(buffer: Pointer, line: number): void {\n this.opentui.symbols.editBufferGotoLine(buffer, line)\n }\n\n public editBufferSetCursor(buffer: Pointer, line: number, byteOffset: number): void {\n this.opentui.symbols.editBufferSetCursor(buffer, line, byteOffset)\n }\n\n public editBufferSetCursorToLineCol(buffer: Pointer, line: number, col: number): void {\n this.opentui.symbols.editBufferSetCursorToLineCol(buffer, line, col)\n }\n\n public editBufferSetCursorByOffset(buffer: Pointer, offset: number): void {\n this.opentui.symbols.editBufferSetCursorByOffset(buffer, offset)\n }\n\n public editBufferGetCursorPosition(buffer: Pointer): LogicalCursor {\n const cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size)\n this.opentui.symbols.editBufferGetCursorPosition(buffer, ptr(cursorBuffer))\n return LogicalCursorStruct.unpack(cursorBuffer)\n }\n\n public editBufferGetId(buffer: Pointer): number {\n return this.opentui.symbols.editBufferGetId(buffer)\n }\n\n public editBufferGetTextBuffer(buffer: Pointer): Pointer {\n const result = this.opentui.symbols.editBufferGetTextBuffer(buffer)\n if (!result) {\n throw new Error(\"Failed to get TextBuffer from EditBuffer\")\n }\n return result\n }\n\n public editBufferDebugLogRope(buffer: Pointer): void {\n this.opentui.symbols.editBufferDebugLogRope(buffer)\n }\n\n public editBufferUndo(buffer: Pointer, maxLength: number): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n const actualLen = this.opentui.symbols.editBufferUndo(buffer, ptr(outBuffer), maxLength)\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\n if (len === 0) return null\n return outBuffer.slice(0, len)\n }\n\n public editBufferRedo(buffer: Pointer, maxLength: number): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n const actualLen = this.opentui.symbols.editBufferRedo(buffer, ptr(outBuffer), maxLength)\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\n if (len === 0) return null\n return outBuffer.slice(0, len)\n }\n\n public editBufferCanUndo(buffer: Pointer): boolean {\n return this.opentui.symbols.editBufferCanUndo(buffer)\n }\n\n public editBufferCanRedo(buffer: Pointer): boolean {\n return this.opentui.symbols.editBufferCanRedo(buffer)\n }\n\n public editBufferClearHistory(buffer: Pointer): void {\n this.opentui.symbols.editBufferClearHistory(buffer)\n }\n\n public editBufferClear(buffer: Pointer): void {\n this.opentui.symbols.editBufferClear(buffer)\n }\n\n public editBufferGetNextWordBoundary(buffer: Pointer): LogicalCursor {\n const cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size)\n this.opentui.symbols.editBufferGetNextWordBoundary(buffer, ptr(cursorBuffer))\n return LogicalCursorStruct.unpack(cursorBuffer)\n }\n\n public editBufferGetPrevWordBoundary(buffer: Pointer): LogicalCursor {\n const cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size)\n this.opentui.symbols.editBufferGetPrevWordBoundary(buffer, ptr(cursorBuffer))\n return LogicalCursorStruct.unpack(cursorBuffer)\n }\n\n public editBufferGetEOL(buffer: Pointer): LogicalCursor {\n const cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size)\n this.opentui.symbols.editBufferGetEOL(buffer, ptr(cursorBuffer))\n return LogicalCursorStruct.unpack(cursorBuffer)\n }\n\n public editBufferOffsetToPosition(buffer: Pointer, offset: number): LogicalCursor | null {\n const cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size)\n const success = this.opentui.symbols.editBufferOffsetToPosition(buffer, offset, ptr(cursorBuffer))\n if (!success) return null\n return LogicalCursorStruct.unpack(cursorBuffer)\n }\n\n public editBufferPositionToOffset(buffer: Pointer, row: number, col: number): number {\n return this.opentui.symbols.editBufferPositionToOffset(buffer, row, col)\n }\n\n public editBufferGetLineStartOffset(buffer: Pointer, row: number): number {\n return this.opentui.symbols.editBufferGetLineStartOffset(buffer, row)\n }\n\n public editBufferGetTextRange(\n buffer: Pointer,\n startOffset: number,\n endOffset: number,\n maxLength: number,\n ): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n const actualLen = this.opentui.symbols.editBufferGetTextRange(\n buffer,\n startOffset,\n endOffset,\n ptr(outBuffer),\n maxLength,\n )\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\n if (len === 0) return null\n return outBuffer.slice(0, len)\n }\n\n public editBufferGetTextRangeByCoords(\n buffer: Pointer,\n startRow: number,\n startCol: number,\n endRow: number,\n endCol: number,\n maxLength: number,\n ): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n const actualLen = this.opentui.symbols.editBufferGetTextRangeByCoords(\n buffer,\n startRow,\n startCol,\n endRow,\n endCol,\n ptr(outBuffer),\n maxLength,\n )\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\n if (len === 0) return null\n return outBuffer.slice(0, len)\n }\n\n // EditorView selection and editing implementations\n public editorViewSetSelection(\n view: Pointer,\n start: number,\n end: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n ): void {\n const bg = bgColor ? bgColor.buffer : null\n const fg = fgColor ? fgColor.buffer : null\n this.opentui.symbols.editorViewSetSelection(view, start, end, bg, fg)\n }\n\n public editorViewResetSelection(view: Pointer): void {\n this.opentui.symbols.editorViewResetSelection(view)\n }\n\n public editorViewGetSelection(view: Pointer): { start: number; end: number } | null {\n const packedInfo = this.opentui.symbols.editorViewGetSelection(view)\n if (packedInfo === 0xffff_ffff_ffff_ffffn) {\n return null\n }\n const start = Number(packedInfo >> 32n)\n const end = Number(packedInfo & 0xffff_ffffn)\n return { start, end }\n }\n\n public editorViewSetLocalSelection(\n view: Pointer,\n anchorX: number,\n anchorY: number,\n focusX: number,\n focusY: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n ): boolean {\n const bg = bgColor ? bgColor.buffer : null\n const fg = fgColor ? fgColor.buffer : null\n return this.opentui.symbols.editorViewSetLocalSelection(view, anchorX, anchorY, focusX, focusY, bg, fg)\n }\n\n public editorViewResetLocalSelection(view: Pointer): void {\n this.opentui.symbols.editorViewResetLocalSelection(view)\n }\n\n public editorViewGetSelectedTextBytes(view: Pointer, maxLength: number): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n const actualLen = this.opentui.symbols.editorViewGetSelectedTextBytes(view, ptr(outBuffer), maxLength)\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\n if (len === 0) return null\n return outBuffer.slice(0, len)\n }\n\n public editorViewGetCursor(view: Pointer): { row: number; col: number } {\n const row = new Uint32Array(1)\n const col = new Uint32Array(1)\n this.opentui.symbols.editorViewGetCursor(view, ptr(row), ptr(col))\n return { row: row[0], col: col[0] }\n }\n\n public editorViewGetText(view: Pointer, maxLength: number): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n const actualLen = this.opentui.symbols.editorViewGetText(view, ptr(outBuffer), maxLength)\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\n if (len === 0) return null\n return outBuffer.slice(0, len)\n }\n\n public editorViewGetVisualCursor(view: Pointer): VisualCursor {\n const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size)\n this.opentui.symbols.editorViewGetVisualCursor(view, ptr(cursorBuffer))\n return VisualCursorStruct.unpack(cursorBuffer)\n }\n\n public editorViewMoveUpVisual(view: Pointer): void {\n this.opentui.symbols.editorViewMoveUpVisual(view)\n }\n\n public editorViewMoveDownVisual(view: Pointer): void {\n this.opentui.symbols.editorViewMoveDownVisual(view)\n }\n\n public editorViewDeleteSelectedText(view: Pointer): void {\n this.opentui.symbols.editorViewDeleteSelectedText(view)\n }\n\n public editorViewSetCursorByOffset(view: Pointer, offset: number): void {\n this.opentui.symbols.editorViewSetCursorByOffset(view, offset)\n }\n\n public editorViewGetNextWordBoundary(view: Pointer): VisualCursor {\n const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size)\n this.opentui.symbols.editorViewGetNextWordBoundary(view, ptr(cursorBuffer))\n return VisualCursorStruct.unpack(cursorBuffer)\n }\n\n public editorViewGetPrevWordBoundary(view: Pointer): VisualCursor {\n const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size)\n this.opentui.symbols.editorViewGetPrevWordBoundary(view, ptr(cursorBuffer))\n return VisualCursorStruct.unpack(cursorBuffer)\n }\n\n public editorViewGetEOL(view: Pointer): VisualCursor {\n const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size)\n this.opentui.symbols.editorViewGetEOL(view, ptr(cursorBuffer))\n return VisualCursorStruct.unpack(cursorBuffer)\n }\n\n public bufferPushScissorRect(buffer: Pointer, x: number, y: number, width: number, height: number): void {\n this.opentui.symbols.bufferPushScissorRect(buffer, x, y, width, height)\n }\n\n public bufferPopScissorRect(buffer: Pointer): void {\n this.opentui.symbols.bufferPopScissorRect(buffer)\n }\n\n public bufferClearScissorRects(buffer: Pointer): void {\n this.opentui.symbols.bufferClearScissorRects(buffer)\n }\n\n public getTerminalCapabilities(renderer: Pointer) {\n const capsBuffer = new ArrayBuffer(TerminalCapabilitiesStruct.size)\n this.opentui.symbols.getTerminalCapabilities(renderer, ptr(capsBuffer))\n\n const caps = TerminalCapabilitiesStruct.unpack(capsBuffer)\n\n return {\n kitty_keyboard: caps.kitty_keyboard,\n kitty_graphics: caps.kitty_graphics,\n rgb: caps.rgb,\n unicode: caps.unicode,\n sgr_pixels: caps.sgr_pixels,\n color_scheme_updates: caps.color_scheme_updates,\n explicit_width: caps.explicit_width,\n scaled_text: caps.scaled_text,\n sixel: caps.sixel,\n focus_tracking: caps.focus_tracking,\n sync: caps.sync,\n bracketed_paste: caps.bracketed_paste,\n hyperlinks: caps.hyperlinks,\n terminal: {\n name: caps.term_name ?? \"\",\n version: caps.term_version ?? \"\",\n from_xtversion: caps.term_from_xtversion,\n },\n }\n }\n\n public processCapabilityResponse(renderer: Pointer, response: string): void {\n const responseBytes = this.encoder.encode(response)\n this.opentui.symbols.processCapabilityResponse(renderer, responseBytes, responseBytes.length)\n }\n\n public encodeUnicode(\n text: string,\n widthMethod: WidthMethod,\n ): { ptr: Pointer; data: Array<{ width: number; char: number }> } | null {\n const textBytes = this.encoder.encode(text)\n const widthMethodCode = widthMethod === \"wcwidth\" ? 0 : 1\n\n const outPtrBuffer = new ArrayBuffer(8) // Pointer size\n const outLenBuffer = new ArrayBuffer(8) // usize\n\n const success = this.opentui.symbols.encodeUnicode(\n textBytes,\n textBytes.length,\n ptr(outPtrBuffer),\n ptr(outLenBuffer),\n widthMethodCode,\n )\n\n if (!success) {\n return null\n }\n\n const outPtrView = new BigUint64Array(outPtrBuffer)\n const outLenView = new BigUint64Array(outLenBuffer)\n\n const resultPtr = Number(outPtrView[0]) as Pointer\n const resultLen = Number(outLenView[0])\n\n if (resultLen === 0) {\n return { ptr: resultPtr, data: [] }\n }\n\n // Convert pointer to ArrayBuffer and use EncodedCharStruct to unpack the list\n const byteLen = resultLen * EncodedCharStruct.size\n const raw = toArrayBuffer(resultPtr, 0, byteLen)\n const data = EncodedCharStruct.unpackList(raw, resultLen)\n\n return { ptr: resultPtr, data }\n }\n\n public freeUnicode(encoded: { ptr: Pointer; data: Array<{ width: number; char: number }> }): void {\n this.opentui.symbols.freeUnicode(encoded.ptr, encoded.data.length)\n }\n\n public bufferDrawChar(\n buffer: Pointer,\n char: number,\n x: number,\n y: number,\n fg: RGBA,\n bg: RGBA,\n attributes: number = 0,\n ): void {\n this.opentui.symbols.bufferDrawChar(buffer, char, x, y, fg.buffer, bg.buffer, attributes)\n }\n\n public createSyntaxStyle(): Pointer {\n const stylePtr = this.opentui.symbols.createSyntaxStyle()\n if (!stylePtr) {\n throw new Error(\"Failed to create SyntaxStyle\")\n }\n return stylePtr\n }\n\n public destroySyntaxStyle(style: Pointer): void {\n this.opentui.symbols.destroySyntaxStyle(style)\n }\n\n public syntaxStyleRegister(\n style: Pointer,\n name: string,\n fg: RGBA | null,\n bg: RGBA | null,\n attributes: number,\n ): number {\n const nameBytes = this.encoder.encode(name)\n const fgPtr = fg ? fg.buffer : null\n const bgPtr = bg ? bg.buffer : null\n return this.opentui.symbols.syntaxStyleRegister(style, nameBytes, nameBytes.length, fgPtr, bgPtr, attributes)\n }\n\n public syntaxStyleResolveByName(style: Pointer, name: string): number | null {\n const nameBytes = this.encoder.encode(name)\n const id = this.opentui.symbols.syntaxStyleResolveByName(style, nameBytes, nameBytes.length)\n return id === 0 ? null : id\n }\n\n public syntaxStyleGetStyleCount(style: Pointer): number {\n const result = this.opentui.symbols.syntaxStyleGetStyleCount(style)\n return typeof result === \"bigint\" ? Number(result) : result\n }\n\n public editorViewSetPlaceholderStyledText(\n view: Pointer,\n chunks: Array<{ text: string; fg?: RGBA | null; bg?: RGBA | null; attributes?: number }>,\n ): void {\n const nonEmptyChunks = chunks.filter((c) => c.text.length > 0)\n if (nonEmptyChunks.length === 0) {\n this.opentui.symbols.editorViewSetPlaceholderStyledText(view, null, 0)\n return\n }\n\n const chunksBuffer = StyledChunkStruct.packList(nonEmptyChunks)\n this.opentui.symbols.editorViewSetPlaceholderStyledText(view, ptr(chunksBuffer), nonEmptyChunks.length)\n }\n\n public editorViewSetTabIndicator(view: Pointer, indicator: number): void {\n this.opentui.symbols.editorViewSetTabIndicator(view, indicator)\n }\n\n public editorViewSetTabIndicatorColor(view: Pointer, color: RGBA): void {\n this.opentui.symbols.editorViewSetTabIndicatorColor(view, color.buffer)\n }\n\n public onNativeEvent(name: string, handler: (data: ArrayBuffer) => void): void {\n this._nativeEvents.on(name, handler)\n }\n\n public onceNativeEvent(name: string, handler: (data: ArrayBuffer) => void): void {\n this._nativeEvents.once(name, handler)\n }\n\n public offNativeEvent(name: string, handler: (data: ArrayBuffer) => void): void {\n this._nativeEvents.off(name, handler)\n }\n\n public onAnyNativeEvent(handler: (name: string, data: ArrayBuffer) => void): void {\n this._anyEventHandlers.push(handler)\n }\n}\n\nlet opentuiLibPath: string | undefined\nlet opentuiLib: RenderLib | undefined\n\nexport function setRenderLibPath(libPath: string) {\n if (opentuiLibPath !== libPath) {\n opentuiLibPath = libPath\n opentuiLib = undefined\n }\n}\n\nexport function resolveRenderLib(): RenderLib {\n if (!opentuiLib) {\n try {\n opentuiLib = new FFIRenderLib(opentuiLibPath)\n } catch (error) {\n throw new Error(\n `Failed to initialize OpenTUI render library: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n )\n }\n }\n return opentuiLib\n}\n\n// Try eager loading\ntry {\n opentuiLib = new FFIRenderLib(opentuiLibPath)\n} catch (error) {}\n",
41
+ "import { dlopen, toArrayBuffer, JSCallback, ptr, type Pointer } from \"bun:ffi\"\nimport { existsSync } from \"fs\"\nimport { EventEmitter } from \"events\"\nimport { type CursorStyle, type DebugOverlayCorner, type WidthMethod, type Highlight, type LineInfo } from \"./types\"\nexport type { LineInfo }\n\nimport { RGBA } from \"./lib/RGBA\"\nimport { OptimizedBuffer } from \"./buffer\"\nimport { TextBuffer } from \"./text-buffer\"\nimport { env, registerEnvVar } from \"./lib/env\"\nimport {\n StyledChunkStruct,\n HighlightStruct,\n LogicalCursorStruct,\n VisualCursorStruct,\n TerminalCapabilitiesStruct,\n EncodedCharStruct,\n LineInfoStruct,\n MeasureResultStruct,\n} from \"./zig-structs\"\nimport { isBunfsPath } from \"./lib/bunfs\"\n\nconst module = await import(`@opentui/core-${process.platform}-${process.arch}/index.ts`)\nlet targetLibPath = module.default\n\nif (isBunfsPath(targetLibPath)) {\n targetLibPath = targetLibPath.replace(\"../\", \"\")\n}\n\nif (!existsSync(targetLibPath)) {\n throw new Error(`opentui is not supported on the current platform: ${process.platform}-${process.arch}`)\n}\n\nregisterEnvVar({\n name: \"OTUI_DEBUG_FFI\",\n description: \"Enable debug logging for the FFI bindings.\",\n type: \"boolean\",\n default: false,\n})\n\nregisterEnvVar({\n name: \"OTUI_TRACE_FFI\",\n description: \"Enable tracing for the FFI bindings.\",\n type: \"boolean\",\n default: false,\n})\n\n// Env vars used in terminal.zig\nregisterEnvVar({\n name: \"OPENTUI_FORCE_WCWIDTH\",\n description: \"Use wcwidth for character width calculations\",\n type: \"boolean\",\n default: false,\n})\nregisterEnvVar({\n name: \"OPENTUI_FORCE_UNICODE\",\n description: \"Force Mode 2026 Unicode support in terminal capabilities\",\n type: \"boolean\",\n default: false,\n})\n\nfunction getOpenTUILib(libPath?: string) {\n const resolvedLibPath = libPath || targetLibPath\n\n const rawSymbols = dlopen(resolvedLibPath, {\n // Logging\n setLogCallback: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n // Event bus\n setEventCallback: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n // Renderer management\n createRenderer: {\n args: [\"u32\", \"u32\", \"bool\"],\n returns: \"ptr\",\n },\n destroyRenderer: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n setUseThread: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\",\n },\n setBackgroundColor: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n setRenderOffset: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\",\n },\n updateStats: {\n args: [\"ptr\", \"f64\", \"u32\", \"f64\"],\n returns: \"void\",\n },\n updateMemoryStats: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n render: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\",\n },\n getNextBuffer: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n getCurrentBuffer: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n\n queryPixelResolution: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n\n createOptimizedBuffer: {\n args: [\"u32\", \"u32\", \"bool\", \"u8\", \"ptr\", \"usize\"],\n returns: \"ptr\",\n },\n destroyOptimizedBuffer: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n\n drawFrameBuffer: {\n args: [\"ptr\", \"i32\", \"i32\", \"ptr\", \"u32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n getBufferWidth: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n getBufferHeight: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n bufferClear: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n bufferGetCharPtr: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n bufferGetFgPtr: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n bufferGetBgPtr: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n bufferGetAttributesPtr: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n bufferGetRespectAlpha: {\n args: [\"ptr\"],\n returns: \"bool\",\n },\n bufferSetRespectAlpha: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\",\n },\n bufferGetId: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n bufferGetRealCharSize: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n bufferWriteResolvedChars: {\n args: [\"ptr\", \"ptr\", \"usize\", \"bool\"],\n returns: \"u32\",\n },\n\n bufferDrawText: {\n args: [\"ptr\", \"ptr\", \"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\", \"u8\"],\n returns: \"void\",\n },\n bufferSetCellWithAlphaBlending: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\", \"u8\"],\n returns: \"void\",\n },\n bufferSetCell: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\", \"u8\"],\n returns: \"void\",\n },\n bufferFillRect: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\", \"ptr\"],\n returns: \"void\",\n },\n bufferResize: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n\n resizeRenderer: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n\n // Cursor functions (now renderer-scoped)\n setCursorPosition: {\n args: [\"ptr\", \"i32\", \"i32\", \"bool\"],\n returns: \"void\",\n },\n setCursorStyle: {\n args: [\"ptr\", \"ptr\", \"u32\", \"bool\"],\n returns: \"void\",\n },\n setCursorColor: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n\n // Debug overlay\n setDebugOverlay: {\n args: [\"ptr\", \"bool\", \"u8\"],\n returns: \"void\",\n },\n\n // Terminal control\n clearTerminal: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n setTerminalTitle: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\",\n },\n\n bufferDrawSuperSampleBuffer: {\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\", \"usize\", \"u8\", \"u32\"],\n returns: \"void\",\n },\n bufferDrawPackedBuffer: {\n args: [\"ptr\", \"ptr\", \"usize\", \"u32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n bufferDrawBox: {\n args: [\"ptr\", \"i32\", \"i32\", \"u32\", \"u32\", \"ptr\", \"u32\", \"ptr\", \"ptr\", \"ptr\", \"u32\"],\n returns: \"void\",\n },\n bufferPushScissorRect: {\n args: [\"ptr\", \"i32\", \"i32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n bufferPopScissorRect: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n bufferClearScissorRects: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n\n addToHitGrid: {\n args: [\"ptr\", \"i32\", \"i32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n checkHit: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"u32\",\n },\n dumpHitGrid: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n dumpBuffers: {\n args: [\"ptr\", \"i64\"],\n returns: \"void\",\n },\n dumpStdoutBuffer: {\n args: [\"ptr\", \"i64\"],\n returns: \"void\",\n },\n enableMouse: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\",\n },\n disableMouse: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n enableKittyKeyboard: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\",\n },\n disableKittyKeyboard: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n setUseKittyKeyboard: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\",\n },\n getUseKittyKeyboard: {\n args: [\"ptr\"],\n returns: \"bool\",\n },\n setupTerminal: {\n args: [\"ptr\", \"bool\"],\n returns: \"void\",\n },\n suspendRenderer: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n resumeRenderer: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n\n // TextBuffer functions\n createTextBuffer: {\n args: [\"u8\"],\n returns: \"ptr\",\n },\n destroyTextBuffer: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n textBufferGetLength: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n textBufferGetByteSize: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n\n textBufferReset: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n textBufferClear: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n textBufferSetDefaultFg: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferSetDefaultBg: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferSetDefaultAttributes: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferResetDefaults: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n textBufferGetTabWidth: {\n args: [\"ptr\"],\n returns: \"u8\",\n },\n textBufferSetTabWidth: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\",\n },\n textBufferRegisterMemBuffer: {\n args: [\"ptr\", \"ptr\", \"usize\", \"bool\"],\n returns: \"u16\",\n },\n textBufferReplaceMemBuffer: {\n args: [\"ptr\", \"u8\", \"ptr\", \"usize\", \"bool\"],\n returns: \"bool\",\n },\n textBufferClearMemRegistry: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n textBufferSetTextFromMem: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\",\n },\n textBufferAppend: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\",\n },\n textBufferAppendFromMemId: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\",\n },\n textBufferLoadFile: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"bool\",\n },\n textBufferSetStyledText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\",\n },\n textBufferGetLineCount: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n textBufferGetPlainText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n textBufferAddHighlightByCharRange: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferAddHighlight: {\n args: [\"ptr\", \"u32\", \"ptr\"],\n returns: \"void\",\n },\n textBufferRemoveHighlightsByRef: {\n args: [\"ptr\", \"u16\"],\n returns: \"void\",\n },\n textBufferClearLineHighlights: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\",\n },\n textBufferClearAllHighlights: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n textBufferSetSyntaxStyle: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferGetLineHighlightsPtr: {\n args: [\"ptr\", \"u32\", \"ptr\"],\n returns: \"ptr\",\n },\n textBufferFreeLineHighlights: {\n args: [\"ptr\", \"usize\"],\n returns: \"void\",\n },\n textBufferGetHighlightCount: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n textBufferGetTextRange: {\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n textBufferGetTextRangeByCoords: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n\n // TextBufferView functions\n createTextBufferView: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n destroyTextBufferView: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n textBufferViewSetSelection: {\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferViewResetSelection: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n textBufferViewGetSelectionInfo: {\n args: [\"ptr\"],\n returns: \"u64\",\n },\n textBufferViewSetLocalSelection: {\n args: [\"ptr\", \"i32\", \"i32\", \"i32\", \"i32\", \"ptr\", \"ptr\"],\n returns: \"bool\",\n },\n textBufferViewResetLocalSelection: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n textBufferViewSetWrapWidth: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\",\n },\n textBufferViewSetWrapMode: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\",\n },\n textBufferViewSetViewportSize: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n textBufferViewSetViewport: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n textBufferViewGetVirtualLineCount: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n textBufferViewGetLineInfoDirect: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferViewGetLogicalLineInfoDirect: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferViewGetSelectedText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n textBufferViewGetPlainText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n textBufferViewSetTabIndicator: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\",\n },\n textBufferViewSetTabIndicatorColor: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n textBufferViewMeasureForDimensions: {\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\"],\n returns: \"bool\",\n },\n bufferDrawTextBufferView: {\n args: [\"ptr\", \"ptr\", \"i32\", \"i32\"],\n returns: \"void\",\n },\n bufferDrawEditorView: {\n args: [\"ptr\", \"ptr\", \"i32\", \"i32\"],\n returns: \"void\",\n },\n\n // EditorView functions\n createEditorView: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"ptr\",\n },\n destroyEditorView: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editorViewSetViewportSize: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n editorViewGetViewport: {\n args: [\"ptr\", \"ptr\", \"ptr\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewSetScrollMargin: {\n args: [\"ptr\", \"f32\"],\n returns: \"void\",\n },\n editorViewSetWrapMode: {\n args: [\"ptr\", \"u8\"],\n returns: \"void\",\n },\n editorViewGetVirtualLineCount: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n editorViewGetTotalVirtualLineCount: {\n args: [\"ptr\"],\n returns: \"u32\",\n },\n editorViewGetTextBufferView: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n editorViewGetLineInfoDirect: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewGetLogicalLineInfoDirect: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n\n // EditBuffer functions\n createEditBuffer: {\n args: [\"u8\"],\n returns: \"ptr\",\n },\n destroyEditBuffer: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferSetText: {\n args: [\"ptr\", \"ptr\", \"usize\", \"bool\"],\n returns: \"void\",\n },\n editBufferSetTextFromMem: {\n args: [\"ptr\", \"u8\", \"bool\"],\n returns: \"void\",\n },\n editBufferGetText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n editBufferInsertChar: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\",\n },\n editBufferInsertText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\",\n },\n editBufferDeleteChar: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferDeleteCharBackward: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferDeleteRange: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n editBufferNewLine: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferDeleteLine: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferMoveCursorLeft: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferMoveCursorRight: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferMoveCursorUp: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferMoveCursorDown: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferGotoLine: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\",\n },\n editBufferSetCursor: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n editBufferSetCursorToLineCol: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"void\",\n },\n editBufferSetCursorByOffset: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\",\n },\n editBufferGetCursorPosition: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editBufferGetId: {\n args: [\"ptr\"],\n returns: \"u16\",\n },\n editBufferGetTextBuffer: {\n args: [\"ptr\"],\n returns: \"ptr\",\n },\n editBufferDebugLogRope: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferUndo: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n editBufferRedo: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n editBufferCanUndo: {\n args: [\"ptr\"],\n returns: \"bool\",\n },\n editBufferCanRedo: {\n args: [\"ptr\"],\n returns: \"bool\",\n },\n editBufferClearHistory: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferClear: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editBufferGetNextWordBoundary: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editBufferGetPrevWordBoundary: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editBufferGetEOL: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editBufferOffsetToPosition: {\n args: [\"ptr\", \"u32\", \"ptr\"],\n returns: \"bool\",\n },\n editBufferPositionToOffset: {\n args: [\"ptr\", \"u32\", \"u32\"],\n returns: \"u32\",\n },\n editBufferGetLineStartOffset: {\n args: [\"ptr\", \"u32\"],\n returns: \"u32\",\n },\n editBufferGetTextRange: {\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n editBufferGetTextRangeByCoords: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n\n // EditorView selection and editing methods\n editorViewSetSelection: {\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewResetSelection: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editorViewGetSelection: {\n args: [\"ptr\"],\n returns: \"u64\",\n },\n editorViewSetLocalSelection: {\n args: [\"ptr\", \"i32\", \"i32\", \"i32\", \"i32\", \"ptr\", \"ptr\"],\n returns: \"bool\",\n },\n editorViewResetLocalSelection: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editorViewGetSelectedTextBytes: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n editorViewGetCursor: {\n args: [\"ptr\", \"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewGetText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"usize\",\n },\n\n // EditorView VisualCursor methods\n editorViewGetVisualCursor: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n\n editorViewMoveUpVisual: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editorViewMoveDownVisual: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editorViewDeleteSelectedText: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n editorViewSetCursorByOffset: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\",\n },\n editorViewGetNextWordBoundary: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewGetPrevWordBoundary: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewGetEOL: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n editorViewSetPlaceholderStyledText: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\",\n },\n editorViewSetTabIndicator: {\n args: [\"ptr\", \"u32\"],\n returns: \"void\",\n },\n editorViewSetTabIndicatorColor: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n\n getArenaAllocatedBytes: {\n args: [],\n returns: \"usize\",\n },\n\n // SyntaxStyle functions\n createSyntaxStyle: {\n args: [],\n returns: \"ptr\",\n },\n destroySyntaxStyle: {\n args: [\"ptr\"],\n returns: \"void\",\n },\n syntaxStyleRegister: {\n args: [\"ptr\", \"ptr\", \"usize\", \"ptr\", \"ptr\", \"u8\"],\n returns: \"u32\",\n },\n syntaxStyleResolveByName: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"u32\",\n },\n syntaxStyleGetStyleCount: {\n args: [\"ptr\"],\n returns: \"usize\",\n },\n\n // Terminal capability functions\n getTerminalCapabilities: {\n args: [\"ptr\", \"ptr\"],\n returns: \"void\",\n },\n processCapabilityResponse: {\n args: [\"ptr\", \"ptr\", \"usize\"],\n returns: \"void\",\n },\n\n // Unicode encoding API\n encodeUnicode: {\n args: [\"ptr\", \"usize\", \"ptr\", \"ptr\", \"u8\"],\n returns: \"bool\",\n },\n freeUnicode: {\n args: [\"ptr\", \"usize\"],\n returns: \"void\",\n },\n bufferDrawChar: {\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\", \"u8\"],\n returns: \"void\",\n },\n })\n\n if (env.OTUI_DEBUG_FFI || env.OTUI_TRACE_FFI) {\n return {\n symbols: convertToDebugSymbols(rawSymbols.symbols),\n }\n }\n\n return rawSymbols\n}\n\nfunction convertToDebugSymbols<T extends Record<string, any>>(symbols: T): T {\n const debugSymbols: Record<string, any> = {}\n const traceSymbols: Record<string, any> = {}\n let hasTracing = false\n let ffiLogWriter: ReturnType<ReturnType<typeof Bun.file>[\"writer\"]> | null = null\n\n Object.entries(symbols).forEach(([key, value]) => {\n debugSymbols[key] = value\n })\n\n if (env.OTUI_DEBUG_FFI) {\n const now = new Date()\n const timestamp = now.toISOString().replace(/[:.]/g, \"-\").replace(/T/, \"_\").split(\"Z\")[0]\n const logFilePath = `ffi_otui_debug_${timestamp}.log`\n ffiLogWriter = Bun.file(logFilePath).writer()\n\n const writer = ffiLogWriter\n const writeSync = (msg: string) => {\n const buffer = new TextEncoder().encode(msg + \"\\n\")\n writer.write(buffer)\n writer.flush()\n }\n\n Object.entries(symbols).forEach(([key, value]) => {\n if (typeof value === \"function\") {\n debugSymbols[key] = (...args: any[]) => {\n writeSync(`${key}(${args.map((arg) => String(arg)).join(\", \")})`)\n const result = value(...args)\n writeSync(`${key} returned: ${String(result)}`)\n return result\n }\n }\n })\n }\n\n if (env.OTUI_TRACE_FFI) {\n hasTracing = true\n Object.entries(symbols).forEach(([key, value]) => {\n if (typeof value === \"function\") {\n traceSymbols[key] = []\n const originalFunc = debugSymbols[key]\n debugSymbols[key] = (...args: any[]) => {\n const start = performance.now()\n const result = originalFunc(...args)\n const end = performance.now()\n traceSymbols[key].push(end - start)\n return result\n }\n }\n })\n }\n\n if (env.OTUI_DEBUG_FFI && ffiLogWriter) {\n process.on(\"exit\", () => {\n try {\n ffiLogWriter.end()\n } catch (e) {\n // Ignore errors on exit\n }\n })\n }\n\n if (hasTracing) {\n process.on(\"exit\", () => {\n const allStats: Array<{\n name: string\n count: number\n total: number\n average: number\n min: number\n max: number\n median: number\n p90: number\n p99: number\n }> = []\n\n for (const [key, timings] of Object.entries(traceSymbols)) {\n if (!Array.isArray(timings) || timings.length === 0) {\n continue\n }\n\n const sortedTimings = [...timings].sort((a, b) => a - b)\n const count = sortedTimings.length\n\n const total = sortedTimings.reduce((acc, t) => acc + t, 0)\n const average = total / count\n const min = sortedTimings[0]\n const max = sortedTimings[count - 1]\n\n const medianIndex = Math.floor(count / 2)\n const p90Index = Math.floor(count * 0.9)\n const p99Index = Math.floor(count * 0.99)\n\n const median = sortedTimings[medianIndex]\n const p90 = sortedTimings[Math.min(p90Index, count - 1)]\n const p99 = sortedTimings[Math.min(p99Index, count - 1)]\n\n allStats.push({\n name: key,\n count,\n total,\n average,\n min,\n max,\n median,\n p90,\n p99,\n })\n }\n\n allStats.sort((a, b) => b.total - a.total)\n\n console.log(\"\\n--- OpenTUI FFI Call Performance ---\")\n console.log(\"Sorted by total time spent (descending)\")\n console.log(\n \"-------------------------------------------------------------------------------------------------------------------------\",\n )\n\n if (allStats.length === 0) {\n console.log(\"No trace data collected or all symbols had zero calls.\")\n } else {\n const nameHeader = \"Symbol\"\n const callsHeader = \"Calls\"\n const totalHeader = \"Total (ms)\"\n const avgHeader = \"Avg (ms)\"\n const minHeader = \"Min (ms)\"\n const maxHeader = \"Max (ms)\"\n const medHeader = \"Med (ms)\"\n const p90Header = \"P90 (ms)\"\n const p99Header = \"P99 (ms)\"\n\n const nameWidth = Math.max(nameHeader.length, ...allStats.map((s) => s.name.length))\n const countWidth = Math.max(callsHeader.length, ...allStats.map((s) => String(s.count).length))\n const totalWidth = Math.max(totalHeader.length, ...allStats.map((s) => s.total.toFixed(2).length))\n const avgWidth = Math.max(avgHeader.length, ...allStats.map((s) => s.average.toFixed(2).length))\n const minWidth = Math.max(minHeader.length, ...allStats.map((s) => s.min.toFixed(2).length))\n const maxWidth = Math.max(maxHeader.length, ...allStats.map((s) => s.max.toFixed(2).length))\n const medianWidth = Math.max(medHeader.length, ...allStats.map((s) => s.median.toFixed(2).length))\n const p90Width = Math.max(p90Header.length, ...allStats.map((s) => s.p90.toFixed(2).length))\n const p99Width = Math.max(p99Header.length, ...allStats.map((s) => s.p99.toFixed(2).length))\n\n // Header\n console.log(\n `${nameHeader.padEnd(nameWidth)} | ` +\n `${callsHeader.padStart(countWidth)} | ` +\n `${totalHeader.padStart(totalWidth)} | ` +\n `${avgHeader.padStart(avgWidth)} | ` +\n `${minHeader.padStart(minWidth)} | ` +\n `${maxHeader.padStart(maxWidth)} | ` +\n `${medHeader.padStart(medianWidth)} | ` +\n `${p90Header.padStart(p90Width)} | ` +\n `${p99Header.padStart(p99Width)}`,\n )\n // Separator\n console.log(\n `${\"-\".repeat(nameWidth)}-+-${\"-\".repeat(countWidth)}-+-${\"-\".repeat(totalWidth)}-+-${\"-\".repeat(avgWidth)}-+-${\"-\".repeat(minWidth)}-+-${\"-\".repeat(maxWidth)}-+-${\"-\".repeat(medianWidth)}-+-${\"-\".repeat(p90Width)}-+-${\"-\".repeat(p99Width)}`,\n )\n\n allStats.forEach((stat) => {\n console.log(\n `${stat.name.padEnd(nameWidth)} | ` +\n `${String(stat.count).padStart(countWidth)} | ` +\n `${stat.total.toFixed(2).padStart(totalWidth)} | ` +\n `${stat.average.toFixed(2).padStart(avgWidth)} | ` +\n `${stat.min.toFixed(2).padStart(minWidth)} | ` +\n `${stat.max.toFixed(2).padStart(maxWidth)} | ` +\n `${stat.median.toFixed(2).padStart(medianWidth)} | ` +\n `${stat.p90.toFixed(2).padStart(p90Width)} | ` +\n `${stat.p99.toFixed(2).padStart(p99Width)}`,\n )\n })\n }\n console.log(\n \"-------------------------------------------------------------------------------------------------------------------------\",\n )\n })\n }\n\n return debugSymbols as T\n}\n\n// Log levels matching Zig's LogLevel enum\nexport enum LogLevel {\n Error = 0,\n Warn = 1,\n Info = 2,\n Debug = 3,\n}\n\n/**\n * VisualCursor represents a cursor position with both visual and logical coordinates.\n * Visual coordinates (visualRow, visualCol) are VIEWPORT-RELATIVE.\n * This means visualRow=0 is the first visible line in the viewport, not the first line in the document.\n * Logical coordinates (logicalRow, logicalCol) are document-absolute.\n */\nexport interface VisualCursor {\n visualRow: number // Viewport-relative row (0 = top of viewport)\n visualCol: number // Viewport-relative column (0 = left edge of viewport when not wrapping)\n logicalRow: number // Document-absolute row\n logicalCol: number // Document-absolute column\n offset: number // Global display-width offset from buffer start\n}\n\nexport interface LogicalCursor {\n row: number\n col: number\n offset: number\n}\n\nexport interface RenderLib {\n createRenderer: (width: number, height: number, options?: { testing: boolean }) => Pointer | null\n destroyRenderer: (renderer: Pointer) => void\n setUseThread: (renderer: Pointer, useThread: boolean) => void\n setBackgroundColor: (renderer: Pointer, color: RGBA) => void\n setRenderOffset: (renderer: Pointer, offset: number) => void\n updateStats: (renderer: Pointer, time: number, fps: number, frameCallbackTime: number) => void\n updateMemoryStats: (renderer: Pointer, heapUsed: number, heapTotal: number, arrayBuffers: number) => void\n render: (renderer: Pointer, force: boolean) => void\n getNextBuffer: (renderer: Pointer) => OptimizedBuffer\n getCurrentBuffer: (renderer: Pointer) => OptimizedBuffer\n createOptimizedBuffer: (\n width: number,\n height: number,\n widthMethod: WidthMethod,\n respectAlpha?: boolean,\n id?: string,\n ) => OptimizedBuffer\n destroyOptimizedBuffer: (bufferPtr: Pointer) => void\n drawFrameBuffer: (\n targetBufferPtr: Pointer,\n destX: number,\n destY: number,\n bufferPtr: Pointer,\n sourceX?: number,\n sourceY?: number,\n sourceWidth?: number,\n sourceHeight?: number,\n ) => void\n getBufferWidth: (buffer: Pointer) => number\n getBufferHeight: (buffer: Pointer) => number\n bufferClear: (buffer: Pointer, color: RGBA) => void\n bufferGetCharPtr: (buffer: Pointer) => Pointer\n bufferGetFgPtr: (buffer: Pointer) => Pointer\n bufferGetBgPtr: (buffer: Pointer) => Pointer\n bufferGetAttributesPtr: (buffer: Pointer) => Pointer\n bufferGetRespectAlpha: (buffer: Pointer) => boolean\n bufferSetRespectAlpha: (buffer: Pointer, respectAlpha: boolean) => void\n bufferGetId: (buffer: Pointer) => string\n bufferGetRealCharSize: (buffer: Pointer) => number\n bufferWriteResolvedChars: (buffer: Pointer, outputBuffer: Uint8Array, addLineBreaks: boolean) => number\n bufferDrawText: (\n buffer: Pointer,\n text: string,\n x: number,\n y: number,\n color: RGBA,\n bgColor?: RGBA,\n attributes?: number,\n ) => void\n bufferSetCellWithAlphaBlending: (\n buffer: Pointer,\n x: number,\n y: number,\n char: string,\n color: RGBA,\n bgColor: RGBA,\n attributes?: number,\n ) => void\n bufferSetCell: (\n buffer: Pointer,\n x: number,\n y: number,\n char: string,\n color: RGBA,\n bgColor: RGBA,\n attributes?: number,\n ) => void\n bufferFillRect: (buffer: Pointer, x: number, y: number, width: number, height: number, color: RGBA) => void\n bufferDrawSuperSampleBuffer: (\n buffer: Pointer,\n x: number,\n y: number,\n pixelDataPtr: Pointer,\n pixelDataLength: number,\n format: \"bgra8unorm\" | \"rgba8unorm\",\n alignedBytesPerRow: number,\n ) => void\n bufferDrawPackedBuffer: (\n buffer: Pointer,\n dataPtr: Pointer,\n dataLen: number,\n posX: number,\n posY: number,\n terminalWidthCells: number,\n terminalHeightCells: number,\n ) => void\n bufferDrawBox: (\n buffer: Pointer,\n x: number,\n y: number,\n width: number,\n height: number,\n borderChars: Uint32Array,\n packedOptions: number,\n borderColor: RGBA,\n backgroundColor: RGBA,\n title: string | null,\n ) => void\n bufferResize: (buffer: Pointer, width: number, height: number) => void\n resizeRenderer: (renderer: Pointer, width: number, height: number) => void\n setCursorPosition: (renderer: Pointer, x: number, y: number, visible: boolean) => void\n setCursorStyle: (renderer: Pointer, style: CursorStyle, blinking: boolean) => void\n setCursorColor: (renderer: Pointer, color: RGBA) => void\n setDebugOverlay: (renderer: Pointer, enabled: boolean, corner: DebugOverlayCorner) => void\n clearTerminal: (renderer: Pointer) => void\n setTerminalTitle: (renderer: Pointer, title: string) => void\n addToHitGrid: (renderer: Pointer, x: number, y: number, width: number, height: number, id: number) => void\n checkHit: (renderer: Pointer, x: number, y: number) => number\n dumpHitGrid: (renderer: Pointer) => void\n dumpBuffers: (renderer: Pointer, timestamp?: number) => void\n dumpStdoutBuffer: (renderer: Pointer, timestamp?: number) => void\n enableMouse: (renderer: Pointer, enableMovement: boolean) => void\n disableMouse: (renderer: Pointer) => void\n enableKittyKeyboard: (renderer: Pointer, flags: number) => void\n disableKittyKeyboard: (renderer: Pointer) => void\n setUseKittyKeyboard: (renderer: Pointer, use: boolean) => void\n getUseKittyKeyboard: (renderer: Pointer) => boolean\n setupTerminal: (renderer: Pointer, useAlternateScreen: boolean) => void\n suspendRenderer: (renderer: Pointer) => void\n resumeRenderer: (renderer: Pointer) => void\n queryPixelResolution: (renderer: Pointer) => void\n\n // TextBuffer methods\n createTextBuffer: (widthMethod: WidthMethod) => TextBuffer\n destroyTextBuffer: (buffer: Pointer) => void\n textBufferGetLength: (buffer: Pointer) => number\n textBufferGetByteSize: (buffer: Pointer) => number\n\n textBufferReset: (buffer: Pointer) => void\n textBufferClear: (buffer: Pointer) => void\n textBufferRegisterMemBuffer: (buffer: Pointer, bytes: Uint8Array, owned?: boolean) => number\n textBufferReplaceMemBuffer: (buffer: Pointer, memId: number, bytes: Uint8Array, owned?: boolean) => boolean\n textBufferClearMemRegistry: (buffer: Pointer) => void\n textBufferSetTextFromMem: (buffer: Pointer, memId: number) => void\n textBufferAppend: (buffer: Pointer, bytes: Uint8Array) => void\n textBufferAppendFromMemId: (buffer: Pointer, memId: number) => void\n textBufferLoadFile: (buffer: Pointer, path: string) => boolean\n textBufferSetStyledText: (\n buffer: Pointer,\n chunks: Array<{ text: string; fg?: RGBA | null; bg?: RGBA | null; attributes?: number }>,\n ) => void\n textBufferSetDefaultFg: (buffer: Pointer, fg: RGBA | null) => void\n textBufferSetDefaultBg: (buffer: Pointer, bg: RGBA | null) => void\n textBufferSetDefaultAttributes: (buffer: Pointer, attributes: number | null) => void\n textBufferResetDefaults: (buffer: Pointer) => void\n textBufferGetTabWidth: (buffer: Pointer) => number\n textBufferSetTabWidth: (buffer: Pointer, width: number) => void\n textBufferGetLineCount: (buffer: Pointer) => number\n getPlainTextBytes: (buffer: Pointer, maxLength: number) => Uint8Array | null\n textBufferGetTextRange: (\n buffer: Pointer,\n startOffset: number,\n endOffset: number,\n maxLength: number,\n ) => Uint8Array | null\n textBufferGetTextRangeByCoords: (\n buffer: Pointer,\n startRow: number,\n startCol: number,\n endRow: number,\n endCol: number,\n maxLength: number,\n ) => Uint8Array | null\n\n // TextBufferView methods\n createTextBufferView: (textBuffer: Pointer) => Pointer\n destroyTextBufferView: (view: Pointer) => void\n textBufferViewSetSelection: (\n view: Pointer,\n start: number,\n end: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n ) => void\n textBufferViewResetSelection: (view: Pointer) => void\n textBufferViewGetSelection: (view: Pointer) => { start: number; end: number } | null\n textBufferViewSetLocalSelection: (\n view: Pointer,\n anchorX: number,\n anchorY: number,\n focusX: number,\n focusY: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n ) => boolean\n textBufferViewResetLocalSelection: (view: Pointer) => void\n textBufferViewSetWrapWidth: (view: Pointer, width: number) => void\n textBufferViewSetWrapMode: (view: Pointer, mode: \"none\" | \"char\" | \"word\") => void\n textBufferViewSetViewportSize: (view: Pointer, width: number, height: number) => void\n textBufferViewSetViewport: (view: Pointer, x: number, y: number, width: number, height: number) => void\n textBufferViewGetLineInfo: (view: Pointer) => LineInfo\n textBufferViewGetLogicalLineInfo: (view: Pointer) => LineInfo\n textBufferViewGetSelectedTextBytes: (view: Pointer, maxLength: number) => Uint8Array | null\n textBufferViewGetPlainTextBytes: (view: Pointer, maxLength: number) => Uint8Array | null\n textBufferViewSetTabIndicator: (view: Pointer, indicator: number) => void\n textBufferViewSetTabIndicatorColor: (view: Pointer, color: RGBA) => void\n textBufferViewMeasureForDimensions: (\n view: Pointer,\n width: number,\n height: number,\n ) => { lineCount: number; maxWidth: number } | null\n textBufferViewGetVirtualLineCount: (view: Pointer) => number\n\n readonly encoder: TextEncoder\n readonly decoder: TextDecoder\n bufferDrawTextBufferView: (buffer: Pointer, view: Pointer, x: number, y: number) => void\n bufferDrawEditorView: (buffer: Pointer, view: Pointer, x: number, y: number) => void\n\n // EditBuffer methods\n createEditBuffer: (widthMethod: WidthMethod) => Pointer\n destroyEditBuffer: (buffer: Pointer) => void\n editBufferSetText: (buffer: Pointer, textBytes: Uint8Array, retainHistory?: boolean) => void\n editBufferSetTextFromMem: (buffer: Pointer, memId: number, retainHistory?: boolean) => void\n editBufferGetText: (buffer: Pointer, maxLength: number) => Uint8Array | null\n editBufferInsertChar: (buffer: Pointer, char: string) => void\n editBufferInsertText: (buffer: Pointer, text: string) => void\n editBufferDeleteChar: (buffer: Pointer) => void\n editBufferDeleteCharBackward: (buffer: Pointer) => void\n editBufferDeleteRange: (buffer: Pointer, startLine: number, startCol: number, endLine: number, endCol: number) => void\n editBufferNewLine: (buffer: Pointer) => void\n editBufferDeleteLine: (buffer: Pointer) => void\n editBufferMoveCursorLeft: (buffer: Pointer) => void\n editBufferMoveCursorRight: (buffer: Pointer) => void\n editBufferMoveCursorUp: (buffer: Pointer) => void\n editBufferMoveCursorDown: (buffer: Pointer) => void\n editBufferGotoLine: (buffer: Pointer, line: number) => void\n editBufferSetCursor: (buffer: Pointer, line: number, col: number) => void\n editBufferSetCursorToLineCol: (buffer: Pointer, line: number, col: number) => void\n editBufferSetCursorByOffset: (buffer: Pointer, offset: number) => void\n editBufferGetCursorPosition: (buffer: Pointer) => LogicalCursor\n editBufferGetId: (buffer: Pointer) => number\n editBufferGetTextBuffer: (buffer: Pointer) => Pointer\n editBufferDebugLogRope: (buffer: Pointer) => void\n editBufferUndo: (buffer: Pointer, maxLength: number) => Uint8Array | null\n editBufferRedo: (buffer: Pointer, maxLength: number) => Uint8Array | null\n editBufferCanUndo: (buffer: Pointer) => boolean\n editBufferCanRedo: (buffer: Pointer) => boolean\n editBufferClearHistory: (buffer: Pointer) => void\n editBufferClear: (buffer: Pointer) => void\n editBufferGetNextWordBoundary: (buffer: Pointer) => { row: number; col: number; offset: number }\n editBufferGetPrevWordBoundary: (buffer: Pointer) => { row: number; col: number; offset: number }\n editBufferGetEOL: (buffer: Pointer) => { row: number; col: number; offset: number }\n editBufferOffsetToPosition: (buffer: Pointer, offset: number) => { row: number; col: number; offset: number } | null\n editBufferPositionToOffset: (buffer: Pointer, row: number, col: number) => number\n editBufferGetLineStartOffset: (buffer: Pointer, row: number) => number\n editBufferGetTextRange: (\n buffer: Pointer,\n startOffset: number,\n endOffset: number,\n maxLength: number,\n ) => Uint8Array | null\n editBufferGetTextRangeByCoords: (\n buffer: Pointer,\n startRow: number,\n startCol: number,\n endRow: number,\n endCol: number,\n maxLength: number,\n ) => Uint8Array | null\n\n // EditorView methods\n createEditorView: (editBufferPtr: Pointer, viewportWidth: number, viewportHeight: number) => Pointer\n destroyEditorView: (view: Pointer) => void\n editorViewSetViewportSize: (view: Pointer, width: number, height: number) => void\n editorViewGetViewport: (view: Pointer) => { offsetY: number; offsetX: number; height: number; width: number }\n editorViewSetScrollMargin: (view: Pointer, margin: number) => void\n editorViewSetWrapMode: (view: Pointer, mode: \"none\" | \"char\" | \"word\") => void\n editorViewGetVirtualLineCount: (view: Pointer) => number\n editorViewGetTotalVirtualLineCount: (view: Pointer) => number\n editorViewGetTextBufferView: (view: Pointer) => Pointer\n editorViewSetSelection: (\n view: Pointer,\n start: number,\n end: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n ) => void\n editorViewResetSelection: (view: Pointer) => void\n editorViewGetSelection: (view: Pointer) => { start: number; end: number } | null\n editorViewSetLocalSelection: (\n view: Pointer,\n anchorX: number,\n anchorY: number,\n focusX: number,\n focusY: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n ) => boolean\n editorViewResetLocalSelection: (view: Pointer) => void\n editorViewGetSelectedTextBytes: (view: Pointer, maxLength: number) => Uint8Array | null\n editorViewGetCursor: (view: Pointer) => { row: number; col: number }\n editorViewGetText: (view: Pointer, maxLength: number) => Uint8Array | null\n editorViewGetVisualCursor: (view: Pointer) => VisualCursor\n editorViewMoveUpVisual: (view: Pointer) => void\n editorViewMoveDownVisual: (view: Pointer) => void\n editorViewDeleteSelectedText: (view: Pointer) => void\n editorViewSetCursorByOffset: (view: Pointer, offset: number) => void\n editorViewGetNextWordBoundary: (view: Pointer) => VisualCursor\n editorViewGetPrevWordBoundary: (view: Pointer) => VisualCursor\n editorViewGetEOL: (view: Pointer) => VisualCursor\n editorViewGetLineInfo: (view: Pointer) => LineInfo\n editorViewGetLogicalLineInfo: (view: Pointer) => LineInfo\n editorViewSetPlaceholderStyledText: (\n view: Pointer,\n chunks: Array<{ text: string; fg?: RGBA | null; bg?: RGBA | null; attributes?: number }>,\n ) => void\n editorViewSetTabIndicator: (view: Pointer, indicator: number) => void\n editorViewSetTabIndicatorColor: (view: Pointer, color: RGBA) => void\n\n bufferPushScissorRect: (buffer: Pointer, x: number, y: number, width: number, height: number) => void\n bufferPopScissorRect: (buffer: Pointer) => void\n bufferClearScissorRects: (buffer: Pointer) => void\n textBufferAddHighlightByCharRange: (buffer: Pointer, highlight: Highlight) => void\n textBufferAddHighlight: (buffer: Pointer, lineIdx: number, highlight: Highlight) => void\n textBufferRemoveHighlightsByRef: (buffer: Pointer, hlRef: number) => void\n textBufferClearLineHighlights: (buffer: Pointer, lineIdx: number) => void\n textBufferClearAllHighlights: (buffer: Pointer) => void\n textBufferSetSyntaxStyle: (buffer: Pointer, style: Pointer | null) => void\n textBufferGetLineHighlights: (buffer: Pointer, lineIdx: number) => Array<Highlight>\n textBufferGetHighlightCount: (buffer: Pointer) => number\n\n getArenaAllocatedBytes: () => number\n\n createSyntaxStyle: () => Pointer\n destroySyntaxStyle: (style: Pointer) => void\n syntaxStyleRegister: (style: Pointer, name: string, fg: RGBA | null, bg: RGBA | null, attributes: number) => number\n syntaxStyleResolveByName: (style: Pointer, name: string) => number | null\n syntaxStyleGetStyleCount: (style: Pointer) => number\n\n getTerminalCapabilities: (renderer: Pointer) => any\n processCapabilityResponse: (renderer: Pointer, response: string) => void\n\n encodeUnicode: (\n text: string,\n widthMethod: WidthMethod,\n ) => { ptr: Pointer; data: Array<{ width: number; char: number }> } | null\n freeUnicode: (encoded: { ptr: Pointer; data: Array<{ width: number; char: number }> }) => void\n bufferDrawChar: (buffer: Pointer, char: number, x: number, y: number, fg: RGBA, bg: RGBA, attributes?: number) => void\n\n onNativeEvent: (name: string, handler: (data: ArrayBuffer) => void) => void\n onceNativeEvent: (name: string, handler: (data: ArrayBuffer) => void) => void\n offNativeEvent: (name: string, handler: (data: ArrayBuffer) => void) => void\n onAnyNativeEvent: (handler: (name: string, data: ArrayBuffer) => void) => void\n}\n\nclass FFIRenderLib implements RenderLib {\n private opentui: ReturnType<typeof getOpenTUILib>\n public readonly encoder: TextEncoder = new TextEncoder()\n public readonly decoder: TextDecoder = new TextDecoder()\n private logCallbackWrapper: any // Store the FFI callback wrapper\n private eventCallbackWrapper: any // Store the FFI event callback wrapper\n private _nativeEvents: EventEmitter = new EventEmitter()\n private _anyEventHandlers: Array<(name: string, data: ArrayBuffer) => void> = []\n\n constructor(libPath?: string) {\n this.opentui = getOpenTUILib(libPath)\n this.setupLogging()\n this.setupEventBus()\n }\n\n private setupLogging() {\n if (this.logCallbackWrapper) {\n return\n }\n\n const logCallback = new JSCallback(\n (level: number, msgPtr: Pointer, msgLenBigInt: bigint | number) => {\n try {\n const msgLen = typeof msgLenBigInt === \"bigint\" ? Number(msgLenBigInt) : msgLenBigInt\n\n if (msgLen === 0 || !msgPtr) {\n return\n }\n\n const msgBuffer = toArrayBuffer(msgPtr, 0, msgLen)\n const msgBytes = new Uint8Array(msgBuffer)\n const message = this.decoder.decode(msgBytes)\n\n switch (level) {\n case LogLevel.Error:\n console.error(message)\n break\n case LogLevel.Warn:\n console.warn(message)\n break\n case LogLevel.Info:\n console.info(message)\n break\n case LogLevel.Debug:\n console.debug(message)\n break\n default:\n console.log(message)\n }\n } catch (error) {\n console.error(\"Error in Zig log callback:\", error)\n }\n },\n {\n args: [\"u8\", \"ptr\", \"usize\"],\n returns: \"void\",\n },\n )\n\n this.logCallbackWrapper = logCallback\n\n if (!logCallback.ptr) {\n throw new Error(\"Failed to create log callback\")\n }\n\n this.setLogCallback(logCallback.ptr)\n }\n\n private setLogCallback(callbackPtr: Pointer) {\n this.opentui.symbols.setLogCallback(callbackPtr)\n }\n\n private setupEventBus() {\n if (this.eventCallbackWrapper) {\n return\n }\n\n const eventCallback = new JSCallback(\n (namePtr: Pointer, nameLenBigInt: bigint | number, dataPtr: Pointer, dataLenBigInt: bigint | number) => {\n try {\n const nameLen = typeof nameLenBigInt === \"bigint\" ? Number(nameLenBigInt) : nameLenBigInt\n const dataLen = typeof dataLenBigInt === \"bigint\" ? Number(dataLenBigInt) : dataLenBigInt\n\n if (nameLen === 0 || !namePtr) {\n return\n }\n\n const nameBuffer = toArrayBuffer(namePtr, 0, nameLen)\n const nameBytes = new Uint8Array(nameBuffer)\n const eventName = this.decoder.decode(nameBytes)\n\n let eventData: ArrayBuffer\n if (dataLen > 0 && dataPtr) {\n eventData = toArrayBuffer(dataPtr, 0, dataLen).slice()\n } else {\n eventData = new ArrayBuffer(0)\n }\n\n queueMicrotask(() => {\n this._nativeEvents.emit(eventName, eventData)\n\n for (const handler of this._anyEventHandlers) {\n handler(eventName, eventData)\n }\n })\n } catch (error) {\n console.error(\"Error in native event callback:\", error)\n }\n },\n {\n args: [\"ptr\", \"usize\", \"ptr\", \"usize\"],\n returns: \"void\",\n },\n )\n\n this.eventCallbackWrapper = eventCallback\n\n if (!eventCallback.ptr) {\n throw new Error(\"Failed to create event callback\")\n }\n\n this.setEventCallback(eventCallback.ptr)\n }\n\n private setEventCallback(callbackPtr: Pointer) {\n this.opentui.symbols.setEventCallback(callbackPtr)\n }\n\n public createRenderer(width: number, height: number, options: { testing: boolean } = { testing: false }) {\n return this.opentui.symbols.createRenderer(width, height, options.testing)\n }\n\n public destroyRenderer(renderer: Pointer): void {\n this.opentui.symbols.destroyRenderer(renderer)\n }\n\n public setUseThread(renderer: Pointer, useThread: boolean) {\n this.opentui.symbols.setUseThread(renderer, useThread)\n }\n\n public setBackgroundColor(renderer: Pointer, color: RGBA) {\n this.opentui.symbols.setBackgroundColor(renderer, color.buffer)\n }\n\n public setRenderOffset(renderer: Pointer, offset: number) {\n this.opentui.symbols.setRenderOffset(renderer, offset)\n }\n\n public updateStats(renderer: Pointer, time: number, fps: number, frameCallbackTime: number) {\n this.opentui.symbols.updateStats(renderer, time, fps, frameCallbackTime)\n }\n\n public updateMemoryStats(renderer: Pointer, heapUsed: number, heapTotal: number, arrayBuffers: number) {\n this.opentui.symbols.updateMemoryStats(renderer, heapUsed, heapTotal, arrayBuffers)\n }\n\n public getNextBuffer(renderer: Pointer): OptimizedBuffer {\n const bufferPtr = this.opentui.symbols.getNextBuffer(renderer)\n if (!bufferPtr) {\n throw new Error(\"Failed to get next buffer\")\n }\n\n const width = this.opentui.symbols.getBufferWidth(bufferPtr)\n const height = this.opentui.symbols.getBufferHeight(bufferPtr)\n\n return new OptimizedBuffer(this, bufferPtr, width, height, { id: \"next buffer\", widthMethod: \"unicode\" })\n }\n\n public getCurrentBuffer(renderer: Pointer): OptimizedBuffer {\n const bufferPtr = this.opentui.symbols.getCurrentBuffer(renderer)\n if (!bufferPtr) {\n throw new Error(\"Failed to get current buffer\")\n }\n\n const width = this.opentui.symbols.getBufferWidth(bufferPtr)\n const height = this.opentui.symbols.getBufferHeight(bufferPtr)\n\n return new OptimizedBuffer(this, bufferPtr, width, height, { id: \"current buffer\", widthMethod: \"unicode\" })\n }\n\n public bufferGetCharPtr(buffer: Pointer): Pointer {\n const ptr = this.opentui.symbols.bufferGetCharPtr(buffer)\n if (!ptr) {\n throw new Error(\"Failed to get char pointer\")\n }\n return ptr\n }\n\n public bufferGetFgPtr(buffer: Pointer): Pointer {\n const ptr = this.opentui.symbols.bufferGetFgPtr(buffer)\n if (!ptr) {\n throw new Error(\"Failed to get fg pointer\")\n }\n return ptr\n }\n\n public bufferGetBgPtr(buffer: Pointer): Pointer {\n const ptr = this.opentui.symbols.bufferGetBgPtr(buffer)\n if (!ptr) {\n throw new Error(\"Failed to get bg pointer\")\n }\n return ptr\n }\n\n public bufferGetAttributesPtr(buffer: Pointer): Pointer {\n const ptr = this.opentui.symbols.bufferGetAttributesPtr(buffer)\n if (!ptr) {\n throw new Error(\"Failed to get attributes pointer\")\n }\n return ptr\n }\n\n public bufferGetRespectAlpha(buffer: Pointer): boolean {\n return this.opentui.symbols.bufferGetRespectAlpha(buffer)\n }\n\n public bufferSetRespectAlpha(buffer: Pointer, respectAlpha: boolean): void {\n this.opentui.symbols.bufferSetRespectAlpha(buffer, respectAlpha)\n }\n\n public bufferGetId(buffer: Pointer): string {\n const maxLen = 256\n const outBuffer = new Uint8Array(maxLen)\n const actualLen = this.opentui.symbols.bufferGetId(buffer, outBuffer, maxLen)\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\n return this.decoder.decode(outBuffer.slice(0, len))\n }\n\n public bufferGetRealCharSize(buffer: Pointer): number {\n return this.opentui.symbols.bufferGetRealCharSize(buffer)\n }\n\n public bufferWriteResolvedChars(buffer: Pointer, outputBuffer: Uint8Array, addLineBreaks: boolean): number {\n const bytesWritten = this.opentui.symbols.bufferWriteResolvedChars(\n buffer,\n outputBuffer,\n outputBuffer.length,\n addLineBreaks,\n )\n return typeof bytesWritten === \"bigint\" ? Number(bytesWritten) : bytesWritten\n }\n\n public getBufferWidth(buffer: Pointer): number {\n return this.opentui.symbols.getBufferWidth(buffer)\n }\n\n public getBufferHeight(buffer: Pointer): number {\n return this.opentui.symbols.getBufferHeight(buffer)\n }\n\n public bufferClear(buffer: Pointer, color: RGBA) {\n this.opentui.symbols.bufferClear(buffer, color.buffer)\n }\n\n public bufferDrawText(\n buffer: Pointer,\n text: string,\n x: number,\n y: number,\n color: RGBA,\n bgColor?: RGBA,\n attributes?: number,\n ) {\n const textBytes = this.encoder.encode(text)\n const textLength = textBytes.byteLength\n const bg = bgColor ? bgColor.buffer : null\n const fg = color.buffer\n\n this.opentui.symbols.bufferDrawText(buffer, textBytes, textLength, x, y, fg, bg, attributes ?? 0)\n }\n\n public bufferSetCellWithAlphaBlending(\n buffer: Pointer,\n x: number,\n y: number,\n char: string,\n color: RGBA,\n bgColor: RGBA,\n attributes?: number,\n ) {\n const charPtr = char.codePointAt(0) ?? \" \".codePointAt(0)!\n const bg = bgColor.buffer\n const fg = color.buffer\n\n this.opentui.symbols.bufferSetCellWithAlphaBlending(buffer, x, y, charPtr, fg, bg, attributes ?? 0)\n }\n\n public bufferSetCell(\n buffer: Pointer,\n x: number,\n y: number,\n char: string,\n color: RGBA,\n bgColor: RGBA,\n attributes?: number,\n ) {\n const charPtr = char.codePointAt(0) ?? \" \".codePointAt(0)!\n const bg = bgColor.buffer\n const fg = color.buffer\n\n this.opentui.symbols.bufferSetCell(buffer, x, y, charPtr, fg, bg, attributes ?? 0)\n }\n\n public bufferFillRect(buffer: Pointer, x: number, y: number, width: number, height: number, color: RGBA) {\n const bg = color.buffer\n this.opentui.symbols.bufferFillRect(buffer, x, y, width, height, bg)\n }\n\n public bufferDrawSuperSampleBuffer(\n buffer: Pointer,\n x: number,\n y: number,\n pixelDataPtr: Pointer,\n pixelDataLength: number,\n format: \"bgra8unorm\" | \"rgba8unorm\",\n alignedBytesPerRow: number,\n ): void {\n const formatId = format === \"bgra8unorm\" ? 0 : 1\n this.opentui.symbols.bufferDrawSuperSampleBuffer(\n buffer,\n x,\n y,\n pixelDataPtr,\n pixelDataLength,\n formatId,\n alignedBytesPerRow,\n )\n }\n\n public bufferDrawPackedBuffer(\n buffer: Pointer,\n dataPtr: Pointer,\n dataLen: number,\n posX: number,\n posY: number,\n terminalWidthCells: number,\n terminalHeightCells: number,\n ): void {\n this.opentui.symbols.bufferDrawPackedBuffer(\n buffer,\n dataPtr,\n dataLen,\n posX,\n posY,\n terminalWidthCells,\n terminalHeightCells,\n )\n }\n\n public bufferDrawBox(\n buffer: Pointer,\n x: number,\n y: number,\n width: number,\n height: number,\n borderChars: Uint32Array,\n packedOptions: number,\n borderColor: RGBA,\n backgroundColor: RGBA,\n title: string | null,\n ): void {\n const titleBytes = title ? this.encoder.encode(title) : null\n const titleLen = title ? titleBytes!.length : 0\n const titlePtr = title ? titleBytes : null\n\n this.opentui.symbols.bufferDrawBox(\n buffer,\n x,\n y,\n width,\n height,\n borderChars,\n packedOptions,\n borderColor.buffer,\n backgroundColor.buffer,\n titlePtr,\n titleLen,\n )\n }\n\n public bufferResize(buffer: Pointer, width: number, height: number): void {\n this.opentui.symbols.bufferResize(buffer, width, height)\n }\n\n public resizeRenderer(renderer: Pointer, width: number, height: number) {\n this.opentui.symbols.resizeRenderer(renderer, width, height)\n }\n\n public setCursorPosition(renderer: Pointer, x: number, y: number, visible: boolean) {\n this.opentui.symbols.setCursorPosition(renderer, x, y, visible)\n }\n\n public setCursorStyle(renderer: Pointer, style: CursorStyle, blinking: boolean) {\n const stylePtr = this.encoder.encode(style)\n this.opentui.symbols.setCursorStyle(renderer, stylePtr, style.length, blinking)\n }\n\n public setCursorColor(renderer: Pointer, color: RGBA) {\n this.opentui.symbols.setCursorColor(renderer, color.buffer)\n }\n\n public render(renderer: Pointer, force: boolean) {\n this.opentui.symbols.render(renderer, force)\n }\n\n public createOptimizedBuffer(\n width: number,\n height: number,\n widthMethod: WidthMethod,\n respectAlpha: boolean = false,\n id?: string,\n ): OptimizedBuffer {\n if (Number.isNaN(width) || Number.isNaN(height)) {\n console.error(new Error(`Invalid dimensions for OptimizedBuffer: ${width}x${height}`).stack)\n }\n\n const widthMethodCode = widthMethod === \"wcwidth\" ? 0 : 1\n const idToUse = id || \"unnamed buffer\"\n const idBytes = this.encoder.encode(idToUse)\n const bufferPtr = this.opentui.symbols.createOptimizedBuffer(\n width,\n height,\n respectAlpha,\n widthMethodCode,\n idBytes,\n idBytes.length,\n )\n if (!bufferPtr) {\n throw new Error(`Failed to create optimized buffer: ${width}x${height}`)\n }\n\n return new OptimizedBuffer(this, bufferPtr, width, height, { respectAlpha, id, widthMethod })\n }\n\n public destroyOptimizedBuffer(bufferPtr: Pointer) {\n this.opentui.symbols.destroyOptimizedBuffer(bufferPtr)\n }\n\n public drawFrameBuffer(\n targetBufferPtr: Pointer,\n destX: number,\n destY: number,\n bufferPtr: Pointer,\n sourceX?: number,\n sourceY?: number,\n sourceWidth?: number,\n sourceHeight?: number,\n ) {\n const srcX = sourceX ?? 0\n const srcY = sourceY ?? 0\n const srcWidth = sourceWidth ?? 0\n const srcHeight = sourceHeight ?? 0\n this.opentui.symbols.drawFrameBuffer(targetBufferPtr, destX, destY, bufferPtr, srcX, srcY, srcWidth, srcHeight)\n }\n\n public setDebugOverlay(renderer: Pointer, enabled: boolean, corner: DebugOverlayCorner) {\n this.opentui.symbols.setDebugOverlay(renderer, enabled, corner)\n }\n\n public clearTerminal(renderer: Pointer) {\n this.opentui.symbols.clearTerminal(renderer)\n }\n\n public setTerminalTitle(renderer: Pointer, title: string) {\n const titleBytes = this.encoder.encode(title)\n this.opentui.symbols.setTerminalTitle(renderer, titleBytes, titleBytes.length)\n }\n\n public addToHitGrid(renderer: Pointer, x: number, y: number, width: number, height: number, id: number) {\n this.opentui.symbols.addToHitGrid(renderer, x, y, width, height, id)\n }\n\n public checkHit(renderer: Pointer, x: number, y: number): number {\n return this.opentui.symbols.checkHit(renderer, x, y)\n }\n\n public dumpHitGrid(renderer: Pointer): void {\n this.opentui.symbols.dumpHitGrid(renderer)\n }\n\n public dumpBuffers(renderer: Pointer, timestamp?: number): void {\n const ts = timestamp ?? Date.now()\n this.opentui.symbols.dumpBuffers(renderer, ts)\n }\n\n public dumpStdoutBuffer(renderer: Pointer, timestamp?: number): void {\n const ts = timestamp ?? Date.now()\n this.opentui.symbols.dumpStdoutBuffer(renderer, ts)\n }\n\n public enableMouse(renderer: Pointer, enableMovement: boolean): void {\n this.opentui.symbols.enableMouse(renderer, enableMovement)\n }\n\n public disableMouse(renderer: Pointer): void {\n this.opentui.symbols.disableMouse(renderer)\n }\n\n public enableKittyKeyboard(renderer: Pointer, flags: number): void {\n this.opentui.symbols.enableKittyKeyboard(renderer, flags)\n }\n\n public disableKittyKeyboard(renderer: Pointer): void {\n this.opentui.symbols.disableKittyKeyboard(renderer)\n }\n\n public setUseKittyKeyboard(renderer: Pointer, use: boolean): void {\n this.opentui.symbols.setUseKittyKeyboard(renderer, use)\n }\n\n public getUseKittyKeyboard(renderer: Pointer): boolean {\n return this.opentui.symbols.getUseKittyKeyboard(renderer)\n }\n\n public setupTerminal(renderer: Pointer, useAlternateScreen: boolean): void {\n this.opentui.symbols.setupTerminal(renderer, useAlternateScreen)\n }\n\n public suspendRenderer(renderer: Pointer): void {\n this.opentui.symbols.suspendRenderer(renderer)\n }\n\n public resumeRenderer(renderer: Pointer): void {\n this.opentui.symbols.resumeRenderer(renderer)\n }\n\n public queryPixelResolution(renderer: Pointer): void {\n this.opentui.symbols.queryPixelResolution(renderer)\n }\n\n // TextBuffer methods\n public createTextBuffer(widthMethod: WidthMethod): TextBuffer {\n const widthMethodCode = widthMethod === \"wcwidth\" ? 0 : 1\n const bufferPtr = this.opentui.symbols.createTextBuffer(widthMethodCode)\n if (!bufferPtr) {\n throw new Error(`Failed to create TextBuffer`)\n }\n\n return new TextBuffer(this, bufferPtr)\n }\n\n public destroyTextBuffer(buffer: Pointer): void {\n this.opentui.symbols.destroyTextBuffer(buffer)\n }\n\n public textBufferGetLength(buffer: Pointer): number {\n return this.opentui.symbols.textBufferGetLength(buffer)\n }\n\n public textBufferGetByteSize(buffer: Pointer): number {\n return this.opentui.symbols.textBufferGetByteSize(buffer)\n }\n\n public textBufferReset(buffer: Pointer): void {\n this.opentui.symbols.textBufferReset(buffer)\n }\n\n public textBufferClear(buffer: Pointer): void {\n this.opentui.symbols.textBufferClear(buffer)\n }\n\n public textBufferSetDefaultFg(buffer: Pointer, fg: RGBA | null): void {\n const fgPtr = fg ? fg.buffer : null\n this.opentui.symbols.textBufferSetDefaultFg(buffer, fgPtr)\n }\n\n public textBufferSetDefaultBg(buffer: Pointer, bg: RGBA | null): void {\n const bgPtr = bg ? bg.buffer : null\n this.opentui.symbols.textBufferSetDefaultBg(buffer, bgPtr)\n }\n\n public textBufferSetDefaultAttributes(buffer: Pointer, attributes: number | null): void {\n const attrValue = attributes === null ? null : new Uint8Array([attributes])\n this.opentui.symbols.textBufferSetDefaultAttributes(buffer, attrValue)\n }\n\n public textBufferResetDefaults(buffer: Pointer): void {\n this.opentui.symbols.textBufferResetDefaults(buffer)\n }\n\n public textBufferGetTabWidth(buffer: Pointer): number {\n return this.opentui.symbols.textBufferGetTabWidth(buffer)\n }\n\n public textBufferSetTabWidth(buffer: Pointer, width: number): void {\n this.opentui.symbols.textBufferSetTabWidth(buffer, width)\n }\n\n public textBufferRegisterMemBuffer(buffer: Pointer, bytes: Uint8Array, owned: boolean = false): number {\n const result = this.opentui.symbols.textBufferRegisterMemBuffer(buffer, bytes, bytes.length, owned)\n if (result === 0xffff) {\n throw new Error(\"Failed to register memory buffer\")\n }\n return result\n }\n\n public textBufferReplaceMemBuffer(\n buffer: Pointer,\n memId: number,\n bytes: Uint8Array,\n owned: boolean = false,\n ): boolean {\n return this.opentui.symbols.textBufferReplaceMemBuffer(buffer, memId, bytes, bytes.length, owned)\n }\n\n public textBufferClearMemRegistry(buffer: Pointer): void {\n this.opentui.symbols.textBufferClearMemRegistry(buffer)\n }\n\n public textBufferSetTextFromMem(buffer: Pointer, memId: number): void {\n this.opentui.symbols.textBufferSetTextFromMem(buffer, memId)\n }\n\n public textBufferAppend(buffer: Pointer, bytes: Uint8Array): void {\n this.opentui.symbols.textBufferAppend(buffer, bytes, bytes.length)\n }\n\n public textBufferAppendFromMemId(buffer: Pointer, memId: number): void {\n this.opentui.symbols.textBufferAppendFromMemId(buffer, memId)\n }\n\n public textBufferLoadFile(buffer: Pointer, path: string): boolean {\n const pathBytes = this.encoder.encode(path)\n return this.opentui.symbols.textBufferLoadFile(buffer, pathBytes, pathBytes.length)\n }\n\n public textBufferSetStyledText(\n buffer: Pointer,\n chunks: Array<{ text: string; fg?: RGBA | null; bg?: RGBA | null; attributes?: number }>,\n ): void {\n // TODO: This should be a filter on the struct packing to not iterate twice\n const nonEmptyChunks = chunks.filter((c) => c.text.length > 0)\n if (nonEmptyChunks.length === 0) {\n this.textBufferClear(buffer)\n return\n }\n\n const chunksBuffer = StyledChunkStruct.packList(nonEmptyChunks)\n\n this.opentui.symbols.textBufferSetStyledText(buffer, ptr(chunksBuffer), nonEmptyChunks.length)\n }\n\n public textBufferGetLineCount(buffer: Pointer): number {\n return this.opentui.symbols.textBufferGetLineCount(buffer)\n }\n\n private textBufferGetPlainText(buffer: Pointer, outPtr: Pointer, maxLen: number): number {\n const result = this.opentui.symbols.textBufferGetPlainText(buffer, outPtr, maxLen)\n return typeof result === \"bigint\" ? Number(result) : result\n }\n\n public getPlainTextBytes(buffer: Pointer, maxLength: number): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n\n const actualLen = this.textBufferGetPlainText(buffer, ptr(outBuffer), maxLength)\n\n if (actualLen === 0) {\n return null\n }\n\n return outBuffer.slice(0, actualLen)\n }\n\n public textBufferGetTextRange(\n buffer: Pointer,\n startOffset: number,\n endOffset: number,\n maxLength: number,\n ): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n\n const actualLen = this.opentui.symbols.textBufferGetTextRange(\n buffer,\n startOffset,\n endOffset,\n ptr(outBuffer),\n maxLength,\n )\n\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\n\n if (len === 0) {\n return null\n }\n\n return outBuffer.slice(0, len)\n }\n\n public textBufferGetTextRangeByCoords(\n buffer: Pointer,\n startRow: number,\n startCol: number,\n endRow: number,\n endCol: number,\n maxLength: number,\n ): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n\n const actualLen = this.opentui.symbols.textBufferGetTextRangeByCoords(\n buffer,\n startRow,\n startCol,\n endRow,\n endCol,\n ptr(outBuffer),\n maxLength,\n )\n\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\n\n if (len === 0) {\n return null\n }\n\n return outBuffer.slice(0, len)\n }\n\n // TextBufferView methods\n public createTextBufferView(textBuffer: Pointer): Pointer {\n const viewPtr = this.opentui.symbols.createTextBufferView(textBuffer)\n if (!viewPtr) {\n throw new Error(\"Failed to create TextBufferView\")\n }\n return viewPtr\n }\n\n public destroyTextBufferView(view: Pointer): void {\n this.opentui.symbols.destroyTextBufferView(view)\n }\n\n public textBufferViewSetSelection(\n view: Pointer,\n start: number,\n end: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n ): void {\n const bg = bgColor ? bgColor.buffer : null\n const fg = fgColor ? fgColor.buffer : null\n this.opentui.symbols.textBufferViewSetSelection(view, start, end, bg, fg)\n }\n\n public textBufferViewResetSelection(view: Pointer): void {\n this.opentui.symbols.textBufferViewResetSelection(view)\n }\n\n public textBufferViewGetSelection(view: Pointer): { start: number; end: number } | null {\n const packedInfo = this.textBufferViewGetSelectionInfo(view)\n\n // Check for no selection marker (0xFFFFFFFF_FFFFFFFF)\n if (packedInfo === 0xffff_ffff_ffff_ffffn) {\n return null\n }\n\n const start = Number(packedInfo >> 32n)\n const end = Number(packedInfo & 0xffff_ffffn)\n\n return { start, end }\n }\n\n private textBufferViewGetSelectionInfo(view: Pointer): bigint {\n return this.opentui.symbols.textBufferViewGetSelectionInfo(view)\n }\n\n public textBufferViewSetLocalSelection(\n view: Pointer,\n anchorX: number,\n anchorY: number,\n focusX: number,\n focusY: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n ): boolean {\n const bg = bgColor ? bgColor.buffer : null\n const fg = fgColor ? fgColor.buffer : null\n return this.opentui.symbols.textBufferViewSetLocalSelection(view, anchorX, anchorY, focusX, focusY, bg, fg)\n }\n\n public textBufferViewResetLocalSelection(view: Pointer): void {\n this.opentui.symbols.textBufferViewResetLocalSelection(view)\n }\n\n public textBufferViewSetWrapWidth(view: Pointer, width: number): void {\n this.opentui.symbols.textBufferViewSetWrapWidth(view, width)\n }\n\n public textBufferViewSetWrapMode(view: Pointer, mode: \"none\" | \"char\" | \"word\"): void {\n const modeValue = mode === \"none\" ? 0 : mode === \"char\" ? 1 : 2\n this.opentui.symbols.textBufferViewSetWrapMode(view, modeValue)\n }\n\n public textBufferViewSetViewportSize(view: Pointer, width: number, height: number): void {\n this.opentui.symbols.textBufferViewSetViewportSize(view, width, height)\n }\n\n public textBufferViewSetViewport(view: Pointer, x: number, y: number, width: number, height: number): void {\n this.opentui.symbols.textBufferViewSetViewport(view, x, y, width, height)\n }\n\n public textBufferViewGetLineInfo(view: Pointer): LineInfo {\n const outBuffer = new ArrayBuffer(LineInfoStruct.size)\n this.textBufferViewGetLineInfoDirect(view, ptr(outBuffer))\n const struct = LineInfoStruct.unpack(outBuffer)\n return {\n maxLineWidth: struct.maxWidth,\n lineStarts: struct.starts as number[],\n lineWidths: struct.widths as number[],\n lineSources: struct.sources as number[],\n lineWraps: struct.wraps as number[],\n }\n }\n\n public textBufferViewGetLogicalLineInfo(view: Pointer): LineInfo {\n const outBuffer = new ArrayBuffer(LineInfoStruct.size)\n this.textBufferViewGetLogicalLineInfoDirect(view, ptr(outBuffer))\n const struct = LineInfoStruct.unpack(outBuffer)\n return {\n maxLineWidth: struct.maxWidth,\n lineStarts: struct.starts as number[],\n lineWidths: struct.widths as number[],\n lineSources: struct.sources as number[],\n lineWraps: struct.wraps as number[],\n }\n }\n\n public textBufferViewGetVirtualLineCount(view: Pointer): number {\n return this.opentui.symbols.textBufferViewGetVirtualLineCount(view)\n }\n\n private textBufferViewGetLineInfoDirect(view: Pointer, outPtr: Pointer): void {\n this.opentui.symbols.textBufferViewGetLineInfoDirect(view, outPtr)\n }\n\n private textBufferViewGetLogicalLineInfoDirect(view: Pointer, outPtr: Pointer): void {\n this.opentui.symbols.textBufferViewGetLogicalLineInfoDirect(view, outPtr)\n }\n\n private textBufferViewGetSelectedText(view: Pointer, outPtr: Pointer, maxLen: number): number {\n const result = this.opentui.symbols.textBufferViewGetSelectedText(view, outPtr, maxLen)\n return typeof result === \"bigint\" ? Number(result) : result\n }\n\n private textBufferViewGetPlainText(view: Pointer, outPtr: Pointer, maxLen: number): number {\n const result = this.opentui.symbols.textBufferViewGetPlainText(view, outPtr, maxLen)\n return typeof result === \"bigint\" ? Number(result) : result\n }\n\n public textBufferViewGetSelectedTextBytes(view: Pointer, maxLength: number): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n\n const actualLen = this.textBufferViewGetSelectedText(view, ptr(outBuffer), maxLength)\n\n if (actualLen === 0) {\n return null\n }\n\n return outBuffer.slice(0, actualLen)\n }\n\n public textBufferViewGetPlainTextBytes(view: Pointer, maxLength: number): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n\n const actualLen = this.textBufferViewGetPlainText(view, ptr(outBuffer), maxLength)\n\n if (actualLen === 0) {\n return null\n }\n\n return outBuffer.slice(0, actualLen)\n }\n\n public textBufferViewSetTabIndicator(view: Pointer, indicator: number): void {\n this.opentui.symbols.textBufferViewSetTabIndicator(view, indicator)\n }\n\n public textBufferViewSetTabIndicatorColor(view: Pointer, color: RGBA): void {\n this.opentui.symbols.textBufferViewSetTabIndicatorColor(view, color.buffer)\n }\n\n public textBufferViewMeasureForDimensions(\n view: Pointer,\n width: number,\n height: number,\n ): { lineCount: number; maxWidth: number } | null {\n const resultBuffer = new ArrayBuffer(MeasureResultStruct.size)\n const resultPtr = ptr(new Uint8Array(resultBuffer))\n const success = this.opentui.symbols.textBufferViewMeasureForDimensions(view, width, height, resultPtr)\n if (!success) {\n return null\n }\n const result = MeasureResultStruct.unpack(resultBuffer)\n return result\n }\n\n public textBufferAddHighlightByCharRange(buffer: Pointer, highlight: Highlight): void {\n const packedHighlight = HighlightStruct.pack(highlight)\n this.opentui.symbols.textBufferAddHighlightByCharRange(buffer, ptr(packedHighlight))\n }\n\n public textBufferAddHighlight(buffer: Pointer, lineIdx: number, highlight: Highlight): void {\n const packedHighlight = HighlightStruct.pack(highlight)\n this.opentui.symbols.textBufferAddHighlight(buffer, lineIdx, ptr(packedHighlight))\n }\n\n public textBufferRemoveHighlightsByRef(buffer: Pointer, hlRef: number): void {\n this.opentui.symbols.textBufferRemoveHighlightsByRef(buffer, hlRef)\n }\n\n public textBufferClearLineHighlights(buffer: Pointer, lineIdx: number): void {\n this.opentui.symbols.textBufferClearLineHighlights(buffer, lineIdx)\n }\n\n public textBufferClearAllHighlights(buffer: Pointer): void {\n this.opentui.symbols.textBufferClearAllHighlights(buffer)\n }\n\n public textBufferSetSyntaxStyle(buffer: Pointer, style: Pointer | null): void {\n this.opentui.symbols.textBufferSetSyntaxStyle(buffer, style)\n }\n\n public textBufferGetLineHighlights(buffer: Pointer, lineIdx: number): Array<Highlight> {\n const outCountBuf = new BigUint64Array(1)\n\n const nativePtr = this.opentui.symbols.textBufferGetLineHighlightsPtr(buffer, lineIdx, ptr(outCountBuf))\n if (!nativePtr) return []\n\n const count = Number(outCountBuf[0])\n const byteLen = count * HighlightStruct.size\n const raw = toArrayBuffer(nativePtr, 0, byteLen)\n const results = HighlightStruct.unpackList(raw, count)\n\n this.opentui.symbols.textBufferFreeLineHighlights(nativePtr, count)\n\n return results\n }\n\n public textBufferGetHighlightCount(buffer: Pointer): number {\n return this.opentui.symbols.textBufferGetHighlightCount(buffer)\n }\n\n public getArenaAllocatedBytes(): number {\n const result = this.opentui.symbols.getArenaAllocatedBytes()\n return typeof result === \"bigint\" ? Number(result) : result\n }\n\n public bufferDrawTextBufferView(buffer: Pointer, view: Pointer, x: number, y: number): void {\n this.opentui.symbols.bufferDrawTextBufferView(buffer, view, x, y)\n }\n\n public bufferDrawEditorView(buffer: Pointer, view: Pointer, x: number, y: number): void {\n this.opentui.symbols.bufferDrawEditorView(buffer, view, x, y)\n }\n\n // EditorView methods\n public createEditorView(editBufferPtr: Pointer, viewportWidth: number, viewportHeight: number): Pointer {\n const viewPtr = this.opentui.symbols.createEditorView(editBufferPtr, viewportWidth, viewportHeight)\n if (!viewPtr) {\n throw new Error(\"Failed to create EditorView\")\n }\n return viewPtr\n }\n\n public destroyEditorView(view: Pointer): void {\n this.opentui.symbols.destroyEditorView(view)\n }\n\n public editorViewSetViewportSize(view: Pointer, width: number, height: number): void {\n this.opentui.symbols.editorViewSetViewportSize(view, width, height)\n }\n\n public editorViewGetViewport(view: Pointer): { offsetY: number; offsetX: number; height: number; width: number } {\n const x = new Uint32Array(1)\n const y = new Uint32Array(1)\n const width = new Uint32Array(1)\n const height = new Uint32Array(1)\n\n this.opentui.symbols.editorViewGetViewport(view, ptr(x), ptr(y), ptr(width), ptr(height))\n\n return {\n offsetX: x[0],\n offsetY: y[0],\n width: width[0],\n height: height[0],\n }\n }\n\n public editorViewSetScrollMargin(view: Pointer, margin: number): void {\n this.opentui.symbols.editorViewSetScrollMargin(view, margin)\n }\n\n public editorViewSetWrapMode(view: Pointer, mode: \"none\" | \"char\" | \"word\"): void {\n const modeValue = mode === \"none\" ? 0 : mode === \"char\" ? 1 : 2\n this.opentui.symbols.editorViewSetWrapMode(view, modeValue)\n }\n\n public editorViewGetVirtualLineCount(view: Pointer): number {\n return this.opentui.symbols.editorViewGetVirtualLineCount(view)\n }\n\n public editorViewGetTotalVirtualLineCount(view: Pointer): number {\n return this.opentui.symbols.editorViewGetTotalVirtualLineCount(view)\n }\n\n public editorViewGetTextBufferView(view: Pointer): Pointer {\n const result = this.opentui.symbols.editorViewGetTextBufferView(view)\n if (!result) {\n throw new Error(\"Failed to get TextBufferView from EditorView\")\n }\n return result\n }\n\n public editorViewGetLineInfo(view: Pointer): LineInfo {\n const outBuffer = new ArrayBuffer(LineInfoStruct.size)\n this.opentui.symbols.editorViewGetLineInfoDirect(view, ptr(outBuffer))\n const struct = LineInfoStruct.unpack(outBuffer)\n return {\n maxLineWidth: struct.maxWidth,\n lineStarts: struct.starts as number[],\n lineWidths: struct.widths as number[],\n lineSources: struct.sources as number[],\n lineWraps: struct.wraps as number[],\n }\n }\n\n public editorViewGetLogicalLineInfo(view: Pointer): LineInfo {\n const outBuffer = new ArrayBuffer(LineInfoStruct.size)\n this.opentui.symbols.editorViewGetLogicalLineInfoDirect(view, ptr(outBuffer))\n const struct = LineInfoStruct.unpack(outBuffer)\n return {\n maxLineWidth: struct.maxWidth,\n lineStarts: struct.starts as number[],\n lineWidths: struct.widths as number[],\n lineSources: struct.sources as number[],\n lineWraps: struct.wraps as number[],\n }\n }\n\n // EditBuffer implementations\n public createEditBuffer(widthMethod: WidthMethod): Pointer {\n const widthMethodCode = widthMethod === \"wcwidth\" ? 0 : 1\n const bufferPtr = this.opentui.symbols.createEditBuffer(widthMethodCode)\n if (!bufferPtr) {\n throw new Error(\"Failed to create EditBuffer\")\n }\n return bufferPtr\n }\n\n public destroyEditBuffer(buffer: Pointer): void {\n this.opentui.symbols.destroyEditBuffer(buffer)\n }\n\n public editBufferSetText(buffer: Pointer, textBytes: Uint8Array, retainHistory: boolean = true): void {\n this.opentui.symbols.editBufferSetText(buffer, textBytes, textBytes.length, retainHistory)\n }\n\n public editBufferSetTextFromMem(buffer: Pointer, memId: number, retainHistory: boolean = true): void {\n this.opentui.symbols.editBufferSetTextFromMem(buffer, memId, retainHistory)\n }\n\n public editBufferGetText(buffer: Pointer, maxLength: number): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n const actualLen = this.opentui.symbols.editBufferGetText(buffer, ptr(outBuffer), maxLength)\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\n if (len === 0) return null\n return outBuffer.slice(0, len)\n }\n\n public editBufferInsertChar(buffer: Pointer, char: string): void {\n const charBytes = this.encoder.encode(char)\n this.opentui.symbols.editBufferInsertChar(buffer, charBytes, charBytes.length)\n }\n\n public editBufferInsertText(buffer: Pointer, text: string): void {\n const textBytes = this.encoder.encode(text)\n this.opentui.symbols.editBufferInsertText(buffer, textBytes, textBytes.length)\n }\n\n public editBufferDeleteChar(buffer: Pointer): void {\n this.opentui.symbols.editBufferDeleteChar(buffer)\n }\n\n public editBufferDeleteCharBackward(buffer: Pointer): void {\n this.opentui.symbols.editBufferDeleteCharBackward(buffer)\n }\n\n public editBufferDeleteRange(\n buffer: Pointer,\n startLine: number,\n startCol: number,\n endLine: number,\n endCol: number,\n ): void {\n this.opentui.symbols.editBufferDeleteRange(buffer, startLine, startCol, endLine, endCol)\n }\n\n public editBufferNewLine(buffer: Pointer): void {\n this.opentui.symbols.editBufferNewLine(buffer)\n }\n\n public editBufferDeleteLine(buffer: Pointer): void {\n this.opentui.symbols.editBufferDeleteLine(buffer)\n }\n\n public editBufferMoveCursorLeft(buffer: Pointer): void {\n this.opentui.symbols.editBufferMoveCursorLeft(buffer)\n }\n\n public editBufferMoveCursorRight(buffer: Pointer): void {\n this.opentui.symbols.editBufferMoveCursorRight(buffer)\n }\n\n public editBufferMoveCursorUp(buffer: Pointer): void {\n this.opentui.symbols.editBufferMoveCursorUp(buffer)\n }\n\n public editBufferMoveCursorDown(buffer: Pointer): void {\n this.opentui.symbols.editBufferMoveCursorDown(buffer)\n }\n\n public editBufferGotoLine(buffer: Pointer, line: number): void {\n this.opentui.symbols.editBufferGotoLine(buffer, line)\n }\n\n public editBufferSetCursor(buffer: Pointer, line: number, byteOffset: number): void {\n this.opentui.symbols.editBufferSetCursor(buffer, line, byteOffset)\n }\n\n public editBufferSetCursorToLineCol(buffer: Pointer, line: number, col: number): void {\n this.opentui.symbols.editBufferSetCursorToLineCol(buffer, line, col)\n }\n\n public editBufferSetCursorByOffset(buffer: Pointer, offset: number): void {\n this.opentui.symbols.editBufferSetCursorByOffset(buffer, offset)\n }\n\n public editBufferGetCursorPosition(buffer: Pointer): LogicalCursor {\n const cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size)\n this.opentui.symbols.editBufferGetCursorPosition(buffer, ptr(cursorBuffer))\n return LogicalCursorStruct.unpack(cursorBuffer)\n }\n\n public editBufferGetId(buffer: Pointer): number {\n return this.opentui.symbols.editBufferGetId(buffer)\n }\n\n public editBufferGetTextBuffer(buffer: Pointer): Pointer {\n const result = this.opentui.symbols.editBufferGetTextBuffer(buffer)\n if (!result) {\n throw new Error(\"Failed to get TextBuffer from EditBuffer\")\n }\n return result\n }\n\n public editBufferDebugLogRope(buffer: Pointer): void {\n this.opentui.symbols.editBufferDebugLogRope(buffer)\n }\n\n public editBufferUndo(buffer: Pointer, maxLength: number): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n const actualLen = this.opentui.symbols.editBufferUndo(buffer, ptr(outBuffer), maxLength)\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\n if (len === 0) return null\n return outBuffer.slice(0, len)\n }\n\n public editBufferRedo(buffer: Pointer, maxLength: number): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n const actualLen = this.opentui.symbols.editBufferRedo(buffer, ptr(outBuffer), maxLength)\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\n if (len === 0) return null\n return outBuffer.slice(0, len)\n }\n\n public editBufferCanUndo(buffer: Pointer): boolean {\n return this.opentui.symbols.editBufferCanUndo(buffer)\n }\n\n public editBufferCanRedo(buffer: Pointer): boolean {\n return this.opentui.symbols.editBufferCanRedo(buffer)\n }\n\n public editBufferClearHistory(buffer: Pointer): void {\n this.opentui.symbols.editBufferClearHistory(buffer)\n }\n\n public editBufferClear(buffer: Pointer): void {\n this.opentui.symbols.editBufferClear(buffer)\n }\n\n public editBufferGetNextWordBoundary(buffer: Pointer): LogicalCursor {\n const cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size)\n this.opentui.symbols.editBufferGetNextWordBoundary(buffer, ptr(cursorBuffer))\n return LogicalCursorStruct.unpack(cursorBuffer)\n }\n\n public editBufferGetPrevWordBoundary(buffer: Pointer): LogicalCursor {\n const cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size)\n this.opentui.symbols.editBufferGetPrevWordBoundary(buffer, ptr(cursorBuffer))\n return LogicalCursorStruct.unpack(cursorBuffer)\n }\n\n public editBufferGetEOL(buffer: Pointer): LogicalCursor {\n const cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size)\n this.opentui.symbols.editBufferGetEOL(buffer, ptr(cursorBuffer))\n return LogicalCursorStruct.unpack(cursorBuffer)\n }\n\n public editBufferOffsetToPosition(buffer: Pointer, offset: number): LogicalCursor | null {\n const cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size)\n const success = this.opentui.symbols.editBufferOffsetToPosition(buffer, offset, ptr(cursorBuffer))\n if (!success) return null\n return LogicalCursorStruct.unpack(cursorBuffer)\n }\n\n public editBufferPositionToOffset(buffer: Pointer, row: number, col: number): number {\n return this.opentui.symbols.editBufferPositionToOffset(buffer, row, col)\n }\n\n public editBufferGetLineStartOffset(buffer: Pointer, row: number): number {\n return this.opentui.symbols.editBufferGetLineStartOffset(buffer, row)\n }\n\n public editBufferGetTextRange(\n buffer: Pointer,\n startOffset: number,\n endOffset: number,\n maxLength: number,\n ): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n const actualLen = this.opentui.symbols.editBufferGetTextRange(\n buffer,\n startOffset,\n endOffset,\n ptr(outBuffer),\n maxLength,\n )\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\n if (len === 0) return null\n return outBuffer.slice(0, len)\n }\n\n public editBufferGetTextRangeByCoords(\n buffer: Pointer,\n startRow: number,\n startCol: number,\n endRow: number,\n endCol: number,\n maxLength: number,\n ): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n const actualLen = this.opentui.symbols.editBufferGetTextRangeByCoords(\n buffer,\n startRow,\n startCol,\n endRow,\n endCol,\n ptr(outBuffer),\n maxLength,\n )\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\n if (len === 0) return null\n return outBuffer.slice(0, len)\n }\n\n // EditorView selection and editing implementations\n public editorViewSetSelection(\n view: Pointer,\n start: number,\n end: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n ): void {\n const bg = bgColor ? bgColor.buffer : null\n const fg = fgColor ? fgColor.buffer : null\n this.opentui.symbols.editorViewSetSelection(view, start, end, bg, fg)\n }\n\n public editorViewResetSelection(view: Pointer): void {\n this.opentui.symbols.editorViewResetSelection(view)\n }\n\n public editorViewGetSelection(view: Pointer): { start: number; end: number } | null {\n const packedInfo = this.opentui.symbols.editorViewGetSelection(view)\n if (packedInfo === 0xffff_ffff_ffff_ffffn) {\n return null\n }\n const start = Number(packedInfo >> 32n)\n const end = Number(packedInfo & 0xffff_ffffn)\n return { start, end }\n }\n\n public editorViewSetLocalSelection(\n view: Pointer,\n anchorX: number,\n anchorY: number,\n focusX: number,\n focusY: number,\n bgColor: RGBA | null,\n fgColor: RGBA | null,\n ): boolean {\n const bg = bgColor ? bgColor.buffer : null\n const fg = fgColor ? fgColor.buffer : null\n return this.opentui.symbols.editorViewSetLocalSelection(view, anchorX, anchorY, focusX, focusY, bg, fg)\n }\n\n public editorViewResetLocalSelection(view: Pointer): void {\n this.opentui.symbols.editorViewResetLocalSelection(view)\n }\n\n public editorViewGetSelectedTextBytes(view: Pointer, maxLength: number): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n const actualLen = this.opentui.symbols.editorViewGetSelectedTextBytes(view, ptr(outBuffer), maxLength)\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\n if (len === 0) return null\n return outBuffer.slice(0, len)\n }\n\n public editorViewGetCursor(view: Pointer): { row: number; col: number } {\n const row = new Uint32Array(1)\n const col = new Uint32Array(1)\n this.opentui.symbols.editorViewGetCursor(view, ptr(row), ptr(col))\n return { row: row[0], col: col[0] }\n }\n\n public editorViewGetText(view: Pointer, maxLength: number): Uint8Array | null {\n const outBuffer = new Uint8Array(maxLength)\n const actualLen = this.opentui.symbols.editorViewGetText(view, ptr(outBuffer), maxLength)\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\n if (len === 0) return null\n return outBuffer.slice(0, len)\n }\n\n public editorViewGetVisualCursor(view: Pointer): VisualCursor {\n const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size)\n this.opentui.symbols.editorViewGetVisualCursor(view, ptr(cursorBuffer))\n return VisualCursorStruct.unpack(cursorBuffer)\n }\n\n public editorViewMoveUpVisual(view: Pointer): void {\n this.opentui.symbols.editorViewMoveUpVisual(view)\n }\n\n public editorViewMoveDownVisual(view: Pointer): void {\n this.opentui.symbols.editorViewMoveDownVisual(view)\n }\n\n public editorViewDeleteSelectedText(view: Pointer): void {\n this.opentui.symbols.editorViewDeleteSelectedText(view)\n }\n\n public editorViewSetCursorByOffset(view: Pointer, offset: number): void {\n this.opentui.symbols.editorViewSetCursorByOffset(view, offset)\n }\n\n public editorViewGetNextWordBoundary(view: Pointer): VisualCursor {\n const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size)\n this.opentui.symbols.editorViewGetNextWordBoundary(view, ptr(cursorBuffer))\n return VisualCursorStruct.unpack(cursorBuffer)\n }\n\n public editorViewGetPrevWordBoundary(view: Pointer): VisualCursor {\n const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size)\n this.opentui.symbols.editorViewGetPrevWordBoundary(view, ptr(cursorBuffer))\n return VisualCursorStruct.unpack(cursorBuffer)\n }\n\n public editorViewGetEOL(view: Pointer): VisualCursor {\n const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size)\n this.opentui.symbols.editorViewGetEOL(view, ptr(cursorBuffer))\n return VisualCursorStruct.unpack(cursorBuffer)\n }\n\n public bufferPushScissorRect(buffer: Pointer, x: number, y: number, width: number, height: number): void {\n this.opentui.symbols.bufferPushScissorRect(buffer, x, y, width, height)\n }\n\n public bufferPopScissorRect(buffer: Pointer): void {\n this.opentui.symbols.bufferPopScissorRect(buffer)\n }\n\n public bufferClearScissorRects(buffer: Pointer): void {\n this.opentui.symbols.bufferClearScissorRects(buffer)\n }\n\n public getTerminalCapabilities(renderer: Pointer) {\n const capsBuffer = new ArrayBuffer(TerminalCapabilitiesStruct.size)\n this.opentui.symbols.getTerminalCapabilities(renderer, ptr(capsBuffer))\n\n const caps = TerminalCapabilitiesStruct.unpack(capsBuffer)\n\n return {\n kitty_keyboard: caps.kitty_keyboard,\n kitty_graphics: caps.kitty_graphics,\n rgb: caps.rgb,\n unicode: caps.unicode,\n sgr_pixels: caps.sgr_pixels,\n color_scheme_updates: caps.color_scheme_updates,\n explicit_width: caps.explicit_width,\n scaled_text: caps.scaled_text,\n sixel: caps.sixel,\n focus_tracking: caps.focus_tracking,\n sync: caps.sync,\n bracketed_paste: caps.bracketed_paste,\n hyperlinks: caps.hyperlinks,\n terminal: {\n name: caps.term_name ?? \"\",\n version: caps.term_version ?? \"\",\n from_xtversion: caps.term_from_xtversion,\n },\n }\n }\n\n public processCapabilityResponse(renderer: Pointer, response: string): void {\n const responseBytes = this.encoder.encode(response)\n this.opentui.symbols.processCapabilityResponse(renderer, responseBytes, responseBytes.length)\n }\n\n public encodeUnicode(\n text: string,\n widthMethod: WidthMethod,\n ): { ptr: Pointer; data: Array<{ width: number; char: number }> } | null {\n const textBytes = this.encoder.encode(text)\n const widthMethodCode = widthMethod === \"wcwidth\" ? 0 : 1\n\n const outPtrBuffer = new ArrayBuffer(8) // Pointer size\n const outLenBuffer = new ArrayBuffer(8) // usize\n\n const success = this.opentui.symbols.encodeUnicode(\n textBytes,\n textBytes.length,\n ptr(outPtrBuffer),\n ptr(outLenBuffer),\n widthMethodCode,\n )\n\n if (!success) {\n return null\n }\n\n const outPtrView = new BigUint64Array(outPtrBuffer)\n const outLenView = new BigUint64Array(outLenBuffer)\n\n const resultPtr = Number(outPtrView[0]) as Pointer\n const resultLen = Number(outLenView[0])\n\n if (resultLen === 0) {\n return { ptr: resultPtr, data: [] }\n }\n\n // Convert pointer to ArrayBuffer and use EncodedCharStruct to unpack the list\n const byteLen = resultLen * EncodedCharStruct.size\n const raw = toArrayBuffer(resultPtr, 0, byteLen)\n const data = EncodedCharStruct.unpackList(raw, resultLen)\n\n return { ptr: resultPtr, data }\n }\n\n public freeUnicode(encoded: { ptr: Pointer; data: Array<{ width: number; char: number }> }): void {\n this.opentui.symbols.freeUnicode(encoded.ptr, encoded.data.length)\n }\n\n public bufferDrawChar(\n buffer: Pointer,\n char: number,\n x: number,\n y: number,\n fg: RGBA,\n bg: RGBA,\n attributes: number = 0,\n ): void {\n this.opentui.symbols.bufferDrawChar(buffer, char, x, y, fg.buffer, bg.buffer, attributes)\n }\n\n public createSyntaxStyle(): Pointer {\n const stylePtr = this.opentui.symbols.createSyntaxStyle()\n if (!stylePtr) {\n throw new Error(\"Failed to create SyntaxStyle\")\n }\n return stylePtr\n }\n\n public destroySyntaxStyle(style: Pointer): void {\n this.opentui.symbols.destroySyntaxStyle(style)\n }\n\n public syntaxStyleRegister(\n style: Pointer,\n name: string,\n fg: RGBA | null,\n bg: RGBA | null,\n attributes: number,\n ): number {\n const nameBytes = this.encoder.encode(name)\n const fgPtr = fg ? fg.buffer : null\n const bgPtr = bg ? bg.buffer : null\n return this.opentui.symbols.syntaxStyleRegister(style, nameBytes, nameBytes.length, fgPtr, bgPtr, attributes)\n }\n\n public syntaxStyleResolveByName(style: Pointer, name: string): number | null {\n const nameBytes = this.encoder.encode(name)\n const id = this.opentui.symbols.syntaxStyleResolveByName(style, nameBytes, nameBytes.length)\n return id === 0 ? null : id\n }\n\n public syntaxStyleGetStyleCount(style: Pointer): number {\n const result = this.opentui.symbols.syntaxStyleGetStyleCount(style)\n return typeof result === \"bigint\" ? Number(result) : result\n }\n\n public editorViewSetPlaceholderStyledText(\n view: Pointer,\n chunks: Array<{ text: string; fg?: RGBA | null; bg?: RGBA | null; attributes?: number }>,\n ): void {\n const nonEmptyChunks = chunks.filter((c) => c.text.length > 0)\n if (nonEmptyChunks.length === 0) {\n this.opentui.symbols.editorViewSetPlaceholderStyledText(view, null, 0)\n return\n }\n\n const chunksBuffer = StyledChunkStruct.packList(nonEmptyChunks)\n this.opentui.symbols.editorViewSetPlaceholderStyledText(view, ptr(chunksBuffer), nonEmptyChunks.length)\n }\n\n public editorViewSetTabIndicator(view: Pointer, indicator: number): void {\n this.opentui.symbols.editorViewSetTabIndicator(view, indicator)\n }\n\n public editorViewSetTabIndicatorColor(view: Pointer, color: RGBA): void {\n this.opentui.symbols.editorViewSetTabIndicatorColor(view, color.buffer)\n }\n\n public onNativeEvent(name: string, handler: (data: ArrayBuffer) => void): void {\n this._nativeEvents.on(name, handler)\n }\n\n public onceNativeEvent(name: string, handler: (data: ArrayBuffer) => void): void {\n this._nativeEvents.once(name, handler)\n }\n\n public offNativeEvent(name: string, handler: (data: ArrayBuffer) => void): void {\n this._nativeEvents.off(name, handler)\n }\n\n public onAnyNativeEvent(handler: (name: string, data: ArrayBuffer) => void): void {\n this._anyEventHandlers.push(handler)\n }\n}\n\nlet opentuiLibPath: string | undefined\nlet opentuiLib: RenderLib | undefined\n\nexport function setRenderLibPath(libPath: string) {\n if (opentuiLibPath !== libPath) {\n opentuiLibPath = libPath\n opentuiLib = undefined\n }\n}\n\nexport function resolveRenderLib(): RenderLib {\n if (!opentuiLib) {\n try {\n opentuiLib = new FFIRenderLib(opentuiLibPath)\n } catch (error) {\n throw new Error(\n `Failed to initialize OpenTUI render library: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n )\n }\n }\n return opentuiLib\n}\n\n// Try eager loading\ntry {\n opentuiLib = new FFIRenderLib(opentuiLibPath)\n} catch (error) {}\n",
41
42
  "import type { TextBuffer } from \"./text-buffer\"\nimport { RGBA } from \"./lib\"\nimport { resolveRenderLib, type RenderLib } from \"./zig\"\nimport { type Pointer, toArrayBuffer } from \"bun:ffi\"\nimport { type BorderStyle, type BorderSides, BorderCharArrays } from \"./lib\"\nimport { type WidthMethod } from \"./types\"\nimport type { TextBufferView } from \"./text-buffer-view\"\nimport type { EditorView } from \"./editor-view\"\n\n// Pack drawing options into a single u32\n// bits 0-3: borderSides, bit 4: shouldFill, bits 5-6: titleAlignment\nfunction packDrawOptions(\n border: boolean | BorderSides[],\n shouldFill: boolean,\n titleAlignment: \"left\" | \"center\" | \"right\",\n): number {\n let packed = 0\n\n if (border === true) {\n packed |= 0b1111 // All sides\n } else if (Array.isArray(border)) {\n if (border.includes(\"top\")) packed |= 0b1000\n if (border.includes(\"right\")) packed |= 0b0100\n if (border.includes(\"bottom\")) packed |= 0b0010\n if (border.includes(\"left\")) packed |= 0b0001\n }\n\n if (shouldFill) {\n packed |= 1 << 4\n }\n\n const alignmentMap: Record<string, number> = {\n left: 0,\n center: 1,\n right: 2,\n }\n const alignment = alignmentMap[titleAlignment]\n packed |= alignment << 5\n\n return packed\n}\n\nexport class OptimizedBuffer {\n private static fbIdCounter = 0\n public id: string\n public lib: RenderLib\n private bufferPtr: Pointer\n private _width: number\n private _height: number\n private _widthMethod: WidthMethod\n public respectAlpha: boolean = false\n private _rawBuffers: {\n char: Uint32Array\n fg: Float32Array\n bg: Float32Array\n attributes: Uint8Array\n } | null = null\n private _destroyed: boolean = false\n\n get ptr(): Pointer {\n return this.bufferPtr\n }\n\n // Fail loud and clear\n // Instead of trying to return values that could work or not,\n // this at least will show a stack trace to know where the call to a destroyed Buffer was made\n private guard(): void {\n if (this._destroyed) throw new Error(`Buffer ${this.id} is destroyed`)\n }\n\n get buffers(): {\n char: Uint32Array\n fg: Float32Array\n bg: Float32Array\n attributes: Uint8Array\n } {\n this.guard()\n if (this._rawBuffers === null) {\n const size = this._width * this._height\n const charPtr = this.lib.bufferGetCharPtr(this.bufferPtr)\n const fgPtr = this.lib.bufferGetFgPtr(this.bufferPtr)\n const bgPtr = this.lib.bufferGetBgPtr(this.bufferPtr)\n const attributesPtr = this.lib.bufferGetAttributesPtr(this.bufferPtr)\n\n this._rawBuffers = {\n char: new Uint32Array(toArrayBuffer(charPtr, 0, size * 4)),\n fg: new Float32Array(toArrayBuffer(fgPtr, 0, size * 4 * 4)),\n bg: new Float32Array(toArrayBuffer(bgPtr, 0, size * 4 * 4)),\n attributes: new Uint8Array(toArrayBuffer(attributesPtr, 0, size)),\n }\n }\n\n return this._rawBuffers\n }\n\n constructor(\n lib: RenderLib,\n ptr: Pointer,\n width: number,\n height: number,\n options: { respectAlpha?: boolean; id?: string; widthMethod?: WidthMethod },\n ) {\n this.id = options.id || `fb_${OptimizedBuffer.fbIdCounter++}`\n this.lib = lib\n this.respectAlpha = options.respectAlpha || false\n this._width = width\n this._height = height\n this._widthMethod = options.widthMethod || \"unicode\"\n this.bufferPtr = ptr\n }\n\n static create(\n width: number,\n height: number,\n widthMethod: WidthMethod,\n options: { respectAlpha?: boolean; id?: string } = {},\n ): OptimizedBuffer {\n const lib = resolveRenderLib()\n const respectAlpha = options.respectAlpha || false\n const id = options.id && options.id.trim() !== \"\" ? options.id : \"unnamed buffer\"\n const buffer = lib.createOptimizedBuffer(width, height, widthMethod, respectAlpha, id)\n return buffer\n }\n\n public get widthMethod(): WidthMethod {\n return this._widthMethod\n }\n\n public get width(): number {\n return this._width\n }\n\n public get height(): number {\n return this._height\n }\n\n public setRespectAlpha(respectAlpha: boolean): void {\n this.guard()\n this.lib.bufferSetRespectAlpha(this.bufferPtr, respectAlpha)\n this.respectAlpha = respectAlpha\n }\n\n public getNativeId(): string {\n this.guard()\n return this.lib.bufferGetId(this.bufferPtr)\n }\n\n public getRealCharBytes(addLineBreaks: boolean = false): Uint8Array {\n this.guard()\n const realSize = this.lib.bufferGetRealCharSize(this.bufferPtr)\n const outputBuffer = new Uint8Array(realSize)\n const bytesWritten = this.lib.bufferWriteResolvedChars(this.bufferPtr, outputBuffer, addLineBreaks)\n return outputBuffer.slice(0, bytesWritten)\n }\n\n public clear(bg: RGBA = RGBA.fromValues(0, 0, 0, 1)): void {\n this.guard()\n this.lib.bufferClear(this.bufferPtr, bg)\n }\n\n public setCell(x: number, y: number, char: string, fg: RGBA, bg: RGBA, attributes: number = 0): void {\n this.guard()\n this.lib.bufferSetCell(this.bufferPtr, x, y, char, fg, bg, attributes)\n }\n\n public setCellWithAlphaBlending(\n x: number,\n y: number,\n char: string,\n fg: RGBA,\n bg: RGBA,\n attributes: number = 0,\n ): void {\n this.guard()\n this.lib.bufferSetCellWithAlphaBlending(this.bufferPtr, x, y, char, fg, bg, attributes)\n }\n\n public drawText(\n text: string,\n x: number,\n y: number,\n fg: RGBA,\n bg?: RGBA,\n attributes: number = 0,\n selection?: { start: number; end: number; bgColor?: RGBA; fgColor?: RGBA } | null,\n ): void {\n this.guard()\n if (!selection) {\n this.lib.bufferDrawText(this.bufferPtr, text, x, y, fg, bg, attributes)\n return\n }\n\n const { start, end } = selection\n\n let selectionBg: RGBA\n let selectionFg: RGBA\n\n if (selection.bgColor) {\n selectionBg = selection.bgColor\n selectionFg = selection.fgColor || fg\n } else {\n const defaultBg = bg || RGBA.fromValues(0, 0, 0, 0)\n selectionFg = defaultBg.a > 0 ? defaultBg : RGBA.fromValues(0, 0, 0, 1)\n selectionBg = fg\n }\n\n if (start > 0) {\n const beforeText = text.slice(0, start)\n this.lib.bufferDrawText(this.bufferPtr, beforeText, x, y, fg, bg, attributes)\n }\n\n if (end > start) {\n const selectedText = text.slice(start, end)\n this.lib.bufferDrawText(this.bufferPtr, selectedText, x + start, y, selectionFg, selectionBg, attributes)\n }\n\n if (end < text.length) {\n const afterText = text.slice(end)\n this.lib.bufferDrawText(this.bufferPtr, afterText, x + end, y, fg, bg, attributes)\n }\n }\n\n public fillRect(x: number, y: number, width: number, height: number, bg: RGBA): void {\n this.lib.bufferFillRect(this.bufferPtr, x, y, width, height, bg)\n }\n\n public drawFrameBuffer(\n destX: number,\n destY: number,\n frameBuffer: OptimizedBuffer,\n sourceX?: number,\n sourceY?: number,\n sourceWidth?: number,\n sourceHeight?: number,\n ): void {\n this.guard()\n this.lib.drawFrameBuffer(this.bufferPtr, destX, destY, frameBuffer.ptr, sourceX, sourceY, sourceWidth, sourceHeight)\n }\n\n public destroy(): void {\n if (this._destroyed) return\n this._destroyed = true\n this.lib.destroyOptimizedBuffer(this.bufferPtr)\n }\n\n public drawTextBuffer(textBufferView: TextBufferView, x: number, y: number): void {\n this.guard()\n this.lib.bufferDrawTextBufferView(this.bufferPtr, textBufferView.ptr, x, y)\n }\n\n public drawEditorView(editorView: EditorView, x: number, y: number): void {\n this.guard()\n this.lib.bufferDrawEditorView(this.bufferPtr, editorView.ptr, x, y)\n }\n\n public drawSuperSampleBuffer(\n x: number,\n y: number,\n pixelDataPtr: Pointer,\n pixelDataLength: number,\n format: \"bgra8unorm\" | \"rgba8unorm\",\n alignedBytesPerRow: number,\n ): void {\n this.guard()\n this.lib.bufferDrawSuperSampleBuffer(\n this.bufferPtr,\n x,\n y,\n pixelDataPtr,\n pixelDataLength,\n format,\n alignedBytesPerRow,\n )\n }\n\n public drawPackedBuffer(\n dataPtr: Pointer,\n dataLen: number,\n posX: number,\n posY: number,\n terminalWidthCells: number,\n terminalHeightCells: number,\n ): void {\n this.guard()\n this.lib.bufferDrawPackedBuffer(\n this.bufferPtr,\n dataPtr,\n dataLen,\n posX,\n posY,\n terminalWidthCells,\n terminalHeightCells,\n )\n }\n\n public resize(width: number, height: number): void {\n this.guard()\n if (this._width === width && this._height === height) return\n\n this._width = width\n this._height = height\n this._rawBuffers = null\n\n this.lib.bufferResize(this.bufferPtr, width, height)\n }\n\n public drawBox(options: {\n x: number\n y: number\n width: number\n height: number\n borderStyle?: BorderStyle\n customBorderChars?: Uint32Array\n border: boolean | BorderSides[]\n borderColor: RGBA\n backgroundColor: RGBA\n shouldFill?: boolean\n title?: string\n titleAlignment?: \"left\" | \"center\" | \"right\"\n }): void {\n this.guard()\n const style = options.borderStyle || \"single\"\n const borderChars: Uint32Array = options.customBorderChars ?? BorderCharArrays[style]\n\n const packedOptions = packDrawOptions(options.border, options.shouldFill ?? false, options.titleAlignment || \"left\")\n\n this.lib.bufferDrawBox(\n this.bufferPtr,\n options.x,\n options.y,\n options.width,\n options.height,\n borderChars,\n packedOptions,\n options.borderColor,\n options.backgroundColor,\n options.title ?? null,\n )\n }\n\n public pushScissorRect(x: number, y: number, width: number, height: number): void {\n this.guard()\n this.lib.bufferPushScissorRect(this.bufferPtr, x, y, width, height)\n }\n\n public popScissorRect(): void {\n this.guard()\n this.lib.bufferPopScissorRect(this.bufferPtr)\n }\n\n public clearScissorRects(): void {\n this.guard()\n this.lib.bufferClearScissorRects(this.bufferPtr)\n }\n\n public encodeUnicode(text: string): { ptr: Pointer; data: Array<{ width: number; char: number }> } | null {\n this.guard()\n return this.lib.encodeUnicode(text, this._widthMethod)\n }\n\n public freeUnicode(encoded: { ptr: Pointer; data: Array<{ width: number; char: number }> }): void {\n this.guard()\n this.lib.freeUnicode(encoded)\n }\n\n public drawChar(char: number, x: number, y: number, fg: RGBA, bg: RGBA, attributes: number = 0): void {\n this.guard()\n this.lib.bufferDrawChar(this.bufferPtr, char, x, y, fg, bg, attributes)\n }\n}\n",
42
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",
43
44
  "import { defineStruct, defineEnum } from \"bun-ffi-structs\"\nimport { ptr, toArrayBuffer, type Pointer } from \"bun:ffi\"\nimport { RGBA } from \"./lib/RGBA\"\n\nconst rgbaPackTransform = (rgba?: RGBA) => (rgba ? ptr(rgba.buffer) : null)\nconst rgbaUnpackTransform = (ptr?: Pointer) => (ptr ? RGBA.fromArray(new Float32Array(toArrayBuffer(ptr))) : undefined)\n\nexport const StyledChunkStruct = defineStruct([\n [\"text\", \"char*\"],\n [\"text_len\", \"u64\", { lengthOf: \"text\" }],\n [\n \"fg\",\n \"pointer\",\n {\n optional: true,\n packTransform: rgbaPackTransform,\n unpackTransform: rgbaUnpackTransform,\n },\n ],\n [\n \"bg\",\n \"pointer\",\n {\n optional: true,\n packTransform: rgbaPackTransform,\n unpackTransform: rgbaUnpackTransform,\n },\n ],\n [\"attributes\", \"u8\", { optional: true }],\n])\n\nexport const HighlightStruct = defineStruct([\n [\"start\", \"u32\"],\n [\"end\", \"u32\"],\n [\"styleId\", \"u32\"],\n [\"priority\", \"u8\", { default: 0 }],\n [\"hlRef\", \"u16\", { default: 0 }],\n])\n\nexport const LogicalCursorStruct = defineStruct([\n [\"row\", \"u32\"],\n [\"col\", \"u32\"],\n [\"offset\", \"u32\"],\n])\n\nexport const VisualCursorStruct = defineStruct([\n [\"visualRow\", \"u32\"],\n [\"visualCol\", \"u32\"],\n [\"logicalRow\", \"u32\"],\n [\"logicalCol\", \"u32\"],\n [\"offset\", \"u32\"],\n])\n\nconst UnicodeMethodEnum = defineEnum({ wcwidth: 0, unicode: 1 }, \"u8\")\n\nexport const TerminalCapabilitiesStruct = defineStruct([\n [\"kitty_keyboard\", \"bool_u8\"],\n [\"kitty_graphics\", \"bool_u8\"],\n [\"rgb\", \"bool_u8\"],\n [\"unicode\", UnicodeMethodEnum],\n [\"sgr_pixels\", \"bool_u8\"],\n [\"color_scheme_updates\", \"bool_u8\"],\n [\"explicit_width\", \"bool_u8\"],\n [\"scaled_text\", \"bool_u8\"],\n [\"sixel\", \"bool_u8\"],\n [\"focus_tracking\", \"bool_u8\"],\n [\"sync\", \"bool_u8\"],\n [\"bracketed_paste\", \"bool_u8\"],\n [\"hyperlinks\", \"bool_u8\"],\n [\"term_name\", \"char*\"],\n [\"term_name_len\", \"u64\", { lengthOf: \"term_name\" }],\n [\"term_version\", \"char*\"],\n [\"term_version_len\", \"u64\", { lengthOf: \"term_version\" }],\n [\"term_from_xtversion\", \"bool_u8\"],\n])\n\nexport const EncodedCharStruct = defineStruct([\n [\"width\", \"u8\"],\n [\"char\", \"u32\"],\n])\n\nexport const LineInfoStruct = defineStruct([\n [\"starts\", [\"u32\"]],\n [\"startsLen\", \"u32\", { lengthOf: \"starts\" }],\n [\"widths\", [\"u32\"]],\n [\"widthsLen\", \"u32\", { lengthOf: \"widths\" }],\n [\"sources\", [\"u32\"]],\n [\"sourcesLen\", \"u32\", { lengthOf: \"sources\" }],\n [\"wraps\", [\"u32\"]],\n [\"wrapsLen\", \"u32\", { lengthOf: \"wraps\" }],\n [\"maxWidth\", \"u32\"],\n])\n\nexport const MeasureResultStruct = defineStruct([\n [\"lineCount\", \"u32\"],\n [\"maxWidth\", \"u32\"],\n])\n",
@@ -52,7 +53,7 @@
52
53
  "import type { ViewportBounds } from \"../types\"\n\ninterface ViewportObject {\n x: number\n y: number\n width: number\n height: number\n zIndex: number\n}\n\n/**\n * Returns objects that overlap with the viewport bounds.\n *\n * @param viewport - The viewport bounds to check against\n * @param objects - Array of objects MUST be sorted by position (y for column, x for row direction)\n * @param direction - Primary scroll direction: \"column\" (vertical) or \"row\" (horizontal)\n * @param padding - Extra padding around viewport to include nearby objects\n * @param minTriggerSize - Minimum array size to use binary search optimization\n * @returns Array of visible objects sorted by zIndex\n *\n * @remarks\n * Objects must be pre-sorted by their start position (y for column direction, x for row direction).\n * Unsorted input will produce incorrect results.\n */\nexport function getObjectsInViewport<T extends ViewportObject>(\n viewport: ViewportBounds,\n objects: T[],\n direction: \"row\" | \"column\" = \"column\",\n padding: number = 10,\n minTriggerSize: number = 16,\n): T[] {\n if (objects.length < minTriggerSize) return objects\n\n const viewportTop = viewport.y - padding\n const viewportBottom = viewport.y + viewport.height + padding\n const viewportLeft = viewport.x - padding\n const viewportRight = viewport.x + viewport.width + padding\n\n const isRow = direction === \"row\"\n\n const children = objects\n const totalChildren = children.length\n if (totalChildren === 0) return []\n\n const vpStart = isRow ? viewportLeft : viewportTop\n const vpEnd = isRow ? viewportRight : viewportBottom\n\n // Binary search to find any child that overlaps along the primary axis\n let lo = 0\n let hi = totalChildren - 1\n let candidate = -1\n while (lo <= hi) {\n const mid = (lo + hi) >> 1\n const c = children[mid]\n const start = isRow ? c.x : c.y\n const end = isRow ? c.x + c.width : c.y + c.height\n\n if (end < vpStart) {\n lo = mid + 1\n } else if (start > vpEnd) {\n hi = mid - 1\n } else {\n candidate = mid\n break\n }\n }\n\n const visibleChildren: T[] = []\n\n // If binary search found no candidate, the viewport might be in a gap between objects\n // Start from the position where the search ended\n if (candidate === -1) {\n // Binary search failed to find overlap - viewport is in a gap\n // We need to check objects before lo for any that extend into the viewport\n candidate = lo > 0 ? lo - 1 : 0\n }\n\n // Expand left to find all objects that overlap the viewport\n // To handle large objects that start early but extend far, we continue\n // checking even after finding objects that don't overlap, up to a limit\n // This handles cases where many small objects sit between a large object and the viewport\n // Real-world examples: background panels, large images, or spanning containers\n const maxLookBehind = 50\n let left = candidate\n let gapCount = 0\n\n while (left - 1 >= 0) {\n const prev = children[left - 1]\n const prevEnd = isRow ? prev.x + prev.width : prev.y + prev.height\n\n if (prevEnd <= vpStart) {\n gapCount++\n if (gapCount >= maxLookBehind) {\n break\n }\n } else {\n gapCount = 0\n }\n\n left--\n }\n\n // Expand right to find the rightmost overlapping object\n let right = candidate + 1\n while (right < totalChildren) {\n const next = children[right]\n if ((isRow ? next.x : next.y) >= vpEnd) break\n right++\n }\n\n // Collect candidates that also overlap on the cross axis\n for (let i = left; i < right; i++) {\n const child = children[i]\n const start = isRow ? child.x : child.y\n const end = isRow ? child.x + child.width : child.y + child.height\n\n // Check primary axis overlap (optimization: skip objects that don't overlap)\n if (end <= vpStart) continue\n if (start >= vpEnd) break\n\n // Check cross-axis overlap\n if (isRow) {\n const childBottom = child.y + child.height\n if (childBottom < viewportTop) continue\n const childTop = child.y\n if (childTop > viewportBottom) continue\n } else {\n const childRight = child.x + child.width\n if (childRight < viewportLeft) continue\n const childLeft = child.x\n if (childLeft > viewportRight) continue\n }\n\n visibleChildren.push(child)\n }\n\n // Sort by zIndex\n if (visibleChildren.length > 1) {\n visibleChildren.sort((a, b) => (a.zIndex > b.zIndex ? 1 : a.zIndex < b.zIndex ? -1 : 0))\n }\n\n return visibleChildren\n}\n",
53
54
  "/**\n * Terminal capability response detection utilities.\n *\n * Detects various terminal capability response sequences:\n * - DECRPM (DEC Request Mode): ESC[?...;N$y where N is 0,1,2,3,4\n * - CPR (Cursor Position Report): ESC[row;colR (used for width detection)\n * - XTVersion: ESC P >| ... ESC \\\n * - Kitty Graphics: ESC _ G ... ESC \\\n * - Kitty Keyboard Query: ESC[?Nu where N is 0,1,2,etc\n * - DA1 (Device Attributes): ESC[?...c\n * - Pixel Resolution: ESC[4;height;widtht\n */\n\n/**\n * Check if a sequence is a terminal capability response.\n * Returns true if the sequence matches any known capability response pattern.\n */\nexport function isCapabilityResponse(sequence: string): boolean {\n // DECRPM: ESC[?digits;digits$y\n if (/\\x1b\\[\\?\\d+(?:;\\d+)*\\$y/.test(sequence)) {\n return true\n }\n\n // CPR for explicit width/scaled text detection: ESC[1;NR where N >= 2\n // The column number tells us how many characters were rendered with width annotations\n // ESC[1;1R means no width support (cursor didn't move)\n // ESC[1;2R or higher means width support (cursor moved after rendering)\n // We accept any column >= 2 to handle cases where cursor wasn't at exact home position\n if (/\\x1b\\[1;(?!1R)\\d+R/.test(sequence)) {\n return true\n }\n\n // XTVersion: ESC P >| ... ESC \\\n if (/\\x1bP>\\|[\\s\\S]*?\\x1b\\\\/.test(sequence)) {\n return true\n }\n\n // Kitty graphics response: ESC _ G ... ESC \\\n // Matches any graphics response including OK, errors, etc.\n // This is for filtering capability responses from user input\n if (/\\x1b_G[\\s\\S]*?\\x1b\\\\/.test(sequence)) {\n return true\n }\n\n // Kitty keyboard query response: ESC[?Nu or ESC[?N;Mu (progressive enhancement)\n if (/\\x1b\\[\\?\\d+(?:;\\d+)?u/.test(sequence)) {\n return true\n }\n\n // DA1 (Device Attributes): ESC[?...c\n if (/\\x1b\\[\\?[0-9;]*c/.test(sequence)) {\n return true\n }\n\n return false\n}\n\n/**\n * Check if a sequence is a pixel resolution response.\n * Format: ESC[4;height;widtht\n */\nexport function isPixelResolutionResponse(sequence: string): boolean {\n return /\\x1b\\[4;\\d+;\\d+t/.test(sequence)\n}\n\n/**\n * Parse pixel resolution from response sequence.\n * Returns { width, height } or null if not a valid resolution response.\n */\nexport function parsePixelResolution(sequence: string): { width: number; height: number } | null {\n const match = sequence.match(/\\x1b\\[4;(\\d+);(\\d+)t/)\n if (match) {\n return {\n width: parseInt(match[2]),\n height: parseInt(match[1]),\n }\n }\n return null\n}\n"
54
55
  ],
55
- "mappings": "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AO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EAGP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EAGP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EAGP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EAGP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EAGP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OA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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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",
56
- "debugId": "E61ED12D8C1C497964756E2164756E21",
56
+ "mappings": "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AO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EAGP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EAGP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EAGP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EAGP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EAGP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OA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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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",
57
+ "debugId": "01E9CC866B57E71564756E2164756E21",
57
58
  "names": []
58
59
  }